[prev in list] [next in list] [prev in thread] [next in thread]
List: slide-dev
Subject: cvs commit: jakarta-slide/src/share/org/apache/slide/extractor OfficeExtractor.java
From: dflorey () apache ! org
Date: 2004-04-28 13:08:20
Message-ID: 20040428130820.42391.qmail () minotaur ! apache ! org
[Download RAW message or body]
dflorey 2004/04/28 06:08:20
Added: src/share/org/apache/slide/extractor OfficeExtractor.java
Log:
Added MS Office metainfo extractor
Revision Changes Path
1.1 \
jakarta-slide/src/share/org/apache/slide/extractor/OfficeExtractor.java
Index: OfficeExtractor.java
===================================================================
package org.apache.slide.extractor;
import java.io.InputStream;
import java.util.*;
import org.apache.poi.hpsf.*;
import org.apache.poi.poifs.eventfilesystem.*;
import org.apache.slide.util.conf.Configurable;
import org.apache.slide.util.conf.Configuration;
import org.apache.slide.util.conf.ConfigurationException;
/**
* The OfficeExtractor class
*
* @author <a href="mailto:dflorey@c1-fse.de">Daniel Florey</a>
*/
public class OfficeExtractor extends AbstractPropertyExtractor implements \
Configurable { protected List instructions = new ArrayList();
protected Map propertyMap = new HashMap();
public OfficeExtractor(String uri, String contentType) {
super(uri, contentType);
}
public Map extract(InputStream content) throws ExtractorException {
OfficePropertiesListener listener = new OfficePropertiesListener();
try {
POIFSReader r = new POIFSReader();
r.registerListener(listener);
r.read(content);
} catch (Exception e) {
throw new ExtractorException("Exception while extracting properties in \
OfficeExtractor"); }
return listener.getProperties();
}
class OfficePropertiesListener implements POIFSReaderListener {
private HashMap properties = new HashMap();
public Map getProperties() {
return properties;
}
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); }
String eventName = event.getName().trim();
final long sectionCount = ps.getSectionCount();
List sections = ps.getSections();
int nr = 0;
for (Iterator i = sections.iterator(); i.hasNext();) {
Section sec = (Section) i.next();
int propertyCount = sec.getPropertyCount();
Property[] props = sec.getProperties();
for (int i2 = 0; i2 < props.length; i2++) {
Property p = props[i2];
int id = p.getID();
long type = p.getType();
Object value = p.getValue();
String key = eventName + "-" + nr + "-" + id;
if ( propertyMap.containsKey(key) ) {
properties.put(propertyMap.get(key), value);
}
}
}
}
}
public void configure(Configuration configuration) throws ConfigurationException {
Enumeration instructions = configuration.getConfigurations("instruction");
while (instructions.hasMoreElements()) {
Configuration extract = (Configuration)instructions.nextElement();
String property = extract.getAttribute("property");
String id = extract.getAttribute("id");
propertyMap.put(id, property);
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic