diff --git a/src/ooxml/java/org/apache/poi/POIXMLDocument.java b/src/ooxml/java/org/apache/poi/POIXMLDocument.java index 4e190d7e7..606c0c3b8 100644 --- a/src/ooxml/java/org/apache/poi/POIXMLDocument.java +++ b/src/ooxml/java/org/apache/poi/POIXMLDocument.java @@ -123,6 +123,25 @@ public abstract class POIXMLDocument { PackageRelationship rel = rels.getRelationship(0); return getTargetPart(rel); } + + /** + * Retrieves all the PackageParts which are defined as + * relationships of the base document with the + * specified content type. + */ + protected PackagePart[] getRelatedByType(String contentType) throws InvalidFormatException { + PackageRelationshipCollection partsC = + getCorePart().getRelationshipsByType(contentType); + + PackagePart[] parts = new PackagePart[partsC.size()]; + int count = 0; + for (PackageRelationship rel : partsC) { + parts[count] = getTargetPart(rel); + count++; + } + return parts; + } + /** diff --git a/src/ooxml/java/org/apache/poi/xwpf/HWPFXML.java b/src/ooxml/java/org/apache/poi/xwpf/XWPFDocument.java similarity index 91% rename from src/ooxml/java/org/apache/poi/xwpf/HWPFXML.java rename to src/ooxml/java/org/apache/poi/xwpf/XWPFDocument.java index 66bba7ee1..4b54ed863 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/HWPFXML.java +++ b/src/ooxml/java/org/apache/poi/xwpf/XWPFDocument.java @@ -14,11 +14,11 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ -package org.apache.poi.hwpf; +package org.apache.poi.xwpf; import java.io.IOException; -import org.apache.poi.hxf.HXFDocument; +import org.apache.poi.POIXMLDocument; import org.apache.xmlbeans.XmlException; import org.openxml4j.exceptions.InvalidFormatException; import org.openxml4j.exceptions.OpenXML4JException; @@ -41,7 +41,7 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.StylesDocument; * * WARNING - APIs expected to change rapidly */ -public class HWPFXML extends HXFDocument { +public class XWPFDocument extends POIXMLDocument { public static final String MAIN_CONTENT_TYPE = "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"; public static final String FOOTER_CONTENT_TYPE = "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml"; public static final String HEADER_CONTENT_TYPE = "application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml"; @@ -50,11 +50,11 @@ public class HWPFXML extends HXFDocument { private DocumentDocument wordDoc; - public HWPFXML(Package container) throws OpenXML4JException, IOException, XmlException { - super(container, MAIN_CONTENT_TYPE); + public XWPFDocument(Package container) throws OpenXML4JException, IOException, XmlException { + super(container); wordDoc = - DocumentDocument.Factory.parse(basePart.getInputStream()); + DocumentDocument.Factory.parse(getCorePart().getInputStream()); } /** diff --git a/src/ooxml/java/org/apache/poi/xwpf/extractor/HXFWordExtractor.java b/src/ooxml/java/org/apache/poi/xwpf/extractor/XWPFWordExtractor.java similarity index 79% rename from src/ooxml/java/org/apache/poi/xwpf/extractor/HXFWordExtractor.java rename to src/ooxml/java/org/apache/poi/xwpf/extractor/XWPFWordExtractor.java index a4427e49e..58fa4839c 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/extractor/HXFWordExtractor.java +++ b/src/ooxml/java/org/apache/poi/xwpf/extractor/XWPFWordExtractor.java @@ -14,15 +14,14 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ -package org.apache.poi.hwpf.extractor; +package org.apache.poi.xwpf.extractor; import java.io.File; import java.io.IOException; +import org.apache.poi.POIXMLDocument; import org.apache.poi.POIXMLTextExtractor; -import org.apache.poi.hwpf.HWPFXML; -import org.apache.poi.hwpf.usermodel.HWPFXMLDocument; -import org.apache.poi.hxf.HXFDocument; +import org.apache.poi.xwpf.XWPFDocument; import org.apache.xmlbeans.XmlException; import org.openxml4j.exceptions.OpenXML4JException; import org.openxml4j.opc.Package; @@ -34,15 +33,13 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTText; /** * Helper class to extract text from an OOXML Word file */ -public class HXFWordExtractor extends POIXMLTextExtractor { - private HWPFXMLDocument document; +public class XWPFWordExtractor extends POIXMLTextExtractor { + private XWPFDocument document; - public HXFWordExtractor(Package container) throws XmlException, OpenXML4JException, IOException { - this(new HWPFXMLDocument( - new HWPFXML(container) - )); + public XWPFWordExtractor(Package container) throws XmlException, OpenXML4JException, IOException { + this(new XWPFDocument(container)); } - public HXFWordExtractor(HWPFXMLDocument document) { + public XWPFWordExtractor(XWPFDocument document) { super(document); this.document = document; } @@ -54,14 +51,14 @@ public class HXFWordExtractor extends POIXMLTextExtractor { System.exit(1); } POIXMLTextExtractor extractor = - new HXFWordExtractor(HXFDocument.openPackage( - new File(args[0]) + new XWPFWordExtractor(POIXMLDocument.openPackage( + args[0] )); System.out.println(extractor.getText()); } public String getText() { - CTBody body = document._getHWPFXML().getDocumentBody(); + CTBody body = document.getDocumentBody(); StringBuffer text = new StringBuffer(); // Loop over paragraphs diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/HWPFXMLDocument.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XMLWordDocument.java similarity index 76% rename from src/ooxml/java/org/apache/poi/xwpf/usermodel/HWPFXMLDocument.java rename to src/ooxml/java/org/apache/poi/xwpf/usermodel/XMLWordDocument.java index 64597e83d..27c988c6d 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/HWPFXMLDocument.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XMLWordDocument.java @@ -14,23 +14,21 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ -package org.apache.poi.hwpf.usermodel; +package org.apache.poi.xwpf.usermodel; -import org.apache.poi.POIXMLDocument; -import org.apache.poi.hwpf.HWPFXML; +import org.apache.poi.xwpf.XWPFDocument; /** * High level representation of a ooxml text document. */ -public class HWPFXMLDocument extends POIXMLDocument { - private HWPFXML hwpfXML; +public class XMLWordDocument { + private XWPFDocument xwpfXML; - public HWPFXMLDocument(HWPFXML xml) { - super(xml); - this.hwpfXML = xml; + public XMLWordDocument(XWPFDocument xml) { + this.xwpfXML = xml; } - public HWPFXML _getHWPFXML() { - return hwpfXML; + public XWPFDocument _getXWPFXML() { + return xwpfXML; } } diff --git a/src/ooxml/testcases/org/apache/poi/xslf/extractor/TestHXFPowerPointExtractor.java b/src/ooxml/testcases/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java similarity index 82% rename from src/ooxml/testcases/org/apache/poi/xslf/extractor/TestHXFPowerPointExtractor.java rename to src/ooxml/testcases/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java index 3b2ba0746..fb10a2421 100644 --- a/src/ooxml/testcases/org/apache/poi/xslf/extractor/TestHXFPowerPointExtractor.java +++ b/src/ooxml/testcases/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java @@ -14,45 +14,47 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ -package org.apache.poi.hslf.extractor; +package org.apache.poi.xslf.extractor; import java.io.File; -import org.apache.poi.hslf.HSLFXML; -import org.apache.poi.hslf.usermodel.HSLFXMLSlideShow; -import org.apache.poi.hxf.HXFDocument; +import org.apache.poi.POIXMLDocument; +import org.apache.poi.xslf.XSLFSlideShow; import junit.framework.TestCase; /** * Tests for HXFPowerPointExtractor */ -public class TestHXFPowerPointExtractor extends TestCase { +public class TestXSLFPowerPointExtractor extends TestCase { /** * A simple file */ - private HSLFXML xmlA; + private XSLFSlideShow xmlA; + private File fileA; protected void setUp() throws Exception { super.setUp(); - File fileA = new File( + fileA = new File( System.getProperty("HSLF.testdata.path") + File.separator + "sample.pptx" ); + assertTrue(fileA.exists()); - xmlA = new HSLFXML(HXFDocument.openPackage(fileA)); + xmlA = new XSLFSlideShow(fileA.toString()); } /** * Get text out of the simple file */ public void testGetSimpleText() throws Exception { - new HXFPowerPointExtractor(xmlA.getPackage()); - new HXFPowerPointExtractor(new XMLSlideShow(xmlA)); + new XSLFPowerPointExtractor(xmlA); + new XSLFPowerPointExtractor( + POIXMLDocument.openPackage(fileA.toString())); - HXFPowerPointExtractor extractor = - new HXFPowerPointExtractor(xmlA.getPackage()); + XSLFPowerPointExtractor extractor = + new XSLFPowerPointExtractor(xmlA); extractor.getText(); String text = extractor.getText(); diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/TestHWPFXML.java b/src/ooxml/testcases/org/apache/poi/xwpf/TestXWPFDocument.java similarity index 75% rename from src/ooxml/testcases/org/apache/poi/xwpf/TestHWPFXML.java rename to src/ooxml/testcases/org/apache/poi/xwpf/TestXWPFDocument.java index 0d8e196f4..94127193f 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/TestHWPFXML.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/TestXWPFDocument.java @@ -14,17 +14,17 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ -package org.apache.poi.hwpf; +package org.apache.poi.xwpf; import java.io.File; -import org.apache.poi.hxf.HXFDocument; +import org.apache.poi.POIXMLDocument; import org.openxml4j.opc.Package; import org.openxml4j.opc.PackagePart; import junit.framework.TestCase; -public class TestHWPFXML extends TestCase { +public class TestXWPFDocument extends TestCase { private File sampleFile; private File complexFile; @@ -39,14 +39,17 @@ public class TestHWPFXML extends TestCase { System.getProperty("HWPF.testdata.path") + File.separator + "IllustrativeCases.docx" ); + + assertTrue(sampleFile.exists()); + assertTrue(complexFile.exists()); } public void testContainsMainContentType() throws Exception { - Package pack = HXFDocument.openPackage(sampleFile); + Package pack = POIXMLDocument.openPackage(sampleFile.toString()); boolean found = false; for(PackagePart part : pack.getParts()) { - if(part.getContentType().equals(HWPFXML.MAIN_CONTENT_TYPE)) { + if(part.getContentType().equals(XWPFDocument.MAIN_CONTENT_TYPE)) { found = true; } System.out.println(part); @@ -55,14 +58,21 @@ public class TestHWPFXML extends TestCase { } public void testOpen() throws Exception { - HXFDocument.openPackage(sampleFile); - HXFDocument.openPackage(complexFile); + POIXMLDocument.openPackage(sampleFile.toString()); + POIXMLDocument.openPackage(complexFile.toString()); - HWPFXML xml; + new XWPFDocument( + POIXMLDocument.openPackage(sampleFile.toString()) + ); + new XWPFDocument( + POIXMLDocument.openPackage(complexFile.toString()) + ); + + XWPFDocument xml; // Simple file - xml = new HWPFXML( - HXFDocument.openPackage(sampleFile) + xml = new XWPFDocument( + POIXMLDocument.openPackage(sampleFile.toString()) ); // Check it has key parts assertNotNull(xml.getDocument()); @@ -70,8 +80,8 @@ public class TestHWPFXML extends TestCase { assertNotNull(xml.getStyle()); // Complex file - xml = new HWPFXML( - HXFDocument.openPackage(complexFile) + xml = new XWPFDocument( + POIXMLDocument.openPackage(complexFile.toString()) ); assertNotNull(xml.getDocument()); assertNotNull(xml.getDocumentBody()); @@ -79,8 +89,8 @@ public class TestHWPFXML extends TestCase { } public void testMetadataBasics() throws Exception { - HWPFXML xml = new HWPFXML( - HXFDocument.openPackage(sampleFile) + XWPFDocument xml = new XWPFDocument( + POIXMLDocument.openPackage(sampleFile.toString()) ); assertNotNull(xml.getCoreProperties()); assertNotNull(xml.getExtendedProperties()); @@ -94,8 +104,8 @@ public class TestHWPFXML extends TestCase { } public void testMetadataComplex() throws Exception { - HWPFXML xml = new HWPFXML( - HXFDocument.openPackage(complexFile) + XWPFDocument xml = new XWPFDocument( + POIXMLDocument.openPackage(complexFile.toString()) ); assertNotNull(xml.getCoreProperties()); assertNotNull(xml.getExtendedProperties()); diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/extractor/TestHXFWordExtractor.java b/src/ooxml/testcases/org/apache/poi/xwpf/extractor/TestXWPFWordExtractor.java similarity index 79% rename from src/ooxml/testcases/org/apache/poi/xwpf/extractor/TestHXFWordExtractor.java rename to src/ooxml/testcases/org/apache/poi/xwpf/extractor/TestXWPFWordExtractor.java index 62695b3a8..9a1f239bc 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/extractor/TestHXFWordExtractor.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/extractor/TestXWPFWordExtractor.java @@ -14,54 +14,57 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ -package org.apache.poi.hwpf.extractor; +package org.apache.poi.xwpf.extractor; import java.io.File; -import org.apache.poi.hwpf.HWPFXML; -import org.apache.poi.hwpf.usermodel.HWPFXMLDocument; -import org.apache.poi.hxf.HXFDocument; +import org.apache.poi.POIXMLDocument; +import org.apache.poi.xwpf.XWPFDocument; import junit.framework.TestCase; /** * Tests for HXFWordExtractor */ -public class TestHXFWordExtractor extends TestCase { +public class TestXWPFWordExtractor extends TestCase { /** * A very simple file */ - private HWPFXML xmlA; + private XWPFDocument xmlA; + private File fileA; /** * A fairly complex file */ - private HWPFXML xmlB; + private XWPFDocument xmlB; + private File fileB; protected void setUp() throws Exception { super.setUp(); - File fileA = new File( + fileA = new File( System.getProperty("HWPF.testdata.path") + File.separator + "sample.docx" ); - File fileB = new File( + fileB = new File( System.getProperty("HWPF.testdata.path") + File.separator + "IllustrativeCases.docx" ); + assertTrue(fileA.exists()); + assertTrue(fileB.exists()); - xmlA = new HWPFXML(HXFDocument.openPackage(fileA)); - xmlB = new HWPFXML(HXFDocument.openPackage(fileB)); + xmlA = new XWPFDocument(POIXMLDocument.openPackage(fileA.toString())); + xmlB = new XWPFDocument(POIXMLDocument.openPackage(fileB.toString())); } /** * Get text out of the simple file */ public void testGetSimpleText() throws Exception { - new HXFWordExtractor(xmlA.getPackage()); - new HXFWordExtractor(new HWPFXMLDocument(xmlA)); + new XWPFWordExtractor(xmlA); + new XWPFWordExtractor(POIXMLDocument.openPackage(fileA.toString())); - HXFWordExtractor extractor = - new HXFWordExtractor(xmlA.getPackage()); + XWPFWordExtractor extractor = + new XWPFWordExtractor(xmlA); extractor.getText(); String text = extractor.getText(); @@ -88,8 +91,8 @@ public class TestHXFWordExtractor extends TestCase { * Tests getting the text out of a complex file */ public void testGetComplexText() throws Exception { - HXFWordExtractor extractor = - new HXFWordExtractor(xmlB.getPackage()); + XWPFWordExtractor extractor = + new XWPFWordExtractor(xmlB); extractor.getText(); String text = extractor.getText();