poi-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Carmen Pancerella <car...@ca.sandia.gov>
Subject ArrayIndexOutOfBoundsException when reading custom properties ...
Date Thu, 30 Mar 2006 18:33:00 GMT

Hello.
 
I'm trying to write code that reads an Excel spreadsheet and reads
a custom property called "Mime type".  I'm using a jar file from
the February 7 nightly build.
 
I'm getting a Java ArrayIndexOutOfBounds exception from the POI
library, and I don't know why.  This code sometimes works fine
but other times I get the exception.  The code is straightforward,
taken from the examples given on Jakarta POI site.

Can anybody help?

Thanks.
Carmen


package apps.mimetypedetermination.excel;

import java.io.InputStream;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.Map;

import org.apache.poi.hpsf.*;
import org.apache.poi.poifs.eventfilesystem.*;

/**
 * Determines the Mime type of an Excel spreadsheet 
 */
public class ExcelMimeType
{

   /**
    * Determine Mime type of an Excel spreadsheet to XML using POI 
    * @param data the input data file 
    * @param options 
    */
    public static final String DEFAULT_EXCEL_MIME_TYPE =
        "application/vnd.ms-excel";
    
    private static String mime = "";

    public InputStream GetMimeType(InputStream inputStream, String options) {
     
      mime = "";
      POIFSReader POIFr = new POIFSReader();
      
      try {
         POIFr.registerListener(new MyPOIFSReaderListener());
         POIFr.read(inputStream);
      } catch (IOException ex)
      {
          return null;     
      }
     
      String mimetypeString;
      if (mime == "") 
	 mimetypeString = DEFAULT_EXCEL_MIME_TYPE;
      else 
	 mimetypeString = mime;  
      
      return new ByteArrayInputStream(mimetypeString.getBytes());
   }
   
   static class MyPOIFSReaderListener implements POIFSReaderListener
    {
        public void processPOIFSReaderEvent(POIFSReaderEvent event)
        {
            PropertySet ps = null;
            try
            {
                ps = PropertySetFactory.create(event.getStream());
            }
            catch (NoPropertySetStreamException ex)
            {
               return;
            }
            catch (Exception ex)
            {
                throw new RuntimeException
                    ("Property set stream \"" +
                     event.getPath() + event.getName() + "\": " + ex);
            }

            if (ps.isDocumentSummaryInformation()) 
            {
	       try
	       {
                  DocumentSummaryInformation docsi = new
DocumentSummaryInformation(ps);
	          Map propmap = docsi.getCustomProperties();
	          if (propmap != null)
	          { 
		    String mimeString = (String) propmap.get("Mime type");
		    if (mimeString != null) mime = mimeString;
                  }
               }
	       catch (UnexpectedPropertySetTypeException ex)
	       {
		  throw new RuntimeException
		  ("Unexpected property set type \"" +
                     event.getPath() + event.getName() + "\": " + ex);
	       }
            }
	}
    }
    

}


---------------------------------------------------------------------
To unsubscribe, e-mail: poi-user-unsubscribe@jakarta.apache.org
Mailing List:     http://jakarta.apache.org/site/mail2.html#poi
The Apache Jakarta Poi Project:  http://jakarta.apache.org/poi/


Mime
View raw message