You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ni...@apache.org on 2008/01/03 15:28:47 UTC
svn commit: r608500 - in /poi/trunk/src/scratchpad:
ooxml-src/org/apache/poi/ ooxml-src/org/apache/poi/hxf/
ooxml-testcases/org/apache/poi/hslf/ ooxml-testcases/org/apache/poi/hssf/
ooxml-testcases/org/apache/poi/hwpf/
Author: nick
Date: Thu Jan 3 06:28:46 2008
New Revision: 608500
URL: http://svn.apache.org/viewvc?rev=608500&view=rev
Log:
For ooxml properties, get the core ones as well as the extended ones, and add tests for this
Modified:
poi/trunk/src/scratchpad/ooxml-src/org/apache/poi/POIXMLDocument.java
poi/trunk/src/scratchpad/ooxml-src/org/apache/poi/hxf/HXFDocument.java
poi/trunk/src/scratchpad/ooxml-testcases/org/apache/poi/hslf/TestHSLFXML.java
poi/trunk/src/scratchpad/ooxml-testcases/org/apache/poi/hssf/TestHSSFXML.java
poi/trunk/src/scratchpad/ooxml-testcases/org/apache/poi/hwpf/TestHWPFXML.java
Modified: poi/trunk/src/scratchpad/ooxml-src/org/apache/poi/POIXMLDocument.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/ooxml-src/org/apache/poi/POIXMLDocument.java?rev=608500&r1=608499&r2=608500&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/ooxml-src/org/apache/poi/POIXMLDocument.java (original)
+++ poi/trunk/src/scratchpad/ooxml-src/org/apache/poi/POIXMLDocument.java Thu Jan 3 06:28:46 2008
@@ -27,7 +27,19 @@
public abstract class POIXMLDocument {
private HXFDocument document;
+ /**
+ * Creates a new POI XML Document, wrapping up
+ * the underlying raw HXFDocument
+ */
protected POIXMLDocument(HXFDocument document) {
this.document = document;
+ }
+
+ /**
+ * Returns the underlying HXFDocument, typically
+ * used for unit testing
+ */
+ public HXFDocument _getHXFDocument() {
+ return document;
}
}
Modified: poi/trunk/src/scratchpad/ooxml-src/org/apache/poi/hxf/HXFDocument.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/ooxml-src/org/apache/poi/hxf/HXFDocument.java?rev=608500&r1=608499&r2=608500&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/ooxml-src/org/apache/poi/hxf/HXFDocument.java (original)
+++ poi/trunk/src/scratchpad/ooxml-src/org/apache/poi/hxf/HXFDocument.java Thu Jan 3 06:28:46 2008
@@ -34,6 +34,7 @@
import org.openxml4j.opc.PackageRelationship;
import org.openxml4j.opc.PackageRelationshipCollection;
import org.openxml4j.opc.PackagingURIHelper;
+import org.openxml4j.opc.internal.PackagePropertiesPart;
import org.openxmlformats.schemas.officeDocument.x2006.extendedProperties.CTProperties;
import org.openxmlformats.schemas.officeDocument.x2006.extendedProperties.PropertiesDocument;
@@ -52,6 +53,9 @@
* WARNING - APIs expected to change rapidly
*/
public abstract class HXFDocument {
+ public static final String CORE_PROPERTIES_REL_TYPE = "http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties";
+ public static final String EXTENDED_PROPERTIES_REL_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties";
+
/**
* File package/container.
*/
@@ -70,12 +74,7 @@
this.container = container;
// Find the base document
- ArrayList<PackagePart> baseParts =
- container.getPartsByContentType(baseContentType);
- if(baseParts.size() != 1) {
- throw new OpenXML4JException("Expecting one entry with content type of " + baseContentType + ", but found " + baseParts.size());
- }
- basePart = baseParts.get(0);
+ basePart = getSinglePartByType(baseContentType);
// And load it up
try {
@@ -89,6 +88,41 @@
}
/**
+ * Fetches the (single) PackagePart with the supplied
+ * content type.
+ * @param contentType The content type to search for
+ * @throws IllegalArgumentException If we don't find a single part of that type
+ */
+ private PackagePart getSinglePartByType(String contentType) throws IllegalArgumentException {
+ ArrayList<PackagePart> parts =
+ container.getPartsByContentType(contentType);
+ if(parts.size() != 1) {
+ throw new IllegalArgumentException("Expecting one entry with content type of " + contentType + ", but found " + parts.size());
+ }
+ return parts.get(0);
+ }
+
+ /**
+ * Fetches the (single) PackagePart which is defined as
+ * the supplied relation content type of the base
+ * container, or null if none found.
+ * @param relationType The relation content type to search for
+ * @throws IllegalArgumentException If we find more than one part of that type
+ */
+ private PackagePart getSinglePartByRelationType(String relationType) throws IllegalArgumentException, OpenXML4JException {
+ PackageRelationshipCollection rels =
+ container.getRelationshipsByType(relationType);
+ if(rels.size() == 0) {
+ return null;
+ }
+ if(rels.size() > 1) {
+ throw new IllegalArgumentException("Found " + rels.size() + " relations for the type " + relationType + ", should only ever be one!");
+ }
+ PackageRelationship rel = rels.getRelationship(0);
+ return getPackagePart(rel);
+ }
+
+ /**
* Retrieves the PackagePart for the given relation
* id. This will normally come from a r:id attribute
* on part of the base document.
@@ -147,19 +181,21 @@
}
/**
- * Get the document properties (extended ooxml properties)
+ * Get the core document properties (core ooxml properties).
*/
- public CTProperties getDocumentProperties() throws OpenXML4JException, XmlException, IOException {
- PackageRelationshipCollection docProps =
- container.getRelationshipsByType("http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties");
- if(docProps.size() == 0) {
+ public PackagePropertiesPart getCoreProperties() throws OpenXML4JException, XmlException, IOException {
+ PackagePart propsPart = getSinglePartByRelationType(CORE_PROPERTIES_REL_TYPE);
+ if(propsPart == null) {
return null;
}
- if(docProps.size() > 1) {
- throw new IllegalStateException("Found " + docProps.size() + " relations for the extended properties, should only ever be one!");
- }
- PackageRelationship rel = docProps.getRelationship(0);
- PackagePart propsPart = getPackagePart(rel);
+ return (PackagePropertiesPart)propsPart;
+ }
+
+ /**
+ * Get the extended document properties (extended ooxml properties)
+ */
+ public CTProperties getExtendedProperties() throws OpenXML4JException, XmlException, IOException {
+ PackagePart propsPart = getSinglePartByRelationType(EXTENDED_PROPERTIES_REL_TYPE);
PropertiesDocument props = PropertiesDocument.Factory.parse(
propsPart.getInputStream());
Modified: poi/trunk/src/scratchpad/ooxml-testcases/org/apache/poi/hslf/TestHSLFXML.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/ooxml-testcases/org/apache/poi/hslf/TestHSLFXML.java?rev=608500&r1=608499&r2=608500&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/ooxml-testcases/org/apache/poi/hslf/TestHSLFXML.java (original)
+++ poi/trunk/src/scratchpad/ooxml-testcases/org/apache/poi/hslf/TestHSLFXML.java Thu Jan 3 06:28:46 2008
@@ -113,10 +113,15 @@
HSLFXML xml = new HSLFXML(
HXFDocument.openPackage(sampleFile)
);
- assertNotNull(xml.getDocumentProperties());
- assertEquals("Microsoft Office PowerPoint", xml.getDocumentProperties().getApplication());
- assertEquals(0, xml.getDocumentProperties().getCharacters());
- assertEquals(0, xml.getDocumentProperties().getLines());
+ assertNotNull(xml.getCoreProperties());
+ assertNotNull(xml.getExtendedProperties());
+
+ assertEquals("Microsoft Office PowerPoint", xml.getExtendedProperties().getApplication());
+ assertEquals(0, xml.getExtendedProperties().getCharacters());
+ assertEquals(0, xml.getExtendedProperties().getLines());
+
+ assertEquals(null, xml.getCoreProperties().getTitleProperty().getValue());
+ assertEquals(null, xml.getCoreProperties().getSubjectProperty().getValue());
}
}
Modified: poi/trunk/src/scratchpad/ooxml-testcases/org/apache/poi/hssf/TestHSSFXML.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/ooxml-testcases/org/apache/poi/hssf/TestHSSFXML.java?rev=608500&r1=608499&r2=608500&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/ooxml-testcases/org/apache/poi/hssf/TestHSSFXML.java (original)
+++ poi/trunk/src/scratchpad/ooxml-testcases/org/apache/poi/hssf/TestHSSFXML.java Thu Jan 3 06:28:46 2008
@@ -114,10 +114,14 @@
HSSFXML xml = new HSSFXML(
HXFDocument.openPackage(sampleFile)
);
- assertNotNull(xml.getDocumentProperties());
+ assertNotNull(xml.getCoreProperties());
+ assertNotNull(xml.getExtendedProperties());
- assertEquals("Microsoft Excel", xml.getDocumentProperties().getApplication());
- assertEquals(0, xml.getDocumentProperties().getCharacters());
- assertEquals(0, xml.getDocumentProperties().getLines());
+ assertEquals("Microsoft Excel", xml.getExtendedProperties().getApplication());
+ assertEquals(0, xml.getExtendedProperties().getCharacters());
+ assertEquals(0, xml.getExtendedProperties().getLines());
+
+ assertEquals(null, xml.getCoreProperties().getTitleProperty().getValue());
+ assertEquals(null, xml.getCoreProperties().getSubjectProperty().getValue());
}
}
Modified: poi/trunk/src/scratchpad/ooxml-testcases/org/apache/poi/hwpf/TestHWPFXML.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/ooxml-testcases/org/apache/poi/hwpf/TestHWPFXML.java?rev=608500&r1=608499&r2=608500&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/ooxml-testcases/org/apache/poi/hwpf/TestHWPFXML.java (original)
+++ poi/trunk/src/scratchpad/ooxml-testcases/org/apache/poi/hwpf/TestHWPFXML.java Thu Jan 3 06:28:46 2008
@@ -82,10 +82,29 @@
HWPFXML xml = new HWPFXML(
HXFDocument.openPackage(sampleFile)
);
- assertNotNull(xml.getDocumentProperties());
+ assertNotNull(xml.getCoreProperties());
+ assertNotNull(xml.getExtendedProperties());
- assertEquals("Microsoft Office Word", xml.getDocumentProperties().getApplication());
- assertEquals(1315, xml.getDocumentProperties().getCharacters());
- assertEquals(10, xml.getDocumentProperties().getLines());
+ assertEquals("Microsoft Office Word", xml.getExtendedProperties().getApplication());
+ assertEquals(1315, xml.getExtendedProperties().getCharacters());
+ assertEquals(10, xml.getExtendedProperties().getLines());
+
+ assertEquals(null, xml.getCoreProperties().getTitleProperty().getValue());
+ assertEquals(null, xml.getCoreProperties().getSubjectProperty().getValue());
+ }
+
+ public void testMetadataComplex() throws Exception {
+ HWPFXML xml = new HWPFXML(
+ HXFDocument.openPackage(complexFile)
+ );
+ assertNotNull(xml.getCoreProperties());
+ assertNotNull(xml.getExtendedProperties());
+
+ assertEquals("Microsoft Office Outlook", xml.getExtendedProperties().getApplication());
+ assertEquals(5184, xml.getExtendedProperties().getCharacters());
+ assertEquals(0, xml.getExtendedProperties().getLines());
+
+ assertEquals(" ", xml.getCoreProperties().getTitleProperty().getValue());
+ assertEquals(" ", xml.getCoreProperties().getSubjectProperty().getValue());
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org