From 04ae3247eb9cbf426bb550d89f129dc71958725d Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sat, 21 Feb 2015 11:58:45 +0000 Subject: [PATCH 001/301] Revert organize imports git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1661327 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/xssf/usermodel/TestXSSFBugs.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index e2f03058d..0f8549562 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -17,7 +17,13 @@ package org.apache.poi.xssf.usermodel; -import static org.junit.Assert.*; +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; From 4023b1eae0897cd67226021e838ced8ee32f9358 Mon Sep 17 00:00:00 2001 From: Andreas Beeker Date: Sat, 21 Feb 2015 12:16:37 +0000 Subject: [PATCH 002/301] Updated POI copyright to 2015 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1661336 13f79535-47bb-0310-9956-ffa450edef68 --- legal/NOTICE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/legal/NOTICE b/legal/NOTICE index e5aa5f5a7..be2eae70d 100644 --- a/legal/NOTICE +++ b/legal/NOTICE @@ -1,5 +1,5 @@ Apache POI -Copyright 2003-2014 The Apache Software Foundation +Copyright 2003-2015 The Apache Software Foundation This product includes software developed by The Apache Software Foundation (http://www.apache.org/). From e282d7f997de95e5610a7b9979651e60b5aba0ac Mon Sep 17 00:00:00 2001 From: Andreas Beeker Date: Sat, 21 Feb 2015 12:36:17 +0000 Subject: [PATCH 003/301] pin documentation git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1661343 13f79535-47bb-0310-9956-ffa450edef68 From 90b4cb52487637323c5831de91de7b2337d4dab2 Mon Sep 17 00:00:00 2001 From: Andreas Beeker Date: Sat, 21 Feb 2015 12:49:38 +0000 Subject: [PATCH 004/301] unpin documentation git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1661348 13f79535-47bb-0310-9956-ffa450edef68 From 0864168c23959bac437ab0ebe6e946db58996e91 Mon Sep 17 00:00:00 2001 From: Andreas Beeker Date: Sat, 21 Feb 2015 12:55:03 +0000 Subject: [PATCH 005/301] update to next beta and docu fix git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1661349 13f79535-47bb-0310-9956-ffa450edef68 --- build.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.xml b/build.xml index cfa95666e..947ec411d 100644 --- a/build.xml +++ b/build.xml @@ -47,8 +47,8 @@ under the License. The Apache POI project Ant build. - - + + From 8d19e8b741ccf3671358baf6337cc2c721ab9b9b Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 23 Feb 2015 13:21:06 +0000 Subject: [PATCH 006/301] Fix typo - remove duplicate characters git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1661662 13f79535-47bb-0310-9956-ffa450edef68 --- build.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.xml b/build.xml index 947ec411d..a0fe7c5ec 100644 --- a/build.xml +++ b/build.xml @@ -579,7 +579,7 @@ under the License. - + From 327df5cf76dfad1150c1a28c316782bf6ff99874 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 23 Feb 2015 13:21:23 +0000 Subject: [PATCH 007/301] Unit tests for OPC handling of files without a Core Properties part git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1661663 13f79535-47bb-0310-9956-ffa450edef68 --- .../TestOPCComplianceCoreProperties.java | 81 ++++++++++++++++++ .../OPCCompliance_NoCoreProperties.xlsx | Bin 0 -> 11483 bytes 2 files changed, 81 insertions(+) create mode 100644 test-data/openxml4j/OPCCompliance_NoCoreProperties.xlsx diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCComplianceCoreProperties.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCComplianceCoreProperties.java index 0cf520009..cc6f7ca83 100644 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCComplianceCoreProperties.java +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCComplianceCoreProperties.java @@ -17,6 +17,10 @@ package org.apache.poi.openxml4j.opc.compliance; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URI; @@ -34,6 +38,8 @@ import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.openxml4j.opc.PackageRelationshipTypes; import org.apache.poi.openxml4j.opc.PackagingURIHelper; import org.apache.poi.openxml4j.opc.TargetMode; +import org.apache.poi.util.IOUtils; +import org.apache.poi.util.TempFile; /** * Test core properties Open Packaging Convention compliance. @@ -224,4 +230,79 @@ public final class TestOPCComplianceCoreProperties extends TestCase { String msg = extractInvalidFormatMessage("LimitedXSITypeAttribute_PresentWithUnauthorizedValueFAIL.docx"); assertEquals("The element 'modified' must have the 'xsi:type' attribute with the value 'dcterms:W3CDTF' !", msg); } + + /** + * Document with no core properties - testing at the OPC level, + * saving into a new stream + */ + public void testNoCoreProperties_saveNew() throws Exception { + String sampleFileName = "OPCCompliance_NoCoreProperties.xlsx"; + OPCPackage pkg = null; + try { + pkg = OPCPackage.open(POIDataSamples.getOpenXML4JInstance().getFile(sampleFileName).getPath()); + } catch (Exception e) { + throw new RuntimeException(e); + } + + // Empty properties + assertEquals(0, pkg.getPartsByContentType(ContentTypes.CORE_PROPERTIES_PART).size()); + assertNotNull(pkg.getPackageProperties()); + assertNotNull(pkg.getPackageProperties().getLanguageProperty()); + assertNull(pkg.getPackageProperties().getLanguageProperty().getValue()); + + // Save and re-load + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + pkg.save(baos); + ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); + + pkg = OPCPackage.open(bais); + + // An Empty Properties part has been added in the save/load + assertEquals(1, pkg.getPartsByContentType(ContentTypes.CORE_PROPERTIES_PART).size()); + assertNotNull(pkg.getPackageProperties()); + assertNotNull(pkg.getPackageProperties().getLanguageProperty()); + assertNull(pkg.getPackageProperties().getLanguageProperty().getValue()); + } + + /** + * Document with no core properties - testing at the OPC level, + * from a temp-file, saving in-place + */ + public void testNoCoreProperties_saveInPlace() throws Exception { + String sampleFileName = "OPCCompliance_NoCoreProperties.xlsx"; + + // Copy this into a temp file, so we can play with it + File tmp = TempFile.createTempFile("poi-test", ".opc"); + FileOutputStream out = new FileOutputStream(tmp); + IOUtils.copy( + POIDataSamples.getOpenXML4JInstance().openResourceAsStream(sampleFileName), + out); + out.close(); + + // Open it from that temp file + OPCPackage pkg = OPCPackage.open(tmp); + + // Empty properties + assertEquals(0, pkg.getPartsByContentType(ContentTypes.CORE_PROPERTIES_PART).size()); + assertNotNull(pkg.getPackageProperties()); + assertNotNull(pkg.getPackageProperties().getLanguageProperty()); + assertNull(pkg.getPackageProperties().getLanguageProperty().getValue()); + + // Save and close + pkg.close(); + + + // Re-open and check + pkg = OPCPackage.open(tmp); + + // An Empty Properties part has been added in the save/load + assertEquals(1, pkg.getPartsByContentType(ContentTypes.CORE_PROPERTIES_PART).size()); + assertNotNull(pkg.getPackageProperties()); + assertNotNull(pkg.getPackageProperties().getLanguageProperty()); + assertNull(pkg.getPackageProperties().getLanguageProperty().getValue()); + + // Finish and tidy + pkg.revert(); + tmp.delete(); + } } diff --git a/test-data/openxml4j/OPCCompliance_NoCoreProperties.xlsx b/test-data/openxml4j/OPCCompliance_NoCoreProperties.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..fa1049c68d788b928b5bb7c8d44eff9560ab0474 GIT binary patch literal 11483 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 U2bPa6%Si#eaINA2?a_b#1F&?89smFU literal 0 HcmV?d00001 From 1bbbd985d45c362e01732b56377a4d673b1644ce Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 23 Feb 2015 20:45:21 +0000 Subject: [PATCH 008/301] Bug 57612: Fix checking for proxy/accessible website in TestSignatureInfo git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1661774 13f79535-47bb-0310-9956-ffa450edef68 --- build.xml | 6 +++++- .../org/apache/poi/poifs/crypt/TestSignatureInfo.java | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/build.xml b/build.xml index a0fe7c5ec..f29aa8d37 100644 --- a/build.xml +++ b/build.xml @@ -82,7 +82,11 @@ under the License. - + + + diff --git a/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java b/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java index ded14dfba..fe8ce8011 100644 --- a/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java +++ b/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java @@ -316,7 +316,7 @@ public class TestSignatureInfo { signatureConfig.addSignatureFacet(new XAdESXLSignatureFacet()); // check for internet, no error means it works - boolean mockTsp = (getAccessError("http://timestamp.comodoca.com/rfc3161", true, 10000) == null); + boolean mockTsp = (getAccessError("http://timestamp.comodoca.com/rfc3161", true, 10000) != null); // http://timestamping.edelweb.fr/service/tsp // http://tsa.belgium.be/connect From d5065b1742b2b978369bf11076d8cfddb65074f2 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Tue, 24 Feb 2015 12:03:53 +0000 Subject: [PATCH 009/301] Change from XMLEventFactory.newFactory to XMLEventFactory.newInstance, for IBM JDK Compatibility, fixes #57622 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1661903 13f79535-47bb-0310-9956-ffa450edef68 --- .../internal/marshallers/PackagePropertiesMarshaller.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/marshallers/PackagePropertiesMarshaller.java b/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/marshallers/PackagePropertiesMarshaller.java index ca549f91f..76e292bea 100644 --- a/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/marshallers/PackagePropertiesMarshaller.java +++ b/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/marshallers/PackagePropertiesMarshaller.java @@ -34,15 +34,11 @@ import org.w3c.dom.Element; /** * Package properties marshaller. - * - * @author CDubet, Julien Chable */ public class PackagePropertiesMarshaller implements PartMarshaller { - - private final static Namespace namespaceDC, namespaceCoreProperties, namespaceDcTerms, namespaceXSI; static { - final XMLEventFactory f = XMLEventFactory.newFactory(); + final XMLEventFactory f = XMLEventFactory.newInstance(); namespaceDC = f.createNamespace("dc", PackagePropertiesPart.NAMESPACE_DC_URI); namespaceCoreProperties = f.createNamespace("cp", PackagePropertiesPart.NAMESPACE_CP_URI); namespaceDcTerms = f.createNamespace("dcterms", PackagePropertiesPart.NAMESPACE_DCTERMS_URI); From b6a88f09c8346cf8ac7fbd58e3869994ed5d125f Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Tue, 24 Feb 2015 12:09:30 +0000 Subject: [PATCH 010/301] Patch from rojotek from github-18 - Handle documents with a picture-only header git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1661908 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/xwpf/usermodel/XWPFDocument.java | 2 +- .../poi/xwpf/usermodel/TestXWPFDocument.java | 15 +++++++++++++++ test-data/document/zero-length.docx | Bin 0 -> 10469 bytes 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 test-data/document/zero-length.docx diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java index 9adc39704..6a28db2a8 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java @@ -92,7 +92,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { /** * Keeps track on all id-values used in this document and included parts, like headers, footers, etc. */ - private IdentifierManager drawingIdManager = new IdentifierManager(1L,4294967295L); + private IdentifierManager drawingIdManager = new IdentifierManager(0L,4294967295L); protected List footers = new ArrayList(); protected List headers = new ArrayList(); protected List comments = new ArrayList(); diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java index 7621404b8..85da27b9e 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java @@ -337,6 +337,21 @@ public final class TestXWPFDocument extends TestCase { doc.getPackage().revert(); } + public void testZeroLengthLibreOfficeDocumentWithWaterMarkHeader() throws IOException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("zero-length.docx"); + POIXMLProperties properties = doc.getProperties(); + + assertNotNull(properties.getCoreProperties()); + + XWPFHeader headerArray = doc.getHeaderArray(0); + assertEquals(1, headerArray.getAllPictures().size()); + assertEquals("image1.png", headerArray.pictures.get(0).getFileName()); + assertEquals("", headerArray.getText()); + + POIXMLProperties.ExtendedProperties extendedProperties = properties.getExtendedProperties(); + assertNotNull(extendedProperties); + assertEquals(0, extendedProperties.getUnderlyingProperties().getCharacters()); + } public void testSettings(){ XWPFSettings settings = new XWPFSettings(); diff --git a/test-data/document/zero-length.docx b/test-data/document/zero-length.docx new file mode 100644 index 0000000000000000000000000000000000000000..eb34b47b1a5f854f785c09ab9a2f6ec4b315c176 GIT binary patch literal 10469 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 S;{7JLw-3ZyYz&dU|NB2GD7i}j literal 0 HcmV?d00001 From 7ee6e41e59479a45b0fac68a7539d9e3d7597df4 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Tue, 24 Feb 2015 12:11:34 +0000 Subject: [PATCH 011/301] Fix inconsistent indents git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1661912 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xwpf/usermodel/TestXWPFDocument.java | 469 +++++++++--------- 1 file changed, 234 insertions(+), 235 deletions(-) diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java index 85da27b9e..9d8243959 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java @@ -39,99 +39,98 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP; public final class TestXWPFDocument extends TestCase { - public void testContainsMainContentType() throws Exception { - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx"); - OPCPackage pack = doc.getPackage(); + public void testContainsMainContentType() throws Exception { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx"); + OPCPackage pack = doc.getPackage(); - boolean found = false; - for(PackagePart part : pack.getParts()) { - if(part.getContentType().equals(XWPFRelation.DOCUMENT.getContentType())) { - found = true; - } - if (false) { - // successful tests should be silent - System.out.println(part); - } - } - assertTrue(found); - } + boolean found = false; + for(PackagePart part : pack.getParts()) { + if(part.getContentType().equals(XWPFRelation.DOCUMENT.getContentType())) { + found = true; + } + if (false) { + // successful tests should be silent + System.out.println(part); + } + } + assertTrue(found); + } - public void testOpen() throws Exception { - XWPFDocument xml; + public void testOpen() throws Exception { + XWPFDocument xml; - // Simple file - xml = XWPFTestDataSamples.openSampleDocument("sample.docx"); - // Check it has key parts - assertNotNull(xml.getDocument()); - assertNotNull(xml.getDocument().getBody()); - assertNotNull(xml.getStyle()); + // Simple file + xml = XWPFTestDataSamples.openSampleDocument("sample.docx"); + // Check it has key parts + assertNotNull(xml.getDocument()); + assertNotNull(xml.getDocument().getBody()); + assertNotNull(xml.getStyle()); - // Complex file - xml = XWPFTestDataSamples.openSampleDocument("IllustrativeCases.docx"); - assertNotNull(xml.getDocument()); - assertNotNull(xml.getDocument().getBody()); - assertNotNull(xml.getStyle()); - } + // Complex file + xml = XWPFTestDataSamples.openSampleDocument("IllustrativeCases.docx"); + assertNotNull(xml.getDocument()); + assertNotNull(xml.getDocument().getBody()); + assertNotNull(xml.getStyle()); + } - public void testMetadataBasics() throws IOException { - XWPFDocument xml = XWPFTestDataSamples.openSampleDocument("sample.docx"); - assertNotNull(xml.getProperties().getCoreProperties()); - assertNotNull(xml.getProperties().getExtendedProperties()); + public void testMetadataBasics() throws IOException { + XWPFDocument xml = XWPFTestDataSamples.openSampleDocument("sample.docx"); + assertNotNull(xml.getProperties().getCoreProperties()); + assertNotNull(xml.getProperties().getExtendedProperties()); - assertEquals("Microsoft Office Word", xml.getProperties().getExtendedProperties().getUnderlyingProperties().getApplication()); - assertEquals(1315, xml.getProperties().getExtendedProperties().getUnderlyingProperties().getCharacters()); - assertEquals(10, xml.getProperties().getExtendedProperties().getUnderlyingProperties().getLines()); + assertEquals("Microsoft Office Word", xml.getProperties().getExtendedProperties().getUnderlyingProperties().getApplication()); + assertEquals(1315, xml.getProperties().getExtendedProperties().getUnderlyingProperties().getCharacters()); + assertEquals(10, xml.getProperties().getExtendedProperties().getUnderlyingProperties().getLines()); - assertEquals(null, xml.getProperties().getCoreProperties().getTitle()); - assertEquals(null, xml.getProperties().getCoreProperties().getUnderlyingProperties().getSubjectProperty().getValue()); - } + assertEquals(null, xml.getProperties().getCoreProperties().getTitle()); + assertEquals(null, xml.getProperties().getCoreProperties().getUnderlyingProperties().getSubjectProperty().getValue()); + } - public void testMetadataComplex() throws IOException { - XWPFDocument xml = XWPFTestDataSamples.openSampleDocument("IllustrativeCases.docx"); - assertNotNull(xml.getProperties().getCoreProperties()); - assertNotNull(xml.getProperties().getExtendedProperties()); + public void testMetadataComplex() throws IOException { + XWPFDocument xml = XWPFTestDataSamples.openSampleDocument("IllustrativeCases.docx"); + assertNotNull(xml.getProperties().getCoreProperties()); + assertNotNull(xml.getProperties().getExtendedProperties()); - assertEquals("Microsoft Office Outlook", xml.getProperties().getExtendedProperties().getUnderlyingProperties().getApplication()); - assertEquals(5184, xml.getProperties().getExtendedProperties().getUnderlyingProperties().getCharacters()); - assertEquals(0, xml.getProperties().getExtendedProperties().getUnderlyingProperties().getLines()); + assertEquals("Microsoft Office Outlook", xml.getProperties().getExtendedProperties().getUnderlyingProperties().getApplication()); + assertEquals(5184, xml.getProperties().getExtendedProperties().getUnderlyingProperties().getCharacters()); + assertEquals(0, xml.getProperties().getExtendedProperties().getUnderlyingProperties().getLines()); - assertEquals(" ", xml.getProperties().getCoreProperties().getTitle()); - assertEquals(" ", xml.getProperties().getCoreProperties().getUnderlyingProperties().getSubjectProperty().getValue()); - } + assertEquals(" ", xml.getProperties().getCoreProperties().getTitle()); + assertEquals(" ", xml.getProperties().getCoreProperties().getUnderlyingProperties().getSubjectProperty().getValue()); + } - public void testWorkbookProperties() { - XWPFDocument doc = new XWPFDocument(); - POIXMLProperties props = doc.getProperties(); - assertNotNull(props); - assertEquals("Apache POI", props.getExtendedProperties().getUnderlyingProperties().getApplication()); - } - - public void testAddParagraph() throws IOException{ - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx"); - assertEquals(3, doc.getParagraphs().size()); + public void testWorkbookProperties() { + XWPFDocument doc = new XWPFDocument(); + POIXMLProperties props = doc.getProperties(); + assertNotNull(props); + assertEquals("Apache POI", props.getExtendedProperties().getUnderlyingProperties().getApplication()); + } - XWPFParagraph p = doc.createParagraph(); - assertEquals(p, doc.getParagraphs().get(3)); - assertEquals(4, doc.getParagraphs().size()); - - assertEquals(3, doc.getParagraphPos(3)); - assertEquals(3, doc.getPosOfParagraph(p)); + public void testAddParagraph() throws IOException{ + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx"); + assertEquals(3, doc.getParagraphs().size()); - CTP ctp = p.getCTP(); - XWPFParagraph newP = doc.getParagraph(ctp); - assertSame(p, newP); - XmlCursor cursor = doc.getDocument().getBody().getPArray(0).newCursor(); - XWPFParagraph cP = doc.insertNewParagraph(cursor); - assertSame(cP, doc.getParagraphs().get(0)); - assertEquals(5, doc.getParagraphs().size()); - } + XWPFParagraph p = doc.createParagraph(); + assertEquals(p, doc.getParagraphs().get(3)); + assertEquals(4, doc.getParagraphs().size()); - public void testAddPicture() throws IOException, InvalidFormatException - { + assertEquals(3, doc.getParagraphPos(3)); + assertEquals(3, doc.getPosOfParagraph(p)); + + CTP ctp = p.getCTP(); + XWPFParagraph newP = doc.getParagraph(ctp); + assertSame(p, newP); + XmlCursor cursor = doc.getDocument().getBody().getPArray(0).newCursor(); + XWPFParagraph cP = doc.insertNewParagraph(cursor); + assertSame(cP, doc.getParagraphs().get(0)); + assertEquals(5, doc.getParagraphs().size()); + } + + public void testAddPicture() throws IOException, InvalidFormatException { XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx"); byte[] jpeg = XWPFTestDataSamples.getImage("nature1.jpg"); String relationId = doc.addPictureData(jpeg,XWPFDocument.PICTURE_TYPE_JPEG); - + byte[] newJpeg = ((XWPFPictureData) doc.getRelationById(relationId)).getData(); assertEquals(newJpeg.length,jpeg.length); for (int i = 0 ; i < jpeg.length ; i++) @@ -161,182 +160,182 @@ public final class TestXWPFDocument extends TestCase { } - public void testRemoveBodyElement() throws IOException { - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx"); - assertEquals(3, doc.getParagraphs().size()); - assertEquals(3, doc.getBodyElements().size()); - - XWPFParagraph p1 = doc.getParagraphs().get(0); - XWPFParagraph p2 = doc.getParagraphs().get(1); - XWPFParagraph p3 = doc.getParagraphs().get(2); - - assertEquals(p1, doc.getBodyElements().get(0)); - assertEquals(p1, doc.getParagraphs().get(0)); - assertEquals(p2, doc.getBodyElements().get(1)); - assertEquals(p2, doc.getParagraphs().get(1)); - assertEquals(p3, doc.getBodyElements().get(2)); - assertEquals(p3, doc.getParagraphs().get(2)); - - // Add another - XWPFParagraph p4 = doc.createParagraph(); - - assertEquals(4, doc.getParagraphs().size()); - assertEquals(4, doc.getBodyElements().size()); - assertEquals(p1, doc.getBodyElements().get(0)); - assertEquals(p1, doc.getParagraphs().get(0)); - assertEquals(p2, doc.getBodyElements().get(1)); - assertEquals(p2, doc.getParagraphs().get(1)); - assertEquals(p3, doc.getBodyElements().get(2)); - assertEquals(p3, doc.getParagraphs().get(2)); - assertEquals(p4, doc.getBodyElements().get(3)); - assertEquals(p4, doc.getParagraphs().get(3)); - - // Remove the 2nd - assertEquals(true, doc.removeBodyElement(1)); - assertEquals(3, doc.getParagraphs().size()); - assertEquals(3, doc.getBodyElements().size()); - - assertEquals(p1, doc.getBodyElements().get(0)); - assertEquals(p1, doc.getParagraphs().get(0)); - assertEquals(p3, doc.getBodyElements().get(1)); - assertEquals(p3, doc.getParagraphs().get(1)); - assertEquals(p4, doc.getBodyElements().get(2)); - assertEquals(p4, doc.getParagraphs().get(2)); - - // Remove the 1st - assertEquals(true, doc.removeBodyElement(0)); - assertEquals(2, doc.getParagraphs().size()); - assertEquals(2, doc.getBodyElements().size()); - - assertEquals(p3, doc.getBodyElements().get(0)); - assertEquals(p3, doc.getParagraphs().get(0)); - assertEquals(p4, doc.getBodyElements().get(1)); - assertEquals(p4, doc.getParagraphs().get(1)); - - // Remove the last - assertEquals(true, doc.removeBodyElement(1)); - assertEquals(1, doc.getParagraphs().size()); - assertEquals(1, doc.getBodyElements().size()); - - assertEquals(p3, doc.getBodyElements().get(0)); - assertEquals(p3, doc.getParagraphs().get(0)); - } - - public void testRegisterPackagePictureData() throws IOException, InvalidFormatException { - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_1.docx"); - - /* manually assemble a new image package part*/ - OPCPackage opcPckg = doc.getPackage(); - XWPFRelation jpgRelation = XWPFRelation.IMAGE_JPEG; - PackagePartName partName = PackagingURIHelper.createPartName(jpgRelation.getDefaultFileName().replace('#', '2')); + public void testRemoveBodyElement() throws IOException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx"); + assertEquals(3, doc.getParagraphs().size()); + assertEquals(3, doc.getBodyElements().size()); + + XWPFParagraph p1 = doc.getParagraphs().get(0); + XWPFParagraph p2 = doc.getParagraphs().get(1); + XWPFParagraph p3 = doc.getParagraphs().get(2); + + assertEquals(p1, doc.getBodyElements().get(0)); + assertEquals(p1, doc.getParagraphs().get(0)); + assertEquals(p2, doc.getBodyElements().get(1)); + assertEquals(p2, doc.getParagraphs().get(1)); + assertEquals(p3, doc.getBodyElements().get(2)); + assertEquals(p3, doc.getParagraphs().get(2)); + + // Add another + XWPFParagraph p4 = doc.createParagraph(); + + assertEquals(4, doc.getParagraphs().size()); + assertEquals(4, doc.getBodyElements().size()); + assertEquals(p1, doc.getBodyElements().get(0)); + assertEquals(p1, doc.getParagraphs().get(0)); + assertEquals(p2, doc.getBodyElements().get(1)); + assertEquals(p2, doc.getParagraphs().get(1)); + assertEquals(p3, doc.getBodyElements().get(2)); + assertEquals(p3, doc.getParagraphs().get(2)); + assertEquals(p4, doc.getBodyElements().get(3)); + assertEquals(p4, doc.getParagraphs().get(3)); + + // Remove the 2nd + assertEquals(true, doc.removeBodyElement(1)); + assertEquals(3, doc.getParagraphs().size()); + assertEquals(3, doc.getBodyElements().size()); + + assertEquals(p1, doc.getBodyElements().get(0)); + assertEquals(p1, doc.getParagraphs().get(0)); + assertEquals(p3, doc.getBodyElements().get(1)); + assertEquals(p3, doc.getParagraphs().get(1)); + assertEquals(p4, doc.getBodyElements().get(2)); + assertEquals(p4, doc.getParagraphs().get(2)); + + // Remove the 1st + assertEquals(true, doc.removeBodyElement(0)); + assertEquals(2, doc.getParagraphs().size()); + assertEquals(2, doc.getBodyElements().size()); + + assertEquals(p3, doc.getBodyElements().get(0)); + assertEquals(p3, doc.getParagraphs().get(0)); + assertEquals(p4, doc.getBodyElements().get(1)); + assertEquals(p4, doc.getParagraphs().get(1)); + + // Remove the last + assertEquals(true, doc.removeBodyElement(1)); + assertEquals(1, doc.getParagraphs().size()); + assertEquals(1, doc.getBodyElements().size()); + + assertEquals(p3, doc.getBodyElements().get(0)); + assertEquals(p3, doc.getParagraphs().get(0)); + } + + public void testRegisterPackagePictureData() throws IOException, InvalidFormatException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_1.docx"); + + /* manually assemble a new image package part*/ + OPCPackage opcPckg = doc.getPackage(); + XWPFRelation jpgRelation = XWPFRelation.IMAGE_JPEG; + PackagePartName partName = PackagingURIHelper.createPartName(jpgRelation.getDefaultFileName().replace('#', '2')); PackagePart newImagePart = opcPckg.createPart(partName, jpgRelation.getContentType()); byte[] nature1 = XWPFTestDataSamples.getImage("abstract4.jpg"); OutputStream os = newImagePart.getOutputStream(); os.write(nature1); - os.close(); - XWPFHeader xwpfHeader = doc.getHeaderArray(0); - PackageRelationship relationship = xwpfHeader.getPackagePart().addRelationship(partName, TargetMode.INTERNAL, jpgRelation.getRelation()); - XWPFPictureData newPicData = new XWPFPictureData(newImagePart,relationship); - /* new part is now ready to rumble */ - - assertFalse(xwpfHeader.getAllPictures().contains(newPicData)); - assertFalse(doc.getAllPictures().contains(newPicData)); - assertFalse(doc.getAllPackagePictures().contains(newPicData)); + os.close(); + XWPFHeader xwpfHeader = doc.getHeaderArray(0); + PackageRelationship relationship = xwpfHeader.getPackagePart().addRelationship(partName, TargetMode.INTERNAL, jpgRelation.getRelation()); + XWPFPictureData newPicData = new XWPFPictureData(newImagePart,relationship); + /* new part is now ready to rumble */ - doc.registerPackagePictureData(newPicData); - - assertFalse(xwpfHeader.getAllPictures().contains(newPicData)); - assertFalse(doc.getAllPictures().contains(newPicData)); - assertTrue(doc.getAllPackagePictures().contains(newPicData)); - - doc.getPackage().revert(); - } + assertFalse(xwpfHeader.getAllPictures().contains(newPicData)); + assertFalse(doc.getAllPictures().contains(newPicData)); + assertFalse(doc.getAllPackagePictures().contains(newPicData)); - public void testFindPackagePictureData() throws IOException { - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_1.docx"); - byte[] nature1 = XWPFTestDataSamples.getImage("nature1.gif"); - XWPFPictureData part = doc.findPackagePictureData(nature1, Document.PICTURE_TYPE_GIF); - assertNotNull(part); - assertTrue(doc.getAllPictures().contains(part)); - assertTrue(doc.getAllPackagePictures().contains(part)); - doc.getPackage().revert(); - } - - public void testGetAllPictures() throws IOException { - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_3.docx"); - List allPictures = doc.getAllPictures(); - List allPackagePictures = doc.getAllPackagePictures(); - - assertNotNull(allPictures); - assertEquals(3,allPictures.size()); - for (XWPFPictureData xwpfPictureData : allPictures) { - assertTrue(allPackagePictures.contains(xwpfPictureData)); + doc.registerPackagePictureData(newPicData); + + assertFalse(xwpfHeader.getAllPictures().contains(newPicData)); + assertFalse(doc.getAllPictures().contains(newPicData)); + assertTrue(doc.getAllPackagePictures().contains(newPicData)); + + doc.getPackage().revert(); + } + + public void testFindPackagePictureData() throws IOException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_1.docx"); + byte[] nature1 = XWPFTestDataSamples.getImage("nature1.gif"); + XWPFPictureData part = doc.findPackagePictureData(nature1, Document.PICTURE_TYPE_GIF); + assertNotNull(part); + assertTrue(doc.getAllPictures().contains(part)); + assertTrue(doc.getAllPackagePictures().contains(part)); + doc.getPackage().revert(); + } + + public void testGetAllPictures() throws IOException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_3.docx"); + List allPictures = doc.getAllPictures(); + List allPackagePictures = doc.getAllPackagePictures(); + + assertNotNull(allPictures); + assertEquals(3,allPictures.size()); + for (XWPFPictureData xwpfPictureData : allPictures) { + assertTrue(allPackagePictures.contains(xwpfPictureData)); } - try { + try { allPictures.add(allPictures.get(0)); fail("This list must be unmodifiable!"); } catch (UnsupportedOperationException e) { // all ok } - - doc.getPackage().revert(); - } - public void testGetAllPackagePictures() throws IOException { - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_3.docx"); - List allPackagePictures = doc.getAllPackagePictures(); - - assertNotNull(allPackagePictures); - assertEquals(5,allPackagePictures.size()); + doc.getPackage().revert(); + } - try { - allPackagePictures.add(allPackagePictures.get(0)); - fail("This list must be unmodifiable!"); - } catch (UnsupportedOperationException e) { - // all ok - } - - doc.getPackage().revert(); - } - - public void testPictureHandlingSimpleFile() throws IOException, InvalidFormatException { - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_1.docx"); - assertEquals(1,doc.getAllPackagePictures().size()); - byte[] newPic = XWPFTestDataSamples.getImage("abstract4.jpg"); - String id1 = doc.addPictureData(newPic, Document.PICTURE_TYPE_JPEG); - assertEquals(2,doc.getAllPackagePictures().size()); - /* copy data, to avoid instance-equality */ - byte[] newPicCopy = Arrays.copyOf(newPic, newPic.length); - String id2 = doc.addPictureData(newPicCopy, Document.PICTURE_TYPE_JPEG); - assertEquals(id1,id2); - doc.getPackage().revert(); - } - - public void testPictureHandlingHeaderDocumentImages() throws IOException { - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_2.docx"); - assertEquals(1,doc.getAllPictures().size()); - assertEquals(1,doc.getAllPackagePictures().size()); - assertEquals(1,doc.getHeaderArray(0).getAllPictures().size()); - doc.getPackage().revert(); - } - - public void testPictureHandlingComplex() throws IOException, InvalidFormatException { - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_3.docx"); - XWPFHeader xwpfHeader = doc.getHeaderArray(0); + public void testGetAllPackagePictures() throws IOException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_3.docx"); + List allPackagePictures = doc.getAllPackagePictures(); - assertEquals(3,doc.getAllPictures().size()); + assertNotNull(allPackagePictures); + assertEquals(5,allPackagePictures.size()); + + try { + allPackagePictures.add(allPackagePictures.get(0)); + fail("This list must be unmodifiable!"); + } catch (UnsupportedOperationException e) { + // all ok + } + + doc.getPackage().revert(); + } + + public void testPictureHandlingSimpleFile() throws IOException, InvalidFormatException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_1.docx"); + assertEquals(1,doc.getAllPackagePictures().size()); + byte[] newPic = XWPFTestDataSamples.getImage("abstract4.jpg"); + String id1 = doc.addPictureData(newPic, Document.PICTURE_TYPE_JPEG); + assertEquals(2,doc.getAllPackagePictures().size()); + /* copy data, to avoid instance-equality */ + byte[] newPicCopy = Arrays.copyOf(newPic, newPic.length); + String id2 = doc.addPictureData(newPicCopy, Document.PICTURE_TYPE_JPEG); + assertEquals(id1,id2); + doc.getPackage().revert(); + } + + public void testPictureHandlingHeaderDocumentImages() throws IOException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_2.docx"); + assertEquals(1,doc.getAllPictures().size()); + assertEquals(1,doc.getAllPackagePictures().size()); + assertEquals(1,doc.getHeaderArray(0).getAllPictures().size()); + doc.getPackage().revert(); + } + + public void testPictureHandlingComplex() throws IOException, InvalidFormatException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_3.docx"); + XWPFHeader xwpfHeader = doc.getHeaderArray(0); + + assertEquals(3,doc.getAllPictures().size()); assertEquals(3,xwpfHeader.getAllPictures().size()); - assertEquals(5,doc.getAllPackagePictures().size()); - - byte[] nature1 = XWPFTestDataSamples.getImage("nature1.jpg"); - String id = doc.addPictureData(nature1, Document.PICTURE_TYPE_JPEG); - POIXMLDocumentPart part1 = xwpfHeader.getRelationById("rId1"); - XWPFPictureData part2 = (XWPFPictureData) doc.getRelationById(id); - assertSame(part1,part2); - - doc.getPackage().revert(); - } + assertEquals(5,doc.getAllPackagePictures().size()); + + byte[] nature1 = XWPFTestDataSamples.getImage("nature1.jpg"); + String id = doc.addPictureData(nature1, Document.PICTURE_TYPE_JPEG); + POIXMLDocumentPart part1 = xwpfHeader.getRelationById("rId1"); + XWPFPictureData part2 = (XWPFPictureData) doc.getRelationById(id); + assertSame(part1,part2); + + doc.getPackage().revert(); + } public void testZeroLengthLibreOfficeDocumentWithWaterMarkHeader() throws IOException { XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("zero-length.docx"); POIXMLProperties properties = doc.getProperties(); From 66afa6d09b73274996f548debaba3391c714cb7d Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Tue, 24 Feb 2015 18:20:02 +0000 Subject: [PATCH 012/301] Update Javadocs to refer to the fact that WorkbookFactory.create will throw a EncryptedDocumentException if the file is password protected git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1662074 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/poi/ss/usermodel/WorkbookFactory.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java b/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java index de847fd19..747d88c26 100644 --- a/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java +++ b/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java @@ -22,6 +22,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.PushbackInputStream; +import org.apache.poi.EncryptedDocumentException; import org.apache.poi.POIXMLDocument; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; @@ -73,8 +74,9 @@ public class WorkbookFactory { * than using a {@link File}.

*

Note that in order to properly release resources the * Workbook should be closed after use. + * @throws EncryptedDocumentException If the workbook given is password protected */ - public static Workbook create(InputStream inp) throws IOException, InvalidFormatException { + public static Workbook create(InputStream inp) throws IOException, InvalidFormatException, EncryptedDocumentException { // If clearly doesn't do mark/reset, wrap up if (! inp.markSupported()) { inp = new PushbackInputStream(inp, 8); @@ -94,8 +96,9 @@ public class WorkbookFactory { * the given File, which must exist and be readable. *

Note that in order to properly release resources the * Workbook should be closed after use. + * @throws EncryptedDocumentException If the workbook given is password protected */ - public static Workbook create(File file) throws IOException, InvalidFormatException { + public static Workbook create(File file) throws IOException, InvalidFormatException, EncryptedDocumentException { if (! file.exists()) { throw new FileNotFoundException(file.toString()); } From b57a4f04e3f82ddcf4a784ad13ccacfae372a6d9 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Thu, 26 Feb 2015 13:43:10 +0000 Subject: [PATCH 013/301] Adjust to provide full exception information for cases where we catch unexpected exceptions git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1662447 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/poifs/crypt/TestSignatureInfo.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java b/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java index fe8ce8011..d0eeb3d47 100644 --- a/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java +++ b/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java @@ -382,11 +382,13 @@ public class TestSignatureInfo { si.confirmSignature(); } catch (RuntimeException e) { // only allow a ConnectException because of timeout, we see this in Jenkins from time to time... - assertNotNull("Only allowing ConnectException here, but had: " + e, e.getCause()); + if(e.getCause() == null) { + throw e; + } if(!(e.getCause() instanceof ConnectException)) { throw e; } - assertTrue("Only allowing ConnectException here, but had: " + e, e.getCause().getMessage().contains("timed out")); + assertTrue("Only allowing ConnectException with 'timed out' as message here, but had: " + e, e.getCause().getMessage().contains("timed out")); } // verify From 7dfcd6c684508d60c9500525b0f3b2b836a5c239 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Fri, 27 Feb 2015 09:52:57 +0000 Subject: [PATCH 014/301] Adjust tests and fix small typo git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1662650 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xssf/streaming/SXSSFWorkbook.java | 2 +- .../poi/xssf/streaming/TestSXSSFWorkbook.java | 26 +++++++++++-------- .../poi/hssf/usermodel/TestHSSFCell.java | 3 +-- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java index 87d8847bd..79d2cc83b 100644 --- a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java +++ b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java @@ -831,7 +831,7 @@ public class SXSSFWorkbook implements Workbook /** * Closes the underlying {@link XSSFWorkbook} and {@link OPCPackage} - * on which this Workbook is based, if any. Has no effect on Worbooks + * on which this Workbook is based, if any. Has no effect on Workbooks * created from scratch. */ @Override diff --git a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java index ce217e234..7aa9422a6 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFWorkbook.java @@ -88,19 +88,23 @@ public final class TestSXSSFWorkbook extends BaseTestWorkbook { } @Test - public void existingWorkbook() { + public void existingWorkbook() throws IOException { XSSFWorkbook xssfWorkbook = new XSSFWorkbook(); xssfWorkbook.createSheet("S1"); SXSSFWorkbook wb = new SXSSFWorkbook(xssfWorkbook); - xssfWorkbook = (XSSFWorkbook) SXSSFITestDataProvider.instance.writeOutAndReadBack(wb); - assertTrue(wb.dispose()); - - wb = new SXSSFWorkbook(xssfWorkbook); - assertEquals(1, wb.getNumberOfSheets()); - Sheet sheet = wb.getSheetAt(0); - assertNotNull(sheet); - assertEquals("S1", sheet.getSheetName()); - assertTrue(wb.dispose()); + try { + xssfWorkbook = (XSSFWorkbook) SXSSFITestDataProvider.instance.writeOutAndReadBack(wb); + assertTrue(wb.dispose()); + + wb = new SXSSFWorkbook(xssfWorkbook); + assertEquals(1, wb.getNumberOfSheets()); + Sheet sheet = wb.getSheetAt(0); + assertNotNull(sheet); + assertEquals("S1", sheet.getSheetName()); + } finally { + assertTrue(wb.dispose()); + wb.close(); + } } @@ -123,7 +127,7 @@ public final class TestSXSSFWorkbook extends BaseTestWorkbook { XSSFWorkbook xssfWorkbook = (XSSFWorkbook) SXSSFITestDataProvider.instance.writeOutAndReadBack(wb); sss = (SharedStringsTable)f.get(wb); assertEquals(2, sss.getUniqueCount()); - wb.dispose(); + assertTrue(wb.dispose()); Sheet sheet1 = xssfWorkbook.getSheetAt(0); assertEquals("S1", sheet1.getSheetName()); diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFCell.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFCell.java index 36a48f46f..066c12e7f 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFCell.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFCell.java @@ -33,7 +33,6 @@ import org.apache.poi.hssf.record.StringRecord; import org.apache.poi.ss.SpreadsheetVersion; import org.apache.poi.ss.usermodel.BaseTestCell; import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.ErrorConstants; import org.apache.poi.ss.usermodel.FormulaError; import org.apache.poi.ss.usermodel.RichTextString; import org.apache.poi.ss.usermodel.Row; @@ -330,7 +329,7 @@ public final class TestHSSFCell extends BaseTestCell { // string to error code cell.setCellValue("abc"); confirmStringRecord(sheet, true); - cell.setCellErrorValue((byte)ErrorConstants.ERROR_REF); + cell.setCellErrorValue(FormulaError.REF.getCode()); confirmStringRecord(sheet, false); // string to boolean From e86ed72c2b2dd75341a2966483d5f1187f35ec5f Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Fri, 27 Feb 2015 09:59:14 +0000 Subject: [PATCH 015/301] * Add text-extraction verification to integration-tests via a new abstract base FileHandler * Fix NullPointerException found in some documents when running against the test-data * Add support for extracting text from Dir-Entries WORKBOOK and BOOK to support some old/strangely formatted XLS files. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1662652 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/TestAllFiles.java | 36 +++++++----- .../poi/stress/AbstractFileHandler.java | 55 +++++++++++++++++++ .../org/apache/poi/stress/FileHandler.java | 7 +++ .../apache/poi/stress/HMEFFileHandler.java | 2 +- .../apache/poi/stress/HPSFFileHandler.java | 2 +- .../apache/poi/stress/HSSFFileHandler.java | 7 +++ .../apache/poi/stress/POIFSFileHandler.java | 2 +- .../apache/poi/stress/SpreadsheetHandler.java | 2 +- .../apache/poi/stress/XSLFFileHandler.java | 2 +- .../apache/poi/stress/XWPFFileHandler.java | 2 +- .../poi/extractor/ExtractorFactory.java | 4 +- .../xssf/extractor/XSSFExcelExtractor.java | 8 ++- 12 files changed, 107 insertions(+), 22 deletions(-) create mode 100644 src/integrationtest/org/apache/poi/stress/AbstractFileHandler.java diff --git a/src/integrationtest/org/apache/poi/TestAllFiles.java b/src/integrationtest/org/apache/poi/TestAllFiles.java index 460830353..d0439b40f 100644 --- a/src/integrationtest/org/apache/poi/TestAllFiles.java +++ b/src/integrationtest/org/apache/poi/TestAllFiles.java @@ -253,20 +253,26 @@ public class TestAllFiles { @Test public void testAllFiles() throws Exception { assertNotNull("Unknown file extension for file: " + file + ": " + getExtension(file), handler); - InputStream stream = new BufferedInputStream(new FileInputStream(new File(ROOT_DIR, file)),100); + File inputFile = new File(ROOT_DIR, file); + try { - handler.handleFile(stream); - - assertFalse("Expected to fail for file " + file + " and handler " + handler + ", but did not fail!", - EXPECTED_FAILURES.contains(file)); - } catch (Exception e) { - // check if we expect failure for this file - if(!EXPECTED_FAILURES.contains(file)) { - throw new Exception("While handling " + file, e); - } - } finally { - stream.close(); - } + InputStream stream = new BufferedInputStream(new FileInputStream(inputFile),100); + try { + handler.handleFile(stream); + + assertFalse("Expected to fail for file " + file + " and handler " + handler + ", but did not fail!", + EXPECTED_FAILURES.contains(file)); + } finally { + stream.close(); + } + + handler.handleExtracting(inputFile); + } catch (Exception e) { + // check if we expect failure for this file + if(!EXPECTED_FAILURES.contains(file) && !AbstractFileHandler.EXPECTED_EXTRACTOR_FAILURES.contains(file)) { + throw new Exception("While handling " + file, e); + } + } } private static String getExtension(String file) { @@ -282,5 +288,9 @@ public class TestAllFiles { @Override public void handleFile(InputStream stream) throws Exception { } + + @Override + public void handleExtracting(File file) throws Exception { + } } } diff --git a/src/integrationtest/org/apache/poi/stress/AbstractFileHandler.java b/src/integrationtest/org/apache/poi/stress/AbstractFileHandler.java new file mode 100644 index 000000000..85ebb1b45 --- /dev/null +++ b/src/integrationtest/org/apache/poi/stress/AbstractFileHandler.java @@ -0,0 +1,55 @@ +package org.apache.poi.stress; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; + +import java.io.File; +import java.util.HashSet; +import java.util.Set; + +import org.apache.poi.POITextExtractor; +import org.apache.poi.extractor.ExtractorFactory; + +public abstract class AbstractFileHandler implements FileHandler { + public static final Set EXPECTED_EXTRACTOR_FAILURES = new HashSet(); + static { + // password protected files + EXPECTED_EXTRACTOR_FAILURES.add("document/bug53475-password-is-pass.docx"); + EXPECTED_EXTRACTOR_FAILURES.add("poifs/extenxls_pwd123.xlsx"); + EXPECTED_EXTRACTOR_FAILURES.add("poifs/protect.xlsx"); + EXPECTED_EXTRACTOR_FAILURES.add("poifs/protected_agile.docx"); + EXPECTED_EXTRACTOR_FAILURES.add("poifs/protected_sha512.xlsx"); + + // unsupported file-types, no supported OLE2 parts + EXPECTED_EXTRACTOR_FAILURES.add("hmef/quick-winmail.dat"); + EXPECTED_EXTRACTOR_FAILURES.add("hmef/winmail-sample1.dat"); + EXPECTED_EXTRACTOR_FAILURES.add("hmef/bug52400-winmail-simple.dat"); + EXPECTED_EXTRACTOR_FAILURES.add("hmef/bug52400-winmail-with-attachments.dat"); + EXPECTED_EXTRACTOR_FAILURES.add("hpsf/Test0313rur.adm"); + EXPECTED_EXTRACTOR_FAILURES.add("hsmf/attachment_msg_pdf.msg"); + EXPECTED_EXTRACTOR_FAILURES.add("poifs/Notes.ole2"); + EXPECTED_EXTRACTOR_FAILURES.add("slideshow/testPPT.thmx"); + } + + public void handleExtracting(File file) throws Exception { + POITextExtractor extractor = ExtractorFactory.createExtractor(file); + try { + assertNotNull(extractor); + + assertNotNull(extractor.getText()); + + // also try metadata + POITextExtractor metadataExtractor = extractor.getMetadataTextExtractor(); + assertNotNull(metadataExtractor.getText()); + + assertFalse("Expected Extraction to fail for file " + file + " and handler " + this + ", but did not fail!", + EXPECTED_EXTRACTOR_FAILURES.contains(file)); + } catch (IllegalArgumentException e) { + if(!EXPECTED_EXTRACTOR_FAILURES.contains(file)) { + throw new Exception("While handling " + file, e); + } + } finally { + extractor.close(); + } + } +} diff --git a/src/integrationtest/org/apache/poi/stress/FileHandler.java b/src/integrationtest/org/apache/poi/stress/FileHandler.java index e6f3385f0..ce2991b0b 100644 --- a/src/integrationtest/org/apache/poi/stress/FileHandler.java +++ b/src/integrationtest/org/apache/poi/stress/FileHandler.java @@ -16,6 +16,7 @@ ==================================================================== */ package org.apache.poi.stress; +import java.io.File; import java.io.InputStream; /** @@ -34,4 +35,10 @@ public interface FileHandler { * @throws Exception */ void handleFile(InputStream stream) throws Exception; + + /** + * Ensures that extracting text from the given file + * is returning some text. + */ + void handleExtracting(File file) throws Exception; } diff --git a/src/integrationtest/org/apache/poi/stress/HMEFFileHandler.java b/src/integrationtest/org/apache/poi/stress/HMEFFileHandler.java index dfa875005..9f492bf0e 100644 --- a/src/integrationtest/org/apache/poi/stress/HMEFFileHandler.java +++ b/src/integrationtest/org/apache/poi/stress/HMEFFileHandler.java @@ -26,7 +26,7 @@ import org.apache.poi.hmef.attribute.MAPIAttribute; import org.apache.poi.hmef.attribute.MAPIStringAttribute; import org.junit.Test; -public class HMEFFileHandler implements FileHandler { +public class HMEFFileHandler extends AbstractFileHandler { @Override public void handleFile(InputStream stream) throws Exception { diff --git a/src/integrationtest/org/apache/poi/stress/HPSFFileHandler.java b/src/integrationtest/org/apache/poi/stress/HPSFFileHandler.java index b7d846ae6..477ee859c 100644 --- a/src/integrationtest/org/apache/poi/stress/HPSFFileHandler.java +++ b/src/integrationtest/org/apache/poi/stress/HPSFFileHandler.java @@ -25,7 +25,7 @@ import org.apache.poi.hpsf.HPSFPropertiesOnlyDocument; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.junit.Test; -public class HPSFFileHandler implements FileHandler { +public class HPSFFileHandler extends AbstractFileHandler { @Override public void handleFile(InputStream stream) throws Exception { HPSFPropertiesOnlyDocument hpsf = new HPSFPropertiesOnlyDocument(new POIFSFileSystem(stream)); diff --git a/src/integrationtest/org/apache/poi/stress/HSSFFileHandler.java b/src/integrationtest/org/apache/poi/stress/HSSFFileHandler.java index 19dbd97a0..dd579c4db 100644 --- a/src/integrationtest/org/apache/poi/stress/HSSFFileHandler.java +++ b/src/integrationtest/org/apache/poi/stress/HSSFFileHandler.java @@ -16,6 +16,7 @@ ==================================================================== */ package org.apache.poi.stress; +import java.io.File; import java.io.FileInputStream; import java.io.InputStream; @@ -49,4 +50,10 @@ public class HSSFFileHandler extends SpreadsheetHandler { stream.close(); } } + + // a test-case to test this locally without executing the full TestAllFiles + @Test + public void testExtractor() throws Exception { + handleExtracting(new File("test-data/spreadsheet/BOOK_in_capitals.xls")); + } } \ No newline at end of file diff --git a/src/integrationtest/org/apache/poi/stress/POIFSFileHandler.java b/src/integrationtest/org/apache/poi/stress/POIFSFileHandler.java index 31deac710..5c4a36e3c 100644 --- a/src/integrationtest/org/apache/poi/stress/POIFSFileHandler.java +++ b/src/integrationtest/org/apache/poi/stress/POIFSFileHandler.java @@ -25,7 +25,7 @@ import java.io.InputStream; import org.apache.poi.POIDocument; import org.apache.poi.poifs.filesystem.POIFSFileSystem; -public class POIFSFileHandler implements FileHandler { +public class POIFSFileHandler extends AbstractFileHandler { @Override public void handleFile(InputStream stream) throws Exception { diff --git a/src/integrationtest/org/apache/poi/stress/SpreadsheetHandler.java b/src/integrationtest/org/apache/poi/stress/SpreadsheetHandler.java index aad703ce9..f12bbd2de 100644 --- a/src/integrationtest/org/apache/poi/stress/SpreadsheetHandler.java +++ b/src/integrationtest/org/apache/poi/stress/SpreadsheetHandler.java @@ -30,7 +30,7 @@ import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; -public abstract class SpreadsheetHandler implements FileHandler { +public abstract class SpreadsheetHandler extends AbstractFileHandler { public void handleWorkbook(Workbook wb, String extension) throws IOException { // try to access some of the content readContent(wb); diff --git a/src/integrationtest/org/apache/poi/stress/XSLFFileHandler.java b/src/integrationtest/org/apache/poi/stress/XSLFFileHandler.java index 3464218fd..e6cbb184b 100644 --- a/src/integrationtest/org/apache/poi/stress/XSLFFileHandler.java +++ b/src/integrationtest/org/apache/poi/stress/XSLFFileHandler.java @@ -25,7 +25,7 @@ import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.xslf.XSLFSlideShow; import org.junit.Test; -public class XSLFFileHandler implements FileHandler { +public class XSLFFileHandler extends AbstractFileHandler { @Override public void handleFile(InputStream stream) throws Exception { // ignore password protected files diff --git a/src/integrationtest/org/apache/poi/stress/XWPFFileHandler.java b/src/integrationtest/org/apache/poi/stress/XWPFFileHandler.java index a96d46da3..47c18d8aa 100644 --- a/src/integrationtest/org/apache/poi/stress/XWPFFileHandler.java +++ b/src/integrationtest/org/apache/poi/stress/XWPFFileHandler.java @@ -22,7 +22,7 @@ import java.io.InputStream; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.junit.Test; -public class XWPFFileHandler implements FileHandler { +public class XWPFFileHandler extends AbstractFileHandler { @Override public void handleFile(InputStream stream) throws Exception { // ignore password protected files diff --git a/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java b/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java index 65d1e3d69..a0b6b5db1 100644 --- a/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java +++ b/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java @@ -213,7 +213,9 @@ public class ExtractorFactory { { // Look for certain entries in the stream, to figure it // out from - if (poifsDir.hasEntry("Workbook")) { + if (poifsDir.hasEntry("Workbook") || + // some XLS files have different entry-names + poifsDir.hasEntry("WORKBOOK") || poifsDir.hasEntry("BOOK")) { if (getPreferEventExtractor()) { return new EventBasedExcelExtractor(poifsDir); } diff --git a/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFExcelExtractor.java b/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFExcelExtractor.java index 6f43ba126..39ef5be8a 100644 --- a/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFExcelExtractor.java +++ b/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFExcelExtractor.java @@ -80,7 +80,11 @@ public class XSSFExcelExtractor extends POIXMLTextExtractor } POIXMLTextExtractor extractor = new XSSFExcelExtractor(args[0]); - System.out.println(extractor.getText()); + try { + System.out.println(extractor.getText()); + } finally { + extractor.close(); + } } /** @@ -237,7 +241,7 @@ public class XSSFExcelExtractor extends POIXMLTextExtractor if (type == Cell.CELL_TYPE_NUMERIC) { CellStyle cs = cell.getCellStyle(); - if (cs.getDataFormatString() != null) { + if (cs != null && cs.getDataFormatString() != null) { text.append(formatter.formatRawCellContents( cell.getNumericCellValue(), cs.getDataFormat(), cs.getDataFormatString() )); From 80d0d3b5bd7a01632e143ab95e1cd0e6a596f878 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Fri, 27 Feb 2015 11:33:36 +0000 Subject: [PATCH 016/301] Add missing javadoc-header git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1662661 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/stress/AbstractFileHandler.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/integrationtest/org/apache/poi/stress/AbstractFileHandler.java b/src/integrationtest/org/apache/poi/stress/AbstractFileHandler.java index 85ebb1b45..d7e303e4a 100644 --- a/src/integrationtest/org/apache/poi/stress/AbstractFileHandler.java +++ b/src/integrationtest/org/apache/poi/stress/AbstractFileHandler.java @@ -1,3 +1,19 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ package org.apache.poi.stress; import static org.junit.Assert.assertFalse; From f043c4401717854713599806e64a5bcbb306f718 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Fri, 27 Feb 2015 14:58:41 +0000 Subject: [PATCH 017/301] * Verify some more Text-Extraction features as part of integration tests, fix some NullPointerExceptions that showed up now because the event-based extraction does not have a Document available * Also handle a XLSX which does not have row-numbers in the sheet-xml. Excel can read it so it makes sense to also allow to read it in the XSSFSheetXMLHandler * Remove some Eclipse warnings in test-code git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1662691 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/stress/AbstractFileHandler.java | 47 +++++ .../apache/poi/stress/HPSFFileHandler.java | 7 + .../apache/poi/stress/XSSFFileHandler.java | 7 + .../extractor/HPSFPropertiesExtractor.java | 8 + .../hssf/eventusermodel/HSSFEventFactory.java | 22 ++- .../poi/POIXMLPropertiesTextExtractor.java | 23 ++- .../poi/extractor/ExtractorFactory.java | 6 +- .../eventusermodel/XSSFSheetXMLHandler.java | 13 +- .../TestXSSFEventBasedExcelExtractor.java | 23 ++- .../TestHPSFPropertiesExtractor.java | 165 ++++++++++++------ .../eventusermodel/TestHSSFEventFactory.java | 16 +- .../hssf/extractor/TestExcelExtractor.java | 151 +++++++++------- 12 files changed, 354 insertions(+), 134 deletions(-) diff --git a/src/integrationtest/org/apache/poi/stress/AbstractFileHandler.java b/src/integrationtest/org/apache/poi/stress/AbstractFileHandler.java index d7e303e4a..8a27e6d0e 100644 --- a/src/integrationtest/org/apache/poi/stress/AbstractFileHandler.java +++ b/src/integrationtest/org/apache/poi/stress/AbstractFileHandler.java @@ -16,15 +16,23 @@ ==================================================================== */ package org.apache.poi.stress; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; import java.util.HashSet; import java.util.Set; import org.apache.poi.POITextExtractor; import org.apache.poi.extractor.ExtractorFactory; +import org.apache.poi.openxml4j.exceptions.InvalidFormatException; +import org.apache.poi.openxml4j.exceptions.OpenXML4JException; +import org.apache.xmlbeans.XmlException; public abstract class AbstractFileHandler implements FileHandler { public static final Set EXPECTED_EXTRACTOR_FAILURES = new HashSet(); @@ -48,6 +56,22 @@ public abstract class AbstractFileHandler implements FileHandler { } public void handleExtracting(File file) throws Exception { + boolean before = ExtractorFactory.getThreadPrefersEventExtractors(); + try { + ExtractorFactory.setThreadPrefersEventExtractors(true); + handleExtractingInternal(file); + + ExtractorFactory.setThreadPrefersEventExtractors(false); + handleExtractingInternal(file); + } finally { + ExtractorFactory.setThreadPrefersEventExtractors(before); + } + } + + private void handleExtractingInternal(File file) throws Exception { + long length = file.length(); + long modified = file.lastModified(); + POITextExtractor extractor = ExtractorFactory.createExtractor(file); try { assertNotNull(extractor); @@ -60,6 +84,11 @@ public abstract class AbstractFileHandler implements FileHandler { assertFalse("Expected Extraction to fail for file " + file + " and handler " + this + ", but did not fail!", EXPECTED_EXTRACTOR_FAILURES.contains(file)); + + assertEquals("File should not be modified by extractor", length, file.length()); + assertEquals("File should not be modified by extractor", modified, file.lastModified()); + + handleExtractingAsStream(file); } catch (IllegalArgumentException e) { if(!EXPECTED_EXTRACTOR_FAILURES.contains(file)) { throw new Exception("While handling " + file, e); @@ -68,4 +97,22 @@ public abstract class AbstractFileHandler implements FileHandler { extractor.close(); } } + + private void handleExtractingAsStream(File file) throws FileNotFoundException, + IOException, InvalidFormatException, OpenXML4JException, + XmlException { + InputStream stream = new FileInputStream(file); + try { + POITextExtractor streamExtractor = ExtractorFactory.createExtractor(stream); + try { + assertNotNull(streamExtractor); + + assertNotNull(streamExtractor.getText()); + } finally { + streamExtractor.close(); + } + } finally { + stream.close(); + } + } } diff --git a/src/integrationtest/org/apache/poi/stress/HPSFFileHandler.java b/src/integrationtest/org/apache/poi/stress/HPSFFileHandler.java index 477ee859c..6a53b2e00 100644 --- a/src/integrationtest/org/apache/poi/stress/HPSFFileHandler.java +++ b/src/integrationtest/org/apache/poi/stress/HPSFFileHandler.java @@ -18,6 +18,7 @@ package org.apache.poi.stress; import static org.junit.Assert.assertNotNull; +import java.io.File; import java.io.FileInputStream; import java.io.InputStream; @@ -43,4 +44,10 @@ public class HPSFFileHandler extends AbstractFileHandler { stream.close(); } } + + // a test-case to test this locally without executing the full TestAllFiles + @Test + public void testExtractor() throws Exception { + handleExtracting(new File("test-data/hpsf/TestBug44375.xls")); + } } diff --git a/src/integrationtest/org/apache/poi/stress/XSSFFileHandler.java b/src/integrationtest/org/apache/poi/stress/XSSFFileHandler.java index 54a386ea0..a268ed465 100644 --- a/src/integrationtest/org/apache/poi/stress/XSSFFileHandler.java +++ b/src/integrationtest/org/apache/poi/stress/XSSFFileHandler.java @@ -17,6 +17,7 @@ package org.apache.poi.stress; import java.io.ByteArrayOutputStream; +import java.io.File; import java.io.FileInputStream; import java.io.InputStream; @@ -71,4 +72,10 @@ public class XSSFFileHandler extends SpreadsheetHandler { stream.close(); } } + + // a test-case to test this locally without executing the full TestAllFiles + @Test + public void testExtractor() throws Exception { + handleExtracting(new File("test-data/spreadsheet/56278.xlsx")); + } } \ No newline at end of file diff --git a/src/java/org/apache/poi/hpsf/extractor/HPSFPropertiesExtractor.java b/src/java/org/apache/poi/hpsf/extractor/HPSFPropertiesExtractor.java index ce5301ac6..1a0db0389 100644 --- a/src/java/org/apache/poi/hpsf/extractor/HPSFPropertiesExtractor.java +++ b/src/java/org/apache/poi/hpsf/extractor/HPSFPropertiesExtractor.java @@ -57,6 +57,10 @@ public class HPSFPropertiesExtractor extends POITextExtractor { } public String getDocumentSummaryInformationText() { + if(document == null) { // event based extractor does not have a document + return ""; + } + DocumentSummaryInformation dsi = document.getDocumentSummaryInformation(); StringBuffer text = new StringBuffer(); @@ -78,6 +82,10 @@ public class HPSFPropertiesExtractor extends POITextExtractor { return text.toString(); } public String getSummaryInformationText() { + if(document == null) { // event based extractor does not have a document + return ""; + } + SummaryInformation si = document.getSummaryInformation(); // Just normal properties diff --git a/src/java/org/apache/poi/hssf/eventusermodel/HSSFEventFactory.java b/src/java/org/apache/poi/hssf/eventusermodel/HSSFEventFactory.java index 45ab8d813..4d0b894e0 100644 --- a/src/java/org/apache/poi/hssf/eventusermodel/HSSFEventFactory.java +++ b/src/java/org/apache/poi/hssf/eventusermodel/HSSFEventFactory.java @@ -19,6 +19,7 @@ package org.apache.poi.hssf.eventusermodel; import java.io.InputStream; import java.io.IOException; +import java.util.Set; import org.apache.poi.hssf.eventusermodel.HSSFUserException; import org.apache.poi.hssf.record.*; @@ -56,11 +57,24 @@ public class HSSFEventFactory { * @param req an Instance of HSSFRequest which has your registered listeners * @param dir a DirectoryNode containing your workbook */ - public void processWorkbookEvents(HSSFRequest req, DirectoryNode dir) throws IOException { - InputStream in = dir.createDocumentInputStream("Workbook"); + public void processWorkbookEvents(HSSFRequest req, DirectoryNode dir) throws IOException { + // some old documents have "WORKBOOK" or "BOOK" + final String name; + Set entryNames = dir.getEntryNames(); + if (entryNames.contains("Workbook")) { + name = "Workbook"; + } else if (entryNames.contains("WORKBOOK")) { + name = "WORKBOOK"; + } else if (entryNames.contains("BOOK")) { + name = "BOOK"; + } else { + name = "Workbook"; + } - processEvents(req, in); - } + InputStream in = dir.createDocumentInputStream(name); + + processEvents(req, in); + } /** * Processes a file into essentially record events. diff --git a/src/ooxml/java/org/apache/poi/POIXMLPropertiesTextExtractor.java b/src/ooxml/java/org/apache/poi/POIXMLPropertiesTextExtractor.java index ce576439f..8a35a34e4 100644 --- a/src/ooxml/java/org/apache/poi/POIXMLPropertiesTextExtractor.java +++ b/src/ooxml/java/org/apache/poi/POIXMLPropertiesTextExtractor.java @@ -67,9 +67,14 @@ public class POIXMLPropertiesTextExtractor extends POIXMLTextExtractor { * Returns the core document properties, eg author */ public String getCorePropertiesText() { + POIXMLDocument document = getDocument(); + if(document == null) { // event based extractor does not have a document + return ""; + } + StringBuffer text = new StringBuffer(); - PackagePropertiesPart props = - getDocument().getProperties().getCoreProperties().getUnderlyingProperties(); + PackagePropertiesPart props = + document.getProperties().getCoreProperties().getUnderlyingProperties(); appendIfPresent(text, "Category", props.getCategoryProperty().getValue()); appendIfPresent(text, "Category", props.getCategoryProperty().getValue()); @@ -99,9 +104,14 @@ public class POIXMLPropertiesTextExtractor extends POIXMLTextExtractor { * application */ public String getExtendedPropertiesText() { + POIXMLDocument document = getDocument(); + if(document == null) { // event based extractor does not have a document + return ""; + } + StringBuffer text = new StringBuffer(); org.openxmlformats.schemas.officeDocument.x2006.extendedProperties.CTProperties - props = getDocument().getProperties().getExtendedProperties().getUnderlyingProperties(); + props = document.getProperties().getExtendedProperties().getUnderlyingProperties(); appendIfPresent(text, "Application", props.getApplication()); appendIfPresent(text, "AppVersion", props.getAppVersion()); @@ -127,9 +137,14 @@ public class POIXMLPropertiesTextExtractor extends POIXMLTextExtractor { */ @SuppressWarnings("deprecation") public String getCustomPropertiesText() { + POIXMLDocument document = getDocument(); + if(document == null) { // event based extractor does not have a document + return ""; + } + StringBuilder text = new StringBuilder(); org.openxmlformats.schemas.officeDocument.x2006.customProperties.CTProperties - props = getDocument().getProperties().getCustomProperties().getUnderlyingProperties(); + props = document.getProperties().getCustomProperties().getUnderlyingProperties(); for(CTProperty property : props.getPropertyArray()) { String val = "(not implemented!)"; diff --git a/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java b/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java index a0b6b5db1..60a0f5181 100644 --- a/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java +++ b/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java @@ -265,10 +265,10 @@ public class ExtractorFactory { /** * Returns an array of text extractors, one for each of - * the embeded documents in the file (if there are any). - * If there are no embeded documents, you'll get back an + * the embedded documents in the file (if there are any). + * If there are no embedded documents, you'll get back an * empty array. Otherwise, you'll get one open - * {@link POITextExtractor} for each embeded file. + * {@link POITextExtractor} for each embedded file. */ public static POITextExtractor[] getEmbededDocsTextExtractors(POIOLE2TextExtractor ext) throws IOException, InvalidFormatException, OpenXML4JException, XmlException { // All the embded directories we spotted diff --git a/src/ooxml/java/org/apache/poi/xssf/eventusermodel/XSSFSheetXMLHandler.java b/src/ooxml/java/org/apache/poi/xssf/eventusermodel/XSSFSheetXMLHandler.java index 767742687..227441859 100644 --- a/src/ooxml/java/org/apache/poi/xssf/eventusermodel/XSSFSheetXMLHandler.java +++ b/src/ooxml/java/org/apache/poi/xssf/eventusermodel/XSSFSheetXMLHandler.java @@ -96,6 +96,7 @@ public class XSSFSheetXMLHandler extends DefaultHandler { private String formatString; private final DataFormatter formatter; private int rowNum; + private int nextRowNum; // some sheets do not have rowNums, Excel can read them so we should try to handle them correctly as well private String cellRef; private boolean formulasNotResults; @@ -240,7 +241,12 @@ public class XSSFSheetXMLHandler extends DefaultHandler { headerFooter.setLength(0); } else if("row".equals(name)) { - rowNum = Integer.parseInt(attributes.getValue("r")) - 1; + String rowNumStr = attributes.getValue("r"); + if(rowNumStr != null) { + rowNum = Integer.parseInt(rowNumStr) - 1; + } else { + rowNum = nextRowNum; + } output.startRow(rowNum); } // c => cell @@ -343,7 +349,7 @@ public class XSSFSheetXMLHandler extends DefaultHandler { case NUMBER: String n = value.toString(); - if (this.formatString != null) + if (this.formatString != null && n.length() > 0) thisStr = formatter.formatRawCellContents(Double.parseDouble(n), this.formatIndex, this.formatString); else thisStr = n; @@ -370,6 +376,9 @@ public class XSSFSheetXMLHandler extends DefaultHandler { // Finish up the row output.endRow(rowNum); + + // some sheets do not have rowNum set in the XML, Excel can read them so we should try to read them as well + nextRowNum = rowNum + 1; } else if ("sheetData".equals(name)) { // Handle any "missing" cells which had comments attached checkForEmptyCellComments(EmptyCellCommentsCheckType.END_OF_SHEET_DATA); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/extractor/TestXSSFEventBasedExcelExtractor.java b/src/ooxml/testcases/org/apache/poi/xssf/extractor/TestXSSFEventBasedExcelExtractor.java index e48787be0..b56b3791f 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/extractor/TestXSSFEventBasedExcelExtractor.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/extractor/TestXSSFEventBasedExcelExtractor.java @@ -23,6 +23,7 @@ import java.util.regex.Pattern; import junit.framework.TestCase; import org.apache.poi.POITextExtractor; +import org.apache.poi.POIXMLTextExtractor; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.extractor.ExcelExtractor; import org.apache.poi.xssf.XSSFTestDataSamples; @@ -155,7 +156,6 @@ public class TestXSSFEventBasedExcelExtractor extends TestCase { POITextExtractor[] extractors = new POITextExtractor[] { ooxmlExtractor, ole2Extractor }; for (int i = 0; i < extractors.length; i++) { - @SuppressWarnings("resource") POITextExtractor extractor = extractors[i]; String text = extractor.getText().replaceAll("[\r\t]", ""); @@ -316,4 +316,25 @@ public class TestXSSFEventBasedExcelExtractor extends TestCase { fixture.close(); } } + + public void testFile56278_normal() throws Exception { + // first with normal Text Extractor + POIXMLTextExtractor extractor = new XSSFExcelExtractor( + XSSFTestDataSamples.openSampleWorkbook("56278.xlsx")); + try { + assertNotNull(extractor.getText()); + } finally { + extractor.close(); + } + } + + public void testFile56278_event() throws Exception { + // then with event based one + POIXMLTextExtractor extractor = getExtractor("56278.xlsx"); + try { + assertNotNull(extractor.getText()); + } finally { + extractor.close(); + } + } } diff --git a/src/testcases/org/apache/poi/hpsf/extractor/TestHPSFPropertiesExtractor.java b/src/testcases/org/apache/poi/hpsf/extractor/TestHPSFPropertiesExtractor.java index 22238d75f..c6ad03db2 100644 --- a/src/testcases/org/apache/poi/hpsf/extractor/TestHPSFPropertiesExtractor.java +++ b/src/testcases/org/apache/poi/hpsf/extractor/TestHPSFPropertiesExtractor.java @@ -22,10 +22,12 @@ import java.io.IOException; import junit.framework.TestCase; import org.apache.poi.POIDataSamples; +import org.apache.poi.POITextExtractor; import org.apache.poi.hpsf.Thumbnail; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.extractor.ExcelExtractor; import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.hwpf.extractor.Word6Extractor; import org.apache.poi.poifs.filesystem.POIFSFileSystem; public final class TestHPSFPropertiesExtractor extends TestCase { @@ -34,45 +36,53 @@ public final class TestHPSFPropertiesExtractor extends TestCase { public void testNormalProperties() throws Exception { POIFSFileSystem fs = new POIFSFileSystem(_samples.openResourceAsStream("TestMickey.doc")); HPSFPropertiesExtractor ext = new HPSFPropertiesExtractor(fs); - ext.getText(); - - // Check each bit in turn - String sinfText = ext.getSummaryInformationText(); - String dinfText = ext.getDocumentSummaryInformationText(); - - assertTrue(sinfText.indexOf("TEMPLATE = Normal") > -1); - assertTrue(sinfText.indexOf("SUBJECT = sample subject") > -1); - assertTrue(dinfText.indexOf("MANAGER = sample manager") > -1); - assertTrue(dinfText.indexOf("COMPANY = sample company") > -1); - - // Now overall - String text = ext.getText(); - assertTrue(text.indexOf("TEMPLATE = Normal") > -1); - assertTrue(text.indexOf("SUBJECT = sample subject") > -1); - assertTrue(text.indexOf("MANAGER = sample manager") > -1); - assertTrue(text.indexOf("COMPANY = sample company") > -1); + try { + ext.getText(); + + // Check each bit in turn + String sinfText = ext.getSummaryInformationText(); + String dinfText = ext.getDocumentSummaryInformationText(); + + assertTrue(sinfText.indexOf("TEMPLATE = Normal") > -1); + assertTrue(sinfText.indexOf("SUBJECT = sample subject") > -1); + assertTrue(dinfText.indexOf("MANAGER = sample manager") > -1); + assertTrue(dinfText.indexOf("COMPANY = sample company") > -1); + + // Now overall + String text = ext.getText(); + assertTrue(text.indexOf("TEMPLATE = Normal") > -1); + assertTrue(text.indexOf("SUBJECT = sample subject") > -1); + assertTrue(text.indexOf("MANAGER = sample manager") > -1); + assertTrue(text.indexOf("COMPANY = sample company") > -1); + } finally { + ext.close(); + } } public void testNormalUnicodeProperties() throws Exception { POIFSFileSystem fs = new POIFSFileSystem(_samples.openResourceAsStream("TestUnicode.xls")); HPSFPropertiesExtractor ext = new HPSFPropertiesExtractor(fs); - ext.getText(); - - // Check each bit in turn - String sinfText = ext.getSummaryInformationText(); - String dinfText = ext.getDocumentSummaryInformationText(); - - assertTrue(sinfText.indexOf("AUTHOR = marshall") > -1); - assertTrue(sinfText.indexOf("TITLE = Titel: \u00c4h") > -1); - assertTrue(dinfText.indexOf("COMPANY = Schreiner") > -1); - assertTrue(dinfText.indexOf("SCALE = false") > -1); - - // Now overall - String text = ext.getText(); - assertTrue(text.indexOf("AUTHOR = marshall") > -1); - assertTrue(text.indexOf("TITLE = Titel: \u00c4h") > -1); - assertTrue(text.indexOf("COMPANY = Schreiner") > -1); - assertTrue(text.indexOf("SCALE = false") > -1); + try { + ext.getText(); + + // Check each bit in turn + String sinfText = ext.getSummaryInformationText(); + String dinfText = ext.getDocumentSummaryInformationText(); + + assertTrue(sinfText.indexOf("AUTHOR = marshall") > -1); + assertTrue(sinfText.indexOf("TITLE = Titel: \u00c4h") > -1); + assertTrue(dinfText.indexOf("COMPANY = Schreiner") > -1); + assertTrue(dinfText.indexOf("SCALE = false") > -1); + + // Now overall + String text = ext.getText(); + assertTrue(text.indexOf("AUTHOR = marshall") > -1); + assertTrue(text.indexOf("TITLE = Titel: \u00c4h") > -1); + assertTrue(text.indexOf("COMPANY = Schreiner") > -1); + assertTrue(text.indexOf("SCALE = false") > -1); + } finally { + ext.close(); + } } public void testCustomProperties() throws Exception { @@ -80,18 +90,21 @@ public final class TestHPSFPropertiesExtractor extends TestCase { _samples.openResourceAsStream("TestMickey.doc") ); HPSFPropertiesExtractor ext = new HPSFPropertiesExtractor(fs); - - // Custom properties are part of the document info stream - String dinfText = ext.getDocumentSummaryInformationText(); - assertTrue(dinfText.indexOf("Client = sample client") > -1); - assertTrue(dinfText.indexOf("Division = sample division") > -1); - - String text = ext.getText(); - assertTrue(text.indexOf("Client = sample client") > -1); - assertTrue(text.indexOf("Division = sample division") > -1); + try { + // Custom properties are part of the document info stream + String dinfText = ext.getDocumentSummaryInformationText(); + assertTrue(dinfText.indexOf("Client = sample client") > -1); + assertTrue(dinfText.indexOf("Division = sample division") > -1); + + String text = ext.getText(); + assertTrue(text.indexOf("Client = sample client") > -1); + assertTrue(text.indexOf("Division = sample division") > -1); + } finally { + ext.close(); + } } - public void testConstructors() { + public void testConstructors() throws IOException { POIFSFileSystem fs; HSSFWorkbook wb; try { @@ -102,9 +115,29 @@ public final class TestHPSFPropertiesExtractor extends TestCase { } ExcelExtractor excelExt = new ExcelExtractor(wb); - String fsText = (new HPSFPropertiesExtractor(fs)).getText(); - String hwText = (new HPSFPropertiesExtractor(wb)).getText(); - String eeText = (new HPSFPropertiesExtractor(excelExt)).getText(); + final String fsText; + HPSFPropertiesExtractor fsExt = new HPSFPropertiesExtractor(fs); + try { + fsText = fsExt.getText(); + } finally { + fsExt.close(); + } + + final String hwText; + HPSFPropertiesExtractor hwExt = new HPSFPropertiesExtractor(wb); + try { + hwText = hwExt.getText(); + } finally { + hwExt.close(); + } + + final String eeText; + HPSFPropertiesExtractor eeExt = new HPSFPropertiesExtractor(excelExt); + try { + eeText = eeExt.getText(); + } finally { + eeExt.close(); + } assertEquals(fsText, hwText); assertEquals(fsText, eeText); @@ -113,13 +146,17 @@ public final class TestHPSFPropertiesExtractor extends TestCase { assertTrue(fsText.indexOf("TITLE = Titel: \u00c4h") > -1); } - public void test42726() { - HPSFPropertiesExtractor ex = new HPSFPropertiesExtractor(HSSFTestDataSamples.openSampleWorkbook("42726.xls")); - String txt = ex.getText(); - assertTrue(txt.indexOf("PID_AUTHOR") != -1); - assertTrue(txt.indexOf("PID_EDITTIME") != -1); - assertTrue(txt.indexOf("PID_REVNUMBER") != -1); - assertTrue(txt.indexOf("PID_THUMBNAIL") != -1); + public void test42726() throws IOException { + HPSFPropertiesExtractor ext = new HPSFPropertiesExtractor(HSSFTestDataSamples.openSampleWorkbook("42726.xls")); + try { + String txt = ext.getText(); + assertTrue(txt.indexOf("PID_AUTHOR") != -1); + assertTrue(txt.indexOf("PID_EDITTIME") != -1); + assertTrue(txt.indexOf("PID_REVNUMBER") != -1); + assertTrue(txt.indexOf("PID_THUMBNAIL") != -1); + } finally { + ext.close(); + } } public void testThumbnail() throws Exception { @@ -131,4 +168,24 @@ public final class TestHPSFPropertiesExtractor extends TestCase { assertNotNull(thumbnail.getThumbnailAsWMF()); wb.close(); } + + public void testExtractorFromWord6Extractor() throws Exception { + POIFSFileSystem fs = new POIFSFileSystem(_samples.openResourceAsStream("TestMickey.doc")); + Word6Extractor wExt = new Word6Extractor(fs); + try { + POITextExtractor ext = wExt.getMetadataTextExtractor(); + try { + // Now overall + String text = ext.getText(); + assertTrue(text.indexOf("TEMPLATE = Normal") > -1); + assertTrue(text.indexOf("SUBJECT = sample subject") > -1); + assertTrue(text.indexOf("MANAGER = sample manager") > -1); + assertTrue(text.indexOf("COMPANY = sample company") > -1); + } finally { + ext.close(); + } + } finally { + wExt.close(); + } + } } diff --git a/src/testcases/org/apache/poi/hssf/eventusermodel/TestHSSFEventFactory.java b/src/testcases/org/apache/poi/hssf/eventusermodel/TestHSSFEventFactory.java index 976633108..ff76cfa19 100644 --- a/src/testcases/org/apache/poi/hssf/eventusermodel/TestHSSFEventFactory.java +++ b/src/testcases/org/apache/poi/hssf/eventusermodel/TestHSSFEventFactory.java @@ -107,8 +107,6 @@ public final class TestHSSFEventFactory extends TestCase { POIFSFileSystem fs = new POIFSFileSystem(openSample("42844.xls")); HSSFEventFactory factory = new HSSFEventFactory(); factory.processWorkbookEvents(req, fs); - - assertTrue("no errors while processing the file", true); } private static class MockHSSFListener implements HSSFListener { @@ -125,4 +123,18 @@ public final class TestHSSFEventFactory extends TestCase { records.add(record); } } + + public void testWithDifferentWorkbookName() throws Exception { + HSSFRequest req = new HSSFRequest(); + MockHSSFListener mockListen = new MockHSSFListener(); + req.addListenerForAllRecords(mockListen); + + POIFSFileSystem fs = new POIFSFileSystem(openSample("BOOK_in_capitals.xls")); + HSSFEventFactory factory = new HSSFEventFactory(); + factory.processWorkbookEvents(req, fs); + + fs = new POIFSFileSystem(openSample("WORKBOOK_in_capitals.xls")); + factory = new HSSFEventFactory(); + factory.processWorkbookEvents(req, fs); + } } diff --git a/src/testcases/org/apache/poi/hssf/extractor/TestExcelExtractor.java b/src/testcases/org/apache/poi/hssf/extractor/TestExcelExtractor.java index de8221029..f7584ff11 100644 --- a/src/testcases/org/apache/poi/hssf/extractor/TestExcelExtractor.java +++ b/src/testcases/org/apache/poi/hssf/extractor/TestExcelExtractor.java @@ -46,15 +46,18 @@ public final class TestExcelExtractor extends TestCase { } - public void testSimple() { - + public void testSimple() throws IOException { ExcelExtractor extractor = createExtractor("Simple.xls"); - assertEquals("Sheet1\nreplaceMe\nSheet2\nSheet3\n", extractor.getText()); - - // Now turn off sheet names - extractor.setIncludeSheetNames(false); - assertEquals("replaceMe\n", extractor.getText()); + try { + assertEquals("Sheet1\nreplaceMe\nSheet2\nSheet3\n", extractor.getText()); + + // Now turn off sheet names + extractor.setIncludeSheetNames(false); + assertEquals("replaceMe\n", extractor.getText()); + } finally { + extractor.close(); + } } public void testNumericFormula() { @@ -126,45 +129,47 @@ public final class TestExcelExtractor extends TestCase { public void testEventExtractor() throws Exception { - EventBasedExcelExtractor extractor; - // First up, a simple file with string // based formulas in it - extractor = new EventBasedExcelExtractor( + EventBasedExcelExtractor extractor = new EventBasedExcelExtractor( new POIFSFileSystem( HSSFTestDataSamples.openSampleFileStream("SimpleWithFormula.xls") ) ); - extractor.setIncludeSheetNames(true); - - String text = extractor.getText(); - assertEquals("Sheet1\nreplaceme\nreplaceme\nreplacemereplaceme\nSheet2\nSheet3\n", text); - - extractor.setIncludeSheetNames(false); - extractor.setFormulasNotResults(true); - - text = extractor.getText(); - assertEquals("replaceme\nreplaceme\nCONCATENATE(A1,A2)\n", text); - - - // Now, a slightly longer file with numeric formulas - extractor = new EventBasedExcelExtractor( - new POIFSFileSystem( - HSSFTestDataSamples.openSampleFileStream("sumifformula.xls") - ) - ); - extractor.setIncludeSheetNames(false); - extractor.setFormulasNotResults(true); - - text = extractor.getText(); - assertEquals( - "1000\t1\tSUMIF(A1:A5,\">4000\",B1:B5)\n" + - "2000\t2\n" + - "3000\t3\n" + - "4000\t4\n" + - "5000\t5\n", - text - ); + try { + extractor.setIncludeSheetNames(true); + + String text = extractor.getText(); + assertEquals("Sheet1\nreplaceme\nreplaceme\nreplacemereplaceme\nSheet2\nSheet3\n", text); + + extractor.setIncludeSheetNames(false); + extractor.setFormulasNotResults(true); + + text = extractor.getText(); + assertEquals("replaceme\nreplaceme\nCONCATENATE(A1,A2)\n", text); + + + // Now, a slightly longer file with numeric formulas + extractor = new EventBasedExcelExtractor( + new POIFSFileSystem( + HSSFTestDataSamples.openSampleFileStream("sumifformula.xls") + ) + ); + extractor.setIncludeSheetNames(false); + extractor.setFormulasNotResults(true); + + text = extractor.getText(); + assertEquals( + "1000\t1\tSUMIF(A1:A5,\">4000\",B1:B5)\n" + + "2000\t2\n" + + "3000\t3\n" + + "4000\t4\n" + + "5000\t5\n", + text + ); + } finally { + extractor.close(); + } } public void testWithComments() { @@ -272,15 +277,22 @@ public final class TestExcelExtractor extends TestCase { HSSFWorkbook wbB = new HSSFWorkbook(dirB, fs, true); ExcelExtractor exA = new ExcelExtractor(wbA); - ExcelExtractor exB = new ExcelExtractor(wbB); - - assertEquals("Sheet1\nTest excel file\nThis is the first file\nSheet2\nSheet3\n", - exA.getText()); - assertEquals("Sample Excel", exA.getSummaryInformation().getTitle()); - - assertEquals("Sheet1\nAnother excel file\nThis is the second file\nSheet2\nSheet3\n", - exB.getText()); - assertEquals("Sample Excel 2", exB.getSummaryInformation().getTitle()); + try { + ExcelExtractor exB = new ExcelExtractor(wbB); + try { + assertEquals("Sheet1\nTest excel file\nThis is the first file\nSheet2\nSheet3\n", + exA.getText()); + assertEquals("Sample Excel", exA.getSummaryInformation().getTitle()); + + assertEquals("Sheet1\nAnother excel file\nThis is the second file\nSheet2\nSheet3\n", + exB.getText()); + assertEquals("Sample Excel 2", exB.getSummaryInformation().getTitle()); + } finally { + exB.close(); + } + } finally { + exA.close(); + } } /** @@ -299,21 +311,32 @@ public final class TestExcelExtractor extends TestCase { HSSFWorkbook wbB = new HSSFWorkbook(dirB, fs, true); ExcelExtractor exA = new ExcelExtractor(wbA); - ExcelExtractor exB = new ExcelExtractor(wbB); - - assertEquals("Sheet1\nTest excel file\nThis is the first file\nSheet2\nSheet3\n", - exA.getText()); - assertEquals("Sample Excel", exA.getSummaryInformation().getTitle()); - - assertEquals("Sheet1\nAnother excel file\nThis is the second file\nSheet2\nSheet3\n", - exB.getText()); - assertEquals("Sample Excel 2", exB.getSummaryInformation().getTitle()); - - // And the base file too - ExcelExtractor ex = new ExcelExtractor(fs); - assertEquals("Sheet1\nI have lots of embeded files in me\nSheet2\nSheet3\n", - ex.getText()); - assertEquals("Excel With Embeded", ex.getSummaryInformation().getTitle()); + try { + ExcelExtractor exB = new ExcelExtractor(wbB); + try { + assertEquals("Sheet1\nTest excel file\nThis is the first file\nSheet2\nSheet3\n", + exA.getText()); + assertEquals("Sample Excel", exA.getSummaryInformation().getTitle()); + + assertEquals("Sheet1\nAnother excel file\nThis is the second file\nSheet2\nSheet3\n", + exB.getText()); + assertEquals("Sample Excel 2", exB.getSummaryInformation().getTitle()); + + // And the base file too + ExcelExtractor ex = new ExcelExtractor(fs); + try { + assertEquals("Sheet1\nI have lots of embeded files in me\nSheet2\nSheet3\n", + ex.getText()); + assertEquals("Excel With Embeded", ex.getSummaryInformation().getTitle()); + } finally { + ex.close(); + } + } finally { + exB.close(); + } + } finally { + exA.close(); + } } /** From 0e16d1434982a0b271087e30faf66dc77cdb2c40 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Fri, 27 Feb 2015 15:01:46 +0000 Subject: [PATCH 018/301] Move test-case to location where the scratchpad-classes are available git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1662712 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/hwpf/extractor/TestWordExtractor.java | 28 ++++++++++++++++++- .../TestHPSFPropertiesExtractor.java | 22 --------------- 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractor.java b/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractor.java index 82d6f34f4..1a69630a2 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractor.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractor.java @@ -20,6 +20,7 @@ package org.apache.poi.hwpf.extractor; import junit.framework.TestCase; import org.apache.poi.POIDataSamples; +import org.apache.poi.POITextExtractor; import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.HWPFTestDataSamples; import org.apache.poi.hwpf.OldWordFileFormatException; @@ -377,10 +378,35 @@ public final class TestWordExtractor extends TestCase { for (Entry entry : fs.getRoot()) { if ("WordDocument".equals(entry.getName())) { WordExtractor ex = new WordExtractor(fs); - text = ex.getText(); + try { + text = ex.getText(); + } finally { + ex.close(); + } } } assertNotNull(text); } + + + public void testExtractorFromWord6Extractor() throws Exception { + POIFSFileSystem fs = new POIFSFileSystem(POIDataSamples.getHPSFInstance().openResourceAsStream("TestMickey.doc")); + Word6Extractor wExt = new Word6Extractor(fs); + try { + POITextExtractor ext = wExt.getMetadataTextExtractor(); + try { + // Now overall + String text = ext.getText(); + assertTrue(text.indexOf("TEMPLATE = Normal") > -1); + assertTrue(text.indexOf("SUBJECT = sample subject") > -1); + assertTrue(text.indexOf("MANAGER = sample manager") > -1); + assertTrue(text.indexOf("COMPANY = sample company") > -1); + } finally { + ext.close(); + } + } finally { + wExt.close(); + } + } } diff --git a/src/testcases/org/apache/poi/hpsf/extractor/TestHPSFPropertiesExtractor.java b/src/testcases/org/apache/poi/hpsf/extractor/TestHPSFPropertiesExtractor.java index c6ad03db2..0ef39719d 100644 --- a/src/testcases/org/apache/poi/hpsf/extractor/TestHPSFPropertiesExtractor.java +++ b/src/testcases/org/apache/poi/hpsf/extractor/TestHPSFPropertiesExtractor.java @@ -22,12 +22,10 @@ import java.io.IOException; import junit.framework.TestCase; import org.apache.poi.POIDataSamples; -import org.apache.poi.POITextExtractor; import org.apache.poi.hpsf.Thumbnail; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.extractor.ExcelExtractor; import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.hwpf.extractor.Word6Extractor; import org.apache.poi.poifs.filesystem.POIFSFileSystem; public final class TestHPSFPropertiesExtractor extends TestCase { @@ -168,24 +166,4 @@ public final class TestHPSFPropertiesExtractor extends TestCase { assertNotNull(thumbnail.getThumbnailAsWMF()); wb.close(); } - - public void testExtractorFromWord6Extractor() throws Exception { - POIFSFileSystem fs = new POIFSFileSystem(_samples.openResourceAsStream("TestMickey.doc")); - Word6Extractor wExt = new Word6Extractor(fs); - try { - POITextExtractor ext = wExt.getMetadataTextExtractor(); - try { - // Now overall - String text = ext.getText(); - assertTrue(text.indexOf("TEMPLATE = Normal") > -1); - assertTrue(text.indexOf("SUBJECT = sample subject") > -1); - assertTrue(text.indexOf("MANAGER = sample manager") > -1); - assertTrue(text.indexOf("COMPANY = sample company") > -1); - } finally { - ext.close(); - } - } finally { - wExt.close(); - } - } } From 3ba7b59afc44d0ec5c74f5c16e6a5a9d8edaffaa Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Sat, 28 Feb 2015 17:36:19 +0000 Subject: [PATCH 019/301] Ensure that the core properties are there before saving them, in case they have not yet been lazy-created git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1662971 13f79535-47bb-0310-9956-ffa450edef68 --- src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java b/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java index 62f26b754..888f50130 100644 --- a/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java +++ b/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java @@ -443,7 +443,9 @@ public final class ZipPackage extends Package { if (this.getPartsByRelationshipType(PackageRelationshipTypes.CORE_PROPERTIES).size() == 0 && this.getPartsByRelationshipType(PackageRelationshipTypes.CORE_PROPERTIES_ECMA376).size() == 0 ) { logger.log(POILogger.DEBUG,"Save core properties part"); - + + // Ensure that core properties are added if missing + getPackageProperties(); // Add core properties to part list ... addPackagePart(this.packageProperties); // ... and to add its relationship ... From 2ccd6db57e2300c987aed4fb2db9d6cca22e11da Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Sat, 28 Feb 2015 17:37:11 +0000 Subject: [PATCH 020/301] More missing core properties unit tests, covering read-write without checks, and encryption git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1662972 13f79535-47bb-0310-9956-ffa450edef68 --- .../TestOPCComplianceCoreProperties.java | 25 ++++++--- .../apache/poi/poifs/crypt/TestEncryptor.java | 53 +++++++++++++++++++ 2 files changed, 71 insertions(+), 7 deletions(-) diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCComplianceCoreProperties.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCComplianceCoreProperties.java index cc6f7ca83..b9517ba2e 100644 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCComplianceCoreProperties.java +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCComplianceCoreProperties.java @@ -237,14 +237,9 @@ public final class TestOPCComplianceCoreProperties extends TestCase { */ public void testNoCoreProperties_saveNew() throws Exception { String sampleFileName = "OPCCompliance_NoCoreProperties.xlsx"; - OPCPackage pkg = null; - try { - pkg = OPCPackage.open(POIDataSamples.getOpenXML4JInstance().getFile(sampleFileName).getPath()); - } catch (Exception e) { - throw new RuntimeException(e); - } + OPCPackage pkg = OPCPackage.open(POIDataSamples.getOpenXML4JInstance().getFile(sampleFileName).getPath()); - // Empty properties + // Verify it has empty properties assertEquals(0, pkg.getPartsByContentType(ContentTypes.CORE_PROPERTIES_PART).size()); assertNotNull(pkg.getPackageProperties()); assertNotNull(pkg.getPackageProperties().getLanguageProperty()); @@ -262,6 +257,22 @@ public final class TestOPCComplianceCoreProperties extends TestCase { assertNotNull(pkg.getPackageProperties()); assertNotNull(pkg.getPackageProperties().getLanguageProperty()); assertNull(pkg.getPackageProperties().getLanguageProperty().getValue()); + + + // Open a new copy of it + pkg = OPCPackage.open(POIDataSamples.getOpenXML4JInstance().getFile(sampleFileName).getPath()); + + // Save and re-load, without having touched the properties yet + baos = new ByteArrayOutputStream(); + pkg.save(baos); + bais = new ByteArrayInputStream(baos.toByteArray()); + pkg = OPCPackage.open(bais); + + // Check that this too added empty properties without error + assertEquals(1, pkg.getPartsByContentType(ContentTypes.CORE_PROPERTIES_PART).size()); + assertNotNull(pkg.getPackageProperties()); + assertNotNull(pkg.getPackageProperties().getLanguageProperty()); + assertNull(pkg.getPackageProperties().getLanguageProperty().getValue()); } /** diff --git a/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestEncryptor.java b/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestEncryptor.java index 37deba5e8..2cd9889bd 100644 --- a/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestEncryptor.java +++ b/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestEncryptor.java @@ -18,6 +18,8 @@ package org.apache.poi.poifs.crypt; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import java.io.ByteArrayInputStream; @@ -32,6 +34,8 @@ import java.util.Iterator; import javax.crypto.Cipher; import org.apache.poi.POIDataSamples; +import org.apache.poi.openxml4j.opc.ContentTypes; +import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.poifs.crypt.agile.AgileEncryptionHeader; import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.poifs.filesystem.DocumentNode; @@ -266,6 +270,55 @@ public class TestEncryptor { assertArrayEquals(payloadExpected, payloadActual); } + /** + * Ensure we can encrypt a package that is missing the Core + * Properties, eg one from dodgy versions of Jasper Reports + * See https://github.com/nestoru/xlsxenc/ and + * http://stackoverflow.com/questions/28593223 + */ + @Test + public void encryptPackageWithoutCoreProperties() throws Exception { + // Open our file without core properties + File inp = POIDataSamples.getOpenXML4JInstance().getFile("OPCCompliance_NoCoreProperties.xlsx"); + OPCPackage pkg = OPCPackage.open(inp.getPath()); + + // It doesn't have any core properties yet + assertEquals(0, pkg.getPartsByContentType(ContentTypes.CORE_PROPERTIES_PART).size()); + assertNotNull(pkg.getPackageProperties()); + assertNotNull(pkg.getPackageProperties().getLanguageProperty()); + assertNull(pkg.getPackageProperties().getLanguageProperty().getValue()); + + // Encrypt it + EncryptionInfo info = new EncryptionInfo(EncryptionMode.agile); + NPOIFSFileSystem fs = new NPOIFSFileSystem(); + + Encryptor enc = info.getEncryptor(); + enc.confirmPassword("password"); + OutputStream os = enc.getDataStream(fs); + pkg.save(os); + pkg.revert(); + + // Save the resulting OLE2 document, and re-open it + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + fs.writeFilesystem(baos); + + ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); + NPOIFSFileSystem inpFS = new NPOIFSFileSystem(bais); + + // Check we can decrypt it + info = new EncryptionInfo(inpFS); + Decryptor d = Decryptor.getInstance(info); + assertEquals(true, d.verifyPassword("password")); + + OPCPackage inpPkg = OPCPackage.open(d.getDataStream(inpFS)); + + // Check it now has empty core properties + assertEquals(1, inpPkg.getPartsByContentType(ContentTypes.CORE_PROPERTIES_PART).size()); + assertNotNull(inpPkg.getPackageProperties()); + assertNotNull(inpPkg.getPackageProperties().getLanguageProperty()); + assertNull(inpPkg.getPackageProperties().getLanguageProperty().getValue()); + } + @Test @Ignore public void inPlaceRewrite() throws Exception { From d9b5b0239ee5d4e45030345f99d623848e3aed34 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Sat, 28 Feb 2015 17:49:18 +0000 Subject: [PATCH 021/301] Link to the replacement constructions for the deprecated ones, and a few extra bits of JavaDoc git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1662979 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/poifs/crypt/EncryptionInfo.java | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/java/org/apache/poi/poifs/crypt/EncryptionInfo.java b/src/java/org/apache/poi/poifs/crypt/EncryptionInfo.java index 0418befe2..2c2a42258 100644 --- a/src/java/org/apache/poi/poifs/crypt/EncryptionInfo.java +++ b/src/java/org/apache/poi/poifs/crypt/EncryptionInfo.java @@ -68,14 +68,21 @@ public class EncryptionInfo { public static BitField flagAES = BitFieldFactory.getInstance(0x20); + /** + * Opens for decryption + */ public EncryptionInfo(POIFSFileSystem fs) throws IOException { this(fs.getRoot()); } - + /** + * Opens for decryption + */ public EncryptionInfo(NPOIFSFileSystem fs) throws IOException { this(fs.getRoot()); } - + /** + * Opens for decryption + */ public EncryptionInfo(DirectoryNode dir) throws IOException { this(dir.createDocumentInputStream("EncryptionInfo"), false); } @@ -131,7 +138,7 @@ public class EncryptionInfo { } /** - * @deprecated use constructor without fs parameter + * @deprecated Use {@link #EncryptionInfo(EncryptionMode)} (fs parameter no longer required) */ @Deprecated public EncryptionInfo(POIFSFileSystem fs, EncryptionMode encryptionMode) { @@ -139,7 +146,7 @@ public class EncryptionInfo { } /** - * @deprecated use constructor without fs parameter + * @deprecated Use {@link #EncryptionInfo(EncryptionMode)} (fs parameter no longer required) */ @Deprecated public EncryptionInfo(NPOIFSFileSystem fs, EncryptionMode encryptionMode) { @@ -147,7 +154,7 @@ public class EncryptionInfo { } /** - * @deprecated use constructor without dir parameter + * @deprecated Use {@link #EncryptionInfo(EncryptionMode)} (dir parameter no longer required) */ @Deprecated public EncryptionInfo(DirectoryNode dir, EncryptionMode encryptionMode) { @@ -155,7 +162,7 @@ public class EncryptionInfo { } /** - * @deprecated use constructor without fs parameter + * @deprecated use {@link #EncryptionInfo(EncryptionMode, CipherAlgorithm, HashAlgorithm, int, int, ChainingMode)} */ @Deprecated public EncryptionInfo( @@ -171,7 +178,7 @@ public class EncryptionInfo { } /** - * @deprecated use constructor without fs parameter + * @deprecated use {@link #EncryptionInfo(EncryptionMode, CipherAlgorithm, HashAlgorithm, int, int, ChainingMode)} */ @Deprecated public EncryptionInfo( @@ -187,7 +194,7 @@ public class EncryptionInfo { } /** - * @deprecated use constructor without dir parameter + * @deprecated use {@link #EncryptionInfo(EncryptionMode, CipherAlgorithm, HashAlgorithm, int, int, ChainingMode)} */ @Deprecated public EncryptionInfo( @@ -202,6 +209,11 @@ public class EncryptionInfo { this(encryptionMode, cipherAlgorithm, hashAlgorithm, keyBits, blockSize, chainingMode); } + /** + * Prepares for encryption, using the given Encryption Mode, and + * all other parameters as default. + * @see #EncryptionInfo(EncryptionMode, CipherAlgorithm, HashAlgorithm, int, int, ChainingMode) + */ public EncryptionInfo(EncryptionMode encryptionMode) { this(encryptionMode, null, null, -1, -1, null); } From 54bbd99ce49254411d67a6e3f04e2cfa3f15cb24 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 1 Mar 2015 17:50:16 +0000 Subject: [PATCH 022/301] Add missing close and handle theme-pptx in ExtractorFactory. Add creating slide-bitmaps to PPTX integration test. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1663137 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/stress/XSLFFileHandler.java | 66 +++++++++++++++++-- .../poi/extractor/ExtractorFactory.java | 9 +++ 2 files changed, 71 insertions(+), 4 deletions(-) diff --git a/src/integrationtest/org/apache/poi/stress/XSLFFileHandler.java b/src/integrationtest/org/apache/poi/stress/XSLFFileHandler.java index e6cbb184b..b734c4e4b 100644 --- a/src/integrationtest/org/apache/poi/stress/XSLFFileHandler.java +++ b/src/integrationtest/org/apache/poi/stress/XSLFFileHandler.java @@ -18,35 +18,93 @@ package org.apache.poi.stress; import static org.junit.Assert.assertNotNull; +import java.awt.Dimension; +import java.awt.Graphics2D; +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; import java.io.FileInputStream; +import java.io.IOException; import java.io.InputStream; import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.xslf.XSLFSlideShow; +import org.apache.poi.xslf.usermodel.XMLSlideShow; +import org.apache.poi.xslf.usermodel.XSLFNotes; +import org.apache.poi.xslf.usermodel.XSLFShape; +import org.apache.poi.xslf.usermodel.XSLFSlide; +import org.apache.poi.xslf.usermodel.XSLFTextParagraph; +import org.apache.poi.xslf.usermodel.XSLFTextShape; import org.junit.Test; public class XSLFFileHandler extends AbstractFileHandler { @Override public void handleFile(InputStream stream) throws Exception { - // ignore password protected files - if (POIXMLDocumentHandler.isEncrypted(stream)) return; - XSLFSlideShow slide = new XSLFSlideShow(OPCPackage.open(stream)); assertNotNull(slide.getPresentation()); assertNotNull(slide.getSlideMasterReferences()); assertNotNull(slide.getSlideReferences()); new POIXMLDocumentHandler().handlePOIXMLDocument(slide); + + ByteArrayOutputStream out = new ByteArrayOutputStream(); + try { + slide.write(out); + } finally { + out.close(); + } + + createBitmaps(out); } + private void createBitmaps(ByteArrayOutputStream out) throws IOException { + XMLSlideShow ppt = new XMLSlideShow(new ByteArrayInputStream(out.toByteArray())); + Dimension pgsize = ppt.getPageSize(); + XSLFSlide[] xmlSlide = ppt.getSlides(); + int slideSize = xmlSlide.length; + for (int i = 0; i < slideSize; i++) { +// System.out.println("slide-" + (i + 1)); +// System.out.println("" + xmlSlide[i].getTitle()); + + BufferedImage img = new BufferedImage(pgsize.width, pgsize.height, BufferedImage.TYPE_INT_RGB); + Graphics2D graphics = img.createGraphics(); + + // draw stuff + xmlSlide[i].draw(graphics); + + // Also try to read notes + XSLFNotes notes = xmlSlide[i].getNotes(); + if(notes != null) { + for (XSLFShape note : notes) { + note.draw(graphics); + + if (note instanceof XSLFTextShape) { + XSLFTextShape txShape = (XSLFTextShape) note; + for (XSLFTextParagraph xslfParagraph : txShape.getTextParagraphs()) { + xslfParagraph.getText(); + } + } + } + } + } + } + // a test-case to test this locally without executing the full TestAllFiles @Test public void test() throws Exception { - InputStream stream = new FileInputStream("test-data/slideshow/testPPT.pptx"); + InputStream stream = new FileInputStream("test-data/slideshow/pptx2svg.pptx"); try { handleFile(stream); } finally { stream.close(); } } + + + // a test-case to test this locally without executing the full TestAllFiles + @Test + public void testExtractor() throws Exception { + handleExtracting(new File("test-data/slideshow/testPPT.thmx")); + } } \ No newline at end of file diff --git a/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java b/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java index 60a0f5181..46cd2cd38 100644 --- a/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java +++ b/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java @@ -51,6 +51,7 @@ import org.apache.poi.poifs.filesystem.DirectoryEntry; import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.poifs.filesystem.Entry; import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.apache.poi.xslf.XSLFSlideShow; import org.apache.poi.xslf.extractor.XSLFPowerPointExtractor; import org.apache.poi.xslf.usermodel.XSLFRelation; import org.apache.poi.xssf.extractor.XSSFEventBasedExcelExtractor; @@ -190,6 +191,14 @@ public class ExtractorFactory { } } + // special handling for SlideShow-Theme-files, + if(XSLFRelation.THEME_MANAGER.getContentType().equals(corePart.getContentType())) { + return new XSLFPowerPointExtractor(new XSLFSlideShow(pkg)); + } + + // ensure that we close the package again if there is an error opening it, however + // we need to revert the package to not re-write the file via close(), which is very likely not wanted for a TextExtractor! + pkg.revert(); throw new IllegalArgumentException("No supported documents found in the OOXML package (found "+corePart.getContentType()+")"); } From e13374683adc4c82080085840bf147e02f0f9c96 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 1 Mar 2015 19:56:56 +0000 Subject: [PATCH 023/301] Bug 57165: Avoid PartAlreadyExistsException when removing/cloning sheets git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1663153 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/POIXMLDocumentPart.java | 20 +++++++++++ .../apache/poi/openxml4j/opc/OPCPackage.java | 4 +-- .../apache/poi/openxml4j/opc/PackagePart.java | 5 +++ .../poi/xssf/usermodel/XSSFWorkbook.java | 22 ++++++++++-- .../poi/xssf/usermodel/TestUnfixedBugs.java | 34 ------------------- .../poi/xssf/usermodel/TestXSSFBugs.java | 32 +++++++++++++++++ 6 files changed, 79 insertions(+), 38 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/POIXMLDocumentPart.java b/src/ooxml/java/org/apache/poi/POIXMLDocumentPart.java index 24b4af238..4759ddbd3 100644 --- a/src/ooxml/java/org/apache/poi/POIXMLDocumentPart.java +++ b/src/ooxml/java/org/apache/poi/POIXMLDocumentPart.java @@ -349,11 +349,27 @@ public class POIXMLDocumentPart { * @param descriptor the part descriptor * @param factory the factory that will create an instance of the requested relation * @return the created child POIXMLDocumentPart + * @throws PartAlreadyExistsException + * If rule M1.12 is not verified : Packages shall not contain + * equivalent part names and package implementers shall neither + * create nor recognize packages with equivalent part names. */ public final POIXMLDocumentPart createRelationship(POIXMLRelation descriptor, POIXMLFactory factory){ return createRelationship(descriptor, factory, -1, false); } + /** + * Create a new child POIXMLDocumentPart + * + * @param descriptor the part descriptor + * @param factory the factory that will create an instance of the requested relation + * @param idx part number + * @return the created child POIXMLDocumentPart + * @throws PartAlreadyExistsException + * If rule M1.12 is not verified : Packages shall not contain + * equivalent part names and package implementers shall neither + * create nor recognize packages with equivalent part names. + */ public final POIXMLDocumentPart createRelationship(POIXMLRelation descriptor, POIXMLFactory factory, int idx){ return createRelationship(descriptor, factory, idx, false); } @@ -366,6 +382,10 @@ public class POIXMLDocumentPart { * @param idx part number * @param noRelation if true, then no relationship is added. * @return the created child POIXMLDocumentPart + * @throws PartAlreadyExistsException + * If rule M1.12 is not verified : Packages shall not contain + * equivalent part names and package implementers shall neither + * create nor recognize packages with equivalent part names. */ protected final POIXMLDocumentPart createRelationship(POIXMLRelation descriptor, POIXMLFactory factory, int idx, boolean noRelation){ try { diff --git a/src/ooxml/java/org/apache/poi/openxml4j/opc/OPCPackage.java b/src/ooxml/java/org/apache/poi/openxml4j/opc/OPCPackage.java index e210be6f6..4f3d6ca65 100644 --- a/src/ooxml/java/org/apache/poi/openxml4j/opc/OPCPackage.java +++ b/src/ooxml/java/org/apache/poi/openxml4j/opc/OPCPackage.java @@ -739,7 +739,7 @@ public abstract class OPCPackage implements RelationshipSource, Closeable { * @param contentType * Part content type. * @return The newly created part. - * @throws InvalidFormatException + * @throws PartAlreadyExistsException * If rule M1.12 is not verified : Packages shall not contain * equivalent part names and package implementers shall neither * create nor recognize packages with equivalent part names. @@ -762,7 +762,7 @@ public abstract class OPCPackage implements RelationshipSource, Closeable { * Specify if the existing relationship part, if any, logically * associated to the newly created part will be loaded. * @return The newly created part. - * @throws InvalidFormatException + * @throws PartAlreadyExistsException * If rule M1.12 is not verified : Packages shall not contain * equivalent part names and package implementers shall neither * create nor recognize packages with equivalent part names. diff --git a/src/ooxml/java/org/apache/poi/openxml4j/opc/PackagePart.java b/src/ooxml/java/org/apache/poi/openxml4j/opc/PackagePart.java index 8b72770a7..8cfdb0fb3 100644 --- a/src/ooxml/java/org/apache/poi/openxml4j/opc/PackagePart.java +++ b/src/ooxml/java/org/apache/poi/openxml4j/opc/PackagePart.java @@ -228,8 +228,13 @@ public abstract class PackagePart implements RelationshipSource { * Relationship unique id. * @return The newly created and added relationship * + * @throws InvalidOperationException + * If a writing operation is done on a read only package or + * invalid nested relations are created. * @throws InvalidFormatException * If the URI point to a relationship part URI. + * @throws IllegalArgumentException if targetPartName, targetMode + * or relationshipType are passed as null * @see org.apache.poi.openxml4j.opc.RelationshipSource#addRelationship(org.apache.poi.openxml4j.opc.PackagePartName, * org.apache.poi.openxml4j.opc.TargetMode, java.lang.String, java.lang.String) */ diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java index ae09af141..41a6d613f 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java @@ -751,8 +751,26 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable try next one + sheetNumber++; + continue outerloop; + } + } + + // no duplicate found => use this one + break; } XSSFSheet wrapper = (XSSFSheet)createRelationship(XSSFRelation.WORKSHEET, XSSFFactory.getInstance(), sheetNumber); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestUnfixedBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestUnfixedBugs.java index c90ba8061..0e5864b36 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestUnfixedBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestUnfixedBugs.java @@ -17,8 +17,6 @@ package org.apache.poi.xssf.usermodel; -import static org.junit.Assert.assertEquals; - import java.io.IOException; import java.nio.charset.Charset; import java.util.Calendar; @@ -184,38 +182,6 @@ public final class TestUnfixedBugs extends TestCase { } } - - @Test - public void test57165() throws IOException { - XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("57171_57163_57165.xlsx"); - try { - removeAllSheetsBut(3, wb); - wb.cloneSheet(0); // Throws exception here - wb.setSheetName(1, "New Sheet"); - //saveWorkbook(wb, fileName); - - XSSFWorkbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(wb); - try { - - } finally { - wbBack.close(); - } - } finally { - wb.close(); - } - } - - private static void removeAllSheetsBut(int sheetIndex, Workbook wb) - { - int sheetNb = wb.getNumberOfSheets(); - // Move this sheet at the first position - wb.setSheetOrder(wb.getSheetName(sheetIndex), 0); - for (int sn = sheetNb - 1; sn > 0; sn--) - { - wb.removeSheetAt(sn); - } - } - // When this is fixed, the test case should go to BaseTestXCell with // adjustments to use _testDataProvider to also verify this for XSSF public void testBug57294() throws IOException { diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index 0f8549562..1ebb56178 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -2134,4 +2134,36 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { assertEquals("~CIRCULAR~REF~", FormulaError.forInt(value.getErrorValue()).getString()); assertEquals("CIRCULAR_REF", FormulaError.forInt(value.getErrorValue()).toString()); } + + + @Test + public void test57165() throws IOException { + XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("57171_57163_57165.xlsx"); + try { + removeAllSheetsBut(3, wb); + wb.cloneSheet(0); // Throws exception here + wb.setSheetName(1, "New Sheet"); + //saveWorkbook(wb, fileName); + + XSSFWorkbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(wb); + try { + + } finally { + wbBack.close(); + } + } finally { + wb.close(); + } + } + + private static void removeAllSheetsBut(int sheetIndex, Workbook wb) + { + int sheetNb = wb.getNumberOfSheets(); + // Move this sheet at the first position + wb.setSheetOrder(wb.getSheetName(sheetIndex), 0); + for (int sn = sheetNb - 1; sn > 0; sn--) + { + wb.removeSheetAt(sn); + } + } } From 9ede62441a800e969ff4505c28e2827c4b4803b5 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 1 Mar 2015 20:01:43 +0000 Subject: [PATCH 024/301] Bug 57165: also verify that createSheet() had the same problem and is also fixed now git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1663154 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xssf/usermodel/TestXSSFBugs.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index 1ebb56178..6eaa3f14d 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -2156,6 +2156,26 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { } } + @Test + public void test57165_create() throws IOException { + XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("57171_57163_57165.xlsx"); + try { + removeAllSheetsBut(3, wb); + wb.createSheet("newsheet"); // Throws exception here + wb.setSheetName(1, "New Sheet"); + //saveWorkbook(wb, fileName); + + XSSFWorkbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(wb); + try { + + } finally { + wbBack.close(); + } + } finally { + wb.close(); + } + } + private static void removeAllSheetsBut(int sheetIndex, Workbook wb) { int sheetNb = wb.getNumberOfSheets(); From aff564220230103395af178d7b9c6c74e1ce88ff Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 5 Mar 2015 06:31:18 +0000 Subject: [PATCH 025/301] Patch from tntim96 from bug #56799 - Include CTTblGrid in the smaller poi-ooxml-schemas jar git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1664236 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/xwpf/usermodel/TestXWPFTable.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTable.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTable.java index 00496b299..7d185637f 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTable.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTable.java @@ -29,6 +29,7 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblBorders; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblCellMar; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblGrid; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTText; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STBorder; @@ -64,6 +65,17 @@ public class TestXWPFTable extends TestCase { assertNotNull(ctTable.getTrArray(0).getTcArray(0).getPArray(0)); } + public void testTblGrid() { + XWPFDocument doc = new XWPFDocument(); + CTTbl ctTable = CTTbl.Factory.newInstance(); + CTTblGrid cttblgrid = ctTable.addNewTblGrid(); + cttblgrid.addNewGridCol().setW(new BigInteger("123")); + cttblgrid.addNewGridCol().setW(new BigInteger("321")); + + XWPFTable xtab = new XWPFTable(ctTable, doc); + assertEquals(123, xtab.getCTTbl().getTblGrid().getGridColArray(0).getW().intValue()); + assertEquals(321, xtab.getCTTbl().getTblGrid().getGridColArray(1).getW().intValue()); + } public void testGetText() { XWPFDocument doc = new XWPFDocument(); From 555e42f4dec6ab8096d6b43ebcf1b02a269f8ad7 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Wed, 11 Mar 2015 16:17:41 +0000 Subject: [PATCH 026/301] Give a more helpful exception if a Visio VSDX ooxml file is passed to ExtractorFactory git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1665929 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/extractor/ExtractorFactory.java | 19 ++++++++++++++++-- .../poi/extractor/TestExtractorFactory.java | 18 ++++++++++++++++- test-data/diagram/test.vsdx | Bin 0 -> 32350 bytes 3 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 test-data/diagram/test.vsdx diff --git a/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java b/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java index 46cd2cd38..0bc7eb31d 100644 --- a/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java +++ b/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java @@ -68,6 +68,8 @@ import org.apache.xmlbeans.XmlException; public class ExtractorFactory { public static final String CORE_DOCUMENT_REL = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"; + public static final String VISIO_DOCUMENT_REL = + "http://schemas.microsoft.com/visio/2010/relationships/document"; /** Should this thread prefer event based over usermodel based extractors? */ @@ -158,12 +160,25 @@ public class ExtractorFactory { } public static POIXMLTextExtractor createExtractor(OPCPackage pkg) throws IOException, OpenXML4JException, XmlException { + // Check for the normal Office core document PackageRelationshipCollection core = pkg.getRelationshipsByType(CORE_DOCUMENT_REL); - if(core.size() != 1) { - throw new IllegalArgumentException("Invalid OOXML Package received - expected 1 core document, found " + core.size()); + + // If nothing was found, try some of the other OOXML-based core types + if (core.size() == 0) { + // Could it be a visio one? + PackageRelationshipCollection visio = + pkg.getRelationshipsByType(VISIO_DOCUMENT_REL); + if (visio.size() == 1) { + throw new IllegalArgumentException("Text extraction not supported for Visio OOXML files"); + } + } + // Should just be a single core document, complain if not + if (core.size() != 1) { + throw new IllegalArgumentException("Invalid OOXML Package received - expected 1 core document, found " + core.size()); } + // Grab the core document part, and try to identify from that PackagePart corePart = pkg.getPart(core.getRelationship(0)); // Is it XSSF? diff --git a/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java b/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java index 7f79afaad..35198a80e 100644 --- a/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java +++ b/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java @@ -71,6 +71,7 @@ public class TestExtractorFactory extends TestCase { private File msgEmbMsg; private File vsd; + private File vsdx; private File pub; @@ -109,6 +110,7 @@ public class TestExtractorFactory extends TestCase { POIDataSamples dgTests = POIDataSamples.getDiagramInstance(); vsd = getFileAndCheck(dgTests, "Test_Visio-Some_Random_Text.vsd"); + vsdx = getFileAndCheck(dgTests, "test.vsdx"); POIDataSamples pubTests = POIDataSamples.getPublisherInstance(); pub = getFileAndCheck(pubTests, "Simple.pub"); @@ -230,7 +232,7 @@ public class TestExtractorFactory extends TestCase { ); extractor.close(); - // Visio + // Visio - binary assertTrue( ExtractorFactory.createExtractor(vsd) instanceof VisioTextExtractor @@ -238,6 +240,13 @@ public class TestExtractorFactory extends TestCase { assertTrue( ExtractorFactory.createExtractor(vsd).getText().length() > 50 ); + // Visio - vsdx + try { + ExtractorFactory.createExtractor(vsdx); + fail(); + } catch(IllegalArgumentException e) { + // Good + } // Publisher assertTrue( @@ -342,6 +351,13 @@ public class TestExtractorFactory extends TestCase { assertTrue( ExtractorFactory.createExtractor(new FileInputStream(vsd)).getText().length() > 50 ); + // Visio - vsdx + try { + ExtractorFactory.createExtractor(new FileInputStream(vsdx)); + fail(); + } catch(IllegalArgumentException e) { + // Good + } // Publisher assertTrue( diff --git a/test-data/diagram/test.vsdx b/test-data/diagram/test.vsdx new file mode 100644 index 0000000000000000000000000000000000000000..1fa690356e477ef15c1e9605e9f7312576b382f7 GIT binary patch literal 32350 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 QkpSjDcUvwV|M>0y0GSB*DgXcg literal 0 HcmV?d00001 From c5ea89b2bcba0545de995a9c2a648b34bc4fd0c5 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Wed, 11 Mar 2015 16:30:02 +0000 Subject: [PATCH 027/301] Fix inconsistent indents git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1665933 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/extractor/TestExtractorFactory.java | 1193 ++++++++--------- 1 file changed, 596 insertions(+), 597 deletions(-) diff --git a/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java b/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java index 35198a80e..b2edea6a3 100644 --- a/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java +++ b/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java @@ -47,261 +47,260 @@ import org.apache.poi.xwpf.extractor.XWPFWordExtractor; * Test that the extractor factory plays nicely */ public class TestExtractorFactory extends TestCase { + private File txt; - private File txt; + private File xls; + private File xlsx; + private File xltx; + private File xlsEmb; - private File xls; - private File xlsx; - private File xltx; - private File xlsEmb; + private File doc; + private File doc6; + private File doc95; + private File docx; + private File dotx; + private File docEmb; + private File docEmbOOXML; - private File doc; - private File doc6; - private File doc95; - private File docx; - private File dotx; - private File docEmb; - private File docEmbOOXML; + private File ppt; + private File pptx; - private File ppt; - private File pptx; + private File msg; + private File msgEmb; + private File msgEmbMsg; - private File msg; - private File msgEmb; - private File msgEmbMsg; - - private File vsd; - private File vsdx; - - private File pub; + private File vsd; + private File vsdx; - private File getFileAndCheck(POIDataSamples samples, String name) { - File file = samples.getFile(name); - - assertNotNull("Did not get a file for " + name, file); - assertTrue("Did not get a type file for " + name, file.isFile()); - assertTrue("File did not exist: " + name, file.exists()); - - return file; - } - @Override - protected void setUp() throws Exception { - super.setUp(); + private File pub; - POIDataSamples ssTests = POIDataSamples.getSpreadSheetInstance(); - xls = getFileAndCheck(ssTests, "SampleSS.xls"); - xlsx = getFileAndCheck(ssTests, "SampleSS.xlsx"); - xltx = getFileAndCheck(ssTests, "test.xltx"); - xlsEmb = getFileAndCheck(ssTests, "excel_with_embeded.xls"); + private File getFileAndCheck(POIDataSamples samples, String name) { + File file = samples.getFile(name); - POIDataSamples wpTests = POIDataSamples.getDocumentInstance(); - doc = getFileAndCheck(wpTests, "SampleDoc.doc"); - doc6 = getFileAndCheck(wpTests, "Word6.doc"); - doc95 = getFileAndCheck(wpTests, "Word95.doc"); - docx = getFileAndCheck(wpTests, "SampleDoc.docx"); - dotx = getFileAndCheck(wpTests, "test.dotx"); - docEmb = getFileAndCheck(wpTests, "word_with_embeded.doc"); - docEmbOOXML = getFileAndCheck(wpTests, "word_with_embeded_ooxml.doc"); + assertNotNull("Did not get a file for " + name, file); + assertTrue("Did not get a type file for " + name, file.isFile()); + assertTrue("File did not exist: " + name, file.exists()); - POIDataSamples slTests = POIDataSamples.getSlideShowInstance(); - ppt = getFileAndCheck(slTests, "SampleShow.ppt"); - pptx = getFileAndCheck(slTests, "SampleShow.pptx"); - txt = getFileAndCheck(slTests, "SampleShow.txt"); + return file; + } + @Override + protected void setUp() throws Exception { + super.setUp(); - POIDataSamples dgTests = POIDataSamples.getDiagramInstance(); - vsd = getFileAndCheck(dgTests, "Test_Visio-Some_Random_Text.vsd"); - vsdx = getFileAndCheck(dgTests, "test.vsdx"); - - POIDataSamples pubTests = POIDataSamples.getPublisherInstance(); - pub = getFileAndCheck(pubTests, "Simple.pub"); - - POIDataSamples olTests = POIDataSamples.getHSMFInstance(); - msg = getFileAndCheck(olTests, "quick.msg"); - msgEmb = getFileAndCheck(olTests, "attachment_test_msg.msg"); - msgEmbMsg = getFileAndCheck(olTests, "attachment_msg_pdf.msg"); - } + POIDataSamples ssTests = POIDataSamples.getSpreadSheetInstance(); + xls = getFileAndCheck(ssTests, "SampleSS.xls"); + xlsx = getFileAndCheck(ssTests, "SampleSS.xlsx"); + xltx = getFileAndCheck(ssTests, "test.xltx"); + xlsEmb = getFileAndCheck(ssTests, "excel_with_embeded.xls"); - public void testFile() throws Exception { - // Excel - POITextExtractor xlsExtractor = ExtractorFactory.createExtractor(xls); - assertNotNull("Had empty extractor for " + xls, xlsExtractor); - assertTrue("Expected instanceof ExcelExtractor, but had: " + xlsExtractor.getClass(), - xlsExtractor - instanceof ExcelExtractor - ); - assertTrue( - xlsExtractor.getText().length() > 200 - ); - xlsExtractor.close(); + POIDataSamples wpTests = POIDataSamples.getDocumentInstance(); + doc = getFileAndCheck(wpTests, "SampleDoc.doc"); + doc6 = getFileAndCheck(wpTests, "Word6.doc"); + doc95 = getFileAndCheck(wpTests, "Word95.doc"); + docx = getFileAndCheck(wpTests, "SampleDoc.docx"); + dotx = getFileAndCheck(wpTests, "test.dotx"); + docEmb = getFileAndCheck(wpTests, "word_with_embeded.doc"); + docEmbOOXML = getFileAndCheck(wpTests, "word_with_embeded_ooxml.doc"); - POITextExtractor extractor = ExtractorFactory.createExtractor(xlsx); - assertTrue( - extractor - instanceof XSSFExcelExtractor - ); - extractor.close(); + POIDataSamples slTests = POIDataSamples.getSlideShowInstance(); + ppt = getFileAndCheck(slTests, "SampleShow.ppt"); + pptx = getFileAndCheck(slTests, "SampleShow.pptx"); + txt = getFileAndCheck(slTests, "SampleShow.txt"); - extractor = ExtractorFactory.createExtractor(xlsx); - assertTrue( - extractor.getText().length() > 200 - ); - extractor.close(); + POIDataSamples dgTests = POIDataSamples.getDiagramInstance(); + vsd = getFileAndCheck(dgTests, "Test_Visio-Some_Random_Text.vsd"); + vsdx = getFileAndCheck(dgTests, "test.vsdx"); - extractor = ExtractorFactory.createExtractor(xltx); - assertTrue( - extractor - instanceof XSSFExcelExtractor - ); - extractor.close(); + POIDataSamples pubTests = POIDataSamples.getPublisherInstance(); + pub = getFileAndCheck(pubTests, "Simple.pub"); - extractor = ExtractorFactory.createExtractor(xltx); - assertTrue( - extractor.getText().contains("test") - ); - extractor.close(); + POIDataSamples olTests = POIDataSamples.getHSMFInstance(); + msg = getFileAndCheck(olTests, "quick.msg"); + msgEmb = getFileAndCheck(olTests, "attachment_test_msg.msg"); + msgEmbMsg = getFileAndCheck(olTests, "attachment_msg_pdf.msg"); + } + + public void testFile() throws Exception { + // Excel + POITextExtractor xlsExtractor = ExtractorFactory.createExtractor(xls); + assertNotNull("Had empty extractor for " + xls, xlsExtractor); + assertTrue("Expected instanceof ExcelExtractor, but had: " + xlsExtractor.getClass(), + xlsExtractor + instanceof ExcelExtractor + ); + assertTrue( + xlsExtractor.getText().length() > 200 + ); + xlsExtractor.close(); + + POITextExtractor extractor = ExtractorFactory.createExtractor(xlsx); + assertTrue( + extractor + instanceof XSSFExcelExtractor + ); + extractor.close(); + + extractor = ExtractorFactory.createExtractor(xlsx); + assertTrue( + extractor.getText().length() > 200 + ); + extractor.close(); + + extractor = ExtractorFactory.createExtractor(xltx); + assertTrue( + extractor + instanceof XSSFExcelExtractor + ); + extractor.close(); + + extractor = ExtractorFactory.createExtractor(xltx); + assertTrue( + extractor.getText().contains("test") + ); + extractor.close(); - // Word - assertTrue( - ExtractorFactory.createExtractor(doc) - instanceof WordExtractor - ); - assertTrue( - ExtractorFactory.createExtractor(doc).getText().length() > 120 - ); + // Word + assertTrue( + ExtractorFactory.createExtractor(doc) + instanceof WordExtractor + ); + assertTrue( + ExtractorFactory.createExtractor(doc).getText().length() > 120 + ); - assertTrue( - ExtractorFactory.createExtractor(doc6) - instanceof Word6Extractor - ); - assertTrue( - ExtractorFactory.createExtractor(doc6).getText().length() > 20 - ); - - assertTrue( - ExtractorFactory.createExtractor(doc95) - instanceof Word6Extractor - ); - assertTrue( - ExtractorFactory.createExtractor(doc95).getText().length() > 120 - ); - - extractor = ExtractorFactory.createExtractor(docx); - assertTrue( - extractor instanceof XWPFWordExtractor - ); - extractor.close(); - - extractor = ExtractorFactory.createExtractor(docx); - assertTrue( - extractor.getText().length() > 120 - ); - extractor.close(); + assertTrue( + ExtractorFactory.createExtractor(doc6) + instanceof Word6Extractor + ); + assertTrue( + ExtractorFactory.createExtractor(doc6).getText().length() > 20 + ); - extractor = ExtractorFactory.createExtractor(dotx); - assertTrue( - extractor instanceof XWPFWordExtractor - ); - extractor.close(); - - extractor = ExtractorFactory.createExtractor(dotx); - assertTrue( - extractor.getText().contains("Test") - ); - extractor.close(); + assertTrue( + ExtractorFactory.createExtractor(doc95) + instanceof Word6Extractor + ); + assertTrue( + ExtractorFactory.createExtractor(doc95).getText().length() > 120 + ); - // PowerPoint - assertTrue( - ExtractorFactory.createExtractor(ppt) - instanceof PowerPointExtractor - ); - assertTrue( - ExtractorFactory.createExtractor(ppt).getText().length() > 120 - ); + extractor = ExtractorFactory.createExtractor(docx); + assertTrue( + extractor instanceof XWPFWordExtractor + ); + extractor.close(); - extractor = ExtractorFactory.createExtractor(pptx); - assertTrue( - extractor - instanceof XSLFPowerPointExtractor - ); - extractor.close(); + extractor = ExtractorFactory.createExtractor(docx); + assertTrue( + extractor.getText().length() > 120 + ); + extractor.close(); - extractor = ExtractorFactory.createExtractor(pptx); - assertTrue( - extractor.getText().length() > 120 - ); - extractor.close(); + extractor = ExtractorFactory.createExtractor(dotx); + assertTrue( + extractor instanceof XWPFWordExtractor + ); + extractor.close(); - // Visio - binary - assertTrue( - ExtractorFactory.createExtractor(vsd) - instanceof VisioTextExtractor - ); - assertTrue( - ExtractorFactory.createExtractor(vsd).getText().length() > 50 - ); - // Visio - vsdx - try { - ExtractorFactory.createExtractor(vsdx); - fail(); - } catch(IllegalArgumentException e) { - // Good - } - - // Publisher - assertTrue( - ExtractorFactory.createExtractor(pub) - instanceof PublisherTextExtractor - ); - assertTrue( - ExtractorFactory.createExtractor(pub).getText().length() > 50 - ); - - // Outlook msg - assertTrue( - ExtractorFactory.createExtractor(msg) - instanceof OutlookTextExtactor - ); - assertTrue( - ExtractorFactory.createExtractor(msg).getText().length() > 50 - ); + extractor = ExtractorFactory.createExtractor(dotx); + assertTrue( + extractor.getText().contains("Test") + ); + extractor.close(); + + // PowerPoint + assertTrue( + ExtractorFactory.createExtractor(ppt) + instanceof PowerPointExtractor + ); + assertTrue( + ExtractorFactory.createExtractor(ppt).getText().length() > 120 + ); + + extractor = ExtractorFactory.createExtractor(pptx); + assertTrue( + extractor + instanceof XSLFPowerPointExtractor + ); + extractor.close(); + + extractor = ExtractorFactory.createExtractor(pptx); + assertTrue( + extractor.getText().length() > 120 + ); + extractor.close(); + + // Visio - binary + assertTrue( + ExtractorFactory.createExtractor(vsd) + instanceof VisioTextExtractor + ); + assertTrue( + ExtractorFactory.createExtractor(vsd).getText().length() > 50 + ); + // Visio - vsdx + try { + ExtractorFactory.createExtractor(vsdx); + fail(); + } catch(IllegalArgumentException e) { + // Good + } + + // Publisher + assertTrue( + ExtractorFactory.createExtractor(pub) + instanceof PublisherTextExtractor + ); + assertTrue( + ExtractorFactory.createExtractor(pub).getText().length() > 50 + ); + + // Outlook msg + assertTrue( + ExtractorFactory.createExtractor(msg) + instanceof OutlookTextExtactor + ); + assertTrue( + ExtractorFactory.createExtractor(msg).getText().length() > 50 + ); + + // Text + try { + ExtractorFactory.createExtractor(txt); + fail(); + } catch(IllegalArgumentException e) { + // Good + } + } + + public void testInputStream() throws Exception { + // Excel + assertTrue( + ExtractorFactory.createExtractor(new FileInputStream(xls)) + instanceof ExcelExtractor + ); + assertTrue( + ExtractorFactory.createExtractor(new FileInputStream(xls)).getText().length() > 200 + ); + + assertTrue( + ExtractorFactory.createExtractor(new FileInputStream(xlsx)) + instanceof XSSFExcelExtractor + ); + assertTrue( + ExtractorFactory.createExtractor(new FileInputStream(xlsx)).getText().length() > 200 + ); + + // Word + assertTrue( + ExtractorFactory.createExtractor(new FileInputStream(doc)) + instanceof WordExtractor + ); + assertTrue( + ExtractorFactory.createExtractor(new FileInputStream(doc)).getText().length() > 120 + ); - // Text - try { - ExtractorFactory.createExtractor(txt); - fail(); - } catch(IllegalArgumentException e) { - // Good - } - } - - public void testInputStream() throws Exception { - // Excel - assertTrue( - ExtractorFactory.createExtractor(new FileInputStream(xls)) - instanceof ExcelExtractor - ); - assertTrue( - ExtractorFactory.createExtractor(new FileInputStream(xls)).getText().length() > 200 - ); - - assertTrue( - ExtractorFactory.createExtractor(new FileInputStream(xlsx)) - instanceof XSSFExcelExtractor - ); - assertTrue( - ExtractorFactory.createExtractor(new FileInputStream(xlsx)).getText().length() > 200 - ); - - // Word - assertTrue( - ExtractorFactory.createExtractor(new FileInputStream(doc)) - instanceof WordExtractor - ); - assertTrue( - ExtractorFactory.createExtractor(new FileInputStream(doc)).getText().length() > 120 - ); - assertTrue( ExtractorFactory.createExtractor(new FileInputStream(doc6)) instanceof Word6Extractor @@ -309,7 +308,7 @@ public class TestExtractorFactory extends TestCase { assertTrue( ExtractorFactory.createExtractor(new FileInputStream(doc6)).getText().length() > 20 ); - + assertTrue( ExtractorFactory.createExtractor(new FileInputStream(doc95)) instanceof Word6Extractor @@ -317,99 +316,99 @@ public class TestExtractorFactory extends TestCase { assertTrue( ExtractorFactory.createExtractor(new FileInputStream(doc95)).getText().length() > 120 ); - - assertTrue( - ExtractorFactory.createExtractor(new FileInputStream(docx)) - instanceof XWPFWordExtractor - ); - assertTrue( - ExtractorFactory.createExtractor(new FileInputStream(docx)).getText().length() > 120 - ); - - // PowerPoint - assertTrue( - ExtractorFactory.createExtractor(new FileInputStream(ppt)) - instanceof PowerPointExtractor - ); - assertTrue( - ExtractorFactory.createExtractor(new FileInputStream(ppt)).getText().length() > 120 - ); - - assertTrue( - ExtractorFactory.createExtractor(new FileInputStream(pptx)) - instanceof XSLFPowerPointExtractor - ); - assertTrue( - ExtractorFactory.createExtractor(new FileInputStream(pptx)).getText().length() > 120 - ); - - // Visio - assertTrue( - ExtractorFactory.createExtractor(new FileInputStream(vsd)) - instanceof VisioTextExtractor - ); - assertTrue( - ExtractorFactory.createExtractor(new FileInputStream(vsd)).getText().length() > 50 - ); - // Visio - vsdx - try { - ExtractorFactory.createExtractor(new FileInputStream(vsdx)); - fail(); - } catch(IllegalArgumentException e) { - // Good - } - - // Publisher - assertTrue( - ExtractorFactory.createExtractor(new FileInputStream(pub)) - instanceof PublisherTextExtractor - ); - assertTrue( - ExtractorFactory.createExtractor(new FileInputStream(pub)).getText().length() > 50 - ); - - // Outlook msg - assertTrue( - ExtractorFactory.createExtractor(new FileInputStream(msg)) - instanceof OutlookTextExtactor - ); - assertTrue( - ExtractorFactory.createExtractor(new FileInputStream(msg)).getText().length() > 50 - ); - - // Text - try { - FileInputStream stream = new FileInputStream(txt); - try { + + assertTrue( + ExtractorFactory.createExtractor(new FileInputStream(docx)) + instanceof XWPFWordExtractor + ); + assertTrue( + ExtractorFactory.createExtractor(new FileInputStream(docx)).getText().length() > 120 + ); + + // PowerPoint + assertTrue( + ExtractorFactory.createExtractor(new FileInputStream(ppt)) + instanceof PowerPointExtractor + ); + assertTrue( + ExtractorFactory.createExtractor(new FileInputStream(ppt)).getText().length() > 120 + ); + + assertTrue( + ExtractorFactory.createExtractor(new FileInputStream(pptx)) + instanceof XSLFPowerPointExtractor + ); + assertTrue( + ExtractorFactory.createExtractor(new FileInputStream(pptx)).getText().length() > 120 + ); + + // Visio + assertTrue( + ExtractorFactory.createExtractor(new FileInputStream(vsd)) + instanceof VisioTextExtractor + ); + assertTrue( + ExtractorFactory.createExtractor(new FileInputStream(vsd)).getText().length() > 50 + ); + // Visio - vsdx + try { + ExtractorFactory.createExtractor(new FileInputStream(vsdx)); + fail(); + } catch(IllegalArgumentException e) { + // Good + } + + // Publisher + assertTrue( + ExtractorFactory.createExtractor(new FileInputStream(pub)) + instanceof PublisherTextExtractor + ); + assertTrue( + ExtractorFactory.createExtractor(new FileInputStream(pub)).getText().length() > 50 + ); + + // Outlook msg + assertTrue( + ExtractorFactory.createExtractor(new FileInputStream(msg)) + instanceof OutlookTextExtactor + ); + assertTrue( + ExtractorFactory.createExtractor(new FileInputStream(msg)).getText().length() > 50 + ); + + // Text + try { + FileInputStream stream = new FileInputStream(txt); + try { ExtractorFactory.createExtractor(stream); - fail(); - } finally { - stream.close(); - } - } catch(IllegalArgumentException e) { - // Good - } - } - - public void testPOIFS() throws Exception { - // Excel - assertTrue( - ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(xls))) - instanceof ExcelExtractor - ); - assertTrue( - ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(xls))).getText().length() > 200 - ); - - // Word - assertTrue( - ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(doc))) - instanceof WordExtractor - ); - assertTrue( - ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(doc))).getText().length() > 120 - ); - + fail(); + } finally { + stream.close(); + } + } catch(IllegalArgumentException e) { + // Good + } + } + + public void testPOIFS() throws Exception { + // Excel + assertTrue( + ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(xls))) + instanceof ExcelExtractor + ); + assertTrue( + ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(xls))).getText().length() > 200 + ); + + // Word + assertTrue( + ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(doc))) + instanceof WordExtractor + ); + assertTrue( + ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(doc))).getText().length() > 120 + ); + assertTrue( ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(doc6))) instanceof Word6Extractor @@ -417,7 +416,7 @@ public class TestExtractorFactory extends TestCase { assertTrue( ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(doc6))).getText().length() > 20 ); - + assertTrue( ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(doc95))) instanceof Word6Extractor @@ -425,297 +424,297 @@ public class TestExtractorFactory extends TestCase { assertTrue( ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(doc95))).getText().length() > 120 ); - - // PowerPoint - assertTrue( - ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(ppt))) - instanceof PowerPointExtractor - ); - assertTrue( - ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(ppt))).getText().length() > 120 - ); - - // Visio - assertTrue( - ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(vsd))) - instanceof VisioTextExtractor - ); - assertTrue( - ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(vsd))).getText().length() > 50 - ); - - // Publisher - assertTrue( - ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(pub))) - instanceof PublisherTextExtractor - ); - assertTrue( - ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(pub))).getText().length() > 50 - ); - - // Outlook msg - assertTrue( - ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(msg))) - instanceof OutlookTextExtactor - ); - assertTrue( - ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(msg))).getText().length() > 50 - ); - - // Text - try { - ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(txt))); - fail(); - } catch(IOException e) { - // Good - } - } - - public void testPackage() throws Exception { - // Excel - POIXMLTextExtractor extractor = ExtractorFactory.createExtractor(OPCPackage.open(xlsx.toString(), PackageAccess.READ)); + + // PowerPoint assertTrue( - extractor - instanceof XSSFExcelExtractor - ); + ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(ppt))) + instanceof PowerPointExtractor + ); + assertTrue( + ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(ppt))).getText().length() > 120 + ); + + // Visio + assertTrue( + ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(vsd))) + instanceof VisioTextExtractor + ); + assertTrue( + ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(vsd))).getText().length() > 50 + ); + + // Publisher + assertTrue( + ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(pub))) + instanceof PublisherTextExtractor + ); + assertTrue( + ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(pub))).getText().length() > 50 + ); + + // Outlook msg + assertTrue( + ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(msg))) + instanceof OutlookTextExtactor + ); + assertTrue( + ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(msg))).getText().length() > 50 + ); + + // Text + try { + ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(txt))); + fail(); + } catch(IOException e) { + // Good + } + } + + public void testPackage() throws Exception { + // Excel + POIXMLTextExtractor extractor = ExtractorFactory.createExtractor(OPCPackage.open(xlsx.toString(), PackageAccess.READ)); + assertTrue( + extractor + instanceof XSSFExcelExtractor + ); extractor.close(); - extractor = ExtractorFactory.createExtractor(OPCPackage.open(xlsx.toString())); + extractor = ExtractorFactory.createExtractor(OPCPackage.open(xlsx.toString())); assertTrue(extractor.getText().length() > 200); extractor.close(); - - // Word - extractor = ExtractorFactory.createExtractor(OPCPackage.open(docx.toString())); + + // Word + extractor = ExtractorFactory.createExtractor(OPCPackage.open(docx.toString())); assertTrue( - extractor - instanceof XWPFWordExtractor - ); - extractor.close(); - - extractor = ExtractorFactory.createExtractor(OPCPackage.open(docx.toString())); - assertTrue( - extractor.getText().length() > 120 - ); - extractor.close(); - - // PowerPoint - extractor = ExtractorFactory.createExtractor(OPCPackage.open(pptx.toString())); - assertTrue( - extractor - instanceof XSLFPowerPointExtractor - ); + extractor + instanceof XWPFWordExtractor + ); extractor.close(); - extractor = ExtractorFactory.createExtractor(OPCPackage.open(pptx.toString())); + extractor = ExtractorFactory.createExtractor(OPCPackage.open(docx.toString())); assertTrue( - extractor.getText().length() > 120 - ); + extractor.getText().length() > 120 + ); extractor.close(); - - // Text - try { - ExtractorFactory.createExtractor(OPCPackage.open(txt.toString())); - fail(); - } catch(InvalidOperationException e) { - // Good - } - } - - public void testPreferEventBased() throws Exception { - assertFalse(ExtractorFactory.getPreferEventExtractor()); - assertFalse(ExtractorFactory.getThreadPrefersEventExtractors()); - assertNull(ExtractorFactory.getAllThreadsPreferEventExtractors()); - - ExtractorFactory.setThreadPrefersEventExtractors(true); - - assertTrue(ExtractorFactory.getPreferEventExtractor()); - assertTrue(ExtractorFactory.getThreadPrefersEventExtractors()); - assertNull(ExtractorFactory.getAllThreadsPreferEventExtractors()); - - ExtractorFactory.setAllThreadsPreferEventExtractors(false); - - assertFalse(ExtractorFactory.getPreferEventExtractor()); - assertTrue(ExtractorFactory.getThreadPrefersEventExtractors()); - assertEquals(Boolean.FALSE, ExtractorFactory.getAllThreadsPreferEventExtractors()); - - ExtractorFactory.setAllThreadsPreferEventExtractors(null); - - assertTrue(ExtractorFactory.getPreferEventExtractor()); - assertTrue(ExtractorFactory.getThreadPrefersEventExtractors()); - assertNull(ExtractorFactory.getAllThreadsPreferEventExtractors()); - - - // Check we get the right extractors now - POITextExtractor extractor = ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(xls))); - assertTrue( - extractor - instanceof EventBasedExcelExtractor - ); - extractor.close(); - extractor = ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(xls))); - assertTrue( - extractor.getText().length() > 200 - ); - extractor.close(); - - extractor = ExtractorFactory.createExtractor(OPCPackage.open(xlsx.toString(), PackageAccess.READ)); - assertTrue(extractor instanceof XSSFEventBasedExcelExtractor); - extractor.close(); - extractor = ExtractorFactory.createExtractor(OPCPackage.open(xlsx.toString(), PackageAccess.READ)); - assertTrue( - extractor.getText().length() > 200 - ); - extractor.close(); - - - // Put back to normal - ExtractorFactory.setThreadPrefersEventExtractors(false); - assertFalse(ExtractorFactory.getPreferEventExtractor()); - assertFalse(ExtractorFactory.getThreadPrefersEventExtractors()); - assertNull(ExtractorFactory.getAllThreadsPreferEventExtractors()); - - // And back - extractor = ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(xls))); - assertTrue( - extractor - instanceof ExcelExtractor - ); - extractor.close(); - extractor = ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(xls))); - assertTrue( - extractor.getText().length() > 200 - ); - extractor.close(); - - extractor = ExtractorFactory.createExtractor(OPCPackage.open(xlsx.toString(), PackageAccess.READ)); - assertTrue( - extractor - instanceof XSSFExcelExtractor - ); - extractor.close(); - extractor = ExtractorFactory.createExtractor(OPCPackage.open(xlsx.toString())); - assertTrue( - extractor.getText().length() > 200 - ); - extractor.close(); - } + // PowerPoint + extractor = ExtractorFactory.createExtractor(OPCPackage.open(pptx.toString())); + assertTrue( + extractor + instanceof XSLFPowerPointExtractor + ); + extractor.close(); - /** - * Test embeded docs text extraction. For now, only - * does poifs embeded, but will do ooxml ones - * at some point. - */ - public void testEmbeded() throws Exception { - POIOLE2TextExtractor ext; - POITextExtractor[] embeds; + extractor = ExtractorFactory.createExtractor(OPCPackage.open(pptx.toString())); + assertTrue( + extractor.getText().length() > 120 + ); + extractor.close(); - // No embedings - ext = (POIOLE2TextExtractor) - ExtractorFactory.createExtractor(xls); - embeds = ExtractorFactory.getEmbededDocsTextExtractors(ext); - assertEquals(0, embeds.length); + // Text + try { + ExtractorFactory.createExtractor(OPCPackage.open(txt.toString())); + fail(); + } catch(InvalidOperationException e) { + // Good + } + } - // Excel - ext = (POIOLE2TextExtractor) - ExtractorFactory.createExtractor(xlsEmb); - embeds = ExtractorFactory.getEmbededDocsTextExtractors(ext); + public void testPreferEventBased() throws Exception { + assertFalse(ExtractorFactory.getPreferEventExtractor()); + assertFalse(ExtractorFactory.getThreadPrefersEventExtractors()); + assertNull(ExtractorFactory.getAllThreadsPreferEventExtractors()); - assertEquals(6, embeds.length); - int numWord = 0, numXls = 0, numPpt = 0, numMsg = 0, numWordX; - for(int i=0; i 20); + ExtractorFactory.setThreadPrefersEventExtractors(true); - if(embeds[i] instanceof PowerPointExtractor) numPpt++; - else if(embeds[i] instanceof ExcelExtractor) numXls++; - else if(embeds[i] instanceof WordExtractor) numWord++; - else if(embeds[i] instanceof OutlookTextExtactor) numMsg++; - } - assertEquals(2, numPpt); - assertEquals(2, numXls); - assertEquals(2, numWord); - assertEquals(0, numMsg); + assertTrue(ExtractorFactory.getPreferEventExtractor()); + assertTrue(ExtractorFactory.getThreadPrefersEventExtractors()); + assertNull(ExtractorFactory.getAllThreadsPreferEventExtractors()); - // Word - ext = (POIOLE2TextExtractor) - ExtractorFactory.createExtractor(docEmb); - embeds = ExtractorFactory.getEmbededDocsTextExtractors(ext); + ExtractorFactory.setAllThreadsPreferEventExtractors(false); - numWord = 0; numXls = 0; numPpt = 0; numMsg = 0; - assertEquals(4, embeds.length); - for(int i=0; i 20); - if(embeds[i] instanceof PowerPointExtractor) numPpt++; - else if(embeds[i] instanceof ExcelExtractor) numXls++; - else if(embeds[i] instanceof WordExtractor) numWord++; - else if(embeds[i] instanceof OutlookTextExtactor) numMsg++; - } - assertEquals(1, numPpt); - assertEquals(2, numXls); - assertEquals(1, numWord); - assertEquals(0, numMsg); - - // Word which contains an OOXML file - ext = (POIOLE2TextExtractor) - ExtractorFactory.createExtractor(docEmbOOXML); - embeds = ExtractorFactory.getEmbededDocsTextExtractors(ext); + assertFalse(ExtractorFactory.getPreferEventExtractor()); + assertTrue(ExtractorFactory.getThreadPrefersEventExtractors()); + assertEquals(Boolean.FALSE, ExtractorFactory.getAllThreadsPreferEventExtractors()); - numWord = 0; numXls = 0; numPpt = 0; numMsg = 0; numWordX = 0; - assertEquals(3, embeds.length); - for(int i=0; i 20); - if(embeds[i] instanceof PowerPointExtractor) numPpt++; - else if(embeds[i] instanceof ExcelExtractor) numXls++; - else if(embeds[i] instanceof WordExtractor) numWord++; - else if(embeds[i] instanceof OutlookTextExtactor) numMsg++; - else if(embeds[i] instanceof XWPFWordExtractor) numWordX++; - } - assertEquals(1, numPpt); - assertEquals(1, numXls); - assertEquals(0, numWord); - assertEquals(1, numWordX); - assertEquals(0, numMsg); - - // Outlook - ext = (OutlookTextExtactor) - ExtractorFactory.createExtractor(msgEmb); - embeds = ExtractorFactory.getEmbededDocsTextExtractors(ext); + ExtractorFactory.setAllThreadsPreferEventExtractors(null); - numWord = 0; numXls = 0; numPpt = 0; numMsg = 0; - assertEquals(1, embeds.length); - for(int i=0; i 20); - if(embeds[i] instanceof PowerPointExtractor) numPpt++; - else if(embeds[i] instanceof ExcelExtractor) numXls++; - else if(embeds[i] instanceof WordExtractor) numWord++; - else if(embeds[i] instanceof OutlookTextExtactor) numMsg++; - } - assertEquals(0, numPpt); - assertEquals(0, numXls); - assertEquals(1, numWord); - assertEquals(0, numMsg); - - // Outlook with another outlook file in it - ext = (OutlookTextExtactor) - ExtractorFactory.createExtractor(msgEmbMsg); - embeds = ExtractorFactory.getEmbededDocsTextExtractors(ext); + assertTrue(ExtractorFactory.getPreferEventExtractor()); + assertTrue(ExtractorFactory.getThreadPrefersEventExtractors()); + assertNull(ExtractorFactory.getAllThreadsPreferEventExtractors()); - numWord = 0; numXls = 0; numPpt = 0; numMsg = 0; - assertEquals(1, embeds.length); - for(int i=0; i 20); - if(embeds[i] instanceof PowerPointExtractor) numPpt++; - else if(embeds[i] instanceof ExcelExtractor) numXls++; - else if(embeds[i] instanceof WordExtractor) numWord++; - else if(embeds[i] instanceof OutlookTextExtactor) numMsg++; - } - assertEquals(0, numPpt); - assertEquals(0, numXls); - assertEquals(0, numWord); - assertEquals(1, numMsg); - - // TODO - PowerPoint - // TODO - Publisher - // TODO - Visio - } + // Check we get the right extractors now + POITextExtractor extractor = ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(xls))); + assertTrue( + extractor + instanceof EventBasedExcelExtractor + ); + extractor.close(); + extractor = ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(xls))); + assertTrue( + extractor.getText().length() > 200 + ); + extractor.close(); + + extractor = ExtractorFactory.createExtractor(OPCPackage.open(xlsx.toString(), PackageAccess.READ)); + assertTrue(extractor instanceof XSSFEventBasedExcelExtractor); + extractor.close(); + + extractor = ExtractorFactory.createExtractor(OPCPackage.open(xlsx.toString(), PackageAccess.READ)); + assertTrue( + extractor.getText().length() > 200 + ); + extractor.close(); + + + // Put back to normal + ExtractorFactory.setThreadPrefersEventExtractors(false); + assertFalse(ExtractorFactory.getPreferEventExtractor()); + assertFalse(ExtractorFactory.getThreadPrefersEventExtractors()); + assertNull(ExtractorFactory.getAllThreadsPreferEventExtractors()); + + // And back + extractor = ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(xls))); + assertTrue( + extractor + instanceof ExcelExtractor + ); + extractor.close(); + extractor = ExtractorFactory.createExtractor(new POIFSFileSystem(new FileInputStream(xls))); + assertTrue( + extractor.getText().length() > 200 + ); + extractor.close(); + + extractor = ExtractorFactory.createExtractor(OPCPackage.open(xlsx.toString(), PackageAccess.READ)); + assertTrue( + extractor + instanceof XSSFExcelExtractor + ); + extractor.close(); + extractor = ExtractorFactory.createExtractor(OPCPackage.open(xlsx.toString())); + assertTrue( + extractor.getText().length() > 200 + ); + extractor.close(); + } + + /** + * Test embeded docs text extraction. For now, only + * does poifs embeded, but will do ooxml ones + * at some point. + */ + public void testEmbeded() throws Exception { + POIOLE2TextExtractor ext; + POITextExtractor[] embeds; + + // No embedings + ext = (POIOLE2TextExtractor) + ExtractorFactory.createExtractor(xls); + embeds = ExtractorFactory.getEmbededDocsTextExtractors(ext); + assertEquals(0, embeds.length); + + // Excel + ext = (POIOLE2TextExtractor) + ExtractorFactory.createExtractor(xlsEmb); + embeds = ExtractorFactory.getEmbededDocsTextExtractors(ext); + + assertEquals(6, embeds.length); + int numWord = 0, numXls = 0, numPpt = 0, numMsg = 0, numWordX; + for(int i=0; i 20); + + if(embeds[i] instanceof PowerPointExtractor) numPpt++; + else if(embeds[i] instanceof ExcelExtractor) numXls++; + else if(embeds[i] instanceof WordExtractor) numWord++; + else if(embeds[i] instanceof OutlookTextExtactor) numMsg++; + } + assertEquals(2, numPpt); + assertEquals(2, numXls); + assertEquals(2, numWord); + assertEquals(0, numMsg); + + // Word + ext = (POIOLE2TextExtractor) + ExtractorFactory.createExtractor(docEmb); + embeds = ExtractorFactory.getEmbededDocsTextExtractors(ext); + + numWord = 0; numXls = 0; numPpt = 0; numMsg = 0; + assertEquals(4, embeds.length); + for(int i=0; i 20); + if(embeds[i] instanceof PowerPointExtractor) numPpt++; + else if(embeds[i] instanceof ExcelExtractor) numXls++; + else if(embeds[i] instanceof WordExtractor) numWord++; + else if(embeds[i] instanceof OutlookTextExtactor) numMsg++; + } + assertEquals(1, numPpt); + assertEquals(2, numXls); + assertEquals(1, numWord); + assertEquals(0, numMsg); + + // Word which contains an OOXML file + ext = (POIOLE2TextExtractor) + ExtractorFactory.createExtractor(docEmbOOXML); + embeds = ExtractorFactory.getEmbededDocsTextExtractors(ext); + + numWord = 0; numXls = 0; numPpt = 0; numMsg = 0; numWordX = 0; + assertEquals(3, embeds.length); + for(int i=0; i 20); + if(embeds[i] instanceof PowerPointExtractor) numPpt++; + else if(embeds[i] instanceof ExcelExtractor) numXls++; + else if(embeds[i] instanceof WordExtractor) numWord++; + else if(embeds[i] instanceof OutlookTextExtactor) numMsg++; + else if(embeds[i] instanceof XWPFWordExtractor) numWordX++; + } + assertEquals(1, numPpt); + assertEquals(1, numXls); + assertEquals(0, numWord); + assertEquals(1, numWordX); + assertEquals(0, numMsg); + + // Outlook + ext = (OutlookTextExtactor) + ExtractorFactory.createExtractor(msgEmb); + embeds = ExtractorFactory.getEmbededDocsTextExtractors(ext); + + numWord = 0; numXls = 0; numPpt = 0; numMsg = 0; + assertEquals(1, embeds.length); + for(int i=0; i 20); + if(embeds[i] instanceof PowerPointExtractor) numPpt++; + else if(embeds[i] instanceof ExcelExtractor) numXls++; + else if(embeds[i] instanceof WordExtractor) numWord++; + else if(embeds[i] instanceof OutlookTextExtactor) numMsg++; + } + assertEquals(0, numPpt); + assertEquals(0, numXls); + assertEquals(1, numWord); + assertEquals(0, numMsg); + + // Outlook with another outlook file in it + ext = (OutlookTextExtactor) + ExtractorFactory.createExtractor(msgEmbMsg); + embeds = ExtractorFactory.getEmbededDocsTextExtractors(ext); + + numWord = 0; numXls = 0; numPpt = 0; numMsg = 0; + assertEquals(1, embeds.length); + for(int i=0; i 20); + if(embeds[i] instanceof PowerPointExtractor) numPpt++; + else if(embeds[i] instanceof ExcelExtractor) numXls++; + else if(embeds[i] instanceof WordExtractor) numWord++; + else if(embeds[i] instanceof OutlookTextExtactor) numMsg++; + } + assertEquals(0, numPpt); + assertEquals(0, numXls); + assertEquals(0, numWord); + assertEquals(1, numMsg); + + + // TODO - PowerPoint + // TODO - Publisher + // TODO - Visio + } } From c1a77cab7577f35cd4fe558b8f7ffee99ffd63e8 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Wed, 11 Mar 2015 18:23:47 +0000 Subject: [PATCH 028/301] Remove unused import git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1665956 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/hssf/usermodel/TestUnfixedBugs.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestUnfixedBugs.java b/src/testcases/org/apache/poi/hssf/usermodel/TestUnfixedBugs.java index 261554566..d0efcb094 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestUnfixedBugs.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestUnfixedBugs.java @@ -17,8 +17,6 @@ package org.apache.poi.hssf.usermodel; -import static org.junit.Assert.assertEquals; - import java.io.IOException; import junit.framework.AssertionFailedError; From 51fdb9434dbe4744b439bd8e55386ce21fc76d9b Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Wed, 11 Mar 2015 18:24:32 +0000 Subject: [PATCH 029/301] Add testcase which verifies that bug 56820 was solved by some other fix already git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1665957 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xssf/usermodel/TestXSSFBugs.java | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index 6eaa3f14d..ae43d8149 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -2186,4 +2186,80 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { wb.removeSheetAt(sn); } } + + /** + * Sums 2 plus the cell at the left, indirectly to avoid reference + * problems when deleting columns, conditionally to stop recursion + */ + private static final String FORMULA1 = + "IF( INDIRECT( ADDRESS( ROW(), COLUMN()-1 ) ) = 0, 0," + + "INDIRECT( ADDRESS( ROW(), COLUMN()-1 ) ) ) + 2"; + + /** + * Sums 2 plus the upper cell, indirectly to avoid reference + * problems when deleting rows, conditionally to stop recursion + */ + private static final String FORMULA2 = + "IF( INDIRECT( ADDRESS( ROW()-1, COLUMN() ) ) = 0, 0," + + "INDIRECT( ADDRESS( ROW()-1, COLUMN() ) ) ) + 2"; + + /** + * Expected: + + * [ 0][ 2][ 4] + * @throws IOException + */ + @Test + public void testBug56820_Formula1() throws IOException { + Workbook wb = new XSSFWorkbook(); + try { + FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); + Sheet sh = wb.createSheet(); + + sh.createRow(0).createCell(0).setCellValue(0.0d); + Cell formulaCell1 = sh.getRow(0).createCell(1); + Cell formulaCell2 = sh.getRow(0).createCell(2); + formulaCell1.setCellFormula(FORMULA1); + formulaCell2.setCellFormula(FORMULA1); + + double A1 = evaluator.evaluate(formulaCell1).getNumberValue(); + double A2 = evaluator.evaluate(formulaCell2).getNumberValue(); + + assertEquals(2, A1, 0); + assertEquals(4, A2, 0); //<-- FAILS EXPECTATIONS + } finally { + wb.close(); + } + } + + /** + * Expected: + + * [ 0] <- number + * [ 2] <- formula + * [ 4] <- formula + * @throws IOException + */ + @Test + public void testBug56820_Formula2() throws IOException { + Workbook wb = new XSSFWorkbook(); + try { + FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator(); + Sheet sh = wb.createSheet(); + + sh.createRow(0).createCell(0).setCellValue(0.0d); + Cell formulaCell1 = sh.createRow(1).createCell(0); + Cell formulaCell2 = sh.createRow(2).createCell(0); + formulaCell1.setCellFormula(FORMULA2); + formulaCell2.setCellFormula(FORMULA2); + + double A1 = evaluator.evaluate(formulaCell1).getNumberValue(); + double A2 = evaluator.evaluate(formulaCell2).getNumberValue(); //<-- FAILS EVALUATION + + assertEquals(2, A1, 0); + assertEquals(4, A2, 0); + } finally { + wb.close(); + } + } } From b7c14b3a8f633ecefd37d9e037b7619dd1ca3d56 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Wed, 11 Mar 2015 18:24:49 +0000 Subject: [PATCH 030/301] Bug 56467: Fix cloning of sheets with pictures git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1665959 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xssf/usermodel/XSSFWorkbook.java | 10 +++++-- .../poi/xssf/usermodel/TestXSSFBugs.java | 28 +++++++++++++++++++ 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java index 41a6d613f..499c3db08 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java @@ -576,13 +576,17 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable srcRels = srcSheet.createDrawingPatriarch().getRelations(); for (POIXMLDocumentPart rel : srcRels) { PackageRelationship relation = rel.getPackageRelationship(); - clonedSheet - .createDrawingPatriarch() - .getPackagePart() + + clonedDg.addRelation(relation.getId(), rel); + + clonedDg + .getPackagePart() .addRelationship(relation.getTargetURI(), relation.getTargetMode(), relation.getRelationshipType(), relation.getId()); } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index ae43d8149..ad9c3ad6f 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -31,6 +31,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; +import java.io.OutputStream; import java.util.Calendar; import java.util.List; @@ -2262,4 +2263,31 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { wb.close(); } } + + @Test + public void test56467() throws IOException { + Workbook wb = XSSFTestDataSamples.openSampleWorkbook("picture.xlsx"); + try { + Sheet orig = wb.getSheetAt(0); + assertNotNull(orig); + + Sheet sheet = wb.cloneSheet(0); + Drawing drawing = sheet.createDrawingPatriarch(); + for (XSSFShape shape : ((XSSFDrawing) drawing).getShapes()) { + if (shape instanceof XSSFPicture) { + XSSFPictureData pictureData = ((XSSFPicture) shape).getPictureData(); + assertNotNull(pictureData); + } + } + +// OutputStream out = new FileOutputStream("/tmp/56467.xls"); +// try { +// wb.write(out); +// } finally { +// out.close(); +// } + } finally { + wb.close(); + } + } } From d78a14b232aca9b80ff8ece17399d1d4b701b594 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Wed, 11 Mar 2015 19:07:13 +0000 Subject: [PATCH 031/301] Fix inconsistent indents git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1665970 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/TestAllFiles.java | 322 +++++++++--------- 1 file changed, 161 insertions(+), 161 deletions(-) diff --git a/src/integrationtest/org/apache/poi/TestAllFiles.java b/src/integrationtest/org/apache/poi/TestAllFiles.java index d0439b40f..f9782400d 100644 --- a/src/integrationtest/org/apache/poi/TestAllFiles.java +++ b/src/integrationtest/org/apache/poi/TestAllFiles.java @@ -65,83 +65,83 @@ import org.junit.runners.Parameterized.Parameters; */ @RunWith(Parameterized.class) public class TestAllFiles { - private static final File ROOT_DIR = new File("test-data"); + private static final File ROOT_DIR = new File("test-data"); // map file extensions to the actual mappers - private static final Map HANDLERS = new HashMap(); - static { - // Excel - HANDLERS.put(".xls", new HSSFFileHandler()); - HANDLERS.put(".xlsx", new XSSFFileHandler()); - HANDLERS.put(".xlsm", new XSSFFileHandler()); - HANDLERS.put(".xltx", new XSSFFileHandler()); - HANDLERS.put(".xlsb", new XSSFFileHandler()); - - // Word - HANDLERS.put(".doc", new HWPFFileHandler()); - HANDLERS.put(".docx", new XWPFFileHandler()); - HANDLERS.put(".dotx", new XWPFFileHandler()); - HANDLERS.put(".docm", new XWPFFileHandler()); - HANDLERS.put(".ooxml", new XWPFFileHandler()); // OPCPackage + private static final Map HANDLERS = new HashMap(); + static { + // Excel + HANDLERS.put(".xls", new HSSFFileHandler()); + HANDLERS.put(".xlsx", new XSSFFileHandler()); + HANDLERS.put(".xlsm", new XSSFFileHandler()); + HANDLERS.put(".xltx", new XSSFFileHandler()); + HANDLERS.put(".xlsb", new XSSFFileHandler()); - // Powerpoint - HANDLERS.put(".ppt", new HSLFFileHandler()); - HANDLERS.put(".pptx", new XSLFFileHandler()); - HANDLERS.put(".pptm", new XSLFFileHandler()); - HANDLERS.put(".ppsm", new XSLFFileHandler()); - HANDLERS.put(".ppsx", new XSLFFileHandler()); - HANDLERS.put(".thmx", new XSLFFileHandler()); + // Word + HANDLERS.put(".doc", new HWPFFileHandler()); + HANDLERS.put(".docx", new XWPFFileHandler()); + HANDLERS.put(".dotx", new XWPFFileHandler()); + HANDLERS.put(".docm", new XWPFFileHandler()); + HANDLERS.put(".ooxml", new XWPFFileHandler()); // OPCPackage - // Outlook - HANDLERS.put(".msg", new HSMFFileHandler()); - - // Publisher - HANDLERS.put(".pub", new HPBFFileHandler()); + // Powerpoint + HANDLERS.put(".ppt", new HSLFFileHandler()); + HANDLERS.put(".pptx", new XSLFFileHandler()); + HANDLERS.put(".pptm", new XSLFFileHandler()); + HANDLERS.put(".ppsm", new XSLFFileHandler()); + HANDLERS.put(".ppsx", new XSLFFileHandler()); + HANDLERS.put(".thmx", new XSLFFileHandler()); - // Visio - HANDLERS.put(".vsd", new HDGFFileHandler()); - - // POIFS - HANDLERS.put(".ole2", new POIFSFileHandler()); + // Outlook + HANDLERS.put(".msg", new HSMFFileHandler()); - // Microsoft Admin Template? - HANDLERS.put(".adm", new HPSFFileHandler()); + // Publisher + HANDLERS.put(".pub", new HPBFFileHandler()); - // Microsoft TNEF - HANDLERS.put(".dat", new HMEFFileHandler()); - - // TODO: are these readable by some of the formats? - HANDLERS.put(".shw", new NullFileHandler()); - HANDLERS.put(".zvi", new NullFileHandler()); - HANDLERS.put(".mpp", new NullFileHandler()); - HANDLERS.put(".qwp", new NullFileHandler()); - HANDLERS.put(".wps", new NullFileHandler()); - HANDLERS.put(".bin", new NullFileHandler()); - HANDLERS.put(".xps", new NullFileHandler()); - HANDLERS.put(".sldprt", new NullFileHandler()); - HANDLERS.put(".mdb", new NullFileHandler()); - HANDLERS.put(".vml", new NullFileHandler()); + // Visio + HANDLERS.put(".vsd", new HDGFFileHandler()); - // ignore some file types, images, other formats, ... - HANDLERS.put(".txt", new NullFileHandler()); - HANDLERS.put(".pdf", new NullFileHandler()); - HANDLERS.put(".rtf", new NullFileHandler()); - HANDLERS.put(".gif", new NullFileHandler()); - HANDLERS.put(".html", new NullFileHandler()); - HANDLERS.put(".png", new NullFileHandler()); - HANDLERS.put(".wmf", new NullFileHandler()); - HANDLERS.put(".emf", new NullFileHandler()); - HANDLERS.put(".dib", new NullFileHandler()); - HANDLERS.put(".svg", new NullFileHandler()); - HANDLERS.put(".pict", new NullFileHandler()); - HANDLERS.put(".jpg", new NullFileHandler()); - HANDLERS.put(".wav", new NullFileHandler()); - HANDLERS.put(".pfx", new NullFileHandler()); - HANDLERS.put(".xml", new NullFileHandler()); - HANDLERS.put(".csv", new NullFileHandler()); - - // map some files without extension - HANDLERS.put("spreadsheet/BigSSTRecord", new NullFileHandler()); + // POIFS + HANDLERS.put(".ole2", new POIFSFileHandler()); + + // Microsoft Admin Template? + HANDLERS.put(".adm", new HPSFFileHandler()); + + // Microsoft TNEF + HANDLERS.put(".dat", new HMEFFileHandler()); + + // TODO: are these readable by some of the formats? + HANDLERS.put(".shw", new NullFileHandler()); + HANDLERS.put(".zvi", new NullFileHandler()); + HANDLERS.put(".mpp", new NullFileHandler()); + HANDLERS.put(".qwp", new NullFileHandler()); + HANDLERS.put(".wps", new NullFileHandler()); + HANDLERS.put(".bin", new NullFileHandler()); + HANDLERS.put(".xps", new NullFileHandler()); + HANDLERS.put(".sldprt", new NullFileHandler()); + HANDLERS.put(".mdb", new NullFileHandler()); + HANDLERS.put(".vml", new NullFileHandler()); + + // ignore some file types, images, other formats, ... + HANDLERS.put(".txt", new NullFileHandler()); + HANDLERS.put(".pdf", new NullFileHandler()); + HANDLERS.put(".rtf", new NullFileHandler()); + HANDLERS.put(".gif", new NullFileHandler()); + HANDLERS.put(".html", new NullFileHandler()); + HANDLERS.put(".png", new NullFileHandler()); + HANDLERS.put(".wmf", new NullFileHandler()); + HANDLERS.put(".emf", new NullFileHandler()); + HANDLERS.put(".dib", new NullFileHandler()); + HANDLERS.put(".svg", new NullFileHandler()); + HANDLERS.put(".pict", new NullFileHandler()); + HANDLERS.put(".jpg", new NullFileHandler()); + HANDLERS.put(".wav", new NullFileHandler()); + HANDLERS.put(".pfx", new NullFileHandler()); + HANDLERS.put(".xml", new NullFileHandler()); + HANDLERS.put(".csv", new NullFileHandler()); + + // map some files without extension + HANDLERS.put("spreadsheet/BigSSTRecord", new NullFileHandler()); HANDLERS.put("spreadsheet/BigSSTRecord2", new NullFileHandler()); HANDLERS.put("spreadsheet/BigSSTRecord2CR1", new NullFileHandler()); HANDLERS.put("spreadsheet/BigSSTRecord2CR2", new NullFileHandler()); @@ -151,68 +151,68 @@ public class TestAllFiles { HANDLERS.put("spreadsheet/BigSSTRecord2CR6", new NullFileHandler()); HANDLERS.put("spreadsheet/BigSSTRecord2CR7", new NullFileHandler()); HANDLERS.put("spreadsheet/BigSSTRecordCR", new NullFileHandler()); - HANDLERS.put("spreadsheet/test_properties1", new NullFileHandler()); - } + HANDLERS.put("spreadsheet/test_properties1", new NullFileHandler()); + } - private static final Set EXPECTED_FAILURES = new HashSet(); - static { - // password protected files - EXPECTED_FAILURES.add("spreadsheet/password.xls"); - EXPECTED_FAILURES.add("spreadsheet/51832.xls"); - EXPECTED_FAILURES.add("document/PasswordProtected.doc"); - EXPECTED_FAILURES.add("slideshow/Password_Protected-hello.ppt"); - EXPECTED_FAILURES.add("slideshow/Password_Protected-56-hello.ppt"); - EXPECTED_FAILURES.add("slideshow/Password_Protected-np-hello.ppt"); - EXPECTED_FAILURES.add("slideshow/cryptoapi-proc2356.ppt"); - //EXPECTED_FAILURES.add("document/bug53475-password-is-pass.docx"); - //EXPECTED_FAILURES.add("document/bug53475-password-is-solrcell.docx"); - EXPECTED_FAILURES.add("spreadsheet/xor-encryption-abc.xls"); + private static final Set EXPECTED_FAILURES = new HashSet(); + static { + // password protected files + EXPECTED_FAILURES.add("spreadsheet/password.xls"); + EXPECTED_FAILURES.add("spreadsheet/51832.xls"); + EXPECTED_FAILURES.add("document/PasswordProtected.doc"); + EXPECTED_FAILURES.add("slideshow/Password_Protected-hello.ppt"); + EXPECTED_FAILURES.add("slideshow/Password_Protected-56-hello.ppt"); + EXPECTED_FAILURES.add("slideshow/Password_Protected-np-hello.ppt"); + EXPECTED_FAILURES.add("slideshow/cryptoapi-proc2356.ppt"); + //EXPECTED_FAILURES.add("document/bug53475-password-is-pass.docx"); + //EXPECTED_FAILURES.add("document/bug53475-password-is-solrcell.docx"); + EXPECTED_FAILURES.add("spreadsheet/xor-encryption-abc.xls"); EXPECTED_FAILURES.add("spreadsheet/35897-type4.xls"); //EXPECTED_FAILURES.add("poifs/protect.xlsx"); //EXPECTED_FAILURES.add("poifs/protected_sha512.xlsx"); //EXPECTED_FAILURES.add("poifs/extenxls_pwd123.xlsx"); //EXPECTED_FAILURES.add("poifs/protected_agile.docx"); - - // TODO: fails XMLExportTest, is this ok? - EXPECTED_FAILURES.add("spreadsheet/CustomXMLMapping-singleattributenamespace.xlsx"); - EXPECTED_FAILURES.add("spreadsheet/55864.xlsx"); - - // TODO: these fail now with some NPE/file read error because we now try to compute every value via Cell.toString()! - EXPECTED_FAILURES.add("spreadsheet/44958.xls"); - EXPECTED_FAILURES.add("spreadsheet/44958_1.xls"); - EXPECTED_FAILURES.add("spreadsheet/testArraysAndTables.xls"); - // TODO: good to ignore? - EXPECTED_FAILURES.add("spreadsheet/sample-beta.xlsx"); - EXPECTED_FAILURES.add("spreadsheet/49931.xls"); - EXPECTED_FAILURES.add("openxml4j/ContentTypeHasParameters.ooxml"); + // TODO: fails XMLExportTest, is this ok? + EXPECTED_FAILURES.add("spreadsheet/CustomXMLMapping-singleattributenamespace.xlsx"); + EXPECTED_FAILURES.add("spreadsheet/55864.xlsx"); - // This is actually a spreadsheet! - EXPECTED_FAILURES.add("hpsf/TestRobert_Flaherty.doc"); - - // some files that are broken, Excel 5.0/95, Word 95, ... - EXPECTED_FAILURES.add("spreadsheet/43493.xls"); - EXPECTED_FAILURES.add("spreadsheet/46904.xls"); - EXPECTED_FAILURES.add("document/56880.doc"); - EXPECTED_FAILURES.add("document/Bug49933.doc"); - EXPECTED_FAILURES.add("document/Bug50955.doc"); - EXPECTED_FAILURES.add("document/Bug51944.doc"); - EXPECTED_FAILURES.add("document/Word6.doc"); - EXPECTED_FAILURES.add("document/Word6_sections.doc"); - EXPECTED_FAILURES.add("document/Word6_sections2.doc"); - EXPECTED_FAILURES.add("document/Word95.doc"); - EXPECTED_FAILURES.add("document/word95err.doc"); - EXPECTED_FAILURES.add("hpsf/TestMickey.doc"); - EXPECTED_FAILURES.add("slideshow/PPT95.ppt"); - EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_DCTermsNamespaceLimitedUseFAIL.docx"); - EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_DoNotUseCompatibilityMarkupFAIL.docx"); - EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_LimitedXSITypeAttribute_NotPresentFAIL.docx"); - EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_LimitedXSITypeAttribute_PresentWithUnauthorizedValueFAIL.docx"); - EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_OnlyOneCorePropertiesPartFAIL.docx"); - EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_UnauthorizedXMLLangAttributeFAIL.docx"); - EXPECTED_FAILURES.add("openxml4j/OPCCompliance_DerivedPartNameFAIL.docx"); - EXPECTED_FAILURES.add("spreadsheet/54764-2.xlsx"); // see TestXSSFBugs.bug54764() - EXPECTED_FAILURES.add("spreadsheet/54764.xlsx"); // see TestXSSFBugs.bug54764() + // TODO: these fail now with some NPE/file read error because we now try to compute every value via Cell.toString()! + EXPECTED_FAILURES.add("spreadsheet/44958.xls"); + EXPECTED_FAILURES.add("spreadsheet/44958_1.xls"); + EXPECTED_FAILURES.add("spreadsheet/testArraysAndTables.xls"); + + // TODO: good to ignore? + EXPECTED_FAILURES.add("spreadsheet/sample-beta.xlsx"); + EXPECTED_FAILURES.add("spreadsheet/49931.xls"); + EXPECTED_FAILURES.add("openxml4j/ContentTypeHasParameters.ooxml"); + + // This is actually a spreadsheet! + EXPECTED_FAILURES.add("hpsf/TestRobert_Flaherty.doc"); + + // some files that are broken, Excel 5.0/95, Word 95, ... + EXPECTED_FAILURES.add("spreadsheet/43493.xls"); + EXPECTED_FAILURES.add("spreadsheet/46904.xls"); + EXPECTED_FAILURES.add("document/56880.doc"); + EXPECTED_FAILURES.add("document/Bug49933.doc"); + EXPECTED_FAILURES.add("document/Bug50955.doc"); + EXPECTED_FAILURES.add("document/Bug51944.doc"); + EXPECTED_FAILURES.add("document/Word6.doc"); + EXPECTED_FAILURES.add("document/Word6_sections.doc"); + EXPECTED_FAILURES.add("document/Word6_sections2.doc"); + EXPECTED_FAILURES.add("document/Word95.doc"); + EXPECTED_FAILURES.add("document/word95err.doc"); + EXPECTED_FAILURES.add("hpsf/TestMickey.doc"); + EXPECTED_FAILURES.add("slideshow/PPT95.ppt"); + EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_DCTermsNamespaceLimitedUseFAIL.docx"); + EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_DoNotUseCompatibilityMarkupFAIL.docx"); + EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_LimitedXSITypeAttribute_NotPresentFAIL.docx"); + EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_LimitedXSITypeAttribute_PresentWithUnauthorizedValueFAIL.docx"); + EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_OnlyOneCorePropertiesPartFAIL.docx"); + EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_UnauthorizedXMLLangAttributeFAIL.docx"); + EXPECTED_FAILURES.add("openxml4j/OPCCompliance_DerivedPartNameFAIL.docx"); + EXPECTED_FAILURES.add("spreadsheet/54764-2.xlsx"); // see TestXSSFBugs.bug54764() + EXPECTED_FAILURES.add("spreadsheet/54764.xlsx"); // see TestXSSFBugs.bug54764() EXPECTED_FAILURES.add("spreadsheet/Simple.xlsb"); EXPECTED_FAILURES.add("spreadsheet/testEXCEL_2.xls"); EXPECTED_FAILURES.add("spreadsheet/testEXCEL_3.xls"); @@ -220,19 +220,19 @@ public class TestAllFiles { EXPECTED_FAILURES.add("spreadsheet/testEXCEL_5.xls"); EXPECTED_FAILURES.add("spreadsheet/testEXCEL_95.xls"); - // non-TNEF files - EXPECTED_FAILURES.add("ddf/Container.dat"); - EXPECTED_FAILURES.add("ddf/47143.dat"); - } - + // non-TNEF files + EXPECTED_FAILURES.add("ddf/Container.dat"); + EXPECTED_FAILURES.add("ddf/47143.dat"); + } + @Parameters(name="{index}: {0} using {1}") public static Iterable files() { DirectoryScanner scanner = new DirectoryScanner(); scanner.setBasedir(ROOT_DIR); scanner.setExcludes(new String[] { "**/.svn/**" }); - + scanner.scan(); - + System.out.println("Handling " + scanner.getIncludedFiles().length + " files"); List files = new ArrayList(); @@ -240,31 +240,31 @@ public class TestAllFiles { file = file.replace('\\', '/'); // ... failures/handlers lookup doesn't work on windows otherwise files.add(new Object[] { file, HANDLERS.get(getExtension(file)) }); } - + return files; - } - + } + @Parameter(value=0) public String file; - + @Parameter(value=1) public FileHandler handler; - + @Test public void testAllFiles() throws Exception { - assertNotNull("Unknown file extension for file: " + file + ": " + getExtension(file), handler); - File inputFile = new File(ROOT_DIR, file); - - try { + assertNotNull("Unknown file extension for file: " + file + ": " + getExtension(file), handler); + File inputFile = new File(ROOT_DIR, file); + + try { InputStream stream = new BufferedInputStream(new FileInputStream(inputFile),100); - try { - handler.handleFile(stream); - - assertFalse("Expected to fail for file " + file + " and handler " + handler + ", but did not fail!", - EXPECTED_FAILURES.contains(file)); - } finally { - stream.close(); - } + try { + handler.handleFile(stream); + + assertFalse("Expected to fail for file " + file + " and handler " + handler + ", but did not fail!", + EXPECTED_FAILURES.contains(file)); + } finally { + stream.close(); + } handler.handleExtracting(inputFile); } catch (Exception e) { @@ -273,24 +273,24 @@ public class TestAllFiles { throw new Exception("While handling " + file, e); } } - } + } - private static String getExtension(String file) { - int pos = file.lastIndexOf('.'); - if(pos == -1 || pos == file.length()-1) { - return file; - } - - return file.substring(pos); - } + private static String getExtension(String file) { + int pos = file.lastIndexOf('.'); + if(pos == -1 || pos == file.length()-1) { + return file; + } - private static class NullFileHandler implements FileHandler { - @Override + return file.substring(pos); + } + + private static class NullFileHandler implements FileHandler { + @Override public void handleFile(InputStream stream) throws Exception { - } + } - @Override + @Override public void handleExtracting(File file) throws Exception { } - } + } } From 2879bc1b16a1e8a5c3eb4bcb110509ae14704306 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Wed, 11 Mar 2015 19:08:59 +0000 Subject: [PATCH 032/301] No support as yet for the OOXML visio files, so have these ignored git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1665971 13f79535-47bb-0310-9956-ffa450edef68 --- src/integrationtest/org/apache/poi/TestAllFiles.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/integrationtest/org/apache/poi/TestAllFiles.java b/src/integrationtest/org/apache/poi/TestAllFiles.java index f9782400d..25e837b92 100644 --- a/src/integrationtest/org/apache/poi/TestAllFiles.java +++ b/src/integrationtest/org/apache/poi/TestAllFiles.java @@ -98,8 +98,16 @@ public class TestAllFiles { // Publisher HANDLERS.put(".pub", new HPBFFileHandler()); - // Visio + // Visio - binary HANDLERS.put(".vsd", new HDGFFileHandler()); + + // Visio - ooxml (currently unsupported) + HANDLERS.put(".vsdm", new NullFileHandler()); + HANDLERS.put(".vsdx", new NullFileHandler()); + HANDLERS.put(".vssm", new NullFileHandler()); + HANDLERS.put(".vssx", new NullFileHandler()); + HANDLERS.put(".vstm", new NullFileHandler()); + HANDLERS.put(".vstx", new NullFileHandler()); // POIFS HANDLERS.put(".ole2", new POIFSFileHandler()); From 091f06330efbdfb804eaca8ac7708bd67590f236 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Wed, 11 Mar 2015 19:53:26 +0000 Subject: [PATCH 033/301] Add helper test to verify that vsdx cannot even be loaded by POIXMLDocument curently. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1665984 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/stress/POIXMLDocumentHandler.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/integrationtest/org/apache/poi/stress/POIXMLDocumentHandler.java b/src/integrationtest/org/apache/poi/stress/POIXMLDocumentHandler.java index 103bb9be7..c72027235 100644 --- a/src/integrationtest/org/apache/poi/stress/POIXMLDocumentHandler.java +++ b/src/integrationtest/org/apache/poi/stress/POIXMLDocumentHandler.java @@ -20,9 +20,16 @@ import static org.junit.Assert.assertNotNull; import java.io.IOException; import java.io.InputStream; +import java.util.List; import org.apache.poi.POIXMLDocument; +import org.apache.poi.openxml4j.exceptions.OpenXML4JException; +import org.apache.poi.openxml4j.opc.OPCPackage; +import org.apache.poi.openxml4j.opc.PackageAccess; +import org.apache.poi.openxml4j.opc.PackagePart; import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.junit.Ignore; +import org.junit.Test; public final class POIXMLDocumentHandler { protected void handlePOIXMLDocument(POIXMLDocument doc) throws Exception { @@ -43,4 +50,26 @@ public final class POIXMLDocumentHandler { } return false; } + + // a test-case to test this locally without executing the full TestAllFiles + @Ignore("POIXMLDocument cannot handle this Visio file currently...") + @Test + public void test() throws Exception { + OPCPackage pkg = OPCPackage.open("test-data/diagram/test.vsdx", PackageAccess.READ); + try { + handlePOIXMLDocument(new TestPOIXMLDocument(pkg)); + } finally { + pkg.close(); + } + } + + private final static class TestPOIXMLDocument extends POIXMLDocument { + public TestPOIXMLDocument(OPCPackage pkg) { + super(pkg); + } + + public List getAllEmbedds() throws OpenXML4JException { + return null; + } + } } From 97ce24a4407e2295b78c1348bf1d51c68a19be9b Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Wed, 11 Mar 2015 20:39:18 +0000 Subject: [PATCH 034/301] Verify that document from bug 56392 works git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1666003 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/xwpf/usermodel/TestXWPFBugs.java | 13 ++++++++++++- test-data/document/56392.docx | Bin 0 -> 11211 bytes 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 test-data/document/56392.docx diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java index bded4e48c..053b611e3 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java @@ -16,10 +16,14 @@ ==================================================================== */ package org.apache.poi.xwpf.usermodel; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import java.io.FileInputStream; import java.io.IOException; +import org.apache.poi.openxml4j.exceptions.OpenXML4JException; +import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.xwpf.XWPFTestDataSamples; import org.apache.poi.xwpf.usermodel.XWPFRun.FontCharRange; import org.junit.Test; @@ -77,4 +81,11 @@ public class TestXWPFBugs { } } } + + + @Test + public void test56392() throws IOException, OpenXML4JException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("56392.docx"); + assertNotNull(doc); + } } diff --git a/test-data/document/56392.docx b/test-data/document/56392.docx new file mode 100644 index 0000000000000000000000000000000000000000..89a71aed2fdbf90c860a15d680680902acbb9686 GIT binary patch literal 11211 zcmbulWmp{B)-8-XAy^3RPLQC%CAho0L*wr5?(XjH?lkTaf(Cb&V3+Lo-Dl_I`_B1s z@9d}Q>FTO6tJheo)~q?#kP!!mKm&n+fdQ#eS^f(0o58<**S0kT*wNAc+E>I%ii7hZ z1fD&k3!JV3sDpWmARwm#8NbZW zqDwp!mGcsjwjW^Kp#0|9a(cowIo$`a)QNeljINKT3ArwMF)_eC+s$r*8_sb1D{F4t zU3L0gpTPGiQ+?Qwt&WXZSbX!}P~`DNQh|M%%&ZGyUPEXGJ(wl6)JbUdgSK_3NrV`u zviVZ-_0)R{ECDgu6-oHJ28Cq$2Ql@BY|yvRQ0;-jbMnnN33e5n0@u|xZTO8|Nw@I7 z+UPhRSyAxTf~mLdKerL*?>7EV*Be;rJ6IT6+W%_l{|tk;NvS@1guyenP%5WXM?Y9e ziy_cx#|_^RaQ``ryxlAmMhi}^57<+pEB!gbUNt%i#^4Cmgw~g-Sx2qOZKAxZ@ifoWTz+UxI&jbrCEIkqj*F{ z(hqymJp$ca(k3L9PW6uZ(XG}o?me2RUK{D{m7C|}=uJ_bUX)Kn5&wj73Yy5b#X!dZ zcRKA;{DKV_1-~2r08WC@n?uXxy@;Y=q6pMI55kp?Z5osdpV&82&Z6b2E_(PR)~n?^ zkQ^}Dg?9T-%he2){cLqaGEI6(nL16w2aT(EaO7}A!PJ6*piPDPE$kNLKhwJl3dDaz z4?wwH?BY&=OnrhFBsM~7j8-L^r-zTAJ*x}VyYm^*3d4ARN2bq18k9w+VJZctf~ zH+*PXa21O-EfH1!j=k$8){zR=_r7sSkA6HGj>S^$ZtRNDin(F=X@M|)s_+1aW?6Z| z1xb(zr`rzPS*ZFlvVPaK_HfWsM)!;B>>1>9nm4X#ApRTI=znu)TJeTwleG}iFD>Q>DaE}P~rqrH^qjh|z0E?e{YsEOqfZ~Iofr42or^&BjjM{PUM2(T@b zB6D%h)-FMa{qd`kdWWKSsA+?^*R&L1S8Q;ta@=8JMK;W zT;@aG2#=HwQ}w5Pj11xnsT7Kbd6vdvhl*DVzI!<|2rr6pG>=+0457|UjS;3u=tdd* zp*|h&$39B6+L(r=t8B=aH%TEz?bmaLwKMCP0Q}J}Q70(Tu6!KNlu-er<9k-tPTOB- zyB&jnz5ba_=qR%|uAyXRz!XY6sdD3L7Pac4-NX#j>r-0Vpo1{QrO7CXG+Zn(` z${=7!rva7Pq&G!)(R5TE#)tT?CVT*t&z5E({IvmPRtW{oi@CwnWFMRMLcvALA1lAj ze<&C}CAO$E@S8(B;>8iG;JEwr(a?21q{UTBVMJ+p>TqpvJga1s_Q0#jEB!r=aZogCM`r|L+eYS#~)m+`Q zki(utfZW!>JkSG=;3N5BA>G8it*OIc@5mxz#uPMKiHoaZ5diZC`hrK_X!V|V)11D< zLWcRC+DeA+)g_QcJR@Iy;5I(6{63sIwtzQ|OibrEY+Dy5<{@rnP9R6vnT%|^1i-ef zt=1%A;(y&r+p`t!&z|ZaUx8oEkg6iH37klyxn94;a-C37D6kUMjg=?@-(mg>oUTXug#^f`zyPslZl>^w=l2MtQo)PrcKyXuGotetp z%Dz(ybv>vSbp@=h-H?U zr|A#~EKlki@(mZ8BjO2g?G8AZ;$A^Cm`)MLpcI10*HKh+3LGhfgn zMh${&Mf6uJy);%KGyGE!6(8Vs*=#KxwqdiN3+nxOcsGGef?MRWAFM z9F#fxp!uz5a=mTQ%p_Tz|=$lrCrl4LW6!OkIR z91bar?mLty&Yk_i9Z&aKXkWRsUB{Q?+taeqzGFWpo#(s=*{xtQ2vC38y=a$jpu9WU zmw07u*4(mYcLSedNkl3Yy8AKM8Tx>POh0Cyn;1o9)H7^P{y2BUJZtK-NP(7#m&8pc z!#PW9wBWsfzw7ddk7GuB!rSKCdd-$vR0u;&mShc!W_qAGJky!~cqJ}dB#`&B0ZAn# z!;lFNsEm7Tyc5PBh<;_5qOs&$E!7eqHhJPgLFPYCYcmFQ#k(T z(;Ewzr5J2ZXW^XhC@9mJrzC19V(;{zvS@k^A^9d98+Xx19@jPjm65~UwJECDQ~$4C6m)3 zkaTsBeuW)f2JwP8TS)5JZxBU={9;JOUN%O#9Djq7b-{U%P#O{U%se=r%qX^Sj?ZH0 z!X*V>R~w8D08Tnd1FIc1$^HG;^3zu|JVk1Ao>~uiEsMCT>po{jPJ7roDdW7382kPp z;%|-hNf37aLMzxUlxd!MXi=4)lb&x{^K%Eap$jY%#y)I_ekIeAP7%`1Dr+Wu2s1VG zCtbbml$n(1(j2)l8%$<6s1`!xoUswtEPE3ZKO=Mf%eMO=t>kWIt$w zFJ6y(k)mBL$(Y6DcBW_KzFjy%#E>G7xZk5!p!}!XO%Hlqm^fH*+!JX77tWizWIzwM zbf5m@Hxu*vg*&6OwYkf$9U*$SqenYF7>{}gO!da-%CUN+JP1a^cx!rEB5>$}&d zj`1EAetzPwY_tAZrKGLs?9Em=JDBY#ldQ%ftD8qa4^4%nnB`fRbvJXzCq5rU7-8j| zvP?FxU?KHd>PSCl{V%Zwrpo(+lS-N?X->PTfl6Pe%`U+evrgWP^H>cyK}dKijb0Ax z4y&Z=LqRsHf|EAp3HzEDAC~ubhI=|ADYZ=6*M5dWF*m}qM^AfCt%#R)z}~O7fQ&Y! zmx;R-rJqp{ykC*p@>KmObbJM&SH`w>NT=?PA-6iKK*1<)m7K%7CN6TSCaC=(E%d2m zyg;SW+52WkWnWOFy=%NUzJ@iJnk^e%+e}&hu5>7P`^F%fx3J@>y@4De2kkM&NR%SJ zwsgl~H63rw!?U&$311?ZBfV+MTS9Z84^NX)$@YhLpD+{etFfI}k$3S(cyqvE_Dd}2 zdk?z~GR;N**T2#sECc|n&RZGb*Y=+?&VRk4+nX3#7}EWmEJSV0xQnHmq zgT@#06T^9rIE370W|bv4mnF#H*k#SCYjP~1@z)baRbFQ#RWP$6YCL8}E6!;;sxw&4!_y)Dy=alngwrjcBlzrMr&fZM- ztD_{!P9FPMe3^MYFkIb*>TZ)Pd?%oVAz@&FFE(OXyeEy@Q7#v{o>@pa*`g>JBW?&J!>@TfM82%;ryQLA5hBR|Q|wRw|S#yq%2izkzky>ECBI2mGJ?ajc3g(30&nM51!0V@sHm3UmMdFO54N(I29;6MDL3(-Vs3c80mJ z0(NKboD}#qw`}_(?)iH##*YMCHY_2Q-X*j(xDP18Y%vVkD^wKORgnyRP#SS)jLrfe zh{@h(k(TH<+z9<5vf$RNF!0@66RL6W`Vws+pSa-jhFP&Oh;f~~FJgd>=9Qf%vIs{h zsS1r?a@KZPe83uMqFfo>tlW86<%TZOOu$~s1JqAG+DXInA7In(+$pK)Cv%euF>H&vVi{KX*?Zef2E zuae898dQeZ^sH(kxEs(s;$a5~=F8Zd@N4y?9}VMj10dPLBe-WNrfSZBgfz0@w=JL9 zd%|#I!*kxTsi~b}#~0V#+&UaW??T3Y$Apy^f3I~s#DJ}XvO}Z2aTqOB7Mv!lbLxP~ zDzh_Nb^01b;f9^5RhXGVerVY2;%aF#T~x)xake2_FP%-e7JH>`>xl|Vg&#<_0&=eETD~4ONkZ z`tyM5Y`KMk*7!Hm(EPMAT86#K9I=7`s^zeg;oL14Tt8*Y<%Z~>AA!u?pD;868TR8~ zHFbA|5l7`+DChvY58mUWGnAhYn{|jj$erk58ps_~069`jcD$XryUL7-UJGcXcb zukc-UCzBEpp!(&-jg0!9@bD>#-ub;S9M;6Jb#FK^t802tZQ96YB0$)iFl##xOiZ@v zysS#E;U*7&PJAh;oago{T9n71iP_EU=)X%sD5xEj`OeB3Z?Mx#)-)q6tyPWw{v)Y* zy{=6T*gG0D=(!`9CC>cDZaN5ym}Y;KOB9Za1e|ea>e-l>bo^rQLt;Lk0|f$@Wo4Ii zI+@-0o4up2vJ;H*PKN2vx5LP~tNCu`qE8>-$N;hAL<8d(<17x!lV|ON99f648Iy-6 zJ!3LAG;T4aLO;Ld>HL`2VEd8R2#9Px&ipBh-6so4s?Gad!8u&wu1V7qWL|g{m((}F zxiYh9-M$u@d$C~yMe+5N#Z1ZfXRK?L-Bk%`TP?|Q*?5P0t)@Wb>U>EfhWgyXJH`W( zP3=!>ZIF#l8{tfPVn$UNmVG_-%nx*6*Gr7k6<%+F02+qZcOh;85(K0O`@aPSq`zx7 zcJ?j+!@r8H1L`ZbD=hCl&Xle1Pxp7zIAuRa%CTnF;11Q2&vx>W7!c)xB!YZe@tQec zy+-{Rf7=CjPQ-^IA~W-OTtLrviE9ad!uQ?n$>W~tKIdjKst~m0p5%%H{Y|p;{*P{t z<}Nli2VC0sH?qSNc+GUlZD;Gx*N&cp1LDCg#5z1PQc6BETeyT1VHm(d+U=q!FkfZ+`dkiM0fQ3|!y0A#+*_A%v!3c*t z9h-cA2ZPzHY!I$bvb~jo90}}CsPeTN5!ce~ANWFUvf&wyd69vf`@Mx%mrZC*LGt{* zyCaxEiSBzM|8|w_J!}AYlbcF7!oyFM;C+3D-3z}>t1^?So}P0d#E1~Oqz}=4qu8WN zBZ%e|Y1kD!1$Omb7*^`ok?=9y3gNZqB5^AG0U8GvA!^=HNwkve@S@Al8%04HPj5Jv}R#XvXx4$Hoeor*P|I4RRk}*{oQr&m1ZwG^K zXQGuvlZjO_Av*F3+Jj~uBBEu4f3&(0@dFyl>(GXeyzRpDu0Q5cSS$1Zj54r}DKNuk z3QpnYPRw|TjIL`iKaQXAOy+{v^p01qtKGyTy55=K=Ge2GJRrW&+9;$c35R`*&j@7h+VZg@ep zc=h~xfoAKLVdCaA%>O|;_I)y*R4WvW2&ya8b2N#pP}W4t9*~Z^nUndFf-N*grbm`4 z86Bt0SFfjLq}dTVTVfQ~lc>E!z~W2>iDmI!@p$?U6WLQN{q$H*eUZyqES$s_$B}7} zBV6at3FzF`*|l&m?-Z2aa(u#>k#X{K*?jdA6h+^DwuQ}vZ)}Bid?_tY)1gRkKt(7J zT7~EjdA*+{b_@j<%e3E!HI3iB{F!l=-i&Kn8}yf%jQWAy)Ay}ECe*Uk4Qoc3W|Smzg%$AY!^S!P zwJojAnw)}T2Kg5#8)-Fmv{Y*Iyl~ocZw@rHF1QzHij+t`wr;y$pa37Hw=yH+x>~O> zxY(q=J?GJ;Q!9{`^QN~WiCN8s)ZSKnxmb1|E)G^zkx0vq-mBaYMH@)Iy82ozO&4Q- zo;xkpFUl?2AcLNF0@zPeM(}qgvTd^+eyy+>lSh*+hZhaA#rBfnQN=17cXstbC?>al zOLN*SbZjW8EwG9sEftG;K0kymKWIkokO6lq0Qn0<8f~dLEOrt#I?`iVxrh6IK9XA+F-luFFD!>q(aE$SZ2Q63D87V1#G`OD^|OEr7#tgJ=7G(>|K zMI^U=#Rk}LR8gF3LkjXa>)=>xTV(PC$`F$-D}<8xw8K_g#g@9}@9gm8o3nkM>nr2y zM=K9_kbuB?$#xtWjw?0x_UzmpsAC)}%kBwXF0Z6>qDx{`(i6)G@>Ia0X*96cky07lY4Z`ja&McpnhmywZq*D5jO5q*{pHn$69 zFV&eL&M+`JMK-Tn9vm|B6xAmn$t?dTk5}N>w7VK|@ONEtq|y9Arx3YxIXCWHr7TYd zG*A_r*Bsz;8y0(S)l4#C-lc9FS0DtHbihsVN$Z$8*%gkoxqn`=Dl6K9>ZVxhGg%6- zeVa5bdv?_f6|hSUe8Ic?2I;PBwYq7gF=wO1ezDHe`Pxv_l`8FxbQ#_MQ4)J$p<;O5 zbQREW6u!AHBj=hZSnl|+Y@L^i@_>&)s{PwYNpsre(_T`3jN0x3!*>EWfr}Jro8C^R$Sk8i`7)o5If_L5Xl16Ez{Yx358>)y^rU7cXCuykRki02CzF=pwN|SxhDp(O=z&DzVmXu!DwO- zt|7tsq`uzBYMtq^{EZnhNA)|cq|>z`l+YRk2ENP)hU*O^8FGp0Rr3oPqWa~0+UT_k zk}W$;z{xmgb}MU)5^%z21vvf$FaeU9gfyK&Y8I`NcknFkRH4_ju^u7Nc0_d4Gc_W{ zsAKD>FH`NaThj>x=GsX5p->e#Ll%1(y4W0*JvcE3iHj;p& zeAE&An1&ssuA!(;;3V$agtCT8Bvu`M%bbWsk-Y9`78w5nf@NZ}(m6oXKyaODF)ht) z>EZzI$MmLd-YKqY!{Er_;ZLEu&g9lk@79{=pUijEpD+m81%qP~-02zLsbSrHS6@$? z%;Z`L!i6@sZxW2vhZak;#hUw8y zJ1DAO?=qC2fSscNKS4eL-rCt~Ki8^u*ufO$US=9An(jZ;$^@)+acY2!|mKeDX z$F^uNFN|(qgcQvqJ)Mk#o#P@!Y#YM3R{oPtn%{>4@Y4>; z++^9xG; z`xARG!pg)qv03$|L4Q#`-VjfVqCrRuH-hMaI@XSO(Q#&d<=o59z@Lqy!4o8qJqpMK z*5S81W4?jyqfVq!0z!@?GRalV^I4CzQPLE))7riY zzjzc()Ew$W$dWCyR*Q+FT6TgICn%YL+FMz2LPMu8r-3GK(VmtSP88E10TgOaTP;tQ z$ted2@|Tq5=`?n?v}VgN>g$9*^36WhS~rCY9U+=IXr)rrk=PA^~~ZVw$Re z1`*?AUKmYX9etCSvFK-sq+z+aHkvQhrBJZdca*yGFQ3Vd#Bz#`V64kW1Wi=rf>KgP zAhNdfU8d?x_Gz6+8H2#|q5D|6Rm&rw3M(BjnIJ5R)+p>r2ooP2m6;B)BO;iKPYj(@ zFy}H}kQOtZ={&A@e&vak^Q{?}P#_@D`2Q`gyno9R-$IIvt(CPMovyX@ui9Zo^!S^a z;=TVFr=Y=2>Jo{pf?_1~`z-~~An#_u$_~?rC-Rk&Z%spxl-FZ6#*SU9xUF2+n&|{z zcK}hR)V^@ly`qLlT(0<;qs&x#TS~SkG}rrJ$QH}E9`F+aB5-;!uq?Ox$+7D?I0MKC zQHqTgj${}J(k%$k$AzM>&bE3iI;fSf2lVNvDzLTJ@b8~dSc|T;i|w~uwVyuHa$kMK z?RFkVtxh`1FLXxU-#}UP``j&(nB>dtT$Qjvx!3DxhQD!RjBHufYF290An(W>m33r! z{B5gHcPz@?N2IwTgs^N#)l`)QZT*tsB`nGV{1;uYZ3vSWZ)Etr$s+!9z4ccZ{uf>P zR>p^>|o9)tU}w z*P6fgwcLR{ToW9bAPt5Jp;Ji0g!0w|!YiWhJ1|F)Q`AOMNgWCC`9$hW*Sim=OsME@ zEHhz+qv{aT$+76S@?!7V2i6#3N6(RE%5b+>hUZTN751jqeyRXLg2B{>jkG}LxDDm@VL|_(?nb=|yy-0A-$?tF@Fz}3)Yt9R7+b3O~g{F3`wphu>g_^s| z+Pd4>A`QoapVveOSJ>SX`fTLQz7d0AP-L4lwqku-pPFaOJ0mMGXv3~rK!Pp#nV;MC zY0sUUvjSV5mI9-(@X>^CesQnS?@?oDUO|z=tAn)ef~L7reYJ0XuC>5xs{!Q2xqW_> z=$Y-Z{qD?#)^{q{r(>U6>kEwFBmLK|F69TrU!8HzKj|g)))A%uRZ@of)*0#oZ#tki zjg_{7i?yMh=C9$~5&yr#*CTXTIUWFy!cSp}B!ZI@WGghdmjB@*3LyWj$v9&M27Ru$ z-nu6K_}IN}foum*u>uI-rZA^sp&XdDdfAy2N-7pPXY#DNZ7xQz{YNkEvHY2lCCBtHb!IPPthGePcE1lnSJvpAAJ-tt z?wQPYIwFM#k0C=4M8O-VbEtq2 zqh4cbKm(4uP}4(P&RW#i;e}UcG_w*tbV+KX>h@@>alYPn+~~kW$l1uGZfT=WFu8qc z1hzn-dp4CU=s{~x8`pYY$+V!vc}|Jd!{@c$sf`_t3!TBu*@ zvVTnVO^No`ANe<}*`N5|7ixYj$NXahZ|bVQ@PF#3{&ewsN$=lXn7qx;f4TT`edkXX zzh@D@YJdNj&xgP1{8uILPw?-d;@|s17Vm$-zo#94!hfGSf5nr3tc2vZ>GFT0%b)1q zpY?yg`4Z`G=)Wi1KjFU*&R-M4KW0e&|2sX%h(o?bMGz49w@>fe{BlL{>*)Ug#WznO literal 0 HcmV?d00001 From cbb9c9356f4b4405da41326424c42115aec960a8 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Fri, 13 Mar 2015 11:42:15 +0000 Subject: [PATCH 035/301] Add some sample Strict ooxml files, from Excel 2013 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1666410 13f79535-47bb-0310-9956-ffa450edef68 --- test-data/spreadsheet/SampleSS.strict.xlsx | Bin 0 -> 10006 bytes test-data/spreadsheet/SimpleNormal.xlsx | Bin 0 -> 8871 bytes test-data/spreadsheet/SimpleStrict.xlsx | Bin 0 -> 9225 bytes test-data/spreadsheet/sample.strict.xlsx | Bin 0 -> 11937 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 test-data/spreadsheet/SampleSS.strict.xlsx create mode 100644 test-data/spreadsheet/SimpleNormal.xlsx create mode 100644 test-data/spreadsheet/SimpleStrict.xlsx create mode 100644 test-data/spreadsheet/sample.strict.xlsx diff --git a/test-data/spreadsheet/SampleSS.strict.xlsx b/test-data/spreadsheet/SampleSS.strict.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..6bf19368e40d2812cc2959852ec4a5ebf6114493 GIT binary patch literal 10006 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 literal 0 HcmV?d00001 diff --git a/test-data/spreadsheet/SimpleStrict.xlsx b/test-data/spreadsheet/SimpleStrict.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..7ed3e45d2b7affb9ddf46ff84b6b5d3d08c414a6 GIT binary patch literal 9225 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 G)BgZC4Cn9w literal 0 HcmV?d00001 diff --git a/test-data/spreadsheet/sample.strict.xlsx b/test-data/spreadsheet/sample.strict.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..9c6c8f15d525b06af840aa91edfda5f76028e82d GIT binary patch literal 11937 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 Date: Fri, 13 Mar 2015 13:03:53 +0000 Subject: [PATCH 036/301] Exclude the OOXML strict files for now, not yet supported, see bug #57699 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1666433 13f79535-47bb-0310-9956-ffa450edef68 --- src/integrationtest/org/apache/poi/TestAllFiles.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/integrationtest/org/apache/poi/TestAllFiles.java b/src/integrationtest/org/apache/poi/TestAllFiles.java index 25e837b92..e8de685f9 100644 --- a/src/integrationtest/org/apache/poi/TestAllFiles.java +++ b/src/integrationtest/org/apache/poi/TestAllFiles.java @@ -227,6 +227,11 @@ public class TestAllFiles { EXPECTED_FAILURES.add("spreadsheet/testEXCEL_4.xls"); EXPECTED_FAILURES.add("spreadsheet/testEXCEL_5.xls"); EXPECTED_FAILURES.add("spreadsheet/testEXCEL_95.xls"); + + // OOXML Strict is not yet supported, see bug #57699 + EXPECTED_FAILURES.add("spreadsheet/SampleSS.strict.xlsx"); + EXPECTED_FAILURES.add("spreadsheet/SimpleStrict.xlsx"); + EXPECTED_FAILURES.add("spreadsheet/sample.strict.xlsx"); // non-TNEF files EXPECTED_FAILURES.add("ddf/Container.dat"); From e369d1c121c95c5c602e2c36b0783422d78cd5de Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Fri, 13 Mar 2015 16:26:41 +0000 Subject: [PATCH 037/301] Bug 56380: Remove limitation of 1024 comments per Workbook git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1666505 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/hssf/usermodel/HSSFComment.java | 7 +- .../poi/hssf/usermodel/TestCloneSheet.java | 30 ++++- .../poi/hssf/usermodel/TestComment.java | 94 +++++++++------ .../poi/hssf/usermodel/TestHSSFComment.java | 113 ++++++++++++++++++ 4 files changed, 201 insertions(+), 43 deletions(-) diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFComment.java b/src/java/org/apache/poi/hssf/usermodel/HSSFComment.java index 81de3a41d..4e71ac2b8 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFComment.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFComment.java @@ -129,10 +129,13 @@ public class HSSFComment extends HSSFTextbox implements Comment { @Override void setShapeId(int shapeId) { + if(shapeId > 65535) { + throw new IllegalArgumentException("Cannot add more than " + 65535 + " shapes"); + } super.setShapeId(shapeId); CommonObjectDataSubRecord cod = (CommonObjectDataSubRecord) getObjRecord().getSubRecords().get(0); - cod.setObjectId((short) (shapeId % 1024)); - _note.setShapeId(shapeId % 1024); + cod.setObjectId(shapeId); + _note.setShapeId(shapeId); } /** diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestCloneSheet.java b/src/testcases/org/apache/poi/hssf/usermodel/TestCloneSheet.java index 56a5bb162..6813baaa9 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestCloneSheet.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestCloneSheet.java @@ -26,6 +26,7 @@ import junit.framework.TestCase; import org.apache.poi.ddf.EscherDgRecord; import org.apache.poi.ddf.EscherSpRecord; +import org.apache.poi.hssf.record.CommonObjectDataSubRecord; import org.apache.poi.hssf.record.EscherAggregate; import org.apache.poi.ss.util.CellRangeAddress; @@ -37,19 +38,22 @@ import org.apache.poi.ss.util.CellRangeAddress; */ public final class TestCloneSheet extends TestCase { - public void testCloneSheetBasic(){ + public void testCloneSheetBasic() throws IOException{ HSSFWorkbook b = new HSSFWorkbook(); HSSFSheet s = b.createSheet("Test"); s.addMergedRegion(new CellRangeAddress(0, 1, 0, 1)); HSSFSheet clonedSheet = b.cloneSheet(0); assertEquals("One merged area", 1, clonedSheet.getNumMergedRegions()); + + b.close(); } /** * Ensures that pagebreak cloning works properly + * @throws IOException */ - public void testPageBreakClones() { + public void testPageBreakClones() throws IOException { HSSFWorkbook b = new HSSFWorkbook(); HSSFSheet s = b.createSheet("Test"); s.setRowBreak(3); @@ -62,6 +66,8 @@ public final class TestCloneSheet extends TestCase { s.removeRowBreak(3); assertTrue("Row 3 still should be broken", clone.isRowBroken(3)); + + b.close(); } public void testCloneSheetWithoutDrawings(){ @@ -121,16 +127,32 @@ public final class TestCloneSheet extends TestCase { HSSFSheet sh2 = wb.cloneSheet(0); HSSFPatriarch p2 = sh2.getDrawingPatriarch(); HSSFComment c2 = (HSSFComment) p2.getChildren().get(0); + + assertEquals(c.getString(), c2.getString()); + assertEquals(c.getRow(), c2.getRow()); + assertEquals(c.getColumn(), c2.getColumn()); + + // The ShapeId is not equal? + // assertEquals(c.getNoteRecord().getShapeId(), c2.getNoteRecord().getShapeId()); assertArrayEquals(c2.getTextObjectRecord().serialize(), c.getTextObjectRecord().serialize()); - assertArrayEquals(c2.getObjRecord().serialize(), c.getObjRecord().serialize()); - assertArrayEquals(c2.getNoteRecord().serialize(), c.getNoteRecord().serialize()); + + // ShapeId is different + CommonObjectDataSubRecord subRecord = (CommonObjectDataSubRecord) c2.getObjRecord().getSubRecords().get(0); + subRecord.setObjectId(1025); + assertArrayEquals(c2.getObjRecord().serialize(), c.getObjRecord().serialize()); + + // ShapeId is different + c2.getNoteRecord().setShapeId(1025); + assertArrayEquals(c2.getNoteRecord().serialize(), c.getNoteRecord().serialize()); //everything except spRecord.shapeId must be the same assertFalse(Arrays.equals(c2.getEscherContainer().serialize(), c.getEscherContainer().serialize())); EscherSpRecord sp = (EscherSpRecord) c2.getEscherContainer().getChild(0); sp.setShapeId(1025); assertArrayEquals(c2.getEscherContainer().serialize(), c.getEscherContainer().serialize()); + + wb.close(); } } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestComment.java b/src/testcases/org/apache/poi/hssf/usermodel/TestComment.java index cac444bae..2613e8cff 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestComment.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestComment.java @@ -17,23 +17,30 @@ package org.apache.poi.hssf.usermodel; +import static org.junit.Assert.assertArrayEquals; + +import java.io.IOException; + import junit.framework.TestCase; + import org.apache.poi.ddf.EscherSpRecord; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.model.CommentShape; import org.apache.poi.hssf.model.HSSFTestModelHelper; -import org.apache.poi.hssf.record.*; - -import java.io.*; -import java.util.Arrays; +import org.apache.poi.hssf.record.CommonObjectDataSubRecord; +import org.apache.poi.hssf.record.EscherAggregate; +import org.apache.poi.hssf.record.NoteRecord; +import org.apache.poi.hssf.record.ObjRecord; +import org.apache.poi.hssf.record.TextObjectRecord; /** * @author Evgeniy Berlog * @date 26.06.12 */ +@SuppressWarnings("deprecation") public class TestComment extends TestCase { - public void testResultEqualsToAbstractShape() { + public void testResultEqualsToAbstractShape() throws IOException { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sh = wb.createSheet(); HSSFPatriarch patriarch = sh.createDrawingPatriarch(); @@ -53,34 +60,35 @@ public class TestComment extends TestCase { byte[] actual = comment.getEscherContainer().getChild(0).serialize(); assertEquals(expected.length, actual.length); - assertTrue(Arrays.equals(expected, actual)); + assertArrayEquals(expected, actual); expected = commentShape.getSpContainer().getChild(2).serialize(); actual = comment.getEscherContainer().getChild(2).serialize(); assertEquals(expected.length, actual.length); - assertTrue(Arrays.equals(expected, actual)); + assertArrayEquals(expected, actual); expected = commentShape.getSpContainer().getChild(3).serialize(); actual = comment.getEscherContainer().getChild(3).serialize(); assertEquals(expected.length, actual.length); - assertTrue(Arrays.equals(expected, actual)); + assertArrayEquals(expected, actual); expected = commentShape.getSpContainer().getChild(4).serialize(); actual = comment.getEscherContainer().getChild(4).serialize(); assertEquals(expected.length, actual.length); - assertTrue(Arrays.equals(expected, actual)); + assertArrayEquals(expected, actual); ObjRecord obj = comment.getObjRecord(); ObjRecord objShape = commentShape.getObjRecord(); - /**shapeId = 1025 % 1024**/ - ((CommonObjectDataSubRecord)objShape.getSubRecords().get(0)).setObjectId(1); expected = obj.serialize(); actual = objShape.serialize(); + assertEquals(expected.length, actual.length); + //assertArrayEquals(expected, actual); + TextObjectRecord tor = comment.getTextObjectRecord(); TextObjectRecord torShape = commentShape.getTextObjectRecord(); @@ -88,20 +96,21 @@ public class TestComment extends TestCase { actual = torShape.serialize(); assertEquals(expected.length, actual.length); - assertTrue(Arrays.equals(expected, actual)); + assertArrayEquals(expected, actual); NoteRecord note = comment.getNoteRecord(); NoteRecord noteShape = commentShape.getNoteRecord(); - noteShape.setShapeId(1); expected = note.serialize(); actual = noteShape.serialize(); assertEquals(expected.length, actual.length); - assertTrue(Arrays.equals(expected, actual)); + assertArrayEquals(expected, actual); + + wb.close(); } - public void testAddToExistingFile() { + public void testAddToExistingFile() throws IOException { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sh = wb.createSheet(); HSSFPatriarch patriarch = sh.createDrawingPatriarch(); @@ -118,8 +127,8 @@ public class TestComment extends TestCase { assertEquals(patriarch.getChildren().size(), 2); - wb = HSSFTestDataSamples.writeOutAndReadBack(wb); - sh = wb.getSheetAt(0); + HSSFWorkbook wbBack = HSSFTestDataSamples.writeOutAndReadBack(wb); + sh = wbBack.getSheetAt(0); patriarch = sh.getDrawingPatriarch(); comment = (HSSFComment) patriarch.getChildren().get(1); @@ -132,8 +141,8 @@ public class TestComment extends TestCase { comment.setString(new HSSFRichTextString("comment3")); assertEquals(patriarch.getChildren().size(), 3); - wb = HSSFTestDataSamples.writeOutAndReadBack(wb); - sh = wb.getSheetAt(0); + HSSFWorkbook wbBack2 = HSSFTestDataSamples.writeOutAndReadBack(wbBack); + sh = wbBack2.getSheetAt(0); patriarch = sh.getDrawingPatriarch(); comment = (HSSFComment) patriarch.getChildren().get(1); assertEquals(comment.getBackgroundImageId(), 0); @@ -141,6 +150,10 @@ public class TestComment extends TestCase { assertEquals(((HSSFComment) patriarch.getChildren().get(0)).getString().getString(), "comment1"); assertEquals(((HSSFComment) patriarch.getChildren().get(1)).getString().getString(), "comment2"); assertEquals(((HSSFComment) patriarch.getChildren().get(2)).getString().getString(), "comment3"); + + wb.close(); + wbBack.close(); + wbBack2.close(); } public void testSetGetProperties() throws IOException { @@ -164,8 +177,8 @@ public class TestComment extends TestCase { comment.setVisible(false); assertEquals(comment.isVisible(), false); - wb = HSSFTestDataSamples.writeOutAndReadBack(wb); - sh = wb.getSheetAt(0); + HSSFWorkbook wbBack = HSSFTestDataSamples.writeOutAndReadBack(wb); + sh = wbBack.getSheetAt(0); patriarch = sh.getDrawingPatriarch(); comment = (HSSFComment) patriarch.getChildren().get(0); @@ -182,8 +195,8 @@ public class TestComment extends TestCase { comment.setRow(42); comment.setVisible(true); - wb = HSSFTestDataSamples.writeOutAndReadBack(wb); - sh = wb.getSheetAt(0); + HSSFWorkbook wbBack2 = HSSFTestDataSamples.writeOutAndReadBack(wbBack); + sh = wbBack2.getSheetAt(0); patriarch = sh.getDrawingPatriarch(); comment = (HSSFComment) patriarch.getChildren().get(0); @@ -192,6 +205,10 @@ public class TestComment extends TestCase { assertEquals(comment.getColumn(), 32); assertEquals(comment.getRow(), 42); assertEquals(comment.isVisible(), true); + + wb.close(); + wbBack.close(); + wbBack2.close(); } public void testExistingFileWithComment(){ @@ -206,7 +223,7 @@ public class TestComment extends TestCase { assertEquals(comment.getRow(), 2); } - public void testFindComments(){ + public void testFindComments() throws IOException{ HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sh = wb.createSheet(); HSSFPatriarch patriarch = sh.createDrawingPatriarch(); @@ -221,14 +238,17 @@ public class TestComment extends TestCase { assertNotNull(sh.findCellComment(5, 4)); assertNull(sh.findCellComment(5, 5)); - wb = HSSFTestDataSamples.writeOutAndReadBack(wb); - sh = wb.getSheetAt(0); + HSSFWorkbook wbBack = HSSFTestDataSamples.writeOutAndReadBack(wb); + sh = wbBack.getSheetAt(0); assertNotNull(sh.findCellComment(5, 4)); assertNull(sh.findCellComment(5, 5)); + + wb.close(); + wbBack.close(); } - public void testInitState(){ + public void testInitState() throws IOException{ HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sh = wb.createSheet(); HSSFPatriarch patriarch = sh.createDrawingPatriarch(); @@ -240,11 +260,14 @@ public class TestComment extends TestCase { assertEquals(agg.getTailRecords().size(), 1); HSSFSimpleShape shape = patriarch.createSimpleShape(new HSSFClientAnchor()); + assertNotNull(shape); assertEquals(comment.getOptRecord().getEscherProperties().size(), 10); + + wb.close(); } - public void testShapeId(){ + public void testShapeId() throws IOException{ HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sh = wb.createSheet(); HSSFPatriarch patriarch = sh.createDrawingPatriarch(); @@ -252,20 +275,17 @@ public class TestComment extends TestCase { HSSFComment comment = patriarch.createCellComment(new HSSFClientAnchor()); comment.setShapeId(2024); - /** - * SpRecord.id == shapeId - * ObjRecord.id == shapeId % 1024 - * NoteRecord.id == ObjectRecord.id == shapeId % 1024 - */ assertEquals(comment.getShapeId(), 2024); CommonObjectDataSubRecord cod = (CommonObjectDataSubRecord) comment.getObjRecord().getSubRecords().get(0); - assertEquals(cod.getObjectId(), 1000); + assertEquals(2024, cod.getObjectId()); EscherSpRecord spRecord = (EscherSpRecord) comment.getEscherContainer().getChild(0); - assertEquals(spRecord.getShapeId(), 2024); - assertEquals(comment.getShapeId(), 2024); - assertEquals(comment.getNoteRecord().getShapeId(), 1000); + assertEquals(2024, spRecord.getShapeId(), 2024); + assertEquals(2024, comment.getShapeId(), 2024); + assertEquals(2024, comment.getNoteRecord().getShapeId()); + + wb.close(); } public void testAttemptToSave2CommentsWithSameCoordinates(){ diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFComment.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFComment.java index 055f21bac..32ca5b598 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFComment.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFComment.java @@ -17,10 +17,19 @@ package org.apache.poi.hssf.usermodel; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import org.apache.poi.hssf.HSSFITestDataProvider; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.ss.usermodel.BaseTestCellComment; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.ClientAnchor; +import org.apache.poi.ss.usermodel.Comment; +import org.apache.poi.ss.usermodel.CreationHelper; +import org.apache.poi.ss.usermodel.Drawing; +import org.apache.poi.ss.usermodel.RichTextString; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; import org.junit.Test; /** @@ -75,4 +84,108 @@ public final class TestHSSFComment extends BaseTestCellComment { comment = cell.getCellComment(); assertEquals("c6", comment.getString().getString()); } + + @Test + public void testBug56380InsertComments() throws Exception { + HSSFWorkbook workbook = new HSSFWorkbook(); + Sheet sheet = workbook.createSheet(); + Drawing drawing = sheet.createDrawingPatriarch(); + int noOfRows = 1025; + String comment = "c"; + + for(int i = 0; i < noOfRows; i++) { + Row row = sheet.createRow(i); + Cell cell = row.createCell(0); + insertComment(drawing, cell, comment + i); + } + + // assert that the comments are created properly before writing + checkComments(sheet, noOfRows, comment); + + /*// store in temp-file + OutputStream fs = new FileOutputStream("/tmp/56380.xls"); + try { + sheet.getWorkbook().write(fs); + } finally { + fs.close(); + }*/ + + // save and recreate the workbook from the saved file + HSSFWorkbook workbookBack = HSSFTestDataSamples.writeOutAndReadBack(workbook); + sheet = workbookBack.getSheetAt(0); + + // assert that the comments are created properly after reading back in + checkComments(sheet, noOfRows, comment); + + workbook.close(); + workbookBack.close(); + } + + @Test + public void testBug56380InsertTooManyComments() throws Exception { + HSSFWorkbook workbook = new HSSFWorkbook(); + try { + Sheet sheet = workbook.createSheet(); + Drawing drawing = sheet.createDrawingPatriarch(); + String comment = "c"; + + for(int rowNum = 0;rowNum < 258;rowNum++) { + sheet.createRow(rowNum); + } + + // should still work, for some reason DrawingManager2.allocateShapeId() skips the first 1024... + for(int count = 1025;count < 65535;count++) { + int rowNum = count / 255; + int cellNum = count % 255; + Cell cell = sheet.getRow(rowNum).createCell(cellNum); + try { + Comment commentObj = insertComment(drawing, cell, comment + cellNum); + + assertEquals(count, ((HSSFComment)commentObj).getNoteRecord().getShapeId()); + } catch (IllegalArgumentException e) { + throw new IllegalArgumentException("While adding shape number " + count, e); + } + } + + // this should now fail to insert + Row row = sheet.createRow(257); + Cell cell = row.createCell(0); + insertComment(drawing, cell, comment + 0); + } finally { + workbook.close(); + } + } + + private void checkComments(Sheet sheet, int noOfRows, String comment) { + for(int i = 0; i < noOfRows; i++) { + assertNotNull(sheet.getRow(i)); + assertNotNull(sheet.getRow(i).getCell(0)); + assertNotNull("Did not get a Cell Comment for row " + i, sheet.getRow(i).getCell(0).getCellComment()); + assertNotNull(sheet.getRow(i).getCell(0).getCellComment().getString()); + assertEquals(comment + i, sheet.getRow(i).getCell(0).getCellComment().getString().getString()); + } + } + + private Comment insertComment(Drawing drawing, Cell cell, String message) { + CreationHelper factory = cell.getSheet().getWorkbook().getCreationHelper(); + + ClientAnchor anchor = factory.createClientAnchor(); + anchor.setCol1(cell.getColumnIndex()); + anchor.setCol2(cell.getColumnIndex() + 1); + anchor.setRow1(cell.getRowIndex()); + anchor.setRow2(cell.getRowIndex() + 1); + anchor.setDx1(100); + anchor.setDx2(100); + anchor.setDy1(100); + anchor.setDy2(100); + + Comment comment = drawing.createCellComment(anchor); + + RichTextString str = factory.createRichTextString(message); + comment.setString(str); + comment.setAuthor("fanfy"); + cell.setCellComment(comment); + + return comment; + } } From ace2354d6c8568cfd419637b1d67dde2454ba59f Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Fri, 13 Mar 2015 16:46:15 +0000 Subject: [PATCH 038/301] Stub unit tests for #57699 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1666510 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/extractor/TestExtractorFactory.java | 16 ++++++++++++++++ .../apache/poi/xssf/usermodel/TestXSSFBugs.java | 12 ++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java b/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java index b2edea6a3..003c0eccf 100644 --- a/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java +++ b/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java @@ -51,6 +51,7 @@ public class TestExtractorFactory extends TestCase { private File xls; private File xlsx; + private File xlsxStrict; private File xltx; private File xlsEmb; @@ -90,6 +91,7 @@ public class TestExtractorFactory extends TestCase { POIDataSamples ssTests = POIDataSamples.getSpreadSheetInstance(); xls = getFileAndCheck(ssTests, "SampleSS.xls"); xlsx = getFileAndCheck(ssTests, "SampleSS.xlsx"); + xlsxStrict = getFileAndCheck(ssTests, "SampleSS.strict.xlsx"); xltx = getFileAndCheck(ssTests, "test.xltx"); xlsEmb = getFileAndCheck(ssTests, "excel_with_embeded.xls"); @@ -159,6 +161,20 @@ public class TestExtractorFactory extends TestCase { ); extractor.close(); + // TODO Support OOXML-Strict, see bug #57699 +// extractor = ExtractorFactory.createExtractor(xlsxStrict); +// assertTrue( +// extractor +// instanceof XSSFExcelExtractor +// ); +// extractor.close(); +// +// extractor = ExtractorFactory.createExtractor(xlsxStrict); +// assertTrue( +// extractor.getText().contains("test") +// ); +// extractor.close(); + // Word assertTrue( diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index ad9c3ad6f..6334326c5 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -2290,4 +2290,16 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { wb.close(); } } + + /** + * OOXML-Strict files + */ + @Test + @Ignore + public void test57699() throws Exception { + Workbook wb = XSSFTestDataSamples.openSampleWorkbook("sample.strict.xlsx"); + assertEquals(3, wb.getNumberOfSheets()); + + // TODO Check the rest + } } From a62be1da0c24ea715e230137c3c70fff87596e16 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Fri, 13 Mar 2015 17:17:27 +0000 Subject: [PATCH 039/301] More relation types git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1666517 13f79535-47bb-0310-9956-ffa450edef68 --- .../opc/PackageRelationshipTypes.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/openxml4j/opc/PackageRelationshipTypes.java b/src/ooxml/java/org/apache/poi/openxml4j/opc/PackageRelationshipTypes.java index 134e6a9fa..bee45e536 100644 --- a/src/ooxml/java/org/apache/poi/openxml4j/opc/PackageRelationshipTypes.java +++ b/src/ooxml/java/org/apache/poi/openxml4j/opc/PackageRelationshipTypes.java @@ -19,12 +19,8 @@ package org.apache.poi.openxml4j.opc; /** * Relationship types. - * - * @author Julien Chable - * @version 0.2 */ public interface PackageRelationshipTypes { - /** * Core properties relationship type. * @@ -70,16 +66,26 @@ public interface PackageRelationshipTypes { */ String EXTENDED_PROPERTIES = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties"; + /** + * Extended properties relationship type for strict ooxml. + */ + String STRICT_EXTENDED_PROPERTIES = "http://purl.oclc.org/ooxml/officeDocument/relationships/extendedProperties"; + /** * Custom properties relationship type. */ String CUSTOM_PROPERTIES = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties"; /** - * Core properties relationship type. + * Core document relationship type. */ String CORE_DOCUMENT = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"; + /** + * Core document relationship type for strict ooxml. + */ + String STRICT_CORE_DOCUMENT = "http://purl.oclc.org/ooxml/officeDocument/relationships/officeDocument"; + /** * Custom XML relationship type. */ @@ -104,4 +110,9 @@ public interface PackageRelationshipTypes { * External Link to another Document */ String EXTERNAL_LINK_PATH = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath"; + + /** + * Visio 2010 VSDX equivalent of package {@link #CORE_DOCUMENT} + */ + String VISIO_CORE_DOCUMENT = "http://schemas.microsoft.com/visio/2010/relationships/document"; } From 48e3a2e56a11a0977cd22fd833734ab26a854f4c Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Fri, 13 Mar 2015 17:17:47 +0000 Subject: [PATCH 040/301] Fix inconsistent indents git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1666518 13f79535-47bb-0310-9956-ffa450edef68 --- .../opc/PackageRelationshipTypes.java | 110 +++++++++--------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/openxml4j/opc/PackageRelationshipTypes.java b/src/ooxml/java/org/apache/poi/openxml4j/opc/PackageRelationshipTypes.java index bee45e536..5d9801cd8 100644 --- a/src/ooxml/java/org/apache/poi/openxml4j/opc/PackageRelationshipTypes.java +++ b/src/ooxml/java/org/apache/poi/openxml4j/opc/PackageRelationshipTypes.java @@ -21,8 +21,8 @@ package org.apache.poi.openxml4j.opc; * Relationship types. */ public interface PackageRelationshipTypes { - /** - * Core properties relationship type. + /** + * Core properties relationship type. * *

* The standard specifies a source relations ship for the Core File Properties part as follows: @@ -33,86 +33,86 @@ public interface PackageRelationshipTypes { * http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties. *

* See 2.1.33 Part 1 Section 15.2.11.1, Core File Properties Part in [MS-OE376].pdf - */ - String CORE_PROPERTIES = "http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties"; + */ + String CORE_PROPERTIES = "http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties"; /** * Core properties relationship type as defiend in ECMA 376. - */ + */ String CORE_PROPERTIES_ECMA376 = "http://schemas.openxmlformats.org/officedocument/2006/relationships/metadata/core-properties"; - /** - * Digital signature relationship type. - */ - String DIGITAL_SIGNATURE = "http://schemas.openxmlformats.org/package/2006/relationships/digital-signature/signature"; + /** + * Digital signature relationship type. + */ + String DIGITAL_SIGNATURE = "http://schemas.openxmlformats.org/package/2006/relationships/digital-signature/signature"; - /** - * Digital signature certificate relationship type. - */ - String DIGITAL_SIGNATURE_CERTIFICATE = "http://schemas.openxmlformats.org/package/2006/relationships/digital-signature/certificate"; + /** + * Digital signature certificate relationship type. + */ + String DIGITAL_SIGNATURE_CERTIFICATE = "http://schemas.openxmlformats.org/package/2006/relationships/digital-signature/certificate"; - /** - * Digital signature origin relationship type. - */ - String DIGITAL_SIGNATURE_ORIGIN = "http://schemas.openxmlformats.org/package/2006/relationships/digital-signature/origin"; + /** + * Digital signature origin relationship type. + */ + String DIGITAL_SIGNATURE_ORIGIN = "http://schemas.openxmlformats.org/package/2006/relationships/digital-signature/origin"; - /** - * Thumbnail relationship type. - */ - String THUMBNAIL = "http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail"; + /** + * Thumbnail relationship type. + */ + String THUMBNAIL = "http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail"; - /** - * Extended properties relationship type. - */ - String EXTENDED_PROPERTIES = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties"; + /** + * Extended properties relationship type. + */ + String EXTENDED_PROPERTIES = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties"; /** * Extended properties relationship type for strict ooxml. */ String STRICT_EXTENDED_PROPERTIES = "http://purl.oclc.org/ooxml/officeDocument/relationships/extendedProperties"; - /** - * Custom properties relationship type. - */ - String CUSTOM_PROPERTIES = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties"; - - /** - * Core document relationship type. - */ - String CORE_DOCUMENT = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"; + /** + * Custom properties relationship type. + */ + String CUSTOM_PROPERTIES = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties"; + + /** + * Core document relationship type. + */ + String CORE_DOCUMENT = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"; /** * Core document relationship type for strict ooxml. */ String STRICT_CORE_DOCUMENT = "http://purl.oclc.org/ooxml/officeDocument/relationships/officeDocument"; - /** - * Custom XML relationship type. - */ - String CUSTOM_XML = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml"; + /** + * Custom XML relationship type. + */ + String CUSTOM_XML = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml"; - /** - * Image type. - */ - String IMAGE_PART = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image"; + /** + * Image type. + */ + String IMAGE_PART = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image"; /** * Hyperlink type. */ String HYPERLINK_PART = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink"; - /** - * Style type. - */ - String STYLE_PART = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles"; - - /** - * External Link to another Document - */ - String EXTERNAL_LINK_PATH = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath"; + /** + * Style type. + */ + String STYLE_PART = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles"; - /** - * Visio 2010 VSDX equivalent of package {@link #CORE_DOCUMENT} - */ - String VISIO_CORE_DOCUMENT = "http://schemas.microsoft.com/visio/2010/relationships/document"; + /** + * External Link to another Document + */ + String EXTERNAL_LINK_PATH = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath"; + + /** + * Visio 2010 VSDX equivalent of package {@link #CORE_DOCUMENT} + */ + String VISIO_CORE_DOCUMENT = "http://schemas.microsoft.com/visio/2010/relationships/document"; } From ff737c5df4af2f92da1c6e3dc8b3a40d5e72597b Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Fri, 13 Mar 2015 17:39:47 +0000 Subject: [PATCH 041/301] Detect OOXML-strict, and give more helpful exceptions for them git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1666525 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/poi/POIXMLDocumentPart.java | 9 +++++++++ .../apache/poi/extractor/ExtractorFactory.java | 13 +++++++++---- .../poi/extractor/TestExtractorFactory.java | 15 +++++++++++++++ .../apache/poi/xssf/usermodel/TestXSSFBugs.java | 12 +++++++++--- 4 files changed, 42 insertions(+), 7 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/POIXMLDocumentPart.java b/src/ooxml/java/org/apache/poi/POIXMLDocumentPart.java index 4759ddbd3..f051eb32a 100644 --- a/src/ooxml/java/org/apache/poi/POIXMLDocumentPart.java +++ b/src/ooxml/java/org/apache/poi/POIXMLDocumentPart.java @@ -94,6 +94,15 @@ public class POIXMLDocumentPart { */ public POIXMLDocumentPart(OPCPackage pkg) { PackageRelationship coreRel = pkg.getRelationshipsByType(PackageRelationshipTypes.CORE_DOCUMENT).getRelationship(0); + if (coreRel == null) { + coreRel = pkg.getRelationshipsByType(PackageRelationshipTypes.STRICT_CORE_DOCUMENT).getRelationship(0); + if (coreRel != null) { + throw new POIXMLException("Strict OOXML isn't currently supported, please see bug #57699"); + } + } + if (coreRel == null) { + throw new POIXMLException("OOXML file structure broken/invalid - no core document found!"); + } this.packagePart = pkg.getPart(coreRel); this.packageRel = coreRel; diff --git a/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java b/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java index 0bc7eb31d..b484e2ed0 100644 --- a/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java +++ b/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java @@ -47,6 +47,7 @@ import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.openxml4j.opc.PackageAccess; import org.apache.poi.openxml4j.opc.PackagePart; import org.apache.poi.openxml4j.opc.PackageRelationshipCollection; +import org.apache.poi.openxml4j.opc.PackageRelationshipTypes; import org.apache.poi.poifs.filesystem.DirectoryEntry; import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.poifs.filesystem.Entry; @@ -66,10 +67,9 @@ import org.apache.xmlbeans.XmlException; * document, and returns it. */ public class ExtractorFactory { - public static final String CORE_DOCUMENT_REL = - "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"; - public static final String VISIO_DOCUMENT_REL = - "http://schemas.microsoft.com/visio/2010/relationships/document"; + public static final String CORE_DOCUMENT_REL = PackageRelationshipTypes.CORE_DOCUMENT; + protected static final String VISIO_DOCUMENT_REL = PackageRelationshipTypes.VISIO_CORE_DOCUMENT; + protected static final String STRICT_DOCUMENT_REL = PackageRelationshipTypes.STRICT_CORE_DOCUMENT; /** Should this thread prefer event based over usermodel based extractors? */ @@ -165,6 +165,10 @@ public class ExtractorFactory { pkg.getRelationshipsByType(CORE_DOCUMENT_REL); // If nothing was found, try some of the other OOXML-based core types + if (core.size() == 0) { + // Could it be an OOXML-Strict one? + core = pkg.getRelationshipsByType(STRICT_DOCUMENT_REL); + } if (core.size() == 0) { // Could it be a visio one? PackageRelationshipCollection visio = @@ -173,6 +177,7 @@ public class ExtractorFactory { throw new IllegalArgumentException("Text extraction not supported for Visio OOXML files"); } } + // Should just be a single core document, complain if not if (core.size() != 1) { throw new IllegalArgumentException("Invalid OOXML Package received - expected 1 core document, found " + core.size()); diff --git a/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java b/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java index 003c0eccf..a8644f420 100644 --- a/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java +++ b/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java @@ -25,6 +25,7 @@ import junit.framework.TestCase; import org.apache.poi.POIDataSamples; import org.apache.poi.POIOLE2TextExtractor; import org.apache.poi.POITextExtractor; +import org.apache.poi.POIXMLException; import org.apache.poi.POIXMLTextExtractor; import org.apache.poi.hdgf.extractor.VisioTextExtractor; import org.apache.poi.hpbf.extractor.PublisherTextExtractor; @@ -162,6 +163,12 @@ public class TestExtractorFactory extends TestCase { extractor.close(); // TODO Support OOXML-Strict, see bug #57699 + try { + extractor = ExtractorFactory.createExtractor(xlsxStrict); + fail("OOXML-Strict isn't yet supported"); + } catch (POIXMLException e) { + // Expected, for now + } // extractor = ExtractorFactory.createExtractor(xlsxStrict); // assertTrue( // extractor @@ -307,6 +314,14 @@ public class TestExtractorFactory extends TestCase { assertTrue( ExtractorFactory.createExtractor(new FileInputStream(xlsx)).getText().length() > 200 ); + // TODO Support OOXML-Strict, see bug #57699 +// assertTrue( +// ExtractorFactory.createExtractor(new FileInputStream(xlsxStrict)) +// instanceof XSSFExcelExtractor +// ); +// assertTrue( +// ExtractorFactory.createExtractor(new FileInputStream(xlsxStrict)).getText().length() > 200 +// ); // Word assertTrue( diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index 6334326c5..bb9efa407 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -2293,13 +2293,19 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { /** * OOXML-Strict files + * Not currently working - namespace mis-match from XMLBeans */ @Test - @Ignore + @Ignore("XMLBeans namespace mis-match on ooxml-strict files") public void test57699() throws Exception { - Workbook wb = XSSFTestDataSamples.openSampleWorkbook("sample.strict.xlsx"); + XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("sample.strict.xlsx"); assertEquals(3, wb.getNumberOfSheets()); + // TODO Check sheet contents + // TODO Check formula evaluation - // TODO Check the rest + XSSFWorkbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(wb); + assertEquals(3, wbBack.getNumberOfSheets()); + // TODO Re-check sheet contents + // TODO Re-check formula evaluation } } From 5d4a5c2bb44068cfe87e48f915c2d9f3ba6ac3c1 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sat, 14 Mar 2015 11:52:59 +0000 Subject: [PATCH 042/301] Also write findbugs.xml file for reading the results in ^Cnkins builds git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1666657 13f79535-47bb-0310-9956-ffa450edef68 --- build.xml | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/build.xml b/build.xml index f29aa8d37..b8f7a66a4 100644 --- a/build.xml +++ b/build.xml @@ -1709,7 +1709,30 @@ under the License. - + + + + + + + + + + + + + + + + + + + + + + + From 7bf9b90fb2c83248631d2322efb26af1b489aea3 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sat, 14 Mar 2015 13:18:43 +0000 Subject: [PATCH 043/301] Remove some findbugs warnings about missing close of streams, use existing IOUtils.copy() to copy from one stream to another git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1666683 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/poifs/dev/POIFSDump.java | 14 ++++-- .../apache/poi/openxml4j/opc/OPCPackage.java | 7 ++- .../poi/poifs/crypt/agile/AgileEncryptor.java | 14 ++++-- .../poi/xslf/model/geom/PresetGeometries.java | 6 ++- .../org/apache/poi/xssf/dev/XSSFDump.java | 48 +++++++++---------- .../hmef/extractor/HMEFContentsExtractor.java | 25 ++++++---- 6 files changed, 66 insertions(+), 48 deletions(-) diff --git a/src/java/org/apache/poi/poifs/dev/POIFSDump.java b/src/java/org/apache/poi/poifs/dev/POIFSDump.java index ace19d8d1..66597fd4d 100644 --- a/src/java/org/apache/poi/poifs/dev/POIFSDump.java +++ b/src/java/org/apache/poi/poifs/dev/POIFSDump.java @@ -22,6 +22,7 @@ import java.io.FileInputStream; import java.io.File; import java.io.IOException; import java.io.FileOutputStream; +import java.io.OutputStream; import java.util.Iterator; /** @@ -49,8 +50,8 @@ public class POIFSDump { public static void dump(DirectoryEntry root, File parent) throws IOException { - for(Iterator it = root.getEntries(); it.hasNext();){ - Entry entry = (Entry)it.next(); + for(Iterator it = root.getEntries(); it.hasNext();){ + Entry entry = it.next(); if(entry instanceof DocumentNode){ DocumentNode node = (DocumentNode)entry; DocumentInputStream is = new DocumentInputStream(node); @@ -58,9 +59,12 @@ public class POIFSDump { is.read(bytes); is.close(); - FileOutputStream out = new FileOutputStream(new File(parent, node.getName().trim())); - out.write(bytes); - out.close(); + OutputStream out = new FileOutputStream(new File(parent, node.getName().trim())); + try { + out.write(bytes); + } finally { + out.close(); + } } else if (entry instanceof DirectoryEntry){ DirectoryEntry dir = (DirectoryEntry)entry; File file = new File(parent, entry.getName()); diff --git a/src/ooxml/java/org/apache/poi/openxml4j/opc/OPCPackage.java b/src/ooxml/java/org/apache/poi/openxml4j/opc/OPCPackage.java index 4f3d6ca65..9dbddddd7 100644 --- a/src/ooxml/java/org/apache/poi/openxml4j/opc/OPCPackage.java +++ b/src/ooxml/java/org/apache/poi/openxml4j/opc/OPCPackage.java @@ -1409,8 +1409,11 @@ public abstract class OPCPackage implements RelationshipSource, Closeable { } catch (FileNotFoundException e) { throw new IOException(e.getLocalizedMessage()); } - this.save(fos); - fos.close(); + try { + this.save(fos); + } finally { + fos.close(); + } } /** diff --git a/src/ooxml/java/org/apache/poi/poifs/crypt/agile/AgileEncryptor.java b/src/ooxml/java/org/apache/poi/poifs/crypt/agile/AgileEncryptor.java index 51ced4c2c..c6d307259 100644 --- a/src/ooxml/java/org/apache/poi/poifs/crypt/agile/AgileEncryptor.java +++ b/src/ooxml/java/org/apache/poi/poifs/crypt/agile/AgileEncryptor.java @@ -33,6 +33,7 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; +import java.io.InputStream; import java.io.OutputStream; import java.security.GeneralSecurityException; import java.security.MessageDigest; @@ -242,12 +243,15 @@ public class AgileEncryptor extends Encryptor { LittleEndian.putLong(buf, 0, oleStreamSize); integrityMD.update(buf, 0, LittleEndian.LONG_SIZE); - FileInputStream fis = new FileInputStream(tmpFile); - int readBytes; - while ((readBytes = fis.read(buf)) != -1) { - integrityMD.update(buf, 0, readBytes); + InputStream fis = new FileInputStream(tmpFile); + try { + int readBytes; + while ((readBytes = fis.read(buf)) != -1) { + integrityMD.update(buf, 0, readBytes); + } + } finally { + fis.close(); } - fis.close(); byte hmacValue[] = integrityMD.doFinal(); diff --git a/src/ooxml/java/org/apache/poi/xslf/model/geom/PresetGeometries.java b/src/ooxml/java/org/apache/poi/xslf/model/geom/PresetGeometries.java index 62accc42f..86abf67af 100644 --- a/src/ooxml/java/org/apache/poi/xslf/model/geom/PresetGeometries.java +++ b/src/ooxml/java/org/apache/poi/xslf/model/geom/PresetGeometries.java @@ -38,7 +38,11 @@ public class PresetGeometries extends LinkedHashMap { try { InputStream is = XMLSlideShow.class.getResourceAsStream("presetShapeDefinitions.xml"); - read(is); + try { + read(is); + } finally { + is.close(); + } } catch (Exception e){ throw new RuntimeException(e); } diff --git a/src/ooxml/java/org/apache/poi/xssf/dev/XSSFDump.java b/src/ooxml/java/org/apache/poi/xssf/dev/XSSFDump.java index 7e449dad3..41fc335af 100644 --- a/src/ooxml/java/org/apache/poi/xssf/dev/XSSFDump.java +++ b/src/ooxml/java/org/apache/poi/xssf/dev/XSSFDump.java @@ -19,13 +19,12 @@ package org.apache.poi.xssf.dev; import java.io.File; import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; import java.io.OutputStream; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; +import org.apache.poi.util.IOUtils; import org.apache.xmlbeans.XmlObject; import org.apache.xmlbeans.XmlOptions; @@ -40,7 +39,11 @@ public final class XSSFDump { for (int i = 0; i < args.length; i++) { System.out.println("Dumping " + args[i]); ZipFile zip = new ZipFile(args[i]); - dump(zip); + try { + dump(zip); + } finally { + zip.close(); + } } } @@ -49,6 +52,7 @@ public final class XSSFDump { int sep = zipname.lastIndexOf('.'); File root = new File(zipname.substring(0, sep)); root.mkdir(); + System.out.println("Dupming to directory " + root); Enumeration en = zip.entries(); while(en.hasMoreElements()){ @@ -61,30 +65,24 @@ public final class XSSFDump { } File f = new File(root, entry.getName()); - FileOutputStream out = new FileOutputStream(f); - - if(entry.getName().endsWith(".xml") || entry.getName().endsWith(".vml") || entry.getName().endsWith(".rels")){ - try { - XmlObject xml = XmlObject.Factory.parse(zip.getInputStream(entry)); - XmlOptions options = new XmlOptions(); - options.setSavePrettyPrint(); - xml.save(out, options); - } catch (Exception e){ - System.err.println("Failed to parse " + entry.getName() + ", dumping raw content"); - dump(zip.getInputStream(entry), out); + OutputStream out = new FileOutputStream(f); + try { + if(entry.getName().endsWith(".xml") || entry.getName().endsWith(".vml") || entry.getName().endsWith(".rels")){ + try { + XmlObject xml = XmlObject.Factory.parse(zip.getInputStream(entry)); + XmlOptions options = new XmlOptions(); + options.setSavePrettyPrint(); + xml.save(out, options); + } catch (Exception e){ + System.err.println("Failed to parse " + entry.getName() + ", dumping raw content"); + IOUtils.copy(zip.getInputStream(entry), out); + } + } else { + IOUtils.copy(zip.getInputStream(entry), out); } - } else { - dump(zip.getInputStream(entry), out); + } finally { + out.close(); } - out.close(); - } } - - protected static void dump(InputStream is, OutputStream out) throws IOException{ - int pos; - byte[] chunk = new byte[2048]; - while((pos = is.read(chunk)) > 0) out.write(chunk, 0, pos); - - } } diff --git a/src/scratchpad/src/org/apache/poi/hmef/extractor/HMEFContentsExtractor.java b/src/scratchpad/src/org/apache/poi/hmef/extractor/HMEFContentsExtractor.java index 332a496c6..f591d5a4d 100644 --- a/src/scratchpad/src/org/apache/poi/hmef/extractor/HMEFContentsExtractor.java +++ b/src/scratchpad/src/org/apache/poi/hmef/extractor/HMEFContentsExtractor.java @@ -22,6 +22,7 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; +import java.io.OutputStream; import org.apache.poi.hmef.Attachment; import org.apache.poi.hmef.HMEFMessage; @@ -70,13 +71,14 @@ public final class HMEFContentsExtractor { * Extracts the RTF message body to the supplied file */ public void extractMessageBody(File dest) throws IOException { - FileOutputStream fout = new FileOutputStream(dest); - - MAPIRtfAttribute body = (MAPIRtfAttribute) - message.getMessageMAPIAttribute(MAPIProperty.RTF_COMPRESSED); - fout.write(body.getData()); - - fout.close(); + OutputStream fout = new FileOutputStream(dest); + try { + MAPIRtfAttribute body = (MAPIRtfAttribute) + message.getMessageMAPIAttribute(MAPIProperty.RTF_COMPRESSED); + fout.write(body.getData()); + } finally { + fout.close(); + } } /** @@ -101,9 +103,12 @@ public final class HMEFContentsExtractor { // Save it File file = new File(dir, filename); - FileOutputStream fout = new FileOutputStream(file); - fout.write( att.getContents() ); - fout.close(); + OutputStream fout = new FileOutputStream(file); + try { + fout.write( att.getContents() ); + } finally { + fout.close(); + } } } } From 1849741d43ddba0d6deda9be26bb5fb42fee2cbf Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sat, 14 Mar 2015 17:50:55 +0000 Subject: [PATCH 044/301] Add second verification of bug 56325 to ensure it is really fixed git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1666718 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/hssf/usermodel/TestBugs.java | 29 ++++++++++++++++++ test-data/spreadsheet/56325a.xls | Bin 0 -> 23552 bytes 2 files changed, 29 insertions(+) create mode 100644 test-data/spreadsheet/56325a.xls diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java index 873647805..73256b689 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java @@ -32,6 +32,7 @@ import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; +import java.io.OutputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; @@ -71,6 +72,7 @@ import org.apache.poi.ss.usermodel.Name; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.util.TempFile; import org.junit.Ignore; import org.junit.Test; @@ -2526,6 +2528,33 @@ public final class TestBugs extends BaseTestBugzillaIssues { wb = HSSFTestDataSamples.writeOutAndReadBack(wb); assertEquals(0, wb.getNumberOfSheets()); } + + @Test + public void bug56325a() throws IOException { + HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("56325a.xls"); + + HSSFSheet sheet = wb.cloneSheet(2); + wb.setSheetName(3, "Clone 1"); + sheet.setRepeatingRows(CellRangeAddress.valueOf("2:3")); + wb.setPrintArea(3, "$A$4:$C$10"); + + sheet = wb.cloneSheet(2); + wb.setSheetName(4, "Clone 2"); + sheet.setRepeatingRows(CellRangeAddress.valueOf("2:3")); + wb.setPrintArea(4, "$A$4:$C$10"); + + wb.removeSheetAt(2); + + Workbook wbBack = HSSFTestDataSamples.writeOutAndReadBack(wb); + assertEquals(4, wbBack.getNumberOfSheets()); + +// OutputStream fOut = new FileOutputStream("/tmp/56325a.xls"); +// try { +// wb.write(fOut); +// } finally { +// fOut.close(); +// } + } /** * Formulas which reference named ranges, either in other diff --git a/test-data/spreadsheet/56325a.xls b/test-data/spreadsheet/56325a.xls new file mode 100644 index 0000000000000000000000000000000000000000..a1e52cb5de57e992bc0dec284ae4bd1e5246f09d GIT binary patch literal 23552 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

pkRT|r3E;T=aiUpU%t!d<`M3x z;9Q#T^f}k(7938OIcMkmog3LW@8=w!AMf*>Kj-<}*u>3uoa=KvfZw0NP0 ze>uQU>^c3Of)q!Zid2Kd`_u4Shcq2&2GUHVSxB>yc>iN0{uYkU&H~qA+behS#_=fw zza8f13;7&XQmi%}QX~3NJjS!g33Zk$%^&xfZD>(8LwXNBQ`x5U*kzG({>6U)&dR3_ zxfUGHkCbo}%SN>cnBS+c?%c)Su5=>B{-DR?_MT@#KKl^+PpJ2gg literal 0 HcmV?d00001 From 30d20582af1ae32a428424300f23e1345bff42c3 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sat, 14 Mar 2015 19:32:28 +0000 Subject: [PATCH 045/301] Bug 56295: Fix cloning of styles across workbooks and handling of default value of attribute applyFill git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1666736 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xssf/usermodel/XSSFCellStyle.java | 41 ++++++++----- .../poi/xssf/usermodel/TestXSSFBugs.java | 57 ++++++++++++++++++ .../poi/xssf/usermodel/TestXSSFCellStyle.java | 10 ++- test-data/spreadsheet/56295.xlsx | Bin 0 -> 4773 bytes 4 files changed, 90 insertions(+), 18 deletions(-) create mode 100644 test-data/spreadsheet/56295.xlsx diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java index d1f075907..760026be1 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java @@ -154,6 +154,13 @@ public class XSSFCellStyle implements CellStyle { _cellXf = CTXf.Factory.parse( src.getCoreXf().toString() ); + + // bug 56295: ensure that the fills is available and set correctly + CTFill fill = CTFill.Factory.parse( + src.getCTFill().toString() + ); + addFill(fill); + // Swap it over _stylesSource.replaceCellXfAt(_cellXfId, _cellXf); } catch(XmlException e) { @@ -187,6 +194,13 @@ public class XSSFCellStyle implements CellStyle { } } + private void addFill(CTFill fill) { + int idx = _stylesSource.putFill(new XSSFCellFill(fill)); + + _cellXf.setFillId(idx); + _cellXf.setApplyFill(true); + } + /** * Get the type of horizontal alignment for the cell * @@ -444,7 +458,8 @@ public class XSSFCellStyle implements CellStyle { * @return XSSFColor - fill color or null if not set */ public XSSFColor getFillBackgroundXSSFColor() { - if(!_cellXf.getApplyFill()) return null; + // bug 56295: handle missing applyFill attribute as "true" because Excel does as well + if(_cellXf.isSetApplyFill() && !_cellXf.getApplyFill()) return null; int fillIndex = (int)_cellXf.getFillId(); XSSFCellFill fg = _stylesSource.getFillAt(fillIndex); @@ -480,7 +495,8 @@ public class XSSFCellStyle implements CellStyle { * @return XSSFColor - fill color or null if not set */ public XSSFColor getFillForegroundXSSFColor() { - if(!_cellXf.getApplyFill()) return null; + // bug 56295: handle missing applyFill attribute as "true" because Excel does as well + if(_cellXf.isSetApplyFill() && !_cellXf.getApplyFill()) return null; int fillIndex = (int)_cellXf.getFillId(); XSSFCellFill fg = _stylesSource.getFillAt(fillIndex); @@ -515,7 +531,8 @@ public class XSSFCellStyle implements CellStyle { * @see org.apache.poi.ss.usermodel.CellStyle#DIAMONDS */ public short getFillPattern() { - if(!_cellXf.getApplyFill()) return 0; + // bug 56295: handle missing applyFill attribute as "true" because Excel does as well + if(_cellXf.isSetApplyFill() && !_cellXf.getApplyFill()) return 0; int fillIndex = (int)_cellXf.getFillId(); XSSFCellFill fill = _stylesSource.getFillAt(fillIndex); @@ -996,10 +1013,7 @@ public class XSSFCellStyle implements CellStyle { ptrn.setBgColor(color.getCTColor()); } - int idx = _stylesSource.putFill(new XSSFCellFill(ct)); - - _cellXf.setFillId(idx); - _cellXf.setApplyFill(true); + addFill(ct); } /** @@ -1052,10 +1066,7 @@ public class XSSFCellStyle implements CellStyle { ptrn.setFgColor(color.getCTColor()); } - int idx = _stylesSource.putFill(new XSSFCellFill(ct)); - - _cellXf.setFillId(idx); - _cellXf.setApplyFill(true); + addFill(ct); } /** @@ -1076,7 +1087,8 @@ public class XSSFCellStyle implements CellStyle { */ private CTFill getCTFill(){ CTFill ct; - if(_cellXf.getApplyFill()) { + // bug 56295: handle missing applyFill attribute as "true" because Excel does as well + if(!_cellXf.isSetApplyFill() || _cellXf.getApplyFill()) { int fillIndex = (int)_cellXf.getFillId(); XSSFCellFill cf = _stylesSource.getFillAt(fillIndex); @@ -1135,10 +1147,7 @@ public class XSSFCellStyle implements CellStyle { if(fp == NO_FILL && ptrn.isSetPatternType()) ptrn.unsetPatternType(); else ptrn.setPatternType(STPatternType.Enum.forInt(fp + 1)); - int idx = _stylesSource.putFill(new XSSFCellFill(ct)); - - _cellXf.setFillId(idx); - _cellXf.setApplyFill(true); + addFill(ct); } /** diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index bb9efa407..5caf72988 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -31,6 +31,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; +import java.io.InputStream; import java.io.OutputStream; import java.util.Calendar; import java.util.List; @@ -2308,4 +2309,60 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { // TODO Re-check sheet contents // TODO Re-check formula evaluation } + + @Test + public void testBug56295_MergeXlslsWithStyles() throws IOException { + XSSFWorkbook xlsToAppendWorkbook = XSSFTestDataSamples.openSampleWorkbook("56295.xlsx"); + XSSFSheet sheet = xlsToAppendWorkbook.getSheetAt(0); + XSSFRow srcRow = sheet.getRow(0); + XSSFCell oldCell = srcRow.getCell(0); + XSSFCellStyle cellStyle = oldCell.getCellStyle(); + + checkStyle(cellStyle); + +// StylesTable table = xlsToAppendWorkbook.getStylesSource(); +// List fills = table.getFills(); +// System.out.println("Having " + fills.size() + " fills"); +// for(XSSFCellFill fill : fills) { +// System.out.println("Fill: " + fill.getFillBackgroundColor() + "/" + fill.getFillForegroundColor()); +// } + + XSSFWorkbook targetWorkbook = new XSSFWorkbook(); + XSSFSheet newSheet = targetWorkbook.createSheet(sheet.getSheetName()); + XSSFRow destRow = newSheet.createRow(0); + XSSFCell newCell = destRow.createCell(0); + + //newCell.getCellStyle().cloneStyleFrom(cellStyle); + CellStyle newCellStyle = targetWorkbook.createCellStyle(); + newCellStyle.cloneStyleFrom(cellStyle); + newCell.setCellStyle(newCellStyle); + checkStyle(newCell.getCellStyle()); + newCell.setCellValue(oldCell.getStringCellValue()); + +// OutputStream os = new FileOutputStream("output.xlsm"); +// try { +// targetWorkbook.write(os); +// } finally { +// os.close(); +// } + + XSSFWorkbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(targetWorkbook); + XSSFCellStyle styleBack = wbBack.getSheetAt(0).getRow(0).getCell(0).getCellStyle(); + checkStyle(styleBack); + } + + private void checkStyle(XSSFCellStyle cellStyle) { + assertNotNull(cellStyle); + assertEquals(0, cellStyle.getFillForegroundColor()); + assertNotNull(cellStyle.getFillForegroundXSSFColor()); + XSSFColor fgColor = cellStyle.getFillForegroundColorColor(); + assertNotNull(fgColor); + assertEquals("FF00FFFF", fgColor.getARGBHex()); + + assertEquals(0, cellStyle.getFillBackgroundColor()); + assertNotNull(cellStyle.getFillBackgroundXSSFColor()); + XSSFColor bgColor = cellStyle.getFillBackgroundColorColor(); + assertNotNull(bgColor); + assertEquals("FF00FFFF", fgColor.getARGBHex()); + } } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java index 8d427be55..4ec812d30 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java @@ -17,6 +17,8 @@ package org.apache.poi.xssf.usermodel; +import java.io.IOException; + import junit.framework.TestCase; import org.apache.poi.hssf.usermodel.HSSFCellStyle; @@ -82,6 +84,9 @@ public class TestXSSFCellStyle extends TestCase { stylesTable.putCellStyleXf(cellStyleXf); stylesTable.putCellXf(cellXf); cellStyle = new XSSFCellStyle(1, 1, stylesTable, null); + + assertNotNull(stylesTable.getFillAt(1).getCTFill().getPatternFill()); + assertEquals(STPatternType.INT_DARK_GRAY, stylesTable.getFillAt(1).getCTFill().getPatternFill().getPatternType().intValue()); } public void testGetSetBorderBottom() { @@ -551,7 +556,7 @@ public class TestXSSFCellStyle extends TestCase { assertEquals(IndexedColors.AUTOMATIC.getIndex(), cellStyle.getFillBackgroundColor()); } - public void testDefaultStyles() { + public void testDefaultStyles() throws IOException { XSSFWorkbook wb1 = new XSSFWorkbook(); @@ -577,6 +582,7 @@ public class TestXSSFCellStyle extends TestCase { assertEquals(style2.getBorderLeft(), style1.getBorderLeft()); assertEquals(style2.getBorderRight(), style1.getBorderRight()); assertEquals(style2.getBorderTop(), style1.getBorderTop()); + wb2.close(); } @@ -618,7 +624,7 @@ public class TestXSSFCellStyle extends TestCase { public void testGetFillPattern() { - assertEquals(CellStyle.NO_FILL, cellStyle.getFillPattern()); + assertEquals(STPatternType.INT_DARK_GRAY-1, cellStyle.getFillPattern()); int num = stylesTable.getFills().size(); cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND); diff --git a/test-data/spreadsheet/56295.xlsx b/test-data/spreadsheet/56295.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..d929d99a18201462f2b8ee50ccbbf87fc9e5c17d GIT binary patch literal 4773 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 Rl20@=JmgOT6~I5H{4c*e>(c-L literal 0 HcmV?d00001 From 666aa6f42ad8c22ebcf566c2fe77633513cb9171 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sat, 14 Mar 2015 19:33:09 +0000 Subject: [PATCH 046/301] Remove Javadoc/Eclipse warnings git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1666737 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/org/apache/poi/hdf/extractor/WordDocument.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/scratchpad/src/org/apache/poi/hdf/extractor/WordDocument.java b/src/scratchpad/src/org/apache/poi/hdf/extractor/WordDocument.java index e8bc31643..929de311b 100644 --- a/src/scratchpad/src/org/apache/poi/hdf/extractor/WordDocument.java +++ b/src/scratchpad/src/org/apache/poi/hdf/extractor/WordDocument.java @@ -114,6 +114,8 @@ public final class WordDocument { /** * right now this function takes one parameter: a Word file, and outputs an * XSL-FO document at c:\test.xml (this is hardcoded) + * + * @param args The document to read */ public static void main(String args[]) { @@ -758,7 +760,7 @@ public final class WordDocument { size = lineHeights.size(); for(int x = 0; x < size; x++) { - Integer height = (Integer)lineHeights.get(x); + Integer height = lineHeights.get(x); sum += height.intValue(); } @@ -1765,7 +1767,7 @@ public final class WordDocument { for(int x = 0; x < size; x++) { StringBuffer rowBuffer = tableBodyBuffer; - TableRow row = (TableRow)_table.get(x); + TableRow row = _table.get(x); TAP tap = row.getTAP(); ArrayList cells = row.getCells(); @@ -1797,7 +1799,7 @@ public final class WordDocument { addBorder(rowBuffer, tc._brcBottom, "bottom"); addBorder(rowBuffer, tc._brcRight, "right"); rowBuffer.append(">"); - rowBuffer.append((String)cells.get(y)); + rowBuffer.append(cells.get(y)); rowBuffer.append(""); } rowBuffer.append(""); From 0216a881f727a0a3eb323f69d2a881ea13a5827b Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 15 Mar 2015 20:52:55 +0000 Subject: [PATCH 047/301] Bug 56017: fix shifting comments with shifted rows and move some more tests into the base classes to run them against XSSF, SXSSF and HSSF git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1666843 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xssf/usermodel/XSSFComment.java | 12 +- .../apache/poi/xssf/usermodel/XSSFSheet.java | 120 +++++++++++++--- .../poi/xssf/streaming/TestSXSSFSheet.java | 7 + .../poi/xssf/usermodel/TestXSSFSheet.java | 108 --------------- .../usermodel/TestXSSFSheetShiftRows.java | 20 --- .../poi/ss/usermodel/BaseTestSheet.java | 128 ++++++++++++++++-- .../ss/usermodel/BaseTestSheetShiftRows.java | 43 +++++- 7 files changed, 275 insertions(+), 163 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFComment.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFComment.java index 5fdd3aa2c..51ef179e6 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFComment.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFComment.java @@ -145,9 +145,17 @@ public class XSSFComment implements Comment { _comment.setRef(newRef); _comments.referenceUpdated(oldRef, _comment); - if(_vmlShape != null) _vmlShape.getClientDataArray(0).setRowArray(0, new BigInteger(String.valueOf(row))); + if(_vmlShape != null) { + _vmlShape.getClientDataArray(0).setRowArray(0, + new BigInteger(String.valueOf(row))); + + // There is a very odd xmlbeans bug when changing the row + // arrays which can lead to corrupt pointer + // This call seems to fix them again... See bug #50795 + _vmlShape.getClientDataList().toString(); + } } - + /** * @return the rich text string of the comment */ diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java index 6a48bf000..f24a33194 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java @@ -25,11 +25,13 @@ import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.Arrays; +import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.SortedMap; import java.util.TreeMap; import javax.xml.namespace.QName; @@ -131,7 +133,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { protected CTSheet sheet; protected CTWorksheet worksheet; - private TreeMap _rows; + private SortedMap _rows; private List hyperlinks; private ColumnHelper columnHelper; private CommentsTable sheetComments; @@ -140,7 +142,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { * Master shared formula is the first formula in a group of shared formulas is saved in the f element. */ private Map sharedFormulas; - private TreeMap tables; + private SortedMap tables; private List arrayFormulas; private XSSFDataValidationHelper dataValidationHelper; @@ -2555,38 +2557,87 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { */ @Override @SuppressWarnings("deprecation") //YK: getXYZArray() array accessors are deprecated in xmlbeans with JDK 1.5 support - public void shiftRows(int startRow, int endRow, int n, boolean copyRowHeight, boolean resetOriginalRowHeight) { - // first remove all rows which will be overwritten + public void shiftRows(int startRow, int endRow, final int n, boolean copyRowHeight, boolean resetOriginalRowHeight) { + XSSFVMLDrawing vml = getVMLDrawing(false); + + // first remove all rows which will be overwritten for (Iterator it = rowIterator() ; it.hasNext() ; ) { XSSFRow row = (XSSFRow)it.next(); int rownum = row.getRowNum(); // check if we should remove this row as it will be overwritten by the data later - if (removeRow(startRow, endRow, n, rownum)) { + if (shouldRemoveRow(startRow, endRow, n, rownum)) { // remove row from worksheet.getSheetData row array int idx = _rows.headMap(row.getRowNum()).size(); worksheet.getSheetData().removeRow(idx); + // remove row from _rows it.remove(); + + // also remove any comments associated with this row + if(sheetComments != null){ + CTCommentList lst = sheetComments.getCTComments().getCommentList(); + for (CTComment comment : lst.getCommentArray()) { + String strRef = comment.getRef(); + CellReference ref = new CellReference(strRef); + + // is this comment part of the current row? + if(ref.getRow() == rownum) { + sheetComments.removeComment(strRef); + vml.removeCommentShape(ref.getRow(), ref.getCol()); + } + } + } } } // then do the actual moving and also adjust comments/rowHeight + // we need to sort it in a way so the shifting does not mess up the structures, + // i.e. when shifting down, start from down and go up, when shifting up, vice-versa + SortedMap commentsToShift = new TreeMap(new Comparator() { + public int compare(XSSFComment o1, XSSFComment o2) { + int row1 = new CellReference(o1.getCTComment().getRef()).getRow(); + int row2 = new CellReference(o2.getCTComment().getRef()).getRow(); + + if(row1 == row2) { + return 0; + } + + // when shifting down, sort higher row-values first + if(n > 0) { + return row1 < row2 ? 1 : -1; + } else { + // sort lower-row values first when shifting up + return row1 > row2 ? 1 : -1; + } + } + }); + for (Iterator it = rowIterator() ; it.hasNext() ; ) { XSSFRow row = (XSSFRow)it.next(); int rownum = row.getRowNum(); if(sheetComments != null){ - //TODO shift Note's anchor in the associated /xl/drawing/vmlDrawings#.vml - CTCommentList lst = sheetComments.getCTComments().getCommentList(); - for (CTComment comment : lst.getCommentArray()) { - String oldRef = comment.getRef(); - CellReference ref = new CellReference(oldRef); - if(ref.getRow() == rownum){ - ref = new CellReference(rownum + n, ref.getCol()); - comment.setRef(ref.formatAsString()); - sheetComments.referenceUpdated(oldRef, comment); - } + // calculate the new rownum + int newrownum = shiftedRowNum(startRow, endRow, n, rownum); + + // is there a change necessary for the current row? + if(newrownum != rownum) { + CTCommentList lst = sheetComments.getCTComments().getCommentList(); + for (CTComment comment : lst.getCommentArray()) { + String oldRef = comment.getRef(); + CellReference ref = new CellReference(oldRef); + + // is this comment part of the current row? + if(ref.getRow() == rownum) { + XSSFComment xssfComment = new XSSFComment(sheetComments, comment, + vml == null ? null : vml.findCommentShape(rownum, ref.getCol())); + + // we should not perform the shifting right here as we would then find + // already shifted comments and would shift them again... + commentsToShift.put(xssfComment, newrownum); + } + } } } @@ -2598,6 +2649,14 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { row.shift(n); } + + // adjust all the affected comment-structures now + // the Map is sorted and thus provides them in the order that we need here, + // i.e. from down to up if shifting down, vice-versa otherwise + for(Map.Entry entry : commentsToShift.entrySet()) { + entry.getKey().setRow(entry.getValue()); + } + XSSFRowShifter rowShifter = new XSSFRowShifter(this); int sheetIndex = getWorkbook().getSheetIndex(this); @@ -2611,13 +2670,40 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { rowShifter.updateConditionalFormatting(shifter); //rebuild the _rows map - TreeMap map = new TreeMap(); + SortedMap map = new TreeMap(); for(XSSFRow r : _rows.values()) { map.put(r.getRowNum(), r); } _rows = map; } + private int shiftedRowNum(int startRow, int endRow, int n, int rownum) { + // no change if before any affected row + if(rownum < startRow && (n > 0 || (startRow - rownum) > n)) { + return rownum; + } + + // no change if after any affected row + if(rownum > endRow && (n < 0 || (rownum - endRow) > n)) { + return rownum; + } + + // row before and things are moved up + if(rownum < startRow) { + // row is moved down by the shifting + return rownum + (endRow - startRow); + } + + // row is after and things are moved down + if(rownum > endRow) { + // row is moved up by the shifting + return rownum - (endRow - startRow); + } + + // row is part of the shifted block + return rownum + n; + } + /** * Location of the top left visible cell Location of the top left visible cell in the bottom right * pane (when in Left-to-Right mode). @@ -2873,7 +2959,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { return sheetPr.isSetPageSetUpPr() ? sheetPr.getPageSetUpPr() : sheetPr.addNewPageSetUpPr(); } - private boolean removeRow(int startRow, int endRow, int n, int rownum) { + private boolean shouldRemoveRow(int startRow, int endRow, int n, int rownum) { // is this row in the target-window where the moved rows will land? if (rownum >= (startRow + n) && rownum <= (endRow + n)) { // only remove it if the current row is not part of the data that is copied diff --git a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFSheet.java b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFSheet.java index 2cf660955..ad3c44383 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFSheet.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFSheet.java @@ -89,6 +89,13 @@ public class TestSXSSFSheet extends BaseTestSheet { super.bug35084(); } + @Test + public void getCellComment() throws IOException { + // TODO: reading cell comments via Sheet does not work currently as it tries + // to access the underlying sheet for this, but comments are stored as + // properties on Cells... + } + @Override @Test public void defaultColumnStyle() { diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java index d8f56f84e..785af694d 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java @@ -36,21 +36,17 @@ import org.apache.poi.poifs.crypt.HashAlgorithm; import org.apache.poi.ss.usermodel.AutoFilter; import org.apache.poi.ss.usermodel.BaseTestSheet; import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.CreationHelper; -import org.apache.poi.ss.usermodel.RichTextString; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.util.AreaReference; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellReference; -import org.apache.poi.xssf.SXSSFITestDataProvider; import org.apache.poi.xssf.XSSFITestDataProvider; import org.apache.poi.xssf.XSSFTestDataSamples; import org.apache.poi.xssf.model.CalculationChain; import org.apache.poi.xssf.model.CommentsTable; import org.apache.poi.xssf.model.StylesTable; -import org.apache.poi.xssf.streaming.SXSSFSheet; import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.apache.poi.xssf.usermodel.helpers.ColumnHelper; import org.junit.Test; @@ -60,8 +56,6 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.*; @SuppressWarnings("resource") public final class TestXSSFSheet extends BaseTestSheet { - private static final int ROW_COUNT = 40000; - public TestXSSFSheet() { super(XSSFITestDataProvider.instance); } @@ -188,39 +182,6 @@ public final class TestXSSFSheet extends BaseTestSheet { assertTrue(col.getBestFit()); } - /** - * XSSFSheet autoSizeColumn() on empty RichTextString fails - */ - @Test - public void bug48325() { - XSSFWorkbook wb = new XSSFWorkbook(); - XSSFSheet sheet = wb.createSheet("Test"); - CreationHelper factory = wb.getCreationHelper(); - - XSSFRow row = sheet.createRow(0); - XSSFCell cell = row.createCell(0); - - XSSFFont font = wb.createFont(); - RichTextString rts = factory.createRichTextString(""); - rts.applyFont(font); - cell.setCellValue(rts); - - sheet.autoSizeColumn(0); - } - - @Test - public void getCellComment() { - XSSFWorkbook workbook = new XSSFWorkbook(); - XSSFSheet sheet = workbook.createSheet(); - XSSFDrawing dg = sheet.createDrawingPatriarch(); - XSSFComment comment = dg.createCellComment(new XSSFClientAnchor()); - XSSFCell cell = sheet.createRow(9).createCell(2); - comment.setAuthor("test C10 author"); - cell.setCellComment(comment); - - assertNotNull(sheet.getCellComment(9, 2)); - assertEquals("test C10 author", sheet.getCellComment(9, 2).getAuthor()); - } @Test public void setCellComment() { @@ -268,16 +229,6 @@ public final class TestXSSFSheet extends BaseTestSheet { assertEquals(STPane.BOTTOM_RIGHT, ctWorksheet.getSheetViews().getSheetViewArray(0).getPane().getActivePane()); } - @Test - public void newMergedRegionAt() { - XSSFWorkbook workbook = new XSSFWorkbook(); - XSSFSheet sheet = workbook.createSheet(); - CellRangeAddress region = CellRangeAddress.valueOf("B2:D4"); - sheet.addMergedRegion(region); - assertEquals("B2:D4", sheet.getMergedRegion(0).formatAsString()); - assertEquals(1, sheet.getNumMergedRegions()); - } - @Test public void removeMergedRegion_lowlevel() { XSSFWorkbook workbook = new XSSFWorkbook(); @@ -1244,53 +1195,6 @@ public final class TestXSSFSheet extends BaseTestSheet { } } - @Test - public void showInPaneManyRowsBug55248() { - XSSFWorkbook workbook = new XSSFWorkbook(); - XSSFSheet sheet = workbook.createSheet("Sheet 1"); - - sheet.showInPane(0, 0); - - for(int i = ROW_COUNT/2;i < ROW_COUNT;i++) { - sheet.createRow(i); - sheet.showInPane(i, 0); - // this one fails: sheet.showInPane((short)i, 0); - } - - int i = 0; - sheet.showInPane(i, i); - - XSSFWorkbook wb = XSSFTestDataSamples.writeOutAndReadBack(workbook); - checkRowCount(wb); - } - - @Test - public void showInPaneManyRowsBug55248SXSSF() { - SXSSFWorkbook workbook = new SXSSFWorkbook(new XSSFWorkbook()); - SXSSFSheet sheet = (SXSSFSheet) workbook.createSheet("Sheet 1"); - - sheet.showInPane(0, 0); - - for(int i = ROW_COUNT/2;i < ROW_COUNT;i++) { - sheet.createRow(i); - sheet.showInPane(i, 0); - // this one fails: sheet.showInPane((short)i, 0); - } - - int i = 0; - sheet.showInPane(i, i); - - Workbook wb = SXSSFITestDataProvider.instance.writeOutAndReadBack(workbook); - checkRowCount(wb); - } - - private void checkRowCount(Workbook wb) { - assertNotNull(wb); - final Sheet sh = wb.getSheet("Sheet 1"); - assertNotNull(sh); - assertEquals(ROW_COUNT-1, sh.getLastRowNum()); - } - @Test public void bug55745() throws Exception { XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("55745.xlsx"); @@ -1472,16 +1376,4 @@ public final class TestXSSFSheet extends BaseTestSheet { XSSFSheet sheet = wb.createSheet(); assertNotNull(sheet.createComment()); } - - @Test - public void testRightToLeft() { - XSSFWorkbook wb = new XSSFWorkbook(); - XSSFSheet sheet = wb.createSheet(); - - assertFalse(sheet.isRightToLeft()); - sheet.setRightToLeft(true); - assertTrue(sheet.isRightToLeft()); - sheet.setRightToLeft(false); - assertFalse(sheet.isRightToLeft()); - } } \ No newline at end of file diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheetShiftRows.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheetShiftRows.java index e949dd13d..e915ee0d4 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheetShiftRows.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheetShiftRows.java @@ -25,7 +25,6 @@ import org.apache.poi.ss.usermodel.Comment; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; -import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellUtil; import org.apache.poi.xssf.XSSFITestDataProvider; import org.apache.poi.xssf.XSSFTestDataSamples; @@ -44,11 +43,6 @@ public final class TestXSSFSheetShiftRows extends BaseTestSheetShiftRows { // TODO - support shifting of page breaks } - @Override - public void testShiftWithComments() { // disabled test from superclass - // TODO - support shifting of comments. - } - public void testBug54524() throws IOException { XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("54524.xlsx"); XSSFSheet sheet = workbook.getSheetAt(0); @@ -61,7 +55,6 @@ public final class TestXSSFSheetShiftRows extends BaseTestSheetShiftRows { cell = CellUtil.getCell(sheet.getRow(3), 0); assertEquals("X", cell.getStringCellValue()); } - public void testBug53798() throws IOException { // NOTE that for HSSF (.xls) negative shifts combined with positive ones do work as expected @@ -189,19 +182,6 @@ public final class TestXSSFSheetShiftRows extends BaseTestSheetShiftRows { assertEquals("Amdocs:\ntest\n", comment.getString().getString()); } - public void testBug55280() throws IOException { - Workbook w = new XSSFWorkbook(); - try { - Sheet s = w.createSheet(); - for (int row = 0; row < 5000; ++row) - s.addMergedRegion(new CellRangeAddress(row, row, 0, 3)); - - s.shiftRows(0, 4999, 1); // takes a long time... - } finally { - w.close(); - } - } - public void test57171() throws Exception { Workbook wb = XSSFTestDataSamples.openSampleWorkbook("57171_57163_57165.xlsx"); assertEquals(5, wb.getActiveSheetIndex()); diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheet.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheet.java index 480235f5e..55f9795e3 100644 --- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheet.java +++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheet.java @@ -17,17 +17,13 @@ package org.apache.poi.ss.usermodel; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertSame; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; +import static junit.framework.TestCase.assertNotNull; +import static junit.framework.TestCase.assertTrue; +import static org.junit.Assert.*; +import java.io.IOException; import java.util.Iterator; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.PaneInformation; import org.apache.poi.ss.ITestDataProvider; import org.apache.poi.ss.SpreadsheetVersion; @@ -41,13 +37,15 @@ import org.junit.rules.ExpectedException; * {@link org.apache.poi.hssf.usermodel.HSSFCell} */ public abstract class BaseTestSheet { + private static final int ROW_COUNT = 40000; + @Rule public ExpectedException thrown = ExpectedException.none(); private final ITestDataProvider _testDataProvider; protected BaseTestSheet(ITestDataProvider testDataProvider) { - _testDataProvider = testDataProvider; + _testDataProvider = testDataProvider; } @Test @@ -851,22 +849,126 @@ public abstract class BaseTestSheet { } @Test - public void bug55723_Rows() { - HSSFWorkbook wb = new HSSFWorkbook(); + public void bug55723_Rows() throws IOException { + Workbook wb = _testDataProvider.createWorkbook(); Sheet sheet = wb.createSheet(); CellRangeAddress range = CellRangeAddress.valueOf("A4:B55000"); AutoFilter filter = sheet.setAutoFilter(range); assertNotNull(filter); + + wb.close(); } @Test - public void bug55723d_RowsOver65k() { - HSSFWorkbook wb = new HSSFWorkbook(); + public void bug55723d_RowsOver65k() throws IOException { + Workbook wb = _testDataProvider.createWorkbook(); Sheet sheet = wb.createSheet(); CellRangeAddress range = CellRangeAddress.valueOf("A4:B75000"); AutoFilter filter = sheet.setAutoFilter(range); assertNotNull(filter); + + wb.close(); + } + + /** + * XSSFSheet autoSizeColumn() on empty RichTextString fails + * @throws IOException + */ + @Test + public void bug48325() throws IOException { + Workbook wb = _testDataProvider.createWorkbook(); + Sheet sheet = wb.createSheet("Test"); + CreationHelper factory = wb.getCreationHelper(); + + Row row = sheet.createRow(0); + Cell cell = row.createCell(0); + + Font font = wb.createFont(); + RichTextString rts = factory.createRichTextString(""); + rts.applyFont(font); + cell.setCellValue(rts); + + sheet.autoSizeColumn(0); + + assertNotNull(_testDataProvider.writeOutAndReadBack(wb)); + + wb.close(); + } + + @Test + public void getCellComment() throws IOException { + Workbook workbook = _testDataProvider.createWorkbook(); + Sheet sheet = workbook.createSheet(); + Drawing dg = sheet.createDrawingPatriarch(); + Comment comment = dg.createCellComment(workbook.getCreationHelper().createClientAnchor()); + Cell cell = sheet.createRow(9).createCell(2); + comment.setAuthor("test C10 author"); + cell.setCellComment(comment); + + assertNotNull(sheet.getCellComment(9, 2)); + assertEquals("test C10 author", sheet.getCellComment(9, 2).getAuthor()); + + assertNotNull(_testDataProvider.writeOutAndReadBack(workbook)); + + workbook.close(); + } + + + @Test + public void newMergedRegionAt() throws IOException { + Workbook workbook = _testDataProvider.createWorkbook(); + Sheet sheet = workbook.createSheet(); + CellRangeAddress region = CellRangeAddress.valueOf("B2:D4"); + sheet.addMergedRegion(region); + assertEquals("B2:D4", sheet.getMergedRegion(0).formatAsString()); + assertEquals(1, sheet.getNumMergedRegions()); + + assertNotNull(_testDataProvider.writeOutAndReadBack(workbook)); + + workbook.close(); + } + + @Test + public void showInPaneManyRowsBug55248() { + Workbook workbook = _testDataProvider.createWorkbook(); + Sheet sheet = workbook.createSheet("Sheet 1"); + + sheet.showInPane(0, 0); + + for(int i = ROW_COUNT/2;i < ROW_COUNT;i++) { + sheet.createRow(i); + sheet.showInPane(i, 0); + // this one fails: sheet.showInPane((short)i, 0); + } + + int i = 0; + sheet.showInPane(i, i); + + Workbook wb = _testDataProvider.writeOutAndReadBack(workbook); + checkRowCount(wb); + } + + private void checkRowCount(Workbook wb) { + assertNotNull(wb); + final Sheet sh = wb.getSheet("Sheet 1"); + assertNotNull(sh); + assertEquals(ROW_COUNT-1, sh.getLastRowNum()); + } + + + @Test + public void testRightToLeft() throws IOException { + Workbook wb = _testDataProvider.createWorkbook(); + Sheet sheet = wb.createSheet(); + + assertFalse(sheet.isRightToLeft()); + sheet.setRightToLeft(true); + assertTrue(sheet.isRightToLeft()); + sheet.setRightToLeft(false); + assertFalse(sheet.isRightToLeft()); + + wb.close(); } } diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetShiftRows.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetShiftRows.java index 9146db752..4c9d25de0 100644 --- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetShiftRows.java +++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetShiftRows.java @@ -17,8 +17,11 @@ package org.apache.poi.ss.usermodel; +import java.io.IOException; + import junit.framework.TestCase; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.ITestDataProvider; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellReference; @@ -134,8 +137,7 @@ public abstract class BaseTestSheetShiftRows extends TestCase { assertTrue("Row number 6 should have a pagebreak", s.isRowBroken(6)); } - public void testShiftWithComments() { // TODO - enable XSSF test - + public void testShiftWithComments() { Workbook wb = _testDataProvider.openSampleWorkbook("comments." + _testDataProvider.getStandardFileNameExtension()); Sheet sheet = wb.getSheet("Sheet1"); @@ -154,6 +156,8 @@ public abstract class BaseTestSheetShiftRows extends TestCase { String comment4 = sheet.getCellComment(3,0).getString().getString(); assertEquals(comment4,"comment top row4 (index3)\n"); + //Workbook wbBack = _testDataProvider.writeOutAndReadBack(wb); + // Shifting all but first line down to test comments shifting sheet.shiftRows(1, sheet.getLastRowNum(), 1, true, true); @@ -191,6 +195,26 @@ public abstract class BaseTestSheetShiftRows extends TestCase { assertEquals(comment3,comment3_shifted); comment4_shifted = sheet.getCellComment(4,0).getString().getString(); assertEquals(comment4,comment4_shifted); + + // Shifting back up again, now two rows + sheet.shiftRows(2, sheet.getLastRowNum(), -2, true, true); + + // TODO: it seems HSSFSheet does not correctly remove comments from rows that are overwritten + // by shifting rows... + if(!(wb instanceof HSSFWorkbook)) { + assertEquals(2, sheet.getLastRowNum()); + + // Verify comments are in the position expected + assertNull("Had: " + (sheet.getCellComment(0,0) == null ? "null" : sheet.getCellComment(0,0).getString()), + sheet.getCellComment(0,0)); + assertNotNull(sheet.getCellComment(1,0)); + assertNotNull(sheet.getCellComment(2,0)); + } + + comment1 = sheet.getCellComment(1,0).getString().getString(); + assertEquals(comment1,"comment top row3 (index2)\n"); + String comment2 = sheet.getCellComment(2,0).getString().getString(); + assertEquals(comment2,"comment top row4 (index3)\n"); } public final void testShiftWithNames() { @@ -378,6 +402,19 @@ public abstract class BaseTestSheetShiftRows extends TestCase { assertEquals("SUM(G29:I29)", sheet.getRow(28).getCell(9).getCellFormula()); assertEquals("SUM(G30:I30)", sheet.getRow(29).getCell(9).getCellFormula()); - } + + public void testBug55280() throws IOException { + Workbook w = _testDataProvider.createWorkbook(); + try { + Sheet s = w.createSheet(); + for (int row = 0; row < 5000; ++row) + s.addMergedRegion(new CellRangeAddress(row, row, 0, 3)); + + s.shiftRows(0, 4999, 1); // takes a long time... + } finally { + w.close(); + } + } + } \ No newline at end of file From f9961331ff0417ce2a27c36ed1092eec3958598c Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 22 Mar 2015 13:33:43 +0000 Subject: [PATCH 048/301] Bug 47304: use fixed encoding when extracting text in WordDocument git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1668367 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/stress/HWPFFileHandler.java | 48 +++++++++++++++++- .../poi/hdf/extractor/WordDocument.java | 2 +- .../poi/hdf/extractor/TestWordDocument.java | 36 +++++++++++++ test-data/document/47304.doc | Bin 0 -> 22016 bytes 4 files changed, 84 insertions(+), 2 deletions(-) create mode 100644 test-data/document/47304.doc diff --git a/src/integrationtest/org/apache/poi/stress/HWPFFileHandler.java b/src/integrationtest/org/apache/poi/stress/HWPFFileHandler.java index 1b6d4646c..5f24337fb 100644 --- a/src/integrationtest/org/apache/poi/stress/HWPFFileHandler.java +++ b/src/integrationtest/org/apache/poi/stress/HWPFFileHandler.java @@ -18,12 +18,21 @@ package org.apache.poi.stress; import static org.junit.Assert.assertNotNull; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; import java.io.FileInputStream; +import java.io.IOException; import java.io.InputStream; +import java.io.PrintWriter; +import java.io.StringWriter; +import org.apache.poi.hdf.extractor.WordDocument; import org.apache.poi.hwpf.HWPFDocument; +import org.apache.poi.hwpf.extractor.WordExtractor; import org.junit.Test; +@SuppressWarnings("deprecation") public class HWPFFileHandler extends POIFSFileHandler { @Override public void handleFile(InputStream stream) throws Exception { @@ -33,16 +42,53 @@ public class HWPFFileHandler extends POIFSFileHandler { assertNotNull(doc.getEndnotes()); handlePOIDocument(doc); + + // fails for many documents, but is deprecated anyway... + // handleWordDocument(doc); } + protected void handleWordDocument(HWPFDocument doc) throws IOException { + ByteArrayOutputStream outStream = new ByteArrayOutputStream(); + doc.write(outStream); + + WordDocument wordDoc = new WordDocument(new ByteArrayInputStream(outStream.toByteArray())); + + StringWriter docTextWriter = new StringWriter(); + PrintWriter out = new PrintWriter(docTextWriter); + try { + wordDoc.writeAllText(out); + } finally { + out.close(); + } + docTextWriter.close(); + } + + + // a test-case to test this locally without executing the full TestAllFiles @Test public void test() throws Exception { - InputStream stream = new FileInputStream("test-data/document/HeaderFooterUnicode.doc"); + File file = new File("test-data/document/47304.doc"); + + InputStream stream = new FileInputStream(file); try { handleFile(stream); } finally { stream.close(); } + + handleExtracting(file); + + stream = new FileInputStream(file); + try { + WordExtractor extractor = new WordExtractor(stream); + try { + assertNotNull(extractor.getText()); + } finally { + extractor.close(); + } + } finally { + stream.close(); + } } } \ No newline at end of file diff --git a/src/scratchpad/src/org/apache/poi/hdf/extractor/WordDocument.java b/src/scratchpad/src/org/apache/poi/hdf/extractor/WordDocument.java index 929de311b..ff5330032 100644 --- a/src/scratchpad/src/org/apache/poi/hdf/extractor/WordDocument.java +++ b/src/scratchpad/src/org/apache/poi/hdf/extractor/WordDocument.java @@ -177,7 +177,7 @@ public final class WordDocument { } else { - String sText = new String(_header, start, end-start); + String sText = new String(_header, start, end-start, "windows-1252"); out.write(sText); } } diff --git a/src/scratchpad/testcases/org/apache/poi/hdf/extractor/TestWordDocument.java b/src/scratchpad/testcases/org/apache/poi/hdf/extractor/TestWordDocument.java index 1cf29f437..f0941674f 100644 --- a/src/scratchpad/testcases/org/apache/poi/hdf/extractor/TestWordDocument.java +++ b/src/scratchpad/testcases/org/apache/poi/hdf/extractor/TestWordDocument.java @@ -17,6 +17,15 @@ package org.apache.poi.hdf.extractor; +import static org.junit.Assert.*; + +import java.io.IOException; +import java.io.PrintWriter; +import java.io.StringWriter; + +import org.apache.poi.hwpf.HWPFDocument; +import org.apache.poi.hwpf.HWPFTestDataSamples; +import org.apache.poi.hwpf.extractor.WordExtractor; import org.junit.Test; @@ -31,4 +40,31 @@ public class TestWordDocument { //WordDocument.main(new String[] {"test-data/document/Word6.doc", "/tmp/test.doc"}); WordDocument.main(new String[] {"test-data/document/53446.doc", "/tmp/test.doc"}); } + + @SuppressWarnings("deprecation") + @Test + public void test47304() throws IOException { + HWPFDocument doc = HWPFTestDataSamples.openSampleFile("47304.doc"); + assertNotNull(doc); + + WordExtractor extractor = new WordExtractor(doc); + String text = extractor.getText(); + //System.out.println(text); + assertTrue("Had: " + text, text.contains("Just a \u201Ctest\u201D")); + extractor.close(); + + WordDocument wordDoc = new WordDocument("test-data/document/47304.doc"); + + StringWriter docTextWriter = new StringWriter(); + PrintWriter out = new PrintWriter(docTextWriter); + try { + wordDoc.writeAllText(out); + } finally { + out.close(); + } + docTextWriter.close(); + + //System.out.println(docTextWriter.toString()); + assertTrue("Had: " + docTextWriter.toString(), docTextWriter.toString().contains("Just a \u201Ctest\u201D")); + } } diff --git a/test-data/document/47304.doc b/test-data/document/47304.doc new file mode 100644 index 0000000000000000000000000000000000000000..d59d8d7ee1e8768039ca509bc1132f86ba260f1e GIT binary patch literal 22016 zcmeHP2|Sfq8$b76%OxUPmX_;MX_9Lx3@KU4WKBg2>EdR0Z|+5EipVrA2Bj1xOp1(T zl$Jr!GNmYOBzsMh8dJ1Mi~Bw2@|H9v^Zn+VZM<=JoLTe9RsPfT%G1jV#cfBv)lXM)W4E)pV2NOw3wmFc~ZdoTCH1fMVSmN{6Q zC~#B|$rJ5OW6GBAjsF%^AgTk6=_`NlH>ebpdjk2G66He`5qbz|eqX(h(OZ2=2U2B_ zLk2mjKyer<^-@CU8>lF%g3zqKdVL}Ua)=9I2SP8wCn&-1PobMp6SNmoqCKzs+E2(M zC~@C}Je;nF1OplaO+-Y!f%G=WlZ5<%at5ZcefkGNPJiA|;>7)ZOdcVhXa_-uqT|=f z5b_4*apKmuH{7Yf6Qdvy5QHy`}!R zD`6ijf7Bl*_D`2YjE{lz_cnx>A29WX%0#~sa{A|E-oSjK+&_)txp^Z@pi^P`H-S+v zj-*I3NE%}Jts)G6Z41l^IGDBIzS^KLsSzmt^lEt1!u_00I7sC*r5@Ie~<;f5|Kf2;O;BHnvD#5KKKv& zhcG3eoq*jRfgx-VeGFkRYCeX+WK4&;gXR4%_&IRDgk0?967j+4u_2ThSl1VxJR873 z{=YF@0K;vl_pJ|OO%?2226d_dEr1RH-p-H(&;YssbAS_I8Gr+b0we$itB2)k!8p4K zebNS?LD~OC&cD5$G1zV);01sR_EZMA0M-I%&`pkWD98yg7vNz-5(%=A5D5lw0XzT{ zLFUkHoqRG-DcCF#ELC6++5xdq2ns?>6bNNN98yM>bCd;Am_V_l{!*YozhH%C(jN0O zkrk49>)j|piiMVg#88mQgZ4Q=JOtn)xN?v$@MeMDV93S68Tp|n{6j#cN(tdoXg<{N z1PLrC{eCM)p^?vFa89WaLnKK`U~fbeI84kYqhTOK3kA@g^2_l~`rDR?3*^v{9q8i< zbdv@9lQ5=jDIyAB4LmoiBipZ^E5pQ%Mu9o-R^<{)b})|>%=4HZ!C`UTbyfxi<|SVA zKdmck-4)vtQ+?!S$oE=%Z(jN)-hJ%mrxdY>z|FTb)a@-Eca1h3o+M{6vXPp#>v&hg z+~ZC0F}Ij@m*(wtjmT8o`Ydiw{?+u<U|#^nWT7X{3&Vzg8qJ#gse z%Hq+Y2I=G2N|z1tMr`1bo^L5HjB^`*&wPKl`q!g+k{&49)Tr<$)YHSrx=)&Gn!y}= zJ`A?^47Rr>`(7F37=qET@jXIVfn0_TzOIkI42F{0@F=!4=E|D6S5GUC3uEj}uw?96 zgIcvBed%iTYCqRIo)eQSrmoL=)V1HNCx3HyYtlWMQcAAa>D!hwF8a2HnVpP`u87Ub z9!FiWlJmu$)%8UlB~DlNOsmpU+iP<~ce|X-mvxRM&iNMJS1M$$&atka;;9*#ow&lI zcI?jGDlLX~*Pbak*BUL$kI$*#A3CjDx!bWk@}TxzYms21Bs;$!Ju`C{cjlEQ(A=BfNgVdub93^86(y$69Sn*OrKn8klrEaBscAKHRL+?=3i*>Fx#Y)wWNW9a zwW3Xx?fK!iSKLWLic>b!n7&%gZhBQZw}WOL`%DW|q%XN}mhQ7S*^#H&jSN-{mS%8ESR-%u7ubNQrx;lc!UDX)lKKAN%N z6dk#|mbp?R>FeUn*{76tD2;R-DQ9;L?KLJ99TlUf%3Z(qNlcYRL~6NLZq^v;t~UQ0 zXA*U9wq@)a5u&}sF2k}?l~gI;xo6C$E+o%|pRBw>RjTqRD2NCpv46C%t4cUQkIM$Uk1sb~6aF^scQwnGNJnu!(*&8oww#FFIHhb(kRhzoxKuxY7 z@%5?j{JeuT?j@wNTlR_1^BrC7Frjv-g;?4zD_aAQ$CAocc?ECFUGA$kksNR2x!HD@ z>6oBu^Dh+b6IFe@qb$$gR$6|Tk+U1IW!)mYHduT*HS3;*zQUAwaV;@YmezJpOFw_! zc+tnPy5ddtgs#YG5gjc*_Q<#-Y81s>V=j1b)+oKFvrXgat8E88roC>6PhRkv(H!~u ziDP>AI;ZLK+})9#FKV;n(<8ep*v-?QmK_y&=-O(QBD*notH$BW@|?f!b@9k29tvg{41jixyjyDtA6 z6w*e|{6zPOatAOm-qC!*ES?hg?ai*cq%5sjtKGU=iW?5d zzL8o{cE6I-oOwo~tFE!daJ0#IdpWCw8Nc=B?U& z^oql(Nr&A_OTSC?JY?;#{9%H4(s%i)1|gOy_J!+1=?}^>b{J$^I`7_DsJ!;4HI3!c zqK5i5oM-9_Rv7)D5?Bzh&P6}z_=8L$b&t2ZO+5C-WZR9ybGesY4EF7ExmW4(y_8;Bn6#L! zA(Illte&iW@Km>(qqMkurA=1E(E#=cCHdHs6ReKc)+8#=KJ&$SmHdK52H#C`KJO-L zJ}1H=e7d1+P1NB-ak_qbrjb8s9(U4JUzFUq-`~@(=*YrNU#XVAyl{0+lttRqXws<9 zT79<8tj=mGWE!qt{k4-sYLQRPHxsXJJoj@?UT*p1(_5lfTrie*4)Ri|S59$_$XS@{ zQ}~>5;Cg7G`xc7fT#wV6?oPEyjI5HR7O5@PS59zR5aX_LrJ?RziTvY4`ZsE`XXjj= zsGWt_pRgStG?YRA#u7)c)Y_KWh?`ddTZJemO$)*@ji|&IgRLHze6+ zA6OT;>W=4Tl{Ay0MG z!r}nanxu2KlVVrMp7o1o7BpP;=D5c^ol(#;cZB{c=1fM8*$J6a#qx0S#j(+OC$frF zy%T~Hp1Y2HZWdNOewzzxe^vPOlp@dXPPD}NfBI-*VG--enOAAv$*Ef5CfQ1it?g;d z4FRTx+x)+5zb_Y?IdjEuy>)sXS-E55R`SP)tWwLrH@kA}tgR~3cA1=izP=)Vdi)RF zj^lrc4mjkH&YZG!?p!aSS$d&;X6N>G ztE4Yn@BDV+#a-mb`{ZS&TT4pK-j;v=WI@|aJEMuk-4o#T{^0^Z`bt9j5y(-4Jf1IEd%;iLH3fTbQRWjMTb+_>}%i4CXR3XviiVv%K9ItN*m75oZJ43biOuK zX9M%ZF2CaBuPfxe^qcg2b5*G(_qVS|DGxf<{*}42lEcP2Q}2Rh(OM6VW22$DK zl)^vs##nWu4`Zy7d(YgN+`3p%t#5v)Y|%)~wG+9pyj$dv$dl3F>teY7e&JVE z$xgQK3mCXgd{`I3g88#18`EiA9y8dR8ORQ1nb9LyT>6aZ(vs7dCSHLd_Dl{91O#(Um}Yce9*<+f zU~s))k;>%iusN(?$Xm`131adf8REn64q=9a;GjT;zOJqzBZ%o2Os9GJ=$X+2d3tmj zZzaUM10d$*p>{_8yAIFH~w4fv1vXbCQauY3!fHb-MRaT|LN zdhtMvgFBMdTyOTkb4qZsgAdwC&0bim63m6#4NK#M_TLd=_ zm$v{a*T*LTADe0(8rCreq9;LtEV_u*AU<5FNQ5E*@fj3+XbFtifh*t`HYElQn1WBy zcf~0aNaIqtG;a4@01@zhINzL1G#B@mIo1jnKGq3U7r?ea0Dz6c;flFf2oZWq^;(Ne z*o==Y+iO3pbhcOmh$554D54^wWQqvv3A`7u9vtSwHb4+;FK`jwU|@kh8f-zZ1)Cwk zkUtgVkU_GbX9YEg3n2kTVa_}h0d+i~Cf-6Z=+!<ey>&!H zp~Yg9!RuH;d910oCW7{gpib(SRMb&TMhI_yBBZBKGfN+UtAtL=Z*xZTsJH z3644i2?i697E}~ohG+q*c!sDi$(Ixrr9TA^YZbw9mcCO)LzFRiG3a6>O@G|&=qvkeA{9-VaHtNOTmj}e z{G!772>{&PI{|q5$^zi2tpI?hqY?m~b zXAUbch!sM!4dt*xLZPn-d3t@a@r%;l&ntw@WiRK^T-hPsG(CMCSOo#!9Drt>*1*IZ zUwXn0;nRSExRpsQj$>Ov(*-sI@&TOFC!f^zT5_SG4Ns1~{E zR1(!9l0OWoQ*$HvBz5Ya8`l86&m#E}0gD3`dnt#P1}x^Lc`5sR>hmc#t*oy->b+&C z+%)!TZrbW5_UcGJH!ZxBn|AX5(Bl7>rG$F_{Lv}2xzOhSwlN@<122k5J|!DoGYG$C zgh6Nlp#_8%5L!TJ0igx{Mi%%j|DSxL>PDK5n(Ve@@c*^D^Ra(>9e}?9VE=U)0Q>pA z0KA#Z0bsv;C14~V3V_Rg3BZ1J0s#B(c)tLjt;_&me;+RJVMfCfMlfb-t~;FG=} zj?);z@V~JDK1#+G{Qk{a@JqK4I41Ucf)WxX5iP@GNK68cCWOiaSHVB9>W#tG`==9v z|BN&d;!%BEy?(!->tp>cG8{%Pp&!$sRHi~9;=d}n!rh0!0Vpe=UU0MrAGITX@i!D% zs)$U&&kWIqq0|wS!4D4vQ8<`~wc_74V%vWP+LsI3ggHDoe20I5IC#(k{n+C8*&XWr z3;w~>Tm1v?{P(rT81xhOK2-hi%dXzZ0|*IO!W{;|-k~EL8T7|FzbnXremsZaIcuo; zv4Umz0-;wc3;Lc1zW~M0LSS#k5U)yb2OqnCqr1K1o}fb%J>+5^)Bjt7u I{M9Y+A4}7$pa1{> literal 0 HcmV?d00001 From dad8d1547c7d008919bcd71a847953370f7ef66c Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 22 Mar 2015 13:42:06 +0000 Subject: [PATCH 049/301] Add more test-files from bug 44501, all seem to work fine now git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1668369 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/stress/HDGFFileHandler.java | 20 +++++++++++++++++- test-data/diagram/44501a.vsd | Bin 0 -> 74752 bytes test-data/diagram/44501b.vsd | Bin 0 -> 87040 bytes test-data/diagram/44501c.vsd | Bin 0 -> 22016 bytes test-data/diagram/44501d.vsd | Bin 0 -> 87040 bytes test-data/diagram/44501e.vsd | Bin 0 -> 209920 bytes 6 files changed, 19 insertions(+), 1 deletion(-) create mode 100755 test-data/diagram/44501a.vsd create mode 100755 test-data/diagram/44501b.vsd create mode 100644 test-data/diagram/44501c.vsd create mode 100755 test-data/diagram/44501d.vsd create mode 100644 test-data/diagram/44501e.vsd diff --git a/src/integrationtest/org/apache/poi/stress/HDGFFileHandler.java b/src/integrationtest/org/apache/poi/stress/HDGFFileHandler.java index 7fac6647a..b9fe93a66 100644 --- a/src/integrationtest/org/apache/poi/stress/HDGFFileHandler.java +++ b/src/integrationtest/org/apache/poi/stress/HDGFFileHandler.java @@ -19,10 +19,12 @@ package org.apache.poi.stress; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import org.apache.poi.hdgf.HDGFDiagram; +import org.apache.poi.hdgf.extractor.VisioTextExtractor; import org.apache.poi.hdgf.streams.Stream; import org.apache.poi.hdgf.streams.TrailerStream; import org.apache.poi.poifs.filesystem.POIFSFileSystem; @@ -48,11 +50,27 @@ public class HDGFFileHandler extends POIFSFileHandler { // a test-case to test this locally without executing the full TestAllFiles @Test public void test() throws Exception { - InputStream stream = new FileInputStream("test-data/diagram/44501.vsd"); + File file = new File("test-data/diagram/44501.vsd"); + + InputStream stream = new FileInputStream(file); try { handleFile(stream); } finally { stream.close(); } + + handleExtracting(file); + + stream = new FileInputStream(file); + try { + VisioTextExtractor extractor = new VisioTextExtractor(stream); + try { + assertNotNull(extractor.getText()); + } finally { + extractor.close(); + } + } finally { + stream.close(); + } } } diff --git a/test-data/diagram/44501a.vsd b/test-data/diagram/44501a.vsd new file mode 100755 index 0000000000000000000000000000000000000000..7d9a3cefc6c6d0e33e35f320bd41d4ea16a1b549 GIT binary patch literal 74752 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 Vpy90awjphzSTpwjpZ|dp_%GJ{6WRa( literal 0 HcmV?d00001 diff --git a/test-data/diagram/44501b.vsd b/test-data/diagram/44501b.vsd new file mode 100755 index 0000000000000000000000000000000000000000..c8bd7a190d5a19c282c30eaa0c510a213b345558 GIT binary patch literal 87040 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 literal 0 HcmV?d00001 diff --git a/test-data/diagram/44501c.vsd b/test-data/diagram/44501c.vsd new file mode 100644 index 0000000000000000000000000000000000000000..51de23a3250cbf04666035972191a75d93cf69d7 GIT binary patch literal 22016 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%0AI1x|Hg0|!}aJA|7b_vny< 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 E3#Ui8CIA2c literal 0 HcmV?d00001 diff --git a/test-data/diagram/44501e.vsd b/test-data/diagram/44501e.vsd new file mode 100644 index 0000000000000000000000000000000000000000..3ca5552304d637087a21e708688573504ad31220 GIT binary patch literal 209920 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 +jnrzV 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

wj^T3=%C|5kzY1#3+D!SsviY0 zBbYFR`tAL)*b5Ev78N4;Bh4Mlw5*$SIUG*?yjA(%89X$j+H-r-+}%WRw0-_Yrm5A^ zrGf~w&uGF0mlb`yIo$^jy19}wLY@usDsal^Jw!# zw;Y=b*To-nd}o$~TGelEjX#P~o__l3ylwgf&bd;2uJ=N#jaH=_(EAbNMtn0#c125* zPIf8xZ%t_;tPHFavh3iC-)5sG--0FL>5Ddgc$B@Cvzt@5<-Xo4B;1@(5s=~6os%=k zD`w_3&NB{2aOM4V)5}(^S3b_!EXmt}(&q*@KJ+ednBWzhYv+uo$bua-(|-j| zgLCG*`GI`6<`^H3WoPG&^+MuzcUOcL2gePg^ZRi62r#UtgW%nj7JAt%UY7$8 zoa=8PuM48Xle~Sm%a6b4jna(=fG ze`tF|2ubsK<&A8AZSIUJg zHNx^Wk1wVQdP-5PoA}t^TW1>H&EI-vrcfkoOh0qJ36<|~I_Z}+pT|*ucJAezs<4(Y zQwNkY>HTfzk^B8nUOD&boZR69nzDpHMDaESC)W24Ml_#wANwEM*~cwvprz1B_($6N z>%GlHHM;wgzoOc$>bH_(5z}Ov*YU+0f2`V@+Uv5-dr_UpUi|_($g4l}#L*{@A0E=z zV0fRa>?l!7ifDD5aq%_Fn>)~B&)xF$y=;?rF3F=NrMU|0woH}RqK~yhV|~Rp64GR8 zcVCNaEYh0N8j;^{li&$#=VPKjGGcc`2nS_}xc1elX#}w&EzCgJKmFq%bbY~`9?Opw z2cX^3kR&fjpS4ZhGAuKCINF{Kn4ylg_V+FwC>tvy=)qOA=xE1&k%Q>m>8pvMYCzkppgj|(GtzmDM9Ff?o7i6Ovo0~^!JWibujVTfgF)(bp@(7}Y&T4jqGTC%x?ZC~(_GzRQgJ z!=tv%u3lQLuvZ`PgDH6H4tQ(j0?R2|XI;WK7CdgoxKepM2nr)5u;om`;_As+k7OiK zioVowzSPYhhLoraK$ip%B>+mPoc#kpD%7l@_NJ#=$s{asI2{L^4hy2*u$CXEYWT?a z(1FS1xZYi!0tN#ZA5~wIjCsuTz-Bd*KTr?Nll_^;9Ed0nEZzf~wuXp?4%I_+e(28T zHlyH+etU#nE~a>u>_3>mT+ZCi{PQSNiglBb$pLUiw~v~7uB?E1vIzD%;}jt}(!R|O zF-PwqL8ieth)1e?$b%A*93#%D{v6Bzp!94nOn8TgyhB7O1Wc??zwg3`BM5Wf5XEWG z5*!F>S-@G(*~>{h!@&$;ZxZQ+Mc-2MG#jIdf^BiT*&CjM>C5dm==S!VY2GcIE>>Kt zT|=y{vSYlkf#J}K zh=`aSq3#DK^6x$Lj2{$cVdrmlG_hC@!xIg85r(|@M?S=Sni`j}L2QNTJ-I~p##5de zutIdoMx(BRX`)eq+gbc8J68r1Sv*+i7Eg#oUC_-;pZD!b8a&y)9FXkB5+k=-Y= zXt7R$AVGv+U9tev@-ml)*OFscyB%i;S@%!_>yz(lb*oEhrxuNTR3Nx7Fy+5SUvl;O zFFNVDOH^J_m@VIUY#7764#hYm*9xw(o$-`aL3!SIxEJvHx**}AcSY@Ulr`OugVaw6$}1>Kx6;dqj-Gih-hh`n*5Y10#;BO_HohWu5Sr+a)l_!ZWuxf3-K}9k7qj|gxDU&?n|5SJ24j>f zEB-pS5s3B>ozX(^AoORyejYh3ucOmg#&HcVGO99KGPXH0#TODHGN&B4X*T_^Mu-m5 zF4iA>Yg9iEv`g!ho(FNj(>q8UAx;wST_wI8kr>Xax{){&Hnkx-%O)kG%=BZ+ypFKK znLYeo=2h3c63fKhv{_lYk_!pmti)xbt_8^vk?*U^fQ|j%4m1k$(0N>(nSo zlq5xxzDDAp<{aL1Blv#eZpSS#<(B)=t)4!G883>MUh6BoUP!7WEs|x-lJ~1@lIL8R zH1v^f-aa3svrF%SPeGU)M}KAW{nBwI(@PeX44RWxf(>vaW)|yR!*5rVa90GyXJluW zSjo|Z;1fo}J<~Sx)5`p(UbT5v@}=a;kCFqrWo9Slv&Lwii9;j4rC&MfpL2(=cFl1q zK73YLYT44wWm^xH(%bUuys<-s4Hap}U zZeMZ|o!B~Ir}j|q)uNG=j0aaS?U?H2^QzZYFWOVh80D-V$OH;zf+O!MXR!k;T#p~T zyD|L|EBtLWSxulML$t~sp2KZcg!Q;V9*zY@P3ROJu=3pN>+jTu-)J6#V$p)e39Kv@ z8bxqF`2OMOf>vlP8^7;ptNnv;`5fud7p8VIR!`&E5TrwqIQ$IaAsF&|jcrX?n)n7TpY*s+F z$oNv&j%M34dK}W6v!GVZWgh#pgD3*UF#^_wc6lGI&hj5qlk6UOCD}$!GRpHZ72EPM z7s&IDc4^5$YD>I!25wt8lyl;9!horNa*lBpG%5;BHr&?!gAt~UT*W?FFP|BlVr?ff z7c@2*qV-(5)hu^(gIkx>)5uN2@3(Typ2JZ#XRNGJU98?%E|A9zy4^G9@|7!N(DBL{ z=2_mE3ncUQPCvaakMM9UA6R3~u$0rc6dqizo{d)H)knOy6u2=nOU2!umfW(MUsre# zok*EA+gD#2h)(yijeg>1?%EWev3O76!GrSrUIWn(AHQsyL+38{)&2G`Xxq*3L`~NU z{qGS+Z?AOFZJn8&iL$499jTsr&+ckKbDDXs==P$*gJVL_9pS`{4+Hm)GnOKP>~24n2OebLyAV{yFj-ls!mIL98`7u6)> zo!#O&+{b)k_uDA4Tfk#A zbM@*83kDLI>#Y<8hq=-H##I{m0+K4*cxBk33-}C*o}vpE$Xyp5n(1VSno~!aEb_1q zK-rUCUF`cpQS{M97;9n|96P0VNToMQws_{?^Os-;r$KRP-kwpS)mGk8v@Ir_%s8^n z2QBM2dBcA9!iD5k(IMcxh|GXX`5Tbuhu2;O*bk9adE%e4U5wa_v-gE95oy?g8SZxP z4jx0d15(p(SC?PCT){oFAuS{A>*~NU-|WzC_vz{$7oXl_8qo{Jv2C~+HW^>~HVxZw zZG)5HU${(tH|kIGIa&~y^6(Z9(% zElT7qb;`ZmHyJfO@!q}8dSuV5E4~f1nwxPlE%-yc9@^j&zgBR;Srits!h85P%TM9M zgO;WS&;H5|KKm)nO1$W_5!xDW+qi)AC=fXn(fiwc+BsU>6eD)dSa>GkW#!v1=+o`_N#dm96eDHzCvyWL6nS2lZ`jC-O}oihdYf6QZ7pT)eBgKk z&0Ey_@Icqi0{*c9ha^0;5fXoi!j@Bcr%!&?d`INFLjTp2O^s%kYrdU-k#X(Z%t!s# z56?!2o>%Qi^*TL`uVFovsgcGOTZk3jQkv(gipZA(k@wa&{jPt1n*MJ8Hwji^Ao=rQ zjNbvYQc`!vqk!9s<6Pu7r97|XZb?CRq#N&NIbocCfauH-dhD?yX`jb1qMjDTTz+u& zjM3v9@#Yf6_Q!X19S`xuOMf`!})o*mmek!d3FFh!lv9 zuJhyho^(9y+QfTTDDWJ12<^$ zP4)8Te|nP@mJ_B}KG|Gn;=(l-pCi|^^ZU+{KOQDu5fe5qEcJQbp^bM?YVVQGCqBg< zPCI;uneinohrg)K4!!5hs#)y6tAKyvwS~`3lfhv*Wr{9BP>^-s)ewtzu?1_cGBe{3 zxRqD$f07YYKPGrZcXy%hEEU!YE$>pm{<@ z{-}|geyO|5efl*D(Wd(C^3+&Z^n7LOLlvZ_N@YhvROU=f6b;^|BrJR&b}){E&8n^Y z)M)UfjzDGu^YR>O{lubox-(x`?nVB@>WYRMd5s*UVAB~5tv8W=w3D&_6&H!9>s;Tp zr^!Ezm`(kdBeWIucA+QzGLZdSZ}E)>H(b=ekmZ!)Y=nA)JV^JSZ=hBEOWi4vmafDS zE%aWl{*I;|DfJvHm74=0k0l(V>BU6qK`LuE2@zGNuBT?qXl~kQ97v)e5fyIxXC@92 zN9_nc?#@VT#b(~5>0zu`R^m`KMg3t6?TNXYW#qPJ3V)v7`_{dG%9skKBDcHvS+m+s zRFB-w4|dx;C+>781s-9i@mVk7fZn#a1A0lH*^!_1a(doIn`u`r)$MXWAga0@_9#`| zMk>D!Zjbmf_BW2AURsA<*D)qMa6dR!;#W6A^6BLRM#BEjdWjrv5#GlvLR~NZeIk4Q z&@P|roeV=C(vatA(#2CeYN6O;$zqccgcf)wnj*Q|%@%jR%}VYjMzz!3&js#@(kNci zH*KTUKC7Ibk0&ACl~(eC_tMAwAH(d&+6RxZinRhZ{n@s^&Y4txK^_@lBTxAbIV_iV zwHjd6(pV#2w-e2^z9raek)543V~|hAGtL)IZueZoKDO-5v-E&XqQCg!i*&F3z)_v* zS=OrmrEZONz9(81`OU9z$CF3mH?vMS-?nqncTV(uY!mlxn02CaWi73_2}O;+y+w^3 z=!e!Y{xH#w_xwTL=9ltE(7YKNi@x+lHP>(Ztoyp)PFnW`f8LnNOkg%OFF*^suhAR& z+3gblfsb*V<>)YCub}0$z=>(>6k4-wA@cRk)$D)WGi;zp$22t7E-3LEnZPQFVr{qP zg?#jT@6*uwtv`y}X({*j$O_=w?#g*nm1P>n3oGv@XpoPad^f` zED6(1I8-)ND(^N?K$eZRi}=Ico3U85d@<_!E;eA<`=-fhn(7yZl?t|oH8q!@5v07S zz}Vw2(beE#28kd1uZ1-|3%kLT%Bu>7v4YX*?f#c?-#2f$8kZMpUMPGZ^i)5fkJ2tg zesgun{UBLmyvkvUr#mB3OLz9nExd%kY`R&e3O5TCm9-69C5~Zhy-?u#3oGzzkGG^A zv8KXHrD1l9V_}gRi|!phIYN5EFPl#?`+U{U9cTT?Tpl!MR5mNsM0@GPFw~zt%_H5! zraWz0dC*=xzBxaq=MB{2ed>PlW6vX^URv|Ly4gDE2wF~YDr=c5wllkXAG}NE zBR=fO8_loaOXU;GJ|K?)+p^tP&YsGNNDF*fx1PV3-vaUK6Y6QRZS(@s(vff9ix=b_ zA$N&RhzdmyG!L#S7ofStquiIBk4j&4rip#p%sRs@qqyG;ly|CFa`}btP7xMTqV1GF zQCgRejop+EfMwI>sN-13y7bsh=}{Zf;}z9|6VD$jj@*IVyoA2JaUKEz$#I745^xifkRESOPm4;?-?|si@$=+?8w?y3YE%Sum1WnC|s99U! z=P=M)bn=_=rbb@%Eq>D)u}fH0&DklXDN~T0hui6%)-UQpyJrE;{>#nN__;c^eraiaWyn%CmGvqiH@ zmX;V8FTSL8&&e<-3tc?5Z_j4u!_Oo$Sbt@v&=m(=KVB_L3J$q*H`V0X5ieAk?XunL zRP}g{OG}uv&`BI5uB=5_jp}Fm>)!W4Yb{3)o=wkw+oTZdNm?2u8+)Z)LiPEA?OL?j zdByX4Y*Q0&6-(v2AEV-1^0_VEyIT2ggj0<&BPq{`BB!VI)yLOnwyZ{i+fL1)ojay^iq)pl&ca&aoWz(b+W_4(P`Fr<^ zBy%xSq<-UdA$oxHx*|;%iiR*?bOQ)PLIiCFK%BC(?(?_wegw|y`L9w8+!k4tNSa)s#9Jf#KH8dM zjTGU*{yVvK@0eSeM^eb1kzs;>l14JhyMuE zGn0|+%ml$sv-I(4K9eP(qd760Lcj4yyCEramC*aF$h`9WP`%sxDn6B;W#!-v)f%X& zx8tKNXe;eYclZ3$pE>06`Q>5U`5@go8a|MJ%CM5Y!Mr zM1`!o0-oP_zx&?zj{D~~?)Y#dPu9vd*-6&kd#-2A`AoO#8O61Va|?%e)PEy{+qVf_ z_8B|{jeBKnuFnFEY|$On!_p*865{h4gg7rOHeownCEajV%+>f1iE$!LZYA{*?`Qq0 z-!>bV+t=)SrM7)3D!V*iH95j#q&JB;i~cbXq-U?9xvSC0Alq|X;jCpr=RaW-=_wgKCAa&hsm0591iiiEAq-OL@NGSM&J$--Ub=Gc0(k3XWp3(6sO3Vsdp z)c<2DqjAW*nt`|jbEOgf(+c~;tXIo%uPWso2bhz;nC?rX_6EDzm4G(;BdEu=hLoiS zX>&CqJ|q5DRNv*bXrEVQGjHdvyAQtX_f3CfQ!YbV@b=5rtjRJ~9cwa)*_yXL z=hd;(?%);q$XK_fo?JhL{)?nUFaLdZ;TmAI7IVP<;^kt($Z*CSoEh7Wt;8BG6FuI) zJG@!UHLP!I|^)BX*%q5Wc(?i=v(-BXEXZ=dlOq+h#$FheiF+o0n{7W9V(r>uMA() zO<^BpZ>u?-)}aaVRWI6<=C)qKk(p+UJDhIL7`+e=EHbZ1U0##q1_}nRWf``*WHfK! zhH$&@hm>N@mzxh^0bh0X;;)p3aFU+q#urAfOgW81Q)c^E$U@7{oqUk+n06MwD+=jw z@JTA;)^XjJo;v|)ItQWH_m~aoIFzl~H>zz5D^o9uJF_FbBnX1Q#= z3vV0m3#Smj7u?b9mWvLvKgo(22#0)=tcEkSWpZ@!rtzVz; zE?ABN{bI?Z`yRCfE@YZLC3td2108UJrGt`FcQqs1-oVM740*k z7nAl{MH}WmFO52lo4k%29NlsvR;P9gC?)40FOsQQ{Rw{;5>69ZmEEL6K;GohaJR}I zy9oC)WLzWW5|%A!T_E0qjlk~j%ix6ra>j;)mbMR*?UxVP+JA1X>`a%(nuG1SE0;Rb zYbd0gm2sp|qMUFUVSI4ZtjMXysDpZvCESWaXZiNd>p|KeJttKF~7U zCU_yx6`Bpnd0^IpE1_bWB!{LRuHw!;%c8LEpW~v$2bH#R$y4*@ot1UTU`%tJf_A?; zI~3yjXQILce)vXK)10a1_C|yl#d09M=MtbNjxp!;^)7P&$fH z#pz;4dVm=#DJ;qL#4g^{srqLhZa}nu9m0Ki$iIn(HGAJHBMNAsJTh1L+sfG>bY0_e zyVFUwjJ-ut+!YJ4QSyjK^j^dbO+o{lk#J|^M+~x8OJ!27TMX94qvUH()D*Y{xdumu zM34#1dINVTCwgW*;;2De@`c*Lp6A!lN^oTq~+Dcsm=oQQRmC`OVflMmBwM; z2nbPIHp~h&kW0fWCajq9k>39^ z&Nd%qzgPng6Zw<5*$$-7aS38 zt7;gzb7w^8ubrOWVe6Dk_uY93%zfyolktRBdxew-8(1N%JuG%6>j0v%&qEaP!sC>` zDeEs#ut#pE>Rs|NR>afY%Ad9*_OT+ySldHeBZowOmf4Dl-*lnqe(CunZG@%}n<61= zoe4_UsnpTMf?X8glXpkn7F4a}zQ1`QZ>VP*JAyr5iUw(3&+C`5E^Zj@#5WvHC)YG| zU0#TtyFTnj#O`}bJ+*z^x0@f@q!pA1WUq{WsI#lBCoS{}z-~WzhtbUt&sBadH)rDQ zR6lUZw14)=>p5A}EUFj9!Uzf}ufX>pLb6FVy{I1ZfE z4j%O$z#-D%u#KBnX2;$1v@aYoMBv*W15bXDR;Xj;9g^Nq&8Mda^tl#rDO_=bUR7%^ zg$NuDysgTTf-NjuT7H5Hi%#SNez+?4&j+vOkm2CCcjEWF$Ipg!_GvGb4;kVBx z@)?pCPfI=^46U!{$hDQG!->J`3hw9nt7pe6e(t^z;Wck~Uce!LU}*I!h&*Vjnxg?Ihjp&DnHQIeXyKBlnxKC=p5x^1(ZmAE4~`goNzfZaLBo)6J>oAOu!xC@H=xr7p8?=+fM0cYpk_Tf+$lsU-2sFoPVjz#>xIP>8`f& z1|N-X-EiS#qOeDs@UlH{<#Ir~veou1L^DZ z-wP$^9jeq{EC3Ca#+kz@3%U z)2=K1zH~hD*}4UUgGUQXaX>yTb+uFSiFyJq3@df94Ag;~8=z@*B%S~KB$ag`%RqW| z{m4Req910piX*ztO7)w8cTsK`C1(qj)2>*L&c!Xm{UoRsyzI%t`Kq19Iq^?K+GSRO z2ZaHT9kS*o5_U`HO&OFBE)W{c03)GGdh1E&2A1Lr+2L4w;yc`A9N|Rd&O5%Y&ijC) zP3@uMmnnDqOW$b{j0jmxR)Huuo?PSalI)O00K2GXbtM_6{43yZ9ICKF15XC$R6-IK zggab#yoC@>7$+zl@75q9nv<6Ga|mjzo)nXC`OPG_xOcd! ztK`oFvY<(L#=SHGZMIeF`o`+ zGl?VCM5DYFZ{Wga_thGk6m{1(Y~mulUo@5%E34@iu!&h;YEGf$kj{+c=%p7Pt-r?- zS1}NTf9XjD1DI>MlnmdZyLZ&2>0wy2SUESucrYBd=0P^COqSqq6P*|0jeE)N=mY9y zS-%Dxn0BBdiva}ZPxd}eXPsbe=9E3}LD`7vASo$+%r{gC35!;J1 zwzn&mvx+~t5_I%M$I%7s4oD_GcP-jFFR%BjVB{v}5hwTBnmYsF?zNXOuIXNmgy?(6 zwB62eZ*eDo1I6oy91<(^>{*%4-}YA95js34ExAr`N-~ZaoCSg&U7}xWTft=SenCm;eG~5=n}w7*Bg@oR-1f9Ms5cm64HO> z1RuPt^&&1OKrgqW9e=fyv06g9X|*`eM_1 z!f{VpZdx4YdYn6nE7p_q)^saD)pr8>x@Uq#wH1CEOLVbO%1AT|nTsAmV*_R*;j`hA&fWzo;0JD} zfmSls30zTo@!^T1O7?^`&K>u8v}gABBm!vYbUTLIzcHa>Q&RjSP{C;{?o|OBY?x!U zw&nXsyH*w6^>*EZJB$gLuwMCEO%vE5;mV zGs}UcxntF0(YmW?ezT>&5X1x?%z6_biS68s&|nqhyiFkU4Vh|jI)fKXqC$-WnXsIN z?BsnNJvj&3uj>&SV82u2#{%;Av5Inp;!9$Z`0EY{NXP;xW(h|2n3IhuYbd{x3}$0p zl78$xxDB)gQn*SU_OtAx$Z`5~3%Ub+pAUUWuWs~y-M|mp{%5ss>P+_O$T{{F7Q6H| zfpM1`$Nkdpu0GjBKTW?*zq!hLV9Y<-GP~D$nTHob{Wh#YBY8@Y@G9dflbbr{mHXw$ z4M9W*p4Q(-wwt&|0aI12Sp`5nW&UDdoAREtYqqXZGslRrh9TBgywjz3{H9R`pfn6_ zYt$*mi%LpJ7fAZDE3YM(0FJAHV{xF)4fc~mt+nrnzZhH9Y5;xDBT9~4laOTPRAK4( zM3ZDh5-(IH@n&B%UX=)3OK*hSk9#ju(NsmeyxfWSd2}s@ffT4hB~2_f>_dRk0yPkH zZkE9fD|#Ml(}l)5ZRdmU7?Z;cZN(B*r2>H^aC6LZ0h&g&y*mj3@0iz#=@IeFbWn8A z((cMT;KmPI)2oG;@sEqiCtYiq(C)UN31k5}Hgz@IayTsK>EAHXK&f^F42n?UrinNqsgH znVghaz2XPZvAed%=vdM1{+B16*jw2Pm0cY7fr4iP(d6@7CgDmM@BY1KtdA^xS+J{d z$?WbvB{y(fZDQx@)S|y9BYNAK;MuSEjsl&jRbTiFA*S&f@mJ6I8HUHQ!AVAm|w zc6YbS{iLk}>mnE5ZsWY*=xa-T#I9kpV|8i!hy!CleA#omMqs8BxEb5hdw0Lxt_e-9 z5m#GrsV-N~75HwpyNZvQv#etR_x&)ZgoBth-UhwbJNlgRd~Oit-;Ysz`j~x+>yi(+ zzrH7aD{!k|=`Exgdesu;IFoZZ3zbLY((Nw|g91v0{5PxoHp+(@synBiv2+kF7-MqB6+{ih#> zf>LcVw;wd)%Q$dGaax2PS*uxkq|CZzeAeC?at!ZpqWfJE}Sy;r7oKkqGR zYIWjo<$oUC$`XUEof)RiIh!I09h}6;9E{+R0A@udam;j8`&(pIM(~AaC%>6=Jp z-p*qy9Nob}#IAhMczJ*S{)dSHb)Xdl-TDOHOePxGvRzbhVQ=qAUBV0i1>xhBK-YRr z>P=h31~fGqtlerQ*FW(^D27iwDoz$$1hzTUs(E}XrH;Q_-ayhBh}%_B4hkJ&Wf+b* zmZY-2gwgY>4S^*{mBx83UZ;n1eUh*~b@>AzdX^$(+h|kG!co?*7~-GTBup9+;&v^+ zrL22+DOlo`Bc8rU7EZdPXQ{3epmB~}tICwRXv8v$({^t>{k)k|)l?Kg_tOx#Iag}Q$Q z=J)EhIAj}l5hlc6Z%lL(z7U3qp5;TU@T7_qx;J^p@+k2w-yJ_2Hs#4!0M}D{gD6w( z4AF5J`W$-EhO}JPLommJR+dLe+k0Es%}+T@Dj_YQwWb24h5KBb>IPd07;D=@er}Mn zYw-k_Etq@U3%K4S@vj-1ZydTu=^#zMBJJDmw0oc7+ca>{HFq;fenB)v$)t})_o53J zRi9QKr1w>%#wfaS-F9{mj+K@vXQ@dSpecx28{M>1O@FLcV9v4wfnqZ$~`_r74U$EA+t^y=y- zlI)SIjLCZphbhyL`s{sFU}Asn{MOy-aTOP&TBR8SL|+!cM&sX1+6CHU$QvK=SK@6C z?;G_q9`%!IasPf9vl6iCuFi6-YSAUw``X>MvSzw7z2bEvV$1ikDpJlRGvy-+S>n3< zZN8br+&ouSmE~%WH{E2}{DEfH6V}8L?;l5lEwf|xCAy0o8&q8o?S@%c|IDNf>JiqF zMgFP&r#=AlMOpXbXFbJ(OTMtm^4@{hwIlw9qkgecF`>>$!Jecf?UsP~{zmuxf?E70 z<2!esxpt~bbgu+law%G0_49s2f6m4crZmf8>Zsua*s|J#Pv?2@3F;e`aFiu$^%F;c zv~IYlC=hi3Nk2B9Un+I1W#T&X0dvBW^$mA08F)~#l-916zSOUL*pltUcKRLRdln3T zQ8?(9b+?qD=p?;k)Pm)}GT_cV^`QFlDdolWTP2_;HLH&bz_=7PNzxfWtg2b=b=6s z?xZH8&XzgfU`-wwRLx=xEQlD`Khey2!g2bY5qtVa7-*wAUI#AwnKmHtH71Mm7oqH{ zF@-xzvEJ=sY(;svcU=JY-P7Nh(PPcxD%(qbgfGh8YPZs&oOoM#Vz(bFT3Ve;znKC` zd2~bQhAn4Bv2wh*JhvbD4{#)SZ-Ip z)JIWHKjKdIz<1CfTHZSF1^7_PvI?82Px>*1>AVv>$tA$3r-jFE?LG)4C)q=zS>Wkh zs+E1wbuP}?{LzOxJdUr!cbx#F^1t#T^TbYoJJ|Q#sNmh~2?Z#M%W8QN=lypzaI$ha zuq1BIr;dW~7jAq%zT1xlSHa%Ht=`8SiMI#+i4bwK+nA1j$Dy(9am~`beH?cVPT1| z{tUR}u{nL+L9r|AoanVxrI&LWXY!NaVr854m%DRKL4;EYNh-SHem}n2MYv5kcH4!j z0>bA!m2$|)@+CYAo9%i+MW`**6hUFer|*B`o3{)B6J?vKlHyP2UY-!n{h!EJ3y^{^ z{Peuz4S>pP2xHA=#y-IR8T%Vw4~d{!I(8lst%qz3oreVD5ba=OJ0AHSwE!{FLxQ02 z{Q2T(`8He?sr?3K@BWD%ARkpAY3h5B^@D~)IcRB=7OYDUVSoui1J>vv;d+u;!eW^m zEWF_SHfY|u*%_RVxT2e#Q=oWwdSVie$7thnunPf!Zs3R{+oZ9IZdmMWdS~}%f}@2* z1!JNYAR}|pKrQ5+@}kilr+`LIwe9uE3U6-4l?gZ#nqC*tLU#Q?=A&WiNc3G5zzSGk zcHlyl4LGV>{6g8m>-}RnoFqwQEwAs4Lo|E73|HYT@CoppS2bq*b3(#-uFS;3?T72SEIQOT)PjjifZ?)V~dhmdj~yc|&*DmsCxSBc&^LRo58; z>;#8WyTxW1yGMqsaf)=6^gwYG2zgh!MAbIeSRrnTx2(U#RMICcA&`H(sQb8;13a5u z-1JNq@@zr8LzqRChbac=g(SveEJ>1d2yoog66!63TjKK3cZguU;W_^YQV;$34{)~bp-REU+~0eKoaxw=qFAoE(%^dY1PJ|QCS_>lU>>@Q`S9Y;S1naJ1oD@=Im+0 z&T;zoG~q}&tDYs!lHI3pK)vn4a^O~>sUysEZxNk2&AiUclI6ws(LkAfo9%f|jV$(v zaEU00l?6d|G%&9G=w8OA*0IWZZFtoU?jM=tM*1Dr(1?IFnqrZ+SBeb};l#_!cl~-b z201p1Pw{RL1ft<(Y-{#C<#$QH1Hs17x8ypd_Xh0er!>bU45lH`7GRU@pTzfYxXem@ ziaV90WNgHloPeL`qIP&cr4J&gqHZo;IMq+duV=Thvt&J!PJz(0unpAXipGRBdo9+! zjbNv+X`B>m`9*=8MU`WD3Gh?w1@Sk_N`~}YPO~=YhkddZ$$sHXisAc}?t8huW-s77 zT|19)$R6+iWw?zS!OfCAx2z86aMhZqhtw4ay2?ebvrcoabM7gFLn=eh!>V9Px9ZXR zJu$kxcM~Pt3)}~aP2{*l2Vi#7HT^+A>G`w(pRfAdHJm%#A(4rffQ#skp4R?UAKOqj zF&Qc5ejZ(7WY}&F=IS_bfg-NH<5Ir9F5d$7E2x8c*`__?_Lt6(ij6$iov10{UEql^ zj}G7FpdRM7EZ*H8PhJ`49)g)}-gjQ6Tv&YQq1WK?L6=MQEK8jZ+uqrRJQu-`Xt5Qb z+;fvX>TDgp@53D@Z}?V6#=-Ij>&Oux?<-V)S_fQAiEW5w!IxJ z?*H5uB}f&xsO?zb0yMrPI@i)4-0Qd%c(*u8LXUzVcbv8>VY7)N8RW;KYmU@;^CpZ1 zRKWwqtC^l9iD0#_bCbfLzgx%T-mzN2O@W=!?Kq%Re{hy_gK{L{Q2YzclVA8^{vAQ< zI>l9=1yUn1%q7Abe*?_nPOU_j3-3s!od!s6yESkJ@Nl4A9F9wTVE}9kHzd&>MfQkZ z-V#0*K2Xe#ZQlyI1*@oyz-t|wb^nyuMYsZ|f_DOr7aP_XA9So>{d&*;LY;dxRXABF zR8lv8HT3E4pCFK$e`Kv}pNEZr)f^aM`pX8Pbd)Q6H|QN z7M5A`gPtw)npvNxG&{^=I-Wo*pMxj20shxm#zTiBHPY8j)n1ow=Mc&X;w0ZUatU_7 zzyA$f52?H?xskqGROmw7MtrpDeMIU6ILB*oJ3=_rt6sZwl5?b55sUa%<=h_L8Jf+)O?)je+9@@jm+kmo~!oTe6;O z-AI0?5?dNZ01Q7-*`$q&)BtL3Vwgbrc+^{6Q;r>>d#EW>>P^fC(j~E z39LxOrMj`nsLfSHNIqlhVPswFEL8|D^Swjb`WR!3-QHBC;8YE!hi4&08y{8x^)SKi z>&amk&po!c2FiZ6nWQ}#6#H$zVkMNQBxd3frqOKA5&sGQz?Ecwsh(vXlLi;bVT;ci z6i0O4U+pM?A`l88`vRi&pqs#O!jQgh|ft;pOfAgM@!by zt*ye%9|7KHU->3l$^+8QoQ~E6;S=_I_S|vyS$PhkH1#Z^fVLkbj5*hpQ73Id&YaPc zzp)==5%#wm6njCO@CQGUef;f!$b z$yjcw{<0&%8_SoZDO?nj!$xK;C81Cs4)bawrl$J{=y=NPwImZw!8>Prm>teXlq;UEpg*4^ts zj0(LJc^Iu{-+z2uLU)Sbr61tUS`<)A3DC=r;!-0!$zcFzbP+ET+3gByhT<}P=d(r} z?(n*KUw8?Cw0Ch$vm4Pyo}UK4sExHq7owu~$*zqr(d-rf<{PBE@$)Ebflj1W;n%UC z|NEiNJ2v%9f^|s)Z-meF6)*)ykdgxet@>y#*>C+WafJZs%0T=zFu=l|{bTZ5E2?Ly zBOwzF2spn59-hzEMLYF|c@G+!XXmW}U2S$hY1NUR*j-O)FL zbWdJqEe1VNH;n?7>~68Duinn^iy!-2INT-N%^1VNg7)F6+2D_eW<8LIXe8`Xu*qwN zT`D}M75gDY2g-p!_8&QrfF+Rw9R=`;FvG@sMFul$JPI91s7?~56Od4yBupon6rFK{ z=_QEykSPPEsWOl$13aG2aJ4}AAFkGq$;*&BGg=VA1v6aP1wVm=D=U#l0N%10d4y0l z(9T;Gg|tfmd6(0)O8|M7vZvur1IUS;-f02k#KwM5MbU-e53^65H^b~haB#)*k5mxQ z{zwJEzMV51Z{T!%hU5L)M{z%HpF|x4B=Q)EIz|BHG5g_?`pN&sgLja;CT2!40-U)s zijkk7QCSr&m7IgXw?F3~08u{?J6*1=BRq zXYh0lW^@cr4q!&dz*3sbg&+Cc2?-q$Nce~nIwG)doTh+{gFh57%io8)RMBbbB;b|I zP$$9eD+7>FczJTS~w04@r-F^7J$^OX=c`MN;sK_AW(<|rjw9pw0Us_@jRq=1uD#)KpO>m{trz!60i|G1!k!CBZjVw3&iZ zKrpQZgi^rY-=A)W`wm&YV4CI&S-t`Z&G&T>+#LWJ{?i1102%(%1b^{q5`t`&@T!4? zSS{gI|A55mN%%q6e+CYJ#DKhG(_+AMA{@cflz($uFhltlsZU|I(h)?WN(E4sI;~0- zLRo6z1Ng#;04htSg(WPgERhIHs_1Z+r6eNQFz`nNi|=>wnnM~yz6_ta8vz{mGz~c1 zEU6+ilBIg0v=tr_!kLx8%ghB}`YOX3=AzTD0R_b$`y*mj^6Q=Iq$P-7V4|8zjX*Bbo zr1`9r$%W159n4pf<_i&1iZwX$avp0r3pTrKS>CYuipffrG`o+p&cf#F+pOo3=9{l9 z0Gn@Tvlp{r^Bsk~o;^4s*vZ~6Y4#MbYhbgN$L?eo4vwsB7|itl$-ce8EM1*rz!@B| zu;S2RSd|{i*$bm(9_J(stJ80A9>Tch1Lp?}YtwOD9q!=By474~7_8F+xv?;kBr6qz zBV^^c(493M=ev71O{E9yWqluJ2Lohgknl2ZR1jh$I|< zAvL|2a302k?Sz*w97-1wP$ITIO^dh`hV*nB;zk%Vb`e=H98Nz*JOg893-KuoS?NQ> zDHyXgNQ+3=`kZtU$pc1q7-=62xpGHH)iCBYk@%!z>pzibKVj<#o~}p7)*oFNS)06~<~TYc>m8e~QSW zQDCgu%-RXV=>sfU0gPwQvv@F^dGhVeYgR%c`DFDzvvRxnOv2eEq&4xi6~_vry& zud=(UL!Pofz-QKjY4J9^gs`T?+r<4ep17-eMvjsU{>V{ce}1sw#C)7)V*lsrK00~X zkJD8xsRIBcg#aXV0QizZ07|g;`oGe3(#&=3Fzo$r@>Fw<*g0)lEScZ{X2g4~RWD)8NAtKDQCTi^lXdgXNhZQ6FLsafe|Z>3mhG!>8G>P#&Nx znkke=-^qGXHks}4Y0h^pO_mo~sYT$Kz%bX5NArPkUNr9@4D(BQG%kz_I(V;OSSaGr zr1+7Qgn9hsFlgKIY2GmEF!{+a=pN_O&cdj7oBtdJ{jYo)fYD&KV6h;w(vTvUvmVB% z3P>b-%zjZVK(4@Mv7kpVB9Inp3ZY%u8lfcHDyf5WRCr2wRfyaZz7c*CN@lV8zydhH z`V5dOmk4q}C1?bHgD!x)ADa)^5+~pd>6!74kUae7Pg03r@&_*`$hr1U7{@wT_ZS-H zP^WvO$pe_+n+T%%Z%@(yCiV_2ivDj;^8m*DIV@uHZx8YrliiCTk^lCPKV!sS5k&3Z zo}|wh)n9NM`I!RQ@a<7}J%SzNp|Q{75*rCvMHOI>*y$>&anRdIEQ3K~rBoD=H=+VE zOdXDnlD>)HhQFt4p-MLVFXPcL(=WSEQrA_o zwG2jf`jy{^K1<$x6ikki{_BRX{UqK})9-I3r6Mc&FK%+Q^uPYez=q@| z`OAQ}XNldIMbgmq5I&|Lhv9wIzE7AHu*U#Cwm~xCeH-jq4|^bS<4@0f*mD5(NXn(o zY$KiU33CqiNPJ&rdh}t>%m2I%>_$*{`=_L;q--lz(h2`I7Q!OML&MOf3A$QT0|Wtd4-L27vOy-{ z+f~5=z%oCf3CO>mp_AwjRSbOTO%-*z-z7gR90Jte@{OKZWNIq+;4MR6I1iF5w>L#ChZf0^Jg(eWPx2J0>tfUxe;2 z)5e1qBGwm>1sL*giEEVpoe2ziFc~rO$G8m*hyQv{!c<{V#A|5yGz!1(|G7f5J3;x6 zv7WV@{?IV-kH@nGj;3%ImB9>*=I@u6nCba!gcX{HNj1^~T&%0aHq`Mn7J53b#2udT zbgq$jI?Ey6)25;1(^zO43hNHf8dyDR+Bj6Isug;KN>3YwM$T4v2Ynj@q>;nWK~xAW zz2#-lx&DX&wDz7h5Ot8joWeRj=3@UQJg$*BjYYY$&O`f9fcvdhl_8fCb4|VP=RfYD zV-ovNe~EkOQk%0#xRZADChcYOwOwx@E?c#ukr*fKnBPcnkbV@Dz6VBa*N%(Fe2kq7lCm~@_YZAH$TAj)NV;K5YxzV8S=QZdUoeBLyVVPikZUl&v1)RYh1a6keX};th5t!=Nq3ZQGzoYQT zg-2@bw8;xJE#O@(|Ymn|DL1Wti5+(D*@yBRy8}>HBm+BlMK~qO) zOpS@Mx-~RBf;5XGp%wM=m|Vn9X=peq2$fO=a6l$$BM8~2a>3AWIXvzIYLVyA{_Kdd z8nh?NmFm;fl+z}dYK@C>rIL2HL#Jzr?IU!34D)kWy)1=|SI5Sx;O`xnGoFoNiqLcv zmEKSU&64GhVPvmqs$A2Qn?P@>4~k@uVbam}>RBlAUOg8+I0|pK)Qey_bh-EHt@!uq za=n`Juy0&Md#`Sdm!)AYsI6awvBuLj>1{W}sNpy1B^YA1;A=POwPmAHwVK#QO%%DM z*`WJCtwHw%y!F5vG6?U+;7tr~a=NhN7JM*Yx52Pm&lon>=;k))(%=I(T{PFwag`M6 zm5nycKBLyEc1G<1ys5oV!$=&i(H6DbmBu@!ucns1YQ!Q4YqBmun+0k zJWQw!H03+V|*?T(@lSwwpBQMS*Z#3mmEi%cjE$)HGs0Pu;$stI9$RldZ zeYt;uKjIg5mbxO7TuBM9b@0=k*c9y&5PaJ`*y$KKZkt~a-+evpR)O3@txy{jW31Ej z8@0rI8iQvqW1TX8f9V6WK8$M{>tu$dZy~$H=3wBNILt7tPvNgq4r6mTZv#A8dgSTJhLDYWP|4@^_y))CamBMcd&& zTMSAyOtr>eBAXph!~Y!lB|^5~3&=TAW_XElcnI6;z^tjgAHSb}7qDRqJ_x&w>bT}~ z>I>@JOQ}|#YOSgHnV#zW)FRBRH>nAjwfdh^2cl+=r^;j2NgcJtH~W~ObR@rpOg&`TUl?}^;__=>#^5|BS~$A@=|VRleF3x zT)E78n*v*G>{V_^?lw~?!({mecp}F`=kDP{tr971CSlt z`~tm#;#=I$#JD5vong=2!yNqloi0C#M*O0R$!|Mjw+3unmProS=C?hV9JeMwoAKL~koGu}2ZV(9zdYu|g&binA;a5(;6Okmikd`1E}@dpNcfx3ML-4#4<^Rp zR^t}hMAPLLC}eACA9tAUpi%fuwQs>8aD_P05>*6D#q^N3%~UJ3V%K3`A*D zv?{b~;_i>_VW4JA7Udgg{xn9@Bm=0Q9BHZNZnP}(d{T;k{2;l9|a-yP>~mVR;X=FYvII?{{0 ztWA|{(c^fUAu_RI6`(o_?sxM2W6@{G+pAue|YkYtLPVecJwk z3i8Ib%4ShSCWX148O)5z_b^Qe5hP=*V#c@Q z-?$dUkK?=Ev@<~4Q@ob-9=vk(?|Xb`cD{TV0qt|1<6b&T`s@n%_F|k5CFSn~I6$DL~7WSS3VNiuXPMgUE;{FzDG> zMFg*moxPljVrEIHiQyRyFFRLFL(M`RNF_l(A&6HmQz2j-AD;GkDJEe(A!5}-e6@7z zsi@4lIm_lGsnPMOmt|0lj5V}4uTYcfuF=F+;4xBbdqaF#dV1BU$ZXQ_x?4MN`elIkDyPCssjyi#q_IT6jb}vv7hl5`qg9tREN|{ zsdB2%&PxxBcHNK@Us8q+@)}f33>NWIM3dT)d1P^lE*hhVWEpKoUt%y3iYRn)lt(r; zpE8oFUxYU4>&sx|YBYNnotiE4M)%Zgn5;BF(HhOgtG+M4JbNW+O8X9GRvz>^wh&89 ztes`a82HXe0NOhXt*}r$T44gstPA97#Oh3)smCM3OdY1g%UV^i`B7cj4b(r;kxNLN`-N0(l%9c5`m8IR70Ho(Z}lOOZc5bduz%Xv3k2SUA5MJ zy&AGv%f$yNSHqwkv!|`CEj4`}$PpO`G9036&w$ha|G$scX`A!^Jw~g_{~4|SXSDYG zzn)v={`WbzLWkA=b8h|L?cBPLBF1AN6gb|50T2m{ZuX}wrFWf^z=3w@l83UuedW>C zvgTdV-`wtp`U_da91|(o0?hhJ}fPwXY z(7-epc<~1fKrkTh^=HIRgMp!GG*E+wNu7~@&;SGj&;FnR3Kg@_7|fu7RMMJ%(0~LC z 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 Date: Sun, 22 Mar 2015 21:45:03 +0000 Subject: [PATCH 050/301] Eclipse warnings, Generics, unused members in some exapmles and scratchpad classes. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1668480 13f79535-47bb-0310-9956-ffa450edef68 --- .../hpsf/examples/ReadCustomPropertySets.java | 6 +- .../org/apache/poi/hdf/event/EventBridge.java | 20 +++--- .../apache/poi/hdf/model/util/BTreeSet.java | 72 +++++++++---------- .../hwpf/converter/AbstractWordConverter.java | 1 - .../poi/hwpf/extractor/Word6Extractor.java | 2 - .../poi/hwpf/extractor/WordExtractor.java | 7 +- .../poi/hwpf/model/CHPFormattedDiskPage.java | 2 - .../hwpf/usermodel/CharacterProperties.java | 2 +- .../poi/hwpf/usermodel/CharacterRun.java | 2 +- .../apache/poi/hwpf/usermodel/HWPFList.java | 6 +- .../hwpf/usermodel/ParagraphProperties.java | 2 +- .../hwpf/usermodel/TableCellDescriptor.java | 2 +- .../poi/hwpf/usermodel/TableProperties.java | 4 +- 13 files changed, 61 insertions(+), 67 deletions(-) diff --git a/src/examples/src/org/apache/poi/hpsf/examples/ReadCustomPropertySets.java b/src/examples/src/org/apache/poi/hpsf/examples/ReadCustomPropertySets.java index bf6bcd1f8..8d1a0a9c8 100644 --- a/src/examples/src/org/apache/poi/hpsf/examples/ReadCustomPropertySets.java +++ b/src/examples/src/org/apache/poi/hpsf/examples/ReadCustomPropertySets.java @@ -93,12 +93,12 @@ public class ReadCustomPropertySets out(" No. of sections: " + sectionCount); /* Print the list of sections: */ - List sections = ps.getSections(); + List

sections = ps.getSections(); int nr = 0; - for (Iterator i = sections.iterator(); i.hasNext();) + for (Iterator
i = sections.iterator(); i.hasNext();) { /* Print a single section: */ - Section sec = (Section) i.next(); + Section sec = i.next(); out(" Section " + nr++ + ":"); String s = hex(sec.getFormatID().getBytes()); s = s.substring(0, s.length() - 1); diff --git a/src/scratchpad/src/org/apache/poi/hdf/event/EventBridge.java b/src/scratchpad/src/org/apache/poi/hdf/event/EventBridge.java index d4f69476b..c38805c41 100644 --- a/src/scratchpad/src/org/apache/poi/hdf/event/EventBridge.java +++ b/src/scratchpad/src/org/apache/poi/hdf/event/EventBridge.java @@ -21,10 +21,10 @@ package org.apache.poi.hdf.event; import org.apache.poi.hdf.model.util.BTreeSet; import org.apache.poi.hdf.model.util.NumberFormatter; import org.apache.poi.hdf.model.hdftypes.*; - import org.apache.poi.util.LittleEndian; import java.util.ArrayList; +import java.util.List; @Deprecated public final class EventBridge implements HDFLowLevelParsingListener @@ -71,11 +71,11 @@ public final class EventBridge implements HDFLowLevelParsingListener BTreeSet _hdrCharacterRuns = new BTreeSet(); int _sectionCounter = 1; - ArrayList _hdrs = new ArrayList(); + List _hdrs = new ArrayList(); private boolean _holdParagraph = false; private int _endHoldIndex = -1; - private ArrayList _onHold; + private List _onHold; public EventBridge(HDFParsingListener listener) { @@ -119,7 +119,7 @@ public final class EventBridge implements HDFLowLevelParsingListener { for (int x = 1; x < _sectionCounter; x++) { - HeaderFooter[] hdrArray = (HeaderFooter[])_hdrs.get(x-1); + HeaderFooter[] hdrArray = _hdrs.get(x-1); HeaderFooter hf = null; if (!hdrArray[HeaderFooter.HEADER_EVEN - 1].isEmpty()) @@ -210,7 +210,7 @@ public final class EventBridge implements HDFLowLevelParsingListener _holdParagraph = false; _endHoldIndex = -1; flushHeldParagraph(); - _onHold = new ArrayList(); + _onHold = new ArrayList(); } } @@ -219,7 +219,7 @@ public final class EventBridge implements HDFLowLevelParsingListener CharacterProperties chp = (CharacterProperties)StyleSheet.uncompressProperty(byteChpx, _currentStd.getCHP(), _stsh); - ArrayList textList = BTreeSet.findProperties(start, end, _text.root); + List textList = BTreeSet.findProperties(start, end, _text.root); String text = getTextFromNodes(textList, start, end); _listener.characterRun(chp, text, start - _fcMin, end - _fcMin); @@ -241,7 +241,7 @@ public final class EventBridge implements HDFLowLevelParsingListener } private void flushHeaderProps(int start, int end) { - ArrayList list = BTreeSet.findProperties(start, end, _hdrSections.root); + List list = BTreeSet.findProperties(start, end, _hdrSections.root); int size = list.size(); for (int x = 0; x < size; x++) @@ -253,7 +253,7 @@ public final class EventBridge implements HDFLowLevelParsingListener //SepxNode node = new SepxNode(-1, secStart, secEnd, oldNode.getSepx()); //bodySection(node); - ArrayList parList = BTreeSet.findProperties(secStart, secEnd, _hdrParagraphs.root); + List parList = BTreeSet.findProperties(secStart, secEnd, _hdrParagraphs.root); int parSize = parList.size(); for (int y = 0; y < parSize; y++) @@ -265,7 +265,7 @@ public final class EventBridge implements HDFLowLevelParsingListener PapxNode parNode = new PapxNode(parStart, parEnd, oldParNode.getPapx()); paragraph(parNode); - ArrayList charList = BTreeSet.findProperties(parStart, parEnd, _hdrCharacterRuns.root); + List charList = BTreeSet.findProperties(parStart, parEnd, _hdrCharacterRuns.root); int charSize = charList.size(); for (int z = 0; z < charSize; z++) @@ -282,7 +282,7 @@ public final class EventBridge implements HDFLowLevelParsingListener } } - private String getTextFromNodes(ArrayList list, int start, int end) + private String getTextFromNodes(List list, int start, int end) { int size = list.size(); diff --git a/src/scratchpad/src/org/apache/poi/hdf/model/util/BTreeSet.java b/src/scratchpad/src/org/apache/poi/hdf/model/util/BTreeSet.java index 848e74a80..96cc51d6c 100644 --- a/src/scratchpad/src/org/apache/poi/hdf/model/util/BTreeSet.java +++ b/src/scratchpad/src/org/apache/poi/hdf/model/util/BTreeSet.java @@ -36,14 +36,14 @@ import org.apache.poi.hdf.model.hdftypes.PropertyNode; * */ @Deprecated -public final class BTreeSet extends AbstractSet +public final class BTreeSet extends AbstractSet { /* * Instance Variables */ public BTreeNode root; - private Comparator comparator = null; + private Comparator comparator = null; private int order; int size = 0; @@ -59,7 +59,7 @@ public final class BTreeSet extends AbstractSet this(6); // Default order for a BTreeSet is 32 } - public BTreeSet(Collection c) + public BTreeSet(Collection c) { this(6); // Default order for a BTreeSet is 32 addAll(c); @@ -70,7 +70,7 @@ public final class BTreeSet extends AbstractSet this(order, null); } - public BTreeSet(int order, Comparator comparator) + public BTreeSet(int order, Comparator comparator) { this.order = order; this.comparator = comparator; @@ -81,18 +81,18 @@ public final class BTreeSet extends AbstractSet /* * Public Methods */ - public boolean add(Object x) throws IllegalArgumentException + public boolean add(PropertyNode x) throws IllegalArgumentException { if (x == null) throw new IllegalArgumentException(); return root.insert(x, -1); } - public boolean contains(Object x) + public boolean contains(PropertyNode x) { return root.includes(x); } - public boolean remove(Object x) + public boolean remove(PropertyNode x) { if (x == null) return false; return root.delete(x, -1); @@ -109,14 +109,14 @@ public final class BTreeSet extends AbstractSet size = 0; } - public java.util.Iterator iterator() + public java.util.Iterator iterator() { return new Iterator(); } - public static ArrayList findProperties(int start, int end, BTreeSet.BTreeNode root) + public static List findProperties(int start, int end, BTreeSet.BTreeNode root) { - ArrayList results = new ArrayList(); + List results = new ArrayList(); BTreeSet.Entry[] entries = root.entries; for(int x = 0; x < entries.length; x++) @@ -124,7 +124,7 @@ public final class BTreeSet extends AbstractSet if(entries[x] != null) { BTreeSet.BTreeNode child = entries[x].child; - PropertyNode xNode = (PropertyNode)entries[x].element; + PropertyNode xNode = entries[x].element; if(xNode != null) { int xStart = xNode.getStart(); @@ -135,7 +135,7 @@ public final class BTreeSet extends AbstractSet { if(child != null) { - ArrayList beforeItems = findProperties(start, end, child); + List beforeItems = findProperties(start, end, child); results.addAll(beforeItems); } results.add(xNode); @@ -150,7 +150,7 @@ public final class BTreeSet extends AbstractSet { if(child != null) { - ArrayList beforeItems = findProperties(start, end, child); + List beforeItems = findProperties(start, end, child); results.addAll(beforeItems); } break; @@ -158,7 +158,7 @@ public final class BTreeSet extends AbstractSet } else if(child != null) { - ArrayList afterItems = findProperties(start, end, child); + List afterItems = findProperties(start, end, child); results.addAll(afterItems); } } @@ -172,9 +172,9 @@ public final class BTreeSet extends AbstractSet /* * Private methods */ - int compare(Object x, Object y) + int compare(PropertyNode x, PropertyNode y) { - return (comparator == null ? ((Comparable)x).compareTo(y) : comparator.compare(x, y)); + return (comparator == null ? x.compareTo(y) : comparator.compare(x, y)); } @@ -192,12 +192,12 @@ public final class BTreeSet extends AbstractSet * chance of receiving a NullPointerException. The Iterator.delete method is supported. */ - private class Iterator implements java.util.Iterator + private class Iterator implements java.util.Iterator { private int index = 0; - private Stack parentIndex = new Stack(); // Contains all parentIndicies for currentNode - private Object lastReturned = null; - private Object next; + private Stack parentIndex = new Stack(); // Contains all parentIndicies for currentNode + private PropertyNode lastReturned = null; + private PropertyNode next; private BTreeNode currentNode; Iterator() @@ -211,7 +211,7 @@ public final class BTreeSet extends AbstractSet return next != null; } - public Object next() + public PropertyNode next() { if (next == null) throw new NoSuchElementException(); @@ -241,7 +241,7 @@ public final class BTreeSet extends AbstractSet return temp; } - private Object nextElement() + private PropertyNode nextElement() { if (currentNode.isLeaf()) { @@ -250,13 +250,13 @@ public final class BTreeSet extends AbstractSet else if (!parentIndex.empty()) { //All elements have been returned, return successor of lastReturned if it exists currentNode = currentNode.parent; - index = ((Integer)parentIndex.pop()).intValue(); + index = parentIndex.pop().intValue(); while (index == currentNode.nrElements) { if (parentIndex.empty()) break; currentNode = currentNode.parent; - index = ((Integer)parentIndex.pop()).intValue(); + index = parentIndex.pop().intValue(); } if (index == currentNode.nrElements) return null; //Reached root and he has no more children @@ -289,7 +289,7 @@ public final class BTreeSet extends AbstractSet public static class Entry { - public Object element; + public PropertyNode element; public BTreeNode child; } @@ -309,11 +309,11 @@ public final class BTreeSet extends AbstractSet entries[0] = new Entry(); } - boolean insert(Object x, int parentIndex) + boolean insert(PropertyNode x, int parentIndex) { if (isFull()) { // If full, you must split and promote splitNode before inserting - Object splitNode = entries[nrElements / 2].element; + PropertyNode splitNode = entries[nrElements / 2].element; BTreeNode rightSibling = split(); if (isRoot()) @@ -354,7 +354,7 @@ public final class BTreeSet extends AbstractSet return false; } - boolean includes(Object x) + boolean includes(PropertyNode x) { int index = childToInsertAt(x, true); if (index == -1) return true; @@ -362,7 +362,7 @@ public final class BTreeSet extends AbstractSet return entries[index].child.includes(x); } - boolean delete(Object x, int parentIndex) + boolean delete(PropertyNode x, int parentIndex) { int i = childToInsertAt(x, true); int priorParentIndex = parentIndex; @@ -438,7 +438,7 @@ public final class BTreeSet extends AbstractSet * Creates a new BTreeSet.root which contains only the splitNode and pointers * to it's left and right child. */ - private void splitRoot(Object splitNode, BTreeNode left, BTreeNode right) + private void splitRoot(PropertyNode splitNode, BTreeNode left, BTreeNode right) { BTreeNode newRoot = new BTreeNode(null); newRoot.entries[0].element = splitNode; @@ -450,7 +450,7 @@ public final class BTreeSet extends AbstractSet BTreeSet.this.root = newRoot; } - private void insertSplitNode(Object splitNode, BTreeNode left, BTreeNode right, int insertAt) + private void insertSplitNode(PropertyNode splitNode, BTreeNode left, BTreeNode right, int insertAt) { for (int i = nrElements; i >= insertAt; i--) entries[i + 1] = entries[i]; @@ -462,7 +462,7 @@ public final class BTreeSet extends AbstractSet nrElements++; } - private void insertNewElement(Object x, int insertAt) + private void insertNewElement(PropertyNode x, int insertAt) { for (int i = nrElements; i > insertAt; i--) entries[i] = entries[i - 1]; @@ -482,7 +482,7 @@ public final class BTreeSet extends AbstractSet * element is contained in the calling BTreeNode than the position of the element * in entries[] is returned. */ - private int childToInsertAt(Object x, boolean position) + private int childToInsertAt(PropertyNode x, boolean position) { int index = nrElements / 2; @@ -509,7 +509,7 @@ public final class BTreeSet extends AbstractSet } - private void deleteElement(Object x) + private void deleteElement(PropertyNode x) { int index = childToInsertAt(x, false); for (; index < (nrElements - 1); index++) entries[index] = entries[index + 1]; @@ -568,12 +568,12 @@ public final class BTreeSet extends AbstractSet } } - private void switchWithSuccessor(Object x) + private void switchWithSuccessor(PropertyNode x) { int index = childToInsertAt(x, false); BTreeNode temp = entries[index + 1].child; while (temp.entries[0] != null && temp.entries[0].child != null) temp = temp.entries[0].child; - Object successor = temp.entries[0].element; + PropertyNode successor = temp.entries[0].element; temp.entries[0].element = entries[index].element; entries[index].element = successor; } diff --git a/src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java b/src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java index 95da85020..0c68acef4 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java @@ -1034,7 +1034,6 @@ public abstract class AbstractWordConverter } } - @SuppressWarnings( "unused" ) protected boolean processOle2( HWPFDocument wordDocument, Element block, Entry entry ) throws Exception { diff --git a/src/scratchpad/src/org/apache/poi/hwpf/extractor/Word6Extractor.java b/src/scratchpad/src/org/apache/poi/hwpf/extractor/Word6Extractor.java index 1d5ec6336..5807740d7 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/extractor/Word6Extractor.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/extractor/Word6Extractor.java @@ -38,7 +38,6 @@ import org.apache.poi.poifs.filesystem.POIFSFileSystem; * @author Nick Burch */ public final class Word6Extractor extends POIOLE2TextExtractor { - private POIFSFileSystem fs; private HWPFOldDocument doc; /** @@ -64,7 +63,6 @@ public final class Word6Extractor extends POIOLE2TextExtractor { * @deprecated Use {@link #Word6Extractor(DirectoryNode)} instead */ @Deprecated - @SuppressWarnings( "unused" ) public Word6Extractor( DirectoryNode dir, POIFSFileSystem fs ) throws IOException { diff --git a/src/scratchpad/src/org/apache/poi/hwpf/extractor/WordExtractor.java b/src/scratchpad/src/org/apache/poi/hwpf/extractor/WordExtractor.java index dc06fb926..ee0a615eb 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/extractor/WordExtractor.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/extractor/WordExtractor.java @@ -68,7 +68,6 @@ public final class WordExtractor extends POIOLE2TextExtractor * @deprecated Use {@link #WordExtractor(DirectoryNode)} instead */ @Deprecated - @SuppressWarnings( "unused" ) public WordExtractor( DirectoryNode dir, POIFSFileSystem fs ) throws IOException { @@ -109,7 +108,11 @@ public final class WordExtractor extends POIOLE2TextExtractor // Process the first argument as a file FileInputStream fin = new FileInputStream( args[0] ); WordExtractor extractor = new WordExtractor( fin ); - System.out.println( extractor.getText() ); + try { + System.out.println( extractor.getText() ); + } finally { + extractor.close(); + } } /** diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/CHPFormattedDiskPage.java b/src/scratchpad/src/org/apache/poi/hwpf/model/CHPFormattedDiskPage.java index 6b1410071..ee50fb55f 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/CHPFormattedDiskPage.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/CHPFormattedDiskPage.java @@ -62,7 +62,6 @@ public final class CHPFormattedDiskPage extends FormattedDiskPage * {@link #CHPFormattedDiskPage(byte[], int, CharIndexTranslator)} * instead */ - @SuppressWarnings( "unused" ) public CHPFormattedDiskPage( byte[] documentStream, int offset, int fcMin, TextPieceTable tpt ) { @@ -145,7 +144,6 @@ public final class CHPFormattedDiskPage extends FormattedDiskPage * @deprecated Use {@link #toByteArray(CharIndexTranslator)} instead */ @Deprecated - @SuppressWarnings( "unused" ) protected byte[] toByteArray(CharIndexTranslator translator, int fcMin) { return toByteArray( translator ); diff --git a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/CharacterProperties.java b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/CharacterProperties.java index fd6d631c7..3c5e25fb6 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/CharacterProperties.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/CharacterProperties.java @@ -382,7 +382,7 @@ public final class CharacterProperties cp.setDttmPropRMark( (DateAndTime) getDttmPropRMark().clone() ); cp.setDttmDispFldRMark( (DateAndTime) getDttmDispFldRMark().clone() ); cp.setXstDispFldRMark( getXstDispFldRMark().clone() ); - cp.setShd( (ShadingDescriptor) getShd().clone() ); + cp.setShd( getShd().clone() ); cp.setBrc( (BorderCode) getBrc().clone() ); return cp; diff --git a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/CharacterRun.java b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/CharacterRun.java index d02f8ae9b..4181c197f 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/CharacterRun.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/CharacterRun.java @@ -570,7 +570,7 @@ public final class CharacterRun extends Range cp._props.setDttmDispFldRMark((DateAndTime)_props.getDttmDispFldRMark(). clone()); cp._props.setXstDispFldRMark(_props.getXstDispFldRMark().clone()); - cp._props.setShd((ShadingDescriptor)_props.getShd().clone()); + cp._props.setShd(_props.getShd().clone()); return cp; } diff --git a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/HWPFList.java b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/HWPFList.java index 41bcb9652..6f69f7172 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/HWPFList.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/HWPFList.java @@ -17,10 +17,6 @@ package org.apache.poi.hwpf.usermodel; -import org.apache.poi.util.POILogFactory; - -import org.apache.poi.util.POILogger; - import org.apache.poi.hwpf.model.ListTables; import org.apache.poi.util.Internal; @@ -52,7 +48,7 @@ import org.apache.poi.hwpf.sprm.ParagraphSprmCompressor; */ public final class HWPFList { - private static POILogger log = POILogFactory.getLogger( HWPFList.class ); + //private static POILogger log = POILogFactory.getLogger( HWPFList.class ); private boolean _ignoreLogicalLeftIdentation = false; private LFO _lfo; diff --git a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/ParagraphProperties.java b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/ParagraphProperties.java index 7583b5904..1dbeae4f8 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/ParagraphProperties.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/ParagraphProperties.java @@ -43,7 +43,7 @@ public final class ParagraphProperties extends PAPAbstractType implements pp.setBrcBar( (BorderCode) getBrcBar().clone() ); pp.setDcs( getDcs().clone() ); pp.setLspd( (LineSpacingDescriptor) getLspd().clone() ); - pp.setShd( (ShadingDescriptor) getShd().clone() ); + pp.setShd( getShd().clone() ); pp.setPhe( getPhe().clone() ); return pp; } diff --git a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/TableCellDescriptor.java b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/TableCellDescriptor.java index 812e3b661..4d01ec891 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/TableCellDescriptor.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/TableCellDescriptor.java @@ -53,7 +53,7 @@ public final class TableCellDescriptor extends TCAbstractType implements throws CloneNotSupportedException { TableCellDescriptor tc = (TableCellDescriptor)super.clone(); - tc.setShd( (ShadingDescriptor) getShd().clone() ); + tc.setShd( getShd().clone() ); tc.setBrcTop((BorderCode)getBrcTop().clone()); tc.setBrcLeft((BorderCode)getBrcLeft().clone()); tc.setBrcBottom((BorderCode)getBrcBottom().clone()); diff --git a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/TableProperties.java b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/TableProperties.java index 31c3d974e..001b3cfb2 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/TableProperties.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/TableProperties.java @@ -71,7 +71,7 @@ public final class TableProperties extends TAPAbstractType implements Cloneable tap.setRgshd( new ShadingDescriptor[getRgshd().length] ); for ( int x = 0; x < getRgshd().length; x++ ) { - tap.getRgshd()[x] = (ShadingDescriptor) getRgshd()[x].clone(); + tap.getRgshd()[x] = getRgshd()[x].clone(); } tap.setBrcBottom( (BorderCode) getBrcBottom().clone() ); @@ -81,7 +81,7 @@ public final class TableProperties extends TAPAbstractType implements Cloneable tap.setBrcTop( (BorderCode) getBrcTop().clone() ); tap.setBrcVertical( (BorderCode) getBrcVertical().clone() ); - tap.setShdTable( (ShadingDescriptor) getShdTable().clone() ); + tap.setShdTable( getShdTable().clone() ); tap.setRgbrcInsideDefault_0( (BorderCode) getRgbrcInsideDefault_0() .clone() ); From 7567838f9b870363e3adfb77bb2c0a7a8f638b04 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 22 Mar 2015 21:45:56 +0000 Subject: [PATCH 051/301] Add test from bug 49423 to verify that the problem was fixed in the meantime git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1668481 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/hssf/usermodel/TestHSSFWorkbook.java | 33 ++++++++++++++++++ test-data/spreadsheet/49423.xls | Bin 0 -> 672768 bytes 2 files changed, 33 insertions(+) create mode 100644 test-data/spreadsheet/49423.xls diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java index 2fabba9de..efe4f01ec 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java @@ -28,6 +28,7 @@ import static org.apache.poi.POITestCase.assertContains; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; @@ -1106,4 +1107,36 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook { private void expectName(HSSFWorkbook wb, String name, String expect) { assertEquals(expect, wb.getName(name).getRefersToFormula()); } + + @Test + public void test49423() throws Exception + { + HSSFWorkbook workbook = HSSFTestDataSamples.openSampleWorkbook("49423.xls"); + + boolean found = false; + int numSheets = workbook.getNumberOfSheets(); + for (int i = 0; i < numSheets; i++) { + HSSFSheet sheet = workbook.getSheetAt(i); + List shapes = sheet.getDrawingPatriarch().getChildren(); + for(HSSFShape shape : shapes){ + HSSFAnchor anchor = shape.getAnchor(); + + if(anchor instanceof HSSFClientAnchor){ + // absolute coordinates + HSSFClientAnchor clientAnchor = (HSSFClientAnchor)anchor; + assertNotNull(clientAnchor); + //System.out.println(clientAnchor.getRow1() + "," + clientAnchor.getRow2()); + found = true; + } else if (anchor instanceof HSSFChildAnchor){ + // shape is grouped and the anchor is expressed in the coordinate system of the group + HSSFChildAnchor childAnchor = (HSSFChildAnchor)anchor; + assertNotNull(childAnchor); + //System.out.println(childAnchor.getDy1() + "," + childAnchor.getDy2()); + found = true; + } + } + } + + assertTrue("Should find some images via Client or Child anchors, but did not find any at all", found); + } } diff --git a/test-data/spreadsheet/49423.xls b/test-data/spreadsheet/49423.xls new file mode 100644 index 0000000000000000000000000000000000000000..3d8524cba32863f270cd80c9585b17edd855e914 GIT binary patch literal 672768 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
k2XAk{4xfKZW1BCC9J=gw$Hs^3+&Q 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

6GLoyEOU*okP zHkXWn*@u2l3zy($D8uEw_WxuLf+N$&c{x>NK2(WfJ$j!jhP~T=WjOB^(81jBZ_2Hw z{6KX~5&~Luyo<(_*OW(;3GQ{t|AccQpeY}Sp(`z*u%_8D*6Eczt{-+kB`n%LbmkfF zyhp0EXFV&oCOsLO(szAJt(9-d3fv`YpMqQ{+5Fn?hXD{L z!R7vEVi6qB@QutqyIyUY5uDTdtYu>gAtxI8I2-X4bO#n3NqB5x2X|L1m8m#)wQ1-@ z;i*YiTsSsTD%WUbQM$f4z}nh+Yer1z$dW?#J&xX`u01?oQqWN78WUYr6BCuJGzwyO z9@;7#OJ z2)(er1l;*n=Sw66EL38Lo(pxuhI;puGD8=qORF#-atcz5pba@h$W zdYhsM4$8e;0kXTkEB+f4zjl`GC!;=H)Aq2b{Tl2@@ZMk}aVyAlQazluF8@E#rN2@B zrKAa6PBdTZW%!WpMZ_Cne}wK(G(pe*GZ?4}diHNO|0^hIn*XDu{l8Sw{^b$S)Y8_` z)iX1ps=X8q_nKOqM@;=xuvzO zy`z6%aAz<*vYK&_}0>y=3swvRPyHU z<1jMUUVsmNSNa%~S=O5>WTN3TT0uY(f*|Jw2Zu+xalN|UR6FZII%UtF_(Q+wA~B1; zeN2i$OJR9N&_!Ra!b~6S;4s?9w9;EOE1oG3&=1O7ZpUY!gb@|iar{a4L+j^5cfq$< z!Ajzs3h%F7S!AwZ)%0THYp4F4LL^G+5yg1Sz~|2j(2cVhuGjKf5)d()v>kx<2L3w>e36NT83%W`^NFHK}2mq&ar~d7xd{J7+fo^98Q!~tc)rHBXTIH zP|>YJdxB9vzWt5C(ac0fr>-l9->TSSu1V|aHIAQ2ma$NV zMRUJR^XaFRm^xK-m8OeZfJQ*kYu29Dr5ziqj`6+iA} zWs-XFM_XBVC+Ynm&)J}G3K`e71m(I@6@^^~Z;tr%o77$D&D52^n}1+9DtJ4pU#3rP zS{7=G(jj$8)PBr_1fj2rCbkdkVK>y+-_S8AZsQeJIvgjxCcBllo>yoqPtw+6kF(vK zohC8i^-=#t2azzqt!L&ELL+ro6YOe{#xFQyKehJDBQ#1P?glAWPx+$&nQ8=g8=V|7 zYBJxkn26|BeDsr>mBeWduB!lwQl>%ppt z%UShx$-XU8{4S}4Vvzhu&s@&HPD!Ti=ec(X-ZM_(?M4Z6{GKkkT8u&^T3bYm%pF;C zYnj)yfFnjvp=0yv^pH3LLQc=pXoYSuSg*Q|HT~V=M(V+Aoi-15J-z9P^J87?2A|X9 zp*Q*Qe6P@;|bM-b=3ktdL zL5Yyk%gqZPR5D)K;_gtnivE~6KF98;quyN$TNi^XXt*8qSy%RUtm~YPoW0XNI`AX2 zb1S)0Gg<2HQ%SE*#`Lgy0s`N|l!Y=}Xz2PP+1IKjh0CgUDt#q$V6?d=qFk!kShWF* zepBYR-kvTx8dkoTQI6XWPOud|%HNroAUYdsV*>I7urX2G*E59o#r7X=kjz5hV>$2D zs);At{qD!gp1TpJ+8BtXH0`elJ#sOdQ55+>4NQi|KErskxyhu?3(eBx@mB}2`*Dc! zAr=U<`DY?>wJagE%bWWgdeJVcd&YVN-}~8_CP>E%;XskYhZOgBT+62>&^^ZrcBKYS zh0cP%J@1M#{slXTI=8=J4bTf~3;J;DOb-p}gzfB~mq~NKV+%C&yIi~A2`8rXHP zgzx`u0RDosCXsKv%o%n}I%61Gy!pj>o0QWQ1_lodlmJ_%`W1{lE2E3_09IoOIjgog zOJS6}3%|d#YC0_)~=G9>DQ}+MZriE&)`Z&>qsv)GUC zY<*AA-m=FQBp>M)N^Y8h?Lo3*Y*k))BTX{`DCOHBFV=nl|8Ohmxl>-s48-42Yi>5- z1w`jslrvW!Q6f<0%C#4du(eB23_zZO1hqoFf5xrHs)J!(vtl~ zsGV{9#U49Ufjl^L&c9A2{V8kyfl0X)0$;K(5X8UD=^5ukc~N*j9g07Hb&k#3=kouw zI|AbgF=PfwPCMJ=gng2g+>ji88;H@;H}j~fj&t$xtmgQdPfgZ2`mP1Coay1 z;Z>;JAuZ`oES}gWu%hA~w?W^A)(w}gG-smzlZ9Nned+gH+mLIpHnkJ}#(uNk1#5$= z4OvP_QYXz;R5*-3i2cYt#KX^BjbknK2zgx=8o@icWRbXMrBXF$M&$(Wran~pX9K-_ofWTYI2Nsl9 zr!~2W72~5QhOjJ32wAws!5er{vUPep!z(#A!S&srU*o$XPMK7q^O5UI-oJjUO1d$j znr}ujc8QQ6A5Wvb+(=)hn29W`7aP70#?XCLL4W-RroyoI_)kHUbF#cR*?w49ed;P7 z0klY9T*>+eCbt-+0AN4(MsRyr3&o@{;1$(auQ$hZONdLh!zle;&+WXlE{NJ*n`zGl zi2TR2yc_jjHGYhin!rFnludQb1v>oO=-N=D$DrBqyt0H!C2T$L956pT( z?%HU^1kq0XtrF#Xy#SjHEchKza=A732-|A+Y|8$7$mQYKJWuaD48{W3VuK! z1rSv4M1I!XyhZy>VT}A!F=CUP`EqVjl69)BE#((rUEirhQs|0lyPi+_9ExtTn>A&+hw4pkf0B*gPy47|-mx7ge+IeXHC?U@ zo^_hNt}=bsGk9))q8nhO+wg zNW17y>VY-C9FN3d;fct2i|>gY@z0BTVoqdZ2q{bivcI&DIq=i(A{j}!N=PA8v8)SM)%{&2lj?Aq-(drACR5^b}&k)VpdyX*>NR=Gi<7q8jzvgT?yM64(cqQ!yTUI^?GPoLW9# z%?Rshy^TB(+}zEOS--$c<6WeaF8v{m`IB(!oXr-I?>Yesl_eaXAM|gAMEkTN2W6V<{gkjrjHiD<&h7V1A9PvBbfYU9J5^ctFHN5 zO-?9NR7XF?MP?*LgvBVq5R_83xYCM`Il=%-gLi{IE8xV?^K-PVuB`=%fE8!=)dmki zQ_ifKoL9$)8YcCm)%Zs2mI-pKa0?fQs@-{5?Cm8JgG8R)>{FAJJMUn8UKZ?+qQ>dI z(Kr9K92?t=Q|8Jp-D+xSU77bb$0s&RPHua|P5YTh+zK3IK#m>Xv7%bZ5JdgI3Ko+ki)8fK9 zZ2xt+8D`7C#8rFwDEbBKdzdC40hA}SK51jg2NT>Qb%I~FzW|PZQS&+g&82+aA2(vO z$Hv*%FDqbc8D4HX7eJ(1%2~VqhDlG=_RgZ9ZRNP*PpcM2+iEG=bxEq|{aWi>C2d1= z&6W(h?L){PIX3LxwG3OEV>EMR7-XZ2%eb5JSkQ`?=jMa}R^*#ycEoYfkGTf?r2Z`a zysjxU&zr&&NOAw#P42WNC3MaYf!ao4q--w*NUVY#^lixW^A5;3PWAMvhX=>+PnExq zHnR622eoe?lz>vN4a=!hJD$vcdi*Nd?5o6Q{%WtR+#VwEon#2fDA4xyT!@b*b$XYm zRz*qa?82=*XW<*DGlU118R=YKTrtHMgB{!4?*5_b(32GPC^mh5jq@gn%SD;lwyT6Q z8*3xgavHxzV6Pkr%OsXvz7Z;&!1yfPH6&TLvO~TJDGR<39Ua(gCXBa24K80dNxtzK z>?a8+;%V*e?xqh@q2kB1a%!E{>uh|ohRCQ!!hGCEa2ip5Z`S6J^~7dW4U49bK|1v3 zfXJ*ZjAv4YeobLksUM|4&(#azE8*?^rkb0k0r&lC#PM9SB-1w2LI(@4#WL|sfR!eok&tW3C!)L1BWX; zdtB?-)=t2B%3W2g+%;ZHS1_D&+a1DIA^4=>GbwD1uX=s&(qoZbeLex9kPQtQW?$t~ z$Kb=^VyeC|`E-MzR)c`vcu*T^UxMep$b6!pNMNb$pA9zj-9WFGzZU<%5Y4x>wDWwu z`XI_G&I4R!RB`ob3FnV4S0t*WQt~t6FMlsT#_A#-Z_(eNj?7iHr9q^-F?v zSy3#~M~72Mn>-?Iwkp>A*w>+*E7kt%N01t-|IaBlMh5cn-OM-B#H+1r%(w+P>Oypd z?=gSSofH3BR%|@E%JZ2qqX1yr+=UDAz)Ct z9Xek9_o&;eix(Gj4Q<#%EE?eD-L%(nwc7)4y@W$&g!D}xEiYc@EMMXhV=$AG>di{5%!4v$7R5gs78V}&3;*b~&FT#iC{$s^c0tM{H`jS_DfqcBG9DGd!;WMI{YQ6#nc>O%As-=O4ZaHQSyb^B`C2C z+Far(-FBWal(=ZK6AlO_eX_8_Nlwo3edpS;!2sDK@0lDld22bqyMo=bD+I2B&A*C= zJ5ymTYK7>&)lU7WsNkqKMuJK38p+%1D7kz?Qf+$>#lr0EFT)#6V0@zFVIqRlhu zQjGp70kYN&?}niC*%HN4(?!2BVbFnhXa4ue?8X>wa^6HE!rC#Tl=nk19ux34X`H5= z1G9!KPRYUu)lt-Dr_OGs9rtyCSrB3Ga8!5?)|GSB?3IV!q=0*^sR*=rK z$!Qw=0|WPeX<}ZWgNlE<`Cp-l(fyw$=D$l5b7WU6@H05R*lvVMEKL0PRR4L19iAb} zG)GS}frA8Ae;VNXIVW81kiZ-eBvfJftu=x(s`Iyn*$D5wX*)wC(~w=#4QiQH2)e=tf3i=#Kz$RD{*jC=BGG3qd9rW(TfPAipx_2;;P z${H%vhbMGCFJ;wBAxZo3qNa^w$Dgxp6RpUq?EHz}Tr+Vza2Y#eV@ROttBhmJr4@ooqYG1YcmO=ZbVGvN|t3`4JA&ZVN z?H)+!?$)_fU7T{d#`FvFkS4f9Am=gcovzW7%$&zb7Oo0Uh){}v}< z7ZZ+5DKN7iv&f@$t+!dQZuBKd(|Fc_GVkt{!GGT9z_hv@8j8jki0MCV!NtqPWFjqZaBr*ZOIOD&Lek zUZ#ugq^msXk%be#XC#FObu)p20jxM!-3Gka@v0|V1=W#wI`krxE{N|qs={;PKpAYl9tx(%-f6-&){*Fj6^DrBQe12BK~AhX7s$VW9AO1kG|CQ4=6$_q>8vrVKazu7(>g!Xg+|j$Z7G;_bZAF7f*DQtP>VuQim*Vtm@q z0&&4Je$QI5T#;&CFtI4Joe>@5w6F5>bByy)`yX>sA;iaO5E?p~x-_sj*2Fb2MTCL% ze8jd`Boxdkopg!^BZxJ{!)rH3n9h0 zE_J>qKQ7i3Uq-&}c!&I@3zWziZl-Lv`R0NR|NDr0^s9eT1Bmxjyvcn8osjsz|iGjK3h&{g6dUkU)>)`$ZZqrB>~Bu$I(L?y!c4|cH97;(+tIpq>A&t+}MeAsZ0R58qRnm=&rvXT+KFJ!6^WoRn7v5*%6$&HJ<;}kE zNU;^t&G1U={b}IfGqP*S>89Pv{mLDw3$-VsW$=t2E1u@ovN8Ai*vEmth4vFq?&R5W z3svDZtwC?F2u~~KeqTT(e|?11Am;LEDklk(+Hf~qjnyA(c>TnX>Scn3V!g_m^=GZoY!jI2k@k{O0XqX zMm_Un`3?fGxJ*QatIb<29H3As6*iKkP%Ax1@+qzGBVO%xqE8)mb#kzm|H=+5jO#rH zN0L@gq{cRgj_0cCpIC~ECm~(}eECQn3IR&8qznZ}QV(Zlo^JL~va`vIE#RPq$08Vu z1Pjc-qm_G0sU+(m079zDx3&N%ZIFD@&s}bD^pl&OtQ#K3c+4X0O{_|XX^o;~GtreI zK<|x}8%APZAHH&4?y^eP)fJ<0^Ecq}xHR?(TYJ>ku*tecGGVa(1M|aCOO3F)zl@J|(ojTi zd&PaCasrWJ^I!nggtas|IO>9kDJV?~<-DcxNvnbN)+9E$cN|^lw5xBd#yaDMX}x{= zRb=)~;IBjNz2jCB^M`LEa3wDOAdi1whSwBB*MUIM4E3PVAbLEr@wmk%=K=~L57bYj zu^J#0B&x0DgfyY?54JhRS-I?%M%s#o$0GLoPdS&WPCoc|Fp9B9%9^P$25qC7YrHiA$d}A5=xx3*x+d`ZgUaUp zNWZj)`4-}`m(sAVq6c)xdRT|bKvOADEfYOboy>KdSG@Q{O7XZj01NR$p#BiQrtwx1Hw7m@IST(LW=v!THbe z$G|^tP-DY+!%F2nkrn_M)ZkOK-@ zl@;=mcv4T=$)l2_rwDY)vGt9=FMYdyEgyTY3hc7h0hoG4;?3{rvrhgd6_pq(k!2f2 zBf0QJOD8NZILW=Ah0>0p#Iv&2e_*^%o5;kjWnr zpedv}bn8y;n-BkI?jeNuuenEA7Ll{0;4)81>^?#e4nD^}Foe+a|2+4=f}Z``&HoB5 zgZBTl4F6qPhOrj+n^}Us{rQ>-XsH*VN!mdt`Rf9(qvnLW*KL4q|1A!W%2BMf2VMuW zU&*f-t`4r4_1n0&Z3DioN6{d1VjwcTh#Uxj^Br?$J{P-Oke-XppfFJ##NJ*L)gzbl z(KrBi!1j|Y4D5_t7pzdd)?JhKBGdsN^H{VEu*2?T8>+xcCR;d}_^$MMY?eYK)Dfh` zM6xG}LF>3&#SCsCGMo7NoiTbk@Q05U_8>L7rES@keknfMQ1e=QD+A3ySpQv-SNx;) zO-;CV2(fuf92ZIo)Yc9nQ_M48PAQ$iW57}qY_J|_le|S3=l4-n+k~(~@iU4MIjD#$ zCxA8f;4DqAFjW}B9nGa5bvs&M%n>?-WOc>>OLni43ak}8K#wxA%`;+ML>Vi*fTfb6 zB7D(Ih#7_NQeWv8DW7?QU7cKlYbE<~ss;gzB0E=eBPA8jn z!cStnmCi6{XeN_Wc3RM7`eHFx+lh~rj-eR|KTP?_hMW6iG}P$Eik*MYLW{77{lUK-JV)>52@q+`02=93PA z#0{_UGz&}{v+V7zHMiqZ11_18J|o23SJZ}ZMBNoq&Gpf(rt>GKwyVC++;ghCd&6|9 z1h$D}6f`)h&Cf2hIGM$-eCUP~Z_;Rt4LTg&1I^fDjAvN|8)g^5KJfN#;>|>*79`Gz z+1g6=GQ;dueGLNOp0KHf$d1_VwJ(@V!hXtxv$IcWCKLd=v*Ej5Nf<{(@F?q{rt%PG z`j=KMP*oi2`U@-z9p&U*+L`!36KZD1_wkYgX$~0H*D81v$jXjcc2uzlVD{Q057q|V zYI0Rw50iX?zk~N{NC=7XPIuj<(J7@&&e@Ny12@Pg=QNwW**v-eVcspHT>oYub&@JJ zWoYz2;GOyi91Y{VkJfTG!y&T$b~Shm-*}53H;nIWyX8= znkEf;NZH0W7~Zn7s^w)eX~?y$lVea{ zjl0Gb`lP8+`wV9npK9hD2JbL~ruJep!lDkkFB?N*TkifSr?CPgYeV4&MhayPt4=Cw zSJN;zDa)B*GlCRyYWaa?VoDcEwxP{>`R0$H#|#E`!}x^95020IFH<-nvbr{9UtB+h znT5{|?z@xS^+WIQxas;<0)fzbbl)Y{xM|3|Tni%is@9q;G^k8vJYp8zvv?r^;j7D# z6eSE@DgCX*cySC+P_B{}ZH;9gm(A|1aCp_MjBFx8ekStCeBv9Xo;qfIdgM?O%P)@^ zIofK9uat5&k@lDnamFahNeP>>U*h1~s&$}2OEO|hE;?}m*IF2XUzO0355TYL&OSm0i}8$V_}?C z{b7l$#DZMEu)2!AJ zeU}WRqUAZ#arOvvJ!;JW2f|+tv+BmLK6Yv+f-dR*$f!AU(Eq^~j3_I%^ls3ypGrA6 zp|;WsF6EDdCL9u=fBib$LyVJd|3Pck~t2xoyS3#!+06 zrtN~6K>bI3)>C9HQ*=k`sHx_C<(ORqnYuDyhhz0O`Z}_>VBU>>44}qJ9rWFbp9Fhx zBS@2_EI(OxL|;Ycqhy6xh+T?gq9BwpwvO;zxgjkUC`n<@HKgVmUdIMAWbNU$Xab(z zo)p`Yg^o5ATTKe2DPhK;djh}S*9jsV5*VBb`j{epHBR4a%L|G)M(ez5KJYkO@p=!^ z9!KY6X_qmBV-t*K^OOPvVodx9>IDe$FUMWZAMCZMc4h=JTWd10Vo7K11n4hEyo_=N zkrCLIJ$`B<-7=u6zSf5@meT@aUPW)K1nsoHx1$pNj8T5q_myF`myV7n8>7RHO_TXJ zqdMt{sp(RzevBH~@p0#>;)zneDxGPqfnv;G^r+ccf3I^*;!Sas$qxN|RBagOJEc3L zXmwUZE6YPs_TJfmt>{qMA*d0&q82SnJ4Em~gJ3^~y%QMc{Gz|G4MsZG6e(=h2~z@< zx!Cq~f`5M#lO~`E8lo~3209m%yh~dC8I4MfXlG)>Mn*wDZM_`!g?V$4nXy)z?SM7; zC~~I$hGR9ZeVt$w5Ide-F}UQk`kSafVbpJ1HpJu#J40862eWWB9_ffz+oy&pe+$bLFS_0A3wL!ui}usvCJWRAUtW#K?sPBCL2KM z-tXRkpETNR1uES-vlu3&FtB~*)P>fT@k}->18E6R4Y2oUbp)TX(!vNEob*u0X-!;Y zU{=6qo9Ma+1>n>9H`k3Bb5RIhzV*=^P(CUe>70bm43#a!i7$?q;;M%FKq+Bq@?5bE z)(K*69l-O!ETv^0YtvKx0bkqudl7vW*Gj=AC{N=)thDL3EUW zhfJMn@j&a`W9VbicGq4#dWxz-%Ko+3NnfunJ<;9w6yblUbu9_PJ!uk|Za2kpguOPA z7;ZMeSMU1@n-ciQt((2D!Jyg5+|h`gH?kcPYaI%!4`c9SZ2o#{F7{V1mId>%bW`v1 zfiZYSw%z6!!D`WM=Yl|UYL7`9DI7G}Dj;fjH1VLcBL?r+U8K&UW7gj%R2uRk^(=`3 z=8gB76&bn|E0wxzd9NoeZo&{+h*>>uxDx$7jW8|E0;Ezb7FbM_t!wi=wkBA>{COdnWDCm=#S@E_x_DxpWp>$Kl6aGiUYPYCa zL5K7$#T5g)9S(!FoXbGS*R(5is&~Aw*#maKBxnw>?b)al9-j0IM_mw*V6WvV4?Ch#}(M|0>2yzEcly<_=VBuYUZ;OVZQu@rtZ z#;Y-wA5Xnq9tiHwO#_Hr3>g`KFxTQRHBbru0)V7TxvnL;M#u5%lHSBAhw1eG=c5E9 zR(1vQyU=?PixUL>@vHL<(K2nr>&+C$*N#6{;|=vC-$m$UhC4L)v$@@(_{CTH5+%$$ ztJ!GN3D~%Qxx8k;-79Ks!-LZ}FT~IKBoVbBv>DUvE)hy3Xt;3>n~5CMRI5fH*j;#s zvkr%*I3swYmeIaojp%CmV?req9{NzJs?0W3&Y?D93?#}^I{5>ACevz%RMcV7Oa{BS zLWf0@Y&`;Y1bufkvR}FER{e|uj^?8hRl4{2nr`B|SRy@Pdk)lO&A%~Ih=`+i1-w+; zOK8Q{6BRz!2$q4#EscBmf424-_x0@(8tDWl)K}Fdldn&ksx?~K7A1Y-bM|Kq(ovD! z-u4u!okFS%~MoK&Lp+3>gj($J6ly;$kdeJ49e48^tY}yoM zMDW_O6o`3@Wk4}zO)+U|X?{Q;=yO;jBUhp6^rF&x2d)M_CrfGa>^Q*Z-{F{b4nJpo z_{N_628{*4(1ExWBtqgmz_8_b=o$YKT3PH&QzHeYcJl7Fuz1c#|as3 z#@rQ`)@Q1(?sF(^GTnOz>S&*bDtoG}Ugk4Pw3+G4WXTmiMvi$h?fWr2{9?0Jh`)YX zD%z0j5M^|%`{uM8Cyy4aX&t1CGlf$@fO5f+P!%c4i{OI*^^&yOqCA0=FwGk1h;sy` z?{H8s_14%{;gal3dQ*tMSuCv99vM(_=4e` zIfP2d7QXjcdhE_VVZQ$};Bb}pN0Wl`TG9Y6(Y%TELWzVxJVau~`cb8I=V`$%;LimYJw>J;y#b|y zX2uD=Ie~48r0NFL`vj`%hSI3SAQ=LI9byND>bW~l*Z1sl?XY{RStti(uROKM#`qWT6I%bj8<r)~_F#q2a24r0$^b~D|Qw1x&7miqPjFnaGB{j=qW z$k7SA_<-3)m?;-GZa2tqnz=9w**O6;JV$UjjDwCOdq0K61DVL7^s4qkRuhD1OzS}##yieO*eAXD{gumP#4Ueq;_=cgHH-lPlzO4N5onHUW z-d{_csiQLOhHlpOR8JB%}{ye5ME6_Jn+YJtfD-)mRK#C?)t{sLdr24 zdCYJ`uI0YNHc`~PO$2@_r~7W~Sjv-%U&nvua%ngbb+<$HwR{}3`2n6%Jq6;d#9xb2 z_KON#_^kuPA4BNuoc!Cl#`bGQ0Vann%v$a=Qb6)9X?O_@X_bc2ods$(tCcPiNvenB+PSqIMA!6u532yo zpJi%(hDy1`qQ^w9BA{&lIqRXZp*3duG$rLheYGvu<}q%g_B!B*9)~DYM5sB$)%vVF z{Pxm3^s9O({2k7m6KuNmk zTiw+}{d62&J-X4_Jgx1qRJ$39&*UwGu;qr`{T+G+iU;$kYbtqZ3D~Z~3=zvUss=hK z_*aC{5dq6D)*HzcYpbhu*R3Nt$_~<9F53>dI>m(1-Vnb5;xy}uXldNnh35G?U}&@U z9ULfThhQZCzNm5OEQ8=j{iGsjCy-wQ|BM3MRkoYAx680|0T1%zWPYipGy8Kj&5T#BqAi44|@NG{s2ob`F?})!kRG z$4JmH^@SYW(2v{Arew?2npSCxEvv2C2!zJ7ynB0B*Z?jL)Cgr+jTLlWuH^(uEZ5lW z=kSUPz#y3H1W9JBM#%Fs9}aJ}@7_etwd*QZ!})Nr2b;oA7w2;|ZxaED+VaxaW$Mc9 zlRmZI6||EmowYs%FJlf+-}4AQx$H-t7AMXs>#ye6DyTWxeoo=uv;7I`7}n-xSOsZ0 za{F^>4V_R?RbaLd>G;{hjTyFI=5_YBmBc7kV>Udr*v17JRA>5m|k*4m_}Z0 zbXaqa^_pN$CQR1g%5+@3Z@l4SamX^+Z!xwnJ<51vmP;!V10aczp{3nopA;6Y$luT< zRV1&1esqT|W!fkva(w){iojUk%5(HaUgv7%-)-he5W!1BjI>`Yr(rQR`G`Au{JQ3I z#L%d@qtXnnGHs$9rl7E-na^1sLn^Y=Gl2=VlahAS4?36n#{JEmbh@}PavPYkN^{e-_9*-%RRnIoyTSSOul|CkMp) za<}6IvB%cL{c+}@X+fZz2Or07G0|s@p=lK_Yc3eO2iEsYlnJEClE6NTiYX^e+_9}%4{_4*(&FF@`A?UAWQL=DV@0&#$w~nq3nf>NRQN|7fXHSg9O4ihGyVq0*oKk{PQJl1NzRk_D)|o|+f8_H?uY^hVVjM&O&h zaW1EwHLUpMZ|>L%jZ&B~wG@`>a`b@Bk#|PVZ4~)ue>4XpOx@ci#rT3Ax(&1akY-wz zt0Db7%-g7pB7h+W*_qn;3hUNcS&tk;{4YdZ&S(1Lpkwt#r^mwlrC?)^&Wxy1Ngpgv zUX6&BbJ#t{S0IB*Tk;nK1u{c`Xk>e_eiVaSI1lrV6NTeUm(cNFfV|G483ScNvQEp@ zj8T8FSTSEp!oC3_Xp3i^pG}ZUFM@(?d;pMzM~P-Fc|{(^l0^q=Wjs3Vt$}>z`{nay zJ)DsntZ8)D2^!r<8ctFj(`vOX3VlUZh17aPvIPnGj7aMhikg)yhLD5)`Fd7Nrt=e6 zGhxi*v*w_;a~tgPe4^s)_qKXgot-HYlEJI9Vx^h(8QrFe@zZ#6BPMtJn^-S;;WOkke|2+> z;}3I^uAKYME7?QcnI+cF()Z<*1Jo#%zh13Z=9(C&Q85*h@8U?0G|r+M0^wRHzi*5D zp}4KU!>eN-hx-}y5Lx+ry6Jv4`fniyTuOaq3Junv?3LZMmO=LAnK z6_+}Y4g2eFpG^E$Ou=3-CptFo@8!P`jEFL$ZObrH-~(qJ*2zL8&`b@oaGQkgh-Y$4d-d> zrkaj~4*yoU(AglBNA@mfjxHRXyLdDd5j9fkT;8bueT=bg%~f?dT8P0Z+FF*-cPQ*>ND@kyOu8+0UUVjO>CjTC@FUXHK(*l~W!ip<(?mz|dT!RB1bN z?Z!ZddAN{#ZS|3@7A3$jNYcx$(t)NeMu|>~6^-wKLraozi7n7c({DK*RIbzH_b;v6 z|4$Inil+Wu@BvNi^vtN;1nu4$)ROo=fQV9{wSQarzd`H%ch2@7GiUqV8p(?JBkDog zx~1jhGg3VrO`UEGL~slrHUSQZ7lSaU`4_-Z^yAu3)F8SO|H%7ew9q(2@WH0!>+J9c zKP*V0LY_SnMI`&LGLEwVz2}*=9B^gbD0e*t80AeY!EVWTyw*t&>hZ%k7I_y-g|N0I z_7o4L$>@5G&dKPAOtYpC4B-#!gqvUFSO*TN5PQCt%5x(UDK`tGQQ|ZeT^Z&h)pb-! zi~-lzNsSSx4WO&2H~mV9d{gkdnewAoq85JK?@8845N5i{D&Hklk-@Flt~bb6AYHHB zlieKwJpv!qFXBKV(=gkG0fQ}9ZRdFls(8$yw!3r(=<&W6#WV6 z#uYVI*-^t{$<~&6x3weQgaKss6mz?4)#dBt z`z2Eky#ZW=**<vKc$qvdS@xT8{yjbwEU`uIQiJNlik;9lpWfW_78IJ3>0F~T zMP|AC9wsP`zgkMNt~4X#F!4g&@AyJHKR?`_v^!NQ3?=UtBM) z$O>z&xS`R#dm>R0VAD9@iU znkU|WMyc9UAFq{Ae;epM=Ia=rI1uZoU~9KCqc=w57I$D}CnES4P)w?=Xvm<#S)C49 zKS|NT?8-v>7y0g&+ENFp_Py|)lOq`tWj#LDX4RDfhRC&nIl*&kBZz{N* zUwRLaye+DYRmS+4(v@@hmh(Rw^W$y6Orv4X$&$RpJn#~Bc?-51++80Y|}D$7z;>JKn8 z!NNVL99nnCHsHiyWRJKoj_}wkfJIxHNcA$@ANo&JF#9l~vl#jk`{Mu%x&7q|p~pOX zAWwzCtJjekibJbUi1tiNqW(4RTuN)ce*po-I^yrDG`CmPmbO%D2z6QylL;M zBy`rH8uE3lH85=_nf7I{jtUjI7oBLu#Jk z?{GAK%ULaHH(-c+#ygLWsJ!{mzd{UuiQb1JbTru|NUl0F!mVfY35@1~qbJvCgg*pO=Cx&RIZu~HE2jE8%-v9 zO#-xFk%CcR@9rv5&SPoQFvp>mYTi$=Z+_K`t)aA0@~{HzB(?aY9GK7Eq&M>!f$m!E z<`HJm@34IvY88Ka`_a#HZxpT#do|7f8c*0hW+)E+>>lzmq_NB9{(?|CW@4P(YF2X^ zG9xL}Y(;5FfTI$wl&p;=hn0n;)YHN)RzK)qYQyf8ze{>^qSwy+Rl@|!+S~rs&#;u& z5vgjBxworxPIIqSq*s_JMz)|)12u{TLOxOF`Ben}`{pM>blrplrBx>!3M%c`q)*Og zx*v+#*Qr7)p|z{0W#X*~Ce*D8 zaK5wcZbcE}6f){n3I)9ns+xZ1k4fyO`XO6ubn9zLa*h>sgw7-xPP7-1mGFU1hGKYIInN`G9T= z;_bB{G>5M_lOb+QMCp97P^~~6%7cyV)=P#dC3ZW~*`!sns2WEgD#y^oh~W#Sh`OGX4m6Vtxb4>4d?tLk@ol zfBXJi*wZX~pY(S5a?BXnu5(Hr!A*%_u`a2RvNqwrp*`|o`mXu?Rb3yw^C}0F;){(= zMPWYdfJO_P#A4N5nR#i_9C?8DJ>=}*3dq-VMJW}wkm&(ZUm0X3Xp_QP4XV5Xd9XV_ zQ?hD|XZibBQ4aqqm9DdEnIruJD9aRC(5o&Ie(0?HB?~YAcbfWelDD@{OMje3p$AJ~ zhE*XjhRoD>SV<1p8^bb6YuuB)Dtn}g`ux=~OC4s$+Ly4kW1UhCQ~YS7UA~KOf0?R~ zN?Mg)D{q{*N%j02_EwS$$I7DFc*o1H&E@aJ-{rjQK=j62f^HV+k3!%at!B4YK5Tcg z(E#PAfL8{>1DTAKZkN$JoWq5oe&15!%js1JWQ<|2_wkT8@ z`QHD=qJ@%jo-*h?`$zm7YazOlgcAK)Nbv9hL*k~DV_tid+V|WP@b9%g#bFSdJ{RQF zk7iY3+;aBU)wLWLwfe+L%F9d^e5){n1>`L9jWlzWDSK<>_WAkQzt!yZKJZq~{RvWu zt*rEsG-aghU|V!?Bgb1ABPf4|G1j-;uCg6f1?tUt0Ur#Wnm&Gmd7Z(@98f>y)N$v7 zMc};^l;l{AIS|(ERl@4I(gS%DCV9jwY0JD=c_ZG_X&6j7+SZS0@(7k)tAN7>d~sqn zK5OD*)IEGir*5kXhU4$V82U8q6LyBdbf0RM*G44RyWJ37>Po+}s3`XY%5*Cyb0>3s zii9Hk?UcB9;T5}3T^0^vK;tUGpff2H{V$}wP={7NxTXXT2@!smM7q78gOfMQmAnaD z&CE0xKeJAvzL?w87u)qjNL!V(9!-UvMpOoW^%k0V2JPZ)yrN>O?VJ5FYVLczn4N#E zLBH?~jilW-HuhbyfBg%Xox2}}zk-(NoLN47VfqW`c_I{A`2ZCNhn5AY?D$vS@b0gu zg7&um{0VKrPJ3qg`YKV<&*M#j_OaqL+5 zRYS13sepDs;#kKCMr}$JTwvcBi2q57{!4jBWIa%E8A9+KSTQloAawfZM3h%)lWZ;l@aFWXhj%^rM8 zwB$Pw=6uaf7dQo`?1(G#O~tMRp4_@= zy4%`P76;%BcF$%U1S|8dXrj+37f=WdCQICnpL>y#VdvYTGU-wbLfLawrh&R6eXU+G z3HF~|evfIV5!Yegu7}Yxl!BUR$)k0zE$H{sQl_Q&)PXx)a_m?f*DPA*-^S54y^sb| z=H@ju-{bI*#e`PqR}^gC-IfSRxX4~nsD$@ZCJ8N>(wwX96K}edfBTdA0~dxSWst!$ zw;h(I*@2x}KSO&Ib|V>d8Z&(|Olobpo3TMhh2cNdN_->fgijr*DOP{t)=k&!!#^rt zdGhVE3iegM&TI-?y9G@gU^C`L)38Uk-i;kn&{BHOrTy++=QFf!Nzwu^DW|KFhovqh@Eq zdP+}1WVzP+0KW{@QYx_x^k6b)AWbV87U^&MloOVde9%E%g}HEwCrdHZ$$7cj*P~d`U`;D|o;bY9A_0pRjY*G%$}6F{aHx?_f79)Da8O zv%9JzSRC_cwBE1mtJq^-?24PUOFGcwxGHGip~)Hn;NZP6o|9Q9QZZY4b%T+aAe|d4 zy0oljL=mVJuE?Fvu^AZrDXb3mA0B~X&mH<<=NKigy9>b4rBFI{!Gs2gs0V}s|3CL<@34< z>Mf^)yNR7})UjAs{6Ji+u#|JGYqlU_QN0`l&R%(Z)3}MmlM&7%QcRA{bs;t9_M%8- zQJ&{&LsJx|G4i423@ILfD`ypM2D_mT*XIn}H6g?Gvf8gLm$up2$v@rQhR%^b#O+=x zS<^YkK~9}nehFwQpS!Fn6PxE^{yMtq+Px8*chQ)c`h()zloAz%-{~Jztpc_!jGAa` z*JMfTkE!vY-zm#rY^iH)Q7s}gV>RG~t8vE^A)Po;CyzmBNnvty%yCDL_ZyB|s~Uap z5N<-+i{^)=CX!CJ==94@R|nJ1+;*O8{}qm(eka4N_bZ)Sk%6W6N0p4V@f~7x>wDoa zE*KZfVhwV!14hp&Pi31O%UbJ8n31sRWda)ENpM&2^ads5Cy20;D=(tmL5e@4ZgN9~ z1dV}9&yg2`4%-6EQK}QAX(!oU-RPC5uY_F*6|J!w>3wo-X@IQ4B`EkFacwC-ZFeAE zcT%j(I`M0|HC9U(Te43Neuvqdt!<#){VBUm#4o5lKn0Dq`yk~rg|pp}k}s5BHsi|r zxa*|Uj8jn(vCp4rZrK!WtAGF+Cs^C8zx}irRw-uIdl00Di=dcfbRHRVj#461O;)Af z!b;Jy)+th1FQy_YNUyyE@lr2#cZ{4XK&p~CT1vynOq|mHXm(rPJqJDgMYO?Q%x=1d(Z8oE>4Di~Z(Ee(jlaGs@O2!|hXcP~?>n z=pIyV;n-yBG%j;jQF^6aG=s->LAf1i;ICr9MSgl)3G){A@h`wk#jP+vD#y_R>d7}# z$5Y$QwNA31{RZJzn{#h{S26r%Tp8(RQXbz<8?CNxw}M}cVgv~lfyXAJ>&OAt{jp)M zmTB7@8NJ)pqTPXXDuvGCg7;G!N@!CC8vo+Hr5K(Fid8C)7qnqTjaLEIKEG5wV$uFBBes@I8Mq8EsLZO1NlMD z8PlvkmZi!|ngujMQLz)arzG9dvtJA2EeK=JBQ;w$iZXn&KUz}IJQq|exX|ucl_b-Sh?e3maclP*2KYb`Dzi5Ok}5aK*2ml)$aJ)jZJ#4 ztqZ1-_&d~1z+5+ZV+C^v+gG~5MWV--v@yr)C8ux6llGX$q-F~T=HHO=DK@$terC;Z z#C(-!6Ut8nFeU#93d`i}Mb9KbB-jX(wb5B`0h^=Ne7g9GB4EpL!RYc~! z2_*))cnJn(O_;)ihY_mHV@ZZM3SmY$+INY=zs=o_7NFQLj#9*~)4e5&?I_G&D*a*- zzL;OUZ?!`sQNHQjE_~*!ho7?X(R+cZ*tajsQa$uMuPr$`@pXgf1;mWfR_cz5ma*Uu z3zrup|Eh|Wp1ZSU-f%reSj7As+rInlm6pnBe%HU>D${|6Bk`cmtBC$=v5On}BWnolSRnJQ0{seB zQ$B{mk{ET|7TZT?ej8N;p|+46!|ph{8zw=FUA$Ry$az}S{sP{Wun+&fK6xa(y8jbz z(rtySk{!=bL;XB>2leOqg+F^C2Tm$y}(+%EH=lJuKEzIC;Z(yayLSTwg2d( z&HU$BH>Fj4#9zQ%iI8d~YAdO?VAy>?*!H^qryOy4bc=+hp^F}s3{FPwg zC8u^;>h$UIICc{s4WE}krbf<+P! zWF&-Ul~U7tgp#eviB3x`u;^Qmfph?Tx?{yK8u~8-|2ulox8$DfT!fa!BGGMw&jMpQ z!V63b7iO*w{LhhEOTC`$JQu2DU;GgW?n)@XFlJ(7ZX|b>dZ_*dsHid-p!i!D{{?(X zf>Bdgx-%e?S>pbJDLlUEgubOGg=(+70IsQOi~zF+kBSPP?t**?hG;K^x=ANfdaG<$ zsg;ZzW2dW8nIA;w4HlrE^n!tSHTjDe02#lbX@Vo#+H{_QoQAJ{}hiegbb$U!puyq{`AGVaml%^Ib`p z71ack#1h4yCk3PfMgW8i9bK0go)|y-5f$P-usB&(QXaf$`YqT>7gzY{9*m7v|Hf`{ zMSw5v&_qQxMz9L2<}DAahUNUhU+(uE==Q*r%Rog1+riTJit4o-LY>0kdG>(qK{fu- ztDFG-sun{fd{5BSO#;1k%w0p)nj2>4k`#GlQYNP3vM2te9YVd`XTq7DAG&iLRNsG(UsQJvkAbT7K9O7UNdhiCe>!zNzagV6(6e{q7Uk* z5k}gtc)jkW%K z1U0GsPd3Yp_POCE{93OiRr@tz-Xt}#9J6aO`Uzz$N)H(w42oye_s5cEzr+vZD&WV1 zXf`@5$&i9#7Be3-qAAMA%?Qg~0WLQFj*;^k{a}TF#+=ahqW1I#H=ar#nsKm9gd>5^ z#z4kxrJ@)qoiUBwT(j&&dYc#XnRFmEw<~?bgAG@Tp zSM=_fv;Qu1?sL!1(2!e?B}O;GA^deQ zH>>=0n`(EkmPtV|j)iHA2BAeR{_xpPbgzg$@jzk1i{iQ4lbZNbnvNyg-+^{3?vU011oEv@VJgc)5Qs?K%AtE|ILG8@XJ$MZCLCf%|D&X!F<2U@M(A)z z7XZgO#pN=jgEQJYBpqX|Wjt0UkJ<~n%88*HM3(jOV7@%TLE5^D9Ux>~GQex$=TNw;BLiconq)!tY^ zcOS^HR72e=Lb50ci=tb(q#V-OjnUdx4c4gLZ`cE$wT3~jTKR|NBK(YuU6Vy z+6%+DY(5|8f1XMx#XMaw2b`oy{}>g!REJ*6|I4lWX{WV^A2yofd!Xnmp5h zgn#z6?OSqg`SAyqma9NtF_q*F(>Nd~xM<;QgYAM=dRFJqBGMtM%tG3)IG>J`S1SfI(es^i;tXTbP}d9x)9(25E%`j#+cSRRUt*0Z zmBY+tLXR`QSmquQ?lq0diUM%O(@ek(Qeub|cpg6gd#~FbFBOKL-d1^*R(k}rBv(`lia70_}%%m_q-Bgj+*b)lb^@p z7cRx11N-R&4wK0?6Mt_o)SRi(6x-hIc66f7Y?f&M+pfE5jOk*Ga?!I0pHpe_htK`X zarJKO9{2QbmxrR>LhrKjv>&A~j!zj3SvthS?a*JmkTl7}_?JLI#r%griJMQ86Gxuz z8b3uHF?%;w{TFZq&A|A-T@72%+P|&*uR!U;QJuS_WH)gNL`1^H!zUo5qNbsxqvzn{ z;^yJy6PJ*bl9rK`Q&az+vxfeEMTu_xzgePJ|6iEsAb=DG01NZ~ya4}v!MuZg5BCB7 zKgOSY;gYE>8BErPw?^74$RMNF7kh{C7x0@rZ((OBn5L!grJ~RD*V1>8CD|E@-@|BG z2EN|`2>Pa6mbWAutj{Q69QEc&^LkB-jG1E`OL`ueYF|w!B89Z6;!sb}+DyZQqWz#E zN2H_@bnp67zJ=p^9PqVIu-qA*jxDAe-i?Tsls&(vAb5nouKchn2JXgR1efgfvy%hMxRaG|lO6g?_t-KC zZk+y4#!_K7>Y}&l_Gty%M-9&IHoMds&k_5}QqSeEH$&}Lt-pY3xkEQbPSD9r%BBzf zJ2PUyZ)oIs<6i(1R5$oT_lyd*8(1*uAH;%9-M}TQVGY^xm|QNNh#vZ~R&K-xq=2I! zCAh8Ue+^LgPh^sn?DH2`laUY5$B?G|CE^E)a8 zWT0%<0sk5RJxN8?dQ?f5oxM$I@Wab0mERXs943yQ9ZBn~P4u=6eZgsJ-6Hq9VhRtz3`XX=%H=+t@Q-jl6@D7wr+l%n>}&V1XB zp>o2ql$T*Ymez3;L?Q9DKnznBi>hx#%n40UiM)BDK4N`6S!5dVXym2}!LGD{=^(_U zx8#DI=e?;Q&>gYLYOaY=aSw&pw3Q4k*lXDki|}Y_sB+`C-y?C`3sN~8Pp9_2-S>`A zkCeHei_GS#Y)A>#cO{j~rc&+6#f(lkv7>%`ov*2OEesg16W^HSU3jY|EEgsy(@*r|P+L)i%yVuUcWy4JP3_Ymgf{c~0w<7YS#U)@>3-2#ow$_uHFfb*|<=0zVe-R;*e_N!V>Sid20ggbHc{&rIPkmdHIywPbMFjf4UfM#`ld7M^2n{ zKhSe}@DyKsZZ)I=*Q`@IHL!>jhZEOa7S*f~oOe#5`DqtJ@Iwr;67~Iwh39hII1%CX{H?z%))4b)^T2yZB zPGt45^#_{w^HSGTTTflY+1ZXG80DtvFF=2(y1L@%KAzI?%zj(#*y~15>bM{a=P%&% zbb(72^_dUSjaXzU1?460e!E^;4HH$miE2GDUXnkHPZzMR9SO@DfRE_AMf5eGgwzgZ1aYAR|&Y;q<=CaQ_uM;?PzkQeQrtEkPLBT zDzX{R3mgiSH(T^!rv0Mo==P&i&*LFH$Y);=z!Aoc;JeHK2cnk_ogo;7=iFW@mz5m? z0u6HZKXE3Ptmm3cb&Tz%AwoO(r>E{PXSdaQ2zk($?79wZ74xXc;4hOEgBGAgTdvV# zOgz+;wBWuZa?+#6^T)Sh*m?O43 zf(Fe0VehS?+I-t>?@+8zq*#Fxq{WIBcc*x9_u^LE-C9bK0D<6A+(U7P;_ktn;O-9H z`M+!L?;B&Ub+pgc8t+-gojVyxo@eAq<~8SU`VYS(Wt0{OjCP5$i$~S8c&88wb`IWW zGVv3m1Fv95711zmo< zOImruu*ujp9(UwuYjJqb6c$%*DQ7}3{C=65fdqXVVHDRljx4s2Q=(l?o^{|zeuhLd zpD#)n@qDu`28{~~8b!>diT89It@WQ@!5&E<5kLwkDnSk5oum{*k>~2 zWu7w(w7Tn$XT6TG8ug`=Jm?`#ZIUVU522GD6C9&@!H=Gr>urysD)GBNJ_&G$0>;fQ zA)e_a{$LUP%4LXTOF6qpgF&%)=?DLEPfktTxu_R9c~LQK%{L;l_~5%|H|=Un_APz? zzkpL^M)!SJLE~e@)lBz%q7n$Yr6(g?3y!*2D3RkRTjT!<;&l-Ax1n<;3<}bm_v$!M zpe>R6Vu}4zV?AE9+-0OF-?c4Ov6+|_i~tg8GRMigbjSa>*I@TAwqzpXs8?IM$kJ;p z*qu`5qHt5A1a+6oS(d8B}K6q`voUc@xDHe8iD+l=Q~ zV9lpzv*R{rVxU;9G~C_cw@&e@-sKD=9ZuQ*aFsTU4eLcl>vf$oEo_uYoHIAUSyM>= zu!q2oXVxk$>>*O~16ZNk?rS@HtLd5*e1>}Q%q5kfHK;&>#k1{Z8#6mtOjUa8^lH0n zSOE@%|3S8IB{1#>cS4vB7S6j1iG@h%zvhNvEFHMYt!MV4k+KEcVZX z#O805XRcxklt!<`mnFO}3eR><%lWp!JRlO9h3_2ud}f!0j?s{f+HaryCWjA^mUr2Y z^coGBs!T-m=kb_%RrKW;yg&Idaykdk#>kH=GU|utfTc`mve*W}&ijFk9^eb+Ek~dn z-qs>TI{Z#socSkef-hlW95Q|`SkS#}=VgUwKOTYK2MQ?X)Zl#*hKFD9m~wA?hTaBeVqap|0dZt%sz0kr=B~^!;~j27}|0q^zm2Uj#e$|B3BOQ8&dGccM)G7=6}8#AyE`AXMQX>Q#&u+_lN0ye1e}NO1s85Ny2|_* z^?3x7ZXON!df;RXuG$Ocs*j=pu$cnCd^F4m$yMPD) z)0h(DQCl3#l7i=U(PnQ^A@GKKM~T>A(ucZLj()Hy>GHzL-u8&{k$3I)!L&&G*)7iEVEnc1PHXk}wmPWEOXM zcZ$x9z;B>AXSzl87~AvWh~~TMqv3_>sxm4}w?3%YoH|Ha_%8s$-8CS@-g`LVu&Yh- z4>n9Fz(~tJD!4(D{f2{TIXW<)aVXzDRMoiVq%0AhRkT0`UlvC|KWd-Y3-LR||IdbIW}!@jUUeg%X6 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

D%|0jdegOImGjcS^s*MzU;Ghx-`I_tr&Mds} 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�Mc*3%D1R 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 literal 0 HcmV?d00001 From e6d6cbcbd175d091d13f201285530cc84505b2b2 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 22 Mar 2015 21:47:19 +0000 Subject: [PATCH 052/301] Add test-document to verify that bug 51921 is fixed already git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1668482 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/stress/HPBFFileHandler.java | 21 +++++++++++++++++- .../apache/poi/stress/HWPFFileHandler.java | 4 ++-- .../apache/poi/stress/XWPFFileHandler.java | 8 ++++++- test-data/document/51921-Word-Crash067.doc | Bin 0 -> 56832 bytes test-data/document/51921-Word-Crash067.docx | Bin 0 -> 20006 bytes 5 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 test-data/document/51921-Word-Crash067.doc create mode 100644 test-data/document/51921-Word-Crash067.docx diff --git a/src/integrationtest/org/apache/poi/stress/HPBFFileHandler.java b/src/integrationtest/org/apache/poi/stress/HPBFFileHandler.java index 31ad8bc12..a41b6ebad 100644 --- a/src/integrationtest/org/apache/poi/stress/HPBFFileHandler.java +++ b/src/integrationtest/org/apache/poi/stress/HPBFFileHandler.java @@ -18,10 +18,12 @@ package org.apache.poi.stress; import static org.junit.Assert.assertNotNull; +import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import org.apache.poi.hpbf.HPBFDocument; +import org.apache.poi.hpbf.extractor.PublisherTextExtractor; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.junit.Test; @@ -39,11 +41,28 @@ public class HPBFFileHandler extends POIFSFileHandler { // a test-case to test this locally without executing the full TestAllFiles @Test public void test() throws Exception { - InputStream stream = new FileInputStream("test-data/publisher/SampleBrochure.pub"); + File file = new File("test-data/publisher/SampleBrochure.pub"); + + InputStream stream = new FileInputStream(file); try { handleFile(stream); } finally { stream.close(); } + + handleExtracting(file); + + stream = new FileInputStream(file); + try { + PublisherTextExtractor extractor = new PublisherTextExtractor(stream); + try { + assertNotNull(extractor.getText()); + } finally { + extractor.close(); + } + } finally { + stream.close(); + } } + } diff --git a/src/integrationtest/org/apache/poi/stress/HWPFFileHandler.java b/src/integrationtest/org/apache/poi/stress/HWPFFileHandler.java index 5f24337fb..3a223674c 100644 --- a/src/integrationtest/org/apache/poi/stress/HWPFFileHandler.java +++ b/src/integrationtest/org/apache/poi/stress/HWPFFileHandler.java @@ -68,7 +68,7 @@ public class HWPFFileHandler extends POIFSFileHandler { // a test-case to test this locally without executing the full TestAllFiles @Test public void test() throws Exception { - File file = new File("test-data/document/47304.doc"); + File file = new File("test-data/document/51921-Word-Crash067.doc"); InputStream stream = new FileInputStream(file); try { @@ -91,4 +91,4 @@ public class HWPFFileHandler extends POIFSFileHandler { stream.close(); } } -} \ No newline at end of file +} diff --git a/src/integrationtest/org/apache/poi/stress/XWPFFileHandler.java b/src/integrationtest/org/apache/poi/stress/XWPFFileHandler.java index 47c18d8aa..c097dc9f7 100644 --- a/src/integrationtest/org/apache/poi/stress/XWPFFileHandler.java +++ b/src/integrationtest/org/apache/poi/stress/XWPFFileHandler.java @@ -16,8 +16,10 @@ ==================================================================== */ package org.apache.poi.stress; +import java.io.File; import java.io.FileInputStream; import java.io.InputStream; +import java.io.PushbackInputStream; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.junit.Test; @@ -36,12 +38,16 @@ public class XWPFFileHandler extends AbstractFileHandler { // a test-case to test this locally without executing the full TestAllFiles @Test public void test() throws Exception { - InputStream stream = new FileInputStream("test-data/document/footnotes.docx"); + File file = new File("test-data/document/51921-Word-Crash067.docx"); + + InputStream stream = new PushbackInputStream(new FileInputStream(file), 100000); try { handleFile(stream); } finally { stream.close(); } + + handleExtracting(file); } } \ No newline at end of file diff --git a/test-data/document/51921-Word-Crash067.doc b/test-data/document/51921-Word-Crash067.doc new file mode 100644 index 0000000000000000000000000000000000000000..dc8bfff278d4dcef9ce5f655ddd73c201bd9acec GIT binary patch literal 56832 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 Yc%=CFRQhJ}LqDgkD|)NhKaT|d7yQ+an*aa+ literal 0 HcmV?d00001 diff --git a/test-data/document/51921-Word-Crash067.docx b/test-data/document/51921-Word-Crash067.docx new file mode 100644 index 0000000000000000000000000000000000000000..12c27c85e47a06b44b1f5d24cdbdc1ded4a0f176 GIT binary patch literal 20006 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 ieS~fXhWqYF)Skcz1HuMi2ASXm;sF3##FL!> literal 0 HcmV?d00001 From ca9f22c289465733c60211abf5965217a1c2ce74 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 22 Mar 2015 21:47:44 +0000 Subject: [PATCH 053/301] Integration tests: Expect exception for old word documents and still run the text extraction for them. Also add executing HPSFPropertiesExtractor where possible git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1668483 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/TestAllFiles.java | 37 +++++++++++++----- .../poi/stress/AbstractFileHandler.java | 15 +++++++ .../apache/poi/stress/HWPFFileHandler.java | 10 +++-- test-data/document/52117.doc | Bin 0 -> 7168 bytes 4 files changed, 50 insertions(+), 12 deletions(-) create mode 100644 test-data/document/52117.doc diff --git a/src/integrationtest/org/apache/poi/TestAllFiles.java b/src/integrationtest/org/apache/poi/TestAllFiles.java index e8de685f9..8a66024f7 100644 --- a/src/integrationtest/org/apache/poi/TestAllFiles.java +++ b/src/integrationtest/org/apache/poi/TestAllFiles.java @@ -31,6 +31,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import org.apache.poi.hwpf.OldWordFileFormatException; import org.apache.poi.stress.*; import org.apache.tools.ant.DirectoryScanner; import org.junit.Test; @@ -162,6 +163,20 @@ public class TestAllFiles { HANDLERS.put("spreadsheet/test_properties1", new NullFileHandler()); } + // Old Word Documents where we can at least extract some text + private static final Set OLD_FILES = new HashSet(); + static { + OLD_FILES.add("document/Bug49933.doc"); + OLD_FILES.add("document/Bug51944.doc"); + OLD_FILES.add("document/Word6.doc"); + OLD_FILES.add("document/Word6_sections.doc"); + OLD_FILES.add("document/Word6_sections2.doc"); + OLD_FILES.add("document/Word95.doc"); + OLD_FILES.add("document/word95err.doc"); + OLD_FILES.add("hpsf/TestMickey.doc"); + OLD_FILES.add("document/52117.doc"); + } + private static final Set EXPECTED_FAILURES = new HashSet(); static { // password protected files @@ -202,15 +217,7 @@ public class TestAllFiles { EXPECTED_FAILURES.add("spreadsheet/43493.xls"); EXPECTED_FAILURES.add("spreadsheet/46904.xls"); EXPECTED_FAILURES.add("document/56880.doc"); - EXPECTED_FAILURES.add("document/Bug49933.doc"); EXPECTED_FAILURES.add("document/Bug50955.doc"); - EXPECTED_FAILURES.add("document/Bug51944.doc"); - EXPECTED_FAILURES.add("document/Word6.doc"); - EXPECTED_FAILURES.add("document/Word6_sections.doc"); - EXPECTED_FAILURES.add("document/Word6_sections2.doc"); - EXPECTED_FAILURES.add("document/Word95.doc"); - EXPECTED_FAILURES.add("document/word95err.doc"); - EXPECTED_FAILURES.add("hpsf/TestMickey.doc"); EXPECTED_FAILURES.add("slideshow/PPT95.ppt"); EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_DCTermsNamespaceLimitedUseFAIL.docx"); EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_DoNotUseCompatibilityMarkupFAIL.docx"); @@ -269,17 +276,29 @@ public class TestAllFiles { File inputFile = new File(ROOT_DIR, file); try { - InputStream stream = new BufferedInputStream(new FileInputStream(inputFile),100); + InputStream stream = new BufferedInputStream(new FileInputStream(inputFile), 64*1024); try { handler.handleFile(stream); assertFalse("Expected to fail for file " + file + " and handler " + handler + ", but did not fail!", EXPECTED_FAILURES.contains(file)); + assertFalse("Expected to fail for file " + file + " and handler " + handler + ", but did not fail!", + OLD_FILES.contains(file)); } finally { stream.close(); } handler.handleExtracting(inputFile); + } catch (OldWordFileFormatException e) { + // for old word files we should still support extracting text + if(OLD_FILES.contains(file)) { + handler.handleExtracting(inputFile); + } else { + // check if we expect failure for this file + if(!EXPECTED_FAILURES.contains(file) && !AbstractFileHandler.EXPECTED_EXTRACTOR_FAILURES.contains(file)) { + throw new Exception("While handling " + file, e); + } + } } catch (Exception e) { // check if we expect failure for this file if(!EXPECTED_FAILURES.contains(file) && !AbstractFileHandler.EXPECTED_EXTRACTOR_FAILURES.contains(file)) { diff --git a/src/integrationtest/org/apache/poi/stress/AbstractFileHandler.java b/src/integrationtest/org/apache/poi/stress/AbstractFileHandler.java index 8a27e6d0e..881908377 100644 --- a/src/integrationtest/org/apache/poi/stress/AbstractFileHandler.java +++ b/src/integrationtest/org/apache/poi/stress/AbstractFileHandler.java @@ -28,8 +28,10 @@ import java.io.InputStream; import java.util.HashSet; import java.util.Set; +import org.apache.poi.POIOLE2TextExtractor; import org.apache.poi.POITextExtractor; import org.apache.poi.extractor.ExtractorFactory; +import org.apache.poi.hpsf.extractor.HPSFPropertiesExtractor; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.openxml4j.exceptions.OpenXML4JException; import org.apache.xmlbeans.XmlException; @@ -89,6 +91,19 @@ public abstract class AbstractFileHandler implements FileHandler { assertEquals("File should not be modified by extractor", modified, file.lastModified()); handleExtractingAsStream(file); + + if(extractor instanceof POIOLE2TextExtractor) { + HPSFPropertiesExtractor hpsfExtractor = new HPSFPropertiesExtractor((POIOLE2TextExtractor)extractor); + try { + assertNotNull(hpsfExtractor.getDocumentSummaryInformationText()); + assertNotNull(hpsfExtractor.getSummaryInformationText()); + String text = hpsfExtractor.getText(); + //System.out.println(text); + assertNotNull(text); + } finally { + hpsfExtractor.close(); + } + } } catch (IllegalArgumentException e) { if(!EXPECTED_EXTRACTOR_FAILURES.contains(file)) { throw new Exception("While handling " + file, e); diff --git a/src/integrationtest/org/apache/poi/stress/HWPFFileHandler.java b/src/integrationtest/org/apache/poi/stress/HWPFFileHandler.java index 3a223674c..a56ddd2dc 100644 --- a/src/integrationtest/org/apache/poi/stress/HWPFFileHandler.java +++ b/src/integrationtest/org/apache/poi/stress/HWPFFileHandler.java @@ -63,12 +63,10 @@ public class HWPFFileHandler extends POIFSFileHandler { docTextWriter.close(); } - - // a test-case to test this locally without executing the full TestAllFiles @Test public void test() throws Exception { - File file = new File("test-data/document/51921-Word-Crash067.doc"); + File file = new File("test-data/document/52117.doc"); InputStream stream = new FileInputStream(file); try { @@ -91,4 +89,10 @@ public class HWPFFileHandler extends POIFSFileHandler { stream.close(); } } + + @Test + public void testExtractingOld() throws Exception { + File file = new File("test-data/document/52117.doc"); + handleExtracting(file); + } } diff --git a/test-data/document/52117.doc b/test-data/document/52117.doc new file mode 100644 index 0000000000000000000000000000000000000000..4f966c01c501293cf20f3b0d133c958cdbca30c5 GIT binary patch literal 7168 zcmeI0ZBSHI7{||rU1Y^2R6tP6nv zZJenY$`5_WnZ_9{8=Iy~N2i9y4^GWEHeE7jtm(t5L!kolVl|Ef+yA+{3s*o{urwwP z{Pw&&&vRa$bM8I&9OZ|(!F^vWJkLgj4J@7wg$yh~Q_dls6wRkF7Kb#I4TVCXXfcvA zVH$a0Fw$3=Lmehj4`|M3fka>cvjNHHMB-^QyqT^};DKu9$Dho2R>FLU1FQwJ9D7K| ziqSR^i>3B`5sUsrIy3E$cwi!5kzDKl==(d?=idnXWN;tA7Qp6$d0;+B1!*81EC3lG z6D$Oaz+!MecmON`Ja`Z+1rLFT!7`8qvcYoj2zV5%04qTbFo9f<2lBxxPykkg$G{r! zI9LnTf%RYmcmmKkpNhmIUi<&1ICvx;FL?3*GtiFC*a`KQmC}4!MOVNt`RinUvp?YG z*O>BhEdFhcUco1;`-0U*X2xeafMC6WNOFFMp=>au5Pq!z6D2)Oa(92d#ki!2N*s!Q+7T!qb5E!yuqNaWRZ( zU-TfRy|EcFeHXosnD)q4#MH)K#8m&K!SI@=vZ!<5Nm{z|{rMTPVe3568DS5kQB)G1C) z|KjQX6lp4sCH#6oU^yoYG;K`K8el>#m_!Fn$f#hUPE8aru@>q@G@d};f(fJdU##Id z=+oM9M&hWQ2l;)`%sq&W@E5Ix$%lA6JDmDlP2P6KVyYh4QsoFZyi%>vu-WIfi?T=H zdHzZMOkaPnyXV5?AV2m6uBuuENrEO+zYAU+=)25c?d`eP8|>=3!4E`iJJnad$z(Db z?A`{87_f;u1Q@K#%Zrv&IJ{J{(<@1G-S#?@Y%~;m-Q}W>dI5pM<&^}vv4PLE^J>Bb zJwDgQFO%?ZG*|*JS^e%vE#_jYt;GIJmC;ZwY;P0;LP0*&aWdH5-P1LI4t8GY`K_b7 zbBOQn?KnTs(cc&1F~(qsztGX!*BR0dRrI<2O_IrI+)^rf1ai+-^pUz^5}LQ7R!vqg z8lwG-2sK#Sq}-rwUSH~MzfGLVK?0BbgFicjbusI6jqdF)ovtP z2bt(2-8ClBM-6JS5QfbpGNT5gSxEeDr%Uuna-^S{EZQ3$QoT9|O}4?9%J%Ov9r)J# z(Qf_6yY&Zm>p$`7_Dpp_-fcU)=M7*1;K6E81U7*(Pz`LL1_+=Dw1PJ96Sx2_fy>|; z_yY`q5YS;)(Sszg1n^)vC;?9JGWY--17|=ln2kLr8_?eKJQy6jLI3ophH#R8AsPJ;oP}n>FiD(*6)W6ed`pF#d=4?ob=bLFofb}G^* zJ&w)eve>Lmg2OHPUZ5|(6qeS@(wkW#m%wUgG1p?ov!WEz!!Jg%C8mE2~ zaT!cs=5q_EP=^|m=^Gb;zKM0}TPt!F#PdY&FGTpKx0w##rD^GOwy}#|LEM1PiAyejIU!&*l0tEl Date: Sun, 22 Mar 2015 21:48:07 +0000 Subject: [PATCH 054/301] Add test-document from bug 53379 to verify in integration tests that text extraction does not fail any more git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1668484 13f79535-47bb-0310-9956-ffa450edef68 --- test-data/document/53379.doc | Bin 0 -> 248320 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test-data/document/53379.doc diff --git a/test-data/document/53379.doc b/test-data/document/53379.doc new file mode 100644 index 0000000000000000000000000000000000000000..5f1b3bde46b02e75e79a309aeb32fd47368d5a4c GIT binary patch literal 248320 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 J4fjg_{~t~wA*}!a literal 0 HcmV?d00001 From 0f0995d4ab4f9c6422a1571407dd006787887d51 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 22 Mar 2015 21:48:27 +0000 Subject: [PATCH 055/301] Integration test: Do a few more things with the MapiMessage git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1668485 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/stress/HSMFFileHandler.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/integrationtest/org/apache/poi/stress/HSMFFileHandler.java b/src/integrationtest/org/apache/poi/stress/HSMFFileHandler.java index 9de8b798c..d68504a04 100644 --- a/src/integrationtest/org/apache/poi/stress/HSMFFileHandler.java +++ b/src/integrationtest/org/apache/poi/stress/HSMFFileHandler.java @@ -22,6 +22,8 @@ import java.io.FileInputStream; import java.io.InputStream; import org.apache.poi.hsmf.MAPIMessage; +import org.apache.poi.hsmf.datatypes.AttachmentChunks; +import org.apache.poi.hsmf.datatypes.DirectoryChunk; import org.junit.Test; public class HSMFFileHandler extends POIFSFileHandler { @@ -32,6 +34,19 @@ public class HSMFFileHandler extends POIFSFileHandler { assertNotNull(mapi.getDisplayBCC()); assertNotNull(mapi.getMessageDate()); + AttachmentChunks[] attachments = mapi.getAttachmentFiles(); + + for(AttachmentChunks attachment : attachments) { + + DirectoryChunk chunkDirectory = attachment.attachmentDirectory; + if(chunkDirectory != null) { + MAPIMessage attachmentMSG = chunkDirectory.getAsEmbededMessage(); + assertNotNull(attachmentMSG); + String body = attachmentMSG.getTextBody(); + assertNotNull(body); + } + } + /* => Writing isn't yet supported... // write out the file File file = TempFile.createTempFile("StressTest", ".msg"); From 165fc1a0993e55a661a42522c77a00f159b077d0 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 22 Mar 2015 21:48:48 +0000 Subject: [PATCH 056/301] Bug 55386: Fix handling of bold formatting in example application 'ToHtml' git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1668486 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/org/apache/poi/ss/examples/html/ToHtml.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/examples/src/org/apache/poi/ss/examples/html/ToHtml.java b/src/examples/src/org/apache/poi/ss/examples/html/ToHtml.java index b5480cf59..bcfb5dffe 100644 --- a/src/examples/src/org/apache/poi/ss/examples/html/ToHtml.java +++ b/src/examples/src/org/apache/poi/ss/examples/html/ToHtml.java @@ -289,7 +289,7 @@ public class ToHtml { private void fontStyle(CellStyle style) { Font font = wb.getFontAt(style.getFontIndex()); - if (font.getBoldweight() >= HSSFFont.BOLDWEIGHT_NORMAL) + if (font.getBoldweight() >= HSSFFont.BOLDWEIGHT_BOLD) out.format(" font-weight: bold;%n"); if (font.getItalic()) out.format(" font-style: italic;%n"); @@ -309,8 +309,12 @@ public class ToHtml { style = wb.getCellStyleAt((short) 0); StringBuilder sb = new StringBuilder(); Formatter fmt = new Formatter(sb); - fmt.format("style_%02x", style.getIndex()); - return fmt.toString(); + try { + fmt.format("style_%02x", style.getIndex()); + return fmt.toString(); + } finally { + fmt.close(); + } } private void styleOut(String attr, K key, Map mapping) { From b173dc11d063b08fe3ec0af895cbf284537fb1fd Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Fri, 3 Apr 2015 15:54:59 +0000 Subject: [PATCH 057/301] XMLPrettyPrint: Don't try to pretty-print non-XML files and print out which file from the ooxml-file fails to parse git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1671095 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/stress/AbstractFileHandler.java | 10 +++++++++ .../org/apache/poi/dev/OOXMLPrettyPrint.java | 22 ++++++++++++------- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/integrationtest/org/apache/poi/stress/AbstractFileHandler.java b/src/integrationtest/org/apache/poi/stress/AbstractFileHandler.java index 881908377..55e2c368f 100644 --- a/src/integrationtest/org/apache/poi/stress/AbstractFileHandler.java +++ b/src/integrationtest/org/apache/poi/stress/AbstractFileHandler.java @@ -27,9 +27,11 @@ import java.io.IOException; import java.io.InputStream; import java.util.HashSet; import java.util.Set; +import java.util.zip.ZipException; import org.apache.poi.POIOLE2TextExtractor; import org.apache.poi.POITextExtractor; +import org.apache.poi.dev.OOXMLPrettyPrint; import org.apache.poi.extractor.ExtractorFactory; import org.apache.poi.hpsf.extractor.HPSFPropertiesExtractor; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; @@ -68,6 +70,14 @@ public abstract class AbstractFileHandler implements FileHandler { } finally { ExtractorFactory.setThreadPrefersEventExtractors(before); } + + /* Did fail for some documents with special XML contents... + try { + OOXMLPrettyPrint.main(new String[] { file.getAbsolutePath(), + "/tmp/pretty-" + file.getName() }); + } catch (ZipException e) { + // ignore, not a Zip/OOXML file + }*/ } private void handleExtractingInternal(File file) throws Exception { diff --git a/src/ooxml/java/org/apache/poi/dev/OOXMLPrettyPrint.java b/src/ooxml/java/org/apache/poi/dev/OOXMLPrettyPrint.java index aab811287..48341d0c9 100644 --- a/src/ooxml/java/org/apache/poi/dev/OOXMLPrettyPrint.java +++ b/src/ooxml/java/org/apache/poi/dev/OOXMLPrettyPrint.java @@ -18,7 +18,6 @@ package org.apache.poi.dev; import java.io.BufferedOutputStream; import java.io.File; -import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; @@ -40,9 +39,9 @@ import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; +import org.apache.poi.util.IOUtils; import org.w3c.dom.Document; import org.xml.sax.InputSource; -import org.xml.sax.SAXException; /** * Reads a zipped OOXML file and produces a copy with the included @@ -80,8 +79,7 @@ public class OOXMLPrettyPrint { } private static void handleFile(File file, File outFile) throws ZipException, - IOException, FileNotFoundException, SAXException, - TransformerException, ParserConfigurationException { + IOException, TransformerException, ParserConfigurationException { System.out.println("Reading zip-file " + file + " and writing pretty-printed XML to " + outFile); ZipFile zipFile = new ZipFile(file); @@ -99,15 +97,23 @@ public class OOXMLPrettyPrint { } } - private void handle(ZipFile file, ZipOutputStream out) throws SAXException, IOException, TransformerException { + private void handle(ZipFile file, ZipOutputStream out) throws IOException, TransformerException { Enumeration entries = file.entries(); while(entries.hasMoreElements()) { ZipEntry entry = entries.nextElement(); - out.putNextEntry(new ZipEntry(entry.getName())); + String name = entry.getName(); + out.putNextEntry(new ZipEntry(name)); try { - Document document = documentBuilder.parse(new InputSource(file.getInputStream(entry))); - pretty(document, out, 2); + if(name.endsWith(".xml") || name.endsWith(".rels")) { + Document document = documentBuilder.parse(new InputSource(file.getInputStream(entry))); + pretty(document, out, 2); + } else { + System.out.println("Not pretty-printing non-XML file " + name); + IOUtils.copy(file.getInputStream(entry), out); + } + } catch (Exception e) { + throw new IOException("While handling entry " + name, e); } finally { out.closeEntry(); } From 570819e4f663fb98cab3dfbf8440bbe449098528 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Fri, 3 Apr 2015 15:55:21 +0000 Subject: [PATCH 058/301] Bug 56579: Throw exception if max string length of 32767 chars is exceeded in XSSF and SXSSF. Add verification testcase for bug 57008. Move some unit tests to the Bsae-Test-Class to verify things for all SS-implementations. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1671096 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/hssf/usermodel/HSSFCell.java | 8 +-- .../apache/poi/xssf/streaming/SXSSFCell.java | 11 +++ .../apache/poi/xssf/usermodel/XSSFCell.java | 5 ++ .../poi/ss/usermodel/BaseTestXCell.java | 28 +------- .../poi/xssf/XSSFITestDataProvider.java | 2 +- .../poi/xssf/usermodel/TestXSSFCell.java | 47 ++++++++++++ .../poi/hssf/usermodel/TestHSSFCell.java | 33 --------- .../apache/poi/ss/usermodel/BaseTestCell.java | 72 +++++++++++++++++++ 8 files changed, 141 insertions(+), 65 deletions(-) diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java b/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java index e5de299a0..b1e8b7a00 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java @@ -538,18 +538,17 @@ public class HSSFCell implements Cell { public void setCellValue(RichTextString value) { - HSSFRichTextString hvalue = (HSSFRichTextString) value; int row=_record.getRow(); short col=_record.getColumn(); short styleIndex=_record.getXFIndex(); - if (hvalue == null) + if (value == null) { notifyFormulaChanging(); setCellType(CELL_TYPE_BLANK, false, row, col, styleIndex); return; } - if(hvalue.length() > SpreadsheetVersion.EXCEL97.getMaxTextLength()){ + if(value.length() > SpreadsheetVersion.EXCEL97.getMaxTextLength()){ throw new IllegalArgumentException("The maximum length of cell contents (text) is 32,767 characters"); } @@ -557,7 +556,7 @@ public class HSSFCell implements Cell { // Set the 'pre-evaluated result' for the formula // note - formulas do not preserve text formatting. FormulaRecordAggregate fr = (FormulaRecordAggregate) _record; - fr.setCachedStringResult(hvalue.getString()); + fr.setCachedStringResult(value.getString()); // Update our local cache to the un-formatted version _stringValue = new HSSFRichTextString(value.getString()); @@ -573,6 +572,7 @@ public class HSSFCell implements Cell { } int index = 0; + HSSFRichTextString hvalue = (HSSFRichTextString) value; UnicodeString str = hvalue.getUnicodeString(); index = _book.getWorkbook().addSSTString(str); (( LabelSSTRecord ) _record).setSSTIndex(index); diff --git a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFCell.java b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFCell.java index f590cc01a..7b67aa349 100644 --- a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFCell.java +++ b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFCell.java @@ -22,6 +22,7 @@ import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; +import org.apache.poi.ss.SpreadsheetVersion; import org.apache.poi.ss.formula.FormulaParseException; import org.apache.poi.ss.formula.eval.ErrorEval; import org.apache.poi.ss.usermodel.Cell; @@ -227,6 +228,11 @@ public class SXSSFCell implements Cell public void setCellValue(RichTextString value) { ensureRichTextStringType(); + + if(value.length() > SpreadsheetVersion.EXCEL2007.getMaxTextLength()){ + throw new IllegalArgumentException("The maximum length of cell contents (text) is 32,767 characters"); + } + ((RichTextValue)_value).setValue(value); } @@ -241,6 +247,11 @@ public class SXSSFCell implements Cell public void setCellValue(String value) { ensureTypeOrFormulaType(CELL_TYPE_STRING); + + if(value.length() > SpreadsheetVersion.EXCEL2007.getMaxTextLength()){ + throw new IllegalArgumentException("The maximum length of cell contents (text) is 32,767 characters"); + } + if(_value.getType()==CELL_TYPE_FORMULA) ((StringFormulaValue)_value).setPreEvaluatedValue(value); else diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java index df8cbf2d2..5c16f05e8 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCell.java @@ -346,6 +346,11 @@ public final class XSSFCell implements Cell { setCellType(Cell.CELL_TYPE_BLANK); return; } + + if(str.length() > SpreadsheetVersion.EXCEL2007.getMaxTextLength()){ + throw new IllegalArgumentException("The maximum length of cell contents (text) is 32,767 characters"); + } + int cellType = getCellType(); switch(cellType){ case Cell.CELL_TYPE_FORMULA: diff --git a/src/ooxml/testcases/org/apache/poi/ss/usermodel/BaseTestXCell.java b/src/ooxml/testcases/org/apache/poi/ss/usermodel/BaseTestXCell.java index ba55f070a..f78819ca3 100644 --- a/src/ooxml/testcases/org/apache/poi/ss/usermodel/BaseTestXCell.java +++ b/src/ooxml/testcases/org/apache/poi/ss/usermodel/BaseTestXCell.java @@ -19,6 +19,7 @@ package org.apache.poi.ss.usermodel; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.ss.ITestDataProvider; +import org.apache.poi.ss.SpreadsheetVersion; import org.apache.poi.xssf.SXSSFITestDataProvider; import org.apache.poi.xssf.XSSFITestDataProvider; import org.apache.poi.xssf.streaming.SXSSFCell; @@ -48,32 +49,5 @@ public abstract class BaseTestXCell extends BaseTestCell { // invalid characters are replaced with question marks assertEquals("???<>\t\n\u00a0 &\"POI\'\u2122", wb.getSheetAt(0).getRow(0).getCell(0).getStringCellValue()); - - } - - public void testEncodingbeloAscii(){ - Workbook xwb = XSSFITestDataProvider.instance.createWorkbook(); - Cell xCell = xwb.createSheet().createRow(0).createCell(0); - - Workbook swb = SXSSFITestDataProvider.instance.createWorkbook(); - Cell sCell = swb.createSheet().createRow(0).createCell(0); - - StringBuffer sb = new StringBuffer(); - // test all possible characters - for(int i = 0; i < Character.MAX_VALUE; i++) sb.append((char)i) ; - - String str = sb.toString(); - - xCell.setCellValue(str); - assertEquals(str, xCell.getStringCellValue()); - sCell.setCellValue(str); - assertEquals(str, sCell.getStringCellValue()); - - xwb = XSSFITestDataProvider.instance.writeOutAndReadBack(xwb); - swb = SXSSFITestDataProvider.instance.writeOutAndReadBack(swb); - xCell = xwb.getSheetAt(0).createRow(0).createCell(0); - sCell = swb.getSheetAt(0).createRow(0).createCell(0); - - assertEquals(xCell.getStringCellValue(), sCell.getStringCellValue()); } } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/XSSFITestDataProvider.java b/src/ooxml/testcases/org/apache/poi/xssf/XSSFITestDataProvider.java index cacf8376a..953b6a180 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/XSSFITestDataProvider.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/XSSFITestDataProvider.java @@ -41,7 +41,7 @@ public final class XSSFITestDataProvider implements ITestDataProvider { public XSSFWorkbook writeOutAndReadBack(Workbook original) { if(!(original instanceof XSSFWorkbook)) { - throw new IllegalArgumentException("Expected an instance of XSSFWorkbook"); + throw new IllegalArgumentException("Expected an instance of XSSFWorkbook, but had " + original.getClass()); } return XSSFTestDataSamples.writeOutAndReadBack((XSSFWorkbook)original); } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java index 9740e416d..1d020e9a3 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCell.java @@ -19,6 +19,8 @@ package org.apache.poi.xssf.usermodel; import java.io.IOException; +import org.apache.poi.hssf.HSSFITestDataProvider; +import org.apache.poi.ss.SpreadsheetVersion; import org.apache.poi.ss.usermodel.BaseTestXCell; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.DataFormatter; @@ -28,6 +30,7 @@ import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellReference; +import org.apache.poi.xssf.SXSSFITestDataProvider; import org.apache.poi.xssf.XSSFITestDataProvider; import org.apache.poi.xssf.XSSFTestDataSamples; import org.apache.poi.xssf.model.SharedStringsTable; @@ -402,4 +405,48 @@ public final class TestXSSFCell extends BaseTestXCell { wb.close(); } } + + public void testEncodingbeloAscii(){ + StringBuffer sb = new StringBuffer(); + // test all possible characters + for(int i = 0; i < Character.MAX_VALUE; i++) { + sb.append((char)i); + } + + String strAll = sb.toString(); + + // process in chunks as we have a limit on size of column now + int pos = 0; + while(pos < strAll.length()) { + String str = strAll.substring(pos, Math.min(strAll.length(), pos+SpreadsheetVersion.EXCEL2007.getMaxTextLength())); + + Workbook wb = HSSFITestDataProvider.instance.createWorkbook(); + Cell cell = wb.createSheet().createRow(0).createCell(0); + + Workbook xwb = XSSFITestDataProvider.instance.createWorkbook(); + Cell xCell = xwb.createSheet().createRow(0).createCell(0); + + Workbook swb = SXSSFITestDataProvider.instance.createWorkbook(); + Cell sCell = swb.createSheet().createRow(0).createCell(0); + + cell.setCellValue(str); + assertEquals(str, cell.getStringCellValue()); + xCell.setCellValue(str); + assertEquals(str, xCell.getStringCellValue()); + sCell.setCellValue(str); + assertEquals(str, sCell.getStringCellValue()); + + Workbook wbBack = HSSFITestDataProvider.instance.writeOutAndReadBack(wb); + Workbook xwbBack = XSSFITestDataProvider.instance.writeOutAndReadBack(xwb); + Workbook swbBack = SXSSFITestDataProvider.instance.writeOutAndReadBack(swb); + cell = wbBack.getSheetAt(0).createRow(0).createCell(0); + xCell = xwbBack.getSheetAt(0).createRow(0).createCell(0); + sCell = swbBack.getSheetAt(0).createRow(0).createCell(0); + + assertEquals(cell.getStringCellValue(), xCell.getStringCellValue()); + assertEquals(cell.getStringCellValue(), sCell.getStringCellValue()); + + pos += SpreadsheetVersion.EXCEL97.getMaxTextLength(); + } + } } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFCell.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFCell.java index 066c12e7f..7c78fb067 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFCell.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFCell.java @@ -30,7 +30,6 @@ import org.apache.poi.hssf.record.DBCellRecord; import org.apache.poi.hssf.record.FormulaRecord; import org.apache.poi.hssf.record.Record; import org.apache.poi.hssf.record.StringRecord; -import org.apache.poi.ss.SpreadsheetVersion; import org.apache.poi.ss.usermodel.BaseTestCell; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.FormulaError; @@ -355,38 +354,6 @@ public final class TestHSSFCell extends BaseTestCell { assertEquals(DBCellRecord.class, dbcr.getClass()); } - /** - * The maximum length of cell contents (text) is 32,767 characters. - * @throws IOException - */ - public void testMaxTextLength() throws IOException{ - HSSFWorkbook wb = new HSSFWorkbook(); - HSSFSheet sheet = wb.createSheet(); - HSSFCell cell = sheet.createRow(0).createCell(0); - - int maxlen = SpreadsheetVersion.EXCEL97.getMaxTextLength(); - assertEquals(32767, maxlen); - - StringBuffer b = new StringBuffer() ; - - // 32767 is okay - for( int i = 0 ; i < maxlen ; i++ ) - { - b.append( "X" ) ; - } - cell.setCellValue(b.toString()); - - b.append("X"); - // 32768 produces an invalid XLS file - try { - cell.setCellValue(b.toString()); - fail("Expected exception"); - } catch (IllegalArgumentException e){ - assertEquals("The maximum length of cell contents (text) is 32,767 characters", e.getMessage()); - } - wb.close(); - } - /** * HSSF prior to version 3.7 had a bug: it could write a NaN but could not read such a file back. */ diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java index 35e95ab04..533a97397 100644 --- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java +++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java @@ -25,6 +25,7 @@ import junit.framework.TestCase; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.ITestDataProvider; +import org.apache.poi.ss.SpreadsheetVersion; /** * Common superclass for testing implementations of @@ -695,4 +696,75 @@ public abstract class BaseTestCell extends TestCase { wb.close(); } + + public void test57008() throws IOException { + Workbook wb = _testDataProvider.createWorkbook(); + Sheet sheet = wb.createSheet(); + + Row row0 = sheet.createRow(0); + Cell cell0 = row0.createCell(0); + cell0.setCellValue("row 0, cell 0 _x0046_ without changes"); + + Cell cell1 = row0.createCell(1); + cell1.setCellValue("row 0, cell 1 _x005fx0046_ with changes"); + + Cell cell2 = row0.createCell(2); + cell2.setCellValue("hgh_x0041_**_x0100_*_x0101_*_x0190_*_x0200_*_x0300_*_x0427_*"); + + checkUnicodeValues(wb); + +// String fname = "/tmp/Test_xNNNN_inCell" + (wb instanceof HSSFWorkbook ? ".xls" : ".xlsx"); +// FileOutputStream out = new FileOutputStream(fname); +// try { +// wb.write(out); +// } finally { +// out.close(); +// } + + Workbook wbBack = _testDataProvider.writeOutAndReadBack(wb); + checkUnicodeValues(wbBack); + } + + private void checkUnicodeValues(Workbook wb) { + assertEquals((wb instanceof HSSFWorkbook ? "row 0, cell 0 _x0046_ without changes" : "row 0, cell 0 F without changes"), + wb.getSheetAt(0).getRow(0).getCell(0).toString()); + assertEquals((wb instanceof HSSFWorkbook ? "row 0, cell 1 _x005fx0046_ with changes" : "row 0, cell 1 _x005fx0046_ with changes"), + wb.getSheetAt(0).getRow(0).getCell(1).toString()); + assertEquals((wb instanceof HSSFWorkbook ? "hgh_x0041_**_x0100_*_x0101_*_x0190_*_x0200_*_x0300_*_x0427_*" : "hghA**\u0100*\u0101*\u0190*\u0200*\u0300*\u0427*"), + wb.getSheetAt(0).getRow(0).getCell(2).toString()); + } + + /** + * The maximum length of cell contents (text) is 32,767 characters. + * @throws IOException + */ + public void testMaxTextLength() throws IOException{ + Workbook wb = _testDataProvider.createWorkbook(); + Sheet sheet = wb.createSheet(); + Cell cell = sheet.createRow(0).createCell(0); + + int maxlen = wb instanceof HSSFWorkbook ? + SpreadsheetVersion.EXCEL97.getMaxTextLength() + : SpreadsheetVersion.EXCEL2007.getMaxTextLength(); + assertEquals(32767, maxlen); + + StringBuffer b = new StringBuffer() ; + + // 32767 is okay + for( int i = 0 ; i < maxlen ; i++ ) + { + b.append( "X" ) ; + } + cell.setCellValue(b.toString()); + + b.append("X"); + // 32768 produces an invalid XLS file + try { + cell.setCellValue(b.toString()); + fail("Expected exception"); + } catch (IllegalArgumentException e){ + assertEquals("The maximum length of cell contents (text) is 32,767 characters", e.getMessage()); + } + wb.close(); + } } From 12c220121eead30cf9e7ad515dae715581e5c0a7 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 13 Apr 2015 12:19:11 +0000 Subject: [PATCH 059/301] Bug 57163: Fix possible NullPointerException when a spreadsheet has no LinkTable and we try to adjust it during sheet removal. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1673168 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/hssf/model/InternalWorkbook.java | 11 ++++++----- .../org/apache/poi/hssf/usermodel/TestBugs.java | 10 ++++++++++ test-data/spreadsheet/57163.xls | Bin 0 -> 6656 bytes 3 files changed, 16 insertions(+), 5 deletions(-) create mode 100644 test-data/spreadsheet/57163.xls diff --git a/src/java/org/apache/poi/hssf/model/InternalWorkbook.java b/src/java/org/apache/poi/hssf/model/InternalWorkbook.java index 3c3b91b14..a2670978e 100644 --- a/src/java/org/apache/poi/hssf/model/InternalWorkbook.java +++ b/src/java/org/apache/poi/hssf/model/InternalWorkbook.java @@ -774,11 +774,12 @@ public final class InternalWorkbook { } } - // also tell the LinkTable about the removed sheet - // +1 because we already removed it from the count of sheets! - for(int i = sheetIndex+1;i < getNumSheets()+1;i++) { - // also update the link-table as otherwise references might point at invalid sheets - linkTable.removeSheet(i); + if (linkTable != null) { + // also tell the LinkTable about the removed sheet + // +1 because we already removed it from the count of sheets! + for(int i = sheetIndex+1;i < getNumSheets()+1;i++) { + linkTable.removeSheet(i); + } } } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java index 73256b689..0bb1de24b 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java @@ -2716,4 +2716,14 @@ public final class TestBugs extends BaseTestBugzillaIssues { Workbook wb = openSample("57456.xls"); wb.close(); } + + @Test + public void test57163() throws IOException { + Workbook wb = openSample("57163.xls"); + + while (wb.getNumberOfSheets() > 1) { + wb.removeSheetAt(1); + } + wb.close(); + } } diff --git a/test-data/spreadsheet/57163.xls b/test-data/spreadsheet/57163.xls new file mode 100644 index 0000000000000000000000000000000000000000..402c954e19b8070b5ae6448700895ab94816868a GIT binary patch literal 6656 zcmeHLTWDNW6y0a$PI9M7Gm}YLYir|8w0WoIp*BTgCTY`J?28)FkD?~yq^6xTp@~?* z$0RifVnM0kPf-f_@qx7n`k`Rrmte&z6sjPk`c?E}DvDHW#NZ4YO-nR z_7~aIzgC@P{c|gDt+isgd;RIZ>Bqf5rt?pq&+}ghtOSaH0Dvn%ih&SN0+a%)fYrcF zz#8CYU@fo?xCK}blmWK_7ElgU0Jj0R0~>%!pbDr4YJggx4yXqjfQ`T%0O!%<=P1^gyAlolPw2du2v556=QKue5 zkD_f(!bsax9%2m-?DQnkA~~%~KGA8Lwm?)2i`9yZQON{8*!H+iD|A|fRLMuW&39VT z1l#-^wUW=jq7TAZ@u?2@z<%kGn531;(v_AOg%}|ge0$gKu6-Rlr}f#Hkl&IPMw6mR zi*gQ3%YV&I&RH*1Ka-rjE>!>jE1$rcTAZFksdcWi*CCNEugM^<&mgbOAou@Ge!_!u z6_+IQVBD+o;&`6ULvcgrCGmWnm&Sd`$6&ik#^H%yL_>P)?&$EyIL^bUb9(u0HB)k$ zp&QP#mbAQ#y7~A`DH9OsKCa{^IY>XA=w(I8OVHoa$+K(T2L!E;p!G0M$y%f!LBIbg zqC`_h6_lBiDvUHNWtVv~;HEIqnTeag{2iA?#9Sp2hLjHRrXYEEz1VIjIL{3gLh0ie zAg5fc2M~m+Ki|6i&92_P?T>1CTnDMTAKAdgl%$NJWXh=3E$VbSrt6j>#3>h5DO+&E zR7f{Y`G7=aSS;C%{3+y&h6Zr<596*WGn$P1jqOGo(#=K%+B8Ws(hl5l58+PwhaHt0 zokrMbME9-6Hslt%-YduScwf+ICFa(m=~8=@i?0TMtl`2~!-Yh9jf+2pN%^s2O8>^B zUe&8q`&6#vLG)c9&+5xu)N2L2$Uz=n>UP*~Z?x&*CX#pFb}As0*@iG*W*fzP8TTT+ zEgu)@GCnrkvgfotFu-`@4<-Df#(=yHCH$hUfP~N$zo=!djQt1X5u_|*&jI-i+0R&6 z*iqs>NMJ(=S|N>@%>&|1G=dF?p$~u(f5M(QE6kBcR_JzYLp}F;Lh>P1NSKL3>)Bta zb4p6#y}jN8H~|M-b`NvrMa%}vmVZ4g-?J#oPwn7*Yq8wcf=$fXTF_?JTC|GroFW9n z=+FMv<_LD#TGAZu_4boXX)TRzYr)-@v$dejQd*14)H1OOuP8745M5Hxq^lK~)TwOa zn{8Kr<;tEXg73U)N?p|l-_p%L1JG-;oC9Z&6b9&ucLIFpJ`7+daFyEc-67=E zaOtZ3b|ueuXBdcoag?m)nUlgmJoM6!v7vK{yqx*EWB@$bbjmb->hPTZ^8Cq->w+g< z$N1~7ytfrHUz%(`WNQF+PVnktTaGo89L2M=l>h%|{b@EdtH{M@muJTth@=Mb-Z~_` z`hTcHu3Fi#AKVaxmaR&WNWt5Z2De}xvsza|F{2I|6gk+Z?6CV literal 0 HcmV?d00001 From 3ad61ba6e121896bc0f370c09dc380e8589c7f9b Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Thu, 16 Apr 2015 09:07:50 +0000 Subject: [PATCH 060/301] Adjust Eclipse project settings to ensure that files are read as UTF-8 on Windows or systems with different character encoding settings. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1674025 13f79535-47bb-0310-9956-ffa450edef68 --- .settings/org.eclipse.core.resources.prefs | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .settings/org.eclipse.core.resources.prefs diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 000000000..4824b8026 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 From b3c46f90c1021c0c6a95b10e5b9db4995f5f5cf2 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Sat, 18 Apr 2015 04:16:28 +0000 Subject: [PATCH 061/301] Patch from Jon Scharff from bug #57820 - Avoid NPE on HSLF Tables with a top position of -1 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1674441 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/org/apache/poi/hslf/model/Table.java | 2 +- .../org/apache/poi/hslf/model/TestTable.java | 32 ++++++++++++++++++ ...ug57820-initTableNullRefrenceException.ppt | Bin 0 -> 110592 bytes 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 test-data/slideshow/bug57820-initTableNullRefrenceException.ppt diff --git a/src/scratchpad/src/org/apache/poi/hslf/model/Table.java b/src/scratchpad/src/org/apache/poi/hslf/model/Table.java index c49478991..bafc85182 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/model/Table.java +++ b/src/scratchpad/src/org/apache/poi/hslf/model/Table.java @@ -159,7 +159,7 @@ public final class Table extends ShapeGroup { return delta; } }); - int y0 = -1; + int y0 = (sh.length > 0) ? sh[0].getAnchor().y - 1 : -1; int maxrowlen = 0; ArrayList lst = new ArrayList(); ArrayList row = null; diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestTable.java b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestTable.java index e8f246bbd..1740b46b4 100644 --- a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestTable.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestTable.java @@ -19,11 +19,16 @@ package org.apache.poi.hslf.model; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; +import java.io.IOException; import junit.framework.TestCase; +import org.apache.poi.POIDataSamples; +import org.apache.poi.hslf.HSLFSlideShow; +import org.apache.poi.hslf.extractor.PowerPointExtractor; import org.apache.poi.hslf.record.TextHeaderAtom; import org.apache.poi.hslf.usermodel.SlideShow; +import org.junit.Test; /** * Test Table object. @@ -31,6 +36,7 @@ import org.apache.poi.hslf.usermodel.SlideShow; * @author Yegor Kozlov */ public final class TestTable extends TestCase { + private static POIDataSamples _slTests = POIDataSamples.getSlideShowInstance(); /** * Test that ShapeFactory works properly and returns Table @@ -100,4 +106,30 @@ public final class TestTable extends TestCase { } } + + /** + * Bug 57820: initTable throws NullPointerException + * when the table is positioned with its top at -1 + */ + @Test + public void test57820() throws Exception { + SlideShow ppt = new SlideShow(new HSLFSlideShow(_slTests.openResourceAsStream("bug57820-initTableNullRefrenceException.ppt"))); + + Slide[] slides = ppt.getSlides(); + assertEquals(1, slides.length); + + Shape[] shapes = slides[0].getShapes(); //throws NullPointerException + + Table tbl = null; + for(int idx = 0; idx < shapes.length; idx++) { + if(shapes[idx] instanceof Table) { + tbl = (Table)shapes[idx]; + break; + } + } + + assertNotNull(tbl); + + assertEquals(-1, tbl.getAnchor().y); + } } diff --git a/test-data/slideshow/bug57820-initTableNullRefrenceException.ppt b/test-data/slideshow/bug57820-initTableNullRefrenceException.ppt new file mode 100644 index 0000000000000000000000000000000000000000..e7525f94562996735656bf7724a5389e3f81a949 GIT binary patch literal 110592 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≺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 z Date: Sun, 19 Apr 2015 12:35:19 +0000 Subject: [PATCH 062/301] Add missing nested Exception in thrown Exception git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1674618 13f79535-47bb-0310-9956-ffa450edef68 --- src/ooxml/java/org/apache/poi/xssf/model/ThemesTable.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ooxml/java/org/apache/poi/xssf/model/ThemesTable.java b/src/ooxml/java/org/apache/poi/xssf/model/ThemesTable.java index 0e8f90633..bf58989cc 100644 --- a/src/ooxml/java/org/apache/poi/xssf/model/ThemesTable.java +++ b/src/ooxml/java/org/apache/poi/xssf/model/ThemesTable.java @@ -45,7 +45,7 @@ public class ThemesTable extends POIXMLDocumentPart { try { theme = ThemeDocument.Factory.parse(part.getInputStream()); } catch(XmlException e) { - throw new IOException(e.getLocalizedMessage()); + throw new IOException(e.getLocalizedMessage(), e); } } From a75cf0b57c07bf902c11c82f526c93672bcc87d2 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 20 Apr 2015 18:08:24 +0000 Subject: [PATCH 063/301] Detect if a file is actually PDF instead of .doc similar to how it is already done for RTF git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1674951 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/org/apache/poi/hwpf/HWPFDocumentCore.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocumentCore.java b/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocumentCore.java index d8e410944..04fe38ca3 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocumentCore.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocumentCore.java @@ -85,7 +85,7 @@ public abstract class HWPFDocumentCore extends POIDocument } /** - * Takens an InputStream, verifies that it's not RTF, builds a + * Takens an InputStream, verifies that it's not RTF or PDF, builds a * POIFSFileSystem from it, and returns that. */ public static POIFSFileSystem verifyAndBuildPOIFS(InputStream istream) throws IOException { @@ -98,9 +98,11 @@ public abstract class HWPFDocumentCore extends POIDocument if(first6[0] == '{' && first6[1] == '\\' && first6[2] == 'r' && first6[3] == 't' && first6[4] == 'f') { throw new IllegalArgumentException("The document is really a RTF file"); + } else if(first6[0] == '%' && first6[1] == 'P' && first6[2] == 'D' && first6[3] == 'F' ) { + throw new IllegalArgumentException("The document is really a PDF file"); } - // OK, so it's not RTF + // OK, so it's neither RTF nor PDF // Open a POIFSFileSystem on the (pushed back) stream pis.unread(first6); return new POIFSFileSystem(pis); From ca8e3c465e8383126310d435017b61b97f5f7fea Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 20 Apr 2015 18:10:43 +0000 Subject: [PATCH 064/301] Avoid NullPointerException if an image cannot be read git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1674952 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xslf/usermodel/XSLFImageRenderer.java | 4 ++++ ...wnloads_Vertiefungsvortrag_elektronik.pptx | Bin 0 -> 1949517 bytes 2 files changed, 4 insertions(+) create mode 100644 test-data/slideshow/at.ecodesign.www_downloads_Vertiefungsvortrag_elektronik.pptx diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFImageRenderer.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFImageRenderer.java index 6e2633515..7153bc86a 100644 --- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFImageRenderer.java +++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFImageRenderer.java @@ -99,6 +99,10 @@ public class XSLFImageRenderer { } catch (Exception e) { return false; } + + if(img == null) { + return false; + } int iw = img.getWidth(); int ih = img.getHeight(); diff --git a/test-data/slideshow/at.ecodesign.www_downloads_Vertiefungsvortrag_elektronik.pptx b/test-data/slideshow/at.ecodesign.www_downloads_Vertiefungsvortrag_elektronik.pptx new file mode 100644 index 0000000000000000000000000000000000000000..057886216fa198daf0135e03608f82dc0171c025 GIT binary patch literal 1949517 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

mN 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 t9E z|NR*2r<0uq&|8`|Z7p3&LE_nV^mkH!1w9V0@ZoZ8KUJZ0Th?r&DC09m(I^ra|^VuF{egen=ll>-DY3!nW49WVT34$j#j`YO2He11J9Na9UZrCr^8PjP26#)JbP8Q%9bLKmN= z^Q#E|iPj1cHopUvo{2g%SFPq8utJa1#VNhySH)|c47#7ix%+Gn7L6WWa_j7NHyo&y z|LQPnUcvUWf1oJWXk%f~6lrd1tgwlBWsk}~Oup55B=ytY+v;a$gDYf9?Y7|fF{H6R z%~S%`aO()EPbo(pnbYQsOvor}nb~ky>n38C73+Uee*y4pHhy`%QtgN$dE+$~H!4}dHcm;F5#8-Z0RO)>NNV}iDUHv$-ELKBXw{2k zsnn;JyV_!*MwJ%!b**ZL=~b}W;qp_f zGyMKk(-Aoz%y$Z?h#(PLtQOUUZM?$N0@(`=)r-2Vz4fuLZOiKYKb@ZUX=*J}4uxtt zOHZC|0-lA^<)D;50_NLG0 z(;Qp74#~Hi#ed9<)Y`Tgj-Tovs){n0S8v)!(H(kl>0C~@-bV2X9ot6u#WakhjMc9h z`y4x9FP%DU!_V~v-m<;(aV9w#xrNc6ZtjO|RykMxAyGp3n2B_3s@WHHv$q7$`u|L5Sm-JemB317^&|V zsL79WmUtzfX}vvet-sD4gevbXD{|f`?F^2L+B<}5S4{*dp9bse`q-bCvU42vSt`tK zN7RgzB4qewcK99r{&cpJ%l7)&K>sk6E)32O$Usf5mm&@1cMqqhkGGRu=W5n>O;{%W zF$nel4*$EK6yj(qb`1ROeD$JN#9PpEd|foEbi6qTVQ>O9;+IgGvrzH-1`5Sh&^+l5t zJMIO8hW42m zy}b^C#$Dz$ufb%@th#z>c!z#Q=F~~b)SP|YzBA{w-o&9Aro5?SXC`ip zSK0ho=4L=f$@qw`yoQgF!S|!sy%I~S&Ght-XU-jtuJSepXVUZhRRh0KH;|Qg_Dt*% zi%>1fha$CSzGK6uQ1w<{DXV_>XR-z}x1~#5OI%x`T@y?#AyFQay@*{S3}GiS_ZVh- z2&ZJHq=%V2akU=8NtPC447wE9i`;5*8n}IAXMFrj34_&psKekycJx@ODANtitm8#x z#QP1;sodU=tA~0|*kYBkr4{k;`3Z18KW=u`jC(Zn&cW4NS=I8<4$kb=Sv$#g^1hQj z3PH(S==B1!@PYIF7Z-jxU%g)P>Md=knOeycs)X?#u0zpRCHdWsl*oo_S{0%rmoQvgWyS4_OS=goYFywwdbS#EgEF0C)Ygg4T0=V2!$)Z=NKj?LG-_8q1F`#t9iKX22>y3=M zP0}k&s@Jxx0W?^)^plGmO*97k#O3RO`bI+1?_OL+woyP)!P*{W4<&Lp--AVaagfG_ zMLkk{Sd^E!@wMEBgNyJd;N|4~D$x~+ViN1cz?|HfK`B22!Vg>evDVoyUP<#;IJt#s z^p)O;9gBI~Syr@)tpnDJ{HUpwJQb;9g(LAF%}x;1R}Wd?H9OntfuUJn7pJ=fa61%} zJXmnQUH`R&}Tv6gt~%9bgPeiNTIKVE-IXy!v|wTrv9iGO^s zG5NUHV=jf@X}53#gZa{=kNrKdJ&HEgUz;+b7xVH*$KFJS^*b>S3tHs&&#K~s!%&@W z?c}-(z1uVlYY&^up!LHPJF(%a_RPcV+2c!jax$+UR8MRs~XL>LN-{U&$J{}mv zkbCXT`SF=yQ=i_AEJx4h6UkEz+l^~?j|_XZ%pZdK!As^b^Evrz86L`Em3|vhJLPZZ zdg>fK?&of1)#-cpi%4+kE`)C_C+f7^Xw8cjM;el;JDTh+xobu_>U(d$`k?M~dSD0k zWSblpIsIM8s+4ThQfS=RemDrZt73v32=0t__-*7Ag)diN z96h5m!b@}-_ZxaV)3|ItVnm>014Ky;aaq4?88% z9kkEx#?7^5=HUvCT2KdE{ZG|bzgS6JQ)+1v=ppc=4D#fLCEPtk%TiZ{v9|K)1fh=lMV$>ZtQ}l%v!USnCnoml_*Q#51tdf>7PU@b5 z2@Ac8h!hyguV~q37QNFii%j1#fNm@EV~m&#I)|m@0BF< zdZ^Za>R1xcv%hC%UDPL@HMdZ-Vv??V24X+CGI0dbgXmfhnVx z!dwG9V8CC=6)lUh%_Vg}rk6n9Kv%Jdj6jhgX^pQp_G?AQ82HNNm?EnVdw%@*Q3kdH z3C!&te`6l2%$%DsE4{y*{iWF|*LhVOHEc59I~}ZA58Hkg7x1n%uE5VyvHoj$480_A z=%{&aJuYrUK4yzHY`B6$-18iD{s<`DF-@DNl_i_AxV;?!GHG7~J zvGep0wB+-|@u7D2Xq3Kk&!EWA7w|e>Y{Wx)rnePs`K4^ac@Pke!t)Ls189s|g^0J1*`Z^4jd(>6I?=K?c zN>XQ_bFku8e|F*yp`C%g7QK89f^^Y8g#=5W)JNC#z0ddqqx-z3NLW%$kOh4VQbdV@JW%DKl>0=Rt3TL zBSt)<7L7c;SE`F9_s6$YsS~G+w*9PeDUribs$P~B#U-^I1tzHz*!Ce*}uQS3VT~9xR3K)4_ z=*d9lJy@e+^(WpONOGMXe_Hd^bx`+X)5Z1%xZ}aX&J38BEW5Q}pI74LmyQy`j4fZZ zID3l)Wm$2jl$wqpbY^%bnuj>>YZHznvDwKD_#e`1ogIhOs-D|l3KA!0o{(*AbfZ_> zN|yUhsxB5>D(vYuFrUwhlBgPoC06=Bi;-wESpZ9~UP-@xd0$iyx%kO;(x2PkE|jO` ztv%_s^qDIWi`&RHdMj|&>&O0rp3RHJTY<%WTiC~GC9HvoeXF0#hO0Y*6x+4|SepV) zml=tpAFSe1-Gvd!&T{-{RtU9$kW8X{4$~G;NC*t5^X4e+Gql5Tf znJ_AC8yu@Wu8mKe+=}yoM+rN@=Ztll?+ojTiwr|!cl<2#VwUs!1iZ?^Onh z+6z4%@Wnw66gb_O`}rB)jb)+U6+)*@4fqRB80ROe&!-nEr-xYWMRhT}Vqop+;&?c5Yv`c7NoVHS&25fJm@7&{=>|wFc zYY@;a@0QA`N^DJR&+0(IMcy3*ceE_PRPF5^g8EqX9SX+S(^;|42?KJhsITx`PYhDqV{|7$i=>=j*mm^ z5io}X>X?WgHh0PZi?VICjd|@@Cv_8hZtfTp9587BPfqVfzBs&~$1}@Af6+RBWHnx@ zfA~aez>5;v3MbD3{Z^#8Rv$um3oM=G&>qq)qI9Qjp|p3hi$PcG<>Z;s9n`|G36?o$ z`%=?Ni)p`yg~xl==b_FKmll$OdJA|zHZL54G)0_Lqk^pXBlM!tEj;34wt5yjTK$?! zvpR<$C#le79PL;vcwSf{Xb1O4XWqagnvjwipdKJ8J6V zC%14YR6S6?vvBH_2LO0=!eIgndVsC^Qp~1C(YcVn$12o3Xzmg1wnl);Eb{=d7|zvk)$_a!qxGR%D2z@`n8sI$1Aov4n&=& z27z+(Bb|r9^84~`DKE7>H8nqf;3>HnW1gR%oAvIS9@3Nfsz}=EpvSo7HV&+_rsV59 zjANwl9g{wBpP%uo`*QV10;dTN^PF7Clecda`1nLNOqYHp%4uG!IglKg94(p}jL<6q zZ?bNKbFz4RZFMhEmxQJ6@UO7DT!g;3XhwQg>?JvKFFxDDFo}M7l#s3B4n+gNy~E3~(B~%6MOl&&FS1?8H%@Z8)d!P{(0%>?QLP($jIH_`Z@pNOtH%UeCAh zOO=7I+UlO-?xyjeGWo!qlKB=DH$S*uGk~I5S#~|7wHH@_F-2SN3RX8SLNlg+jnXL( z;9r4eVgkN6;SyV9(jze87J~u6^84J=D(Cah@*D0`)CcvnuJJVZ3bS|I=$XGRp+#~q z1Gr?!)Q_AqhkbuO7JquMracVz3%d7l>{fCfnq9Q>upa4ItKq7YT#}5T@w}L&qWGRc zlPV*Cfyl4ccU`YHUqCuBoF@$uGP(p5kK2irHSYjR_zL+d+u*`gTpV{pO+&Yzcfc7k zGR}*lwt41Ti?DZ0!SaD~)eV*9EtYw69^nIPDh)V3hu}xRKlpy}r6mK-HSpo!;R<8c zzud@x_ZTE}UrzDVkwY2;x^#U0<#ZHxa^+ZX>8CUI#2??s>24m!UHn%P@N>|Q9Ep!* zN6ulFV@=9G!*s{FZXSov9iM>{!H-lw{Pcj^`$&i7M|sX4yTOkXPaLP*K29SG;xaY{ zVl03&;H(Bd1V1GSQPF=&c#h>d!1)gy{$mNpza+ucPXmF|u~Fg4siioe-z-x4!?%) zJ6K!(3?COm#l-Yy{BhCF*jt!E;r1F93id#9g1_A7^l=;@CIt?{?ib@;{*nKEnLi_dBp@Ygt0P;VbFj97I6BzFf9*KuEr5>n zU!+7v)($|2`Y-YeKogt(UH$l(ymfRV5D{|I)kFN=Sj$KDUo*y0h{Bf!y zeGqK|a5^&L2jFlAF2937v%oa~k)Z$pF8>Z@^cxcM8xjK`fqp|`enVn@Lt=hIVtzwn zenVn@Lt=hIVtzwnenVn@Lt=hIVtzwnenVn@Lt=hIVtzwnenVn@Lt=hIVtzwnenVn@ zLt=hIVtzwnenVn@Lt_3fATd9DxiB=0F)CH#HJ1o zHX>YHR`#5RMitm0rU&Z4FG=(+=d1TZ&qIAWXN;1OcKZfs|033s-(Gr!KwDZm0`Xa_SEQF$Q! zGdmz8&hoR|&d$!9&b*w~b|zfh!otE_cX+sXcsKwJ4trNC2SXPQD|<%ZZpXzi)A}>n zU#e@SbzEEEM(3{|-|7L}9%^T1<6vfOb^Ykph5*9EL7c_W(F`WS$IrtH7ZikX@I#Hc zIk>rDMjS@mhI|~t#)dEg|Nf>&F@N0l`gO6RpvW=uKozh! zT!N2Bm`_+hkVlwbjO*`lK<+>EADOwpEwmn(0bCvSKv^Yt1n&IQ{(H<{lW6~v{n7HX-$?X4{w zj}--Zxc<=nRs5%}_P^KtRs5&!zf{$&%p4?mewN{H;{P4f0i)f&Z}UHf!J{sCT?`0` zNZP>xSk?pJkT_z);o!c*!7ZTn2OG}qJKQ2ikJH~Y|46K84Kp)#{Xa?ki{_t+fngJ7 z=wSGNl>ArSKQcHjIskYAhFXbZ5}f}Zx}RUF@iW!`T5BjO{`c)+X?Z*<95;!gqR0bl zsN)e^k=z4`AF~Y18VU^5|9TRC4%yKEZpc2a?q4(e->EMQ`e$Wr0HEFROa_B;!GAI^ z0Z%UX&)UMEBF5HsmWB=z$5c{WM?_L$T>p~(`||!6#DU2Zm`1t&oS2V#^#AT>r=d|48|F@A_@7e`JAwr2M;g{WjM>vcNx5{@uHNo9iE0 z;2$af?p?pl^^Yv@kCgv!d)N7YE$zdtfc1Q5VB!83eq_L9@RJ|;%&AkSPM^I1pa;|AS5ItCL*S|bcy2sg&(<*;M7S1fKd2f z{Kz)|e&j@;n1sL5BZE$zK6&B{0q7?`@`)2Ce~tYsKk^BJlSll>X9!OMrxW%BCr(~I z1v(87B;Qj$bHxxKNWRJwlt6gx2S4!yFPYIglikY=W=THP;KY2W{TKcREFnn+0_18i zhuW^mvo~LzJ5NFRI#fzJxlp59{T3B^YV(LA8SeNd><3Tsf1pVglGQSGc^mn$v~gg5 zk5yPs+sxG`D!r^}Z~?<6@=)ign{RYRdGpZX{trIolc!Gu9M7lDo;+#!C#Cbf)5<`J z&)B{Q;z`I`zgp8d!Fd0gijmz0FB6~SOR`{9=0s@z7ef0k{>cZg$kjps_Gk*qn*vf) zEHDRkL3C0 z?u1#W5rie;sljHblR2BGFM6bFIE-faQF&n3qiue=_vhS%Hl{ZCd;u!`1uU2h#z#5R zEQ)xTIMJc^Qj~HHcgZ-y47?c{;k3KiG^==X#B}Y(o$6S|n752cmuOAS(Ka2>L{Saz z3>qQwg4z;We8p5wdXIHnEV!s`^Er-dG2#QT1E??|MvC1tS!Ak>{s1jXy{n48O+cIf z_P)yWxjjLp`(lmcvy_2hv+?XtH^r!wa^WA_s3KglIT>QZ?t${O2H#%04zmoq+HqC% zKN%6=e*I6T`p99eS=3pmi!)m0F6_2Utth?x{Bgr6W0}cwk92)ks+q6r&TP(biMaM{ zVpV5JJ2IZ0XL?CWl4fo(TxWe=ZQs<_lWW+?#Ef#<#A$fPrOy9cOD`|Jrf27ETj=`T zbtwJvAt>u@IX26kSYQ^9sk&`0n;hp%pC82P#FzGj*HEJSIoZ;U0W?dr=$Z>U}Jnms9v+SrCs-bkS~8pn^gUgEN+_g3;Gd* z+gMtvA3f3R933SEzrs(fRhGs8^Hde9A{ zJ6gm03jF-)UvSLqmq%&b;7h06PQDBE&CqtK$V7yM$ulpH62Yk1YMV6aOgkMqvUSXK z;K@$KOXhYTcZa-_^FH1$Iosz$06#xYnES4RmNM#WNL!$pr+N?drmv_tVJmsR*^CGG zRIhcB5m$d-^^;C*UkaMERB?TYwADR;u=tYmKsuwh&6asoWt$28zWyt+Y>HfAhxA_k zIEJCMu5oN=SqKMZYH!WS#x7lqxJ1H7*H;}PWu(JqyiWyooZMj8U@en^BK1-;hD_1_y*Q!4F0a&3G$32Js?OgxeReuGF_;t{;`3-MRF+EH#a`btTJZE<{KOZ6o8J64-^3}10>jDsH`wByqH|ee zle0A{@RwtYt7o)WX6qjKZbXSw6l<7N>RO#&YT4P-a=?HJC^gHnjO!K8J&0ctry80a zTO7L`W2WM6)(P`69S{)_n$F59BFZ9G_fi}10!X)SKj>QJ*VCC{-#U<*6aVV<{KWl_ zAhm*uYqFg(!n9$RwTDSnPUm@JzZG%j4`ZD5%ew~B4#EPzW<91k(d9;3>D(IBKQ(3A zK7w$_eh?FeGwTl2Yzk}FPcMDV4j8Wa7_rB7ZRf_ zT@l%G%V#jqbxF6AKc0C}U$f-0&hY46Xo+kuG*I~3>!3I`koxvD`A2Z&-j=s?0pKXm z=%+)_ZM-!m^$^rNWDrqVVa3?9yaLVd;g89nHdj5ruYON;+o$xSe^ zTiHIXOtDWTTzhlBmeYqM0=&RcDO2Q`_xs9iLa82)H4?~%snbrr#_u>Qao1z=x?!Pp zTNcl0I#@oqnzWQ7A{<2Zs6IFD^d+F&MWdL5ZLaz} zZ2R!+U{0Qk#r5fwcG=s}hg72O7fw0KS>>cXc~?Wvx!e%)O_WKV={>a<(>DdEaU5bA z!7{i+^?uA|Q~h%;% zo()b@6F(e11UazXORW`%wlwo`jE<$TBOV94&NcFys10VD!h_!?eQ$%C>D{@Ywz3LCQn6=8DuzkFywv4Bz?Y}& zbe--H)XmY65y&kWqaPzBmi$mx29vATg)K_Qz&P^~M&vIQLnYFauk+mVASTQ?#T-O- z&<)u#4}%*AF}`#%e>Sr%d@AKDT^fXrVm zD{rUoG02^I)bs^ldZRbE>Y1fnY&hG<*oJ!Nls3C0e^*|XO^_el&p*gN+9rLMi9RfP zCAMLfJlfL2C{p(+S+U#udVa8K;Ih~!h1PrDBgkbx2@cMHduN>RYdl-R3X^hca7rH% z`?J_~Y|^IH^WAb}_~jycj>_sRDyjDh{o!5{gUPgf6mf$U9To>Z0Jkgr>ck)Lo|Re;J;?u9MycmFzaq~{}7?m6skMOgu2mwI}@m^}D-wr)j_De3Ua znT&?T#@0-ROsNGFnPW?Zq#Ex-ek=!Ve9}527r@e0<{=t+(fuz!(hqz8`fODrfGH=x zCs&1w%`Av4cx=&pIJ_u8J$AMv@Ya;o1NHkd_CjE)v^5E?fz~#{-6Sa2VyW99XjN%a ztV+ez^NoA5tBw{Yb~Nd!laorARuRDoh`GkKgka%|hafIL?EAr|?hx-T0%TLanL8T} z=2IPv4#n&DIJkSrKPdA(P>R&J{Z>&U=_7xFhQW|DO$1+5L6p@h6zL6XK2Uwx$5Z!m zV|=wu!%~)L;H0Z_n}~Oq1-5CXbh5|MT(nK8UX)JGs%wE5!Ipx`WM%8pmM0ZYjN(|C zEZ)xU6@F$3%X1ma+99SD{wVNfA7>P&oP7&7m zm)bqs19mGxx@{UGF|^Yz%MmK*vGClFO7A2u7kSBi*VB-T=^^sCbfHGs=%iYL-{ zz9<&O<%MJPHRzS}w8TKr6)m2MWxX9?e8p9ofwU4#-isr1Vb4#-mZY(Kc|UE%jynIO zNttXop(aE*T4<^r?lWky6W!!q=Q-^nq57Eshk*^l^BRggzqMqepqA-@3QmOJ1@v~so zYn!La>5>CXoT&!Lw;u$Bg+v#gc@%IVpQ%fCze}bi@Mbb=&LhT2^f;@hk#tt@&1_gfH!dRU!&%je-E+gmMorQO_jzrCnDj}%Zo%P(_p{QB2|rKYc}k>6 zZjQVaK5=dq$-O9{Oa`>r33KP6nmeX(T49kR$?qX+3=xQ}v#ibVvdMS#*O6ZIMgU8uBWgcSXffXNFIC;k(zk@jvAKc1#msU&9?`%IO zean;&{WyslsvS?L`ATq>=V8ODXCxv9Yn>>Tj=n@2Pojz% z_y+P?*xw7cHm=t#YjnFp(MwGlc}rBG0!{+A9`uKh##ObTqm2W3xl zIm{OGQj9j<)=dyonB1s zRf$H$xjRe*#PC~e(fSQ^^#W{vO~@Q&Zs4~g|0*J442mr%KpR0m6nRCMn452BKWrZM z6=Q!(l==W%WtTRwO&RN5oT?$MCT}Z`h|lFh-RXFrbG5NkzrmI^ z)B4NM85$0N7}eL43~%ggJ=A(KG-`N!YT0FSd0}!c!W+r5Whc{LgSSA8vf-f%c4oUy z#fE;we2`=*8z&QaRu6MQF~rQ5)efIS5F_?|xW`-0g25)2()@)EjI1p{H4Zt*xk?^i zIp;iQaHlB?pp(}q@g1XvmijX5gfdw+&G0ngH4liq9;Zt06WR{M#`q~Bzck_SE*nbp zbpZV!?*@KDv`=h&*18pjP78iaj}%Ci1gXDws?_6ayQ4^+&jonr!|ITr#{m#x9m`mZ;LA5Vwkk&5@jsNA*lKYF<}AE-#DLl{0jnW2wn!I|o|AbIEY(n~}gj-`tZ0!%uyYwQbnXy@p-QV(?d#v$_MyPL@Gsj!hoI{St`!eG%{D>%r|XhtwKsReDlMkC|x_%E&{&Cr}wKn7RL|twAA&3Rr(Qq)n8A8HS%N6B7 z%gOKRNImS}g3ZkqdBK6pP*3i%zMD&|)Ai>2Ug>BCDrKW%qk-wcWJ3Xe!M8>6yDzq8 z>uV}Y5}Ia-J!_@C7B9#-o-xf{<$UGlnSQ@BeL_Y2e&v~Q>p-K4H_`6;!z(9WUFE62 z(?+sDl4iwj@7D9ai+MCEk6xG%n0HJgnh_ zLuG)`a95J691$k9XuYHwuGCg=YtxoosH7L-H1oz;i(wE{E z=EX+wWD()oXHWXn^_asi_DrGB@mo22h=mvwvsB=#l%?@Vo!4g!Q{Qwu2vv;ek63Kf zO)j^cBIsYAAF&5d}MaUS-$ud;!CmeI;FAO zBs`TYxcQ!($X4Z;CyW8HDR#i>f-O4@s=`88PU1ydS{}C~rATXqQQblVPAtCm^UEI8 z?L!bBn2T%0G4}LymEA|LDaC+UN9U98dGASck)-FN$fWnQaV(8{JTE@Y9fCN__`ikn zE3ePsAxtup25X3n?Ofp@%)_ZB9peH_cG^%*g2_UG?l5^!^g_AL=Sw~;+bFBy&>(~$ z6SB9pK;6z|zWM%xyUXw7Fs`$Qpw`S74%N0Rk6mS2h73tD)-C1kZ`T;Y2v@CgU^0Hf8;2M znuD>lw7zg+?*wWDQblq+#5Q%OUUVQ8Xhc(G)wBm{rPIuqDDSge3o zKK!$j*6u0iJcITsQr4}g94&%v2OeHQxU$C5%HzcfULhnnrE4edq);Gz=AJeLJ7t;D zmOC9EZdCT>yOVrWQlL89SZIHU{Dns^)+?0)0}f=HTh?bkh`!vaeDvp*xUD+BL47hy0{epndcn+y!F69t`PK}=)0OYaQ2?W;&ijfvKZxJwE#kxC<4 zikd3hgFg&rjYJL@>v{PRp3N6DOnEV;GBk!X#4JJQI`|jj^f&eW1j8M&B{sv8tZf-v zZ}u2I)zuln3QUTcPD>Py6+-au!m+qpow1wD+zxuF9CX^yaM@S4Y8N9mUE-Ezft`Wz zMqS2Tj_$U$CPI4=Nw<;t^R*6+xNu702eQhx>$Bm)=kBgIa|Pv2SD{TJ`Exni74hLE z45GvLSkl@OZhR;&3AGdG{}f1awOOKnbw);^|J=I#Yqa}FRh%dULi<3R%6B4u)6NE% zHC4vNYb>v=c$K7$br#uheki|t!`_}+bLkufOLs)CwE5eRiINJL2|QA~n9^75UQ&Jm z&AV`Kp$X9jdUA|dye8qnJR-#yZv?#Oz5_;dj0^s;$3+j#wus{Tew8BiDRZKhlD-Fi zdS!3o_>|Xi;f_;LDvd(UF4%V>&r%!x^ICAB`p$`Fah4^%tix(lkH58Ye(>rOnt?@h zxyZRP6F28I&u`?ej^hHKcpBXqV)PMD8!qUDO)-Gmw)PPVOuJj-vu=!8o-Wn!Cu+5P zcjV8h+*12m`$BcpESRcxbf>(d-IZBW-vZmFsM=z;=oGHg?l%)t`%!nH_#9bW0Ys%4 zEkl)IFS8fnk0=D%e(;&&9SOzG-p`wZoaKEM<9aW570Y_~R@~&MroQ#k8dYkK`f#0| zT=$(VIxr}WikaAgHB!)LFfY4$*Ry+9t4?&t_M*lOpuNov!kU>e9ZR1kC}qDWt#`qnINHEteo?ech=TL$20pwe z?ONm$+CGX=7{T}OH|giBJH~l2i2|K`?#5jo%5HdEkO}s>=m|$?k|mZbMJ7>3H~m?+NHCN;hrac9TiGs8AnLSn(pNn6W5k}tm;M;{?U+#3>=O?Dj0rqfH^l1jEn5XLtrM~hp)W5(`f%cSri|%->#J4%f zE&U9GOqJi_lEBbzrEk&mEnY~_hY)xjDD|o@=P+E6G4L@_Cn){oV7QL+)@XBzKQ+O| z5jk}|zulVK(;Sj!x;`jJ7|PLga}yjnt0`N=CAX(&k`{KWOU7=ayu+R*z8o1pXsyUH zJoUcRjQ2TdN!5hWpM#U0FY539!4Le|C-3!hkag>RO^1*|H6f)zW@7{LDtfl+n_7 z`_2qrgKbmt5F}K9VRwY&;JsrO@yL{Y!6j#~##~24w!SAS9WuJHjk`#{8i$}e5C6KQ zNH2+Q2;Gu2OBvEN-Iq$FWV-yui&^b1mG!`@G*^8E5v;$3YXo$~qdUOBI=o{pQL1X3 zcv;1J5e~A-5oXNe_y%7C8Ei1n6J42CMrT%L>Q<(+#bE4VZ;C9(IH z3h?H0aRaahqzVzDlA8w6ho|2m8mfhS>gLcGs=wyNyqx3&ZvDF2hF3MFNrqWe(#*mv zGVIgWH)<3$I#(L5mcK^?vP$Y}YwLgR+kKbvl_O6M^hCVQO%NkF*(Cjd`kepU>7e0z zDX!M)VOE}>EVo;1Qx}GEvv0&Jl%AsKr2#f6u|du6UcgP(ECNrjM^mgfYvlFKi~UmR zWfyPMJ#a(3Z$jO|zM1LZbuIQFY*p3MrZ6<)$g=eP3=1cmvZcwDybe1>cX|DQ=b6Dp znoFnF+Ezsonh|8TXb5Y&;mB@e=OSK$Rcf0)3>z{7W*dq@a4p!F&3`@z^D$=+Jp_3^ z97zem#S|OAeZD~&6~RY7tG*kyf{n=3!Gx%kbhA5N5cMIvx|7C8R@fz^L$3buANd8QZKt~W1u7)vg1;G>1)7X z@!!4SsDI~H{fv^}*RA43`?YotvGHvVWxu_6?kXybgDUj)#_QNBFnSNmv122<+nZjk&Zpb{^5)!3yeZq{q z$;pU+s4~$+h9H@}`NB0#4oV+m5?3!Zbu(y=SeXAT(^!JeWDk4j)xp^5CYM?ij#tB~ zws&ejuVsG#r=Z$eqA%TDs2lqbab3rp%;rS?lDP;&9BAbO$<)U<%? z1G+$#S^Ebz8?6LbB7??qodH)j%D7ZC_CicLMQ}shMmh`P4e&zg)#jA=Of@ISf$Dv# zJyVR*V7YU1dL1*g$R@8CW7$3T_*_v|kEl^`(#B?rfRNUjDVWa;s)AlwDb;CZAatfaQ)#GL3iJ_c-?ow3GLoI7F!u9c&&Q7t8RVytvB4 z(SyAvQSM}=)a!c??m8I&b-)RQw|q8R5M}%X&-SLLF}&pB8OO>C!PIx~4~)6Sw~1JA z-%I1zA`{8ZLBgpU%&sI->(0Ir1f~VI;_cIAD9khJKxtOp54}c0(?+ge*Q*XVY}Hn+ zELSXN%F4p77r&s=o(p@)z;IDvwM|N0{hF~*=DAAjCN{CK$FO^5Q~gzk(EZ?hH{woT ztRqafJ?rjLLQkK`=4QTux@x7x&NIQ@*SFZW+DBa>7d+WFL8isx^Qr+@`(jK=XKQYD zz0EcBrB3rtK*zs4!)g~Rau%r01UY7zlgpW;4yL8s+A^D-2HdbG+E?pTggSNPnBal@ zCh*7V)6v$mn(<=$oa8N=x~}(YI;eG{R_aqeD#O^BU}iT8pEr@8Ha)Mm4*28|JCt_$ z^K)lMssyGCduwlqNo2@9%bqpBG>&&tc_ophC%Hb?9oN%}(R(;B^iU!}^h?KuAvbQ% z{V<6VP8v`8p_!aG!^;)XcioUPs96!$FVqL-Z9JA&TB#%xpGGUREuGT#+b6BF$q4GW z+CtqK%0(`tFXkc^4sE>2e&>HXM(-^CAx)|;GLM&g>I@7#(^C=PW4FL^s^?OB0 zl?(+{k8p!gyMu>O`jQ1!w}PGY<{%wh&3lFQ`<2|7=$Ree%On)L)P?yYGBsCl>OqH~ z#zqLA_-cdVz1*UQn^N6szUR9oBg;1j%mA33ERZi5^(V)cp0+xFTksZ*Lrb0qo{2vnHADKirAD}=?y{!b$KKZV7at3adTe8> zBeJW5QW{d^EQw<)1<)+yUP90ZaK;360?25L<&7E3Zl-M)+0FVSjMQw!V4*0tOGB29QM`(o zPD)^Q%HU%3v+Alh*vq3jiggk1d9McxOipOKGM<#y*UoTyoAqO%D)$%nG_c{_W~hWw zX^+@is;iS|sE43bk?xY8=}0iwYE-AVBa!NRfkwJ(Fzw5nQTVUvF`TWnbs=xj-Un&A zL$0N^>w&;V#CCz$pz_I_u+_60D>0ls0nhcEp)IZ?0#J-gf$pM&+qan%_M*XDj?etb zRLOEqukdH9?Wo>9mhWmwy1JQ@$rW7LmgYKn%8sw>fljjR2^|lCiPFap)WnRWk?+c0 z=;8QFeP|2x5*nc)-pSGT(ly<`S)k^az&CSO8H)4z;pJtewltUSr9D*Z8&jEXu@8xafAShu+oqxwm~3`sD)SY(Tdcd6=t^~My1R=@ zQN^_Srt#kGW)2jD_X;!;YKu|5UvYuiJNVhQP4Y66yu1T=Ihsru`MqHShrH{N(igJ* z6%li4k*m2r?$S5R$=16;U6z`PuV1ZFBBmZAI7LzPH^K7}+W3#)uDTh6C|*6YMA{P^ ztQHp8YtSC6hJ{=F+MN@smr2Dx$|me-p#vg%nxwB=EN#2;Q&lu^vU@T1O3uYomLeJn<97h3lwSYVO~Q)r!9Ll@6V?u#w`r zG3k3jlSIUL-a3*BK$Zd58Sz zzQIzlHNoY<5r5cM2anSq@GhR3ODas4&6NlAQM%$%`pu8Vn>}oT3J@PxLavw|mX?KWCrH^Tsuo2>X2?rp8sjJS}&xX#*?Cf?BX zjf(&bts0o-Hgnl9NowfvD6vn#8pBNkS0u1AWt&u5x6yX?T(SAV+&R9tpPIM!QOr~9 z&k$Y8_^wpQ*@TL$6@|Q}I6I#$CA$brdfIHqoJrhv2j{?oNJCH&{Vg-+=-7-ggE4QH z6s>{gcb@x07daM_?R)7XC}=$!#Ny<+In&rZ&XjfE!RB|LXDDK=wy*6Kydrm=M6Fa` zz!JR>dnVG(4$0CQACr~V%D?i}qgQyq3{|#QS)F^ZiF>pkf?n*JY(XEikU4XUkqZnd z`t#mniyWmBg=xs#C(uy2)$G}BSGOp6<8#C@wiNY?$GS0o^PLE1LJHpMsi3AD-g{Pv zW6fdkvlY|OaD$l`(>wBBh#d3eo6-h$L|aT;V>A2b?QKHEp}hcUXj-ald^3lv?$fal zD!1pV^TGxFwSLrD%Y*APjF{FyJ@XEc@!7N}hmICk3+U_Ng+9Dt-`b-l+LX5PR^N9Y znB-ZdzmHcSd^y1% zO+a=9Fca=Vm|Z^2U*cd0*%qB=%{ zL%LKBl56~G*LFXv{}S3bSo?_|&!@$SkO+auX&?SxU?V=^)6iLY4sylK@o*DU$9Pt` z+fD0k%@$nhh80i}!fkO*ZiSI3#z2bMpz3CLH?_sIQ4X7!-vw+sc40F-8}ka9jPb>b z28gQqnljuYdX(`vV?XZ>?9q7T*^Lcj>%uamw{TG6R&2$VMhG`ohQTVL+YQxK zP-VZF-yx0tT7u5T$L(lHBsMr_j*29nWOwwE?Q}hPQdrFu<}k5=r9TPJZ#|XXW3=2F z#fR>o;;wgr(@#BH!T90H5kgBGGlOK7XUsgb-rHS9N1c3pdiLu2wtpxNIkRU^$i3~R ze=s=Tfi|X`G$hgNU%-t)GBV7y-v$y5t4`i)`Mr&z4L@}NU&Z4-jwsRny54wbb@8hEz7B4_l#RERgH`VJdW93nE zw3WHD6pr!2nE2KbpRA{vf=RMPebGF0riDWdx4+Ji<7lV1ruL})fur48K(mFMEY8YHesro&Vn7X663)`RqKBjv`sw^gId3(PMfy`D)fC=+zfqo3~c z&qi+!j1TMIB@YT8bD4Q~5gYWjEs&ss^6PWVxH>u~0TVwLwFTjXQ0sgJ^=`jy3?6Gg z!^F*eRx|D{<&zh>Atgf-SM6kD{y*B@0xXWDTNfSz2@(HZTI*d+ z*S$ShD2n}t`|o$zw>MbC`Y7K--7tvO4{_D~!v_67wBnkS@D#Y|H^e)0@@!|KIYZr8 z*7(9sr1UWd(Xq2F;$P^Q^x;Lf70eD&ViYr*en_~k4^P>Wo08z!aBEk0J0~EPA(Pvd zCz#!$*YvZ$MX$0W#;K>W0-gm*Yr}eshl4zk<52m5G4lsbvcl`MSNpysS$2uv$#c|T zW~buguNwlVrGN2==x>f%9~_qKTh|LitF+Vx^%wIlKPEDl2tn8`y&UDNvKzCc_D^AR zutRIP)yqKxORYPG+}(yxO&!H0?^YYN1_$1g513_uXU~z#b}HMdqAT;NS!6hi75I#iWu=31K_~-wid% zDz3q(Q&gH~S+S!*p+`SV*TSN|5A=|0O_IxF#LAsU#hkx%I`}}H4UdwsvTD@y!C}y_ zJ5~tK$xaf;45<_HGC!&9>2pYpW>51SIum(RNHjc>fIiHg&UmhTr*wyN56T0&RK!+@ z@YP(PyPt*y%G@G`z*eF4!uLG-EhFU1foC6%x?%^EX{YS+|i(^XEerc22tS@jA; zhjFvCmO0ZOc>CK{#D3x=zGG#xdN=kyxa09aD*56%0_#f8_*T{+Z1ZIq9WQ|lOErI6 z@vA8Y4Mof^;DgLP<*It$M1rSlZcW{dl@&WVY9W9sPC)pL7Z>SINvg=SK*=AhXiv{d z9&PT3c?a2)T2ch9w;(4 zNFDI)pU6~FlVNx0??Fk+5_!LWxOPK3Ub|hyErNBN+Kd3R+r);N=prQi+KtSYl@*CA z7WF`o`zL#EZR90+L_587siW9174JchqsxAgTz^e{JzjXX4$ejtAY$}vadL~wtVUm% zX*)Ojz$tY@`Ysl9Au8D?J-hQmL-&fct5FaNX#m+ zXDaPZK@Xw2y7|9XQWOn zr`H)frxZc*t2c9Wv}kJl*K5QFVe!r{3&g&9toe zntyLvTC;%WTf@t8!A-B=zF@NQv%dCV_FidOkF3F_GGUfYFyC8R0ZC6QC!iTPT%OsU zRk0)|Nq=?R=*6uaxh{*V3UhECQXN;eAc(UcVJr@RBB?2O9WE-LJa}!)s-VD3OMV)4 z4_fio)dp~7rbk38nMQaI3`nMC`DHuIP z(%&yTHHNJ;^_VnV_)BJ_SIL-qqpC=Rq|IbQvikOXj{N-*yPAwsv3zC35RaG*Io>%! zwJlQc&{Q%Cj%;>^yZx4D4!c#0@f5OX_QN@{=TIH-dFUglVnu47ySe?cnL&jlv>8Va zoBsV`_jit4Un0{{cMt;iAZdi)*S(Bbgxe38m3xmW>J%rsty3T4rTtvrkGiA*h-Yt< zDpshZ)cVknj&P}mafew-_1KLfQaXQm$7kg;51-b(dr%K#fwqCSXse9VBH4BWk#NA1 zJVdPv&Czgcbo@{Ux$MLoT)WUpBoDb0_NQg=CE(J^9=q_`DoiYNKx`450p_WX~{F)BxY*dBknBMNKQ~8B%=?8 z-R+p3)jhg0xzT1DFh0DIACQ-P5rej}a@I=;j9uPk?zKbsMBt>2Nt-ixM`_N(ipM;) z-#-p;e~x+Puk!yE7|fqyy%!t53QWB7UWw{!jY;?bQ|vjkB(W!UQzz}Qr1qSxyP zF5`!&%~Z8w(iJcrI`y@=dU5 z5&ta^t#yNp9K~CYd?*86{CPkpp`c*rXlseGJ!CV?MdLIho?6)YoC5V`6cbWzw{{sV z(`wxeV0~`)pv8qqFYz9}i~~~4vsoqP)YiU{Yi7e!rJex;)3J@)URWceRGcBtPLxD_ zW$G6{Z7Ocl^^UQW;H$atqJhhy_|2ZKIv2#qMcvpy$H3jv@yMMrA_l>Iim;D@?aI$( zz~4fPC5=>Q$TY$xmO{23P7X%r@7{D^@!g14dKk{jC%)@yCpELaD6V$5P2j%=xsq?+ zgSr&YTnu*plZR02ziE=U(r#nTHq%78uRC_2%}EyAY41UpQ)55yu9Q2taqLy>t?3Up zH4G~mC7Dfd1SmeaH+>#SPTXYMNJuMnPuOJvt2R$ZL`LN*o5KnS*uw$>cXhRm83j6* zaMA7g(BswOqP>$hT)hwcf|2WyvJnREL24l^6r-%%Y2vpY>87WPjob2ty<0akXIIFB z)?w>@8c!b#rvAw)&j;v&Ubl-Y!v1eJAI_>s>*M$ zN20;cZxz21ddZMc=(vSpOgA0D=QfzkosxKFXn)bBqvf1hPkybRaN2v{8xE8B{@Niw zR68ezkTy2u)Y%3ziOAbLy=R;j1?TJuGK@e0meZY5X6_K7HZ(PSRAfoi8Pl+fc4`4gtb-ty{ZF|>bKR~K%r z%;2pFZglsw{Zg_xXYM!D@=uWZUU=N{4}^}K*xiGYuT`fcet`v#ilYt>gxB(D*YR%X zZWQSlG$8#}A7p{?V3=5b5e{EOzGjA;V!<+`C%gtcHw}5il2G`Ni5NJz=5Jchk3A@YazJ z^6MP%X?PS?O0kpc7=+E8YL_4prHig`suVNyNB1tErl9|I9(SxPJ2!dV@1dRgFvV-V zKR`6Sy1J&SCU9yBx3;=gG8B#KO>_^@Q^w#T0Q)D=&|)!H|K||@Pp_{3q*!f|MmQL1 z{g7>n$lS#bvp4oEs=n)xu_Dw(le=akMB$HHfbiXv-InAb9dllCSvt2jxqN-o zDXwh}Pq8h1HiOpr6;`Dc6}ghD3u6I!8z0@(szQ6J*i23E^FF^3xN{kNbM7o79TVyt zw_#EVizv>0xf<;CdJpzeo4(FFDSJHx6>v^6eon_lx+-Egto>&FXH)gM%eXDi*Q%>I zvB{CVv;!&gJ3Ba=B|%ujYRaWqP{&fr*8Nf8;st70w2cd=4Fq5&K*mh>RwEvvfQ zY0}B=%uTbZs`1-l(-^B8;_U(2`p8vfO}DNd{*_IdGq@xsmn3af+4iP|vnX9p3MsFJ zzI?__Ug0(*L2x9d+8Z)R#L{*uxmlx9nmI{x-FzaG{eA#%-D(@(UHNd;%F29t`R>|7 zJE=o2b(md}U}VvzauQGq-45X`G+KIK4iB9Rr3Cjk_~A>198z*=FXTVXgbL7V0-xU= z%#26xzbet2m9#+xMU-BwPV@x6z2g{&g11I(_wkH-l>jEPBnZfuUb+Nl<7ub(%DkZ3?@ zk}g@3L`T-w27Ig|CKh$q({t?KGJudS~k6*;~><&B` z1V56vy`0P*ZHirQ<+Et;chyMJk{cI(C5Q>0sbh;?X*N4ny*)hueFXT0z?fHXpiCja30qz(IJ00^ayUnzwEq z?`_T%&eGV~y3NzD0oF)LBwH}Fxjt6it-{0T@mbH6>Ku3wJR~ANaBZ77{??kVy?c1E zQ!=}7PC(aylEx|lM=wNM17BHOhSIit$L_fO9cYoXx@^IE@w_Nm5h z(1h^#CVD+m`J~NS-oTjKse$t>jU}s(aBQNWS%YD0(@Hi+<1eoz2y-!dtn&0iwXT4S zCYk_8cLzM!|IN|2sTJYC)Ss<=+fX-g za1ef-mq??p^eZp7Y)8s%p^Sb$Z&IP++Pr^E9usUGuTtER*zq;vR9^F=0SzWNos4o_ zc~JK3GK40sx)L;6?E(r7-{o8hG(V9p8dx3?5w0^mi@IQwnegf}-n8X#mzPR1ZWx2= zmME(Rz9J>j5!;yydaYr?HUC*$bd1%pA&nv2-ylUXA1CAsbD2t|GK+<)V0U7%Pt@3c z7MGsIb!_u+I<=T8^#{7m*{FRq6F0cMMvYfnx}ZZgC94H^qpJ$G+2^FmUycyQu5RIM(tV^d;v($_fA!HYZ)z+w)WHvg4NrL%S!B~1 z2$cL9A_*Ok(v-#4f9oYTkbJcq$N4}AY8+08`eVlqavad^j*{lkf3>^)4BosHKmzC``#P`r}F<-vPkEa%*{`xNT z)psx9Y^P|geZh^Ht(V@MakfK*)acW=My%v{WBs?)aMN`*<~|ZAZx{-nT>|^!K>y}0 zd*4pHd{|(DlM*>rZiU^AAy)S+_A^4l*rC{!_a}f-SA_RQ^At7KsW)jTk5uW<4H=uz zO%uw$Zi*UWLV&}_w|`xBJM`6KKlPdANK_Od**aDN;Ec5zT;O&|$~#06o~u)C(Px?KGBJ zW}x-(7{alS2a5u5@nzh&?GOzdn=wBbA?;ddo@|Qd#_YRU&TRQXS;!oDWYZFE*p$G% z43CYiqK>hr6Tx)92j$rRxbP|$ew*HGy$$l@{ zOY4y-YUPkC$sO696}tx(1E^NQvt^r0UrTSJ;A%y?4JdD*Be}Y5k1}3Fc)vu6mHrq& zg&cIKDc70m4GwT;!wO;%{wnR*I8p^3&~=4v1ndV7dVG-hVw)Ufo<3 zeQ-!=CLV5_z)9#%x!SScaLY2l99Ut``#cD#)0-_*ICfLE`hYOEF@kcEdDBW!39a5v zJ6dBhHW4tI{xZ)9iyhbYri)%6=d0tq`hw#)ep{^{+O&1*g7%S3xO{VG;IRl1y!c#; zH4N89Fe{kMOzosL$0@;S*$3~OFgB_)ZmXw@$c$`LmNZr6>BKGPS0g09h>ctPZFzRW zlqhUwS_(45t&Bk{D~XtwOL0M#$YNpBT|$hf%THf|RQX0)?h|CQI| zZ#v(@>2R!WGva zGouseLY2c-;vwcH6B`+mY?rNv+N*70FV3V|X8{9ikMz$QLyrfpJ$9~X{RO>~)1_WM zW20Zi?W4R=m1_e$T=4;03hRnb3{^4iO@OkxN4eq@C0z{`KWI934^qFQbXtE9W|k-A zQ?BZYMOhb!J9h_Ui-M_8gPF}r%pBlUr}?bGbRyvuhBThHIq2Y~0DZM(R9Ktv{dfB% zk%`Cdp%3Zylxio8$qxt6y%~Tdc{l;La>GtV!TTfh{B%j3?mdZ?*in*_GND<0sj1UD zv}Hi$t;1@C(A0pt;e@>MZ-gO!w!uT-zKqn5T~g!&Ofu0-B0IUh*#u0;1@!EnD)e?e zB~6mw!4e-xUI;DF*MTnT3|Y8h=;_Q;OWNBq21Uxu<2gCK(}<2cF}1A@ZL%Ho$Vh@P zj!x|kD{8@ZOx{)vi4%B+9k38;h4cBw5whTmpUf!^%Tk9>hq@a`g-sa0I_iri(QC;? z-5eS6Z~2^%@-hZpjES>aGih}D*m!02$LnFMY5|El5S3w69(<5X99Em=b?zqR`~I?U zq}y6b+_=I&@YSa7=i^E#8ZGwMyL!hr*hUi<>HHW$rH1>EaUKg#CYp$mU*Mc`NRGEI z+!5}Wyl69B&e+Jq>6Xd89#vA6xX^zBm7T^RB&Fdq?Bk%JuB z`A*81KeoeLcSb{$U{;?npvxQZ@X{f2M zgSDj7R6$gE0q_(wrKl!9S+z!Q{x7 zkPz$A&@jhS$6yR+*5LSeI-~zkCH?!E_rKBKX_qnRg2Zq17x!2$bIonu-o)9mh>0Pa zq04};46xPa+;&_*7p^ao&(|j zcFsfI^W4odkm#xLe2@8f>XQCC#@Y8jfmMGabt?Ni?ESAF#((d2|C_VGbb0oTJTeN# zZ#ptyqXd11+a#0Wf8rY06fY=3Z~bMUbKW<|fBxnBl7larE_`Xky3 z5)l3bbUz1r4Fbr^P#--+11QPR(a|t4ai3s5evCtRnUmPckqj8r{j68W^Cfmp%T<@zgr8CA?MeQ6c;^j6;hE1qTlEK2%7X6E5j$O{0!l3uogxZ#$Ws?ip z@G5luC*}tHvBjwCf@fA`$mp9rHCc?7M}<$(nkF@VjrJ+@DLs+MqI3VEyxzP{;A0cl%**q4& zdJ2}zQI(Tz37|`fq81s)n~r^Z&16y@q~IFG`RP>;SC_@vV1l3vr+e*~?-AI9kG|JI z1yw<1d|GvCZU$=cjp7+sCAGaDR-|A-S8mqK%qgyFK0h;8)(<7~P29Fzhjzj$J0uag zB1D@i@BEasP?w|9ul$|#gY={1+N@#xe)61TIqXEW($s#7?4`hv8mSqJUg%yxdxc<# zMJiOg^EpIg!?$CVz=P2&UA8TD>Cn~JDUvw6_#%|gn#<)85dpIlLiv$RoUITIL$hQEUg&e>_v9b_-Yb7R8`e6EoA#tfFG7JY?m$`L#D9 z$T=TxrVljU2NoCDSMW2!V|^m;luFSx;#y;D zx`T$oz#T4%+{nz+XOBNcefAo0NYfail;vp%%?ix@Dyf2-#D?r2Asp#(j?rCNEh(FS z#-?i{@I^xW6-w+UeA9NuwCO5&yb9^|KANKVCN$rAbMPWRS(3)qMV-rVSIRtMQkr~2 zEzn-OlY6pB&gUM~mYbD3+bB~xzhQ#M5)cm1VNYU*fgu zgPp>IDi!svR=c8z(kBt4{5bn|t5Uc=>60}VP=x(W%*&@+i1a`s3<8O$o@oo@G@m`6@!UKLxP7xQ1eINqo(IoZdio} zH48gdELD?F3xWk@+U(dsLC!BuwPslwLl3pvsDeWS{Q4WECMy(GZ)j0+e)P2G9Du!- zf_j}#U^*hZt^18ErY@XDA;acJ{41yJw}(5lF=h&@`jjqnsct7DTql~L!Ui0L&TSfG zh?amkc^79Dmw@D ziaB}e!XG@P^xA0sG_pBR6>QSoSZgkSf%9tzc^5(dJz8{;}AR)ri^AaeUdlypK z@}YZ_>E}}){x1R#&pHTG6@M&j+w}VIucZ^nPqd5}MZK>*6v(35V8Gg}i z@Xj8&l>|bY>|$^Qu`u&{H*H&>_iGw6$likb7rA74edYm+-GEFR>E5IIF-`L!9R<<7 zZ?W#k!OIt9hODToC1hWP4d@z~iYAO>*6%^0A5vWRcY7S6UL1m<@A(CvKDnw*%q6Il z+mYdJ7T%9^RhJj?^@_9^K}rRQ(z@;pDZb9%PGQEv%s0Q=f4F#xwJEGV7Tyx%t!|M+ z>uq7yg(C6B*^Rg_}GTMk5t0VR7b6##fhp zGt+(j3OQrKx7VG;qI#M+X;vq>O>z|9QXr=wxq^VG-vZfH^(p2d|4}a^q9K5rDt{vQ z=hxbIO^(!cm!%UmJtno!^>~?4B(w>DuFXa|wnkd$d+rckos&)2?eNMVDVwu%6P=vU z?x&|f)U!$!{fiu0d2=fp(MhDcePa+=b};ggwWM61QKgVsg#Zsoj1ZL~D|ZKf!G?RV zu%H1vOD%*M@X2H?lYd!&DJJL3EK7Z#xx7Q~o8&|Vm0e3p%=I2_cMgTon2v>2VO%I9 zwyAvu>vL^|wnIVPHx~WPdqx?Uq8l2lGUp`HU6z6vo+U~tA8XC};iOEpQg2)a_#H3_0@Ia{&vUNKR>_*ne3+cE0l zo2jQwa~7$a^R;n2DBZ@6FUUBtFnv3X3!_FynluSi#`GTY(9m128I`({?FWoi!OMIU z^y|{+iNx8$Ev%5`!-8Kxh5N7TBm7>YKiG4oz!Ats3q322L*1Sece9Van-wQS>=NQgc@+2fk zEd0X3n*_9}J43oGbl1sp+Lqtbjj4$Vgd4w}>pT&T89*lIrX#2`>DG@~3f8Pi(md{; zexJPVlEvD5Yw*kBqWg@?)~s~cK0Z2gCb)rdD<(Ne%Eo&Boj zX_kFxEN4V{Y`f4QubgLzDR;F=3z40?5uzy7BORfa*jwyWRcmkm-8|sX$fUf=s0_7K zkmOSiwpq*DZutZ4UI|I@Hg_A|UELCtDvfA#$}jICvpZd%HOu&OfB$j)f~;U1Pw>N9 zgS}H+g?->h@0EEk@vq||Sz0>bPPL?k4ICZjseLbwMWlVtb<$u%%HCB&uirc(nY$+PM2+`D$Q*s$CHAs3p3~_BJVKw>oaKPQE$p@fEUsIs?yAG9p`tXK z>8hD7T^AYD<}tlh^z>Wl_~b!B_Lu$Go8FL16Vje@-N1|qT#wL2#sboyr#KR8M^c_q z>l!+3d)sdQJWN&_Y*^)tnbj;TrtQ#|FK2iQ$%v^J`oc+MML#jbsS#Sci=ZsjSbC1UMi=vU%-?hPYn%l*Y()f6HH4yCD z(QFnz>1?bjxXqAkaAD(0$lvpnESpKGh|7~?aq!p9fXq93WD)+tsC^X0+S>OeOXl1M zN6PafE<#OOQt8fJBAb9txg;lHQpHeBzNIWTGHG~q2D++;8s!>uS=!*pRItWX#j846 z^UDEgFJPwL1U8f?9YsR+YsIk(#8YS0twI)}lBD zJ(voq+&EgkF6fqe6T;(V-yX#$JdR~zAn&yEGP$YXt1E(-d%PM|x*0+-95oS0=Z#va zy9ep^-g!-VRquK^Pip7XTCGn@ANqt;80@fJ%C*2%I-Xq=9(_`G8+I&;WwU2GL&sF+;k+f<37*F8ve?^3X+h^qFNx~76X z33h|DJ5s#*==Gw$yhFkF;uGKSH0(bKc_cI<1Ii%eyUgyW|8|890atg!B8jF zJ?TH#PL|zr&z#%c;pPm`Y3=4#f5~M_bT7$bJiiBNL!ICpiVVs5ke@+eK^d6eoZ}Ao#HV`)EI&i4py z#N*YMMcy#M*t(Kuqne*T%Uvgk+=HlcG?b;Dhflr7#(w;J^?{Al{x&DEri)0qnkd~M-rmA z1u!hHO_{G022M}cXC&h{&N^>Qx+EP`G_rlC=!xwynq4^tzsagbH9h6kn$V`PS`+q8 zRtw^5D_!^DKQ(wdqN{B_6&PBW;FiJ7YMi`@T^Y{*e5E5Jw6a4w;CtZ#Ss|kpIt*r# zXr*E1Zk>(#2`j$i7uJyXehgAdju;8VrR^Rx3XbtTVEi^z{J}`zS!XxWLWk9z+{Uaa z>z0zbI+>$7i90vac|W9YRPDemB{9$^40QogOm60{`;xp;m&pN+wD#OfSh>&m&@ml$ zSyw+SK$9Ay5vDKwX2HzvIVyp`a%ETDi}rJEPvK_$k7` z#^57;v+TIXur>;jLcYMyu8U?Wxg;EBC#SIy7Vb}~9^ESv>e${XO8)8a-nFR%fus2= z^!F_%pXYO7;FYw2V*Eo{5$d*KD&CDkVV^^5~gcYz+^zZv|gc#gTF>nm~(3a3!cx@}8~wsZ{=fbhQ?qV6}BRbckf^d=O4;K!m3Wm0<*$t?>c!KD@aUVq|P^uyqlu~W$l zs{t`PGE1V3;*Y$|xg&NVFz)3Ztd{*tyN#2#3rp&YY^qI@nle=O!<&5gKfJ&in4z>b zYu*z*mk?w9`~#hF!Y&a!y%yFd=GXC?q$R3m5xE~B8{}F2)BHvWS(;s#wlUHqJmD5J z86eyPY2sCAE*zZ2vuiN1AG56dP!F|$`6=?Rt@RS#xsB38@Heg30?4!xu1%<6%Fh5( zo7u^ByME}w5I?Fv9(!W!s_vI6Id8BW^^>B=h~qBc8J2A0L5#q7g>d_KhAFS_ov-Q-pL$=$Dt{?YvW9Y5t_cFkD z{JK9xY1T7h8g+{=_7prDF!{yi$I&;BPy>S9w&R;NU;U z8enbmd~ETsvNWoNG2u4tn#H5v@qI1%jrlz&jybTM&-;5H!D@OgShI=6O1aTiNtbj< zp5Tv)qwmme-i6ReXo!6KkIep_FJ4@jmSxxQ@~9ok);IS%l4?@s+nrsv>z_Lm;APJg zICDqU+a>9eg*T6QXGuy#u3p@OfVutIu%MGd_@dwf^eMrz@rPfhr|$37h2Y!z9{ zrm0HwC}-0ITT~}lZ}z?MBUx%+kn^(K@rCurdfkulPs&1$Yh-J(LZuSwo7iPh6WlzQ zT*(xy;`l!&2*{evolZ1RQ5Ed{Yr|vzTTT9nSNuDoI4}~gfW!*mX~6zpA&R{J2~m82 zgv5-*3?PatND`8679T($Sy@I98UUK1fpCzJe}j#G>_kWp|2WzJzlr}!y8!8ze_itc zNOK@P0FXZr$OqUtfixa)Oa}Jn5B|*O_cazlD1YQr2Bd#)%s>IZ%lOCf-=lfHR^z15 zvam6+b#(**QA+s)*?9!n`6)O!1Ua|_IXHoc2_VpyKVv|%b8@mHMgJ8K8YmLLWA^?8g}B=oold&oHqG@rj6D z;J+XsCVxpuOiD{e@PdksnwEi)nT45{l7pL_iTfoJGt=+56By_ixQ`#>GLgI>Az}KT zZhwZCKzayN`fv6A6EFQEyu>rmpAjT}2V?-mMDhmCfl#m?;sAi`qvt9{s8sg2oW9YS zXw>56ZFs7q$2433B#VxLPw;|}h?b82B?BWj4=*3TfZ%HhNhxU=SvfUz4Na}L+B(K2 zrXS4AEi4_KoLyYq+&w<~2LuKMhlIw&#>FQjeoacw%Kn~{o0nfuSW#J3T~k|E-_YLC z+11_C+t)ufJ~25pJu?ekSzTM-*xcIQ**$@so}FJ@Ucs;bgn$1o(ck0&0AQpCC@9D% zsK4bwdf@sS9L7cg@ZU!`Vk)Rc_Rpy}ebI2mqch9f(5bmpkMZ6+jAG!^aIesw{1)jC ziT-;6`ThTr=$``pQ=Wf?q0g`Ye+vA(skOAYbz_&BSztto)un3HW7q|?#|XQt z$F%*fzgE812elgi z>-n~eJX^RZV*;XC;U09QVSs-R$|}f$tg|7&TIYZx_XYyIt~^ly8JWEE8sR_5jY18& z72^pAEVnL#G8Rd?TT^lNqHP6yfQt3D39N~rmG0t^$~emLdPfRQObWpAoQ!NCM|@kl zZ+rP_FH=sleiF~!48cd=JvqADyxsos=(mtgZ;=OoUnKeIAJ;7XSJ!v~96zms%n#Fq z)LO@F61EhZ8>;F+zRWlk?5O#@0tIo@v=&T}TygrV`<}IJhT(jbmI;gGCm&(@j}v7+ z9?5M?4&$jRIJ8BI8pp==QEYgHyBOjTs3s&VkmX_#)6-%kFMV+P(45~=UTP_rnqS`M zX;0fhb*8%i))ziqriAfKMIU=pNe||5*w16~5QK|#$(o14c`JE*Gk|MzyfZ!WoYPOG z7FsHu*}>ksFLPu_jXz1K+i<6x7o$|{O}_1}<#+2|+;$w)mChD7rw7=rLHm_c$fyN$ z-F`y9JE{4O*fpITCL|Z9~1hKm{at~hqYVfg2?)lR1o4dvTIGw39lIpF; z6KRBxwxNl2RDZ!{y+6GUz>Zw#upytUtdS>w4~j8}V9$Tg>8bf;a955|)6nWzOQ4*D zI51l$2W&wXn`2#*IMd${L#K9@l-j42^p!gn$tq&RgHH$Q;~YQfrTS>V;<*Igom|bE7`qgVSDdRD z1|WQ-cpSb?WCs0|(_yT}J7{G}T<~8}7B3 z)-Y8!%+RyKpb;VS8mdAP|~hB`UD*v}r&OC_f2h6{K^ z&2dYj$VAUbvpmQ5>g$a7)MwHtc4%!o(dQ*gIL2$T^k{+^I_l}WysopmQ$?O4qJ15P zfGMCwyXv}=zx!2xt|!0%O`fRxB1PQht1 z#cuw2Q!imAwa^IJe%9&c)z}7Q(<9o(mPT`77s;SZr6T{d)mW|S;yFW+44agMvKA7H zi<55rH5D95M_bG>nL->RYN}Xr`-r>K-X0OF#K%2u4Hd5bER4>yxG7EUxXEfqJ_ZS+ zONtRzcIPi7byOST)S8PA$6O9tbuUgIm!WR!D3#~2$6PxpYBC8JCmJ*1hYOxWYSD^~ zd_37zSq&d2^)JEC#6KR(Pu^72QDQ5N?5mqAN%6)O&PEL?L3QUY%&$6_)c2}sjUVRg zQL*^tmVCj&D3BdNV;W7W&RA#s#TOFvqQ~Qg>_tI%QNma{OYXcza-$8e=4LB&@eb=T zZvfi+JR*kgDJ^pg2R3PuJ}sY4#Xn(yUV^?o01g+#8Ijk6ixlJ4VmWUqt3uxru?$Lt zP)iLBy9tEYxnC2(rnDZS5;sGDu9>vm)NNy_Id^@Bajo3_;%u!*m)^fBaP;U9XZbCX ze?+@fGw%U4N8ru3_1NTsjYGY%v;`)^BfuR=nk3t~w|KFK=>)5XK$LH~JI~$hNlh<4 z+G`oSr`0ht<+Vmbt~lk-R*~x&nSJ8VXS4=g{ON%T!!b zUg+MgMd0er%E|Krc`USUSVVs$r zw?7In&Zt%7vXhlAR9zRmb4o+*ZgfBNbXLx`FO`*@HE-TqpdDq}f$`n4tv>dQ(Ba>Z_ZA&qoE@Wp zT{0&&?GxrtnfXrR^k*Bz9`Fz!W^sE%Ab21pm}XMc{Z-B>s3;II$2q-?jc6I zU(Zsy01Ql>&Ba%+J@qh^NO}He2D&}S*2XY@vv<;W7ZAqHpLQz9K*E5N^xn(k?*@pM1*KBS<;3mMWJd_cTol2+&D`HaV(aXjjZr^VK&v)W>Y2NAWnF7s+nOgAh1R_z(f4j}eGP2u#vwKkxPkV9KJlwIE+NjDiQ<(h%9+ zVF(i3-2ui>>!BiXt!W7Ib+R#VZ!7sJ*1_H1?j`Ft9KHu(!La@x-%4-;0SpT>rN!?- zt+g4q(b5%(r>z~gpP@Z)f;Gf@NV^zdlk+P(6S6cnf{@9cm4`2_AjA%+Z^Hm`K6b>? zIAmMpSL@LMKnzNwvY+#Zyc8GF2+6B^(AWQuyYE5%pa1K^rGFQ0bPqy*lyVOej|>1f zhHSxbswh+N79$wGBoWDQq|Jf6}lHp#u#&u%5xdF^F`*1xO01vWTaIeUB zNVE@lll=ILMeEtiZNtlpQ(z2zd7+AMy@Gu41PsimZXtu<6^j28x&M!z8drMBpnNiK z25(8x%uY?t!>;um6w_f`t{*BfLM9VRme>y7*l)t(;wCy(-q}wG^>ouYc>R* z0oFye%>dADTu{Vd&H~W&$d5-vaqmIj0_%Y%oOKUcbAniD?*HzL`~CVrLj%2{L-gN4jx&+OGv~+^t`QRp3_A!Kr_VnXblzN}{k7ixZbgbw#ao&BE$6qx zU9Pe6qLdqfev%X+TVQQ^BTRtgZT3W|b&6#K_h6tJ@c8)J_-(sZuKa2k*Yh=Nd*Qij%$SI7?RrB?dI|mM3$MT$YEm_H#T|6+4Qp?@{6f*% z26O)_(KTdnnxL0=q^gqB^0cl#xaA1;KI755c|+#)j6OuzDZjp}T#EFB!PJK*-RpMj zq{^=m-b`nD+1xovD+yG|wNj0uOB)+=#w(S=4Y|nAw$-N#y{9321$!CCg-&4j^~62s zXccmT2M6CugpVVvsSyDqh={u~&ai-QP-p9{Lmjxn z{1WJxq^(eAPqw{HZ|W5hDQm-aC~uBKdGTd}-Mmb>A1>Fo_m5=x`_9WSs&EujHGO%ano3+KJ3G1x%A9hn1LrKq?r5B=n)aORkP3_EeY>& ztB?u#!ueb{i5bs=Z(g9YKtZkZXsTP^DxRozj@is{upx&@_`?@vVDiBAPKU0AzNI6d zyxm*2R7SXARRP&smC%SIPgoc4fi-unPpjz7%6AnYUfQA_NFqi_BhvFB3S?WVMJN*R zM}*=~wNFP~XwnW8IY6 zQ#$Xt6p$IFwAemVSn#ovoqN0-E?!oNY0)CX`LtshRhLHBJBF#^BYMx)6#b`$t1%R@ zieDIyj3`(lWr*#-YVhe9H%|fn>CYbY1h#xbkd}c%QR9eAJVwr%vXtXmc=YBa*`MZUW({omq_O|^;3zcwQgp{znzFHd$!XW`(Zaz_T7ei49Tf9TgDLUrII$|rdUdU%F%5CYd5d$YA#1$-R1LtQ)9 zg9!6D?1zN0y^i8S5S@#ZHf4{Aez>YX@w~B>pT1?d3;YH7?oMvO=NWaliAwvxb#~m9 zaMxed&gbF znJQR6`r>7*1#M$|LRpzU@0>21^pzPvln;zydpoUXxMf59mk23#U``9HP2{4_^oS8_ zY}ddv=4DXl2prS~EF*yV>$hr>hro=E@E$as2l#VH=$Rtcu&%FK83=A41CxW2s9UUi z&}++6w^oESUhBcq9UVOc6Vh9eI09t)0kw+_9tfE;yh~__?O1{b--Bww7i(>6ws3pE z7#DJohiaHZ{>YnjSr<9iOjr)GOqqklv$J@*A{y$aZ&GS;svHLo^uf0XX<27Kt8`GOc6fi+WrE zi!*xEHOP(kJ!tHEnH4c&OL+rMru6)77XltU1OH1ycO^oadbZ$PWq-DG#NIAenh4iQ z#_cD1pwR#`z+bAZ)N4!d7afRZwmU}Yoz(w(EeJ3|{?&w7e>S1=|F#J!GiP`Uif7-J zo?L_^aH_cCp}=M?2*CmWi@LXtYOCwsMQL#5Q4k5#R|o>c=6&I zC{Bxeu|RQmcTLak`@TQSSgFEu!VzoCCcC`R{S4F{JwZ~>>=?O zD`=K;9>6y^{9~AICIP+ehq29xuKBGG@oJ4Wv=@2ueLS<_UrcSclRz>beZ1>v|q%X%MyKusrj#Un~H(}r`)n~ltW_*Um z4PzWlNT@Vy*t}@lNLGkFK9|*mC4&RTK9uz}^~L0kHm=n5IG_Bb${(Zzn^o(~ecZ0T z%@2lI+jNeqB70a*vA%+C5+%p@2iUt6+5u=z+4m0OR;~&=SZs+s3`SO*P_&2sJwp3V zaN-vdet#GK2fk5odb_E?bN`y=_OJ_=`eH&a8^EOh@#7@u5vy4Zj#PC6lhUesh&>X# z8{yhA_1OxdgwuPwsh?;c1?MmKeKlEZm5w51d0tj_v=~L*jPm68(D*hGyWGAsK}TV& zcdew^5zouvwzO@%M^p`Ye|%@gweY8ubq@JwtR%YJzG5bcJKaGS9U1Y7C~MjKleSd% zYm;U+_oc^~3Fj?0toHJJ-Ie63jTuuFkNx?Y9q0XKt#S58}maD51GAx7c6 zg+l1+$um}S_tTS7uZlCxSY;J;qH{bG@3TIqlED*^*dM051>WF1D=!iT#z7>|}=werd4 znXLTVOrA3>z&U1aNXf3x#w%lX6xX9)5YPd3|yR zZai2S06~vsBis6UX~}&sN9KC$XAT!<(`S~>O|dYZq)aV~gQG@YuY+Ih0U7EQp;uar z84%NP@a^oG=%e$^m%lK@f9`0rL74lyzA&fUy-(iNw_AuH8W$>;4oAL5aoa-c!`=Ce zG{dRM*{QZB<3}|9XdE5b>tgwdy?Z=8)f;lPu03pzv+a@-wFo zcIB9QMryt%^dy~D6aU7zPgsfid5y!3Za1BpP@nX4d(WoNvfVvJwrOhA@nRIDPh>YT z$4Tj-br4?YN0!pT)|jiSI4%IOQhtmtTsFNG{+IE^7mHShcTX@9Y)ge2#jGn&aa>9l zjhTB9<>{*%w6fQxI6%nJMpfldMEZ-0iK(nE@I#WC45n(zy!{NuR~0=VbQ(1g^Y(4i zb-g5)o$M$o%-Y35b_2YHO3u0oc6Dwm$M^>GLoRNsi#8-LG|v0&+AoA&<>|TvxuB%2R(NSQ+{>lr?RhoaN8UET5)_&!<+SirJxadMX)13q10bAt zPo3ZzI;4`Ju_8Tq4brdq~Uz;fH!;r>#)&hyl2r8&3bv)MaE=6jptD$ZrTK1qaH zrrhC}- z*x0A>VR&Id(TCaEFN8M#xp~tNDM6gi##VjbfIOy6g`b@q2FIFX)?t8Z>{Tk{)qNKn zYl`cDq5gCEz8mR=3>(_$NEcmJMXWj-R#gfg5R*8(%djyT>HMD(Mx*Ug_&pGmHO=f*0<%U>6DInpR?gz)j6UA>ytZ;F1$R1C#6=u zj3_niJW7d8)#e@4nC%r#vmxV=|&v_LZZwK_V=57Des89!u~bpT&yryXz4 z)x=-?BsP+jQ6>WnC@puqyoc^A`_m9TE#?J<4$^VU(I)nUwmi=}F^h*fMNU zr8=RFSyoK!%F_?9vgtbgL026&Z#DcT3c zTlA^4!S{-8PM(%JMbdx#n}609f;wuovA^B<14!zlRJG@Av*M(GY=bRnT>Im^#A#HZ zz!rP+RI;QKG@xT8`%@qMJSVjf5Y~C;)`2BSBfV0lVgoyV{YkfRsvAu2I*j+y_!km^ zS?BR1n}ZJCjElWaO$_<-uSJY9aczN)xe`ElvwFH^WX@@6c0vvl2v6IxJL@F5*R9u(y8od4uNv9B6=iD z1ZOzD-|9(bOhE!K!eNgJJ6W;pgqk0mt}N1nwKUqn;3n&oSnaee{Ug98D%xZ8NHM%j zwo1{~Vyn)IRM-Tj7HzE^xZ@(K?QQR}#?O^4yfH!mI&e*|5S%>UYkB7$_qGcngWwa1LfKZ z@_N9%XA1d^up?0U8(}4n3$B=--gs68_~vo06L8z>pzk=f-fHk*gJU?x3n1o^E>af6 zdcS;&%JKiz&Z7Un_58nk&IYOHQY~=wQP>vkOUkjZK+=5^`kI(+rR*Ql^gM5B>Z8hK zhSke03>}Afl=hYIln8Vr_ByJ+_`IfPJu`=5ms6(l~K^iGJkX4Xq~@ zu}Q0AdpQyQn%u|X<$)*`UjGJC&D27YrkCdf1a2)(C`-&%!F6N$5FQ&6Nb9HE@|m$Z zTTHu^7p=gPwj#%pY2kj@M`HooMS1_CGO@kkA*e!TPn&%yE9hx<;tAZZDq>(|s7+~3 zEPA-s*pMZSpj_@1f|#N>M1tFGS6AFXOQP0v`rwW82<(dEH-b*nQ*Vqj$cxdtG41h6 zsw;EC!n_4uHMg{3+IVAKn%eEkmmBZZ_BAwJK)WqF0Hj>OL`V;73Ahq+?+6iv_C?TC zr=NX4R8rxu>tcJSgC6qs#nDTzFmWr0ge#bI3s>D$aapa$ILI))4^c>fXu4zISMp_0 zsBgXJ63tZoB>Ao{q-Us|R0aazqjR{>Rb)2|gUVC%mrlc7& z(9xN4yfPNaA;8RD1g1Reagp5c3aII-=7VUlyIQH|N?T@sNEikQpR-*&$ej>sl^@QW zP&%EIp4la;p09l}h5yP>V^j3XW=-T^(M-z1UK-qHrLRfK7 zm8I&&!?ic#B++n6s#XWM#VDS8keFxDfviyYQ$(y@Ei;PXe*2L^6RQeRqgEB4Q3H@* zOis9E42CN-ede;`7T55B<&@%%Gpz(D&tM9zRv+!`t!wYkidihcZ=_Y`4b#-J$>`J6 zbU6&_3febkr<5n;yn0aN3?x-C_bHvX_dQC(Y7q4^MSMQ=0x0By$?1t@o)r9j?;Da; zsopewrp2Y_?%cY!JkeA^z3zj9+Y-@9eLGD?i7uRx}7Aed~R?s2DM-D*J$*(?k5U8nGydJ|*WQXgE>rrle|a_e#eLPtUXm z>?JTOq`||>U&8tgQvT%awnBib?|P(W=cFsd*qGtk@FASS`gMY*@A7fSZAz=qX?V8@ zwef3x!`(`!OLPJB;p(R07?e#C^UxK)`>E-nT`lPRxL&FEUR+zk^g{2XxX)M65~~{S z{4Y?)+>5KNle*WlHd&sv&&e5x6Y|B0#4}-aKYFzuGaO;cN4znN8abj$*G|Xuji;B> zl^M1maK2qlTT&TA;rRO{u!E{CM%0nB5D#ip@=78sJXBSsNy6)VqDwE0xgcTk;Rw`s z>ShwI4c_-t;e8G{qQNa!)p&DuTiegOam0@Lw%(I4qw}rHCgi9C*$Q;I7pbf0@Ed_r zU(+d~xve*&MBnHaC{f<``VHxt|M#n~XEf3s6nJrZd|27eE?U*QW1ApE;G^escvPXt! z-G`xKrYLf;pMN=WZY#&FaO_!S`dG2y{QPSwA=(s@t!QQcM}=?x>lC58qxO1at}23; z5P&?9%hRjM!JiTl2-p$4B$7;E4N$XozTxgfmhe1UaRMXf0OD~p&PYAh%JW?PcL<3p zDq~jShw1v$#E`F-j3iwkAom^n_g@(z zLlh^VsjiawC2&CNVh@%~>@Q;}MA<+lFq>teAwxqZcFxty+FPe)s|Fjpc({WZ5q&a- zT7~>n$zn^J)6J1CY}=~5zHzlWoAxHHe81Ty*U}48Tp-i{gVmDcJAXHeFL=e}gdT6A<>V~V4^eEpoW(pt~r&HJX=clk{3 z2Po~W8AzHW;x#@cDtbuv-{hVwzd1e3WCTg}luCCCl~AqWi!cwxH~Gf*f8U@|km3sM zRl~lRmJI*7=3G+=9lw_3sw$Oq{s(dRU%wy%f3oj$p4E>aD%G4)OawG)bwFe6jMwKl zG=4rW(hv~t>Y0E~P@hQw5i&C%Ty`N;#aGon?i?q1cLRy{Ufu0f z6UkvN95bU5)h|&`1O_xyv{lXqtsMjn4~Td@3XD9)4Hn5 zWyh8;^}inT-?}gX$vQnI2meOMvD<(z4|i-ow4VdU)T*a<7u*{pb-fCZ$D6M^Fc(Kk zZfupO90emP%h$4B24j%M@pN7cRKE}-!c5n=D?8@9-zOq<9qu`w z4ZG+yPiygd3k0d7(cl_<2CTU{7GHq7bB1c4H5wh*gjdT1u7sZAyMse4sad4xU-WLB*JFhBOROiRA!Dg4htE8er*=#B%rbF( z^PJ_8qN2n1jf$iE4a;vzug9j2crd6J=H<_NaIdJ^x6{8@z=(?IjFcyDb(V!%9$I5` zWAj6V9_ z5#FwD9sON#rG#RV!D^sl29rb7mOKWv0Wl!>#ez=QZa!%?#y+{jKb%i-=ar z)hfat*MU!_qP*-2bL86tYO#V`BDPQI-G;D}x9_5pm$G~~k}vBUW_T#X0jSpW2UH*j zXJ3*WIw7DOzkzwvGg1(*7;a=1b*)351ea{;(=YPQQ8+D3G9Zp2=U3r-9!ANH2^d6dfd%w{!5-3?*s2NS6)t0$_P!=$r4BSXC14MnPoJ>uie3YV zQ!9Zo6Rkhm*i*6d!$bAO2CAAoO-oi!Ir%b3HA4u2g?63_{Bjw7`BvvO_)Dy2nHq%| zep0ZEnZS>zJYvwxjk+VYK=Gl#%9d51uD`F~()>1Am3LMN*3b3S42M-A0T5r%k+Xwt=gZEaF^wU@{cknd}vKw4=1X%tYN z%lbu~LhoYA%Wq-|Sj9Beh{6(kOq$#V$MaPKWE1(K(T3o;W9z`<+;GG8C*wFDTaAl% zg&A3_p9#@h2;AmmFFZwUBAklmT9x510vH25sd)sv3g)5QrQDblUpfaUrnAVqC9%d| zbf_Wkw!g?RYHI)+f*8@}l`WGo6vq%QBoNkG=WcdYGxL?6Zyil1oZHrg4em~skrGXtD?Nv+_nbG%4$~#3idEGC9*rcq3(7IO>)UM zZMyxESpWK3rW0{TswMV|I1AXN*xOLCx=FomUS9_53&p#^cT|37Y(3(-E2b!R*|_j| zvZ6+74}R-%NR@aEU5A-EGmZN|e{T@RRSwFSz;XybxFr>2oBjix-m_OfU4TBPduGg* zkY(ya7WrAj1-Q!4_wrn_D{NOgUq`D(&`raj*sm`yFiX4*2jj6oY9lBZ{{0ky%bbjK zgD*t38MYd@!2y<4cNp5^cXS6@b)zqA19gO!jT)$0oLPY5ErVkE|!aG}uAG5!9p5A}k zDg8FMEv4BIHov>$pDlzLUY4QdQA*#G1#9%&4WO&KiMK!e5~Xjtr^EX_@7Fgq>>F>y zZBxZe_F5(*o{a>NQ53gxgZ3M<8P6`gQ^{(WZ^gcfhdTk=3(9i1LCgk1ch)Sq=R3FN zCWuTASzx@2#ONnKkMjK)g!1OiIl{A~C_E%v236sOg?DI(s2}}RPI1(yTJ<62`md_z ze!VtpsL#2M*sMKtUe9+#3O{$KJIPU zMMXa05leLQNm;|md6WN3SesjVSY4^TV9J%(%%stG$1_E;ez!2sg#$HB#cd{mads-+HeHsn6pjjf zKOcxKfby!vkfs=i<&tO?kI-jVa7A4DEi%;3JGS`sbsgi_>8^@v6#X*Voe?cCKP6Cl zJ|d?h8`1pqpg2AS!y7Ymnq})`3A(O)lLB)hFa>!!Ld?Vs<+P`XXwVtu*l&Hv>41=@ zyO$L91F4UsLWjbu!6UwmCS8`Nh`qCu+x{M6J}Z&yf#i0ppS;7)7Ay1gVWWeSo|5zK zk9ZxspQ-t5qg=*bw0<>T$TApp98$Qw^@6rOEWceUiPDOye z+@FJKao3O zOZ(WR3PUZf-$bb*)p0-jhP%LtFe*}(&DoUNn?vN@hA?tf23FJ@|AjK02wD_>=eg6h zlULzg*CkpNBkotWSMdUrPMDcvD|Bs(SK4#dFq+YB)>nP`qS<+mzmPb>ub44=kw6mw zqlaW-Nm*v1);~ly8H5-t&K*J8BaaRFp)F0De9G+S{F8v%`9_^sW(rdiV;fzUU^-Xu z1F`kG-@MZyMDz#HXf2MMXjB4Z{^zyg%7^7hlNYYJBXS!LNCBShijl+2*^s$*YOPS(?+#(iIoTcyXC zg(<&o@~Evrd;#0k@R`UoNb#(Zl*`ABBY-o(v%^?T>XfRn1bkPXo>JyIIr@P0IAt=J z{{?ZPz5E2{;bSxEV=za@h2~5@V|)9*G@w5J!JV(fqodf-eUdaKb}24& z1(Yy|hvVF%_5o!6HlHkC+e2Ew+7ump}QxE%(mb6S>r%?pAuOA(xBCcMTNo5Ko*rBOC|81t#m4kwLH& z!D|`g+Q>B$Kqq&BQ~NB#MFJ6;xsAdr03Jx2tPDn`z+K zv;*Pg^}C=A*`HDeq!1uaGNoO*s;c#0ZIJT?jR)4i@_Q;IxP+7JZMN-cvHl4xZLQyI z`hh0Br%OLSV(xME$B{F!9g@ojw__vu2Zlg^CzuB!hCkZ`oCk2}O&69fHMzfllei*3 zZ$+LW`B&CKN1*cQ9$KZ}nsH^5O>>l+x0>SQMHRH(*;uByhddeE(|jiT<%4}S|IR&` zM)J`#T(J2B~v&f)L+E9)W|!?u(|G}DA}vLuZ&*PaGiS<<(VvH^mEF*8yQiiZYl$j z40l=UK$W$Rc0OHL$dWLN+(JjVZ3snZ#{Wi$u!2#z_J~c5b`x+>_BA&{tG&%uU;l~s zp@qd)IXT^7hX&~lW)x@$vk0>QTU*<$*nX8s#=|hHc8}ciuZ86Dev^@4S#YIE#r(z{ z;2!@yH9++1uc@K_XE0L#3}%U>k@_SQG}BHs?ml91gqcQe@Byrqy>7Ew&05W5ZnC?) z1IosQ@$a|kYC{`Nj-ni1KwDd&#DY8ntPmY{9anT3D#>8N=g|zKQ&zV@9h^CmZDJM5 zp-P97nwf92D(=5s9^85~jMe=t0rF`~-v{la11?vvPtZ-e>5Wn==5K`86I>7EL%$Ka zr;m}1c6Axoy8~a0^XG$I+?)z!2s}$DFpN?XRPys#5xlSi?WmkXLr>-rS3j*{Wmc$IZnm{nDJDIR%uu26sCn47C_FLyawMsPB) zA#R}nV?wU>b?r3Eggw9+PvE(mddABGSVHaOjkPT;xOF6zd63TPUOne0bQ1Eb%l~ou z|MZ#gAn|n?ohC_U*6xWn1 z7;#WQca$l$0)`>2DSP_QN%3%bUxZSbAw4c!9BYevl^X8NB`3jVo{9Dp8@}ub#uAl7 z#15JpgSBP+TW3rU%*Pl(Kjnc8>5lQB)8>g3xA#Sptr@yI&1t%;t*~+<2vQE`$YZi~ z+Zg9bm$!+SF`c>^?$GL^!KnPbA*PQt-?Q$rT%-4ASp^h`V{0kdv=ceKOEfSvu%Y2S zxaYmnb1#J`0^FwW^yjm-6}~zD^k?`_e^RUR-asmq=z(s@Dy*u6p?7}KQ1*k^#}r}=&Xm_n#8Jp|X{b^$;GZ4;+V#YLOv^v3 zvcxCFFwn{Ox}&o3VNjpSHE;dMV8GyB-*xxQ0q|CE?O{So$R_|1ejSjqHn*W8ye-j*n>&;V4;SFaOCkC!T9@ikY@W%+6A z@G@msw`LUcvfNU;Z}u|Irrt0mXu5k|uZK-)Q|BS}Z={?60p%}26j}t)DwXdbK*b~( z5C!=obn-{A*~-=23*>0)#^nidc>VW#9!}tWl$LVrJPmHU?q1N#19Ps$ZcmeEYixrq#xSLN(Ju3-4SW(CbJ`b$`PV=3y&T5GmlPr)_MyH45#CIc_gf`_*0}d z6SO6`fYuY+j9hEEh9E*%7-DwisSjJo)K?gI;#OEs{pw=OV%WBY)eB6`UQ65V;F8AV{WZ{Dxp1nb&QU@6}Mz*Zr3Vytq+|bf_ zJs{@~^^z&7T30ho{)7z2S%@IbQVdk&ff%VMIxWv6CvqF-RYNH*w{D| zWk{F7ybTpH$@`F>-E(J}ktiQ#AE_{u>Rt&&Gk3BH6cgDRbEsb`5zo7gyV>HJ2ON7} ztKKtN1ZfAVKaNdf{%E_Zvr3Z<&2bM_PIP#q_~y}h;)O|#Mt-cE*sfUeY4T(#@@e^N zWCvm16Rf#v{){UW{Ej(4>DpEP!)U&arI5F_!44DWSADZuWo;l1_^#5a#XY9-MIlRD zW|nQ^oX{+yQJZDELq9A39=Ob0WWDvL(tM`mn?z}^;DgWQw+1(2h?8c@_pGzW)_Zjy zkd~tx_pn!$n%QssVSO#$a2!By<~Jh3A5HQ9TB4=RIL}o8O`J}0gunE6{w&e|t|>0e zX$`R%)>m=R(k5tkvPmaGrtBr7fqcpOc?PB!Qj;diA~HZ^sd@Ow$e$bXT;|nVORR3Y zHM`)%u=*$C(d-MK?cB}zf1s#vAJFqK8Z+Y&SrB-AD|P%5xV--u)@4cMl>YLfsQ5bb zKI=Zq?YQZ>ZI|D9lrpsZJ^P0@MVVq_(#w+jUPomfqtJ_^12;}*;*89FBoijoOHyXg z_E~48{qVIE)yTKpM-b}MMxu$QPZra^kbJY*(N|#gJ0%XIJbSe)-H#B`erwS?5Y+d6SvyV-u7$>tC*kUTqmn;Kagm1`?Ok2 zqTDLU$G1+_){YP`x<4y9g8_OMmvg=%_7-x0XQux#-QNL=+)s$Y^gH8f-{Sz%oBOc$ zwubHVZF@1_g3XNugl7WNfE)!skr_BRU^OeH=%S8#gTjqdnk##tiG4%GjG|bDdURdH z{(X6mUZ0bf^XR(pJ*2ZpqPMP_=Ze&M)tyiP&`meUiRI(BT zrTckb!{u+yoIT<&{X+`-Tf}~WRG!~s3$0E`T=Cb}{eH;qm8dqeN`;!UUe!{K01~d3D74ny>wMs+0mj0Dcoe-mR;3h~3Mxp!F9|TcK@9#RpG266 zsuDIgNF}jqGK2eXstr+C!ZXi`sUOo2-K3*_hPNlOD2WUgQ?8HT_F4yn3!&0)RlQro z#*iwbPu-~Uf6K-4Fj@}iIEY<;{JtC1KYLLOdGvdx`kT{oGN<9vNkI59BT6M`4)&YK zKZ)z{x1iu7$nZBCO7ZWcnq9T|yBt2@#}4kl8Yh89#lQBV<`I50{rj7TK%>szhXTIo zQ&ewyQJfXLlX(zq^6n(__3=B2`({j7j#1Pp&6pSUO*(C?w9Rsf1fqHuEM~cTqRwWz zPHlK;gs}S7sB@yLq4xgetXob!s;?vNq;XLtG-XvR(#;#A4Q3Fg+`-Y|S-hE#}8>k~QA;wU}4rJW|j-T3mO#yy*&_@ESHQJ&9Q~9HJ>VZ0XY?R@Y63$-KGm zX||Ur4XRIRxblR!cx0h$lRRCPt9r}|6FlqUs+F>n(1&|#^&}jyLbAM%)b{e z^_1|MtR75a?a*6L5%6*W)kJse3zUx-ro9hG{OD@_3|t0gZM7^dv)8JqY)~z)xze?z zHPH3LwlCS|{@@Cs!#zB9=ElQ9UH`7Yjlv?6V`!WvqiKAP7wb206FDC%{P=NbHcIi{ z9F`26NNE|YjTo%U37rw3lyuV8oklZfRoSocu!z>y%?hiTSs>* zPHRTnd5zNCzsERKxC}S7hBUF^YSnz|&!C&D47^Zbl}4r00-RjYGa1(?U_Eff;kM$@ zCrRRyfD}X=DWTI$hY%~;VBFrQQT%os5+C+Jq=p`l;R2lU`)xgk<8MbA)%mqXZkt<> z;e!%VG33+@FSDUXP2PEqh&p1Wo}*pj!(@Z-_2ibC;WlaM{C*+vqoLkC=Y{R~Ix4kR zl~+*v-L<1R#s2m;&{ykO6mFe&?C;{v8TuLf1K-Sr!i9ZDiHo@@=I>o45p`VUe8eP< zvsqia6THPNymL-k)pS=GQo36>!>$=&)tF~?geDe>t^1bVTz*UBJJJC&@aM{Fi@06) z=v%zY%5ltGHS|l-Jgt`5*ZF@R#L^qbdr7GDa#x>|b9+x0?I^`0MZp&jFH{kdg3 z2hB(yz%i69#g8ga15Zr|e(pO~JAJUC^^Z9dDe((>swkI}K~(&k^ac#y?DwA|TE;RJ z%W3G5ivDx%{oDBuc7{f`7{w|^W2K4x+cLAZV<`kdiJD!-eEM6Xk?)2Q^ zxVw&qzZMB)a5+NiOAJdqe&O0~68cu}`L^H*2Y;rN`BM?6mw7%Ii0;eK4m08KFJ2Zw z10qq9gDmX3;#bY%+%`o1v3?*KDQeBwF`Nk(Rs0UI6fR57Qwr~ah07(SyO_I<$fk+y zp#^BnPWtwfp;s4ezHApL3JV73o!?^p$44)N_&pt|g<&$E>3)Ypn|BsmcRtZFD-#Ee z3{qyfrPJ!8Z5Kq=HFaWj7=jBvq=c&fCjPJg-~X!Vfl+;&kjI38@aOrzB2#exPh<+f zp0olU2)_>y@LqdZf_(tlxj#a4;y}|80`^~mcnDUVK+6+=D)C244q#d!p#WS9bU;rI z9TO-6f`*BOfq{vEfrX3p*M^IQjf0DWjfIa-K!A@=K~7Fi0dOw<*`5IOjAvNSNN{mU z07?cS*?+YEKYsn2YY~l5`rkzEx)F;0;aULW{AWXYiU{yQo*352T_t`l$RiHP&~WcamY zPfmYWx+T6Y&}KyYQ|$wguLBecf#+Y_6TGL-5rN|%0mVLE@DjLa^1Vu+Lni!JiM27u zeuNprOl_LuGjt3-sb8BK1;6sjlZRr~6Fp~>5Jd31_eBINP^4l^vIVH+(!A+%`kW+k z4v3e}_@#`;JCkCq&EpmJ*#Xi3*PK8v)3iZ)6*j^)SE76)t$iP0&y%(Y! z@DM*4^6?QkmdnsoB<(>B|C&Xp)Q0TAP)2zgTvXE~De;sUV+2z@4p{_G#i2p!E$4vy z53d}^mV$!y?gI6d=AGfziD>BoH`IWBD?(N&hHPAf=`Kp)3-_&ixMuWJ#t__61v$#P z7%%wS;Y%T&GmSC*n$k1%+B8xwdMQsr$&f2Q51hmj9ki2zGYStLO3YW|Bq#J-gP>xz zp9*@7mIFx-03STJdd0}Ik^Fts)2?LxI7Pu)Ta3#27gGpYPr=ekS(;Y-;WF3A!j_-! z?dE*&qvf?*5?Xn9g$^30^JztMH&UC{qYL5BIH%US*=8b&Y541?1PH0XO)P3Fb=Bv1 zDv!pbwZ;Gn)nzhubaWPTyy(z2Y6v2Hy6E^(aFbnO36<4;-+ihUVq#7_loL$3ZvD)v zxhBR;f~R$#M2gnl?kLx@;s~KFe9?YW*%Hk_JN*cSLe_u8y=7W@HgJs#PO!~KvRiI) zjBicOO{rH&%f1kcZN%?oKd9}oQDNQjP`8lsO|ce$1mpC&6p%E(Mlo06de1})KU3DW z85~tYzY$nE{q7>rQ~SDMxAm)IevP6dL4+>eHM3VwzmG~&E$)Xf_2AMzF5`E{g; zgculK+pvCbKK! zgS|lNN{Hc|^yQ&Lj|8fQ;2Od{US`Vu;k-LQ#er z9z+k&?^}3W94Z@Thy9*tYs6lK$f; z5o<33R(Ejqvn2tTlckNKoWpwjn{kr zO&_{v;(Txl=N|WoR_R%Ybv|tXv}k?zr?_4KobH=!$Oy#sd|2aUm3Qf-n*={&WTv=kis@7{2$+I{I0?ozTbRVAeJQI^w*ya zbza&?w${e-wpk+|i&E@3IALNwlye3&SVhT9CNVj~b@73NFnh*+tHNwsulU*YBlF?J z6}jdZFPr!CShRS2Vu&>C1Pa~n4P5e_ClickJu1rPYx`q{wN4m5!(X{iI;7U5I?iS* z$IOmJ2op8h%n2iWH^Ntgpk%0ffa>h>23$N-byYVDqq>s_#HXmlB{lLcer z93lhZ)34i==_0}hU*x4bu3Oq6pcjb(1M4Y+Ks~YVx|VeP#h>Xpo?N{z*Pk)O<1wt} ztSRw~Z$PFP?Ig=loO+#d0J&+^5rUpHJhpRQE%)!bC1%lb8YqX9CI}8R2wRE~#2fd- zG(8`)YX8_fs$w!D0=9j3c<<7nY}k{@znSo&NGvjJNsAe^Z}JR0de$*?0I3{DsPjrv z9dFf+VX^WyQ7$wqVtKdV8`0u8^6pHavbw_P*`Win5Q9iTjuQLO4Bznzx~{-3Nq?0aREcHGAvN`3+a=?Vmyy|`x>WSGA6GM#gsKj?n?;y zZdFj}(^NxKJbYd#LLA8~jYG4#A$!ba212xj^X3cIuJclhC$p(NEwc6%hM@rooWGFK zwF2g^s!K3qo^lJG z=AMYFHoJ?+=;%wMdkC$^lg!qmgFP*Q1X%1WiaOJNNK}iz^n9djMyooj!Hzk9fdZ<`T_k<3C1q{h6IN&F)s_!$^+YYj*43K+A<{0JUiRy*k6}; zvf>^ikiqHXDLK4TYCJ~F=KN3_eH}yZO1c#8!SV!0x`_pUf%b3#!I@i*fLM28qW%$e zD|+gbaAV(QihE^ZZE^TzV1T`qjl{I`p&O!iokWn(&Wu2FmO&VIX|0i5-{-9U$4)7^ z`mYB8!je>ynrHs;XjM`wFFuCxzNtY7j>ZCMV&uAY?|=7m@h3EXJHYCKzj3dIhn9SJ zs8k_hPOfaYgJG;UUcrf9 zR6TZ+?|oU~+*_uUZDOFagJbHHL{6jwXu^>=MQJv+7;)5d6KQE$Q>tmaPJHi((oWW< z-Cud}rNxN;^Fz3^hd$NXTY|G%&gsh%F)ixplJ&}CsuAWF(EGEuoN*jO9I`K|GmKHG zM)NFI=9=RM#1uB@9S9`}re6|Mb?p~v6?A^E{2Uocro$mD+UoXFrwVb{ek3+~2|l>A z-*h@da#LxrW`nypaP=jho57nJ=Y>S``Wb%Gc)C9xB&x?Wk6G+)^a~6lTh$G3cCdKf;nO2%&DE^L4IV z@9NAZJK0}vyt+k(7NYS=Zlx?Y+`Ak&zE-&TRlvdy1orjQ)SuLkM?8Z@3uKRgB$d2C z%(T|W>~{uWDS`R|x%0skS z*tIT+u=gS*O6>0HQYu_}C&;9VV2zMnrvc>AKJ=oL6wR#*i z@p80L@YUF+ObHlpA^E_(z{Eg4E}?DWUX=K5;69|v&DK23n}ahyLCh0m+q{VJ{YAnT z5?c4@mXq>h1EgL7=2S( zKI!Gx>E%WaD(lB;`Z*o#A#x#j6K-|Lm6qa_>pbDcm+=W$NMz_voMVrZwV!C%eyukP zdG=NvomF75u=p+0NTkO;p6AOm!aD`nHsjdOuX-~oe7rMrW4LYM&TD9Nsk^Xbe10tj z*$ZOE;9`Q##wW63=$mI?MN#)^{8Rket^-oNPuS)%)WiII9`05%o}XKW!@TG?HRpaz z3yq*PnPowSM_!i@&Jb-Jtc=ii`S~tWryqiM9US|v$z2?d8DKkeWmlgO0!LK89aM|W zWn{MZhlwNb_)B|dxiq5T^fVf|d3ZtG(v&OC1_WSo#kQyfiTpacOK%s@_Q@y~ zV&-J~E&ViyDsDlpY63*(vuVRoO|4dxzHwGTyfGK4N#v(9Dpri!GB4E9)Z7>W$T4|o z85dr2W0A~+hczvJ_T2Mn!6D{5ir#o{>89nW%ljp&Bex+|TQ{1m*iZphKF73ueQYUs9&~RpjC#Ia;osnYlmh;BHHPE7&6gr(@1hb^it<4ve zzQ|Ol*hNSnYTd0k2z4w{$!tzI7VtUNB;FmNcd1Z7pq(pi*G5!|AoxZYJ|sv-OAx{J zigcH-ceNFn@!jFMiO0CF_9aGwDc(`dFYz%4OrHrK2MDKCQ-oRxkuDCphq$h9$CJ%+ ze*@7IO(VjVGIIU6{4W9ofN}Lp&c0ji#4bqpShr6}!zYwC{d9A4^^Dr)3#;6a)p!J! zhxh+r@2#TZYNBpYBuIjV1VYdzxI=J)G!i_}xLa^{*Wm8K-CcvbJHg!>_r@FR?{xli zp3Z%`k9Ul_2Ry*2>Z-k}YOmgFt~IAtC_Di=j=q0Ij>a;QwjXv}-#6)CmJq$)uYdLs zUC}0G5|*8L6n*TNm!@gSfHPXjUD>KDynOcD+~BD3;uFHkV~)+e!d%1R8EqwC&=Cuj zb+idAxFBwwTdCpjVP>BmtX9TMiF9oZW3Ddklni+Qysx2bw(goD{b{2{8}H;sMn6!! z0ySD8-Ib7Y;&-)RMPCB##Va$QRi+* zZ`PU7wr_P-z9YWWR7?S_yb=G~#f&=qVY;r7c!62cAGtPayWi2-q`H26-h4~{ET<&7 zw&4t`Qu81?;TwKYDv(b&=m^g}(?D}Lusjw|+ z%b?aE@U})!sj5@j(=yVQ77Xb3U1)CY$UeADQTPLLK-aCg?@`t;d+fCCVUk(gQ6`f#n`8RlZMAYj#|Sn$D#lr+Oa zMAmEPnawxc*^sn{`&@RJa1-4Q|NRFIhLCpx_gx`@tyEs+G6kixZGj3@adkCWZ+8lH z-9Okc3sVW}Kv8KQIdN#T*_QPNzS6g%KX4M~bJ!@D<4~xpYH)O>nKu7v@b}a>HExn1 z%T7hMhs7P1Z}&Ez@GvRm7T61EA$$^cKSE3gjOL<~M4znX84U(Y0ZNoss&ExMMs;-g znB?b1ENSGxh%=d2$f0SR)8B$9`0X(nuesCrh)Ev^ri;xsEifZ!w*S_vIqlwec;%C6@ZKP!~9fKQKjx^4SO!_mrKy3$*zh zpBE9_6hS)FP!m$rL{si5@YnlYRXHv^KQ;0DvV0?EU$1r+3U|X^ zq*i47SBC~{7LwEs+>M}x3Qrcwldw)?UI6p2~X zYoEoC6EX;52aWP-Lqxwl)J2v(I4_Etu+GP^R#-yS^~`)H?Sc301jXB z7?Qt!y?!nbf6!h}a>Ymeh&m^3$3ix03zzk@O&zd!PlqB!mbDi9&fN<8^>ui3zVByz z=jLT|rOhSjyl8?Z#TRAW=ZcdW1_g6p@&6E7qsc3~kWpeA*?H`YRL6tEoW*5w-o5XZ zFL@*ew*Edz$vq?W$683Ln&7Pzz_Bk%=TH6g^~6$gZgnuCIRmi*Cil9$Ks!ygR9DbC zIu+eAprJWx7@{4({5!fhf>2P!U}4*;Tu<(GFoI?us=n5=SSwGqd?$@1OWv?5_#KgE zS5%lgSV9oDdczh3q+?3aO>1jc}45$CfXjiwU{2M6R~=RyYNVOLix zEd-{@V!2@6W9UFZp^^vCM9@-RaH=}O2|4&h59YOZXT4q4zCL&jCRO7;Bv48xEw~1_ zs|v&<56vZ%)oX@#XkrSH;Q?tG`J-e+q3)ja~eCXGPhNc&@k5b@Ah_iEN_MhMq<<^IR%F>Qk~B z?H%4n5UJcIBe~h^r>p0x{bHd$pxeOmFeY~?2I_nNBc@VG0-+`&u={EFsanOKJ2tny zX~(okya{6^KBE9x3&5tD?&-X}M4t{;M+??)|FE7|DG;ac%8jQB{b3V`N*QMp8Ia@EUql1N6|q~hbGM25H@qPTQl_!xunN|Kxftvjam zp=-!*t|k2hO`?3!vP&+fUQ^t#|%U>&p61${_onY^$TlZ`Lb>YwATBOL=XHX4@*4D3<>C ztLu&@`w~3%s_DEBWXrG<0s*ZE0&;e))@&lM{rP00GDXB2br&mD???3ys z6I-|uF}<1zqZQXQb<;F26)=pri9MUrJWMpM>50clWNCpf$lg*VC}d?@ex5s6a*MSq z{203&I=0@^O8>2}PC%xt2t^v~>*Gw)4iui<|75aTVvx_=oy!@`2zFepa7erZFtwJKpdm*85Oopp7U+R($l>J{Cu zSnZsE|PR4dY0Pg`zcD4XDP3W z<5f*efz|J^^1TsXZt$1pF6~>n$~pFrGU|(x$6?;w$j<9os5!a4s$ce07cXc=M8$Xi|Qz zJfzmRC4=d4b;^4$WoIoS$LQ+jkuFcF&^C6fCHGvugI{G?U6=P+{-m7$wBw7>B&?>2 zO8X@GdAgPauZFn`P0z;egWg!{cI9~Zm=0xUxy%v+n9$}+h{8Oh?wR`BeT%|NTi3pU zO9gQbK^)I)uaS)#dIHx+4K!Cr1QN|KtukAIvi-`%lL5Swzx`$#P1V)OHKYUb^@Rx> z84>ezZ@VKAB!6+v{)MOAW+oD5r>POIYfqe2VMTU+S)q!aXKu+o`6zZD&G{TT?VS~i zM*Wv721xdXnPFBa5XAF_c&Z~e+BF4jno}@-CNe?48Is&jSGze%)jW!(wmR$b6-Mrf z_acn(2L4soqU^6s`JGAm4WW$#o*g#Didz87UN%jxffdZ!?M)KOKy+!Ew1T$AajXkJ|+~Mp0MxM3(x> zZAOy8MPjc8x5}Kxl9&GlWn44kbDz#zqZ8#Ux_)){KoH~>%6f4AowVO~P8Hdcu%Cf*KSWa8Wx3+rl$WIvoyiQMyALmz*UWsg|U=c zRvGXVVM45a9;@uLp*>q`8ym{FQJ46p1k<$l&SNs#=Zt)AcXJ*kg-Yqy&+^((hUbq8 z1SuCfOqv*{USZX^x!G2RMp57DT?j|t;0`1R((0T<-*H_~jg&s`V*Us@!3d+Lch}>j z^-(mcNU|(j&BmW|!FSDTX+LfDoYfwq(KZPCaP(caHhSZ}o}P-e=B|;nWv`?TMSQcR zc7wOFrbIUNAZH7uGB{sCG?qf;!sRyWFMauNg4Zve*W)#inS*hxJ@|yHiIwRCE}mu2 zU9`tJz!@h;`qXd|wZ?I$pst>P;DZ+BTBTF~_luOuIqPS&y!CN?A(z>(Tg+)PwH>br zSu1UVQ^EX>6ixaE3W~aS5g4|X_OIt+hV|pQs!eSDYv4Xja7&BVe5(d&8f7xILc3;h z*!)*wAE4BJ#e%uf-~j6819i6O!&gkTYwe^5m7jDf$DBGu-{^r{Tw6OQKGO0`3LMvS z40}Ea6(Y}+y2E6DbEUslCsGGV@+0=l$+2rXK&_k)dGYFsp_4*RMMecf`cB#bFNCH_ z=3^k7#E@`7bW@Ql(zec%KVOMmDb58%1UZJ48!NGOyYnjPy0hs^sgDZ5oGVx=^a>&* zJ~}Sr<|oEHnay=m_u%{SU4!`TY_*o`@0g$;og@*q62z@b3W;jJADOjq(wPna7IjE0 zqWlt(_%I~e4p^iKN`K}$6LAflr+opz6`3UOJlr3z7mO#KT^OlB3UEzKk+K4B!ZEGh z?AD=)KKlBm*)>h6_4J*wps+`~Rbkqp^n>d;=j{wNxo@kVm0N11olR3}+>reZ;fgaN zN9l$5CVP@0b;X0mt9l{Qjv9`Qolult*t9n*kE_eEjESy^8}7BW)J<+~eP|wcBG5!f zNEo!zy4sO*h2C2h=vT{JSSqkP*08C90LTqi)$($YadgWTA7&_xEEA_l9C?Lr@3K{F zbQPJ2SZ(f4e%`zvCpi^RLgDYpE#2sAQ&(_y@2*YrrP-nAZt-Wb{XWiEAf+W(Vo~xg zOWh_5XGFSJ{K786r~Bt7+umWFcB4vetxx@XBflIj-$V z7aP@OD!bu>89Xf9SB=b+Wj1Bxss$R?=qv{rq`IV!JgbwjUF=V>oFdwNsuIzaV&CVDLlCVVBs>GLO z_3bticM&8SYzhbMpyubz)72+&=rB50XXBMMosOnv;(x`Jq(umK(we__QoY(o_TI1)b~kdg=VT6Z&b_Q?zX}HMO--(wIr|$1Zwxjdn!Hc29B($i9^; zY2tFfdGao*uOAxy`Z=&kS-`4&r2o6^2b%-Q)|3-{wy|4 zd$VdZmNbTPjhN_v2vMWHWB2a$`$caY5qyx+kNBEg5T)IZzJ$PqqVlRNdepV%GYD*l zN2i#VWTY|jvqlQ%-yz?fxMo1N@^dm<-C1po6?nKtwE(og10>o6-*z9T)wqr2fQfT) zN~u(@IE#yemGj;$Nw85@ui!nsySZ1&=Gw2)k)$TD-qij=!?MKU8e0A8LaGFNpexkE2SUp2V*4XkV zfA;RZnyYhB5E*|{>uI7S^2}1=e_u9F#6#6>?PhD&e39)fx6>3~);$}A-QS8q<)2*c z9w-xwC0AOR=kFK_zVI=y?JTMqn6vRpi`7ErjMS1keiJ|3KJOm9!~i)JK#0BZV(Rb< zUi&zpqN9f-!nG^ytleLMSdkOymN+<@gJr|%{RDDy9alWF!2YB6POm`N@8Abg&a3Hw za@ZQzFtG5*_rrq`Rb39zW!;9DML+=UZyPu5w0_)uC2TmdqOZPCi_#9QO;Kmp8C{#9 zN{BN)+K`HnLwFYCCenXA-S`y*tu}}^hU;>$$Eg}?&wfUp%G3h>>g-_v#pw3ze3GgT z1J%7=F?4@<@I0G@2hG zYYbz3;qOSWTFXGX`D&^XzUDzw9K>G!l0FBgxgbBw*vH?w3We)j33fUvTf7OU#KiLE zee^hX1+>aH-oFb3H~-XG=d_9FXo`qXJ&2dnzNG(}P1awu>buvrw46QQt#_s)Cd<`X zIk87pBG=rGZCO4kjz6bGd`GXVK3%TsEqh+k{%dKGr?#K!dAwq14fPtFCqjF$*i^tV zkpE!jXjpSo;}R2`#9ewiGCc2kO{a>E)G%8f5RZXsc*g=xe-k6U%N2#U+1`OYr(iLq zYC>12Ve=(?)M|E4mfyv;nz}%avG$5K;Td=`U20|}DLmbhuytXdl(((u{hB^MX3bav zr}F<5`hfZ?1F==ho&X^08(#*Gp0%<$PwCovy6m=Ob!RAXQ8GDj5{H%q^Q1n)rsn{Z zw)R~VL|&NsYW40fvGJJpFh%A4*poSpP};Zs%D;g!OE(r**Icw{5WDA267NvTIzQAJ zfZJ=eRw&@hD40!%hR6%q$J5(8lp@Y`LtO8hyQ&=H^D1ziwe}f%rKBvcCK~@ggsOt4 z5uYGYex<5;^D;&G{P9OR=Xtc{h_+7~$`?Nlh@QR&{E9ueV!k~YcRJze3w05Bj6Ez4 z;&dkDz3ti1?*J{73-?M1K?ILFy?aQy;iPc=36{948($YZd7@P#z3+bJrM>#^k(RYj z-^@Lh|AuqXHT=es@?|o*m%d=-xq0PY>z=h)t*V2`~BY(NyvLk?tktP5dQuCQ?>oSvg-N%A4z?P|1@pk*FSP2 z1Y{(ne?RaGp6vDp1^u7ID$2WmO0bykFflRSVPIfke|V3Djf;(e@&40$+>dzp`1qJO z1fM_Qeg1%lkM}ni3XH(RnJupJPsnCW>SGW#ZaSOh9SefuYNlpr>9=~^Wc@x zmVGa55Q`yi>O8;gCV1oK+zRv-LYRtf%w_8oAh-)_NHVB__2pClzp2)i0RZAGXF;v@OnYkVe9qiuK#_H4M<3s{CvBFUEk3fFF#D9QsohrkP52No~Ipek1% zHg7M)x16#87~Y@Zb)gYrqEoMdKjG7`IE6I#y2I~MOaxw-YYcpma~|PPLK*rhzn!5g zuMfl552*J8$4&b|G~p$@A7$ZWSQWj2FymLW{}51W{jRv?{gtgzq>q)BbszZ5VfgNJ z@WC^3{kH3IU=+pr!DMgYh4?)EaQ|0p40sWDcDPbgKTfxZ=2_nl?elx%H=VZgAHvHg z_}~LdJbiX3h{J&bg7AA80YW2AlYHnkef2D>$J#IKuV3gP252z4OPtvMePe1qQ+-=# zbigaABg*6Ae`Z?pVjJ>dq`3;^Von=vXy%2pP`Q8q82j!h@VMlkDduG%YklNVP;GJG z0}ecKBD^}^kwYXsbPjG`b|Jwo4Ffw;g4z!rl;XedhT)1)OfRBTs78?=Q z7f#)f8UgzF{}AwoVy9kt;nD4Z+1OA$JX!!G%6!}NH2}Ul+c1%UeVLuDC9ZHfy&vXX z#LyrAI&?+&T>#)O1s}Csw=lgaBtXHO0@(1B0r*;3tg%SlRkdrIrOo0IGWi;vYcZw} zupDv}y--7nHs<7Ec+){*``=-cp=etdOX4`a@I`yivAuf-(mFhY(g;2$kKA^V|CYfjn8*!*$ly zz~wq*(xo*ngp*tCg!z#Iz zjKm8^EciiyQ>)RNYr;2_HQWLeFRT!_wbNwbE7tqZBrZ&j79$)o2Qo?*PH!RYy(REt zgYj>#{wuDggKBQC!-=}!I*$Ky=-QlPX-YI&VZY~0o;Nf{n){~Uyr*!LM_;0UpDj+? z*NtXG*{AjS$>M*yucHf!bIV%eSbC;=ZT!XaW`cMKKtbRC&&Y6W;)STwn>H_}I^*A2 z(fx@ClKCmH?W9KZz?TD6Bf~(0iIe`%x%oF2P5_3$r>z@0b6VI=+`oTx6&zG7*6m^c z#>=oi{I~-Q0O_Nd1EEZC8-|w+_vybuhMV3N{#QT?5So6n8~euWx-4u2oHeOByS_Wz zXNMf00~K=yyx_x4G%ziM=MI1cO~N~&D8P-rQb_zXUxrSYzbp5^8~bmKrr@$gXs~xX zaI4cx_UR+X0C%vbabEl2)MQ|*h6E;iRJ2Bk_w>UzMXoekPSJKjFf__oRCB=pUe)qB zZ(4}d@%HN*AI=f@-oMCs#}M6nx*GY1hi84q6so)3IQ61L^#1>tPQot47n^W6=vL%* z?&rS&S~86tM#~*V(GMe%SFn|QK=72VFz)FU_veA8`zxwXkQ2AB!+0|Iir*`de(@q; ze-)Rz;xz(;BGF#OtKnO~X+~GpXgOx&RdMZ4yBN70^hLD_~f|o_0g)RZ0YgaE_1b zY4h=1_r|%#lXv=-ewZWcT&|* z@+GovoJL)K=@d1{!nk{X|8XokYEO5=Jth2MndQ_lH!YvZ;7vOaK+jxcz9*rk98k$7 zuGeh8yvudFSOeMW_xor=m9Ub$q$rOW#ywIA4EfHr17n4nRk;)GMUFdBmswL!h|%?* zt|ra#?#n2A6%F}eKvcxZFE6>T1}0|}@KhQN`3%TnBxpP4L@E`w=jE*^o0^|~16`Zsmgsv{UW(%@y^xmgq@&MAnuh`oNXzSd zEv1$(;TmFd9Cby6Xz`oHirEgT>kZGV47FL-mM z7Pp6~YQ}p|>|fuJ-B7LcqaiTX(}{Ilk#ercu_9h2M6vzRz0#`b^jQ7U_APCZ;riGx za5lt=-<_x3pT(0h<1_x&~<(_G7eA`t-BQFD}v^)m1#D$^QAbkGIYYrV) zCABiji9XH-{9BsA&en0IEdG|t2;Y#{JJY4AlSA$UZrs-sb52Eii+grHVui$M9M4J0Wgl>xpgK4te^S2H2eV>emTc_qY%)JwI7_HO&WfZ zBE%%)1h)XpcO(0T52`1=UEnIqN5vJH=oRj?E2EvP=yirAl${l#OWbTBJ*OPcE&XT! zM*ciih;}FB&rf6AOho^4y|Ue$m5d(Pw;$3a@WEscz8~mvDbcKbCMSQCLI|89*;e%< z@Ey-ay|NkneehR~-O4NV(5!Ab+g$t|rGZLx2|^}z>s^J4ao5c8HS56(PAZHEy4ACK z_LEa~dI@RQGN2Guc`L{BW~#nU05kAdU**LQ0u11kEM$XV~eF;%5v-o9*l*-909YYg9}pg|s(jnIA=hGLVzc{D>mV zYY~ku#kNT7Q50J`Trbm8oEY=|w9z7{=}!LLjR`1D8+RL2Orb3jA9kyQpbd2SQbH?W zeM^2%d~m-9XQHGghD&SXx4{`}Lyr5a^c z74NlO&`RI+@I;P8;yJ_sws%DiSnPH}Xih)X+%8tGLc)6Qkb_;H@-yGk7TpULbSWjSaBZrL-g?%%Y0^4P0q920VanYw)`p zTjp5EHo-h0s=N%lZ`5bHXy%J~3KXU*cV?=kCkHdXza|@zYsL<A3ZqeBxpn4xKuQcDR@55;y>Y$hFQB-e418+a;;$Z#2xX~?+c?kKRyMe zq5!liqw6MR$yU=D7Dxxq8zL-)G2(E*EniSE;ETn)8#>2w)Z+8aJb?*TaA=y z3@#n^uQ%^(Cy?M8U`$`%I9D_|z4vs`xn960y`yPGrd=$RS{7=w^+5cKqL_A-{X4ne z2;-NtY$r9WEL-a$^Gi9yp2vUB z5J$_-Xj-MoOigc0hCGfsgE^xq87;lKLw38M{=3W^eZBx(1iNNOmu_Y(;eATlan2NjV z^B0G0Ev-BR%3samW2CtbpOTx5O&{xh8~=`%a$wprLl+2bQxi4m)|@6Q)DAM2+QScX zs?4UGOR`H&Rm|FsI8=;Vhx~>j3mrH2+au$gCY8LRZgTo6q#60mGL_%1jqYCM7FKIX zjJph49REcwy*$>rYFnGWtyp#G^-xcgT4Y$wa{h2(Hf$NkM^n0zIr6ycKV*60>C72D z!yXlrT0A0HcGNmZ1(mv)4bqKz&Wl3+ZjCQ>E;UQ_YY*lkZt^8;3cn=IS~o#H6`b?- zkZK;KpFKeIYJQH3CSe2oDO>gL9ZIC#BTn%~u5UxN)97iQ&!rOHMu-D!WRja%i*NLL zH>u~e(J5lsj~~#fNrUOAPN+Xt$irh9ZHJUf;n!6X4AgOu(+L}G_FyDNR{Is*Zp?gC zk^b`vKh>~YqxJ-06#sAM?-c{7!%_rrGV_;@P{?q3E^w+yP}ZqwWGQ8!=}+Ce{kkQj zTpKL{Lqw`wUdl#s>?AWH(xchLc{7Ap3y7A8O%4q@`23m(}`$^Ygp|@=md_sW&fS&Z*_fGn8 z$!eaB`IR$k>nJ3lDnFl=>RxzW%LSaaKjL>Zvz8wp``_yd6ZG8MbpQoa>D@S0KR_FR z5>~_mdhchwm2C~@D|d6E-hK_$&pXwVgFM`~K-?lH)K&|+LtRjNR@^3j_~bP2M%<5U zx3E^tdRY{-_z$T`rLx!Fy>Y2xNz3<9yqSvm55aUTEGUJDICA7sNbHLI$(3unixxt% zxORSrA)!fvnH&5*in24^jIFSUC=7a$Mk z9Q3}dfJ(rI;51nizj}Fr?UanM|b;|wlDZMje**#Gn2Z3MhSd#oH)3M}O2bKr`OAyZOz@P|jCJHeC}Z}Jl-%>3*07DJ87$-c(5S&#Tep&{9-NI^y_RPOSKXMH;Sw-=-{n+2$u(#k{S2WMQ+k zm0ezlIr=!S!t*D_*Fm$)SpqNG_P2fj0A`V4jM<k&Y2wvuApM%d zc>C&9firYEQT`wh0#}r){>?qn@lct>gbe~&&d*T~R0Lm2wUhef{~Y%$g*7^8yeqM_ z5A#Y-Gd`S6n&cFpHyUI=iluv+?Q0!^3(B5wX`2e#(=(5^PRN`M?9`n`I13{tNLUs= z_;oO#(uY&>38b$Suoy{Apz_aR1W4^IsP4UU_ckgkG+eW8N^n}LlI_^#Z!Om|P)=|! zc?=H0`>4Vki3#GhG+@%MlE@qRYcE)#-R}!%UAl8;W(Iqh#0Lb6kG_;z7rEZjSF*gK zTHZA!x;ghy>5y$3FU@R{zNRjs7i8#kg~~+1g9JrVrG5zVR`VS^5VyW`t=zg<7iLez z{}7np=zW)jq0vlB&T+Zg88v?E=W?=ef{Y^~08MHCvomSDA9h_SwD$ zBNKOnJV~hTd7c_))d~M?oyOdQu|yNQiLiCp*Qf*xi1eC2h25bUp8iu z4t|{3ea?$s-c@YBk$2gW@{9>HA?fH3 zzyV`SJ3RChY0>oOM`*vB!A+e>U(zjFPL-3qL$^wwJhN8*kH?Z>EhKj^hr2TozrUEW^9uOq#ur;8m~joM*`iAKLM*?Qav(VkTLY%V;mEwP@teZyY(UK=@? z-6d_n#C~U|fxX#eMnZdlBda53|Wly%W&ob8GpKPEL!@t^mX_|S?7CVAu~mImMoL; z%K)aa|9Sl5660=c$T!xQs*LkE4}xFbDfTb*^bdCctw)}n=5x0)^KZvFgZJ!~z1!M; zjo(GbKcG@=JM+=z=wQ3oR0!Z-ne_obG9%2~ncGsiJXTTJv6wuS9bQ+oB}W|v%_o7~ zC-nbNPsD6lwQ5$;j(%LDy@Ug#nmCH5F;-J9TS0nskoVm!by*a$G@3L)E%bC7*I8K} z_lH$Jb#EB$-bZsZIFC*$F23-WxJNAamTC>#2N`?UcVDEKJ9+;*WZ45HPawM-@l6wu8G42;)4Y* zTc&Xcy}!sw9!}5o2%R9H0XL>6Elof3?<@MX>wql34caG|OJHQou)tB1cRY3HK(Av`9Xn%6Ym)IB=M|Aqzf-XCciV^r5wjW{z6qpm7xbEW>ht3Y{QcBtJ^3d$Xg|l zHs+8uQ2FsN0R7;Px{$5Jw}nDpywS$d&Fv(X?Z+H_gq(F#S>HHY&QP%BWE8wWvQa1j}~d% zc^G3Q(Cp%}Rd`Wg)t8*ZRHy}r5*4axMMj-9MnQYK;txxf? zO;6q3CNI@{d0U+HM9NwEx9B`C9uj!}3j*i^hOB;y$aZNeb4qKpDh|3}H)C>&ao_fQ zcU%L<9#~N|mNu)5U|R7-zQJnc>hPlfGgg5k(bV9;fazroKJ{$w>eyh`gDmXyTBfgZ$Rzpa6Fiw zA@(L6yrt5TnQ)olnf^CnJwLOy_%YN@f2{au=Xc@8iqA!AjaKNS1;|_@tsv% z&@S?3dhMeNZa!6Jrk4sR=m-H$Vu0M`bMiaI>l(ubU-*_YUtdT!W8Q6?8v);Q)}5jw z0$-CwBhw=gU+Ax5vt;4d{BWPz1 zLqsbp(NDhW=fVI`!n|WP@O-fD|uX-zv zRwF(5;u{oxNV$<9N%!&&gDh`ogAsup_uvxcgd!Go!=8mGGjbg3C4I>Fu%~S}c-*Sf zp(ZBdJ=2UuJ-V^evh9%Y6Rr**{xjcS3l)Y;h~P2r`WHg+VxP`D-z5N+^XK7ZZ$1}f z?E1FQxLBq01kf&M=|2R!Xw=y)B2cIu%LN=dN=ZxR1jJFnk|2-q2z=JB41_ENiZS0* zOQ`2h?-RXpzPs1l?_9x}NI7SW^1r(SOai_9VK<3W)9dtIu3(edAn3a(Im)-&{?NQSAhyh_=EN+0*k_}pkuEDO%y5tTBuV6L^@ z)Z1efvg^3OyDC|`;MJ_YKnEw3)~PQdaFj+wc_OZr#n)#VTac>Vr`H` z|5EyIzU>J1t;RX~M;yH*YS_(;e}Fg@5fgN~SFBi?7JL>H-D$^GFtkz)Z{0ub#4Oul z*%%TIPk^g(G8!ldvJ3wG<0(1ZNT8Z8&FC%N)U)i=sXow>D5{A-;tQQmRRf-N;BCc> zdxqw0yjhq`-G2x^*nWyyH=?r2-N-{Oa}EPy>1%6#J+oH?FCP#4Q$EN#>~xxfds7`y zraufnM&Uj!WlKNfLt~|VBvxUo{269Jl>|+49jJSIWxZ!;yL!Dlv9aHx6VWfy%s`rw zlaDc0^8$QVQxe_L(T`pVY>3a>IsNG=^87h2fm7FKR?@P`pn^FV;?-q;Y{*yl54-x1 zsW1WiY}6&$3N4@V6}`=E{GE=?Wpao3#jZdIphr##BO_W}3mWSIw)yrQM0YHcf&Q+y z87CEYWJvII>97_OI*7%rbpxth*!C4@FP+%{!s!YRwGPiRcFHKSI#?@CHnEd`1T^um zP#9eV-98bG&UvkHoR%#HM%XVO3P?Zm9tknWTs2gTlPVcVEk`k5;I@Y#2l(b$9lWY< zFNJg3;h(1arr^J5Wk-L|Yfxx=o6N3)+GCARR*`=GV(|>{20>oum!4SuymqZ@bP*?q zINf1-07b3FI4?s0@9%OxgNpU43yLjgdk&H2<7s;`X|M8TUz=rN?nE|Yyhp7QwYw$7LoV2mT1l_TM&6XES&Z7i=9nX z&r=l96KyZB$u!ByKADVRu5gZ}McK&`V?g>s<)t4oX};38RdfHEpwivW(m6`fiG6xe947W#Li=y<2>5MHr}tOz zIbi6Uqu$X|a918O<^jQ|zTvmPyYjZ?{#P`e{*7bTb8cAzbVRu8*sc0rwxu#j_4@(H zCSbS2*omQ#VEE}^Ovl5G?PX*gXRMVrT88u2uX1~7;Nfi7_0{m%C3Vs3#66--!{ZRq z`j_M_k2|y^on6`{FL0N}RZgEe(t#ia?VtGs{mtVgtQeK|->uyRJzc83crP6PM#hx< z4qxOMjYktOUI=Ny=%o~DoU}akDbby@bHb~gB#s+75g~a}bFxe!x36{>CZFv#!r*FM zc`YNhr^SEMEIlXSrB2aSG$hTZd^srMR3RJNVd)WSgPm;EfEG0?=^fa8sAIg^kh95K z>erY9aECebaR^DcE~!UGEjV}UTkdr?>V~|fy($^@9WL8eX(EZva@@kq=D1A%gI&_F z4XEK7mGpK~4en+f!D|gEyZg3vZtZ-Knf^NQ-2=!Ov?Hu@qqEUfKC&*^5^H$}e-a6O zm=|#N-nFx{E9!T`bBmc9#v5YVAMhF($49%yqbCwg%%~SM+fM0+2ffVGyF&z&OGSQ` zS~Q*CCpEUuQ--CO@ay`M{0tL_$yG0W5r1vEV+|Fe%#mn=4Dh7H|J+O7ycMuUA1nO= zLKb*sm>R%Y1?-sh-PjcCL$NWY7flR4DQd6N2N_WO2@%N3&AjG4)&KCK`RguRt`+NfPc3pb<||hjI29st>$zuc1v{NrGh!9q-Rvk$B&4ZSgYB!3*2Wm zn@Mw*Pqa`O&lPklN3{T=9iz)~5&WkXb5m3VMaWed6Gvh;8dVj4t(#TR-j}m#A_BFx z_ZA2}6QgE@DpHVnA87qm%XCT#wJeVha5Axd{=q<%GJCd!q#iXKb1rngvxw;ud@#I6 zzbuQUB0wgT{Z8OLa44&98V#ktc4d^THO$F4jP@Y6QbAC3gUa-cq#IFNDA7wL&6fyE`uP&f6<3=6pz!W? z`j~C|EsNgo%01h5a;@jm?AR6bnD{-PH|4#&65{-7D(df1yHk*(*VWWpvyy^p8!&rpNFD|~r+Qz7=sL{u#|7Z}Tzz$z zyww=e4aA}N$Jw~ow`*Z6#xCKw{_Df|SsRn&Rb|(-kuPF=SK0M_!g!k#4%tGFHOAB3 z)>EYBPbSq_sCgEo9k@&m<*OxQxd!SJo0KuvejhAj>PE(vl;T7a<6Gw2Oam)V+^k5e zGOx2bfB)jW03o%VSM@d(u6pH2xkujjU){GNMnQwm=3tpgKYg`sb*6Xsei(pk8uy6J;3ixJ2mpcbSM%uG+k|?)c`QBz~x^C)N ze93{o^Dm8@1u>8t)LPozgiOLp^`u^R?DvMVfw*86UVE_1>_BM%!)Sh7(k}6)Z)*ISN#?chGp&!+i2@lWNBLlLi_8AK+l_Jl) z;W|I)x}#r*m?^&~ij8Jt7$tCAs^vpXs8>1SKa2NJaIr}4>l+;d|1_*gzDRHXLPGag z=SRLX1nukU*7RyHQ6N1lH8e!~g}NfZR4p^x>K}=PXlA=UJlc{mVx(o>w2x{GAKa~2 zY+-X5AjF{O=}R9{!DP^1txiIxeF5fHk(anyb$U|K3$e$Enmm5^z8{V_9_jBRAJIhP zy5=6w@xD2n438zBK{D)ud1j3!J6Cbc$%lZSXdl(~0B=wRFezo%R>JtDU6Fy`dun7_ zUrPiCi}x(L$Ud+g&06d4VHxVfmeM1U+H50jknYF$bLNnO%BrHWw7zai?o18)2;Szz z0N$S&M-5Uphc$lI;&`F9HGbp!Ilu5Vm&>B@G8XWGi~rXr@WVh`(!?)JgeezFGJZ$% z>LBM57iZrB3pY9J?p=FqAo$M}EiBuPQMyq=C&{quv65fKsK$K{4jPOcf65|#p_iA}h zhXKJJigD#n3xxX&Ys11;^nD!AD0{vTT4WYW_ATdyrS&P%MXoFkmCm;05jpET5!Dp5 z%-h|^`8L5*mJH6|=HMh=phPvYe4CxXUSNxQ3v5acd#=O7t5U;~Mv=sUYQ)g`eb4UI ziDj9@=7~@Sy^9k`U#5`>z5b~6UzshfmH>6Ok*h9g%%CNoycf+Y^cY5ZE_##Tp+(K1 zm)J7G>RpxBROYO#{{{I#2EX*}ZQ?k{ONg`jgZ(Rz*S-_Y;G2|_QPgb|v@a#N4p+@7 zjl+@G<`@~~t-B-iZ|v;X0HrkAUDMO^FX=zDwzFfa%Wr&;U0VpZA(B0;YTvI&7RdP%NI(Toa)Dx-)XD=0GaGsri27 zu$lh=jwZnVqP*|LU$Uju{BLpL?P}WbPb(b%04YE4A(33Q&%`|*;%F`Hk*wkjH%jl5 zkD#uS&*HSc8M=gN+M3>5xCD&k4`K~x$qBnS*@}l3QE_gwQcJ3Tqtx+F7W^jhmw~PX z+LncR_ITJ6ac>ctFaiGZWDmx?)5IEr-*~PGAZA;45Ti-3{J2mUx$!ici~@&o))m0 z2!0WGFI2ZNn9c5$3%T2lp)wp1*S$}@4bN&3Qe4rJw`H&DeLLX4iQXCbg=!_ybx1Cs z8Ea-cWlyRee;$>K@gLx}jpNH#WJR&RCq8sz0g3C7JNt_GZ{kmi>@B=seI|{k&!wwL zzBEXUyF^NiuHFdeHP!q-{jR)U;I)F<_1DA}LDoMe@sF4R{_LH7dgrAzQAt`zpK7A{ zSH^;W#T$cw-xxn)+uh(jfkUswa-6JFpan`fGBmT~MCyqS*Lrt6P z7t*O<%kxI(9DWCnYR$s>!Q9eR<0PG}`5%!Y)!~w8jOQrCe7?EI^s2WO?T_`O*Vg|4 z89!wU-ws~OED?Q*W&w+c%R?qcN#pLEfJp+VJ^{^AA)!Nd=ku#D$DT6ZomEl^=~u0Q%I6d@Sify+ z8}Lc|>q;9aRY5EUeN9!g+mW5WTG+RVUkU;f>$IA|wrrxhoezSv3!QgbvD5U`OPjli zQY4HhB$i;K*mdf7ueE$HuQ%-T;hz{--gsY5o(&#js6MHv-$R?(SSX1j0ZGWg00Gn= zspP+9e}|Sn9?))lVXd7OIGPh03(Lc8<-}Sx^G*S5^#dpHub)3?Ka3H4MDbHxS!uRf zZI!el(j%%aM|ek zY!HikTMJ0WB0<+Jv}BXtj@9A!7g9>anZqAivwb*`iRe$ZD>g>t_p3{}!7q8;o#(<2 z4r%@?@n_lfIbx35I9gNYovKbi89v$1;aYza{6D5?y18vV?dM&^WN0J|3CY3W`hP0& zx#5oP-QbWD9HR^Y!KY|?Wu}U<{hxVh56sTlC(?$z#EzOfcnXZ5KT%m4qsJPki~x5w zNc7^a!*I-pX+g(wYKFC^+$Dq;No-mtmD9~qFh~QAzW$XlR(g&~>q5Fu8_a`a70Axx z{{YsjQj2x_@i{pJ?I3aaReuU-citoME}5m0g_G!TKadwpR%Wh z=J3=ykBU5ZrD>O@XIXT?b8eEv5!o1)l2yP3bJL#LtsaJy=(>l_ULCSJwyO=bnk;iO zfF5s{07wIYiq^mIwx?~X-CMoXK5TNbw%Cp`4{mGLG=KP4nkAO4;q4_`Q}Hdnx@5N1 z<3MA36~F*K?s9p+U-%KMuMpaY@n)vLed~uK^QC=7QkssJD||HYE~%<`mr1uejl4-M z)JVo#V#)z<2_qvT+Pd$6b9@-^r;EH=ek1^`9mkhuxAqcTBMr_NszyFu-+2CYqu^q? zb>+RsLldiyz~;OSej00jHPy9S>m^2wuVx=PInM0%2iB@K-IW=8HFSNG;?LSQ_Hoc- zbV5mx|hQ*8IKWoS%sDCWyCFU8cq;5`z)n% z?~XfG&A05|;@h%zt-eRAHy?&8Qq%TT@dM!AUqfm=1Z4jJ=v!+=%2ex0qFl`AwV&JL z<2Ju&*1zzU&1)NVHdfI@r#-jI^PK<>P6$0={I0yOHrfL2I(QMy0*HI8VaHl=`=lN3KW1Y<|qGBYq6Uec4Vl#pZAIWoDdXK~1f5o-}#^T;c z?YD=*rossKWBn`HQ{unFy(&Gn*4Njk{iO&Eby^?9JttA{w3@x1lLfN*=HA{ZPnga^ zhGKePVAhJ9S6xk%soDG6A2@0M0JDR!Ou^?I;El}0en1N8tiNYVyIb_Ldr#k$4i*#` zRrfeN*RSfHDENUhN_4$8&Kn_*F60G7Wg~(M8o{^Gd}plcvD|B(Hnp&`-H9T$y&Jar z0K8_jij0zyCQh9{h=WZ1o7UfJ+^lGzb)H|>8Looc;h%=|Pz~OFg8_t`GCBk}r#zq$!(wdmC86z*ud< zgHS)keSYLfB)(|ya0Fm4@~Lmk@~d$^4hsD8eu*#5nG$$o<0iifw6opAyk}#~6CYfW zipaY772|84pH|oGY;*UG&FIMe4Qc8=GSx2>`IpnUJ&cDH%U$W(uDLOLYgz9Cj1w9b z8O;%jldTc`c;#Tl6FOS6Qt1Z{aSf6^sV{ z>EW@6#F1FSS9t#bX_T(`MSCGdG=zX=@t6i{7wC%Z$Gqu zXkUsKUQ$8l_@`8t%7|eTb=;=_dJN))(ew18=EXc%xB^R6RE>81M?gWyT>dqqckqK&cWCVX%X$Ma z%ohlAfs%2YkH^0i#CU(lnx=)S_~O#q@#2L%Y2r2r4*>rFZC;%Irn*@EGwaH-2`rlsLK+f|Wdww5*>Lm?RF73vyS#+& zMix(LFP;=3xRJ!%ae!692c;&YjyT}53bDLv${KZz_52SFhfbQ?9Au7b=pWe~&-^8t z%Cl`I&yV}Nmvt25=JT}Gi03)Z=-3c?@+;6j4S0t^hg!LKt*!L; z`z!g=+08F0xo~!{IQ$RcRZaWHufy0ZEga5`S~!I4_Ifv`mDl2ZE=fQGVErq?{{U(* z-dBbtOyOpoTk#4073w+$y=|z=D2{n2MQ1^oH)m-BKXg|E`$oQN^94@JL)r8%6nQ!XGPSYR*E!thX_cpvC@eWVzcp_`LgwMPp4utJE=QZoz z5BSlnSXf;ovaRrmH!q*g4&mRfFl){9FN8K0+U2#x>+Sn>FST;_@3Z6j0hyuK8M@>uN(?#X|cVMBj~V;DPHTAyySOk`%_ z;}(>ZK6Xa$f<7BR!|g8r0K?^=@iEm)xw*6fOwk*65vdu*a~K_Q$T_b8ZybD6_yMX% z2^W@Da;YNTw&*5Dj zsqsg}O>c7@%n(Z#lCw9N5=fp~Gi_oI9^Zv|I6MQwRIN8V^U2A1CYFb_h|cNqsMUm{ zC`Rtu_x}JRAHe?rww8n9D@3sIo|XNd=Z`6_E&l*}1B1cbr;t9Is_%|JXU_zDWz%QW zd@Xxps81*F6@1{q3H?{-M{1^YuLpSZPSjx6JS$~kGzyaoojiS&+dsrH$FF0Y*BzvM z6Vk4{O=A8B@vftzYKqEahVck*EREO_ra8bpxi#3T#;m1HYT|a##X_tjD9Kt|Uq|;J zE&Oc#n7l>s_WJf|ET=ZgPnEVGm9fVRIOnh9Uq4@1URq4i%V_bq>aBoB>tDDx*E)5s zhjD4GPIZf4EB#gcN_XLKagp<9larHQ1pe1Q3_Lj@bRyN=7n8hqOItkUTTC~K9rA*3na zXeB{Eh^~iA@cKvw6OVCS1YR745VpaerE~KXqis>re$ZdE)~E3gO}FsRg)OeMZwbX3 zhk|(-WSER$SwphyU8{kfy=&)5?6n8Z_C?RJHSH(EkjRnC-_d~48Kj0tzdaU|v_~vCF@DKjIch~w-sUvPHCS5G<>Bp^CF_$flS#;S+1kInK z)rfS7-{le?`{ueRw7^(#T?Ut<2^@U9Q*s)K#>3&8>6C4hs2-{-e)7@d@I|Gpzca;s zBNLBQU+}K_(@BkE00GTnc$&#l8Dmj^CsTp`YHAJ_r4XJXND=X7VWR%z-wMaG_KKf)Dbp_UHC!T|V)p*E~g`>GDha**yE$ z!zm}GGoRACIkhW23Tt<}&>^^8S^*$^Li*zIq>phK`Q2QW3+-@ZCEuw(~u+ zTei~Y(2+-n?EE`+*CNscyuDMqE4Z|U56S=xK+aAp$8Ek8c%N3h^6vaeq*?9go;<>qfi<7SbmZudv_P!iaP@upQiFSuOYhli>AYUB-XYU55EhEr3wx{nXjpSK7VF> zME##Nt#rv1#-*iP#Tu80CDpsO0Y}DuRtGuG4n3>kzX{q)apJ8x9R%T~1IvCxA48gQ zO6kSjG2-rM5w(jGjGEK`0ELCBN_QKj8S9G9_?@6W zpKqr~Ez$z&ODX^`ay>q^$Jj#WIXyjV38x({aN>QWD=K{UUWce!c(+#7W{xGint7WD zsD~#2a0lQk=r4rcFV%c0p$lz)N0#?bYoT`o+)c2nh}j4O2O#fL_*cxI4q%`D5}N}I zUVPim$hQUFcAN~JnXje%UiUVh71N}+hwPInguDfV7}>Hx{cXuxoxA3t=-x)fK)liZ}xp_)4yolc6}>M z(Tp>)B&{fQR={j*BO|?aDiHQ*TW`?$tR4!5e3p5YSxMBio$u${W6x%i?S^(R?^$ad z-R101jG%W5xbzt~u6+2qK)EuKao05*J~EZAVjf}p-sjTRU$gIr z&;u>y?ZN&mNUAgWSDySy@LXOJ)!N%mkeDU|%Z;BdzbMX6*EQ_^54{o{Q!bodF!^K- zdJd!bPq+BjkNj}C7XCL^^A;e=31;Xq8rMrnCVs=6Ww4ti9QcUrCYIIAr-NhFR7 ztH|wR<%70J82-OrJ?gC5t*T2WlPgS{uwB<_W9y8c=Uk4h;)&;Jf-^D!g=5r{=qoiR zn#$An!PK*Lelx{l+*-0fGR9h!7NHHgoxR4t7#Iq;uWa}o;`>`~3cOMfvPpFzT<{12 zJoAtCg?ynluYi7P^p6K>vDy4TwA7PNT~_wjSYs8t+%!txEJqksJGl$Nz~Y@au4B;Q z3|!@za{mBz{)gC>I*Q-hM>-?Mt~UjdO0fEa(!Oc9$d zU6t{e-~;{s|=;n0yEQ!?xd5w&(OHObB(KC)m|HuM}NF&zjiwHNx9#4GL{7Npq<@zr~O%Yb&46)5X=4H+MfPemTr;J~sS8 zm5y2bL#Q!7TbT_NU*jVd_`TzXJx;rPfAV4It~a^;S%SO5(r@`!q-!#oavJVRQ2jV_BND#l^piJb2N_$`6e^MxbYp`3v3CCA`$&MR{4#2*4~j zHO%F!KbP~W7tHZbU*b>y07_?f;oU%{jeK|Q1<*0{6`Z<<{7Y{6>fLeIt#ga1>W_0B zy|j$YBIjUHgWsCYzSXq|E~Sg@4ul+S6)smI616zS&qUYWZLRSt2_$2h_WuBZkbi4x z&uIj48>^i*WQ@tcX2wQ;D*4||)UR$Xb{Uxbq~w5qrF$Rj!>V4-@m9qonS^2qxFZAZ z8s3wVr#!eSwWd8sv(x$OLe#b+b z2{=cw@#l@3eyE2WlHC4Pnf9H8jOXR!zAL-dJ{b6qT%6Aimvy!XL$EP0Es(q@$0n*- zd?fKi!d&=!Q2V3}&@ks8N+SK+AD;b6tf{L(?b!1a<&)4 zw}5}P0{;LrT6%x%-{bj+Eu#pt{{THMBN+W^TRt8cHa1GijK1bm(Qg`k5&0SWMn5(G z0P9ug{6(ng@y8vsyJODc2=86zhW`L(4;Ne5Ngd2~a5G37=C}s~1Rj~LhWGY%k}VP; zKBr}Ce6p5#WR&dLjyrYDOx%*ZcRt?gk)%?G=5-m` zMnEO2u<+ia;Qs&#_>#|7zxacp%^kV_093b8UI zZ}AJmdX!!^w7<7QDHdfF7ppec1MAdR593WIQ_#G6x27>`CBwwAyo2T4wMRbH+jyJf z--7IQyF1x6_*g&``6(Md@DA<>2h>*=rCj0)0R zt?$(JWrDvyD%H(P?y(2N{Z{f#4^o;y76sJU#k3A`WG*rJR)yBA%cabAmRa;=4A}d- zS=;;v<6d#%&yU^te-GmpAV{4xVwEA`IFKcTp z#q$<1fD0oKqd3n8(~i8Ea#wnet_F2yDQRg&-=F!OlP`!iO8Eh^rQ4o8rUUv`v|cWc zO7U5}k57i~PqBxN*!-&U#_SU$d-Gg$J|Vx=bnE;3O#?`>vbWJ=yGdkOCTAGlvE;ru zD&4yeTHvp~B6z0fNznCWmd4a-7jJ12!(|`JGBR?&o=Z3DQ_o|g4TO~##W%A$Ka1ZK z{Bz=+1j#0}H0?@Rwk55%$sB8vrvsijJd=~_Uk&)5#NIY zEYvM{Ymh*;L&^dNeulh^BgHzhgzna-+TxZLbQMZzT=>tyJ}kQMpW5Mw7qz0d^Ed3e*nSAPz**3+&?l?dGwz+gK4I}urrAXu@Q_g~u6OZz3(pLQE^ ziR6c;L;nER$LU`>&318&))io(Hj#{E+SJoYl&&*WZ<$?9R*vtQisF2O&oz~byD_ie zR?bFEW6fuRIIZi98lfT$)WlM^wNOS!=UY}`R~>~>7#*s3q}oLTIvaU{E_&jywW1~x z_soiaLsR{$Y7h@NuA|{!hV(BK>-RGFn*RXo9v-lW-d@NhSewgU2;AHbyr1!{BNr)I z3Qa9fGr5Qhc~AQX`B%37&K@hV@TZJ59Yau=;$6j$d(zLD+i;=N6$%u}-pNhGNt;G7!w?+AX#-XZXxgmt}c^HtMlyq7||iL|Jg zvxaEM7<2NH7!IBL)|BHW?;UItgIA1E0w*Ed)@);q?1~wbn4FqF@3+z^)rd@gIb|O{&MD z>7FZV{ZeT*CB3eZcJ9PyKl0D@>BU(1Wv0FV0D$~wqyGSA$#JTmDrl@_Qw)w*JY|Q= z&l&fxpu7R#FADfV3w>Wn@MXV*wR_8COQ=P`xs@35RLFY!3qP9Dpv&ZSC_ z)_dyp7sG$E&xadG7Mjh1>a8$SDY$cu!vtUh$0Iz~o&00?LH_^>(^!L0(=DWb4qV1e zk`a+>AUvx#U_k^E@9AFq9;lXbhL%wpfL)0_0Is(~zten8qTfL*abMZC=q8S34IGL_ z2qU=a4Pl7F!xFvi`=3viDp^z&EHqSM*?xY$XXeEJ02jO{)_VF!;(08Nxe$W>&}s5a zt`UJlyMee7!5*j9xXm8h!&+loc!n)@?&`+Y;S!IwN_w_2#d(~62)9Qc|L#Z~sTHFxfHzZ3o(&2`~F4{EnFN}6@*A%=Kk4shzM zyT(Q`Kdn(u*?RWIStET>S%(MY{{ZXPw)mDbx&5EK4#Z~`wj}4b?ge$1a0#v@Vg2Kb z)U|zC$5RbTq}1fKJR8EF0&e^_t=VcTdb2gOf=z^DceZP@)})Wc`ox|XnIwYb&jhAO z2IWw(zg**w-VetW-+i2}Pp37T;GHfnI`dX!{{Tw5NZWD#6=pAw)DOT>7S@Pz!qJ^M zQgQcXx)v1Be`lROU0YghLsYW5h$M#9a3cAX4a5*~cX9aoRN9ZnUkChucr?2^ZEiEC z!uKXfp+EwV1_@^C^56=}_|b9wx$sxUwz4+!ZL!lo?8>Y^EE@A~+3(^v!q10323PSF z>RjuWkLA6f5^vp{A}-u=ea<;G*HSJvj5?8r%kZ@D&kGn@o4wK0>RR{1Z5zY7#4)`zQb))Kj6_>;_>9D>U`sxLS9l-t2SaN-a zao(^#JN!9s7WiMqT4t4OWw_U6gAhhJEVCw0BxRMP&NwrHw z7#}$U=5y-I*c(2EB{4~@otf$fBk+mr|EcVI@v-d1X7$6M& z2eo+@#jg_hUs&;Fy6VfU%YAgHVz;r_RB#XvnDBVbd)JI~2iCN!Wor*QSou=XWT#<| zP6_>M!TeRD+sotFZGt=(0y(>zFJsNgn{i`IhrSuYK zfEq>nrEpY?j=2Y^g->15xytgq9Y{4QNyn~-AE10g_($S>R^G+C>Jc@ z27YdtVO>q9?Je;4;T^^Q0EZJp)uoc&<(f}AG;*(n1gYLJ_eF2%x8DrD1mD{DYr+~e zzlg528?hbsp>cB!&Bc!8{oZi70F@+T9FK8dD11<{(={)STAUNz%^igI%CpM^USx@! z2MW0vImjH+l5p#&Ve+gN5`NbYN-=%XNc!``Keo1m;+gK^v(oh>7M9O-A(Az~jRsCJ zC#8A+0E&Jxd^OdzTdiYJ@b4t~?0>8-k{{Z7P{g$io zgU468Y*Im|TfTSYJ5NSfiwD{^@XKs?b|emz4Mj=V;Ps_IuD{{Y|CqPo+%x$MR& zDMc$Je%N>m;V*|gQ*YvZM^agy;!hfQoUmDTsN1ezD8R>{71~YkpTWl1Lve4uCF2rK zYvj#a#Cnylj68d57NK($ynZwB9@vsr3c1!U$-vL4CbFj0E@vdmaV(tw027m3QmT_` z$CE6h1u4p;sYdd5dM$lVuoJ=G4zy{6hC2u(RmSJJ=O6dgP`bGIOQ%R=owQB)`H5iU z{-(Z2d$OYhn#I)h6h_)yZuHMJKGnUEta98WG*sfh?bLlsuKv=W0DKF59j)e}r9pPU z6^oRag5@;ra$;A4VI&*MQv%|3xJN{Ot%`C8*+N!Mt_}ri~DKlv-nrzo%Wk8 z#FN7vovXqfvJ^BbNFIQ(C+cg+d^CjW5O-qYw1%shv#CWr&(B*}5D+Q}q(Tx)QmMjlj>6Y>Tah4+I#5fWo1yo2!hej*;~x)MTxvRvtk)eX@*W<_RNuv1HD^C`90@5o@NHJ^uI@Pv|mBtyP z9RqR7@DDxu^*^&G!K>>J4_sT%BUoth6@vO10mRI$y9~YXYq82we#@56xqiwX&CN^X zQPM8_SK^zI3>SKyqbq*|ayuW=vc4&NHq~rybPGG%dF}OU#*#T=k@8q>$`j9{ewFt( zh8scAEuw==5yQENSkfGK=m6=|SC@QLf*oJt6}{}Rl#r{hYIEnysdw@SuMsqcQoI#zO4rocFJmd~xs##X28|^?fGV&|gPqDOm1z ztYUP=Rg^LA2;^QF0om4V%r!!YEHz+>3fj*Tg+?9ClX#y7TypZr|W z*4M-S3%oFxF6YyhJA`3_y%I6V_2(ajdS}9~5cp%@&%<3q#C|EbTWcGuP-T8MKJU32 zj;v3huOax^@teUK#*yLZZM<8h-(0}XvUxKCMndvH>C(Ed9r$xZ@rS})0y~XSUq`c= z-svwQi_8**jnEYYj-k(5!Z(DQNQGx>=wRu7J^uiNYf9HFZ7iaiN$zdcX1KOS+L9SD zv70#pF~7G?oD*8V81#KVO7O>mzS8-N$(Q7ut`&$v#B}a`>y`Mo;*ApX;cl62WR91A z+t5oaPMz~R_BAh5bD1H^n1&VSyWn<6Sc*%vnp)|uNC7ur|k=(cvd@!yglK$iujLR zYdB`O%SUfKn+wk931%mLLIcjz$mvtb7bO`pMBFq;`n7*%m^5z`TX=@+SsH@cU(J6F zh_nDR$rwx)EP7xZ;=Kz@)FZTl?i-7O(lmvc-1_t%hA=BH!&-KMqv`gqr|NTS8k8^? zjm6yL?*|*R7{ae^0*qHL;>~R=Jc;4?Boe8UpOuDr1bY1|t}sznLX^82n!~o8sKu(q z5?sX-g_Jr5!sKLwj-cTF6_*gq?OjeA$ezlmDq?udTba~7b`Y9SOn2nfPI zCj*-Ci(iWR-J@-S*1%_vn#LwSs@In(Mx*9P=;d_ZERMY{Nh98-l48S}%AdwMwde)s zNb)%mLW%rJ8uSETuKWF9m zk1nAfj#B2|!|&q?XI4+}t#<-DW3v-*NTI^PVt$ z>(Xq$YP}=D-Z-}K&H7H)NH#pS*mxyUG8r2=AbNXOw)lTl@Q01{%O4upM{9em+CtXp zs6q)V86S5f43W=0vPE=#TahkJ3;N%*x}BRbPs4wUJ_q=BrcdD=TT9VzZO56Y=(hHY zKI9p~My7 z=Dn@_b$5BL8(Wz^$fs*tLSzaiQ~cX2`qQp-jUUGTAA3I$+8tLAjI88B~rypfSM7 z^ykwjZsDYc>*gd7x!OTLzLl zSR40hd6NsD%%A66wUxXP>TRf92N6J{ZU#d(F^|Za)wk4tv~4b;w}ItZ;+89UC4Gvs z75PCUw;P8Xi0xSs%cZ(h_qQEO|d zwxMflEQMRmXI0y`IVS@Ep84-yrEl?a!&Oi0%|>zI-D2JLPZp~gVoowuLY!wjWRN@k zds{CHYB$=Bn{9V@1%<`!kh>0c%e3I-4m*M|Sab6>mqAJnHga2>*N$Fm4+_Nx+T?o} zC%}(-xE*j$Q;}4D6L<&W=Z)-U)uH&4XQbE}%yIpuz&kglRiof%jQZC>;tz*@AlIW^ zGSJ)Ver>|WuWr2<hz)d>{vp?NtJ?`8beB-IO_G8~%F7y{8PBN# zx_=P-G|~JkrC(j!YiS+5ycuYxUO+*f2=?}`mb_p800k%TgJ>=^O*2`aQif))TfA_|5G;5BvVRgk3a6;}7vX2ae+I9I z-$c69tXa31^%$az>FVoD~Yz!;+9zMt*x}^AwngB2vLwDo;!~&1uW2UZRF_Uj zFXFkxaJ!ijIiq$=spBCw{{XTAaSA!=)@YFc&n(F~Vbax;VXf!zH^ zulQHbGWLV(xtl#i9|+0(<|RO86E1P{?9%e z@h62_!wsow_S!jToLpMUBAuOw8DKjOG0@|YUpQ#qC-{-8>#^E+o5RG$k%Wchvm24d zFiR= zE)-yGLVoEO>C@>#crM;=4Qc)qpGrivdsMQMPi_}!8%msdmhAln@f7YpBz!|c-zWSgULwH2Tr#)1WQTW$XYj26) z5o3-$&OB%09!cZ=Lbp}V-|BaAMo*X{8R!Q!!#2I9gg2qRXwInJKp-A#Csx$pf>XX! z2ONynOe;O{+GLV$Is$)?t!+QyKZyK8F#gQ&)~9~VGyachBmSUJugvU;)vXcb{{Rzw z8>je}M;FkvacXdukVvDMP!sZ#{HyA}*|WoF-XGJoi5DTQWAgWP2SUT4YQ@KK9Z ze~eahs^(YHtzs zEbot*ip?3;@1GOr(%<;2db{?C}q59MCB@t^j!wD?=$Z??jsQmE30Dp}v02#_3rPjY$#TS72W zl|wFf8A*3NJ6iF#guV)C4L-B4TiTf8%gb~GU^n}RmhICd))$EX0BCOoYTpgDt#iSi zCGhWwyh&|j_fcsU*Gm<};8onwh}#a#KsXz7oL9%5DEQgpZ`%*RH~M#pJTahY5UMZP zbttU2+`y%WNn~PFpZ0N{c&`}n-|VfX+xY(gM~7PR1KW6hIo3Xvs-YR$26~=PJlD@2 zAky@`C&e1ImxuLKz0l^BQX9Xs$>$jPB$X;T86)1ljQBnO00_37rLBg81ol@lGfgZq zLcmCP1;<~)I zwzm5VNAr1RAsLV{;QC{)Q(qkT+e*|tJ+4n0OyozLI-DGL#w+$4#ro&NsQf!Nk>Y<1 z$EoUfD2{HKRU2Z+83&uVGJwn4xyb(jV~>a4D6)@Jy3nlQw785*7>Sv_QZflPn}EEetas=dR5`U8VssUNcblK%h@ z`~l&cSxG4ND)0NSKFe2 z3;ZW_sR5_y8V!Q7$rb!U+90u<2{XptKMa%Bp{jHDSIkaID(u$y(fcdf{6WwyVzbfN zZ*A^ikj)H{+q0r%5Ocxc_Zi~1uQeJvU163^zN9tb+94)RT3fx>_JmgDm77|IOrKi(!MS5 zr-s^ph#o4?G<_NFd_Sn_l8rs>A}*0e@(_`e{2%}^liI&iJSp&x!FpGM?expt7fZN^ zTBWi_J-l)iMCDWxJx=U;n&eZJerqdQ)@Ng*3Q7`_z4u4X{{RMjHR8Q1<8HsI_@46m z^7;rRv%R{WOhV#EQwt(45D%A)qkzZOy~|g#)XS2VO5uh<+87hq{c4`Sc^`%4vd|5= zlFUYCH`2%Z$%s4;lyZ1p)wgVKyp_xnn>OS$a^&ORy>(NAglygYPCBzwozl0VTSe1v zEcBT!E*Ql=4)-#TEf>^}Tvi~xJ|@xiRxz=(8=;GGZD~keT#f(-AP=QY;x7?e=}|fu zBq2d(!(b0g`u!`?&339viYQ+k-oSUNs{D?DJrG{fTPe<=^)6g#4H$PTORd()0Fp*~dsdCM*8U)W8t61Qe7!$Yb_Zm_I90uV zb>2VkmNm5+j-5p)^c6)J!Nu%kYaTDR@kNf0J=79dc%wnHb@SM56PQRNjB<7d&U%wx zm-{Ms*mz^dvRFkkwvVe#D_TTYj5>fydz>=;abA9Gt-M9zON(3hR_SH9k4;VF{Hijg zh6o^?gZ}z8$!eC;Xm=J@x+UB?O4-LItM+LcL-u4=2wXYbSp2c&dh@`+)#aqD|nCL&yGA_rdjGD=GF_;mJ4gL(=2Hw2}C*hc9{X-;9%FId_VoW ztp|s++g}suQ=9V51;yQ~hEP`+cUI?+!=8TWua$gJuIrx>;Fnl!E_vsjqeDHgE++lZ zJHq|$o>}REp4Dn=EkDGbBhjLbL=UQYmgGh-1fFg~5&q+k%DPggQaYH))P%1ckGiG! zwWiJ~!Qh}ynhTaYp6(VZr@Y$G`U_O?s`$HAheWiwRk&Q0i5naPjmH)5Iv$A~o|SKD z8i~?amvAkD91IuSYvwP2KMf@CwxMr#c_Uok%#6~`Sg`598STw|L#1jjYi%3naZIU2 zT>k)`g1RZUB)N>_l9RK#KR-Sr>snTat=+7V?1&eVPIJiENzd^d^sgfE$Bi%aPl!GxO)-KKsNCjI729!; zlBDyFe=K6UAA;JZx32s{vKRJVZN22HESCu<2oM(S^aCFCg{8Ib%%-WiT`PU(=x@TQ zH2(k&X_mG)M43S3edajjk8_in@ZX3(2=xB|+ehP6m)e8g>Aw!VC=Q)G(a03)*GVH6 zNc|BD6))WIIpkUKFOBZBD_g6(M$OzhRm9M!>hgly6lb|OAB}ZC2pZ?%$AmNw3)~@| z=^+hsHhxx^scBn1$#P9~PATZksn3yUYWU;!9{6FZcs6)EHK9e}?Mf&Kw79mCK%QV9 zD@cTp{W&COlV2qGZ{Zh?H7mROTW<_pE~%!I8Au`wuO|F($K@lb&r1CYvGHTtSufhA zP`fjdD@($9jjitS0xBYac62A-70Xu*3bvHG9n`T?q?}{a{Pw-K@wdQV2l$i4zAe!8 zyOAuvXVdJj?+29(xf_lXkb{y5;O)TR*E9Pk{@<2<3iyer+j!#T?L0H90KRk(jh2&x z#EhVBDn|s2k%7mj-@mmMll`mkU&KW%BD*j__M;oFP9rjea)#O894|-`huj z;irv5g6|79HupT#xvEV@TX!u`_R)1I==*<>`z@>Z=fNKmJUeGP-rH){SA+c$TXqai zdaym0r#0bU5PUbGXnKY9hO>EU(%!_4YY<yHiU z^DG)1YrYvT5!k}zfC4fI$T=q*jEwQkeICCAek*)b_>PxaR-da|=*=8)4Np>4SXZXz z1eMD5I8aYP&1+WDjo_~&aZ;71$x*bQW7Iw#{3P(FjrB?N{VoY_T^D`CMpmfZ9fjph>38f_UeF zV7h3hmIE*VbuqH_$Jf-F`6KqD{{Vt&LE^i=_((n&d3Lw1LfmNA*F>WM{838emGvQy z(2kX?E|%fQrT+i~^xa3`_ruL<>KC%{POtW^GZa^Wmm|14c{NVM_J8o@yw5CtDAyI4 zw-WM(`~d?s@UMk*KZ&2SUyY*Cd|@7|py`)v$q~3yBql&UMve2djDR>KbCN69ZG2(z z7sOYPS$HE?m9-hnl1VnDa%8m>tr4T4ypQU3QFala(xPE{7mdz`b9g;>&SR(*m# z7kGB+1xvpW-`%#|rKY`+OAkZAtPNlGTJU#>OidQ2d2b>D2FsY`89C(dP)X<3y#D~< zI{ZY^v>9*yCTn^<+_I9Ekm#$PNAXDf4#$8$UMr}N#kaBEEKO?78)NsXPBV;}_MdAVq@`n*673&*0fFb=CcRI?nx*!&bnw9PL?Vf1ke9{~=cm60 zy$8Xc5j;6_sKX5a@<0v0r`Y3Sf8*joxutHI3_Zp&O%4up{hh3lF_Kk1q_tiUqx<;L;$2tiEHO`+5y!0MiiWqU~px4u0 zBZo`Xw28m8ERtwDZbjVW_8G5^KWHC=ub@vBv*CFJ7IQgUn>oum!o*||f;c?!>s+$K z)k~TZzmeG*w4cPRenotIHx2RE;xW5~TV05LL+~*Nx5>LF9###OH{ztYrvh1M#W;C+phue-!>FSX$rB6^HyLULXPyGpZcw zmpS=C$8%g9wo}_hxV&ePoxqdH`uo?f9GBZD)Kj(6dw;<^S>rh;D7CXbocICpGePh= z3ptIwwdKV5YpIbKV~l*q?vAzeW|8|%=++jOmb#~jEE4+6vs&U*mO0a~%C}L|HTlgA zr0R-9(Sz*}tJa!*)!ga+l-UR6!U0~rET%lFE_eAHv&YHokJ0U7kTNrXE9Wl@ z_)UwLu4ZHVu;7&$#hwnmwAAdheJwRkm@b* z2Gy;@Z5wpS2H}8myO?Bi*QI)A#eWD~__xDaJKDRm!!x9i$DFbf4tVs(>ssC;{h)P^ z4ftPA@ZG+EEv2@$OLe+S^>V>LUD#3blZ@b+^XHegyb%Vxs)z^$d*=czPaZW)@V^_J_eLceI=CBuTaUo$It_h*1U;i zncY~lp`-JU`I07+ga7#Nedmt=jz#mdoIOfV7*BI%^pI!vrrS&Be{zk0gS-bI1T-wn_G_ z1n@SGr)svk?}gIU^ai#m_N#l5D#+xV?d0$=j=ihLZ)U&ohQAH{-2VV(gH^CtFXOaA zH^@OAX$0dS9Ao?|({!0Mp8@z=Pw@4;^UWQ(c8AVw(iV0scpPIaKpltDy4TOSGrxc`}^hO7dyeoO*FBNH)Hnzq@o*^4cjPbp)2dU=1g1Pu( z;<&UeKF$FfS=+#oExdC9AXQKR`LMkQy>UMeb=b81ZrfYAwRtUVPmuY-h|HZF{V|Wm zy~-~c%c|-L9lWvI*&tSVi5%y)O?#8XSHxlI(VO>UvE|aGN}T01wR@j2c;@HFpAB{P z)-3!Ta~+H@GMQ#Rd}vBzaUc=bo_bfqU$pPUe~Uj9WV5rpzZ3XWZFRJNsrY%VcuQ39#e^D+xDiZDY!LE|?_Ce<_n=ARAC8_1(~^0uB)HXJ-8^4? zR4`^E{sN}IPcMIGPlX>1z8-4cFxR{ptN6kwmG09@d!Id|Ky#3TW^g$U}<5wCJjrwN1{dzR7C~ zpIP{8;C_du>R;OyX|Z2(HK;`qnGaXs44%DnQFw%0*<7@6%x8!k7@Y$CM1O^LS2xmV zS~EPC0#%G{8%_pm%{)zWsCbUajh3L=edFzPnN%=1JgWoPjw@uXqBx}_V>P+Hn(8~0 zCK($5F)HAL!3XPFx+TQ=J*kA=8?X<|^8leelmY%Vk*3|l6z^{?vKHtZJU3DFJ^o=_ zm&HF5+<14wo+G`ryNU~#k{fGq7_Xl0;aJ8`B&a#*_}1`FPn8_{kBvMxWvuD;H+OgM1hBv& zSmJNr&T?`{Jb|3_tY3%P_3nq_tzO<164~6si8ON@u$5Pb1KbrKfvzk>Qd%3rrP{gW zpC9eo)8du-MC#~bh?impM@_ZHeYN9Xm&-obHP!eVQ8GoSM<7B1q?>WU0O0=s-K!xJ+h!5sID8v7k1jchMQ>f2`+`@#P<;}OZ z$m%>ZdnJT+T7LXn>3Utfa>|(p5?mP{pL=9~sH$EEoBk6Y7wdm&(`~f4^m}P8?R6^# zdw7>?DxoR!0ydJ^UAfzey{JoTXW?HF-)Zc!*<3W1u`&_1M2Zx*Odm{KG5-L7)o%gG zAB8*%;$1>{eDrj*w#LG$%EX2qe zKT){w{H(VS+gaP%4eOQ2iFX|JA2ED-dRM)E&2or!JE$x~lAFCUCuxx67KzF>G0t~0 z6UTb!RUDm~`Ixx!E1z2USkI=Ry_RWXNngr>7bFaKZ|Pm?_?Ar`(B4Sxc8|CBFs4}- zp&*W;yvo8&PcX-K6w)jzN|r-|n(VA*hf1+yHN;z`7;9;z3S~X^(I%jAsB=xcSGvFT*>UzI| zt@RyZV>In6Mw@_Kq8>5_8RolBhn_o`^$Aums4h1J1Z45kAFX_+@Pp$1rQ*+rb}&gY zOLwNUv0WsGmJNcf^dvC<0QJ|Q_&>xRL~y#32~{H*KOxR~*F8#nnlq}MRZ%G;-F#W& z$*iDVI_g!q7tSM@W#5TI*BX z!=_1Zad2ly&zKPGBmw{|UyNrbjMpu7B?jQG(dbZ=T&+1-Gw82^p9cITqG&o+xizhh zwXQ4y1>~`-2s&j`aQROIC#m-7Ub@#?hD3;zOMJvOp?vo*{{TGWJ5hfMYMqgipG11Jx`ZW(^A~r0jahn*ryM^yx{eUuyqx_j zh?B$u*4(m!!FooWO?g+1K0V&}dP!jWExcDC{_HHvaE;rMfI;chcB@ennmuR6UKZ0n zBIxqz`sR}!wWc!%KiXJW)rUr2;E!C_%6>QaA*=Wj%f=_cm(K;DvGcUCrr4XArkmy_ z7H~2~Kmha9dRJ|0t9aAL?vq}%%i5lNh`vQ5(;Wb>LD190T1-Y;w6(ReOfW}s&N0&% z6iy1Hc_pwyqlCHRx%ow;e$ihQ?e)W^TS+AMPUaz}wV7gMCmlZa?EBZ*zYjIdpRFFA+p$noJ&z!w?agOF8#8RosV%l;6*0c-k~i5|>dc#}~fjNHVqHO)S!wr6BEpdXNZi>c10ZDN^U1FW@E^vn9R9|> zG1Pn|;|&g5y)tP;?*y&$#KhpuZv7cZ9XcF#Ij`3pBUFm|R+{Q1VdaR`9AqkEpTwN! z@UH^>tUqT@3VzZ0RlTLU%cuC3!!2cb8g7Vm%x(uePCpK{afe=|xvBfIIR5|(e$_f> zjAWJzTfIxpxwkUg$8@94TmV4`N#l{&5t`{W--voL?PKjJXMLvYdVH;Jn+c9ZeuMxyC!eKyEsw$P7JO0oRim!6;=7F( zRxc#CP|XQ{JTqlOki!@pbTyqS^8Wyri&G3rr9xj8hr&KQyKDad9C(W5#vW}(;zP+i znOOBClh?VTr}&koog3meinR7|BU);=P#0c}wq{(9%8EBNTBGa#0E;@Iw)n^KIxwK^ z@t(huPCw=+a%+pc*38hjDinL?wR`W1e`cSEUlG0`{6p6~J>mAh)2_T{;t?F;Xw)%X zTImlA!0=R$!kY)|74d&iAx?>9Y7hMNzK@T{n)_NfoIN@)QkuP&UnA%0VdpB6YCT!t z(fERJfQ1Ed=uK{DUM!m4bZ@hl0Pr?{_3P*jGyVzJ@eLs5cG6 z++z4-cCP zSyWf?9nUbg_;KM~A4-A)q}$!jiHEq6PtM)WE6BV};XNl!*YBJ~7`L5rw);R-Z}vx8 z_b(p!XT?@FPyLy1Z7BohWtcRh=%=si^sk(JP2&A8!gsPQ`!=htXXdpJk0}2D(?;#| z89u_kCU8||>eNX$ZO+Pjj&HF ze5~;oB!UYPFcgiruatjb--I3}`0wIdpY5${Rfj~japv92a9AT?;C$yi@zd77VEjAb z-9Ny75wy|tNb_lJ9@QpHliaf&C8Ty7ExcqC# z{9PR06c&we7_6B{OapLoPxKv)XdP-K*b!gpLZh0)8E4R_DZZGZvrt!8(l>wCi<2dIv@^9@0B9jtXv4tRT2x3ajBTLW(_iF+3xC{hSM zhXjH>>)}h^9RC1k_?tmX$znQPgqV>o4q{N*-o$$4yK}&=Uk?cTH(L82JBX<@QBk(% z*OU0?PPViASN5%pa}^=J(S08DKK}qWCcMwW-aEGc0EL07>h@ZVoz=R<8Y^5)A@h552bV$9tgg=nky;wyM%8ma-^@c zW0AClAI`kG>O8*j(JHExlW6RJXulrmJ}&VFl=?l=T-w`Ol$XjoqmEL?a)$mc0Oq{P z#`REweRI;bHQxiz;f+4b-GpH)ISidUV~Wj&-9|7JA8}qCM+^I>pH{M*n`rxs;O~p! z_}}oRUju2E>EYS!EmkLjbXnn@PVD1x+%oN+*vQ99`CH=8!`)Zm$BFNBy-o;2Lm^d~ z5O&BrFz2DKef^2=t_H7v1ZL6%FyW+)Rb_ve9B%4*ewE4o*VfQkc>Z;UONN#}UO_o# zBKtxS z`R*0ytKsXtH$Z7;^5biXFqz|SPI>$VW9phxYPv_-uWlo>Ym@{i>ct7c$G9YYYtWP| z{m_Kuw>Uo#>C)-m9J~7>GT6;g_~&^0S4nqZPz4X-L==YZ~94F3QSb|3H><8*5)yPI~nw3qCf zm9^5OG8_@MP*;(TprGgds!C60dUWdTc5?p!5G-WX9_LvY-+Ox`r9HBC{#kF%x<7@w zn$3MJwCL8)9jRyx`_-rL z-K_U+WXyqE8{g(EbKmi%_*&uh4;pGtBO6j%N&p7mQ%+) z@;;T{8!b&P+p*{VGSegRG{fQCU)~{7PtQZ75p825=R_&6GH^3vIoH|N6n7- zVO(d3i}-)VT9uLz%WHKkN~fmM-~C}-++GjxO}3q*T*oAuKD(;GZnWhuBf$ZPl3GR? zIVDao4@%?wVc@?M-)g#^zHFBM##U>YwF?OnOJvVEETo0{93N`xrHF%lj#{*vUC%=B z4b{(q{C_TW!U96#`Ol^@eq;u2)l@7IeX{>msQq-ck220C$Zm`^9 zL$)?T0375K$81+~yzMI-Uj$qiL+hUl{?>YJuZJy-^Tnr$5Q%)XFD#^SwMTBl^FGw; zFNxNl6Fwzr?w@P7@a~%mUF8rNF0Wh=NlcBQ0`48jWi|8X!5t3QSn<8zgmv<4C*I;e zGXrdkl2nt^jo+1e{=KAVUkv<0+D46j^UZY(ZE){6k(Gg96n7kBuRoBkI+WaJWwG5x zr!_0Ls?hq9!^B=6vx+fd@|jBI-eH2L-`=!h*CV-%v~9URya!tF4-IN8u^?%-!oM+A z=Di0+@l+$V)I;F;M-rs#5@FKva)n=a6JekuQl|K!XFXocDl@VuX7oRVRc*hv*qr{$Y4Na zY#!qsa84^YDw5e~a@4Yx_C5PdvKP0KT}{Z0qlx$o=8+@4b6^Pfi^V-D~ zjK*7h25Fa_-u1Dg+bdW+gNBe{PpA~+wKtDr)BHcG3ypSEj(2-@w+^YE4sp;|N4Dor zTw4cUH#xxPHS?CS;{m40XK!b7EEmi+`H_+e70-I;d_VCT{&>gRZzhrB`@%^H%}wlD zdYHc){5PQZYUbAK#5z2eaLz)-aMsBu&Dl$nxE>F0#=K+3y4)HDnKq-Q{kGoTCy4}N z@uV&090C?lzyY3>_8*44Q*GimjvM=EWsf=XrU8QwUVGOy`$2p(@OO-S6L)0MTj>|2 zKGAJGvMgp-jBg5Y)EsxCmhSOL%5-5n-26BAvRS?=c*wh%9P3x5oPY}-J@Rp{8C=Z#uk=A zoqqg{*ce=bI-1z=FU3u22n!LXcvcg@I*g)wmL0ajhp*KB74z4Fz9TiRsqqg(ZF=S< zxADJ;0_nO=RtKK)yG2mw;{RpeEcz}zU7Q)?Z?i=M}XPevNf7+S8R6okR%C%+8 z;=ix!*W`D`lx&^9uj|y*@pip7unoqoeSLdw-*$a&VQT|_*E?n9{)AP(3CJ$IBjQM4 zw-+8&s?BcKHfa)#rN7m#2?L(|*PrSUPYuM9N@BBf%g;Q&Xt+OF4+H1`uS)nKrs&#@ zmZ%vIIASn2FgZMawVed#K3mvz669x-{3-pJ*W&MwwS7ZYS*-LpC)`8} zhMmq1)hD3!HTQRhEc9=OdKI>hrdmU%+1sF0wzglJ>V40tuQY}m&kR|$ri~Pq)`g2? zwpiz_C7z*rkv#V|8)A>N~>`DOnAN3~Ul zJzJJPQ;-MaS-Ovlw7IVYVmNMZI!P#y1dr-ZTJgBH3nM%T9BE6ouTrtZ95P z@bcqPxe{I6mVr+qHv7i7)KfaHdfu6+=-TDuc^0c8t8Md29h`OtxjwbhNF{4&CMhZ+ zkGmwLcY1yv)t9DecDhcUv4q;;(8jZt*SO*&`AeBxycl@}iTHN$dx$ zQPd=lP@Qe9)6I+#=3Nx!{g8hO{-@iea;EEOm5(e-n3*<6eJ;Gyt(g7pWl0Q0%>Qvy|S?guEh+c(><$4N%(aZp>aD&7;bQ&j@0RO_lDK{p}_1b)IVlj5xyh*K(@4>n+s(( zSAOWE0KbVKeKTJ?qh74JV)bX(N_1f#dt`kN`zZV^pW(NFbuCL!yEc$&QY_Kiz5>R8 zU^lK?Jv}jBLwHxj&u1G!FPM-w`ne<+8T9u2eQJF>!;60uPj_sP*+9eW_U?M%V{rrV z$Dpb1Eupn%{o0t%RRX@gojyn?-u6C9txst;J6h*EE~6EXh=!nwyIBfIqns5au0J-d zFA(^KX{_vb6PcX82*v;h70h_fdGza>d(A!pbQRRR40*?|zC9~H#a<_hUlPBYI;=KO z1w7zxVUzk|vy$j_QkOc^v3cR)@ejh9?}X%(K`y0c>1{Fp0G4xn%%uAq5PgZS%>Mw3 z{{R9e&^#mJDX(|7xuvvHUE0XIB(?>B`9LLPjhB0G9n&0l`>$O1_n~+S%J*5gnZUMO z!m<77TWgLz2P2yJ)4^Uhlj0x6?-*(K*6nL+;$1#yV}aj!8&`63>xFO5w@PuPYv_5^ z{hO+q)=3{fcoSc3KIA~nxGN4o!TK8d6GE0fLtWE#4W*RFqKku)=g-77-=e) zc~gB4&+D~~ScPZ$9@Rm}1dQ?1n$p*xlE(H+X|3Mc<~A!NZU`zzY!Q%a5t|K?!|Ul( zk>l!#jH(WEN1O*a{Bu=EKDqa%?knr~QySR1vy6PFrFB0KJV?4Xh~Q~sGAyhUrg4++ z#c@HnC$(tkB~Gg?zt_`8hSN9k6piCo;czlXuoI(f1M zc)8EcjvF74HR)d#bo-?EmXjn29(v;=`U;0gCL8z4j8TWQ9eIW9O;M5 zF|xoWVxKnk0Z$$CfPWh5wYa2*!WtwJHhk8a>Rk892&3{t`PN>Aqg(18JkV{T3X-+V zDEmiDkXZhvyuNt1@ak*rCCh1QYy3dfA4T}1;q5tO0@p~jx3!leb_=fQ20!hg8LrmT z!GnsH^H0V(v{+>eNZGF2qs9ki^A#+2&070O#dDhbi$t!;xyb_O0S;LhUL$ zJ;+m#f!F2Fr%*pC>3%M1g2&+glO765s6%TTj^(h|5`JcA{{SIOYFe5eA^01A;;5n3 zygM`yNhCtx>GzW?DQy`Wmd*J;*#dRb%C8Efd+_ufYhQQpQ_C2e= z_)+6qt!Kb~A)mx|(tUyCwXumptZc_EBQF4daX$lF7Jd$Yikg+(!x>=G?a+j90DFnB zcE+2yCvNQE{{S&v_HRHM$i7h9O?GkF%s~hshGG0a=n?`Z;;mublq?X%7>@@f+e6hcLNYo8fr2 zvBaCOBHS^MdFp!i%{Rw>E<~HjOPgzZ(enQ7%QSxZ1dRSY>&5j=Z0Mda)9+(pB(XW1 zH$1Z7is7wzCYjYu^S)9a9bCs{<9n&CRZ!SmVK#BXH&4?Q*J--h(Y4f)H(_ly(BK}c z+Ps?b{pFrnrESe2CoSBQ{{Yvn{{Tm6yhWy7PT;h*Xc)NeGsb^U%C*2xSt4^PN-7+v z`ftJd)~eFRV7T&-;}I+H!?7d1dVh%ZKM~v8+uZ5bt^kZHLZET(IIjlyG2&#@EN#+K zi#5OQ-2VU*dVZhEzKHOzietJ~wwlqNB?S56JcVEOkELmd(pEB{`J<`jDdN3TMZ2F; z)*+hi2-p*ohsivZ72NoL$5tBjf%MDEZ!nCQE}vumBeioM7xgptRW=qgExe?WHrxlt z8ONo3zpQFEdSvVb98R2oufhB)%RViB z(KGm-Ya4lGNwr(~W3jTdv~8&ZmI0l)&T)~~srIj)b)SqrDZbKP+VvJmg7G0zjrk5L zhr{m@cz)-{I!>W|Yk6%nGmDZVe>rl4aUVB7!fAU(m%FJqzP%3%_}BjcC6~v&Kjc4u z)Be6BqNsdK)vfja0Eqr8)h!vC()U)oxrLlziagHBNcF)KR9e~{t7G*a!7Zb~@h{@M zm(fKuqsChMk$H2n5sg~t1GIA8dRJ|Au3zg=7_`e=TH_vXm-cIA`Y%@eab9)cEkj1q zemHzmmsfa%Qux2bJ3zPI;fAYoj!zw{(e>YpR0#CC)#=l-!^1N<6q1=sKUv@vg5$F=>%FwLWK+hZ{!380Y0)=iJl0Bk_a7 z_OV%L`rBE-u4)S;aXZXB$(sb@Y2z5Go-FY3o@uNtZzX~m<33!G926%9pK*`MzE>BS zSIhCVsW^MBub-ja2u8gbI5X9({6(f~HZfic@pOzn>Jk9g*4qm#GW&Q zLA>4$vt-cX5ym?Z<8pt$tO(@w>$u*1c;l+Rds*Dzc@vSCD(2ro9KmUOe$W zOxAb8R{P8u13ynwnu$&;Ndl$K7WY48`~&dgz$Zi&UL0*BSAx?J%{*%z!xroN#vMsK z)|9^vuVK`IvbFH)S%*@0>F3M~-xxU0rF>2M4Sv>ocAIaccwXnj+P&4??W9rOYBtv3 zLmZLKHe_SQMkS0B*oynIABvhBiU?_tf3$#qTG{Eb4Mi61G+V1JOohI;wzb`#vaPTI zhx@>ee>(C{ji0h+pYh9Bg8u+j@g?4vZJqp>Y|&i`l~IP>*Y4->uSC^8B54=4vWQwp zqyU7Klwcm*XP>24()@p?Tic+yyPD!qpff5Wf_*^EM3R(j!A&Qj^UQznPG1UWttIsS zHPxlHjt5!c`y@;qagx}fZSk{oG2V* z@^RX`&1d3&|p3wZ9eIZ?(B=D^wsnigEY>T2ZGJw?b;w za?$E~B+V*9JjTqYfTN;{f>5gjfxc|1KU0c?4MFDp((S_>0C8ro1dI zqEiw8BxBb;g0?cb$gheLskI|Ysc5dQ#pwto}Syj#G(5@dtNItIG;3Z}~HGRGlHMjMdd z@Dq*&cY1_+t>uOHg~S-T)bGu_h~OMFV3t$wn(|wZ3)sJx^eni0C!p_@OgRVg*({^jgyghdV0ScDfK4pY}fDWS> z>sy~3bxY3{cvHYPmhrQsnrqwKN)AIjP7`S!pa66J-FbGNZ!IN>(q~eg6mkgq5NnQ% zl_uGwDbuHR<+=37jMgs`_)gm9LQIiHBn{jgVTb8nL=+ zof}6p+a{GHdgRM0Mr4tZahUQlcI^iob+3{vE<`ftZb0YhUh(jI;`OhCbRQ7eE|eqG zwOdcIL3tF-n8P2NE70U)9+<9kOeEt8``ZiqQFsql(>zCO;(bA+)Zy_QD|Zg107Qmk zfw^!83^D=EE9aYt%u+HuWmtBvr#>c2ugT#ZKTgf%&W&diN#)<4H_MRVFA9+@@s zo}+Hj$+@;V9*l(T`g78i>}QJQ_LoLU1A~qa7|k>gzwCiiGI|b85+di3^Lk>a(ajS@t5pdrR!I)YgQg6z0)-)lrekDc;_4syM;0RJJ;vW z?6KlIe+m3|@Ls2MTgXfJ(XrHT`9Jn-*WDktxz=IRv+#CFp!B4vM)}nv`k!UW;Wl{I*lvBpa4pgtK9W&_MPieif^rL{`b91fB96)S8=l8V&0LRkwEU z*V41*<(1AFb!?M7x5CM7tZUlj0%+~+%tOgH{{SE-C$T+1&0<|Gu9JOn5!8#vwC`9+ z*xsC0<+L_)T-`O@tXDv;K#+I*YZm6x+Bw+AZit8YK>MPtVjZA;PX&i5V$1Pbu9E0h;EVa>LT*0Ghw)$aEcqLG8{M$9t8K${p zYZk716`zZ&z9wqk8Pc^aIt_BeS(ICO&nb%T*_f^fa0$ZhJTM~(T+hWDUkP|?OGvyS zrOIqA?&q?TP`$Wzo@pb-TLa|^a&Q8U1!Dfo5W;+aCZ{xRvFLhj&G;_a3PfcA{M;X? zs=A(|H;H^7;yBV}Guuxdp%%~X?kOkpTDILboFr0=WqYHJ@gAvjq+Cp43-)q|@Uv$u z7-#gYe~0$EkHn1+TNX3R4zHywcOF=5q|g?_@z|*6t!DVY?AorArMizU>KIzybzYm1 z*aP`v@~i&81`VM62j;;s0S=Jjo+vw7M$7>MNEpF7TlI z+<-@|WhqL36S=J#YM#dZ^2@maOod=cQ`A?rd>R5PO-j<}q)}_O6GLw!AG*=t^Z1Nc zfZC&DVZBFs`dd!;(I%y98pmc}xBlo}AM5L1AWJk+YFBZ< zL5XE=FC6d>AJV=50N}U8ZwyDLEv~l|t$7*y(@nNE9@qen&b>PE=Sp!r+ATr2v(dbF ztN#GPb!TX8wMg`ku=#&xWMG8k^N&qR>N1&?JN#VQA8Q;IXyP2mOqODRCM1BY1h*IqDk)W?#@Dsl-Pj#ASd-Ey!RWP zh4iyNR*?9#VWqHSj1tE&i3+c-JN{Lb;0;RKOZb6iZ?55r54CSEEG0(LIpmHz*Vz96 z5qu$I40czsI{mUZ#BB-=U+d}LlV3P^i%O0=tF10|g611}H^(ZRum_L_91+tsjHAo2 z`6890q4O_`><*RU&1%Ttn`_zOIR5}Vf1lF1pW4es)U19t{6p04URkuuuNdq90A~oqtUGl}l`4AzNM^@;=DhR7 z*ZO_$gf#1Po6Nn9Ln01J^TB zxIf;{CyM&?3ZV0A3iu?k=%M$0bwH+V6^B)GjZ7wXcK7=0_-@c#b_r;>Pb#yVMDPGHt}aAd*dWzAW$!_K^%9ZMH;tRJWE6a6#l|wv%+9 zJJ{&Ms&&`1PSWY-dDV}`-y7LQ<;CI)he9#7by+`F29)^oRM&Aft#EGNcG9~513s9p zb6nESm8NR7T^Khn0e3pAePW0UTZ8#w4|S;+pc%dyd&1YSdZha?Di+{_Xl%1+b1ap&KTkv1u#NQD7R}2dm{7bD! zmhy5q3!W5vo}Zn4(cy=aLBiUVw^Tw1P6o_$t(^ynjpZjFPwQjPt2KuABCgMwv|ol+ z8a9}9EAI<@MDT~%?g0`*bL891816d@MhNIXiy5rH4}Q~rH}FN2*3;=)oY(U^C7gPN z$(AjuK6iN}V~lZ*mG}08I+h7JO&oi0?c>qgZJk1b7dVeLfOXTU+%!#bGY! z)kZ*L)E2xlXfN3O8ILfj5-SXdve_)z|pj1c!%OI_HDPHVWta# zj4>_9KA5j9i{s{%KCJe-j+87eiR#KS-udrcuZ;Xpq}tm}G$Cc<=UB#f9@X-s^ko;$1Ss zL9o-zf+Hb5RA>t^C%y%I>96W-r}&)76Rg_+O_}F`(z?$En~hfH=Tp9y%#l#6VDwS# zO?D+}co)VCF`)c(@bX$j$kX0SsI#cS-cSZVnil^6fme?FPVoG?PmT491{q(sYlD#;oy0{)_x@adg}+MikBA5RcJsq}lPJva7%oXa#|g(j zR4H7w8>?MXj{1Hl1|>LA_MT?w9$+zQQVK6L-h_-RE5S4 zFgfevQR!w2*;ZBCDzOZqaf6!r58+<6G#yt?ziWdT6RgkQVykB$dVn)tb*{w^ivA($ za$2HA9qs95R39iTdB!_uHQSHELl4T~=y=ktDM2^6*MDWtqxdICh87XYG(p&b&&+fD zjd^CFY;CnGn7Zwdu1D6sp1jg6uQbTwD6B2eD*XV(eDmU)V{5M7M}hvZkO$Vh8u4mZ zVy`(@C%bdlQk5t#d6|mKt2uB9E^AE%-aZR=*B>MQ0Yjqf4rrNrk#f z#g5?njy=fQ2fl0bZ&T2&(k2mGA0(WTicNl=`18P*jp3a_T~hN%g$1;wq?YNXanBeY z_4%pd8(aHpnWK*4c0lYnQlRtcRXruOk5e+y#k6s<+RGE+m4Wx-t)`Pa$Rtp^eM^ke z%M|KpmVXlIvO~DZ9O)p~;ai3Wf_hi%mZ_y_zZw1;ww)^&puL4dd4Xhj z&N}dMpL+aG)8+DKRu0jSau{~6tG{Poj`scw*L1eJ*EI!5oCbp^Vs#?~HgJ2_WeKJ3 zzNfF3;$uy?PiB1?b@0a9_Hw$kzlX#TT?T9{HwlL$AmagtrFPy=gnwxZ-?3|Y5xa&s zcRP8-2M3OX8t=7z14H=1pjuwrT}f{vsFo{;fZh0m_lH0Idh=_w@sGjHMdz~7Q(dre zvP*#wjD;P~mWKoCYqHkUq3ueFgZEds_v&~z$B)^=!`};an>e(X%Gh5kO0hQPF_3y> zo@?ii9mQ#(>32{=YIisw%2Va(Urc_{{ygy?#4~GsVWk@=?V;GDIF)iwCxMap*UNq} z@GprhyfQpPt+)_hO3_;)wo7dsk_SQCn!=`^3F2cEedS45@cDB+%#KlabjVy(RyJR3 z)$JhKL{dts;Bk?jYWhUN@?>F*u76sInAym(rb{Up=aE?Kd1`jp>NVd9>6U(6azw@z zMk|-~IqO`#h0UF&r4mAcP`1YBvEcrOw>(3srlk>%FvDzIg89o2Ps26BNtotlQMVoa zD>m-V$kpseEu7Hm^4hNw`Gzgr{G^<2{l7-CXXMszTu`=L!*qHx4j;c&)kC=S!-sbZq=SL*WmF9zWJD1}2sp zZ7CRaK4b2X52A%Xm2kQiw_~E*PjfxoFJV2L*3!iq4={%Wf)9K))6b=PM~oNj9|kl# zJ-9l)r9Pn`?omH*hX zqy@u;!8s(>Ux2me@YjponyZabm*DL{N zC5g^R_XF^*CjMIw6Zn-yjk0Ml6dMArRfrt$JD=%VILR$h+M01SzBFkc*xwX2`(-;| zmf@~r$4p7{kHhA!5Ml|{pN@Fqy_4di>DslAggixaEQDU^iwu%Px!){bBX#M`d2;AC zS9d7>TgPtgpFTy}fqimn6VRx;qI)YdsNBH>U%Yu-BA^_SP5}LD>hA?#US51&)BFjh z+}g#bBv9#J=|C97ajst={{VaD{7Tt*j+`*%WjsZadaa>g3KUS~J@`efu+N{1mp;JPG10P6+j0cyCI0F7i4+Zh|V@}jn9E}9~5}6!c#=H){-N+A~l-OIc_=(sm~SEpV|+_ z_P%Uw1;3vN%&L}XT?Rjh1<3qsW8yq__IgdWvMkuz>2Se#(gE`R@rtM?w%{8dO8LLS zo-6?RKn1_MwD_Z^>eI|iPkN%`2Zl#%Fh1BnrD(BE+}x|~Gr{{x^u46?eXjeSk+1&J zn$EFlEw}dBwvERzTE!G#{Ys!et$F2_#EXdU8LsDfqi^C1pU$HAzu_qSFYy;!wu&(w zxtq*|0N^Wpzz@$Kg>j_;AY!JaPifM}tqN&%xtXtAt>(F?+#$+Kb0ms!jtdh-R=ZM{ zQz_~lhwDXPbRSlJ(%Svq=f#hT8aRvn8V?(5jpjEaCsMgQ5BL$U6>B)Hp9Mza+qwGJ zwSLhuJpTY2J}25*TgfEt<4ttP$fdvLC3AuNtANqI9cxS#6(!^x?SLtVlegybaK!FnNP3b}WN)bOH{x#Xz+Sq6i zXT$n^jgte1k~l)KAMXK^MCs0|w4IT3y`?IVsZLgC{8RXY;K`Ux1;w-4-&^P9b=t~) zmCE=^Gb0}`VpKa=dK&$n_{;DM!QUHnSuQo$1%|AEl+~?OQg%4N-~Hw3!Sw1Y^ApG4 z06a_Z^Ts#&dg*spkr@fMy0?I`PZ&Hn#&Mrc)xjvvig2FY8T5-2PZ3c~=`N=vB#k2+ z^HpcLARclDKU(YjJMeSGzA3sfrHkp%sNBM_hV&vq8*gV<*PeneNVYkKTqn!*WoPay%H z8QQ=7dh<_*Q>KT0@-W$MEnNuwG6&`>x$wMj2#xH_hDl^C<~jNd56Zo`EfPL5AQ#MIJ+6qvjm^ z(J{**{{RZ;S{!oKA2EK|zW^e%w%%J<7`(_?h>$qktfUY@9l_0f(c%pr z=k`qaypY<==i!%)C1~P8PTex_^j!8{cs_^yj$$+^sq;1IFx-&557Rn+_qvD5DSWo`YZaIi$S5-ZC9xA2!p$HB;i>?1KiC z;ai*iHtO-FgcdQ%cZMB(E5yDM{7dmah4mYM>}^f$X2B1%1C%2K9FF{cRrCe_0L2dx zYT6T~rK(&@3!p|qLaY8&r@JMt=haiGM-fWWTAvMT9ve0jvN_yyjIRQ-UdzhJLP4)? z@o$A~rv_#oL`q2te)IdEPo;TIuCc{Cgc(uBO=W8zH(CypIeBf0l0nb&rASHYFi(25 zBPx@}dT4Mt?^JVh0@|_=+d=j$!m_=j{B_Pk zlflM6D*TJH)soD9?HQXNc%Jp>{s6wYx76+Lt~HPB;<5${1cc200D_wDr&;XJdkc@L z2BP&x>CePpgnDO;wCQl^V{)T%Tr4WsKH&8q=Zg3%_KceLKM1~oc(4g{JBbx!fNfba zz!C>+<2CnZ!4HZl@gG1j%LM6nXo`|aDi9^(sL9TLweyGVz2T@dVH>yER^I)~EHK51 zSmP{Ry)#`iS64@?jD%`Ybs~OptAnUF89Pr(Yo_NT9ZqX|#J(4wPPl39!ibL`0BfEm zQrJ=Ro;|CE_I78-E2dSsNo}^=#^gK5R~X|JBzgh7h)Bm^Kiw6m+G5LnZEY}OQa$Wc zXOqtrdd!z5Et^2#cBpz-a-5a9OpBd1*)-LT;zvG6D;s+r-=1o<(H8z6f?*c+vv!X; z$k^P2`R28}O%lf)v|B*jgbp?mR~^Z!=2y_^b)u!A=emWH zN=kKK?*YwMw9wnl3?2Snde?mVExd6o&obbiV*}=@Qz{t?BKc|46|c3nheUBLDyv}i?^g$N9m^`Dmrdob@ScLZ8MMewnGM^JWM?RV zj>ElFu+#q0e+nW-?Z0r}(2>nJ)^S=IEKbJP!f4k*@PCfHL^HiC*H4Ad1iY=5$Iu}B z>(1@Vi-p(-Vr$pDOQsJG{2|ix*q6(fSHGK3kxAq#;x!*nke|l6PlY}hI{yH~pAXnd zgvQrs@`L{XJk;)Q(M?m9mpbEBG<|E}pV|lh6c5GU3F-IRmBpr=W2algs626*OArQf zxf$m@``6IF9KYbBzX`lk;XB+);)CE4i&T=<8|zSTp-`&gxbKLb6q8Ge z3&@EuGh+ng3eGjTy~!&cm(|jTJRQ;1{?O_*D~}Fqk*Fh6)1#1)-GCYW2(C-u*Mep7 zuZ``k#kro|*-gyqM;ILe`jS6d=)6sI+P}cx4BfXgY4C*oDUy#QIygalp#LT?=vt;AYEomq2q_;R_89IEi(Vv(<5N*E4=F4| zoy>a&MZ~NzMRcFEWvAFbXitguyBa?y#Tul08>-^&QG@wWR&+&LDIc-F4DR%+U-(O% zwA)9&9yIYj>w^mUjsE}>%iLwLlYxQwSE6a2BZZ}qt-Nu!11g|b%vPQ~Zw>g1$1tm_ z6!D*l4%Qtrtll5%SM7c^U0f`sVu-$Rxkph-@kd&xbeZ)b@rAXbZkBw3)G5v@nASci zTZ`FZwPh!axi#}{x$#QwD_JCxQoFx|*BfQ=4tedRm82k+I48KHoKB6;t8P4Q@(jJe ze*I~>Z^YEIxiQE~qhtU*YvhZ6iES0bC)y9twQ2tV!f?~5b(G|CIj7ImpJ&kb4;B1( z`#tQiTm!KQ+Y0bA@9SQFXX6{s8*2BnyoBwK3I|2W;0oaUS>rK#YZUKk9nkx-upclz zjb(U$#84#CM-#QQlK>Mu4AyPkgMza={{Rs9nk^4cl^S(-w~fq?7xzHP$?sl4@Xy1q zcK3Si=>Gsq)MPUJ-@t_A3h2B;XC|kk{fZz=my)b5-jU}ne<6>?yA1Z1=t>iy@-->8>rI1LD98=VTnbSNsa|Wb;b+d2H$m{eq$^1+3J-@`L zH7yHKh)$3QZta2o38G-?N8&Jji52T}>KX~;J?U!BU&eQ zW@RO*@&2c&YL?op@JTC8Zu}LOkTJ$97UJn_fi~oNWdpNQ?aV@H2g6Q+S~aS{{X$Xae>d>9_G5e zJK+wYsbX8H_NnBE`D*91p9$Xyw~Lmv1a(pT>#)*%H{vUoPxzQfAw!Vr#2U0q*K~8= z5_}D#cuT<=rR4HWEyBR+h{UPfRN}upt`+Wf+o{7&%Ac)$%ll6Fs_G3N`xfTlOK^}p zk}y1w6yr7U_Mf^`$Y32H#j4udD)BRs{IcJu7?D%J3e~* z)ysHBdVW;t_Ia(fjsfE|)gT@prFabTmfq|4WS^Cx3;eT6 zTMHM-HO0?iF zYdRZ^ry+j|(t`R$18G?OJJl<7E zQBU7T>F>ec0$Kb%@O8eKXER(V`I=cVmOq7f&+WIP*uR8r@9(az8by|ZytK`xvfYY zWt^xP!QlFe-L$oJjQLuZ=+}h0r z#4bYuIpFuK>MK~*wHZP&cF~@9;x^6vabxBSyYu3+^#+l(ZHhRJK+n)s-x1IM02Kwq ziUHVFMtueiL2BD9ukWP)09g4{@7Jy=`J9*5!*q-7&|SJ=S|t(yJK)wQiQ_S9*DcC!i4eM41Y?>#l~EwM~PGIap{+Q=38Y_ z-lcw0PvuxzgyvhfWgjTQkHWnScyM27HgGeX$0J~Y&>nGDVEBCo%shM0{o{-fJ!z!b z(FxyE%Wk4k1SP)vCgKOyvpl|b_C2em*0i&3zI0?X1dzDupd52pme75s_85S}GlBR} zbVgbe_<(s3*xQaaL>PhUc{PkN8Qd7D9M?gvKyEMRe0;guxaSAS`_Xo{HDL;JFM0=+M33X7VgRnh3tl$GNLW6=B$ zZu;NDPZQ{p5U+1EH&L{QjzLyA{{Vom=U+?w8U49m;ID%;KMUK#=UM5n2vwncob_YS z9$1st9M{gj40L#HHH|{fJI1(&QPbsz%XPsFFyp`bC-bbo32F9lc&5(Y>qr{3bIi8u z14_tuGX)qU>s<0_JD}$3k39If;-llQirzHwBPmm?>sPvo3@}HVJIT-e^+iSTO41EK z;%|$sZIDH62C;b*NWB#V&Hx{P6jd#bm9hE};;)B(Ht`>iJ|SJ{8dTR>YxvK^UR;s7 zjo8($!*EZiBk-+{hkpkCBj4UhXAg$1Os9}1WkHW(O?2@1L&q2XC-K$(iK#;kllafX zo>VPzQHC{(z<9<7AlK0!0_^-r;qMGyUTf;NdYd_p5+n{r>>_|iY_RA2E5MF6r?#9q zY?bN1;O)P9{UQ&!-FPll*AKzd{VKngt6Rz<7P3Wyf+RvS`Pb{Whcw66ty1pkVQUE_9$a_@ zSyw+W`j9d0T$jcV2k91CI_j3XUYujJGD|FyuPjDR&@qF^=t%S&;AHiN<`{7BGs0=OKMgJNBYI??+P^yBy!dtG4i~>AoTm8@ncq+h0Ns2pfq<9^jHc5mmG=6!=F~v0JNq zgoPO3tcl8>O784!pwx8x8*N1dmiHelfrfZI_xG(B{2giGd-wA6`&NZ>%AiLB)Ed<* zBOa%n>b@-SzLpByUCHJV!bbrteuAR#_rwnf>rhjPsWDns^|#z+7H%l`lYJ!-Y=Be1>JZFF@{J5QHp zK3NsREBk}c)@AJV^#3(y>Rw3T^|l>N_LIeHuAPRcU=BIg>NcSgjC+l=T+l5I7RA@G5F!C z-f9u+7x%5^U0ok6IO(+Gf$f7{4QFO;7DsG?;05;;?*9N3yd|h<{u`OD?(OD4XpA= zdxOnmd?)Z?UU*Pn%6zG2x-%npD1;~X2;_9FA!hYD@REwF9%XcWjj#T| z+8&{#-Ml)5(7qPzB8fJI5|8M9mGGyIJOO>+eRA(jzO|Ox;sz>KQG!RWYW;!LJbj~R z`hCsS#p-Q_1)0K}o_chz&u`nKTGB86Cc}BA5t;3W+A^da;~4!hTi2x+B;tJrXN98* zUeXH9A1lcKQ<8FhDU7Aa&q|u=MP~V1a6YvFInQe3K1SlkcDF%OD*^x~r9p#IDaglq zV_Irhjn!M`&IeJN)v?#w&=0bK3v@1dKZRl*l(4uB$jBXs6-n5;+hexT{6`Z^Jks(x z`|>f|aqXJy_5T1CuC3uzw6?J}@W#h8I~I~($FQ#@(%cKk!QgHc=!zp-A0%=;D`h6p z=uoLEG;{hT_nCH)oFUFIO?p0$0=fnq5^xExGrH6M&33m5^6WehTJChMY#lXOK@N-4 z-nORn)Y6l)vFcw2ziB(ahPv(kktNApJUQH~n}GNBu6N?U#g7c?`oG$(&9skl3&>)N zXbet!*UnnEh%RpRo4bH^v$^1URz28xK$Y0>&}O1luB~G^V`@eo&1#L^U&BwT>T=xL z6)?)>i7mkIQ24IO3rlT2(hxQ>d53R)D=D>kqqGsDuwLL)FQ`d*vw6>yf*?ul*ZR_o zuc5`xo!TP3A8ELSFbG5oT?MOuWycl*xK-MF;B_C?v$X30cJfF`03M)qqgYvD5r{Yk zw{ur3q!HIsTHnNra4tN!*Uf=^!GY8cKdn)l;zi@ZEPGNg>Q`_WBD1s^qn7(?0F5d# zIPBRKjdrOW%c7$d1dJZWv*wYqlPO+YO)Oqfz)rtfW`}GR{LPFcC|sZAQ!Hn0c9sP4 zD#q1Wu$()usJ$b5@`fuAVCCh9@UBv!?esy_lT#y`Kdevrg z1;cG(qo+!`=j ztQtbZl3OPS9@VXU&3~bzJ8pPpVUy^ZtVG z=KSW!I3W90j-RVsMU1g3pD@oks2bUke(AvPQGm!#dUv_EGB;(4%TZx}5{RWvWQcS= z;<&v^)o$)yPIAYw;I-Xa9ES#Rb5U=6w3{{W8_t{+NJ^GIA0iiEH|4SLtZpD#lA zZ{l5AH1ghMO9)Tb=4^lCwA8u1)1no*z1DoW#v`v+)MueeM-mr(Nw%Z z2-meBdi|zc{{Y`+itIggsy|t+q41@@iTr1CsB81tU!NLykjrW%AqF*@%p7}wKRWMh zziD3#_*&Lg8kA0B*mf*=2WiOsc(0lD{WjM7;)lhDxPc{P@ut2M$TN)UcRUL5OL@GF zbgtc@UO=qGtX3qt5!}aB$f0@B$4*_kN*H`&jWb4 z*xXGm?c>`n)gDMtgtkr>KBMxjE6>`~!}^+ACYfP9^|~pEB}kGWQ*X=|5(wm;Kl;`1 zK9g%EsVEGLA~Gyx$IH7tezoaIrH=_l);3CRTqtnQ!TFCk{HwlIDPh!U!CSH7LX4{3 zZ)5b6;TP>erg)o7OIH$F&1?iq9E!eP(Z+WJ+aJoj8}^C#v#g z*PD;TxTKQkeSSlg!xukmH>6tAx#xaA@hkXiNlhvl)$Uz?cAFs-4x!=A zHrjb~lkzmJl0uH8u<4r52EB^*lG5i_6i53;A5x{NTDx^S?}t7xvGBKt@2_A9J>|@& z%XK*(#Ggv#{8i%Hy+-HFp5^A6LULH-R}G>$*uX-n?j(WFf5xKJFB(bE z2FPX`bJo3CyS)#JqXihnc0E_X)-&oZ^BaVfVO`ri&4GRS>t2y>Ah3XoIECH89Lfj_ z^aR(NctXXkv=_L!9#V45;NW8z=hn8g*>u-AhfpO4RYEaZr0gn>S7WJNQhhw`xKs{# zAV0lpT6n5^;I@{@upYa6))khHy6wnIMlEU==9$O(te&nB2d2 zc67Zz%SZk6idBg8HOt2%%`(Erk-;b4nXCAQG@H$t!sPs`O|!U;=61P=9NSf2^4H+Jpk*IURhxoG26$SmTa2ubeokCU0X=QVO$*a z>076v7Tl?KJQK_WbCQbPnAEDF7T-d*gY`)K zb>r!^iDD*5wJ~z?pSrN1$Y04TnfQxsr{DN^&d@9q$nNo7bp9iQ>UhOLqiW;fx5C{+ zRJ(sJ?^ILvXmj%{cq$wI1l$j0Z&6=7Yd$g6HOC)pyOuzz5kodYfxrXWy?j+TyF&US z$HPspe%hK^&buo{u*pB2B9b$bLXS$NplEl#B))hopm~}&-g!3v00Jn>G5jkY)@Y`f zEY}MRVDin9e<5E?e$M_O_(i5_9!t%sN3J|CX)Wc@{mX9P;d_6a*9BVfryf{tb;g^h z+hv_1C(!gOI~Z3H!5B~vQ|tPZTKAE(x?;+^e8M>fulUQt5@@=zS}Uxu?hhTzXDKXa zqY95wnhhgIl1AqMoD*IPcfHR(YgVLqj=K@I)a4Q;9FoKjdZ;Anjy*Z4HA|<|FJ-xY zS=%SJDi69k^Im&AsU>pE4ombn>}uk<0|&ilLdSULA6mXKkaTKGxI6;i{<_05s}K~i9rHs%cJSHHIHucso7BWqs<~vw7b-&VX{`C|7wJ#H zP&W_8lVb2gWYiqJ28H93%{flPlhTxe4o~JN-HzXlR=`Lfap!?ZNFSF<6^1%fiv!yL z`cZL<1co<8?x&@CC7s`&Z5)I6hhv)aRyjNjS54u4RYChatN7~JJ zFv_1=(bJ!K{~iq!H=Ud^qw37JlIvA_ni zw{Jf&!St@5#n#JbtxpgeNIc@OW(oi!<~7YN&pK(RV?OF4k(_58h^jCKY1LG6PAhHW zS)=Sel?}d|w&fXL1TZ|)PRz;oM{%U+YYu@MWB1=S<6N$*ld0iP5JE{F{{ZCIrfK&u z-s#w20{}DmR~e`2LsHc*UxFl^A_E<_Wd8sv?RunkNh>Z>kJmJ_qFmZ-d^^IDM zhQA@10h6gdwb1-QfJ@?;QYFMtqM#m_6+=(9V#5Gn_pIDfW^Gy772(l=19w7s0;QKo zSYH8h4?|nf+Nj}%MM*WTE5(8OBIdebT|QukAGUr z^2@e*`qi%IT9wNYD7Mn%euh>G4}1#sFA+q#Kf?b23TTo~_Gi3PeJdaK`CR`1z;@S} zYR?^{Fhbb*7jqAK)A0|)ANW|;@J;q*)7A*YF+h*F0HYj!RjgKyM@2N$T#pX%Bw`;C zYLSN$1iF<&kK)6gXr^nRjc-r~sJN3q_tB!emdN+x@T2sbP|y?p7DvSEsdYOmb-MAc zzC?1$1Fqdx>3JW9e;VMM;M@#_Ql8irF-3rE{unMHl}S3S1R;RU6m#Qy;B znCWP#AabCRFh3gaB+)cWo3yz90ECB3ET|MK$Z!bnUn(CNW2x#py(sa3V}L;a0D;uX zHRmNMJ-t83>x~?i5pjxo`JZFxy6u;Q?Os8uSn3x5vnjQFpKJ=^d`qiqUO&IMD-^nx zqc9;M$tND4Kr70AAM2}ma#R%rj10DG*et9syeJy_dx2?o2KYcFTmmo$uQZ$|RsQwp zjOx|G;8*(+_obpZOFsz@13?|UzFXg15UsTQu!GkJjzw#HL-Ad%f#KNvJ)q(xl>=Pd z0t-sV)QZvZO553ZO5*DN*(ATXMrgMTlo;wiD*5`;#An9dHnP&J9i^6Cmz9qNByk)dU%+}di_7V>=7?xSM`I0SVWt!phtPc|behG^d_ zp8o(^?JcZe@j07G5hb97cSo>epMP59?mQ{2TkA=t!)$NlW0ZLK@@6Gdi1UOTS5u{UT50YU3wY0~$)%z&!BaBaVA!(0A zJ*$z9iHNM#{xHmTm=h zcAgNILy2A8S~nnkr@e6Z_OGGpaLZ)oIOG@v9`(^*d`BlqwT9^e%^pxlTLGIrYU8WW z#z`b}?WuVe_GqUAc3U2q&-AVP4N%QAtWVxO1$lmvszD{(u5OZ7L^4S1_Nc?10yx_$BQ)ED?b_C zv<|`tR2xa*BLn%KSp93*J}vmmQnNa5hv9a3^$E9JU9rj9fMs*E>$MOQZFo`OzeG)vJSG^So^<@u^v^{k665V)*Nx8r5_* zeUeKP#+>q`kCgrg73DW6DoW_&i4}+;y5@?K)6`h$T}DyrRdvsuHvkt8?lW2abKE$82%O?2JVMlw$dX_>+2^PntCCIF{GcDP_lka7s9(Ek9FLle6_1qf$*;q7SsoF&8O z2ZDVoaz7E;=`LMI%)_9sB}>U;I1F)G){-sik>(KH4ozyN_D5|h&1lP-%x$k~lidzC ze8)9_$%iUOAlA(K!r0qO40vWEZcSjUBbZcwoB zco}X5bGDKPexE^J{rfTKo+|NgiRH5J_JybGEd*v+e%e|!hz|R*22Z_I5^l`8H2tL1 zP9IzF9sdA^pacmOm}PU-y?v{Ri&VSOBnC8WtNDW~pO|;Avc4;Ler-F-{{V!8Opiyq zkd#pi2Zuez{Qm$kUIDN8V`Q$;BFdq%2*Lepsjfq|wiUtqhY#Vs3U3&Fvg%^~bc}Jw zQ&Nu!-08wNr}6g)U=E;Q+&e>3e-?$|n~HEK8a zj(8}#eEn{DT4}N?ZIK8bxUCyaEO1$H!@X;y5<&7zhn|g!m+ad>Wgmtpv8-TX$sp5i z)6QIu&b7#VNVS4!mhKP)nZsapuIp5Re3Dxrd-Gmrt*qCx%O2nmoD9};+QiMbq-I`&1 za2VBRpQhoTe@fTapvCmK83&L>V#^p%a(O+ergcVF+^urp@WheYqO-K~uVP-SoSgbp z;RrbE=~it&(crk7_<-8E_o_Eiv6ZQQ{_)?c=AUh7nh%JrW&~^w3pOwcp0yL9-IX7P zD(fc9T{;_+eb(8FO?*(;HiJg91vJ$tp(~sqCke|nSBD~aPp2`z8pLBv~=TVi(>ND7b+L@*Ja>mQ$nh!n4L0spA zJ|)~}1lrn4C9+ai$&=<%x$X^mHk0EY4QeNS%o6F>2dhGNr~UGJeg>ta_7%<-Qqz)q z*4t>1uI%MUCz{;Qp(4syS$45-RCmQ~%W>hd(oHU`vBU{GyrYsU9#4v%5z$^m(xYuo z^PrY-@{gkQrE3Yv9d@5*Vsy{5>WAcZ-5Dq5UwY!aW#NrGU)3Rw((wJ7+z`v2S&8fX zs};OuH;Aufc6Ke*vN3^GXPpE5kAs}#8ZFGSKjHhj`U&Dax@RwdT1brzs*qnxC&O2n+wfsxD{?WA59P_wjdjNQ^4$-{5SH>1=FEEKiKl`i6{RMh3 zc7t76~!8P)E8FO;|cdIqYwZ)Z6>o|wGKve_zKSc)Q(I0$t~k61J30EY>)}! zwsajz)g>!)FP6CLjPqYTU-+!xmD91U3mFms*q;jTBby zWIMSSts8rTWIU0ASE=`|ccIHt_B&sOdVui%0E-~O+Z@fb{d-fsDQL^2c*_3(V&XfJ zE@S#XC-unuE0eU;j8{<1I5D_kk81S4it&wK!uk%m7gYw@Rvv_IU;UbgtUV1H_PAEM z#hzOvOyi6X=TWK-{Y6D2_&gKSu4$fmC%CLFW65cjlnnhUbZ))sgmYt_N7AK9yPAs` zv|drj^{L|k5Oehgs0oHa2b!2Z<{9HPHX_G!;aF1Q;ZdVfqxhKD-M_MqkvO&~1d7o) z`GiC$Q;zxOzdkh0RW$IfvVh}|E9`IByW)fzr-?tYE;ie#Lc&tmQhM?`R@D9^ds%Fw z8j3G=ebTle>|_LIX9qR$XYH%uo1Y9vYp4rMNAlBiY zI2guKCRsjgdmN9-zDND8zByQUr%Sfdt?yFzWI!`T-H)lj7_F-E+syazvWKveZ22Eh zpUjbt(blM$3Z6j0=9wkgeBz+q%yXQI<30)ZCuu_xagR!gq&>K!a3`8+w9ZuBk>ii2G`L*!;Ln zW*Buwducy;8B%asCyV@oV6gyYP=&nk_=gSs)FRxPgH< z&r%2Z_pWVqc%hcxWUmFtP|DJ-(Ek94$Of}lO2@?FY1OB6mc5TczK{Dh>@>bpRrbwlXs`#-Mtwo0(!6nUjrI$bCRE5Jx{6J2S(0mi zo<)z_IIDcD?3Agv-JXBrn>5oB+SMN^Gv$Um3gB*`A2fEbzpKaTp+xOxiOz zX|0++yqwkLjGZBJIafc0T)UPz6p_!RMQt&-wYZCql|upkezaWKNuB|(^RH@O_46nG zglMJl5B!JqKl=KY{{TZYSFIh9_OSR7?;o^;(l6~D@pVIxqsDsQL;nC#3G2=c#Gn)A zH|JgN?Jqh<`$_y=48R}wO!dAG{e&m4G;7$wKfDpS~KE#QaG7^@anEq`?!7V$i?yKPlb$u(+J(VOOdPOiez^HGZ4D^lKbFc}Ss z?EFJCdS;fk#!N>Vk2+R7vwCKx@cx3{7t=(S7&o#E0iU=(#=QID9;o+@u`Hllt7NDr zE=PLi#MX^jsKaC`YEfFVO5)4ynXrHmjJ|B_y~psc;(tnuKv`_{`-1W+MFJwSbq6^; zyVo73c(YK_uFSDaN-_E4ZbSWRV@}rX?kB&JAj+~buw3%LFF&ndm9;NZ*7O-t;@acN zZOqOI7_I9WAhJVlw*hV@%Ca(%jMtZVTU3_D;%nbGVn#3&^kZGE?}_Yn`*>z`TRY{) z%n!=+d73A5U7G3i+p-mod*ZcX@jb_u3LKHzx$B9)w5^1o=2hXq@9$Khx_Dd=c^Wm2nAlC!E!YbVy~oONa>zAjwhMt9W)~)!kt+hI87zGsC_Wx6@=u?v6Q8A2gmxPka$|^>O-VHA{*N*8|Z)&psq_zjLRcq_*Aj>#dkrTe3g^AKA8UixX(kL^=wPD zV>rcTSfBK9>A3W(X}#Ehq=VYLYP!v{igCP|wWeLQq%vG7!>$!iUTb#J{jOBAHs|hr zYn3h{v`7g7%kCr7(zW!GP?ckjD+Z2Qkyban_9{TnBE2Kw1?A6+z7F_g|DniV>MGIO=Jv zah`BZH+yxYRwJn6>r7*rn0_=Yrx@u`xZTM7shPm{^%R1|hUv#6y+!SwX`(_#IUT7_ zUs?eU-OedXo-jZIu6-&j@t(Ayfdd`rMHZ2V89Dk@s2B_o!zZ2(BB($a%LNCa{3>-M zVU&SXhJ6Y9G5lQAJ{|bh#znb9Z7ZrsC1M8BaDV+(`p0iDxVMf~AgicgLF18Mgtj+Q zK{_}jW8W3}llu{TT)6mw@cp#SM&Ts9(}JWx$P1W&$4>H-cxvxX z)e&CSR4UuC$Gv_~e0lg$CxQHNsajY^adoG}+l1RP06gO&skPsCbm4f%U-&( zkI7=QTN9rx`2*;Biu6we`1eupjO(cBt{O0~E{-v)t;M z4xUDd6U?bB}8&x8ShxhE_5e_HaLD#Ol=oE}!NoE#-%c|+OB#gNCPOyeoH zj@jm{Y`It%NUTwPdJ5Bq-^^gAD8s!!P*sist1l#Ak6Oj1QaRb>Mi@LFVOaOfT!0Ts zyLQbR5D6!}Q1ZOo!5rqfp!7#$s0AIhIBK%bcI{&gHG&|SvFWix}v zN@mHP5#lkA5bA^eo~8c)(9IOSCSATH)rY0rqyGROG*_`5k@pn-1?YPB?LTSe{?lI= z8y$RSt$*o!)#l4(jB#IC{?R@ggTvnte0SnY{{RUas5LJec#b$V30ny}N2**a0fYQJ z3h>QSTpFA*!48dOVGMwC8hp$2J!^)ZDs?8}skaxbNTf*5$q!<#g?Vsyizll6! z1)h@k?VaCsB0Lbojih^5ROO|S$rpW2Q{q>Q7fi*n9rrSfwh!D|@;yf7?&dDp1E2)w z6)v}^OR4HoTu#NLbCOA_EKH4opQThIWNMwpk^uEI%W0k)oS`d_Gm5tsn>2$VLgV|~ zRM7Zt?ss>}B8Bd1?osI4M0S@R8r>5s%ebCCm5#80TKO8%X(=ui;(agzl$<#Y4@Rpt@`yq=1ci%yRKN_SfC9*vdeO5bWb!ilkYA-h1Qvsy7Ut|Wn z^5;#zmi)s!=HECWm}fjx^LQ^*i55ujgT`_5DCtc!LrtB9-k$;!f~0#_nRxnG4);4Ol1sa#$BYPq5x7hT;#A(4Uwv>M$s_nJyy&IEt>~ za^34ZMiLb1x}5s`$1IH&IO5d&lqz#_ax za!K?yCv3vlBc3ZuPQQICSFyW8pCQ$TJq9yap!xAZ&n&;=uK*mHeyAkg;szudP_s{xDtY_7)x!mrsmEX&`mH-dWq_ zAOJfKdF#+ragB-z&S;!@U#X@lHkUVjNro_a=}KFUPaV1GOx^P2@lG3dfu2vVYQXau zD!) z&YEOp=y=CG(r&=VUurcPBny?~3!ug4+{r`(Bi)nns}wsFTR^bG`G@~gJ)m1gszp0+oH9b2v__xNxiHXFe+?&xx zGn=pKn8&V3u9U~;n_Qgl>&6|{BC90^Z~mUuQG#>Of^Tr`GCJhWR`6@CDyB~bOgOp{ z&r9~Flk6DG_!&|cH!3wg-HhDY{!n{N`^!xF>DZhrT+Jlp$DYJ|0;3j_Oh0}k?wU%t zK}`WbzJ{PZH+r|=Q_`YMqCTI~Gv1)uk`g6Dm0H6Gkp8kU*UDV!#K_e77L{DJ)Qq>E zD{&}4z1!<$IJthr_nvUG^XqG{sA=n>Vg$!8{#Kg?ylQRHlHE6|tRK&OfGjcOqWqrj$nOdlZFPU?>Nla& zkf#gI&H2RSW+p&$R zw2#42Zsx`@jOR}FE-2dz)0)52xLmPu4AVn!HtVpqa5KRqY|htP|ut0gn4l6|UYEvrafFRJR!{QFpUHd?_$m|WlN`2bQW%B*>#66yBdkK?zwKgM~R zhf0Mn(R06j6ZIxajlI`m%X;}b%bGHVWgnR2g<|7gQ?uU7PDZ~V4(Mdu3IMNXYQZol zhNl>M$%)&0RCTxafi3lcePAW$Y%<=z68}{)H3axq;-R`j?EdLuhmLaCEB@zu#o5$A z+5JInbv%4h;M;Nvm}PsmfFQyHu0VZ2k^h?!BqvzC^?8H z($xXx3UNa^TEkr3ASgQ+#M#mnKoM+Y3&Y0!I4f7N4OIVg0z7s zBAsk)-7TFUik6T|mQJ=1BbcQl%FYw+27_ojTDqa&P>8Z66oqv4hQL9t@9f+V1v|Kt zB}CsH=4Nf_4bg)+qs~KwxFG_3e4^(edMI~Lm6bQd))8rC=?HO!K`k8}-Tsn7I>Ve` z)(}gqaXcs(xDk-s(b5VmV{L}PZJi(o`2VG!8{%e%^u%%@ZEU``*9~irryU#xI}n8; zEx{JML0v7Kv3$;!a3|COxAXT_d;`MC8iE2Fcd$h)P>wKL5FU_f>56c}0s^)b#D~WQ zZtLy}gIFU$v(H1$%4tKi?T{!WuadhhXgfp|>1GFaK%N5t<{NrQU6^I;` z7c|)!qM#=LF@if;BR$;!5F0TGK2Zq)F$kCu5SI`X1%A~B?pM5IoNxZHzYhS(xPR?y zoX%vtA9-$&54#ZJ;C=TU!k_&M_tj7S)%vr4fqwg!?{wk*(9J0HO&tLG6V_9|{r}?c zSQ=QnzXXsSw9rC91Hj$?3{V`D0P8@k!BOxK9IzoDc>Nq7C8Rc=h zW5uBf1+UjB|t?C*aFFT zIII9J6%HO1&i*LaY|{NVII^IX1ULr^XfSrc13NQ50U;4F3F#5AoBmpf1K{HQRe2P^ z!NxMQSw_-EO8~bK9L{*GzJ#RnEtZ3^0v`Gcv;)2%VAJ{}hNFaP*!YO`ge9!_H)?)+$ zL6J0A3+i<{zX-BhO}bu>QqVgNbrV`SO^7vs=#22IF3^alwAM-nA}H90A13^tE#Uau zg#96a4DVo@RDdin>Yzkhl~TXX;&4ach}I|gcDq4!fJRYxs~w8;GrI_J=h(7C4Cc{W z$LGq!Cg*)$`aKwWZ64#q(q0EGH`((zYpa*Yw`g;^prPeVh3~0VkJ##@ZePdj@q{Y; zG&*|rqmXU-rNU1HPA{V48MK+CLIY}Z5-GLXo}S1U4#?WXRc~vK-fkz_=F&RxB9&ba zdWYdcQCdLvxpOnc{>9c;!B3pVBh|`>?D&S~yv8Q_L>5MdSQcx#$9G35*9|%PDRLJ~ zf_fx;M_LQ=%yb~Qs9VdntMS{R>I+Sp?XO!r^;#_H29Ij0^28x=GYr;FZg-@__AS+Y zaUja75Y3vLqSap3r@iIFbDn}_1>jJpDmjc=evlTiAMD{SOIa&F z@**CGk5bZaA9yFYdE9lW-Hmv7KDd=Ty8?i6OnV$;j*nZ4G)%e3U0sq0s&uUg}n6c-#(Yg zDR$B{X>P#NcgXTSiU54v#plr!@TzyWG|R)lnm_!w6F;>1=zBT0#PO}#oP?7Si@|7# z%w}9mc<1|K;8dUZJy}(ujy=33SLAct$q*GAt(KNLGAr^9TGM|0rum6J;n(g3`#^zD z#ONBW$+{7Zc~8k5nKF&yCfa-Kxbu&*Fh*HbR1q-|4~E7y7cBC%Cd=tRL2q{YCkihO-kH#xiQ17P7<;N#G@OgpSoc#G2>`!v&^yaF->eFVaCF zB4b(mc5Q)E-;V4nom%^~#QYvt%SRoVBIR!ey1E$1g3uRF&S8+B^KHfR3!ww=KiT=I zl;w}O?{-^3ILG(je;&T+N4MnGrXV-OMSgXdny9+m@Vbkp66V3uI>V{@l%Z10!d{(H z3!2yDq-RE0N;sP7Q$ik_SJ0ZLxgmOU32heBIx9S`K1S?({;F@)CS}ygW4&3sMjwhk z?5Gbk#^Vf-;BD@S?8JomCqd(wm7E-2@|-SU2r%k_M$JDQRK42hr&U@r!s8K?EUAk# zy0+m*L%1H65nLYR>=e}|9KoVBig8*~BpEn+pJCJ!??|>4rd?7!xS^W=9l4*6(mh}B zgIhJ514Uo>Pu`ljZLXEUGtx$I!_nn^?M@t{nM~3rE^%|^Pt)QZP|w<~_i|S~*JURe zG2!D~0gc=RB^9U3#qc8B7v0p5odV>(b;55;pyfziW@B~V;ndCt_p%@MlWAUm`{YVR zH=^Kes6}~)QvLcc8(KjF>8Jmq&T}^)7yRl+k$JcA;!xhu)B+OmvXXSD>M~mB>cd-x@)p%5%&z!=)HhBSxG-+zTx8%M3^b5 zbbv^Kk$h9h`5L*6Q4KAY6TzWK3`tl)2_efPzv)O@8LJ*{hMx(j|*@ zf8wy%*womNHyrKu#LUdrrUQqytZQu{0zQ zS9`LwuW=s`TM7f8O@a*o9< zJ}x6ectEV$02S>_xp`Pozx!c4|ai{Nk`oF z;~Cpa`jT@MpNQt>b)qe)D@TMQC+|KjoS4Kk&DV;adTdNDRCA_=v1pxEaC9xct{0h! z@Nq28M6L&9)mq@?%Zg@Bjm}aUyoTMgWM%I6G4kQDbK4`Vty9|v9zBnJk$L}Jidm6U zLBAf<#Ejc!VvbUrF{{`NMqyhrz7Lq~omMXj=sRDuan0tckMUz~^0k%68e}xJ!vpQ* zGMnN{8$R(44ePSq7IS?;RQw++3Cj7DCQNxa^ zxUkjQvTmjkIEL|fbRHeBy@XuD#CKJn_76Y9b+dp9_Rb-%cCU8Rm=S}xlyS2WHuWUT z2VObbc>OCN{!SwHSwLV@;jDq4EWd~d(qQf##hbQgrFJgMZuu!MF^C7X!vXD@oBS`o zL|OZ^H54(cNKG~p5zieOLxGf7o}aWmrDUhdwf zCSH~j4oJNz*CF;EvZXyUgGX3V^|UFWeK)t{jfbetT>je@H{;es-r78PJYIHwnq;?U z*E-P_=jLch7x<*C@cx4PlWTjsqNnaT%OLg`>z1=>IdX<0jPqk1{gf{(&QI4k`g@Fm z4@#4>kK%tkHk#N$rs|_EkzmUwF(K3LKwy;-#O**in_s}@cMrO^xQnh+F)i|^uX@!Q zzR*mhp_DHxx3sqq;D(tF5VT!z+!IlH%EFpyekG=yP=kybojD8B2j@E-{k%upjqxZ9 zD7;t{6d6V5K;_1{S#|vk<=2N+HM5HqyF3={0sYkX@pTlf<(>_Qe3*G&o`G(+E!wCb ztaLNe`Xqk8`WnT}hswgA)5|JOZM}NpNh^lKvwnHx)=oL5s3IW6;zh(KX(gT7BWKX_ z9dELi-QTZ{>n$!lV+qK896srAz63M;qT@@I&6}0UU)AHFQr(W{jyFm&uGgojj#{)k zS06Qr4MO9ic34%(5!`MCYuw;@Yc4>b+SACvT#wwqOyi}<41&kYZe(L=7%hr$d%T3H z*1tL_(is^>xY07C{_d7pbvZg-b~a!*K#o;_rE8al%vXxVs5xUS`({w*a`|jg|Ht=C zgpv+Wa_;I+R0i&t$MzSJUem>#)^~>L^JU@rZ$}y*IS&P>&kk?bHLG@Sy=%NvFfuOd2tTW zyWjP?XgYdZdzyxCieDmJ?xU*Yn~OPX*Dr*gG^e=joyqxDg|3iy^zxVUS2y;7;a*?a z1^4{^6O~RBj0sscJJ!&g&J}{}EX9_<2fXrl0m?OQiF{;jxe0PEe{eaMA=faG*}1jB zN$u9a2b25FGQ&eeIYg_7(FMKTo4zqEE|Zc?$j_B^)UVhcj@()6Q1hUdT{E;9*UA#k zR32%k+@n($zu7BNzZRT^VHwF;7mXXeg*oCB5nZ19xZfZm0$ShFmI=?cs46R$vJpz4f0`YCa-{8t?sG~je+KhSF1jc9D#a{2ffk0oG z5qGPV&-^fKBlsd(j6zSsmwP`qM>xQEc(*fH)ea~n4(vOuPajl&run9&;n zz2|f0i?cHFUL>d&7tlDR<^*x{9`}o9446TTM=tpBrd+(Hh;Idx-*{1%R&2;_#T=jP z2cM;XTZkK0UU5E|YmH|^y5U9p+HyoG|BmN!W{+9hs}c$GT7ha8pBI8FuLsCAoE?U~ zG&}5x_8@GtI=&>y_wi8NTOZCx<%M!JwC*SqXjnRl>hKCeh>D-L#}~;&%*ud4c*R*> zg$8RooF`*$<4FW>r>X8d6z!~Qq*a)wbUF|By!g(!o8|1SvN04afZy#ThH|@3ZxAj2tK8nmT>e>U>q+iy%^S{U4&G3TO6# zDJp&+jy_JL@8W`TEBAnZJA(CPmr!~6(Ce^e_>_{HJ*xuW>R3SU*m(i@&lrNHe&G(*rnvUDQ zoc9pCMs7Z^eRl2b&X+}K{Bl8Nd1L8aAo#N#Mx*y(-+a&3o?uv$-?ixT(2)kIW3(y! zkH*7g>MSXHCDLF5z0hg9(Oxg*lpi5Ka&wh zpe6E5*4evzcnQ2Xo6XM|8NM=q`RcIV5v@n$H@(}vuVL;v@jI+A@0eLfngGuwF&X2# zTMyOhL|KPaL-^=yPT)WkI|eBLo*oHsMdF6j=KJ<(exT_1>hrJvaD$4e!up1 zN{=(X09jiq-afFf!A_4B z%QpE75{Ba(LBo9aj-6;!7!Oq~4s+ne8ya#MU{dsB>1>nEjR-Jln~N15)x8z+$*!Y; zB}In0T(-L*0E4#^nmJdiZ=>I>9=sqssYstV#91uxJ{p>d+#`5mB&V`g7$C}#)!XOO zcSchtK(#u~xZCMiBHbsE`5|*1cdt!}@$Q|XeA~~a#nndYvumZWb*4{!i*XD1R-~`- zpnk&3HGUE3E1T%!;Qg3#O-A+1bFqQe0pehSce1=t)5>8VHXm9;C*%2ECiQqrcM}7= z(>w8g9tLK$vL%@4-on9sfM_2eP9jH{NDH$q+Ux_lEJj~zFFC~|iQMuDW@If#Yb8yK zb|EOiL$)Mfb)~kj~abALH{c6*t8s~nq#XCUDxwuNKkFg#0l5r zzDk;Awb8?+Ld>|6#C(OiXX$PJR|>b1BhFq?e;m|}sBT?sgd&hzIwE)w@p3fB`;?s_ zPv4b31&Mxhbj3qy$s8g>@04fr$t)>0$Kq$Z!E3p?jSpx2sv7$#p~12RqFNh-H3iWYk2pPFrJNMMCelwWzmgVdvM6L9~t3)-hii$y3bmB z&&*xZVIUv}-7*ptOa-PUqt4SRm4SyALXoHdTXS?b~vfITQ z#pMEEFn%0N6uA$S34;$?Y^oo9IpxA)3clMioX5%nMQDymbW{$m3MtiK9I7P<$-m>WijJ!qw5ZmrEFahO_30dP>u0gRroB(bgpZkdh3qIh|7E@=2xii`?!2 zXT;O!u2n+M-cM+XGfuBu_6U-C$9KEy`qvy3I75zT&Jwr{`XL!-pY9scu zcmLAyI{}UJn0s~W_QtQu82DN}#5{LdG+w;rGP_EHMm7ys?cAQ@a%OzdF^7(=UECcv z!%%eSS!FoBE{KhtDDN;8HLBVfklW*!du)+DXIft!(Yp^k!9-%Hw9)x}u0(1(^yF{- znIA-GmlcAOEDBLX6oof!f;TYWiF3p(Aa32THk@X(qMIUn#<8rIu)4g`k2I0opoaCf z@1B{%+Gp^{Hc6MKIJb*usKaV%w51y(F0GsA>#~@U=f-`i*X)9uIkdtzZiCi8JpP;v z_-5H!%&1n$HmKjVR;^&IohQG{v1Fuv2nSiSIr2qsw)JV)7DJjF7HCQ& zL!942P(vB1Q(Rl81b$XSv;yG=&QMyPIpiXAZ6DxecwOST&SSf4`dPy0^4v-L65C6y zurH_A?{On{VIuyKUJdS()*?KPQUN#Mw<%lu!58t3*ZS5z8E#BlNw-&*RK@D5x&=Jw za}pO0n3b-Q-MUix06ZV}P7hYaNaO_h^#vk|(iF@F>spj^Gc2d?wzWN_AEI{{u&CHn z_e6kK3a%t(CB4zY_52DY;2fYHlkwZ2%>=P0?F5#Q*ch# zn%-irr%TM>lU&qZi^Q;kHQ!!?SGB5L=HU4Ky~GVEoO*JPy6bH<9Os9X-1&Q(`C(xw z_%M2WCA5uNcXDH^*4LlRTWsO|#^VilBk3itQo}B}Tla}s5~@!ew@iXVja4$|OW;cc zOC}^-9Jkl(pEF=`*DZP%G1Zk3`FpyAiMe85*5EfoE^kldS>I%C zm(@TSnXamo9`%K%6^OG(fqQjue~E45@3B9@^L&7qyqX3+cFYZ&agGTb+rKL{})GXnQ(moN+nf@ramX9zLq*CCq(WN6D}O^*V9&0x@07$tE9;dImnwT8K`hW zv~?8?)b-W0K&q;euAaWqrAr2yAYD#ZUP(<~PhLq;O;ZJ={37-Xr?Q;9uA2H!O4T$K z4fOPN)s(m)Ke9}?+5p9`1Hw$W1^}L(zA_W86F{u4WTL09rK!Y(>jvOjIy2!C0E`N% zYMOF?+xoM8Ot_)|F?KwjPn=JP3D*=Lw*EeP&x8vD2o5BfaBTrXVp_|1AO#bgZ&KePIlz%? ztPD67k6plK9Q`Ri`A$iB9QT7Fa6mT&)4zCx4=6l; zQx0@)fn_jS1RNLt?SeOpt^RG*{{Kzg0W!o`-2k?&U^{Uyd|SVx$P7|}gOUDk_%L9L zcsgM6tv%QxfCEMm;BNNmJSY_`d}D^Bj~wc`Cz#O zvqAk_mPa8G-^$<2(6zPuUVqR$LN`Y^6y|2=c*zYE$N6PD1P65>nHpS)4hm|DKj|j2 zbw#>6|3V@}y25S2;29@(EH-3HdRXmR2Q;uuZt0Ffs(=w9u9hg6HAn#Ty`5p-nMuDf zV=34gHH0k${QIA7Kc2g*qrQ@{KDepx;9|l5m7?Kh3;Tsa2nGS^TiX6YqkzIdIhYqp z%}rHb4;TG{1^EbW)eH3tB;%`7|HX!@s!^hulg4mlq9l-*;u+eqQESP2h0`q z8+OCL$iK25v9eV_IwDVFxQzq{w~^owH#X-Cavb|FI3R!m zpa*;l3pm)qw{dhLaK49wZR}58IAVuFIZN>JI=P*<#LfY59*RWpdRaR2@}KA91*BxX zoGqaaFcicJ296#}vo6=vu|nY1(yT_p8hjeg3NSmks*fv7&qq@q3QlD%Zp|tyLn`GZ z;e~KUz)+SDFNC9$n}nA%>w$6!FpnkkvO*46P!7_pg6H|q^YifY3$V(NLLd++S8E#y zT}9>Zl3+=i^}C6lo}TAD1@nciJMFWB0{h=O|mI6`I(2!6>LfsKC zCzP6^jJrGBT0&TXPe@2WR9-}0SV2*dpI=Tvj9;8jPE1izUP)e5P)-Vq?yquxoAX_# znv)yK(g_Otp;Pfc)A^I!cb!ta*mnPf!vV-x>;FNA{MY#WdvyK@jf8?L3=Aev1XmgC z3=%wiqC5g(`rl@d;1lBF6OiEJI{@Qn&R?OB&_G(lZM=W4Ls0Z*9Y1mYQwQj9)|M#C z|47Tvy#LU1&>nE?9*iH5Iha1;_tRzk)THms|J}R78v0{TID9*&I9!RVZb-(|AzB`^Iua0{Wu2wa<2SQ zeQ^Eo%Q@jkm4t%j!716u6`TagRpuW7tx~-IC&r%+Q-8Cl!Yr+^lS0Y-@5aFXZ1oS5 zervFtI|__3bJIq;!LipRGGLVK&%*z#{;dx1RAdcD$@~>q`?LJ_s^5y~A>Cb}Fd0kd zp9Q`Xe=DE>M|sQq6@B}&&_TuTMZl;?l&iPQLHGJa8b z6$W1Y$b1X%{aMNH`F^WX0le_A1*iX#f&Z-F2le+d*x)?yN&+S$_>0gF@^7WE7ZxDw zU}}xM(h=q16X)R*`dPux9KTgz;0jL91@)EzFNpqj?Z1e>l~4sI0|Q&f``5ALzpaC# z;5L6>a{tn|u{HnNt+7-IFpw0y^sqc|XnrZ)f1&-!r>x0;A^UUvKV|J^dT2|m6rqWA`Wo; z#j@{a|F?Mp44fhG_eXhb&A)mAmMWnQ_kuYZE5gA`QEX?H5fTxW;{9#SPbmLgZ}PXK zAl4gxTk}uJgV0$$@J1CT!vlKXfy_^|f3p7qnxKf7h!D3BpSTF$K??3DQGS7MslWl{ zTPg_Bh55hn2ytVjL=RGMr-C~Sq<|?%5fT&TJ4nGD3g*Gx38tU}hzf%4flWbvFcrt9 zVjw4&Vz(s-Itw<%ZbcAuB5VrEg6V-Q=t4sLLSQX61+4|sZxqpkycjkW2kivY10Hc< zFfS^ArHg{@2Bx4>3h|4BIIWai1Q!hvD(BBw26yjwa7y0{lt>ir_)?U}yfa z$NsIGe{+8D`2qM8g7?Q`h`$b!-|l1nr_#Uu?0;$tpx(oc{1Lc^a2>++M+p28^PzVg z!u3Z8{1Nk^cOAm@M+p28^PzVg!u3Z8{1Nk^cOAm@M+p28^PzVg!u3Z8{1Nk^cOAm@ zM+p28^PzVg!u3Z8{1Nk^cOAm@M+p28^PzVg!u3Z8{1Nk^cOAm@M+p28^PzVg!u3Z8 z{1Nk^cOAm@M+p28^PzVg!u3Z8{1Nk^cOAm@M+p28^PzVg!u3Z8{1Nk^cOAm@M+p28 z^PzVg!u3Z8{1Nk^cOAm@M+p28^S|{j(!XEqhdF_7^Lv7??eBjEC=T9h2COe&rw7;{ z25x{85&Xvs?%xaEkL4$6>_^~ne^mUZnf;dl6)_GsPA47?_#JsF96TzV{ZVi}a>@NS zIH{nSgt*|R-G3}Z#DoO+BzUB_IKUB*Oo#_=|3@WQg-3)-j6(vD9yto&;^5)q;Nf8{ z!X+ee$HB$Jry`&xJVkVj6(HuPkrQA$PNE}!!jfH(R@Wtn&MNY>LQ2t>GeWMU^!1&> z9Fuw?*H@xa74_YeltopbXAKOE7>ZwYeOR>)Mn&I%JuP|NJ#|jZ=BqoWxP+?OMPn0F zTRXVDho_gf&&^x6@7xV}5EJ|G(c`$Z^o-1`?3~iF@`}o;>NgFIP0cN>J-vPX1A{}; zA7?(z&dsl_Z)|RDqrv9m;Njxq;}PKF;}a4RAV8C;@J~?_@Dl>8$K-T~1T1M>h~_>3^UzKD`F2dP_dv@!~7uK~>6Q1r&l z1B1VwV|b8O`le@kEhfFJq4(qZSrsE2F^^lZ8Rd^e& zT$O!<%4N^*VMtNdtKiO%Sp}Uq@Vjh#i4T2`c^WQ`q&B}@wc>~sE==b(c7FBs74cOQ zoGSF5?C>^8_lM&5lu1hst^xJEbWs_?xV5C_-Q}|akA^g+!oB9t=D=FCMES1VS89(XajZ1GAQ*aSbH&JN{_Y8i z;^up=oDu9fsq;=wBon@aD%p?%X^G6ck!kn+QTu>_k591m%!eCyo_=M_<{_|lWICan zy@#ER*i3e62W_dG0;gj-y+ z@1C27MWNKd&d@@-YPwHRw^IHQ)SiaI?VU$AQR}6sd*^m;UsOB7%3lQW+Oz4CO_Uzi zrkU*3H@uPEjbZt+ZdNC0S2PgzZXxe!w*8Z9kIb_z$f37Y+)hd>vEO{ZwZvwpt0j%R26qmSVGVG#JNjuQ(P%PTB$d2LP`v=M3C%#$_mrgcD<8;5x zzEfjDJYDc*-xFoA;E?w$ocdGAT<78of)X#9X2Wx)@M{rVc`hYf+<}4fZ?*2zK+eKM zSrX|Y&$Cjp!=lQ*_V9n2+rVqe&^_*Dqeds_J=cNIv{UkON#;IxQ9Ci3cSP8Vw(0W| z_w(|RkF$4!G&8~{q44KfDQph0Ft*4&o~4FS23&Xk&dUr`x+)1$9g!0f9+LcQK}WlZ zpYll$ND;zKF`PKzG))&aHij$n9_W4)SzC#{AGOBM|42_NO7=5rLCi`teRZJ5l9Nna zloyOkNy+L}W@V4=3xkfgE>d3Ws={0}u~y*^0G%*s@M}cO*ze{6EJdkV6+Q zRegb$^t9b55X28jREFA_DrCG{xpchmrRl`b)b%QMv~Mt3XvXL)frg;PD_3cEJsHKd zt5B0vYR>bK_tmu1Ze>2=P@RmMV`F1q|NQk;`|ZFPcq-zk{>vqSK(_E+g0wESd&W04 z0a84`Nv*bfEGt}ulmHKx;4DCNCtH>ijd@pw6KkF4dSCzj{a#XK3O?dBbD?~}@Gx0} z<<@H+?Rl-5Gnw=^vXcwivl$G&(BHt&K7O!(AUJ1f{h%xYf=f_v`8t9xFK8VnI<7CZ za`o~yRk%!o;YXp7*G$6H)M~={W;)4I~UfD%6m{6zYlOJeDLwgh%-gqHa0TWy-MqYv`!RNskFY3A8lmJ2fW`$lXvT&g0k zGmlRmKEC#rK<(n?Tij%?L+`o^5vpc{89%VbwAY4O#d3K?zPg^{diFvxJrELdZDFn{ z)nrPT;lZ4^j+Pd8L@-Mv6K%%5rkl4px`v;g6iV6TFr+o@H#EFlJ`QKwAqx@6>bVls z*=GFJ&DT};idj8RZR0bl&ayD=m{q2Lx0J25TxyRq^)4WW@8Ij{zNb!hNluNNdzmEg zx_1zLZ#irvozYyT_f(OI=rHi>jS_qQQm#p=v67eJW<049=eP8u+wh6h)*b6i1 z#@*E=On%vQ!}`5*^TO@RHeBX2s*WJV|M# z)stOO%@2 zC9_Pt;>|7d5WOm0@gWbLzCxpHMy@Bf!JALCYjmZ&JXYTPF2#i|JzIAK;^VH@;a#wwqUn8hmpwHX&IaUQ9!Kh+h8C;>26p^x;(D|NVyE<81>d6J z^yAdZ>dl)7%(F}asEH{C8X^q@Q?m#g?0Gbi3bd2Y5e=$$|YIF2Ui zar1b`TuHr@px}kdUJHS+?2_NST@vp-RYmaDcH%Qp>9(FsBD9U=p(+DCTNSR7geo0- z#KnpC_pi-gThWx(PcrCH-`jbkpY}Ee6(34za!G00^0bV6yuMbN_chnEbt0#|MJsB^ z&zmXhU&|8f)bMkbZ3&OLNJD?z`bao_Hfu})N$%N#b8#;CpHlXL8nwnJpW!) z)D*dq`m*0@W7Xg)Wa!bOl~fX_eP(8yXmeh)yaD~?z24iRoKMFDzdq?6bEBAK&B%H` zOS5hfy4WHm@u158?9xWAFa=@qmCR4C*}~5?C3~_dRl?6e@7GVCZ5=mCj8$ZsClj8t zwDc$6yAgOQXToSp!wb_f+&NZEoK7sZMp!pJC#zc|$!DYJYa#c{YB6&i*HL8x6Hr() z|Ctjfy9r&n7o2+@&z?i(LFVx5v~@?T3oU-CH&P(Z8V~sPfg^k3pOV~9s~q3<-Uo7$ zG3NR`R%zj~6NMk&yFbbhea20^Czqd=HS;ot-E0o?a%X^Kgt&k}ssvLYd{W$i;f{!0K_*@X!wqxUK~b};sVKjm_wyX99ht3lZ$BhK{eQeHiigt4yg;w6qdV13n)u1$M8=uOh9?P`an zd@lQnLQY&<()?6nG?9~G%bkqE(fI48CLdFd^=Q8r($}9~ZJ3U{mKJ;elt?cW*;Je> z$rZn2cb-?2UZ^=Rh+!7s%VMZZdP}L(y(}d1R?%>xxiZ(&=EZ|_|7$)}J5M=^pB1ma z;CunzWrgvYTAsR|^k$o6Dm=r;CRRxaaYgPDc{4h~M!5|stNQfHboEXEOa{Fk`{HM)l9R#YrzU z%HR*VKcI?MUO(<`vT1Y&xMh$P`*wFc;;Fyt=EBX9lYQ!3QzWbAryeeXecHe$C)7Dv zjj-D1YEsAc)KeU-=xw7u=a&!Y?RjXz7g9T;yBDoR5Y|@<++aQhH`*c&b&)h3?|XI=W)xXcDFF^9?oa8){f%t1NQZCZw6bx z5L7~8`nt&@!}G|du5m4Q0~!e5DOcjjuT#D6aA0f(vb~u4^;y&c=X%TJs+rjtQ#&g5 zs5o(1XU>Z^inGvMl=I>r#x``blhfra%F8hNbJf>0`Nk^2FR~k`tWsu+Y?zf>2Fr%$ zB{KPID2ZoqpVU==+#I(!E%c0NF5^>@<#2U&q?Cx180IpCOINP#ODpB4!5HMJq}7$# zowa2-HNB$QVy{b2I-%$K8;gt@nT<;eQfTuZKZhe5_8t#{U#||mt(-&c@_Nr=aouF5 z`|KWH{v}FIZ(FfUc|rHsizIPp?X&F76>ZhX^4?0H4ub9_*J(BE1I%Oms+4fDq30_X z_kp4-QKgYVZ@QNn{Krb}1y@}ykHdd-+k-5M(QK6tR~?QHcqYocIiV`7!>7_(x{Dr+ zw6hzLXcfuup+BN=Hx~vBE6TkjBTBzxp?8*LfyIYa<781>Skl&ulU~mVQ;INJUor2B zriz50!HUo6$ms`7-t3GeIsV{GaPGw{{LtZ5St(!pOcVSk+IzK*krznvwOF)1b-jyC zV6)7}1-K2`vbbNy=VVot1x>GXZ0)>%xkUJ!@Z3g!P6)N@n@EM}a|;-!7=4{nlNV{- z@w$d$sw4&&Z*n5*(ZhQcwKvX`3U|*3v^3>&3T!@kHrW*w2hj+n5uH*ixi0f`!ObBc zAL+z-5<(hLQg~L^>||ZZ>cW+z8NJ;;|4X}$+eT*H<|I*r0~$sB#u{Zt)r{ih@QTw; zbMHQ7DQjk2PqlBo6D|>QE3hCYv-_NFl@qX0-PL@#vFrI_4nrWR%@ehJ2VMBbmunU- zLe+O}Xz$juF()$9o zjA!%q0se$~wS*zxha4gK>2Zp~LSOveotwx>$)=mHJYfia0-T*X?}5AhQ0xZV{Dn<{ zRfF1wLSBx$^f&{RL`3S&nL|WL`98SIT@7bu8qC8krl=k-NHGoRahY&E_hj2Wz0NW_ z^WF3f+s0P~CUkrBgS+Vo20b@8bIud2UH40Qt|2IfS8-Q((t@)u(DtTRn9JN{*XHJD z)qK)vAw8tQ@|>K+nWPmgGO^~zhZ%YE00AcoX&xpoFM|S*qqAy;okFB|Y zQ$%h!m%9?JUU;9m6&&$UiR$I*#Zz`Ir&_w4?Jlrp4-fHQj3TEbL+O+xMCchC5}#Us zE|*h=i)&C*9DNiDF~2roW`N1Sw7{N+s1f%Zxw+awl{g<3Ldj+^F9n_9V+kvM?5qLk4 zy-_K|QL(zdy*77SVT(}6mi?-3=>(xZrdw`CO=xZ(kfMF&k?#aM$9(IWxud>;|G7)6 zT`lZ_`km8IXR1`P`OXSa39T((?`g9IO94ULFyiDcxt8NH1|Nts-}Xxj(j^jk={0mh zAYmu;8m`CTXp40{=k%fCH_6fLpS#igaVng@l)r*o&}Xjn5I z$(XbH*xTo zF264rY7A%H9ig>&)VIn@S?=oUtX6n@?f81O?D>zVAfHUqwx({UH%71ZP|y^z&m(IweP8)u=G z6#KwH7dOuu7|y=w(|wbWQ{~|$Vtnw)b5_t(dMg^;Qsl;%_4_bpFmvvOT-2OBS;&_HO_B~goo&?X zmyB;JBaFT7T@!GzFuhN%CVL}L_Bg;E!<^A#I3Y<$6BGL+k2>A)YBiVF=@oIiyXp@j zBR<}FhW4dgdb={h?Nga8Bu=-QPayajNP32{bfG(%m!cJ_b%%lJx`W((2Xn>#cZq&S zM&rYC-q@bqv2~nI31tas^edQbqE;L{o1O#fC4=^vpYi~xFqx5C0yU9rs1ddY?DN&6 zT{$ZE3$rj(U1lm|jbp}i_lL4*x`l{{q)W-j#X_E}Cpoo+y+rbq)H)ZddU#rOkqJ9e zW=GQ}m9$@C*ELWXn@9BqWU<93d8~xFHn>xF(Fc;9Yb=9=Pzck@JaP5$zKb%RMra+o zx=BsfSC#y^kOd-zK30BZv$+SUF&bn8OG%FqjEHDv;LstUNxfM5-13sYPCf1}<;%MA z=dR3iqi1u*E)%Z`;WJTkVoVm)DQX;a*%#&Q9j>2Mhufb!F2_i5+dmouwN z`qbPMiyiH3m-qT_8D9-EcO*%8dfLhFbPz2X-{TftonaupA?yRmgiry60H@ma)$j+Z z?Dnl>^)1J<*t=@0jdXO&Xj<}x`InLx68+0dPW28jH#mAV_U1nEH@0Y!R%CrzuOt;& zA`~~qgO}91eqz%bw&KxKWlDn6Lk=|9oqO_WalYvBwSbH`Rwal34~0N_zfsww;-G?0 zu1*w>K7|g8>-OEbdK|9gq?lvjwM8yIq*|TegH*HB&aZZL(tw5ZpRI=%_H(zENYSPm zWpS#RBv;myp+2P?4+nRGQS*zO+AK9R{BlaP_;} zweXne;b|$VbNEU(W2pH2xdCJyEa7yq(mpRLP-26CC(PFr zrf@oP^Yr7SnzWOgcP?pz-RJQRG$yQg^k{xS?AZ2~&u@}gs(noZZ+vb{%^Y&F{{X*- zZsBr}DbPp^1!o`7lkCI95=|R5PN`(*Td{KM=81YeLVziJiAM-`n#ew+#!mHx36qfHcN9T0Pe# zifkrovl&%VvPlIdMLy;SR8U+NBUOPO)4i;9ppfeM{{V)+vb{R9>7_*eW=u4F^Qv=LwRR=pQZ!L&C% zJ>-KYwsLfB60&(-ouz`sx&7EfrG<$sK>q-F;hGf(S`|K~qwLQPIR5|-PVuP@4-e1% zUVR6+yiF8uRV7rk^r2+&v8a_0+Rb5NK?QCHr~+VG zlBaa!RHh4Q&k~g(D)N8is9OARhsd`B^1NH!NRi_z1yZyJ%=+hrI?x!?s0{xAFSL4a zsOd4B**o3wbyZos)g=rFA~I0XqT9zLh>sDFfG*!r$Jg=)vW{v=SC+T8cM46pT#q)O z6aus&zJHfXHtz+l;zcY-H5IRynLjFhok%?`wk5qrRkC@h9`37ITR+<M9nS!V5k=;u z+jvZJ%=FRB>kJgFqAg6M>0d4Wro{a(?7>Eaga9z3BOEE~^Xh?!KtBzAeSe>)Nl)M( z!{RbJDn>c+$7P8ZQmG+r>N<%w9`tBVr^^l%@+XhVzv>-Se1Wgq{;%28xM-tsaL5p< zJ=>cr^I~qG0jk7*hd%5LD8Nwlw#ZiL-jfouIgXksYbSD^G>KVtUiv^F6#-d!=EBG8 z?#O6Ltu<5qMAto4m{Os82SODWQDFBZF~__x*vy3-idXGxsbZ;=vEYF#p?J9bf)Ds# zpK5-ZJAh-kiCrs`t;`FYT8z0`9X8?dsyQ?^A2iEw*< zl`9^iwawP6 z0ZHLOihsrQ4A1bNvwDX-cO^bzqqZ6to)oRFt3i^2nV1<7sM$ihFi=SZTm9xb~}!v6rC2XcSs4M()!R=@IrbN=$5 z^cPQkCCB`vMgH_Z&Da0Yy3OI=yF+?m>u~uUv6aWQO0a@uk~)Q^s6Xc9P`X`gZT){9 z%AW0HqL}D&<~Wb_aOlVB*t2PD@yGmCKW{)vQmm21DiF!TBa%UK0n|#H8~*^QCf5G| zZSBCikDfUEvE}|>_IjxxFymTuq1%^^BQ?~JtN!vY?`j2V z588fI^y;;%AqNNS{lDrRAihfV&QCeHFgdNWSC7V3&rwGt^>s96q6(ThW-q0J*^Gz@ z1M#R_dqs60h}B03RMZ+*kF8H1PBiJuXGB&;6%-@qUXHgwZEVgXuj(8+>Ig+BRy^rl3$Cw0!z%;Hhz>5&-k_`#OKf;VJ2|F`<$q z@e3oZWu*n4|OEC!$fAK?E0Km1=w>Ua=Ir~175d!oW1D|ykB-N;u` zNh${f9tY$Pr~3Z(s7a`yQN#Qh^8WxYpH(yixw1I^&V&q35g*2(RDi{e^tk%B>I0I; zpKq*H0i_Y8k%2+xaZ3LHGthyA+SJXTW}cFrl3a2z62%i-saq4kI!I6T?tQ$m zQbXn`O!;~BVsryTo`;+dTJ1{pi|()(YOrm4(!x#2#qc%w?{tO?t=hby|k3;-K z+56jcVLm{=ZEoJVuFsvD{qNh`j~%vZ_SC+hGii&bhFEenaLX#PtiZu!u_E>&JAP5+ z+hcVV>{Cpn(PU?2(tchTr_Q8)T^F|VdeKEPLmG)H22DvA$fyjAc%Leajy)wlRP;w+ z{50MBU##|jXH)hsLiY}P36<)8=G)LM9Zp9Toyt<MRy)EWuMHg|=NCb>hpy1a? zAd2Rvj~=!o`3Wu?7t@Q1ri>;hYtYqgdYDo}GDVGHTZN}}@kU978ycmUewJJD?onvG z7I@AgF@ON3DNkMlKjp0}&_$glmS>QzqU6%2fjnw4@&`2IL)N9;!Am73>BwW$L9RNv z3J}808Ih7UEvT19TN2=Kqx?s(4)a*048`wnh%7pl8=DkEG2`f4lj)QQrweB&^UbKPe<&Pe&{h#iSC( zA_dK_?Wt{{fHK`%m8l0<_-R_{JZfuGPzN48Z^wC5g(Jiuf+zggkOqFnAMI zD^3~Ie`z`3Y1NuXk~o=|hsv{xtrchvYCEb$1t`Xbrz5V?rwO%ldC1_&Ql=kx;Hqd= zn?W$We6bq6y(_Atr8M;QkcD<4=vmO)n^}ClnQdDstIa})Yr?P^JGm^O_$yKdTFU(#C96cyz)g{A)%n$IOmMeWT5he zL-(+}uu8(^S#=BB*k0dsi|cMyOO#k;S~V+BX+S%Gt$fZtN2T9MK82n&E>QMYB&jtc zfX@?}>CT$hp)0KRuakYI;5iC8TMvs&Hf1HKSmnuAE^i}8NgWQYCcEyaXby+EfGw!o z*pqL2CTDoBwak%~$x)i%)YJh?R97Beg|`q9^#|#z8<0Yp`hdp()Sd?*_KN-T*_43zZD_SKn%4$l&vqN?OxFhI2)9Nhk;*x1f ziCR_#QzE{H@o>#Y5lZ!Vn3Oj5^0{3g)X-6dC`CaBI3v!r@~=S+R!;$yU9XdpM60Sh zmac~)%JVRMeN;2ahp2=QER|>#Sd0GbY!B)l$d>vWhJoa7#zXmn2a%}2A0bSRC#7cE zl8Iy$eK^jXabZnoRS5(T519FM`-;foC(g%Hldqwg88=Q|80ptdElxZxHm0tFB(VUZ zC~Bh#AJ+1^*xTBqx`J6u&mh!E#Q?M zRQVB7E9q9L%_-28mfX8+(9__5i%?`JHzs!#91=+)tW8HFthEJhQaun;!uKocE;Y4j@pP15fg)hT2mYXj?>J zmO83S3Xlyez>0cMf)4}IlQWCM$IOKY8>6A%8M=n6rNu>!;6pGXu0%&~r8hQ04 zu#b${xoxG8h9OZvn2b$1o+X->F>Hk_7`fnhl-jM9XpNLe!GQ;YN4NYK)&Q+BAQMVg zCZdLo=joA**1a*}s@x*$WrInsMHo}cwIaBv?llyxI#}+k)^BC)Or{G5GDW&K##X;< zQP-DgXWN^8gm|<0H9eP({^{JW40|hQ`It|b6vX-SnR!?* z*zI~LVrTn?)M^+qpd#f|t;7lj+5%dCBsm(Om@=GNNSnzh|~%X~bUe1w>$O0}3RT$s8lN(kW9PXz@WaJWDlNQOQ* zH}dA9&zP=7a1AJWW;m+ic?Oh?NTv-V-PhLp}KYtixexwLj? zQf^I?w{m&PT+aUh+`E$<4SgOqXy>Nel+_iws)b%c2a*w5kn8e+#-g;T0=h+MLsP(3p1VVTEB?58eT|LX`=(kLGW&xonC;xOGD-u%x;IuUDT~|m zjvhm&`@gsH;v~P)S2hzE$DXnr5-6b(ozU7#js|CkCDrs_FG^vEgK@gqNMqMGvUwsof|er{BubvA zrGyLerHpaeR?KW}4ZqlP?Ag^)BAftF2kgg4fGlb{>vc;s+5D%9j-p>5+C&*umOCXR zDP?;bi?zQz``$rqMxc+`kK5MhC<#5kZ=Xqa+WU_)KB{_Y<#&uEG|G=M78-N~js<6t zjgJ<;KJ+7Z6&P=q{88%ql|B-B8}>iM-ud3m1lS(D&rd@3A9qnon3^KQ5U$mEX(pY8edb2e}C^6u{voQ+n++M(5azj2YN z%w$U*TK@pT=|wO+0bw`$A8L}(uv%49`IG(%e>2ktW&2M;HYegvKd*Nd60fr}@44{M zVrhr&ZG8`aY)vm{A0b1dl;vnqKsNgS;fpsbEV1%4NV7eNKjpXc-Qr&T17K=tat zF`Yrtd8}P3<922aIztky3k+4*y3nOZ60n+@wpae8%j!Rq?O2}bHK*bG0seIV053_) z0!TC_zb=A4@9EyM*}DTRoTl1>x*+uQwK(ce7x7A{s$a)!Ymkj3unWl|9ZX_ZU~aZ8 z%Ik8WWn7LF^FNvY053}I9hJ_V0*m;CLGq{{W>Y zho2wteq9}gVp^(n)}o}>{Mq^W9*maO>x#YCws9GJIatudQH+S*DcLN=<8>jCoDw|98~!ERNZcBQ5mDLHU)~Z-}-$? z9{kYA4M|*nL;RWhI;~VK6wq+#H@^1%-%Qm8Dds?flv<&SLfx|fTYOO6$3Tl_S4V&-3nP=%FA_6LvH=)fZH-}Eyaf0b$M(S z+gbb{#xgXNZ!IP}&mfn<_mc&SQC1O$)IkE?+>UmF+01ozAkY&`)8+ndnw*^Ir9uAy zSLM|zkLM}0`@62AhdD`54?1U< zm3+FfiY>{yX=J@VcPmL|V&R?mxl{ElOEJ=P@$??<7=uk@6XXs*)%o`Qw=rs04;XAh7g{3oikXiZu( zQhr=d`o3KZduO`43vW0?+!9Zv?-{6pSjwQ>H>H-uk;gXw0Auaw?(QN0c-60{2mN31 zeKydps(5EVng0M|qcygEVfF$10d6<@1ixfp3ZL$;gk`jijczq8dHFvBdZGbTLqr#?aLjc zY$iu>)@}9`5=~VuE}tkq>mLxV*1vm6OS(xM*Ex(qjqKc+}8ETq( zde({e!kw55GcV`WhyX=w=6tnqtkB%Xer>9@qPFexL3QBkM^ zQNZWW(D@Vj^|^{wNz#$9sUd}NQKhPDLUkYE9$Dy1%@)CAu^8HUueC^#!-%*}TOB&_NrhlDr5aqO=si72;2uSBFV$s$esCVV{O6Kyg7$ zSQ)`Is2TMGEj4u(^1?ngz8IyVtf{5PW$=^u+9RK-v=GA_ucc`lFB^x7YlJcYj8EZH z>6$4m!l|uQj&WWGhYlJ~k*8N!o*7y4)0Y0~Gex;L$}#}d`^t)^86_lsU#P{EV@y1x3<`1W;7{!1P$1=QSia`l)!X*y0f;YqHlh=UZE6Uvtwnt@wG}-( zVw2%s*UX$ve#h*N&WW-$66JUOT*}UsRglJQnt9`Ram`XotbVC9-Kd-IfSMt#<16GU+c%T z{{U4yJ`#!CDhkl#R;2ohk0DSok1n6!2pE5pUj}D|#ZWM}wz6^Zz z6m?!^tD-dkIirzk8mp@?{5kdlGLlrbEOk8Y*x@v)J@=|6~KhLxoSY3W*V>wixR z#;CfBjw%lyA>2>r$EKF6$(pHNwys*Xs-;?4B|+gbtPkWv6pBM6rccN>7q_-Ndxix( zYB3e9LB}2d5s#jIDb;xWW_leWPq;{)vQ+U* zfm>4*fAeSsfj+KB)7vX?FdwNSaZugdY2}Yx51;et!2}^f#Rv_ip=p6q0pnjI!~FeC zr^H8G#xDt-9!8oXT4rdZcC>*8rg;=e>HxKiAFYoK$uLo<>h&a?4m@~M0B8IZ9X?=p z03=FaP%tS`pTmsixUD{8r|O-ZK}nCAddW|kD5FeG7&4iF14NZbvPi<2A}lNbP({bI z!g(4%kvStxN#lAvPUIk^G7KK*+omq zB+^YKq%xLeyo$ z#u~(4);~{bV!d@L0n|XoaYP&SQG3b~;kM2smI1XG0oq0gRr6tEk! zvT4o&jtZEw`2D|C3CDf-m1B;iqnK){=GUsF>CC#IXK&jiTam)A>mA$?!>%w^GIXvp z!nmj$eR$Izy)z!gZ{o`K=zLa6W5|<&bHn9Y5kOCuO9(qxC6nF|X1gN~0iKmU-x~_S zB~I4GMFX>a-BvD<;;GGKs&un5%Ob1E>S9z6W|q9i3AtN~l6*i%lN}ZG0FmcPoC@@c zO`2$6SR)mPhSgk_74qSuhXp)(7;zNMyX*HR^V{OCrRy-1c$|jq%2dToOM}_?{{S0Q z(n~Zf?~km`dX=JtYc%pSQ6Vj;3F4X?r4Cmr&NT42nxj+D-%?THEPaOUmxXov=J8L8;pCWJroqV53p=^8$d8RRj`o-HQ2jxfjD+Nu%hzU0zPE zn<ck)_Bvi+a6f4=ny+%yR7)x>dKR1f&C0VPNvBf+M18I%ZY?`mLto$Lr0nbqaYR z-`Cy5B<0^Vsqd#hQcwB5#%{=hXUoEFDHhoI?d1a!*wX-NJbpl4Nc!NCwOG zwa3={dk{SXFcq$U!%maxA#3MOr>^tc+jDW&*Huwrb4e9MkiI^*)d6T2N5M$ty9QtB zem&P(DFnD?2hY#>gZXs8s3CYb&40<7582VO>K~ZhF}Cs)(QZz)qQ+B)QTO<2DtgZm zCf-3$AW5ACzX(Y7vOE6(1RZw$zN<`swKVFIEyGfcKo1TT{PWeH>>rWc8Q5^s$F#c_ zYrRZ?Qam+vbT~Y!Ipe^X%%|DUE2-kqE06K^_`89agDn_()PFOB`5v07rC1T4%l7c- zas)68q%x2SkU<0ya6udpN4J3l0u4dyV>ui;0Qbx_b(#7*P&m;g%en>*p{`AUV04~7 zq>pba8lYO%zP&noN6MUhx=`crnTnVdBhgHtX$;}D59$VxZDH+Zy(`>v(k4}T2~pkl z`TF#p+?`gL8fj;)o=UfkBw(yhjZ^~v07J(letog}ZcQ8Q#~)wW^665$cGWs5pXid8 z{#6J2XZFvC-@-ao;-BH`|I@ag<-3^pi~P&-ef5p&O0MnLm3>i|!PHSv=jrg33O1JL zO7Gw^daYSc^m+leM%3NQu{Rbw z8@zJUZ~rBQm^9FQ@VkKFY7HZoY!$RFEOhch%~ylS&5f^*#Uw;3)Ic>XXTmNlZaDfMYnHM@5vkND zO$i=cYCqz-Hgy_`E{{XM=ZXZnzYhJVz zF(-#lbkx<6mRj5-vAk*Ic4`?1jxY%=>RWi)*CZPc@cdq_$3+_-WjKD{pG}parmTFr zP|-_BBUu)a0*mQnRzS+gyo02v=D?Bp_n_oeN{*})5k;*>N(y?+a0AKVi0T&}bpuVw zTU?6)_5Qx@v^XGqxb?2>RRHShzkis2$79+1R{`FeAXLe|`db;3e2y}Kqo}FeTOpY; zHBi&S%PE?>4OI!AGys=E>H#Es8uDK9yI$kr+&NgKB9t|weiKS?@+4-5qCM`-<%rD` zV9cwU`H%8axb*va)%#=bY_%Tn-uW1})mQLs_9EQ7Yb&2|QA(SK2PDweZF-OzC8VxO zM^=pnhG_X0=F+?uUJcCBB+N3&~LqRSvvji7jSHfSn_qDsxiCPh39a%{Gy?G>18n$`@9ZjnM{>)w`SMHdWXH{lhJSt5Fkw9yZ zeL(24c8hK9*se|cw(>N&I4UY8h8pbgGh~0Gtji%FZqRnfbZSLEAacGlD&;wE#PJD?21k#*HudiOX znD`QDbp&L0R=R70fHDYMMcOq*k5aY% zzfpf>yR%2*tCs=Lej3zQfjOuH_Wb&O$rYe*^$}w<85Q#f;s^aP0Q}EWx@$F*s@;;} z@>K7W`+NpNDzwQbl3btg=;CZmBKrmdo~5Lh zDrsY36o5*iYld}_Ko}h|8xNtk;`biO-u_9Mpo!S=pd1JsSl82!`Fy%RXc903lT%a2 zhprT4SNOcR3$`zeV~VY%nTh)Zph88RP3p(>yEl;nS#F zL|~{1tGEgpgF%6cpP0b&=}9I$_?K2bjpcC@Eo2QcGJ@LKWkw!}4al*z!rPuK+Dt-g zLdAF*VAG9%$?NIs)9VX5D(F!tP(?``YxY+>I5sKgUZvB^Urpu^y(KiV7mXwj<)~#k zLC_z|r(K4keOCjJeuMo%0L2Z^s+G08)$)5v!dk(>`Q4t&VL>yVOF zw612WnZZsAO(c@Gq!DUWJm~z3g(m*p8mM%J3xI1*7$EVj25aU|06M)pOAlI5RlM=4 zwC?mc1JLxTqS{r}`5exeK<=s!rQZ$rW#1jeEg|O z@$;Y~)Mup&WYadGZW+xpq?70AjBy#wF`k!re!t1&Bt%%=O&~N3W@!RI87@{YQw=(= zb7r;pBHq$TdXaviEHSQ&3h16I5y_ zu_DTgDj1`&Z>7Qy&Hc7-jJ2IzgFgeq1Bp4~^7Y53OUBmPQr#5zVTqv`VUVL<2=n2? ziLXN(T@STu_Jv&zV+BL^b-p-Ylt<&OhF?NUP#aB}@akV79)bR__RsGr;++ANwG)~X z!{jo#t!ZAo`#et*lWai)O%6)q)Cy*#0tHmjjX>y|c9&moUW=-QFu!-1+j&arxS`vU z$x>o8LIXNgtTDtPnA56WDHs7F{{TP_vBt;DatDaYK>-1;42)!8gX^Rketk#V&cXsT z)^NCL{{XfMa?A+Nmk(2l^*dzt4tuaGHum4znM?;;?RZ{nk6`aCwJtpFEPWm=OqJA_ zfiRY;diZH$WTr?GNfqAfpbMEA*6`oQ3~4!z*pgV}mj3`sC<*h)$Dfx#n}`|@5!+Kr zq;}L}>@*b_$)WSDDtc2_?hNO0R8?YjrXw$a+I2CUZaW_>NvPdh-yZ>C9&d5i&Kvl1 zRnm{Sk_C|=g*7zN5D5k&#+zCc(`-OcwLB@sjw`FuqKC`NrWs?68KnWI05u7q!1Dw4 zSK+}PeH{L!&trPK5r`XdfY;9kPJ?On#x|5x3A+P%%}wH;GlYpzYTILMzv53%OOOhy zUy-Vwu>mVgzQtB>v}p`QK$G}tFg-{a1Aq#BK7AG3k#r=H0}N_3$rT(47$DNL0O|Q> zt%m;qm9J(Z?;PJm?##@&eE#@ayu|y7)YH>c@6EkT^_5thE3vbj~?Y5bOH%u)AI~Ff%_?1{QAE7 zJPjQb3mi~HiYz2%L?zql>ULY3lY4uIz*WwHqSM`{q9R~pW09P zIwTncK-l_hWB#}Ck8Q3^?G&T zBZFG>25xVJ`)a-9eYv|b_^6yUsd7-kl#K}hTg(;-SP_4yy}h*7k^TlMe{cD^zmDE$ zKf(Tfi_Yu#KiG64dYn#22c3#FBq$P5)H*0{O2p;CH|N`C#GI_4P<;B>l>;fr95epM zMQ^aaDR+K4vu5eo^?4}kHv%jl!)2$dm5g+Tqtz0+$r6Nxh%BR@WIN{Db#l8>Ll&xD z#?8YDp^Z<==l%|rTS*BQE?+(!1$^`6&}o|LUc}n@ylqb8*_rGmJQXhQHbRD?k}y^m z0eq6IYRz;0`|Ir8;gU86NXn?8`Fj1GG!$xPQ^KF&{{U5b0O+=@JKtCeYCIJ(VOY2e*CAaNcJA>$n3mKYz0M5Pjt^qhkyafoNSdwo^@ZYpBNwG z?Myb$BkDk@^CqA1+E=8~3v_Cg8ps?xzdkwY!}ccneWJc@()k0kv)KkfjTV?B(W$*+ z80p=N%q{+={QZ5I#EA$dOMu7EjR)E0e`)C(omh<+ANGEI4HW(TvStNvH2sOaSrk}o z?zr6fNE@9YjZ8SdwN*DBqaYUi`_o7d2*@92`RUVvB+|83{LMdZf63?59%r%pOLS6H zQ|#V>-trgpMUme5{kyYilH`voV=Ho}DApf^gqwan)Jnp%kGJ-JAb-j$)yg$gu@ujp zdJ4a~egB>PcnSHmRibY zM-ph(G?o_wSNpN={@nXcV~t@e9BQfo6axT%o2ms>pp8X7RO9|$fz7%amtgK?i6WJ# znx&&zki1$K)`GwmRsp}KHuj1Jq!N%vpAV7r`zg|f48bTkk&n0iTsj3X8+U4EGjM04 z#?eE$A}c%-i1d~t)o@CH?yBdKKAd~JQioa^7aTMGAG5D8k~+{32a*0?m#;^AsU{Wm zGslsUW65{|=u}w5&?<<*MK`eumbcg1xYbE)nvq&l{Zyx?UJS-Cz+@h>?;Mo7Pc)Dw zC92}9ysGOUQiL%sZDI%jUyo^;W=3Vv<^HeEy*LPLk4~gwxB4hkHWp)Vpb}qK^z_&* zzt^$%;c{?7;EyBIJ{aH_*QZ*&@rIK-g2~T>saPOpk0VYBv~^U@igYw(2qjEo>+Ruq zprs->JUNT*a{38NCptuJw;+{6z*sFS~n7aO}9L!WVL7(q!E)`Q=-YN5!*~E z>dl;2PAN*(pbwP@#}8d=`V0Hd+B@F6`1ZOi8vV3Ykl-o)$+8Rd@fyaCM@xWN*bPok z*V$I}&wItJ61LxS6mCT@i;4~{sG6TbYxZ<+vGT>8?C^`#k)lolqJ$D_K}y$&AmECg zuAk#Z!=>9D2b{p{d|rQVRreRjdOfGQdjk=jo|7f9cJ3ybqsLTNSIMqwnp(=*C8v@r z6koa2MTtJ(US!^HH?7{<<8|CTc_NGz55u_DimQQ>TGGEf4yP@@YOva@BeUDAfxz3cKnAy;9x>#E1cy>igWkKPc*l2_vvaa8{RYq@DmX@}p~ zaX3R7WFuP02BRHHn-!D!f8A}%Z?RUriEd+zQ&YPJ2ml&ZK~w2K;kZ}Gbr^0ukzsjo zX0@2x$00366+pwtsPZEiz!=Y1zDEB5EMJnp9Cqy8iH+TRE3h`@aFT+2zS?ZIKQW9o zkjot`*`2AArK+u_jpcn0QA=H3i0-0&*QTGpN=IN%|>>!#Ac2y#p%|IZEf=xgmni>wMUv~AT<-k|g$GApP zizVf$dYYJ8YKUs8W0Cbtl~n#%rxFqc{{R4zZTMGnXd-5kXMK6ARh5C@G7SwpvFHJ% zIxbmNyfjD|<0?R?sT8G48Ud+6z+8EskfHFS1(V49mFe77f0k6uZ{4?#tDbob@YP|c zGEnXejVlxg!byLJD(h9!dAT6PLM@AGk9Xa+ zyJv~~6LlFC7^>tlk4_@I21%%|SJ}NcH7{Ijp4aaDj8Rl)vXz+{EwdbjTtz6BNhO*z zH&l`{GN%C818;cQ6k2Vff)^U*b5_krBopUSK6N_3D)pDwEUfw+wOd4ih%}%gyf^?& zJddf*RENL2+pzamLaMtZj5SSLDDhKjo5Z>#wb(L!1^)m^u@|wp=h%YI%FR|k4&y{x zja-_OT4OvtO%DoV9Rn|S+q%m-?e!EIe+v*AoGC&9IR=&DNgNz{7YmWyTk1W-xVDBq zgKO{@B}OwFLlegqs+nt1OKBt`aL4KF#(Chgw(%p7yzf;C2X=4? z_^anbT5-oj_ETP8+_TAKv97RlKwH!)pus+b(BPArIrbjQqwIz4&BFv`>UPG_sos?J zG0M!oOipVb20*coPmL#`$dGOYnE^k6?8jq~Acj~ZVzOhjjsqDUwd0N-mqGq?@vjZ6 zf-NewRU(9wnpU2GQ`8@k=zwJL%w<_3h|HQ`z4e(vC=*yxRn3*O^Ka?(zp*TB5EyEK zkVgadlGNkmI*vR!5HE!p3<<4sO7Z!hkvupa9b}`#Rn$m4I-~=L>C3Su=nQJ=r9gIj z-|By$_S0M?Tf?JB4rpoi(}(##E}SrGqY9jw3e?xg5saUa{{RM86k97VSE%Et>Xt%c zLnLRyrQ~%F4!td@$h!syP0s_LX{Ni1p(LQwf-u#`$-Ov&HCKg3I#mYSa?HXtcBlte z00B7ynDaRdK=iG8SFXX{@eqwkl(R_DvNa%MGb-7V@e3Qs#^iublYj6-CH+?0E?H5#T>78O~Y^^w*7EAq; zDGX$CBGVN(bZ232)ycU&>HFFj0I!Br3;;+pJZYXI)DSwla`nWH#h@{`Q{3N%wV)s+ zGv!mO>^%zmZ=$yZD@#!(9r_Xa}E{Mr*es1r1Rek_yu_-6YLP@4+lco zYvoFL^;f;8@xr^~*Jb0GHiGXBm%DckG774yT#Do0ADgPAs)ClDS!GD6sxh^3KxCGl zSrRE;GpLZZ_bT#^`X}(<6eNET^rsA-97ZuupHXKuY^L3f@+#mOngTs>jBv>{1XJ=e zn`dm`_I|_M8|!-Jdc$b#?EY#^ue2$1Te<-5KoP&1n;p1ok|+jFqj2Uc@$`~qu~@8R z%`m0MKxkT{L1?B`RcU%30yH-lcR_Unr9zt2=f=HC ztjnnB80kNe=p2JHH4f#ap8Tn=p_&%IJQjj_g}3g5Y{mMn~Lp|=`zR4gnFzo_@WrhXyE`oAuG zG3zZXk<=xan-x|PM9KK)k8SuM57bJN>N>S+QCjr9$8Qb&fbc_#-+Qts$EKc`WUF#i z@r1E9q{$kpZ7uY%OMi#GtV$>pvVoiuKiK|VHp(?%0qfC~>n+9KyRe#*m&Qqlihl%^ z+580^J26cqgi&K7#>+DWKVR$ZQbxsfG{g@|4F3R>{{X9pRdNAj71zj z(^f_$1fX~&s7X>qBKhxgmaC*^Y7(eCcAlx0NjhnKzKHtIN_vYfqV(K$f?mfe{ zc7}g5wJ~x_gPxZeO_I#e8-l@*xw?5zN zI?7GKjobT+3zVA`U$*mk!fEjkWg)Mnm1J0qr8FI1i|%U>@kMZ}9U7#CCZLa6jt7XR z+Hux|?yVxYCq*+%9C;2sRkbhk$fIh?gvfk+$z$<`S-#F}PUOTjbu1Ph5m5~EP*b#| zgQy3!zdqR;a|6UM`)EI95ACm7YnDWUz?wA!Jq1!_g;2>A{tm~ zrO77r%XTzvswE<)B}bFX<>@G@CmgcL1RxV_DmeFO))$}-8HO@*`#;#~o;+mG5l{vx zpO=<;GkX&y)YVYtsydTx?D~rACWvb3_NFs#;hkzHjhY%sYN;cEAbDcB^?eud?fn1( zRIZ`+kMeb~El7(ZgNMuP^yy8J-Z`ue8z;Co9@&E#io;^+a+w29o{uM7iA^7opn{H{ z8iJx{0EG)B*@cu6N4tdWELeH^`3jtnI`v$zR8e2Ipu&r~`xkLjnfAZOuE``yCGXi(R+5XmZe@eDIuoD(i&9q$skyy zsG+PzOUgpsH37x!6a*uFvSjd;&aXb&aO06)96C8|uW}-Q3UTB1{@QT$9)4X8viySC zJ*iG`*lwYRVr3~OO5>M~Oe+~_qE-`9sK(>y>Lp5!0TKWKQN{i4-u5fkWQpj*&(Hl| zZ%JmeySJlFP`T<8Orc8+N%flo(|@oU+Vt=Rys^Updq`uYRZ(F zozwBuLQQDjRSt3Y3KS6Y>Sv0jFGrpaq~aw{{UyD!qVxZ)MKyDkNStprMB4a zTqJo7QAM7|RMNMe31!Aqtdqnvhh_>I%1c{|i|~Gf+PE%+!N5bQK&kUTZ4XH%wvqrH zl!PZ3}vl2++AwAKd4^f1NCpu`2Bs+$#Yi(1IMeT zl{g+>8h6Xm%>xzj)I&UMbn+kfU=98kx3;`UE2qQ(h7Ekb&(+Gg z74V4w`3iae0JC1C)Ya^n+L9_=?FC}XVfPV4tra?_kO3(wyq010{=VM=Bd0{wK6D2i zGf`8DADYfpBNfzUuYD5u`f5u0pC@cAA zrp%#usjvFJT?-ih0FG@_AC?XIjjE6FB{m5w666bBSo2YaxF7Ak-@y%)oa4|6e#-S< z9Dff^(0qBxP*+e_QSRCaB%-T=qePe)>HLWm!^T~66*^0)`sqIQkg_tln3@{!{{UyI znS%luFnXj9=Tq^oZ|)75vZ36O&}DPE9QJ0r7gtEcR8!*3ANh4HL=#2j2_-`)LZpLp zVhFde-u-6PvFwOfomZQNwux`{QCj!8_2(uGqQxO0H=}SDn5Ve^Xfvd*_OsW z!o-3Jz!e#$D_nVkKFaiOJ|m6Qva>tdnwK$-s@YqlAUEN7@cS2BXOJuGjM~{z(0!v~m5B@?)+08)R;-tl1b^+AZZxNkLn- zciss$=2E7Scb4hH!z7q2gHlB5GL;lH5P71ARJAl{vbyAye8*wFp^j+&pK)r60a(tS z6l&E=0lb!(f8fxr?VaHaYi58P3RM8kB zm08I#mngOeSJvL*NcBe0TtdKz#VN*s)De+`QRP$T)n4%MuMWsE-VWHe`s%78yXl-i0stJ7#?Pr zucj%-*Q?rnNoRsd00M(foZ_aShV9}3ABu#E40LgRJ@icm0V*49!*R2_h=i};NMWm!m-SwSC5gI%s$kEkFy@q!u;AO#4gr zo}w8PtBddf_96P%$_7*_wW%%LMk19s!8|Al1E7G~q@9bzq0pSR7NBH=Eli&ZcsxgXcB%GQI6Xn#O8)*!5lGf5Z(gPfc4D6v2Qo6ih zqnKQvV{m@9^nvVx>u_d9LfVSbgpvo4&!rF9_IitU?WG`9Na8@Acoq3jlUmc_?mmhI zIyX44j(BCJl5z{7$dXqs=0oMwZ|dgOBU12vk_+&%RhTq@Q!9WtokaGx%eVRT zBKkg2ej3k`!*5dZ| zoo~vp&ZC@D$oZZXr>`Eg)_^Lykb<>12DJH%4jHGPN;)l{hM`r4JZiHLMdoiIjZ23X zWkO2oYXNH;et91B*RPOR=)o=&3Y&k#IkEgo4&P>f9QZ-b1>O2m7!1SgoUtXIK+l?S< zE&(~Nk~5G&{h8y(sCAIbE~T1Ar)5`;QLR~KWfuWOjBccxT!Ul&9{dtg${nhuK?fzW zNj`KGK2;wstiZ`cs??f~Q$b$-6bCh+rG0uv)hzMK(5y1bkEsOBrII+68-phT%$K<* zQU09!pq8qdr9ibK$QC}De_+miGuNew33?-x0>2SpE5z!cH3x$5KW9;?XoQavN+k$E zh_KZjw7FGKyoM^lNdS?5_lpU`~ zf+^?g#Dkx*oeLN&6XU{ENQY8uT8hK&OdJK%!YsNvkQfWs%pH2Rx4_4rFX@D z7Os;_v)AOQG(%31{_KeD?tHR}S>-^|MdIWGMkPQMAY@X$rHMG8!Ri+!5*dtTfMLfV zYQP6j)9{W1IIT~YLIUJ#yAKn$y7#Yo$8PmERbg_AxIctpVyVpKcZTV#rD|W}`FgTy zYbqp*9t=>xHOEXG-QAC-K-#VR5VAa|5U-F5C@Lrb!8OYtKj+ak(=3xQ7X`o|5`3xa zz))mXl{{?(QNBn|sT2ma)1TkSGbE89%e^r%0xHO#`YQ5lA&4)|Ceb?G^OyBB!m- zcK+ht`D~2QuI|7s1XXjXnzEl5@|Yu$(?n3xtsIXk+SXz@2LAEfE4ix5bl1>u>P&V( zR|h}p`SdQ<=b^>HOXjD`_uI)?#aZ`-7D+*J5QviQ`cYYii%?fd z>tdwRpWy0EMA_q0Oepc#vqL0Bs-&;VRKs5ci~(4qqou{x(oLk282!i>`doAE#nHv9 z`E^nl@FV;`=IJA!>*`&`Kg!bsPUimry-&CGRjtkVsgoiR&Hn% zL&s6AKQGv8(i!?QW7F5rRMzfn{8dz%s^g^@JT5+-VF(6UO*~kb>KYip^?u>fKBwQ6 zn}l$VIKe$?sX)NqK>!6 z`$42W5G=}qOSx&4nS(QM94n95Kh?*tDTVT)C|@H9s%&^cQv>cfToX>7wfWkF&D0 zE{wGm8^GT=5wYa>A|U-5j5 z6w<>TWi*h@LR?I;MLX?8T=FmvTYpUaIp`R4CTo<@T$QA4>X@>rbg5=d(>x$1h#9IR8ckLP;Cu1IR7 z5=^XhsAZS+25aBgD*Y#hcZT-WqMsm!Ql!%r0~N(6MkohIv6CXH@dFcH;M#@`Kh?*G zJp|b*=-jo{2$bEIN%4?9L>(v9^tbw>?I3CeuOF9BkhL|XPaoNuf19ryv~+5Z6p;WM z#tL1Ivf4ok!+;%#An>=py@K?q<6oEhxPE<8KrP!E{LM{%c<9mmU-?13{xo*}!tL#m zS1nCO&E4B?aA&rR*&2#Xx!AjZ51XXO<~9!Pj-1GqI1SZ9O(hjZxTG=1F?CiT0^G4I z>QuN{F+yvPo+wE2AQ4}e9-EODw!9UAK2`Fk4=htZmtRm%gy0i8xGJ&h0mwBD^u*xu7>ZcDfMf-p54{lZ6 zfaTe%F_kJwKhZ$`gW8s~jg*liiv6GFuT7-qgC%}^I$c|G{{YU?FZ}1E{{ZT5XsF(Y zq~1KA@6r1QU;ozHTd%t7wf84t)NLBBz1VbHQYsp}jZWy3Eg+sB4A4akEsKvAG_O%q zDuSp&04a7h>)-cq`g7qr@JeJuG2DkxsE9FeD_ji;PbYsbeFvIrwKMs?Nn2KM%O z1UC?|GRGc@WT`d#X`~E&zn4M#ySrP23mlVb{*VB0`7x*L=mB~HiRp56i-B-g)DNV$ z(5VNXud^`0O4TVrN}fNd@25~K7yT#j;5gPCa20!e-Xq~OB}f>0Wg89Xp(tNOafG}NgZVtH~#<+WeOE$ zm@)#sR6I|Z>GiDzM-TOXE{-h^Q}j;zq{w7;pGfZWNfm6=GgsrXRCwBVuYi=RNF%G= zO(ec2eJ*2NH{*||v_Il=D-_yfAR1~@!}d4$0qEyV>?;FHxk9?usv3aOq*sT_6~Unc zp!;<6PCsc<9Hs+iZp=h=5=Tzc(0U)#1q80KY5 zIin0XwMJ>=eQErw(>sGS(E|68NXz83u6;gVE(56hM+cR{%~G|PB21c(NaB9qoS?Z34eKQIXu z;YyEBmrIH+i`h)n(B-lj{5WLO951wMl-@lh$c^#0Isw1ak8cTWXsaZwr{=vSWtEl8 zcIe~nAGVx7pGwSsN_6}Use3Z6iGu_srpDmNke|{`eKHl0kzg->$G4ViAwX{cKQT}6 zfzn9@$pkjrQT7x3$4a^St7t(=%a87i)h3i;w%l0iyObKhN_r{jW|qKyg(SD*+l=<3 zh3aar^hy1LJtraS-?tomh^Orx5YEYy<2Q2DWcEj7OS$W^8$!0ef{%DpR%hwz7O_u; zzFIohTF7P4@L2@0yeCbCt?cIKknVR~zTSDZlJK}JrCclL&XuUtDL_Rj$D~&L);7D@ zn#%EFU}!-=RMLk@$N5K}Rpr>f3f41{%yk|{Ud7wk#d@l`Iq4#%-dNfRHOQ0ALreQv zYE&arH8KfD<}qvgfVZAryxQ)rBezS1F*znFQj>)qYAd2t`KNU_u6mcY-e6nncwS)< zNk1HIsw(<1$wGMN&(EUogZM@AXD6PAcI>zLZgvU=F|hCz1NxcJ+A5D zn{p5QN`SVHL#Q1!Co~4M$3{D9;X5N`_;B0*0I&0OGu|jhMvWUex2oCXDw5*&Mh)_N zdZ&?aQl#mv zBW)72E=dDaP9#l>Yx)~Cn&>Ld7&vySThr+E|fQnEWIFK*?&>wEGX(IuqNHl3S53ogsAB%ghQ;{{TArW30Fu zTFu|K@tfBK4NYxj1X(3&DV9++O4+V-yD*-Tpt_qKK#$MRf@QaRSzg*ghfPgsmIosT z;u)tL^*!xV!MbfQZV;dv%}z+tL7^UCWE@nH{Q6z?KJCMIFGfk%JF;l8d)l5@X2Mlf zD3W?ywjySlHxe<{LGb?K*-Hlc5PhO*THac`C$_l)wA1*oYHDjyl0IPc(pjYD>NYx~ z6*Zyx>7lJD!o3$Cjd`xYtia~F>bDb5i;|apqEyzbIu2GUh{ZJZ(Uq~9DtM{Xh2{NL z(mlO>6}FS3UWxP$RdY< zCZfDeYx3jJdzhgz?E9kBmRR^y6GdP}2dxDUnFQyDL=UvO8yT?vN_>sk71+ZCBKDr- z+&gNVt5OBQ?`DT~;^d1|Y^zFBB*9YZbw~C7i*MzUDO~9QFT+aI@xjUB4Ltr`6l`P1 z+wJ62QdW(MY4V}1Yr?d~bB>i5PN~B^RXsI54LX>WDjK3uR`kO{^WlKXp~wV|2kAWi zKqH#_Kn@O?v9AzDp-LL(%NQgdFgh06+5iMXGBh!yYI|sLDF!4Ne zq6KKwqR3-Q%5;DTP(2>EBa3|n{gO(>=*5fqX1Z}+Bpe!f*C(Uc<7Co2Fo*{ZCZ?Gf zr3azM&!-oiso5i^^J*?uC6Sf1DMGFl$JAMlpTGe9J+R~oND;%*v=yQ9^2x0}b?Nb- zF(iZY6s>;RQ1PuzIDD(qHFiQJx;is44Wd91y*#tou4Pt38Mxr`Ki2liB^i%|Ndr7_ zTAF;ta%+!HnwBc6pCSk~!w>N4BpxD}&zDf)&p_r_WMO((!+2Tjr&8P`g^!cgg-AEx z@%0xf(xyOYG*gHofaBD9*8;Wk`66l}AdE0Nun5T+&M0%|QNyPyTG?cl=+6X7(oZRo zk!K3<4GO3jh~g{xKCh*K_jsdU_sYA1a2kjCj^pyc^6O3Gp6L#d*d~UR8T_mA1lE}8 zNhU3FVVGHvvY4bU3i%(GyCSK%QboWA>&5Nv&NQegQC=XLVyC+VkMf@}(<*^O76jLU z1Ji|k$o~KV$r$OPt7*Il>kNynSdxrci?Bac;A&B*a!DZZ{cpC`WHhZfR|1EK^z-6) z{QSD8b_GI~EWbRO`BIq~!TEi?BO7m3Q&h^%lN%2#a;rO2v&ca)!n%q%k(ZVt$`AP8 z+i{Q-B7nhw8R7>I$Pc&B9-4Lv>XK9wQ$+@uBaJXWXO=yBSzs|$aR_IUDnbULUCLZ@+0i^Ju^jpdWcufp}<$tfbcZ*=+Erj5>!Z) zZxaZk^h9*ZeM$;4#2bTk9G*Yedsz{6)XG0dwoe*YAR5!>UW?~(SJc2c#sx?pmIvB= z`X;~3W}iJbUF@xsv#PNWZ#~VPuFGTb*-ET@b@@zA-Nw!QPMZ^tuBd{pwt1>E6w%t6 z^F}1%#>d>5?cIgl=HqufVOb%IjX0N}0-s`&pDg{6-#XsKYqr5{B;C_X$A@YSOb?(v zxu+jasJfjuUenzsdd{cAV)tY*y)8h^QRilb>E(?9GU0Nyu`I6&qNr&Bjf(0C?sVI1 zTFG_bY9|!)2RR;pXAzDaMK=>I!YonARj4GI0HZV&r;w&kAI_Z{O_#cROEpbLL6FbX z;;Eh}mRu&)prG3HDNgUF?Iw#0OOL5BG;$JkNJ%GE>^+Vw$x#rIwY_+r0=WARo<3Z9 zC!4}kM0E&0C8cZfH3~DvwEI1J*lYPWd`HIb{>`rK-Q%-{aZgZb;;-y_ z+=NGIC3M*un4_(S6Hi51SQ1t-iK*as4hTmi=dJErUAS4>(QYPUJioK2aR*KbBrn)b zdR?+WZf;9R16#(mttnTnK;yt?kDxtmJ5iJDmx?&B`!j4%JEO>C%0BIZS-2& zoX#*I2l8pp9_^8m!}e4Br>$o-1RG)4W=y zWnjt{MU348zMW^t#kCT+u0CV06*Qr2^}8Cp!OR!1&OjBd^Tkkd zFn(C;+7}q%)ZEt5#8lxj7`$fQ!9>-RRTOdQq^6-tV?1n&Ja0=%WLJVh9YW|gUKvk5 z>?&|xgY)ZRfc!NbHSc}kI=iX2rvCu1!6jOC-oV`Z#;7Sh01=H$-oXFuOl? zZ=JWc-)mB0_q|r|#o~81;h@F_eZyP4Vxh0k;wZ8JvkYZ5Jw%Cr3~G3^)@&hrh_9Hi zTItfd4LH*Uv-56|OL00ERkzC4pwtmV^QR9yeU zk&zHaq&Oge2j||jpF>aef2#wh#EMWId`I|xUR?lRCi`K!W23i5>=ktL=W0$rX>IwW z(@PWXJ=t9r8yh!`WMis;RvLjClG1o=KD-}t-rM`rd9=1{Mh>?B07{u7&yNq!q+5;W z(e2kaA+<7!4=j^G{K)EvXg8kRsLoYxP1ijQ4ig$Hwy#-jn)NWXWiA>B#&>Z2h5WVI zeC28xBqUloU@mz+=iLQBAGD4iA?d@YrP(Ab^5rW^pIBkkYAQ4j9Xw9Q{0F<-M-A<%gK)8m>fCS= zsCs8KKN{Bu1b%%z4gJlWzv9;|2x0k9XCQ;e$m5To>Z3RR0P>>i9>d&OoypQ&g}Hi@ zV+WcnMjL!k{{VccDx{88fK5k|`^pTJ9W0Jmta7}iP<>7PhBqH?b}8I7o!r)w9I`6- z(Teb(W(>IU)ZcGMkn?TaA!E6Vu z($){JABvyq`%VoyA^WGN`$J*x{n4=3YHoeWTeWhL(f$73+qruBER7v|DZ^ypYI<2j zOOt_>)g0XItRR>$>T8ZdMj#5-6ku|p=Tu;lFlHS;OJNB({nv%^LsUaM2TIWjCky_)2 zLFxCw9`ur1T&dgD6$qvcPjLs%hbnj+iqQ49=6B>5dhS$gM$7AbCe@a;Rp8v)gE2N* znv#{YNGFbtikg}#mXa3W`9L3EaT>MLnk)f4s>Zqb3JUZ;5yVhAmr@#V^go|K9(%Yu zR{^@VW&?2K2WDnBE@Sw9V;Qq)>G1UUDoG|0Nn1NqRlB-Ds9ggyH{#r%ZW(0(L(C*# zO;iv70R5hyx29ybjx;Wy(!P19`#Le7=*Q%L{QRf?0M5yO`h(eqh(C?LVCkP8*Zxt@ z?Cby6-m;0d#wT_P>RgsS70Y5JLJd_qA%D9`Z*t01kbqe8a0l1edfeLEUl&=&gzLxr z{+vI-(1u}sbGDddfwiQ7iUXPg2_C-}m!au#TT_Xtpsb3jx{OgxOHmb6ja33hw9>@! z%+Dh}gi#wClfd?H*A~vKpHh_|kBEPtqE7;GlMDXC{%)&@X`WhG7_OHPL<);sx}t`- zxB8?0$J&u7tYz0U8Tr%Gtq`Y9dg1nMWxAV&HuRg7;{O0c^}Vfc>F>-wAktLuA1}AB z8snfIEycI7{k)i3x`B_af;f!JR18s6$1y6cO(9Yy(cxl1CfD{@?5RFZNb~jMj+82& z49EbXH2Vnk^ZPor?!CcN#nzNKN-F206?pud2Q7qnY3rbyBQ;<9k)@fUnk31F^RpD{>5yPgOk?GPF}wNodjPYNmt|zzfLN1L^HkB_mV^0Iw5Mf;{}s z_hh+>c&RqGU0Nl%cIw$W_5uSk%%z zB*E#0Ekw~r>U3rdgGd~b9B7s|cPZLhoN_ZmPeMN1OsHR{<4xkS}fl2qiX>l%8A2L?$#;2tahwSXLZIor@jZ=f6oJrHh; zUh$fgT`NzpC?DakOaB0Cx-RLnH9(n6Mo%3iamcl_6?EDq3elFD2Sh9zk4un2{1Ja_ z+#r$(kc!n$_&RbIG0Pi+LKq+C)i`gC&g?z8k=`3-6N#Xxjp5tW)fmVgT(vY+RIpT3 zR7E_BRyvuYlR_B7Kh$6A?QbS*QSLj0*H`(pw`u?|8K?~jCX@q@Pjepg^p;6)ZpZ3o zCZzBHd4N3Y!nyP4CEGN6b8J;ZF65=jX6hbTm<71qFKp!f%8q&3?Vv`2XLXGzj6#A&Kp6s@C;$VYR^M}U@pzJ4jwDd&X2%~jKV?l%p*87oRs8un?a?vn`H_Vn{+RtH|$+dM52 zIaWA2%|(7#2R^Ji5Lz_q=+edt@f5)$=aZb|RN(!+QNL<#iY@2aTkfxJR_1H*^*H(r zPCBDMQ?8=EvWlztjb%+NNgP8H1$I`lK~GAo7C$-q-H)g(swfr6&z3b-hsuJq^XTS$Zpi-t9^3Kb@bbq^hT3U|q?R>+B|xjm z(@9ZXO<19Xamh)e+#c`Ss*_?GPdwF`wZme!8;4vmM z!D+;T4M4B25^6Ef>$|q5(ZOP}dx0rwMR4*;^12F*GsmjzipwJ`fmrDx=lnSK9~VW@ z(O9b=JR12C#{+=!BaaOAAWdo(MUYcYt~9}@r2rM~97htsQ`4lc$I5Ctsix1;K(=bS zs`0t(o7^~NhMX2=oH*u+>J4~t=(g@ZsJEUbN;4y1Q-K%?Y6<>y=yv{M+js1~Q{Z$= zN&sPa)zVf{UETntl)Hez7%Y|+YoE=y_S9r+455#omjWm$7P?n{p4=+o+`Ya_b^bHpNL8 z;0Ujnu6;Twl6ZsMCZse|gTNop%YmTzbPHwoMLaJpJwz=Ws#YN)vDX};LX#8Ps8+G-pJ_-cH*4Qn@E;iRqe z;xl#Bk+g*-j!L9RK>|V=B{b4T?$$h?NU*R6+UQ;)s?)0Yq_G*zJx3FtL7!Z7j^WHq zBo_`4W~T>%#W)|g$YZIHcXs{3-j%VYXK4zheN}or6!KY%{?$Baw8u*7^#E+Ziw~mc z?d|6+NjUcqqcr;oKP=*gy%kS?aR7;m1)#ws)wpA}l>Y!P+0)M3`6ZLf=i$d?=7NAz z7}jcO(npnAMJi-fQWc{B++B%3i~b&MvfX2Hj#=_(a(``4A1Zp&q{n_bw9HjvsHpA) zDWKpu(C`MduguWt?ON(h%|}C5Ov_M>9XJ>9tNyJQF&1Y+QIFT@Vm*<)sMS?a419Z7C52}EUaW9 z4wMDFlSeMB{M`&H207=g{?{I4(B`F%XGVTh8H#w ztq_Fy(ZBZ%UN^WYvVFn0a2WN?%d$5J$FE#ZnVJa=k&7bg&?%&o{UO8ve2otRNXJ&sQT(*N2kxwO3QzHWt+w331glfA=<+)n zsy5OMnr*L;#mi8>k;JAz2*20ZW`>T)}SEni%)!$(6J ztSc%&mS$B}cV;Wxw@ba&f2qB2WCDVKCbf&5Sx8_EHJI3~ zjrkt!^_Ha?PZW4#iOmHKJw1A5QJm>m$u*@Z=jooFGkt}yH+H~%!?kxd<A*nOaB&JIlmN6)5tr<{3W z;{H^(x1FxRA)b^`<>mpcYx^nl>v4XG?TjIYl7_BI{moljPYjUMk1bscQNk_vOIoo@ z1X{r1NmKOTeSMVP*xqfo4+ZQ7IZ46tK2-lsib?wOdhNaKJvZG)P-FWlY_2|zvS=gH<{B!js!GMIsh~0XTnoLsc+;7o zhT*6tiO?F3I5hiBF~g$m`Zk|uxkXOZD#Q;k7!&(A{#|Pan(qz6Nxbkm%=SR;3HJA0 zZH=Qu^-`?p+ncen#;b7F)2u{C9dr~FNfxeI5qaa>-6&N-6lvS5Q3KMn1Nn6wqDEj> zD?w7k8gLY?eJfv5Df#r6Zp6**{nL!4$V?*J`*>t?H8H}X2!cY6iBnRbvei|&WmG>< z2-Ec*?5tG&ks5_5^QRH^aRbvGcmo|YEenHM;-4{E;0_cOC#7b0xw0|RQ()*TPBx3} z;%ZD~TT;hW6&O@Mf0~_wr6NkC_@f@OpR1mI`imLy9hbyDRUW^}p1n4)#zQ!v{J7VR zF7v=V{v-nSqpST`bUsX%eDJ#(G&1;-~~fP+s3(ud@Z3 zC4W-TA(Ddt= z(OMH0sSQ35q=0FGkxJ7f{P=WgF#Ug-?HtAf9oLlkNix-SxU4;4r>Ur{t2l@>MUl@X zM9URLNASvKc2<>c>!$ZU%Xf?0eXDM|+%EA*i2(2|!Bhe`lR-|D*hFt08#p8QNMBk4 zaw>2r1x9Js%yfIZHA#)yyGv{T0DbDQ*n9;BCTi@pJv{Zb4?{~&OloD5QD>TcB$gl2 z_VD25m#Rgt zSs-CgRSdHb#Ip;XVE+JH@$I1qG~MP9%E(B0cD*ccpjZr|HmqqBNnCtaVYYHT*!-jh-7 zEycNNVzETV(N|_`&0S~p5Mvk~3ayQTRkpj57Lb*eH90JV0bEd#g(Uiq_7=HVDtuG{s(kp5Bhyyw!BNAx zuo-Fb^i#xi44gIE>5Xf6X=j1wF1F|9jdw8Agdx3QLD=XtIYl+EDKhr^Zx)j9Rb__0DbL_rP`U@`Pf;Q zaXU|MQT^6aAskayOBFI($^J=BlGMt?wX~|U5^SK7J)XmFEyRlqNLkwe4>R_3Ni4C( zz9Syr@}8k%yH~0=egkgqt*N^UmwC_VEM!t@Uq?&*wNY<9BM5uuh6{L2wF>P!HS3?CEDsk*|MO@f@_45uvPOyU-%n3NCnqx{`L-5dLDY}`FgTX=3pp~u4+4^1vw zS*t4?@F}S%4N#V*Sx*)qARnlK&$ae;SGUeB;J1sy)H`!V+A3p7;F5m-FZ_2CBF!OC4I% z9d9fUO&B^=ZvJUtU2@MO5>1VV0AJb2Lm1R(WCI46`v5qnm4C_6ZmPtJwba!rIM#x> z^67WAY3Wjidg?q&P(e*1q*b-iO-(aQ4xueDd7zX;pFl|U5pjNf(sgEKNhQ=@@QNA_ zLTG&Jo||ys0;)WzjMMDmNBBA;Un+W*P47K#U~D>CX}cG1(uwl8N)VJ!yzunp<*AMe zJt1Y>l+Z|Jr^>|zJ)`vqz!2kiNEM<+{HP!#+mQl^=uC=M`l zUKp)2Q(MZxpYdilugL;f@-7g%p&zNb+K*2A&CNs+Kous&wHL-9v&+tVmZs z>92^mssc_3Cb=2nYmraq*P)eJl@>>+6&Rxcc%0+NQn~!P)_=Wndy2ok`xRlM$Y=8T zoxvt{wxY6>EYZi9qN1p#sFx)y(?rPha*a>vSisUa97Q{(crM z>JVu(bkjwuDMK48paxf+TYpb|8-(9lOuTt+`#EmZZCWUKk0b2A{+Qciu6-*|U%EOHGksI6*f0UT&J znqrj5O5k1TmBd2u5(6{k!+kK0*{4lg5s-Ly3r+PaEarpDI5 z-h6&#Z6rxHJ^ui0ni<&XVpKG80vK`ZH~X$w)nt+;pfzG%fYPqr+3?(II|oBiZy*|1sK+!Wogk$q?IY+ zQj*;19;N}JAhUT3AieBKCA}<37d#Jf<-#p$hy=!z6azdxaYK?nm3o!q1(i!n+fFA{ zJg5bKixe61&lA_Gr%3`y#3Dy!npCy8Dv762ZxmpgKiB<#Y`Be^3RP6+H3W`7Ivmr0 z2aikCs|RBBS`ea~1!xDSA3skoKBnR5B6(ykx=YBY?5pb1>bgXppCgCn(uP7-eyXMjw3M#P*zL%6~AQg z$MqR4dw!drz~zDoYNF&+)Cyo`xxqgw^p(N^oGD+()AA;nq4TKdh4*e=J&Bd2k20-I zkI2kve$ovE)AQ z`esE6ry~>uR+#x8@NnsfrC$@n@fgS|NUxbEiQ;`JPf}=dMBFaNm1-9qBpTqWjnY(= zJdjNp1bF$7x)Q%n_CHVs{o~82G{19v^NfK?*ZiG3A_EgU4R2Zu(twe|nB(Lz2OT{oJZNxX3+!kkGMR@TfcxB6bg@;#qe?mwupxIQ5{sI4e? zf0GpRu5-{kbbv|YY6rv`fnYnU_WHP(FMlqaEkCn@TfEl=L)`jJ|jxwqN#1<-6oH1wVOrT zJk2r03IShUlAYQ7%eyANw|4EUUrTKBgx;HCvk8%|uH6|rit1T1OH)l#JtQkd6jS}Y zM77BP$z}H@@-?>W&6|C{GP@NvNVtnMHR^@V6L0vJw%K_Sc?2t@vLYMT02>uaN%$SMBS} z;ZCa14urU=B8rk4B-D{X1XStbc8QfDjblwLg;{K?_&)a0hERuq^v6~VLu#P>`r!o< z!Q-_>Y@R(|=j!I0Ua$D+t&XdHJ=J0hPWC@(>umbCsQiUGE%b4Urx!+!<{(qc%=&&q&+_Ox`2&*dt&h_kgdVmlTv07|hmar4>~!TCO~6 z!IhQaN}u8F_iB8;t)F`fg8sva{>TomZ=6ZJ4;Vq|ovf<=cIzb;1p%o({o^`H# zzI!EXO{O+3(%XA3g`#X$*xUH5B^5w6sg&dCQl3d=h*QS`i3(~KHzb>nVo1_BV~!*Q zs;C0KfK#IPX(W;4W))&j=1osQM|swmFpy%FSl)X2*v(O3q>4y_u)5ePhb*9j{{S2I zr(F|`D__c;HwqMaocRoXeqV1|$@ezm#BDE_8}npS)ImVrEGAl`AL9|@>i+{5P`p~#Vtvf~v2nZH@`#6RbvMvVK-ZeaXmqd08rS((p!D$a%5yN6naqn}C9z;o z=fo8q+;tOAmNU_={$5?bxb}a`Gx7H?xN+25KYL?$4r2udVPcjl%!L&g$VIlXf8)qwyml3(;&&7+N!dK(+F*O}U z1#I~#W2Z2dgp>Yi7~(Cy0Xr1<{; zEyvs%C8$s$l|74(yGLQ)j?2#0Mkv-aV=@xV2~bCg7{_p-Z9F|Vj;eVB_rB0KZd$xA zB$)6?6d*AKM&#fEE1x4zPKu>|;oW;Sf${i_skmz9sbx9bgTX?xSI(1`q@$sztCAWD zEK~&fC3a^lbbvVbAX$5X$@`osCfUr^dOaFIj%!k?HIYx4=ofRzyvb(rrN+;4hgD9M zEGQ{cscI`qlT4a$^XRwk4#&ttpBUWK*fW-{sFtRDXwM*8i6T`jnXJI4no~mnVd(lNE-7wzY`TVo@r< z7hHO^s2gKl$Cx)peb;!B8;g`<9$UbPmmp~e3e+k}tws$G0&TqgC4?}3>a$rA-RRgF zqz%TVl_fwFug<)B+q-@uQCyMJb8tG17Mcbz`?ughbhs_E^iU!F_^^v_E4RQsB{eD1!w z!{eJNC2*&phLx&nr0_np2G1ZzbJ_WaZ;54-YLFpn7LmL(72(}R6(@kFu0{blg7a^? zNhONvGeQQDQrWI)OaV-iM-fWqg&TDL0K$@fF6?uOrl|N=^6G}KFGRH%+D+es>P@{= z^iF`r^2L(vER9@ABC^}iM?YQNBgn=0DMRO_J8YNPJKjw@6Y1+Q0g&M33^gcwYr^w`?RDxPTPNH~cB^Fv)5<;n{s;}HE zBHM4SttBxTqaZO9^T@BEK4AIOW}Oy0T(nlsB#^->22g50(=L!r3a}uLkRt>V6z;lg zH}{V)`+iCp@Y2-7RYyKLqB^P~C!wU0si~)hriImO+EJxWl(vCjwhcu@3q#pcPqY18 zI$_A6488Tw{8vfwPau*eO(j89bvNJ^91EZIxb~w@r>{){H5^x@*7wJ1r-E`&EOk_} zhbnHT$pZpy#g3Eh72*KMz~oc>K40bO_!x#bCckH=<IbLfmQ;=t6SBvVf<;Ih6R zN$RG4d2Qa{&2@BpbEj!``))1QEizR90C}XKgA(*K*OsknrLK`uo+^T(HgyHnS&9Ps zed_0I-Zz$p(`%kMt)0h?#ISD)nOMq#b+!d*fn1J+9JPDPJ5J+0_cPkO&_@|DAgw%K z!djk6b5A-@kr7Rm@?kaYYf8(-c^EEUn z7ud@#n9MY#+#n?C=h@Y_BS71Ts;8cd1y$J;HMniNO)z0eiNNErFGMOS zC;{Nq$vlVZO{_hQt$ACOVgS!4i6agy918K_!9@iCAD(&(KK}r_N`WKN7u7%~?aoh4 zxqbceM{X&p&DZYyEjaywAvKcH*?{yJqSa68HXyJE`rq;)gKFi{LfYHHdw36*uSN3Q z-ZPT($XL>pB>rGyC)1`%KHbZ1sw&)0_{~OWt5DOyxY2R>47M({z)@Ev9!j309gwDo zuoA@TH6b=2*oBR^MIMPPk(N;34OlA=v{IGwHR&U`eJxd~HL2nU%oC58{#_Pr;kfEH zMqxJhYV5pzN|L>#mj&4UeKPInw+1kh7bOie3sbi%q!9lApNGQ~@IBSP1fANuO&FHe zX2%qgtW^3M_W{C&q#q&DT`@{ENkB>UBpRQUc>3a;DPEg$8$SV=!~Xzzwl3_-W~pgG zsL5mCj8kqrH8=r8^|;t7YAN!Rbh>|bYJXY)3n2U{OPN8@JU|ml9O*wQ{u=d0T_osA zwwh9h1JBIY?ZpiN=?RR6s+wh~t;%FG5lgQ{bTiKf+o22)nLgmFNn{#$TQKJT0E^Ti zT`Cm$kM(~%=jGFC2#w3R@oDp+1pTM>9w*FntIKwd=Gu@`wRCkGn+FQp@1`c3J%M&Q zAOgA)MN|^1`h2TpJQukaZEYi$SxCYVX~(s{Zv*ym^z-Sj5#b7G$|-`whm}YlX~&nZ zpGEt&Gg~*dFnKCWjRX+oDNEK<)YQU0>Z*;^;jS~RU%ee$Jq=8T1u{hpl{oq7Sc{fm6~8{<-*KTf+mM__+GmD<1=Mw^(oI1h zhMYXkPY#E?tRt0WgpjhNwIKR7PJIq(T%W_`&=0pU>eXhPC+^1#;yE0tLS6K5H0X1r zZ~$IK?0%l&lJW*;St}SA4W^YGNEj#5jZU^qm=MIst5CEhijL4Icn`GHVAiF0|VK&qxdNYqc5%AZl^r2P1rP}8G{qJI%5M5q+N9BG=GoKV(+riPg4 z%XW8D?5*AL=dC-cxhZP1TQ9kvY1hRlf~s7O-N=$@bH!xj!;R zC{Or$Nj*`Dt>-}>g^NNwm(YrgmsHgvc*Kmvs8Cw#^cT0Zv9MDlWDtgxJTOO{IPlGQ zjydUS29Phqj2aFkU{oBEf5Lq0)tq#;12OU+`EqZbr`r!hS-v{MyXdQMw3W56<7ug> zTXSPKO()#dOJ${|mkXQ7fZ9lJ843yG*yC@7cV1ljRCF^WloiMnH5DHq)C1C)>NVZx zU7MV3_czqG^2SM^^U_p+Dk^np^QLRl+@A?1#r4)+rx(9zw})cksB1E{I0{(BE;6Q? zjw39%oK!NID{Ctm5!Gd8h%q9{FYSxYM~qrKq{Z)01Dq*5X-weKyiF^fmRoy-kGP~# z+Gw$20VMZi(^1Zm#FO*+bVRY40Z}iKohFpc7&1o6LP9l2q)1tGM$kAaSNuP~dyS-n z!z_m?TA5mDBaJxypCkB3QgNHaj07Oi7UBRaT7yB36f`_dY0~F!)j<^HTvZ2tZLaL8ga?UZ?hSo=w8D$ zJy}yPjlo7q#EPi*(p6(9qe=W9&A{i8?u;mvU=BEuTn+?+Jib7D`eNcbBCKag^x=&8 zgHeombWlERY&-^EuhO?IiiUa`TA-84(U0;KsX-a8S#$=Ckm(?U$S0n7QE2kPA^LK~ zXgCl^rF{61eFZ%SLA%shp(5p~YIKp356yG?YC5LwrtEyjPSxc0=JBg}aTK}AjD9mC zQ7RLQkW?_FGRx&!nX%Kx%Bv!qDbsuV8&9@Jab&l)iCs#ilyRq@8dQ_<0BS(MuR$9P z*{x@u%KEfcV6IdOk>u4Rg&CnHo;t9D5H9*YpNbILbQ~TO5b)X z3J7W<09lwYWhTU1*lgM)GgKNAoMY`iT2I?r`t*Kp%#jZWf)C2Hu5bwz2jprvP;}+n z-MzJQRo~t1y^)I`Vh>GtUO5urBu@MmRgu-#NjKAQZSByy6f}i{8u@0Qv|^q|73i|r zd{=1}bS_xbgXTB`<>!pl92_2?bXQeEGZeXjNM)!>xTdC$P%%ZIsG3RMKOU(MkPBF_ zxB&5Rq2vHGQMn|F;8a%`Dr-=9jMMVz&!u!_8Y$#+RsdAwkBE^`UL)3>S{ByBWWS40 z;i)j&gLZD*lCZ;V9jS$^&h8rclxuln$I%IX)|^JVq^YQQsi9tEkyKyZQZEIgdAmy* z3g)Ew06giza%g^iBDlSdDCATXP`;pjnK=~W#-C?bH?n>*O@ZqeY4>I$XykLXzrpL} z+j(SpY4E~G8hYGLN~Q{_sInEUS34||M4mC@P=(b)5)OI0zq#eRc(z$Box<1 z;iw9fG!(^3{Ed1=vR}lztg>87HkVR0AQ-3c`hmyiUOYMrcNW0GS4BZVx_&A3UV9Zr z{{X|1wXu>@)k_>xG@`PTDNRkLc#NNb%73rt+)vBi=zHhOQ9}Z9&9m*O#xT*`&V_?x zP;!kMf$9LKLksRwv4{%}gsq^z4Hr4!V_}RPXsFt5$RO58G*Q(3yh0N)zyQ6pwY`k&`JNr+C%>H{x4Sbkv}nYtzZ0gp`RAf} zwwbJo#SnQT&?v+X95dBZe=v^z`B}Pq_79Ak4vtQ>>Irf99H{IKvn4)XclI7bAyG!u z^fWR|i53PtO?^DbkiiO)@KdjuQ(#q?XP;kVi?)me(LR(3f8r-FhgY4KMF85H*i%`NBB_?%wi?SACM zY~6>IrKs3DYct!sdXH{VZVmN~q^PIK)6ninaajC;-MD6;mUl{{Ej?OCBd)zHz^9Y% zcFp1q(${z9D5KtEO-m3Il7LmHxCEhPRs&P1Dq9AR|7$}s;YYmTGgejsLe$s9^MU? z$4^fi2p-KR>k9t>Qe59}W#y=Odu4-cl5N7~F*8dcX(V+#5ddsZ5L*P3((RjOk9v=G z+@!lihAOHeutigfyBw383eW+=C!^`OK2dfq>FbTl-kSlpP8x?N-MKBdjLBD3Wnq&6 zv2hrf@rjtqZTTbe)M2ahbZsD`NYW_UK_{ow#rU_&J)+xj->*4(dEtpE;m8^?gwSho z@o2!PBZUt|XJ)y)+#}jX>l_j_4y7T<9WlmOp77 z9Nq1ywc5{TX(W;WdzwtK{P1a9)5{$K{qY4{l^+u}Wdz17o-bqVSm>*WjwvZ}6qON} z-&^`qT$Gk>M?8C9EmUll$wFEnDN&k$1%6fiy#*SoRM3v&N`HgoEB>r>q4@#wXXNaA zHTzFzLzc69$`5E3DkK{&E3l`I;-Wf_-3~mfdDT5z~#ZX5ga48D9sI>zm@H~8n zLifmDn%hsQJE!7d*;w3u{qCL9UX;0Ay+e{}Ouojfcwwa4o2XSn<|=I69(9sUP*-~yVxUBKXJuc_UjEt`|5Hx_TE3Z?01tB3$!5!M3{tV}6`L}mu7JI20Dv23F*Bm^l$BE#5F;2Z(w6kyD+r4sW zN9QLSi`e*DSz(f&Z{e~tR8_4b(?d~H6*Ra!YA|#TL6wVNpK?zrz>{B3aD;fvr6XTP zW5?&9RDoRl`ULLG5-1}H+H%>U6!r2oK7CrR$E;uQ{HD~11|ug|9U-JyT}SZwRQW66 zcpU_CFN8QBMN|DxxyNgP0JdKetXhF-obV^)IP?a+W--WAX1+jr=j|T9=jzQjugHyy z@tdnpWcF_6i})NFNY`uNUWSi3ncZ84lB3Or!eDT9LPX2urD|f)og>BpV!#4@z03z_ zvfFPicR2#>`e@uc+LZ{S6=FsJ;Y~*Xo|xNG^6KZqunpp_Yk(ADx~e#NaLsTybW8qh z?~eNZVfnv|o93hAhD)Nik73nU_3u_~{p*|AIE?RSzAq6~xH2{LJ6jcylRt)}qQy{o zrjoXqBaE$)tk*c>eQ~nMC3fR-fSLuAAt%sPO+l%pSX1ZJmjt)Q&__9h=xPU2+0}vC zK(FN7cpi#x{50S53I70}NrnFa(BB9D0A9VL$MB!`qtUO0H}pSe`yGG((yspiiand0 z>8<^d+?$)?k815KKJdWP?fkYYXkhYm7~GXS74b^-F~0Pcik=*aqLyf*^?)8*b93!= z#22uMOTi*YV_+Ljoh6ioZsH9`9C}x)MR9E@XxB-No4G*-p=;%zBkT5cus2-)05ad@ zeX+KV*6Xg?+rKilZs4ebfW-wy-dOQDHKc)KYP$LGyQ*v`f+=HRC)}tvLPrPKeIdB< zWw^Q9O~u0lQ>iq$ry7@B`Vmqy<~lx;b_c*nE~AM-!j(0pc+pj`GhQFhqn97^jQ(7> zygdwiZ@9A+c$g`s6qL2QYbv>Tb5GSfugBz#%IOjs zHBAD?oBL9-wv+xZB}cBBpFiU1DuTq2>p@?$2khg}&$GXqkHs&L>qob`D+}D6pOwpm zNLK~dIasN2@*@4MqV&Awz;SZZ_9jgNmQ_akvX^SQ_lU`jR+s+{{RmTf~@}lZtj@cMXFiM>ZA`n1vAq& zo8RaUX)a8Fn&TBC z*UQWD&q8M2?p>&D7DFAH+x2Z3R%|v#rnZ|e|^RLp~36R94|8*Q^w)p{OuTkEO~b?;N!9MB2sq9D6p7>`Fz$#__U>YFajY z!Qe>GpHy^512v!&@;qzhLBwF!qL0}fN4Yvqwk^-Ms_U|wZaI>!s;ZW!{mpHfc%2-! zPxyNX@)QWh%UKqZ2nEq^tJ#&k%r}Zspg#Pw@ngcs;5jIOF_1R!G_C1BDE0mB^srK6S|;{OMkzZrsiqlW){L23m(RJh7EDO$`44=7eBN z9O*nr-Zo2FTUXF?`S$8ZG_C{0RZc7A>rwMPGQcN{b%NnR(sg-o<3p;xgwmrO6V1mK zJ~}G=%|&%K9vouDT$AdCAw_X6lxCJ)Y@mWfexlr|3|E(=F(NUQlrXNEnjDdedHk{I zPMHkKZLgO^-(`FciU&^_Pp`c&6S&LX7VyoRHPNjj(9R+DtV)$ zshSAN(^f=c2&xDkB^-TBEAD-)w|h#;8G}JGiqeLLqX5&$j^GG1<5Pk6DZAL;X^|@= zv9QuA0U!dpPj!7pRE`*>dMdkTD1PD^v@w|FF|?O10EvWX%^IKuS^$4G56y?TD5WF~ zBwe``BokldQh0;J;0H>F6a zj7=NqMT+PYsFp$Ek~@LJyY;bXB{bqTY5pxYIRqjXijfJ!)$} zaClhu+0Sh5u-G--JiOR))Ca=Yv5}Q_!`D-4V#qJYFqPwU|Iq7^S%- zn4VNFu5W*+{{RnY$;xY#8ntQw703F#g$c;%twNY2tA9pYL8+RCFtK?|aLXJ|RT^kb zGAzp^iWmhysBO32n_k44sb9q1+;9N$6~#~aPe6UgX!@7&o;L9Z9345K^}yA@oS#oV zoAA45vwG8S?ryN#yNh(zZ943vHF%Y*jyhIK2%4q}xCD(8ZTo zH6mxyo>5ToNqFd~hmv1W2p6Pc+rw8=;xdEs1J8iT^gnKRbVGeHnhEB2(`YI%a&wv! zpUh{>b$8jEPSE(*vm)4ejpwp<1|ug09d_*BD~R10jnlgF!5#_gvUxmxm`CQ3qot>2 z(E?Z^i<`k7?QhqUpX%=O%v*llvr5I)(i!HRlvGz-Wk9L&7{I~f(YGY+aNS%b_Rq6j z-tH?}N2(=2X_~9nzi%Iy>1RzBLZ@A0AlZA@ErpYN(ott=cO3hRF$Hc`pcbOX<>p=0 zSt+B8RGmT=NW!PpZS09QuWfejTHCf=lX1AUxW6egP2)->l&R3Nxt*A(3_bz?)0%X$ z^Ks_uz3%4Yd$Wbs(6n9_p_u2fuqU%+c@<-T*Uk{I^?0B~h^5!fFN;yIBNgQk(T4Nt}b zzMgIcnaQodube{RO_w8GBNY3YV-2OdXJFE)K=u6!}h-F{wus`DOs@9bh~1& zYgNxA0F_E?t~KPxWa*~>YeRFS{Xag{Uq)|kE$uneb$K^r6p51Epn8mjSz5(8Q5YROF&)_>Tf7m;h4M$rQ9b8!L$B3`mm{W?PiYRgfNi33^EQCqHKFGFSQ;(Nq zv%K3Ge}6~XB%Ph5lf)o6cXrZCkTp?!hfH5@_PdR=_Tz7iT0K4x2gC6H07%m$XUzQi zDZM-LJF7Qt@BSUP`bvu_*d2QnJlj`&(__DdMMZ;_2Ky=+lMEg@x`^@06S2tK}}>+ zLKqBW9M{+Rn9jKQv6$>`#n~Hsa`snI<2sXU)n%*u4-rpLXg6+05fwFEC-AD4nmFkv z6t(0m+BD>ZyedYZYJk)vRHPzmMuI=joz7}hHr>gnOb7KDURQhZ1%gK0^;Gf zxD{62h+P_i8rkv+oi(Q%;M1c=UGh_>_ABm;{=)CfRYLB}m)kuaj?OZiDRp&)7#T^8Wzi*3^cZWnwW|y6legqK2~< zxS^?%x=Oe))bdlQhNajAI@6z}{fcF^hTXR4te;J#v}k}GMw$&qY3EN|bO^eFOQ)83 z29VCgQ%y7G1$YnH(91W@u8QlDT>qaeVl97!5wxn zm6C)Ua0ZyJ1rPc9SNG=4-8*XwJwD{kR^F0}6*UbP-pNe0>z)dj+DMh8FEOf|06{Dl z`u%;C?Nc<9#T;-AQW}xRNI&KsJASaWg!f5%swm0z6+8_pYg+LhLxpqGmQ&&P$v=(# zU%ERA9gjiS+Y@|sv{fC6mce9Wt=qe5rjI{OlZOvQk)&}oc4roptM`#ZsSIpDBm?Yw z0R}cPwM7cBIP~%!l+8HxA4sL7Szi>bD1QkQ;aq%=NRNj2T8-nL>>cM@A{myVix-cB z&m@8>?ZDD~$A`@$%#`$4@2CX3kxIcMo;bj#c*APaM}b+_>OlmL z>F#K-frY{;Y@n&7aY5 zPpC7!MZEi$5wa`m_KyAD^m)zwvawxKeR$$G~Kl;*g{&DngAwYCct9rme&iPb|oLKGz=KwnQXT^$bHf71THY zqZ=Y^_H8z*Kf{>Iky^nbe;o_g>Y>;5!F&?oQ6e&q2MTE&O7y z0^2T~jPz7ZLjqIIw971J$B??>RS0Sr5>FGTV48w|XUn59w4Dh+Rj5ud7;vRA{Hyu( zd!OlVX@APc{bwKacenf_{{Sf`_H<+5%l`l<&-*{w>;KcMkC9(3x=ZE_M#$S6Q~f?+ zlWygzXOSe!MLsJg)rl=E9(iQTPfJM})Tkm!My0qn{)1j<-&1*()<|}vYYMTTCofPc zC~8OeItTLR!9L6$OP$N=CLk^pXaf|XAR7Ku^Qq{5`1$a2rt&-Mwz|8x_CEX0?pXdl zLVwaIvb8xE83Gb3`3MUR=s+@tWii(d|bN+mlT{SIy9WjH-M@b2& znFQ$;>dnIGQfFCP_bKV`bHQtS8rkgDmaL&-`kUeB{)U*%2jV|7kC#QacTk`a)UgB} z+KQhp2Z-b8*2H@&5!W4Sw6S|Dt9EV+W9-ajI#Xlt+ggr`7e*pP1x-x;GhLCWkp8(P zW@kTB?8L!wB#hD!2;oshA7B_Cmql~kcY@%OSLORYRsR4`>yAq$B(asG@u3QIsi|<` z*5I|0z}Sm$KA++3WOiXnyPA(bPxXDhCTWqJ#!D*K116rI&;6c}r+Zh>69cVPOx%W1 zI{2erZKb5v#g^ZnYTC*vC=jZt^Zx)j$6ID{t5-Fr#Y+Bvah6Sr15Pr%UP|*H-e7!oGE(2{= zH{45In4?Zeohj++Y1DyW?xRGiQ-FD}ztZ>jLEID2l3Z;{N%`aUbkoZ8V;>CHg?y+7peN7IfTtdUD!%)YzB<}XnS$M2g+&Uq zQ_iwu@mqA4jqM9o=BI(`f-pY1c%%#U4S#BXce?3!jZpCwG$i@Z3euJHALZ$!VNw`s z0gBMjAGG?4ii~lmrFsMMKO*}Uimqx*e#pY&DUn_YXm>X2ugkD9CWaw#xcX!iyx6Nt z>O=VY9ep_so*$e%FAS4*iSRB0oP%IOFgFSQX#L>?tde1WcT0i|_+ zBl79FG$IDnG@Nl6p~=pEU-5lNJHIc!Vzw5i`@e>pnry9PQJuk&r+b8&iy1NqaWtA# zko74f?|<_{f=pqz6D?VajA2br+g>7`euJh8fgy;7HQ+EaiqPpDp+#s#et76J-8*9! zi>rd9LpDmGWsXTQIeEW}SJWc0yRAi3jU72YMzTU8jT+L4~$~gnr zzm#uYR=wNhT9BI6b5$5x1HztSmE%KBf*jvwpG|GJMgSVZIRcA92?S!b2OK>3npdku z_`jI=^S`$rZ+1=(0h-&r&A4!~b#HPt6j`ih*WTEy#FcouEbeb?RuhN*@m0PoJ5)dx zcadab@+-Ho4c^rYiKl|xEV8Kusxyy4=kp`^^bSqR>7iRGE(<{nnv_%FBlug5KRQ?E z)m8L1$jbM&$HyuO~^)obT(eMSr zB7^{Ylr607tl>*|A`24m09QZZC)D*6?pv+q=|9z8Ow82nH53cv6j0H9Jx?0-Q{Cb6 zBe19WBi22mLyMCg*V}GkNru7GG*Qiy!`5h~movFuj#j0gKa!x7vrH^t(yF)hd$CCp zaO}!4N@QcuRB`$AT(2Cc=*)D|v{6C{vLLr}{n2|@-(Nx1Rk1}j6wMf^t(ZA3+ z^wdzFBT-U6gzz6OJxqM7%(3o}wWZv#rr?W_!^8rVYGhXxVZ@r^oDi5gue6qtrAc1W z2*Skcszn3L(k_;3Mg{eP00;6o_75>BT`CAxsT?X!YhE}s!L0%F=w|l}17sSXBf^#8 z<|*fo0t}aL>Mh6P z+pOhPyG=o_3RGgGF|Qibk6&J?Zv+m12@H6O1IOp->-%VW4syF2ACsz(%TB2q0;urB ztf;d~r^Oox&W{_S^1qMl{Rk~-n_q+Z9aTS&km1GyiTI6szFd{E9sHI1Lcp- zr=v&E+h=a<&9%DwCvyJ)6vgfBsX;|9LnDZSIr8Y07440VUB48t)JAiVBeb-^qMR&| zEz&`BCi_jiZy=sfWQ7iLDBmxa=TZki-frBy3pWvvfQ>p$Fq0b$6degkpev_7;1jlFruN6eVOd!2@RW3_Ih>YUVR zlm$A!gp55-Fnw$3&~b(A-{s|#l5DOov^I_*>#3=i7bKWW{@6(LtCf~_rDZN1zgrLN z`w2HF^72b4mfln*9Xfm#T`UF-P@X<{74+yuHva(5GsF_%=8-kj)sg=I+$vbYin-apQyrBQAtgO-FSWd7EZ2)dWecr)(kdkMaoj-AY}zrS;IHCtu80F zh4#p8?M0i!%N&Z%S~uXWp}}D4XmCYO4v8)x%s105!Iw}jjSxV<8kN+ftq%;2gvw8b zU5T5c-_;a5!>YEPYrQf16Fa}Roj!kbRAl#4?IebiZbO^FR^rnZlT*_|zIf@~1d)O@ zAE?L=ZrhzXeYU8#o^spnws@h|(Ij%K{-~o>ih<%(f=R6@!=OJguFJV4%+_0N%vUVh zRFbq%GAIEjPY^f{&!Ulz{!V?5lFH_(_rK4tk8{Rls*0Z%55o?-%F97tR_-8^GSpvsLn;a`{A&{92)_B(ba#zN0l z1TH>gjMwH59Fx(=+g}8}X7&AL1_!6VnZC&DUZy)*g9D%Ix=)FHal0w9nL2nRrpje- zm06z2jkc6|NG1OOfYjn>>CLq2=Kf~b<+=Kw-yOxM%Cg0!)Dcy1Rk(pdMGsB*H!;Lx zSO}7wN}L~BV~3F8(krJwlVrVPyYhML7tHMbQY_0+Hg|91`loBqP}SpTUEL@mk`3Qo zH5^h&F)qNlH?@M;2{&=~3vS-6Znmhls1&-?6n3hg;!+eV8VV7UO4p#{^5ltnSHF%+H!jh}nwh4;Vyd9UR#4PtC82@TNimigBnp2|7gJ|wDMi2@#hyNT9&69 zio*5A(ahptrrRluTye{8JZ4&H>Ltk3@)A~@uA#;3Nfz@@xjd~N)fJ`Y$>CfXLq{BC zLb9ze=77^56$!2>=!=%QS9*@*%)7Cb7Ba0PDc4ixC}>;MR+Pm$lkuMtFDvf`IvwH4+cc9C{6VpW`3N z%02tM`!@&ITR*Y;Um;yt{mAbQsO=nQPInBu7P3~X$nBoN+xg5JZ0^d-;Z+4JRaNs| zqLNY$hh0Vg0PBs5Q7=)o1A$P*N1l>6kC6b585!w3oUeRNsHcp@iYwGm`sy{HCY1E+ zT8eD{0Bdc3oEvj*X7~4J)8_ZLef8cOu==00_hvVHWuG4|O)FYj%$6iJB8I;bl(vCs zBaKo5fh8(5nLm=}x0`?Eo4vH*?jtJ0I)gP1ubmH{14?=H3+7lZEq49h-th`t#~TAr zUoAXpE5P}WBc89n6Q86Vv)*%1)uN_j5sjn6Ni9O4s;aMP@wD{uyso` zIxt(g?Z}PTY0_Uws5~o0^sYZX80w;Xlo@$RQM8$^; zMwA~JRA&@YG3$}$Kc7IR@PoDfMdq-1-T9EiQbCNyQAbaT+d>12q@jQsoKrqZlA>?E zuaC}rjUiTuU2G4qS0(aN%+gD2t@OZ9yBg|Y!A3Fj^yt@i-aG_bXOp?ukiJ0qntJtM zKN$PtwfgG;Mb!I?X>Shk=p1erH?p$3J85E?t0A;0H6@L?9^12ML@-{aKsw<3JM>yqFA?plI74-yFZ9m7{R4; z=UQ|Rd@}2N1}nOI-x;x~cR%_g!sqF#wjEaNgT=56EK`Din3dS zZ)1OMcH6rtHktW=DvWUCrC1{iEmR91(g&S|=aMYL$2w5Fp<616{zB7^o42Og}d zyRkak@C}hiyO7_J!jX{OOB(Ot3(=; zA&J4lp%NJ!IZ4&k8-sg$#lB1ApLNFf%iHfW-OnA2Qii*ZSF19LX;f9nu0;tVwBzP^ zd4FdrO>F=gxPmA_^B5!mC`LyQx1z!Px;`rRHs9a$z1gsPr?58V6j+-5y_DZO-wRIr zR-+A*G*V~{155vOjfB7(9Nje*1xmlE9v~Yw`_rkB$|#NundFzhJ8jlL!Xk{dWK&Fk(#-J zpBsqvMC^>p?0%X+(_m~#HvD^3whlofwAcP9f1mB@qAf&_jA(0Ge=n6je`Y#*pzqy> zxJuGjVt&?HNHNr;UKvB3O|51F)ub>MC;j8yR?1YZBs?-W~(%F&T;izkPwI70LeWqMf3WLKvHqZd{BwV7m?2k>1>&Arry#iH_zB=Ns>}x9;uO1M~6VqIeJ!=32*RjTc3) zsfh##Hk7}3FBTh!St^VBckbvuc^n?6jquNuD6KD zAYp4Q$RAR&1=6gbhOzn)?dmhDD-cOMc-I-H+fVTIbup^CEo)O!aC5*CDe341cvq&) z$0W5gyj3a|s$^qLCk9!iAG#x0%LQPheHf3?&(v77xdF^$HKu=_f5G#>>e?Db(;OY3 zfWRp7uaPtdJ;ah}n)D6s-@nH}4(Y)oEoLp$RZ|eF4Q&>((#KI5j6aYd7DLD9ka<-b z7>Nl|YnoFd=fm<86zSPPl0X3^c(teBbHk0@n|=b=>cK{@E`iL2!75h3v ztj2sbA~9O|(D@Kfbz{%cr=o}6`$kN*)7*I3;7KHGHA;Z7kg~NZeZ*|XTBM4xqW~?* z7qJ77=J9C^)|XK!D*8ENHQ)Ns$23J*TA z3dyVC1*0JXirt_bF*Kkx$7xalu6P5{iNxg6oGi&us~l{ul92Zv8x<@YT0^Ccuj=CB z+-#7_}fRO)J+sN?Ez#~xl-$3l3a0yT`4YeC#9TMRf5b5ZM@5sr+<#U1>x{EO?# zTB%VfH#_c4uar=&W`l5TjI}awL5}ZR41cLh5(Ta7@0M4?-XJSd>=}5kpOMW-6bI72 zeH3#{4=&Si#!_^JawtVY&=RyXpbh!wO+2;{_ywKCr5|KbNsN}RNjqH2T~|)QiqlE3 zcGYe*>SB6oSmdNx=c`?1G{(e}r|2YiP!SCP05y0F*Uvl;t!wffMR9;ozlq+}<6Qjy zSUBj|Zv01F>^--*cSMPZ*i;!@y+-)$P1E*^K~0yMt~H^_?pf=jj2f)P9zKpJP{>wa z3}Ke!@`_RttQWSvR3z8e&*fgOT3HZ7#y=oyQBLX)m2>v>S)H}o^nI6-i*IfGw3x2G z#t3TmxTB`4t*Xw|h~u6O%T}{S)ajOzo;Cs|Bo!dF*qd$@ccV0P2ZyTD<<(rHmhY)1 zgV%?zm!BM0Jr*9yohRG$H58Roy>23^o6j;qM@9T%D(Zm(JecagECM<Te_4J%yysZZEj<*S~6y8-YBdgCl0&jgvJtOh# zfano~NHt6k+37)FCG+9)=<7qzGnSMp0&`z4GHd5fijFV6vK^V9mGPS6#!|>q2bBOx zqge|6)~E8+e#?FU7qzeWcIF9TLh`9l*}#~$3I_U+iNM{h(ye^1fDfDKRj2U)0B4Cobl)o`JMc&^M5ht>j*NvvrE_b z4!MS|x;!oy2=$b8nYx;)dFdFh+|rbX6ZY3ap#+-9BGLq9t z)`Lw=2>_6NIw;*Xe{0Y zSRNv+n))9ukK1(IWp{b6CM2(u6#)5RNE9BF`3iJi`ZN9$qw^2r&&Ym~?Jtp?x6(V; zr1o!W?F{z)%Ir?W-z~UWiyMt#&3gfRi5P=g7HS%2BDn{JJi6MCKfGyW%SgDb(yZu6bdm^E3!_`oXZZ{{SJKuWD-@#V>aa z4I1eIRJ8b@9xpr71euJarXw_ z-4Lu(X0f}Q`2ISDGML(jXd$DcsG2yMI>{tMc)fZq2|7*vtDb&m+S#`0H^{GTjbvH% z1Uhj@h%}?tzGZlEuTHF7zbKC9!0_IH6abJLkC&$mdDo9vH&4nvr%8gu?Yv)DW@~r0 zdXZwHtEtb{ZYo^NsbpG;2=Omj9BW-Zq79-5w-#@xLAi6BklROL7b4wDeCtJ%S#@GO z#){IX_^D4mnz!2`dEVe}v3)w%0YD&U$*Ed=tL4xOlb8w!j<*=dalaO^2g++$z^wCeq`mRmZChyM{v^Q;EkuF znA230s;Z1riWpgRpjYvLKnLBE#khvrR%T{+)apD~@h3bee-0_pqbzaHbq%pyA&CGG z2vc1-;AlTSj90`@k$Xe3cJ}+*c)aZ{KM~d2#|tfHR;r~|gC&pL6xB6VNlQ^PEN$VQ zft2{mDry|u+u6h|;KH`ABCROLAa;^#PFL&*y?>LzR(WNj9ia|I0`^ukb?1i28Dx zXJhF8uiV+XZ2m3kp{C65?Z=D8JzO==&|=}LFm0ffbz#;@(d4n=KR)CRb@$U|*w54K z7R$KG?tf5{AyS7rN}W%VD^RLOndm*sp55JFYHh|>w*f$9Ab5tSP$XmukDneRp+|6h zSju%iHyyM(>Z*rxZ9TiVBdDu+8lImuTMaXsm942rnW3qxs+ECat-%J?_EF0}c&=2v zb+zVQwf5_SgDU>CHT7zKqK{KT2MYQ0uXgsQc((m*ru}Z=Cb}4CkP75#%9F-|f}_R=S)pa1Oe&bR1s3->Y-YBX2_(k6s;LztMs||Fm7$J zbGF3s?R%_OdwV)a9tTDsr;`fmN{vgAQCjpEhAq!vxhD3`NE=Hf9at$OgHTQyoiG_}{B}~ydcPG~Dz@KLp+eq7X z`(3`m%tRS0>K3Et#F50**NM+W(ryB2CA^+muwnr7$DS)n{{XSWqXY5ZyEZ3RY!QK~ z+|)ZuE44DY_;(c5WvHq%891_XI%g?JO<6c9sH8-V0XkVq0r(gJ@6RW0iO-k2&G#-} z?sl^Puo&FgjYTMHsG4Ur=*}y7?ph|du$JOh(gup05!xs-=SpLTPyK(nu^X{> zk7Z+V^Uz{9p8Bq-$HZ~x8#ICnYHC%lmWM!=595__$x&uiVdUgCA2Dq=`%dC4FH}Qy94gGDwNRXtV^V4dpPg~%(K`NN zeWdX8-W_QSw8szIyDuYChRR`TDPzc-G}ZYC;}X=W!&^kt(uZ~D>0`n6f9^b_@|NKN zF09i;2qO#$BvAf9@TNLZ%Qlf6&Ph!f%x*(e5&@!*pgUrSRsgX$aB7==rZc#1c z3Um?yr>~*=Jo=F4Qz=bA7_ckCx@ZD{#;4`!(Zl{|o#F96`HXfx1EW4Eb$?}ifca&f z+<1sK*L$Y*G~GYen=*l>lQ*?7yIUOxgB_1pY0A`n)g?KI0U@0FSK5dqxQJ?as~I@0 zf0EN2a!=*clClJ4kkDzOuL23+K6Ui@`E^(S0Pxe_CBNsV`04)ur5Dzp{dV^DsDIz- z{`7y%(>?^>@3}wTPhbDlsgH}_8zfwI+3XJ5+52mzy4P<6Z8j)R+4P%N zIg)P-X}D=?cJ)jQ{;wRh^^u4mO-GU(A#e4?%xw9OX`i+Y(jow*+oy)R!?DVpjzlKn5+A6w=Hx{%?uuk(x zqwr15`Sx=a^2;8(bVjJjLaoEp3etnu9=!&qx7=*q{;JkgdQ@vhL&S>YRC;62K7ApFUqeQ?#oGt{+078)jv&>&VMjt4j9{@)F8D0f+^Dd++HpFic(A5e`% zl0v4O1wi9pQIEHepG_yGwsv60RY8%+?Ki36F?o7tktHkwj|Bdfva=Ea`h9)qJepJi zT_cLn{{SJH{(WhfHmWFUgNgz9pE5;waIYR6XP>DzHq)E$G24!wlAIx%?q{iLC^V(@ zJ5M1IYZ`deZGZK>yBzlPWtCX9b4ro&6dC?>^XWX&$O!P`4ckU1w!bW3Q#2zd2E9X~ z?cK?mp1Wz|Xfa!wzYv}|cb#mLQsJoTIWW@8I>DN;(zGL>M|y8cirNg8-rhUAFS_b#VwyGExXEC` z?fi6z z%_12HI&MRbd9Xa5N3}~K2g5J=Vw4_7CvynWhx1+Y4~_!JV_pWD_UoVNNvwR z*&HMpIv|Zvigc@qkOg;v?6L;bNn#tD+w)*Oq?5doPwH3V@&J9JgQmkepA^OjBThfe zf6c>>NpCGKT9#1Syt6!%^${s$Rxcc%yca;cUZM@bAP;m>ja^KnR)i3v6!P`XYmD@w zx(25OT$9`~C_M)X`cQm4IxMssnDu7*p8=HD{m|VrG>C;6lNny#BzfYnSd}$;?e%Z= z9@g8)0SaqTO(TgX?9D;O1_n(>9+;QJVXV?Zl^jZ(n$!_WuqPE1H8kPTxWLj-%||33 zaZ6DV@<~rsNn;B{!Gh>pmx-n9Py1pv|~&fpSFbLieQ@H^o`Nu@g21B ztqpZl{OO8$XV$)*13isN1#?eGlO*XDw5pAoNQF{9l_=mNS!6Phyjw~9a($HDKZ!&p zk&{9R6bCgVlUxtW86K+zb!bSy(x1dsw*ox8kIII%ub)&6B^qrF^}9C2jPaaSYcGa| zHD4x(ah1};k8vBd!kR#~xm{QOm-mO8#fw_*8=a~UM02pIA!;=qIQdXwnnp9!+p^v* z)vct_#G+@25DC-(r8`uXsjhLS^XX>>K$y!JTUUkkd3-2}Wc28bNKlLead1m0y@|Q@ z8kl&DKvV=!8ZT*}G(S3Gxg2Xu^e(rT>0&AYVk0_>6#}NU&@dN24MQ_zP@bIjX8WIH zc8N&>%E%=JA&#D(ClB0Ql9r59JcW(zq_wUO1{+(Xdxf3Gr3M!UwHY7j ze2E9jgql~P?b0im;kykWMQDnUK%lNg386d>k<&_My=*Jc{k@gzj?~}yI!eh7(B7MC zZSOqhHkO_RnWo#H#b^#jh||O>YlL{Y(^M}oSri~KuNtJO7hG~it@>jlIjsT5m&=Yl zI*X%`(G)y%4PNTvr^JMV1Co-(iIzW>guY(q*J@iXUBnIOsU+YR-kFA$K*a-LB>Ww zN{z#s*?FlprtN}QDU~QD#N{&#T8^t9ko~CY>7JtP4Di$W#0F%!=JiR)1PPhUDCm1y~C(w>RXRi+~tWV?D$jJKBA{M@ut8r}X)KJrJi~}N6 zEHukc9Xy$QT6oNLEXm_D)B0qo07((@pwy#*uB955zi9ONRP|tc1!+)e*jyK z(d*rKxw`3b{jb#X!@GLNaU>FC@$|I`S5GcGC>}*hmOe<~$v`F2l@f_sy;H*BWl`-j zYmJL3UkK!bfkEZv{?E^?>+u{GUi?!u1da!fAMlQxc8=-7;Ba|A;P|RN=h0jG7o*)9 z10yRG!+B8}T3M9pt)h;StvrnoWl7+D zH%Q>A2hWelP`d(ek$ZDSTGXqJc+P%q1 zMkbDxS~d$qn_(RVc;K{ioeTxM*^_S*&u)d_sWl>{1$b0ug1ktjIGXh(?HtHADbm(- zSZ5h32@1!FDh)}^Nm|f(3Up3NnRjH0yeD4du z%21mE+#7N1FxR#&WrF2RO#-m~dEtRymMS_O6}o`hTv;m6S5n~d!q?B&6rnis=-cdF zvqwQP?bvdV=4PtN#SJZ8C`L&kXG!8mWoA-9*Ki3IUODzja~vrrg9PE@Ek!<}watH@ znf&^0X^V!K#8ra#REm#L`*?7rX`Z$U>CMlwt9Aw_Xl+f)fy?AJJ}Mo#x$wB`l_f?` z1D}E^B+1a_Xd{`bX)2PYQp_2DNd*0U&Q^Bs2HjwjM9QWWBBFtT6{xQfUa|J-@*CUj z#nR%&Ke^c+phCOIM!P9jMPhPmRsDjMO zztpj?=I82cKR)VQ6ONj%Z3h$9SRN^njBgyE8x}@a8h`|XK_cKEYG4ZfB~%~h(}{tO zJ!jGf&|3chTMK)0!A~K_tJL%ae3isLU#9moaZpv{=f~tWj&d4GDrqX}S+HBj0hN+e zr-dF@N_u)%l1(DwHE+fJlkfKI`!3@gaWlD4LV;3rvXMXqe7w3>VBv1zV&O(|cnX3# zsd}yDwJIv+jBY#$tw|jvrT!&Al`A5-*AvqjmUNj&{UvYi3b~rzCwSzNj3{W>Amn~3 zP>l3CjbxM|RI1a6$fwBks5!lzQP6v;RwQ|HpRjw%@>3KP`O0rKcm{{TikzLYh&jq}voCm}4<`C0JUyzN%i z+8e_gkfx@Vc&cKK7lx*Kc6dSY$cm4q#DGP_aq{mpv`-}V5V4`Awv8NMhdiEQjd$T>$bbIG0`(~$bQsI{;mDr~p1zO2Uf<~&75xFWO zY#vIso}M!xNSj2KE37t!Wl-{;GD)(T=Dc67RIh>*8qnwU2+~@d0LPIds-4elH>N1! zVF_vnKW-{GfuHj5=nI#2?~DvEn9f@R9X$kfDD=2Q#;iEzK_x9@6*SaQG<0&KdS;FM zY!3`U_7s*~`qd>98<^Az*Gnj;sUT8=?Waa59hBeM2;86P0aN>Gepu)~$!_YLrBs#K zT$I^Lx`VEwry}N}Q!HU%N07)_T4aoAR{DUy>w7FW^Ge#@?VONvs}-g`!%iRJr%Hvf zLH&qAJcU1>`m5FoU7@)MolTGk70nHJdVQy+=DLS#A6GT0bXVc)oM*A=c58q?;QY^7hs_ zZuV`;>dxphMo=QeUbUwani`7K)8;yFf96YF_isxG6%n3AcXHGsglVR0_U5Cbv+$4O zp3C@+xwjtH=v|Yxd)vC?!qexwf998L#fsUxA7aH^vOylz>s_0ks~ew0StK;_v`ea1 zUo5f^Kn~yTdzSNccO18EX}2O&sa6J_VNtY(HR4I93N1QwZQFK>ODH6>PpsY8`~Zat ze~I3NC>6j!S%(rjJ5YC&R5`qcbA9(dSG+4Wr8Liz*gZpoOqSoG$Vx$qpCwJVmbWum zBnk^8dXZ-O@;#8pwn@53S7h2Ru7qNR&%uvCs;izLRM2OmJKNhmstA93URl|eIVFi= zJw-_%ADGCkDblO2zEX7OVb$e7hVC3bKQB*M>r=L~c)I<)xbTt`R5VrijMNzV*xgHV zJZF!gBibw7mvpjlZ?@TBIUUiFPmnaDR<+~Tl1p2dl{r!$!`Uf%7^@ zKD{Z5JGn?%V`B&Og=zMJDZ|gAgSfVrL*?hl%Sp2&+liNB_mub=Wv79ZYC|5l!aA%- zI0u^!KAzpO_dncCoV;6aIBqf2;e1_5PeH3u0C513=hf~xPnWk4uYIvv$UbqXKk2Hp zC-(FaFUFsXGDhM}yATeN2$sDkb7>}dq-8Rj$5Liu#!XkhKhxUDJ?r;Ib(RZ`YnD`H zD0M{}R2tL@jy3#7r_-lwxkqK&<$`^)Y)GY!PZ3Hx4*CJ8(D9(9I+&di)ihY=#$zio zRCE)_CGiTwA}g0y5<=tDuD&((195A6H`_h__gikYiq6}aV)|6z3=uU4mj$gc#QEo< z{m&BJ-bmPQlG?d zG!n@p{jDxV(Ozu?NX#xsC)g@paOSz>FD~^U8i&HlDT9m*dK2sE(W%*XDA7V}@nHF< z?Ig8x^EJgl$4JfL(j9y8cdNT!x_Yl{<8}t@+M6qJZVElewtnXmUisg%n;(ysrm~Kz zDe4TD#L9XX2ui;{+)L@SGM%mu+NW zak|_gY2<# zy58EsZyb+%E|gUqSd)Q@3aBS0nDXJ#0L661>B?12pUqRZ+|;|crjW%NM1tZN^c^j# zBx@URP02p-i*w)A=DC@OX4JW$nMK&X46~fjZ&mxXu~;L>I2rf z2cDzqTcPXaPe3Re{AH$#iw9e0_g+&fmIIkmGCGe=bhQx8{DMDSEo$gKvp zqADgDqxCBir~G;LXS4G?_S6#oF7BpE0+pIm&6#YIPzf(mRjoq+m`pxkz;E;kK@jJtRNnmRVP z>%=I_Y7El`q)>V1{GAs%?0qc`ex!2#d5p;{vNJGAeJlHmuSt#n0JZ+G z{{UH6hpIKws+%M_;p%O<3W;{OG__)C$sqzI{1GM8c*Ts|Iu;Rnn#> zjY8@|7-|iun_r82(OM~HsiCGgW|gfeLVi^=8S?7&GJ>qcu*o^jb3>o={@#Xdw_K?a zKXELv%b|lfD9Yfq$kthzh+C!9HynL^rYWgwq-my2G3E#D^`$*&$E~<7BvxP=wNM6W z<;J{xg$75TT=xt(+JYfN46)VuRe;vTW>InpQ*c<2K(Mjnf_>>tRh6SP1LQ~eaqHC@ zRyuUC3sZwYe$YmKMw~pzH0UEZ<)o~9SW>Gjaw>w4;x{rzsiMI^DhNPY>{p8)bdy^w zviNI2c<>x6pE`PqS3PZXhSaGbe>@XF1{irYe+^hMJp}bIe+kP}(-_Z&ZBMFbtf+~n zSQDqOQZ!`gCi;i;_MSZrBNS1nfK3RleF5S)@bcrF^rSR}02B&G0yxtIu|F(&nn~5sK1=lokDz>d0J`@YnhL$%d#DXbGwRluwfw4*s zE6`M#SlR&5v{JE!9fE^pvNI6ZRk%Rofnol=`Hfv z5M2zi&=FC?&*B_=LE~LCr_6Mm$yXKR0$PLT^&67&Gh}zCySFMSxjy%Vwb}rLMUrW)MCDw z6h9%*0`fC$Jdm?8jYO09RMv!f0h8n@`B$MkV)riM>h0OOG4(OmW_HCET3U?e8kRU_ zsK;Y!z>x0!yG{OXuOUM)AH*q_ikfv2ukK${lB2k36;G$FX~u&UR=?nzoLfsebloVVVgVl+)BlFWgenmI6do zb5A33ZVmm>qEZTlzyz8Q0rWJ-5Ipngnss1G1y$}Lg=!9QUpnM@aHV=g^^WSS*Dl(~ zM+3=^2}_Tx*3{9~GL?@Zh{!tXKX*zM%w@{?0@+Q+wD7tB6fOX#54VR5dIS0N>xX7y ztUoi|TK+?iA5p`jf6_lBcPB{YvU^`Lw40NxbCSbNEAzN#~)8$%k4HhGjZYf7Fwr2 z($%6`Dv2r~&TYEpF@&GWL&;f8jpm|4uPI9CVR)+7OV6dQS*Jc4E|`v{9=|`c{wt^S zmexy90x&&jYDGNj#pa>fSxki#xXSITyJ^L4(%ks^pu)Ek_cNt# z122H9j9KX<^2Ou-0Ck`Qdq~o;0z~-FACdg}&XkC^(SlY zNIL_otNTykcWM3PRmHlNzO#J%YTp&IGRQ`2tLtmxeUh0O7^I^MQ3WleEVQAleWJLt zv79p8SV!V%BUX`2(;}XKv)47joEz5V6UI{hRz)@Vh-!I)eDT7yKR$)dq4@c~J}zcx z_cwI*hhFZS%_cIlIZf1bnGBEdS)ikqDJd%V21_6@bl7Sdm>AS03~bp7pucXOCy^W3 ze#!0nT;D}K(`mKVRFy^`uoX~vg=2t8!h=&lI)9mc%Zkrzo*Q^e?iw`!(kLpN3xR^v z$to#Rz>4%W9_iirJg47b^Bd109@~>Gyf)5nYi&p{JA-1~SJGPJTb*i|jOdsR?aqa?EAt^jEC;Ls6+@)@l}Is4k`X>ZJ1gpM=` z6`+SmQ%aFBVW?L$H6V(Uo;Cy1Kg=rzDR7t{lQi^Ln#|>TQegWVYHnz{O!l^J%w&>auQ&SsMEb+RyO+r8jr`sWnO7`-Z(OiNwva*jZ(~>yke$Iq8d+M?4e6;g!^o%5D!n(Fh{rqx?MxRDv}r?L9w3Pe(xkN_Z)#siO?+u*DTTD5@^b zRTU9HQOW+E+yM|000Ymf0q8o6`DzrG9Ut68%ak%L6v-kq6TE1$Dn}}l8?>lSn;W&b zzq*-MQUFB{&-Qh?9OJ29aSPN*MjKSo!yNLUALinj<&F~P=nSn3*nUEverho>WExhZ z?e+Y+*Fm1{=?l0aDUVUKF=JXI=O z^Zsm)@b*b@%iO&=)i%Lu-!(v|JaV)>EsuBIA^}rym+UM~KigO5(khSQUd8z7K4Y`G z(!0F(HcKCc$WfiEU%e~$+$o8wg`>$0y-S%%GEwE44iVa~U4hcd#^p7iEbNLv#(7E=wDr~BMJY`F>*$7;zuLb9}x8_zAn-8UV+IISIIF^Qgv9a^}- z)G|d)7N-Q`tF#k-w{3J%r_1dgzm_@~w+Byk&T>3<=*3~+%Fs|^@)6@PxGJ?=al&S4 z9z2XYaykZDN2RZ)khj@4mV$Hih%;&{ogtV46fzOR%7=&^fccIdqo%bwuNUU8zn70OR&gMu{iTq9x(c0 zEgK5xMIP=Hzj%|qHQja7e&RKUXL zOw*S}vHdKP9uN2t&-&if$0<`rbJZR^3Rl;rT8*Q%_f0sl#?uVC(MfR`I__` z?k|O(8aGjy_XkS#-cjcOOEclAlE*SeQdQu~+J9*12;E=G_u*dVrtxHYHjX8ZQBWqt?p@c5sEDoDGE~s#;FchO zSO7xU+v)DMyO+_1NNjDwA1?|s{K}q`O(oReEABTQl<^v$vb_d5@8wPLy0W#hduu1$ z`yyA09aQ^!v-5RWg=hedCm4+DWobz$st%AfeNVJIt-i;;9}{xrix!fUEU2+D`%HQ& zc=72)mgBrw1zTO_eFBtLI>tP^fj_X0gPqI#uAzw;_Sb!O95ibv10T4ycGKMGRISMS zigm?TEO#cyRr&St zeFM9T`Dk{P0?7Cd;M=uIqVU6-+1adX2LRZ}an;pvfXnz*Hva%^?2b=sEr4aW-k2#P z;*UPLA-H-2!})Y=AGkARq}rEJ2D)URC&20jBlB}ZEBNWD!HQEp6@ zE}_v#KB#iI#8_nf^4IoS{@HFw-=TkQ(E)&UgP*h!kM??8ocp!Q-6fpSv7tCd%{-6f z53fOn;P}1s3vDcu({(08DHLmY7Xi7j8CEKVMdFRCsU?+(1Dg^@`rgqWZux>RRKXO9 z@e;BiCZ0eV8vUm{dRHGf>@G_Qq*FtNLyGyhCI3&`(ODy{O<0Kn8<9k-<=h< zX}6if9mPd9@!h#hwKf`_vY#n6H5~Zui(R+n$Rw2O8=#V+o=@ycz$A6a{Ez##;@@%H ziW{h(T4<29H3L;-DiWf#sA^Pn6XqUmj{4f_&uvKr633ynC{vOuL02b*MF<4f%gBlU z0MIhOGe76}^r!tw-aq|-`;{wg{{RgC0Gx6E0H2@_jz8rdU)q1o*Z#d)JknSk4-+#IC^-?QQQdZ;?$ug&cM3QNtiL{+W4@e(SN4c|h<|`gs+GG0JL}D}p zNU3HZW}JAO*Q4%J2cK$SyE!I%F8U3 zRaq*_O!ChmQzIdizJS)!3myjm0e^V8&OHABeav?f1=O2%s)&^FAaOJ~G|vI{dG*te zX}<5Ax$WhWPjeF8@8niV+z!HURyqm*cmgx>96DjHqjzZzxTMwsMW_;vfG{DfSZa$` z*N^Hg>;P`gh0qS6nt6{(F{Lx*L+Cwvo&NxJqAP1Xl&_X)^6or15J1OB`q~*jtE4jx zGBaL9b|fm5zLG+-ivFPViw0gCc+-caN6#m!ow&J1G-?1r;JhhNNEyv& zYeQZb=_Ox|npo{TP`Kn-+k?!A@v^xD65mUMZ>jd|cLl*ImK6l3`42Bc>BhCMmq>4R z*=6w~W!9#nG@z#p9M->(;lmvQo4>CybNV@j1REVwE+5@*REXq&&gBrzcI}9q!SvSA+EGKO(;ct&OoOTo{hY8HMH3Zx;b0z z;#rhOPoS-%UKUYr)a<`ff53YmIE{&RUfm!AkO|{X8S>#zPNEndNeK++Sf>isqs)SQ zhZDnwDbSaVRi1?q$>jTHvqtPei%TmMO(j&?`me$Mx3{!P-8do&)$^E}=I&{Cp`l+jcTAF!%f{mUe)8&qrIJ(xRx*$no zo*OY)8Ln-tnIktS@!tG#YjOQF$4DfCR;T0u^BgjMK=9969mJ})X{AW0rA~WjXngah z%RMBjw``ca#Z@sS<9VYtn&RqRHKmnr8nFY_!5V)T_SHxT%AogG<>m*N$j`4@EOJ^( zrkW5cS&#Zt59t8DJ3bBMp!Pku`T+rj?^34xHp6$oCog^1|3eOYT8C6G&pIOsjG_CG5o0G}6 zwg5m|T8bJ}RAAHPk~8}}x_JvBD(g^6(A0{N!`B1SpKWQ-VZ5mhPi)fHF!4=KJJ3rZ zw3jNrSe>p=l^PGH^po`GlKeV>(ux?@6f_!mQ#JcWJo?dg6L-m_8lzPzE1a5f8KDM( zzMU4xC}X6{MNu3n46j#93g}Y{J(v*Doe-ytDJ*0Bll8yW*3yKKL}6lbRFhvi4hQ1n zK}yqyR+c!`9o9q)+$bn?;DEIt07xc)kO}qZ#57ek5-ln$BsCH*mVYBSY2$~;WC*4< zRu=kO{juiqMf#y8Q{aZkrfcXthoQ&W(+hDrL{dRQ6cAXGfJOar;EzA4&{X_N&<6z}Sp z)dMJ%?oNv~tu{9!`hj8Y0hM)9RnS(Ip{Nx&$R2d=&H*%`JxabIYoN0*iHK@4)t4H3 zsZToTIBFWu0oNLmThpmEyGi1eL$D1P0!wT3HoIAr*ag2Ax3=T(g>?c*IRwzq{DpFS zvONc0WDXFmOS2j>f<;9sOLu}D68HZ0Fpm5<@S2?9;Sk>j0 z$*)>aT|*5-H=myh&{u_ib^N-rJ-Y{3_YYrI)>7p5?%?Xp{{RhLR8-XM3P_n0qcg=# zk`*y5xV_B`s^WMZBa#^j2T`@#lTAwKI!K_%{{UC*>W;FwEXB2Iub|`RGm3sh^h5?v zbo@@=nd}zh#2x3-HKqZBqmm2R$vU+3cUcjX7)GDlDOsh0 zkho*rQpZW4^c5fK`ElvZB2rnM6s|FXXhtiam(TL*Ph{uw1sB(B8Pe3dG02k9?oUEQD zd_ZWprB=RtYCx`VPeLD2Q)4&YHz%|!u_mW3#MEKqsDcnG1lk#-qnbe)$iz5wEJFDM z0B?Jzlsu7!M5_azPqMY(DS@6HK5CL_EY|#kYfnxb ze%kePUl#jHv*Z;ddv__aaC_%fF9J zB~iO~4&0~gN{lu(f^?m*xUIHT_GDAnDtM|YS{dybJ~dV%MblYKS4=D;IL;0SfSN-hFk8I9m0JizQ8)-y6qve*>DW zt1>a1h8l~isMfBgS8oDTzCsFc%vE(W612^`G)5sbF{x^uC|ahxM~GWZM;<@m=(ToB zQ!?CKTu&^@nn5fOmE%Y7!t39$T#YqDypBm?Sl`_Zypn1+7jnqtgH|=+!}fH#-pbO|bX(d)i=GNR z`0=mX_UEIN29N;y00-cGIQjqwwIEOdUX=`EtaHH?OcPU1y5XpbNG458y5f}zNV<@# zuBBow2qW?D!~zH-9eaj)1vdv;(Btv7?G{r#E*e^SBc2g0Rc&70G6|6G93(W42i#U; z#G#5!6-g+Xg2+LRLYem1w8+3SDdGt@^&*~Q{wt?MjZssP!-qg_LZiI;ewk`ATQfWI zW3CoDf3@5lWuKwJ_ZBw|AU-*2Hq^N-uZZ5%ixZ=Gann`;SiYju z1W}5}qvgOb`D$NYJa4Ha^9c0x!T$g^Lf*#tAJsdLZ>?k3XEs;x`p@ANSWd>Ftif(< zYeY;?&y}RfR8`h3G`ehOl1I>g&XhjXLAqPCEFLLg3QEz%O+9$Aq4mu^L#h~BxT6o3 zL(CNr*V08Q^c(iwMoNolRW>^t{8pw(;7UpuvI~!%uOMFZlyONa{kuI|00C;v@LmiT*sKm{Zrc+g2LakD$?DE8>GV&9I zG9L(d-QUCjA;+#LLwS%5E5pzsZ3L62AIx;M*`1||%+=)ZSxg0X(cKg|FFtn#l$`_; z$>@fcKey(tXi}w+MN>yCq}4+aWimXnDJ3LIHy$`Y(o_320yPhq&s$-r ziZ-SFoj-5QzqV`AnyWFkcIIwqPKaMQkAk2FS4kp*8p-MEW22lp>Wq~jFyhwtrt~U0 zpklqCVDt~y@9nj>veRO+2Lp}G8gb>u?#cl|Bd3{zMGSe0Sd+yR;YOD>PA_Bc#Qr1G zhk$I;<^1|?t=u~=H7pp~taevp?dUPw9aFyl0EtuPFq^yhj5Nc`9dvT#w$v@A>?1h* zbzWP|45Sdnr#gPN_MNR5f#Jzd@_x>qR|cVqig|he06+M?mUJ1e!Za>vCaA46AT?jx zOOM=fN8nq?8m!kX_5rDTM(%atF@P-Cxh_9#lkNNuZKuHZ7@#*H9bzrhu zbmnPs?;!{&GcWuliC{p#-Grr*H+%=FtucnQ%OvR8;8 z*Y;=jj+8&a@=p>-ie`eurA;sSL>hQ0qFQ!niUlK(Pqm7X_h}UbQ;+$&W5z0JfPBIK z0B5fpWpY~KTHt7m#&4^ZTi)mWhqR;O00U0EB_xBSeYNY4*vMEf+bQ}M{X*muap|^` z{={F}(E!qOsFC({Q8@#JD1P3eOGOJ3veUk|Ij3r z6}Wx9O7s{?Wk`@OnxXCIoui3V86QiP3I*?QKEGdaKQi-v=ge2)>h|EUCZTJ9Jcf_} zr>V)VXlvJJ`48KkTK4|{XOC{!Y(zi-skq4_d6r{BYxDiR23c&&)LqHY(lO8mixq3A z3#eVxp*I{09!>p(n3vWOK_euZ0iP=VUY}=LHK+g_@yHb?fCnVf znBmupg6w0ZO?YS4n5V9Aagj=ArpAq4KNF}38Nq9>=Tf$!Eu&Cdn|@CN^X`J68n(XC zTDK8g06-w;I=yN00k=rqG)ROpH7I>ua^UDC zePsUtjnA_fUD~A!D*@bnNfpNf^QW25mqBg9$hAyK*wr{DfDbBUf_+G)MS6?U9j%=B z+uz$Cv@kV>mlIKwr@?N@d0c(1b{8cw(#&h4;UpB^K_;{M8GfL9m;I;aiFSScZDy5) zrPWcYKmeWw-xqU#JT&HlfU?=uia0}mJxLBx^ejz8hyPPuqe zXe22pb&+0;o&u(o$TZ+U!L2GOUa{?eEmYrYQ&SOYsGNsJw~kFqaQ6h8+QQs$ZU;9; z0apZ|*kpeUI`;9!IFB$qzR}Zc&*8}`tz_X`gOSAfil337p{9Cg@t;L3kKhUz ztjI*m>hb!>a>_^}f-QRl8K)53eF5?S z9CYmyq%g@$jAWidq&j|V4dGFwC7M1gPOVM;7Wa1u=**&qnH0u6!Qwir5#B<8ir zlp<tmjwk$_c=f2$OA5#s5Oj@4fEY9?DtxL)G(Vq8%#{Rn)j8Z| zkh4V8)sP3Bg9MezBPbxSau(e4`2PS|m0-vS1U94OD?!KdK1ay)QWfGLvDB<8rHRE( zMJYl^rg(h%3naxf)Ekc+@w<4{YNJU!U>T|Ws`8TR#yOYBO1K1Y59Iq%8KZ?_DoqA_ zj}8EOQ_JPn!3~84K;k=33~M2{8j7x4vF^C~NO)XSioC5wla zz=B7l>F1AkM|GM9Ag+EIRB_-)KeC@^&#m}tBB`q~5n5y#R)CNcn%B~x;Ch~iToquJ z7$zpt%plg13zr%aHjHV$m1xrc0MUM?_x7b2c%|b~K|W)L&nJL5#cAc!0v3!kYJ@po zXr(M3V_2a-BClRV!1UH9V^>z&5q+^c()8ZH!ORrjuZfonKc#p zb*|lEkj^g~MKABHv9sUDDmtX<5r})EsQ@V&PY3#Y#0AwHdSs514%!fPD+811T7$=l z>UxvF)U1+zq>EYxsLq^#G7T7-WKy8h&CZUj6$>LHt9nj?flidNO6U+U2^-w$=I4WZ z`%5(y43WDQT6|bOpW*W3PCi{avNYZVVFMt+qfm+g+(G;_t#C4Y`jsXmRf6dn$s4II z%0ZGSuEmro2KHOrlj{1|bMJpp>Q8kf0+c>_yv~wI@&issnXgyyz>rw zm@MsQU4MEpQNy^{RUNr4Z`)*O@)N0Kl8Q=)T6tceFEq<5$fW_XRsf1N{mMJ|%@m4M z5>|qv$awZ10y5=JoEDNKD3DE`DEWJZb#t)`A${`x>XNMF$##!^`sMq`A~k}gNLf(*RWxrRO0lt^^Wi`b zn5XzXcn+*p8Z>Yye26szH5fJj01r!Dk3ea%c-+p=tE`%W9E@>CjhdcM;`mzKOXk95 zanB_B11V(^z}^XCxlVN-YMP7z4cSf}VxGTmrZg|uKQ0|zpYp@lJ5#JD?ryW&`&aGjc5X{;=66o; zsHd!s9KP<}QD)(*#qD`(5uU4UU~xNc2x6GX(ifG@m1Xq^uQo~ct1AnOxk0&~Q3x}o z7L=*sQcnTGpKnF>+k#(DI>e{Lj)PJ2Cch3o8hrTmZJx^dUDv()uXXQ!>)m_by7yl9 z?!DKC`+xC2pMLAzd*8bEP-3GLj0F&i3U-m?mXIcxb;`x%mY+q1JdYz6Z~;jil0ar> zG|{Bhe`lBbALZ-Dxaq$yw=i3Y6?0g68s>}@My#c$o>_-5ix?M zHjU{rbT!x<IzLewk^*;&N7){+4 zK9_LijXd=96?ojv7bA|LI4#cwS%kG}$>C?m=3;0=pc147i>`thS~k_x2+XZUP)0JW z3F3dGIM>#v&Yfx1xPy=9_I!^(e|&aU<>;OJ*1eCqa~KRyL{Z?g7_P(a^}ywK7E=@F znmMpAZ|pALi6J{Gu0=|J;*hyqbz}X+>l6|@#8JCReQR@Jd2c#?>Wn{(`U|=Pz?B~q zbi-4*O&EhhdR1(Y%M8&_o2+RSpd-$e{9bhP;n4Ar*nLmj{aX8OhwLgg)qO@ca^kYx zahR{$_1GNMEnv;<-S5}A{A`r9n|CuoTm@we^sV4#FAMphl0fFF@Lfar8W#bowE)*4 z)bR(*5O8x^^pp(^rSMOmr`umI@P96Y&7DcOH}*4iY)$c1pTq8&3M|&w+ue^R(h}1nm86WEM>0#45m#}iX2CD!XJujIBzF8niVOuOx~BykMl6BNZGNVvH;M2=XA%l^~WF zg=&w0{{XA~U*t2g-;u25TT&^OvKivCCBr3HO z(#tKZq;N@aYaK905Iqmi?c>mE z{*t$6UQvy)yfPb~ZqmvtXQZDwkIYj^PbM~4^T;F8o`0W70-#dyg01`~Do4oq ze1Wgq(o1w~O_3cwK0&#%_=&5cVMmXor;l?_xRwYSN#$Aqi#mwmv%AKt5VxzA1KSfp z0a(w9K=PoiY1N~7K{Y|7dGM#_(Qw6X%nRjPAF+33RSs4YP%7f8que_WA&-`v89Wu# zP|GZ)s#_fk;V5iLAbTi}aj|JcFxM2U47sw`gQrIIx|nMGwSE;}l1Z_;Hhf2IAaUCHCAOUi-9v_Ih$ z{(W!gHK1p*#WrT+;IK9DzQH#^8Oem%~VN9VM4N}1f!p=j zyo*#rO-BJ|rN=-jvQ;xw6@m&3dU>HqD=KOw5ynfRsXCdJL15_}hP|};^`%FqXb;b- z-~Rw+R)hZW%C2&rh_0*DPNczXeVEQ0bp*gqQw+h8IhM&z)%SOzV=<^6>viu&;~U)H8m##g$@n~pz`t1X&h{U0Tm<> zKxvE*GfDzKkm-U-hW`L)b!BBKWelc3!;6ya31%GdFZeury-^H({{W~@04PWxW|TGH zGf;SO>Ah7ls;}v3rAnR$j}P0PHN`2^Q93%=Y+u3^8p@0~U~lLIi=U_#`h9J0dm-Zt zlE%dabMX&Tnu?#~E61-16|^#ZYCRU9aIFOeJk3sNp1aj&4Pr~_9JR`Tw|0>SjHv+q zKBJGP9?}&GME(YK5GZv}P*5?e0g_E#C;n`7e*Hs1L?{9dsL3m$*PTC#X`i2iXB?21#oJ#_30(bMo`4YwFC|$ zjZXk7Mkpw9b6Rv2?yLnaN|vu5RwFAS=~JL<)W}Me;43g|5Nv*f+W6$~v`&&}a6zSO zLIwp-3XTSuKAizMmu0lSw3^1?0~-P|4MFna4NY_DT33yFw;$!T+!617vB>n^=+4wt z?w+lhcIJt zmsLR)bqrNj`hyYm01v0r+=De_QE*qWt5J-8bp+GPs4CgxiM%%^zF%!Yp~jP6&(Ehi z>V>V!B#<2|IA;qcxlXhTsayt9QOIx08-Ib}I)u=|oyX3Us6XWY085Up3d%taXbBCI zlfYz^r`c0pvejbXT0v5%u~ZSN1OntbY69u0OF%X7cmn?bTVL9j;NBq`!LJeiA1)cE z4yt7RRWu<@cvl9vG$+cmpaO%5r%8GvAgI$UYZD2i@dA?AG?(<-SX(B5EI7B~{@Zp1 zUHs3*QaF5ta(GaltOyfCvYiD+F+ox@!;O6S^aXcwO+%Nb$sp57Q3W+r%A!GdVvI#2 zjapGv9BLY_f5YqT2Zp#5p$CRZspDVvG1HMs3r*n~A=6$0pqz1_9<<}~Jz?rx)i?34 zEi|TOkypuiK=JFkFenH3gU#+m{-@pM0LB5L(>XZCa1MO9;=DTCrBEqkW&w_P3SyKr zsXTpgzyrj{iasYva~?P8A)E&twygZ zcGP*)kxFr)>Gx}8t?RLKJ zqe$eAlD52N=-0*;FquU2RYj$c{lAL0&2xT87UtgZN1m)db#qSV9C3uVnS_c#!0`Yk znW4_1S`(h9E?T==?V8Ptztn=!k*8HcoazJsrz_kT`ct5emYGC|;2SD4Xp%CB18QGc z9!3ij4sN`2Z>aVSk=!fAN`Z>iY5PqpUtcfFqus4&+lB>3MMzrH3cu+|CA+9;OaeM3nbwxRs;?zd z=2_~hUZv&rBMBLpD(^2_8Rte{$qZ5HIyQ;-#u6!pzTPaa*P^46wKkr84ND!R)a zlEgP8M3#3iZ57m1A+SYzu}~;0kPp~t(nY+9JXmJLNNPK3GfGyTXNQ;^O?o?>RgK+P zbbjXR=(6A38r-cuA3wRVsz16k+p?h}G_^5Rx`fAM>Zu$hZ4E-N+^N)_wXu8me&+;c zMX{4ZlfW^pIGU|aJ$#4DrVY)51Rq$Y9MdENpSGjAfRR8?pGQ)wCpT}VGN&PpG@FAH z;x)OPY-UZZlEP|&5&UAlF*{);qAmn2Df(~0w;r3Pv9=vM1&4@yHdJ_@g~AfnB#=f-809=5A$t@}}tqyxoHnVdm1 z*h&{5`5IY)HzBm@C)&#%Ti^F*gTb(9lOt4z!$Ifg+;QbXPp6knzT;yAdKTwg?T`>v zj%YmS1%7z*Bday&PR_~H{H&_$ZL=LNA7{~Zj^UFxf=FYYs=IMVkHY6yKbOgsNvFyO zsrz+6+CswNSCYm}wdFf4muPE^8t-+WX-z@+s6bO%FPEYqSFr`H`Btd$0Hp|~E9dK9EOlXi!CeSC=o4}@ zkOi#AO`7+(7A3tl=HPvO`>%E1zjf}t@7;T^d-q=J-u>6Q_rG=Sz3<(7q`vCe_-*4! zOHGy)@J)`ZT!t$th{@MsvlyI$BgY+G21gw|Jw$93$atK*6Aw(Wy83;!G!f3BWCsSI zfmpeuRwCL1diU2j$H$#xFmc%Q?F&Lu{BWz|l^uu1WCHF4Katd4zO zVObDRc#Qk;Sey+Vjr_mO{tvgS1~thiqBFmHZ{<(NIt0iY42MjakToL^sNTx^}Iuds$%pR@XG~%bH{zmoA-Jkf5DFPIL+Az|tN{l=cPexVIw8)aH1Fy$?+NFtv8?Ru zHWvvt);WLgZDkH>5gjVi2@LGSEwzvzw!emJ0edWws;UzDSU6I@7LqHgTiuk%TJA-+1cpsa0|Dg3oK)nM$fZH3 z&rd89z*!@Ryi}uAY7g0rAK@cEmqFKS{MN|!msjMlUkUp^;XitIUfIY&hVK3QAIR;p z+Xtg5Yv}7%hjHSms^gNMHMny%80vvVOFl&gHdw<*)k>t57Z?4D6|LpE-4)fT$yL#j ztpNjFNTwKp$2>aSlrYCPjXO%98UO&*Tzpg@g~;FyMMoaB-0V)$`J30<>tb}TYvq1D z?(dBCReS1#vwJgSe2CfIzuCKwC%S0_wcCSr$hqom)wVXBPl4JDJuM8B;#ppzd760P z@RDhc-*28MZv>YwHCaKZ?=(5dILW~C#X2(x;z^n)!9!9D(^dhkDnjw#Kqmu-!e(`M z$bQ@TpRlppTcAEfe0S=){3hk6%VDTs?=06_c7JDOpA`<=u5I(Q@X=$kv^XprMzX%2 z3sq3?X5|#Zq|z!m_J;A6+TnKluwg=K)J9W)6-SCGP(U5P*YJ_UtH1;?O>na#pM_PZ z`m>rL29&ApZ729^o~oB~Z@-ma68==3)3ZDCynDL^Q<2q`+Zle_-94|?`{IXh<*F&< z{^|CH2Pa#xcW&LL$W2`h8cih~eipu(YC7sEA(bYm5WF_qg^~jlNh*(yJW`ayiU#zk zYX1NbCWoTd204kTWIj#jU(A92PPQ5Aua*A*IdG8d-t*{gknJy$eFfQh%{__KSZ%eq zDfi!4RhVgNve~V_wK8zk)6~#bnJOfw$zpO8)br01M^jBb#Y-1i#kfZEPi-kOf^|g0 z^xuY8$R9>ZRONx`$qlnb;mzABU{fr9)4+kkpRk@CTUKvx;l4?2jh(tSeh)RYx4P6p zl8#N{Grd39J4&XCGgSs3JxQCvBoz_XRl)-W~>Y-R}7}V@&JO{_EtTDmpp#CX^-Zb0O zILj=Em05a*qTLjeYSQha_u5W(a28} zI&1SIg?}n^@VRm*@v92?@ufX@j+dJcVtjzY)wMqJ?VY{4Xd#t_Hd`IFlM$De0jEOc zC?$IO8LC_A%@mQT{)3CEhQ?@x4&dxTY%Yw}w9Tt7B^D1&|{JL{RM|4aes7a z80jKHBUJ=c)vH|8@HGGh&kB>o4!uDWwx!@`O#t|YKwJVnYnqG>v3Wut(h3D&KnfM5 zQdkQSsE-*JHa52d+fpA8hgm;bhJz$6KnI5kaRbVg>G)V9FNR7ct~myku4~8UE1t7K zHlkKo$Rv;nKBbYEvqvf_hX4&gUc$hCTl=F#!CBH%ijRv5Ys3*zHlGz8Fj zf(fVLprI7`_2*bruCg0}6eLiRa6!pGDo}ZJ#gm}>m`sR@&kG4i@rJt)!I&cjFKr}) zeh=4^?Ly4@m&QskQ2rMHYd*mvl$Kdi)Nw&8v(CS4@W=+y4>SyCnikhNSJnB%Q{{ZVvKF#wG*m<5iYrBA! zw`->v0qIrw53}Zcy2F3H2e+r1IX>#{#@(B6v@IY5B%=ISBA}6xP87h&9c%-crrUJX z^ckvbi&s<06mo~AaVe|E)F+lYk!EwDmP^@g1?~0sniOd@BQ^*mQzP;|e=nC@qjv2FHzDLY}D}h1B6!gLAo@}E1)A+<%lz6-t#+q79 zT1W(vCca!k04EYDBUZ$VS{m3($2xBRt~LnLoLAaE~2V@ipNrssE|pq_Tkm2 zGAO7S$tpaD8sL3{Jt`>^2@AqP1H=jgz={*Y8r7`EZTx@;B&QX0)0-A? z8kpycSvFtQDARAK{{Um{wnk=TBCn_Ir|dZY00lidZTlx#0d4@v9F=Uf5A$5)SCKn>hcA9hwh=J zXfOpl^=5~LDk@I_N_1HJI|&T=O4exEqmim3h*}Y<8R5IGpcznr$4e4EfLq&(8fZ;L zwGe6rYn~o{ylM7u>9o?Q)NN6jJt|43061wPhl%sXYtU7+eK-jKkPlgMWlUf%~t}W zfyOE_O+RngJo=YDjb%EFjI03~nM%+TkSY9F$QARiN~ow}h6uxe7yzowu8*nS=2tAN z6_nf$S0|6px(TK%>V>q@pq>@}5&;H-g-4&ut<7qJ6G_oW!+=4d^8kufX+i)wJXWA| zi`^L7ndvHPCsQ3cj&Br3L{@oN#9X8Vv5GY}7a(1h>a<04A8FGfH`% zQ|Hk|xvh;HNYcspzxrXrX}2s4R+6km+DqSRp=u0Y96PZ~6S& z*t*Txv*lV>K10y(@-@v*4_<TQO{Os z_cls~WJU4Q!+N}BK@8|)l2t=gfbn1n9F9H8ys>K??#~3yq^FAhcr;)QN6wh}j)OeI z1egq}PGMS8a0j>pdr#BSW#u!zk9_D0a$^3v0WP$zsY zPJyEF1(GLa7?%A%OYnIFNKwMb(U{l-8n8|UX-xW>aPrN5VOxm{6RsM&k1o%*jKhFyhHW`;OqkICW6V&&mVFPfE&8tVO4W5MHx;nvI( zQH3-MIWDY^`vk(@@1O0V)9GbL`J{iA9Z_xUCo| z^#!z+sXkp*Bm_!XyLD63JP5`OKWXymSG)fJoZfHwe|)Fyew(h@6upJk80@tUM?0#MH%)$x;Ypd7MW)6Fj5dKl9$}D{r=T*6@c& zY~og-rCF-@)lLD0NUzLrJq~$p$|l=hX(Z5IRy+$D3{-(!8e@PSeO`~nPv*Pud*$p@ zv>kKY*bD~vlT0;TaoANaz8q7{Q9xaYk>p;4mxA6d-q=J-u>6Q_rG=Sz3<(7 zuY31i>)!p>y7#|z?y<SyH%{BheU48N;t}2{XM@Jp{fQ-0>hyC*Du#|)tt(2> zgU+KL%db34nbLI*t1q*AYvLwWmvDC1K=xjL<9BOj>e`<>vUfL3N!VL+cs?iY9)~Gg ziHjMza5ebpBaoU|Ds{@ROhZK)mOja+lEzmh0gCFR2GAO()}v59r%=aA(mBv+cGQ&q zDpI_CK3qRGl2g9AS0;r&ri)3jS={+q>6xQ zMNVi46(EmV{?4vfq5gFL04<)vhO&=lZr-`ew&TiT>BcgfWA+D&EtHyRDXC|RVeh@6 zO_ah(5rsVS(Z^McL7|?py$9OcTdl6#vL(94&yp2Q2|lXW1bNVr^XVLx_aqlJBnnoe z1N^_?=-FcWE8#Brj=oG+K>T*h)NVl}xi_QgZG%si%Oz7q_cCN9iw7P+RFs(utkNvx z19bpJ<6(q@w4Gg9qPeNXzo)#=b1ynmF(^3C2=b=CWe;m=N1 zRODe0WLlD&H@A*X2x>K~IXE!6Tx>ZNhN4CYC0POnWflxUs#@7cphssIRW(`;A7*j+ zbyIh6*)B_czv1g1&i-7V%e$#6A1l|N4Z4$K)NT2pjy#?lt}?S^ziE)G(|D+BtMc&& z{W3%57q$ML_UQ|jW{46EcoUyrnf<+0T2O=aH0s6==S=is7vopO?DkfVdDe7SQRR0T zG}Uxlt0mUBXm>hG1YpzD$CsF^r#2N40_n8`nApZzqdUPOcymY6(grq z+uLS3m8uvT1gVJWynq7Qh5 zN}B+|swS2>6@NCBvC{rFXh6zar)s6!v~^*TBzC6ymcT2|z*iZEE(_H7|qZGZQV zZ%1s!fnqd%b^ib-?dr(N^jz2dUR^o;v^vsFCsb@%50XnMDo~v|^qZ?6sP?H~iAXA$ z{Q7%J)EaQ>Keu|fNsY?eg>ev%EnvSr|sBZ~Rbqw^!n_I2f|=T&__)$7p<{{Tiid;V0qr~d#& z?I-^LQhP`GfA7`*0C_zs?*9ONpZC7M|I?>`YSh?c%1mAyO>VIX+7x0#2VOcGB^c1r37S5=F(h=aPNs#X}^DLYC8!PzsD@xg^x&sl_OIQnJKI zXJ+w6PpGK!8S>3Nc%Hck3&sdMdW!*NkTaI`IOKgvUVU8sMZKqzRqSMN%#B(CFi6QK zNX2PVJcTKqub@X3mXW)>{#Es%$glV_);S<{VyZOB4T|Y-RUJqNme5;}P1@w@D8EV{ru5;Ks_rnneXMQICrtkISn^_#fQ+Pq6yduderZ zly9!FrWmP2&eqFq;M#FH8ckYnENDDZ6Kj>`_xGP(-E&kt&&xK_#UMBEs96+Xf+&;w9I0!?w8(xV+27^*Y0xmj@7+=MAZ z1g!M_MM$S=W*%6Omq5-Cuu@L|SXcl(jVEcPjoLr#=xgRduc`iCXOB?g2m=}#5TvN3 z4nK;bqz^XYF+tPx_-u?4#a7d-$i*IGXY`=kPKv~9-(W4#qI4ntxFvQnp5YT zR=>`J(>`4|N}$mxRu4kd4NBIa{glBx1~{B`mnBmyl#<6hZA{FvJWmliV|81sPC~4O zgRY~;_?!FDA{r8;upkjY3C%q5PqVA|Vo;`?)vv0IR))EzIFHMZQ0k$FckEo{45%e> zNb>2>tlx1?lBqE-I>Wg70!bX&!`o!COsuR_5Od@~^7236r&O7eRbJL*!1b@C0rK=9 zo*X)<2=WcLH|(K{7ioZjONf9G&u0K?1|qtF1nOhWt@R2)Zw5qFT}nY9XH|b@e96rz z$EpGtNYb-Xf|c!|T$7p~^t2?3*Q-m}b>hEZ)75=U9vYRIlI)Sm5syracuQy=pbLeT%U)eMb z_mEE=I;?+hBq&t7td5gU9FfZBkvjOp5ENKgb88n?KZ2&Eg>orTPa#auaU6QI4$P>r z5HXS}-b4^u;{FAuDjChCkB&+&Xoyg1|1E zkZJtAe7c~_X{p!%crZDssUXmCs1)+@=|#IFpA(tu?<*8)tOilMCPt7+6xl}+PJ_~2 z!GxC8$sk|+F9R#w%po8ZKuv4=F@szhgX%aAs8_*4N}lSR)}=?1(*qwW@WCAjTlZw) z`yXj;ot2jb@%!s-MNvnRiJDKe%y`iwuUJqxl;d*r)U&@Kh>-pdvW@=$Xp5M(Eze`S zjX|0+6~Bf|v~Bq~ACWyN+V@FzP1kPR<5bfNh6;GFY%l{gC2RK3R=rT>UkLb`+=e?L zOZJ%zRb^HmD^93yNnMYsl9IBS%+339tkJOg*bm3&-VD!b_V+VdTtpV)00BY%zBvqS zs)CJB7;vu<#+Bn!PO|11t#0Fj_Q+DwR9X>GPO2Ij&}3i`c=XD&i40;Ur*9ZSu4Dtm z$pSe?hd>5F6(kxO;EyU- z71Vkl+=((r8wW=WPt1={04E$MJcper(Ny1IG8sAw7?L+REUG{oOL+=SBy^#Np&ilB zKT8GvpHE_)zG)WTc}O7O96Q$o}{N1aa!WM>rUG45A~H$Cr0IER3j4INlyBupY6RVT31RRu+9j;wFvYzHmY zJ;RQY!NYAD;~WY|@>Arp)M77LGeN+({GDOwwsYE`^wC^y*Wr z{yo10N5t{pOGp@S@(0U5;I25+rlpvyXrPW1Pz49i6bI)~k1nVDZotR3ch>69OB1ao z7YDd=^%B}Js+jyPOCkw-D@6W!YX%;zLz`QZ2_Xs$Xmtl*wct%i<4Rz9aQPba$(O`M zO(YUHkHUQFPH0cBu1`jT`E%gu@|do}-8pHNnt|yyvQ=birV5nU)4AiQteT>BV-mp( zR8q4!u?m2b`S!1SlqCCdHY1~x!~vyFK;wb?I`aIU$?e5y_P4@*b%OrcF5sKVfil%L~j>OMZH8gohaJyI2>=?)PVL+%In=YBRAQpFxTM4MqUZ42tz8SV#0w!x|rj03-qlCy5}?ACUF)=@|yn zgC|sF>)pXTbySTVO#5dgGGOym^2U!0GDx#U6jN(WNM1-_Bo+pC1fOVI)<^>%+J1TR zK9u5V(Tr`}%^a+>&uu{R6>lS7msVNvNBP`*{`g0j!tGq1ey6ay!j>uwYIUb=(q;2F z3S4~wmYwI@xj1C5-J5u@sPjm1HImSIpInsEfD|yHFusCv*E)K}KDua{eu zmS!G2BDDCBQ2njMAGeQNRD4GN0EH5KD)|W5U9;TN<-RKKtemvaLtVZrDKnirm8)qf zltYZ|>Iz7)7|3cFr1CaulM@v*Yo(_W@C+coNp&oPL#d(2H1!_8ZYk(bN#(SXJta+4 zijVakKbKeAh0S5NCLyo+-WI->DTvEsYhg-?ERHiJLoD=l^fh$y zE5$TU@yLuBNe2Gct1AG?z^U^cCLoLvo}7aQ7g88pi-HKclB_uVf-HZ>-odX9wby?A z*Shz=b?&|I-FvTl_g?GX{nxsOS4$0INet$2vq3#MdTFXDCRk@r9LpVLE5lJuBXCub z(bbePkVXB}@y`ybMQc;h1@C`@nEn1LYWnJ@sc;q5)OED=(C_||+1slo^_7(}Rt)A3 zvha}Yj?dehiaDGpshc5{iIG5P8`K!O;?X7@vM4@|p}73b93M{Z9X}M}BD%pVQNWS; zdVep^s)_B-f!*V=GBML`zMG%7dj6%B4D34ey|b0uq6Ld>_9oZJZ9VOeOoT8)j9TR0_}XmFQnIFsP#~ITm1T(QMfEj; zBF8yzY+6Px=Hftyz?6JpFsl2J0*VNSf`qf!mQz!T_Up^S< z5Z!+czBt#^#ZEf1mtoh-MFez}n-e2dh-jm;F-T}v_?{&h2@c4R#sgdH>h|npsa8o2 zKVkc8UcFJ0$3N=f_IgvG=M(VrboGsFnGUP$`8M=5xcMn+W8Ph5wDWk%nIf*MmY$-z zIq}theUy(QSpFL2q7^W-jH@Ps2emNH&^1vM1LOujVW<@H0-m+$wt_j2>PlI^)x?gJ zeU0+l=T}v2biigJ>V4ByS4UYrKW6QIz1(?C*-sm+i6&cd?d6t}ZDZ=OvBL~kLKiIXkSRK8VqoUfIcNGTX-1YI%(NxO1MvqJ>gGz*|qdC{g-(#VV>HcieY zi}hARD4;kQJP8yurG8v0dM-P209ZU_XiY_N`#{gj*Q*_;-sYZNuygpT-LIA1H1!Zr z;kR9O77X-tG!8!N6Cz?Vxm-3vrHz?Q6-`6TWlJWLaA-*itm;<2wBmfYkzSA#YPklZ z{a(E&DRR}b%~elVM>GbLDLp+sL7JS2DIJ=6Y2}7wiey!R)+YE;tSjv-PC%E~ne!^viA-1!i$qCxzQJ-#Cc9w?{FH2(mKr%aLws2KkMSM2I) zs2A6$f&EXe*FaxJl|)59oBlqZ)%cPx!qvy^>s0x9^*#w<1R|C!RIns{K|fGH3t~?n z*X!-<13|~9V`Ne>o~L`?O8WP|b?%xCO-*@ZpeCA?ZXYKkYRxb<{{V|zG6Ir|5`N-9 zVYpohFk(~PX#W5%x{)X-;*vc}Eb}Ufq^NUKQ8-t3Up$g)V-hs1RZXLeF$e(T+fq2C z6pdfz>9?kxAmr1ge;q&ksnGub=QLmS=iMvTvDg39q|Gv{rHX(UFeW)Y1)Z2(t*P{u zQgog{A5rcCasiN0bAr4Yl;KL$k0J8U&#v8}bzMyCP_Ai!IMAOyIH3ljwDLV-4J1rN za!Sjr=~wkD1qFftx|Lo;JaR4czas6C5Md&*I5_#^%O~yi^y8l&j6tF3B+R@@j<(hQ4C;T!YmOoQbP8pygp!yMCms7OU$d1~ThLv@Q zG8R%u07!%uETGwJ1!?_v*5Ssxm7+~8#(hnf9mq< zgGS)1#4dkvopkD5TJC|^=_InB)DPE>>F)0G7}rY#RsysDk28w#2NmLLTIZ*L0aWWs zD;yJ6{eqf)SR?bO6LC15!@9G0O`*3aCCX=a9zu@~h{qxWHBEJNz8ZLfAw0(B?$_X4 ze_v{B5?#hH8})O>Y%3qPKtL4;M*-Ow=3z2SwkC2YDEHoc#s7v zP8?5{R~PdS2h!ilpQC;@ZK-zU7VGc6$IsDjF5;}EF{WmZW*Aj-l`AT*m{ZZz&lEKA z6KP~tKTDC3oQuBLa&G&zZL>H?rvx)rpqfw@ttpe`L)R!h(YoeOeD^MF<~_b9{;uuK zrYa5sx>rc^Vg*e&SEZig$?eVMwD8-%Wz;0}wb606|D<*<5 z6r!+*^qEx^e{mgInbnA0EJr5VfgpdZmC>UxQc9qK+E1CSO)7Eo2ekeY4^wufNlcYR8r>42AyR-kiwR?Oo-0@vja7*t zet6=sl9hS@%s@~9Bh$*GhmfUw{d(Gm3JR8@m8sGS z;MYMU)K@K95nLQot3UYv09__SU}R~X!x1`1BOKf36h4^evw3^g-Etl-1< zPvRwzMzXsyq<`9JR5k7{Y*zNYgZAu1NX1A`Dv)&%gYp&f_58X@S&LDag)78hijqha zp*YP)uSNSEG>ci_F)?RZ9LRkJBFz~6hf}57@$@XCpRK{ONk)`N2BdRJ(E8x{@!|aX zcUr0x)S-_Oa91Ltzajpr^`E(q+g0^dWNRQNY|bZig&R+sH(91>5>?eMlMa#?7UYW# zJ<=^DO9SQtKXSDbtc>FS}pTUOHD(F?070gE>em* zTIN6wzbvdioMNZEoVs?NY8$Fo_jcmC!2l@nkWxkYlZRTK2Z23gC$&4wd#1qKG}4B+ zu{0GtVv(w!VGIZ&mD559py-sisbpq2Y=F zQ^P*LK9TY*s$X;OCPOWBt zT8tQ(CPNuev8a6@mIssm9_H>!5B*!S%W9|<1NtkU+x~8%ets`MH*f7-HN2jsOR_q$j~hg=)^PB2GmHJF;{m84uB262i%U4 z$`T^&RV=k(=Yl-F50J?n0cU8D@S0x?6!&3jwaXB5P(T8e;X~D?{8-y999z=4P$T5F zj(b^(+9|7H!=!TfE(VCIr-`L2U^HIV0>Mn@!dO;C2UD#m2*rNdf13l3NXbgf3$S8A zC-TS#$b5xA%mi-whS}X~@=tL7oBXwYNoVP5 z6C1tv*22SemtPep%TvDlLR#&;Kq=M8@>T8p9!n#a;e8R~nTfZs&pU1+&u^aizMTm1 zra(I7T{sl^ljnib-LlwAe+9i5)z$I`1vT~faY}j|^{lT_iaK4ROO2(U$t4uE5X6kb z?p~S}iYj$juB_59;OVgoZf-r}B&3Wf)WeN`i;e-u1OBRYC3Xfi)Ec}=AW)nDKNqKw z0-Smp;M+AjhCsELe*TyQkwPc9YfYa2ZRH3ld~D_>mnf$uJu z>#nuxtiNPoyT3b4zi>4hdjlUs?yZ?7+Q`KQe2e&etcLPHW_$_|~!Voqd+cyf}P>@KcD}A&Hurx5U1QBI3$X zC5`n#Ct~KD20^WGLuc$Y&3fO74Dp7PcM-%8PBBx)l%_a>IMc1fz7&7Ln7%f5C-AMO z^4Dopd~Dt|(=81jU|{MpTl=H)^T$l>J!MW-haUT*uT0g5V@i7ZdiqEsD z=@>p8)e=xDb5IAV^dGn8dTvW5(c?neqW=I_pAYifBiK#f|OH`u4Er-l>Wl_3pd(zP;DI`>%EHe(PVCQD@V1 zQWf0Ygh!7esR6k@pFm)2Z+m~S4YX*-R)AmjaQ^^TpHy%=YI^LZonAX3V$Q`>1!p!T z-9QD2{{UZ~>+X#isbItrpSSJ%I`L`{Jh}-xH>WzMw&|Ta8?820`j(Cu>FBC=P7aEy zq9|3QooOjE3r{v*A4v05wft;UF=p|T^-C~DB_u%Lk37=6etbIgbF~{w9zIna5q`k_ zUHFP2xa$5pcINl!td3rKdYoR&!&l_z>ncWrA5BXq-s5GcuFKNoD&~mE_s~=oi(Zwc z3b*!GbF|r9Igoyva}f8zQJ={j@yg!S6i;$ore ze(J%&0yxMf>5mgG<5iS8txX0_t8W*}DR~-tiB!}Duu0}0v`U+o?ovWvl^P;yC}~eW zg!$L!`PZdF`Ug?sDaYqeT>k*E({|^f`LVa4861bjTwdaVYCh7U9jnF5EWR9k7xT}Jx%2ZI#QAWCrQ%p&UP|F(f5J|RO zGZ@{IClymePfj%X0Z=^1=|p!?Dux=5`)|*Wua!C_JEL%J?!s)l)$NQn}aG{{T_)>ixRUHMla{8*OK|P6v8zn!O|Vg(qp%ZMb(XE_YaI zV~R?Rt(3~rWpMIMQTFsT6?HP?W`$NsOtTX!8lh$ZnMitMF$D1ATAX@R)}0kdps-Nj zl03iJ{k;l^^_3MehiNIzC|aWew9>}nsS2r@V9l(oa5Dm$WBtOcZVC5r&E(V_CZeDO zik_y&BoHT*qr9Fnfa`k zo-r&-kG@RkWY(=CPzs2kiHGTTWk&orwV>9R^65%3RXV{3_VtmWmnHuI0@TGsrpF$# zBfUwwwXzaM#xocq#sqhb*ZkpN+6Ajh(ub{v)#Z+z8A55Qc9Wkr{gr$rg6f57YYlPD2CT_Wi$~Ob^p-EI9f90I|~_fj{G#{{Ym- z{{V`6-49NFWA^p`)uU9&EOH2Il4=>5mr<5B($*!Fk(jl>KSn;Gad17sQrgcMEufMc zyUb&bYsSCk^XslWt?q{`a~M$-=Y=r}NN@qk!5zRc^1$>Whdnt(X>TgJNUT!Kq=GMU ztc*USCYztg`tirKgfvnsFz#Vmj92DI3{YUxKh8xy^t(!F5yXTYQ~;d! zV^w&MvXsZ#Pl9P7;4Cd|P95}+q$lbYD#qGLAcA?d{n#t~O2q0?38gXQp#8qToqE)S zHii;4YIx9+qKoD8uaK`FpHiTnsWjb40ZSH8Z6jTSo=u|~ZUExr>G}6XAtG4TVMq zsu>u9MEhT*kxzz>op0FnqtlK|MVr zHTdd(yQIrgR!16!YFegMXydb%v0qx2xB}nPlXHK15UW*5Rr3@FhAHR7gF{e5aiHVV zF6{({IA^S&ifR?0uaTv5dmr-Ej2m1xTfN}ZAsDCwAJHCQ{ieQsVt?L8+-<`C z!qeM6PLN%1JA;96BVt`^!3v6+k}5!^k>o0Rt8bj0-(T||y}J{+GoNuTD=}Lx8)f5a z3qSC^nTr!r<0+zusaPK%jMWYY(VSdx53rT)w=XdT$SIG7Ye7OW`DdwHk-e(1 z{T9VhQ%%5)|n& zB!Oh{Sll1aB%2R%gvHf-TDFiXLHT+SQaJpp)B|q7I)q9-DMLYlTvC_GE|Z@Zp{RNW{@Jrs{u#T9-AXLM&zHt_jYISrX-AD9whwDO#uG@ zYg6m%Sv(Ogl&b(nX-+%|1I$*VBACr9)lmGpni+H3lBO>Rop%wKkrugBwLA{a6zNrr zgyFa?f6q5&An`&On7U^p&b~y0#2Wm@Xff5}kxkS(RZFcA zO+nb8s?_n}pCMm5U=A7U%b}GRhE*?9O!;}xpHKme^ zCC1Rx#?=$eQ#d+-Bnee4E^T!II5y+j3$51IZ?;2wCY9H~nhICcW~cL~nCnp~x}8wO zJ4nbl7_OSNDrv+3X~w>U%LDT3t#U0-S1VS*kEotCmZ?w^O48LvsU=tL21G&)+#pkb zuNEQL`R8Vq?b3F1t^qg{`C}mYgHK+J#?LyE1T4S;apzM&2_zcv$QT_DovFQccK6%c zBQ>?RE-Nn`7TEh~A)}rVD%3@htewP^;mpxUsVbHwmiHR1_4X^bxq{_sZ9Gh+s7P)A z0Zi0>SRiNAbWM3~@JdXpKnJFvf8#{4^EC7H$3{n_bAqpG%|TeD;;N!$s&5m*Bv~Pt z6RZ-VTN+BZnIJpgZNnt^xE`S{f-T{Lo?16LG?^+>SLikedx^`R z*1l4{w2ebG_FyD|{O#Gum8u+AO7U44TUXReS>>75EQ+ zvswz*wxg;h$X8EI=b@UOdOFHk<%W7%h#m>)WQ$BS5K6vgF-Wt=W;Vb2!pGhgLc&rc zW(GfpIn6Q(k%m)(Gv|Xt)>H15)7eRRwMlN!-ay1MP=KXzf<1mMK+=o|pgjh;>Q5@a zszqm3YJ_Jls1ZV{svrtQtzx9ukI%CRQ@zP?fyRRdzH}s#MQUkKFg&^sUDSk)QQ7ol zRJj1-wSW{FO%9W)m8m@g`$~#Rp3cMwVv=dwKZ~M*C5*JrR<;7~pc78ICxiYwHw7O|B z+hca)s?}-i0>?uO(p0C6vlNb^ktEZlin5#BeI$9{YimgzBczJyN)b*p{iGTbj)0Pv zZw$F&w534+3=AL#1J0Dm_2Jcxe0v*KJ@vn~eI;wvc{G%pw!0R<4<+@@-J_>R$cX#TKQ-rMymq<0EVN^r--Sj8R63w z%8nhT)E5I3&3wm^I%;w}xC->1`IWM^e&Xr6Y(B>8><-$G{U!B=IMgZ|tn4kp6xdn_s#hT_RTHk#+7xQBvLk^mR&@bvPq}~G z-gemTw;Nru9l%Kyx|Sk3$*M*iD!;-oGx(3EQYS8Q{qn^<=h751nkaA)fKo+BH9r<` zaykk&5Ar1WsTS0ZuD^Zs?%LcdS5Z?>w`ww3I@+Cbq-`7zny02}cqCRDZ>7`@dHh7j zn=MOdODPIeWRMRW<0Mm${8vKd<*S#3$tB!oYSxru0jCd2*YfJWyLWB&@5LU#$n_t{ zTpZg=c47&sr$lC|q1-r`fk?C4ZoU|jn=gu}(yACPsMrwdtzqm#1>L>$Ur}lSU*SIz zn*J;r9z1yQ=$h)@eYQ^qc!+j21XD>ID}p}C9M{XBdn57>4UbTmstK}li(RB@gqAmr zw8bD}s!2|zxmybW3AMSqTP(FTA~h8vf`t0knDnRkdTr(;l{Kw+3>tl$e6x&nlI%a0 z8_#y^sdf!^-NU{ru*oGur%3hF@eufMKxB>&(lmuO3xkrV$T(|dwzIkl|*YfM;r(PfCmTEA2Y|M;*vPru~sFr zM{yr4{{Ww(L6+&xhwd|l$^1aym0e-K>nbu;75yXL8=Wx8xW4*YSuxnYv)`4iU$gfF z7}thnijN~Sv(zN&UZELK1Z?xBmAqAvK@?!BX-}6Cnq+@Ij3Ipln4QpkjVu1tntZdz zi0Rj%K3V+P{#%`=kjHI3%h|sg_q5V2e&E`*RB_hqec~9}Jig@X4C%=1P4$hE8H&e~ z#{Jx|qp_!w7xgcq)EyqyY*U8-N2W1eIB+;tpmgalO%#FQA=ad4IXJ5Er;yT5%yqUu z!r%B)$5iiHj26!Mr?au0caz9R6bHIGVv|3)`nc9K{snyY$*QT&Z|$#7BB63=q|D75 zAKii&L6k3D!H|)2842V-H6Q7hC-W5tq;G3d3{8XUPcNSj$kVNzI;*$(v%L03C$f5L zu=aOoY%Jnx#qQmUxN)182U6;hy!4G-i>RrJpCd=*Rj8$xMNKrGiBTLC1_>%iq2p?= z%lzDH^5fD%rA-)6^dj6|-=FFE_h8CSklo&%eQU2CK^M0lUM@e!kVm_9?mclJ+Sj?T z1&ywMr_cfQ{{Ug{!kEuga7du1Tut}{UiY~M;Qs)D;B#+!$s`ao)2bSZ0xMoUMwVwl zmVum^B3nf0bO$<1xL~ehjgPBHCrH2b_SCJUjVY-8qw>ce*gDW)aK@gQ{#`RkHf~(B z&_jmCCf{rfS&Wp^QMA;RbdeDlcxkJkl`7)% ztYu|r-ZLUOU!k|XkVtB`*-og{rDzZQS4mT{w){JRcReQD!P9QI=}s~|-$jY1UCc0Y z%SSCvF26f3`;f^~RMgQ&B(TjSkjU{QjHX0G?JR~s;AjQugG_&yK67o)?Mf)R3kzAWbYZk_{?ZN|^>h z^W*Xq>%p|K0Myg{RO=-UHoA_Yxo4@Qnu?~Pm9Z31&`TvoC{v+x1hqzCOEolPF{T0v zRHj`q{^MDW)JsMRqJVIwf5H9^sLiMX0RVrnICTkYvk+BO$+$82>})a0{{X>;KRZ5H zlnuQEnRC(8r+Bo{shpm|7(^Y@lkM)0_ zrmUXp$kS9%(&KSWS1nwnQyUdl5>3ZZ3}^hNYC1fIYZZc{N(HkxlCo-x8-2a*1zCcc zXw>w_m47ezqt(1M9mars_g5cvz$s%^?d&T)%zbP=-L#}vJ#3FLTFg2!h!%;sn7`HRkgpg zf1w`PjyWEs09CDg=ziY4gHVU3MTH|~bwPFudn(+K^;KjwJFBWNxj0>3f}LDzVQVI`3k^lf6||A4hg6XsQ96YTCG33pvaFgJWC^HPD=9W07ZMc~Yg}6Q9FNJZ2xRRoDyTU$ zsrAhT1^@z;rxVbR>QhXbsL@uuN$oit20$Q+jC`rmmK3B&LrSs9BbB%z31F7;UNyQ2 z6yC&GpQ!u~bdKB(*G(_#E0gj(c$ym5g+AAX;z}9AfLIZdPs)@bj|0aTttr)ldb+~st&*4nd(4RYFD3*0tQHIqxJV) zwrX`zg*6e6T50m~`+9(V>Gzjw_U~&pJ9dkXYngP#60xEyV^h;LCWTg@*W`K^f0=L2 zj86Q=QhYq<%9<4Dp0lf?#^(110yKt;cUR#wM3{K|5vm+*1xf=mt=3r-uRQy&F>j{v z*4hLKXC4D$jCgi|!iVKU_Gh4XupZM~THej>mpQDz)=RKjD5Nzg9OgzDAd&FYtZU9{f)9VKV@X9nu`gZ!DDNlw;0jYBSny;f@X@yAIArlN7TTMFMdJy zoopkPjFT3q7zYNp;xb4yAm^??&kNYyT);vrmOMua6M!gbOw)nldUxBnylpxE0CAB) zEO_Z5cpFFwQ4!U47hoL92q8fL5J|Vw-QYxBK&N4<@u&oO9C05%wDoF%7*L}GaWxtI zRO3z*)8$(9w$0XIo?3Y+-4eN!D^sar%^gCB-C0ulB-PFBZV3AONX-~Y5y0@s^8PQk z{aie{)0rATLoIzOa4W``$l?JsJTYFW59J0x#gp9hbqnK_b2TfbMR@f_A&k?yhSo|V zpceH4-*(1G3}$ zzl?>W0MuY5qeV87b$O{JO*ZtgS5OW47h6~#)oX*|MBxyUDMNu@Kd^tRJUV@WSFess zGd4vHE1Ho{Ablyvfv-b_G|I{yGCO-B1C6<4zN6f?-%n-5(Wg+A?(<7HUG2+GtkRvG{R z>LZK$h9`nZq;-%oNlhVJ1e3&5&q`B2_En)Z`+_Sr$7hk23;$kXv6G20tohgz(KAVy> z(oBd1fle8T)m)1GpFRi9gQHj0KPbB|U}=kFcI5?K9EKQI6}zb8sSKW0yb{kFq>8Gi zR;Ituo;da+u;;E|vkI#sTw5rm8E8lCH9s;>Nv?K_DN8f1okxmLkVSCEJP!`h@;w?2 zx$|eeXWTeEg6tiky0Vk49x?v_f@XfjvJ=Nw_gLDpu3XdB(=n9?H$OvbEzj-!&zc#0 zS+<;^AknBPit!#}*X+pXt+{45Nl|V=My50#H29CNn8zQNP&ZE9+1;<3?!DXD9bef! zW4`m1)SH`OzT0{XzSp5S2;rAIkKD90@+DnVKgWecwCxmHlA3W5BSN2WzW)HUS>Nv) zrs1>xloQM1cq}xC*{ED86%=Dup{E>mIFEBLHw~AScJ1QAH{LeuQEb;$Zx-eRG=NH^ ziaZDeYTy>q0Agr5E;XGAx^rz&MX|GcXLRP4k!7LVv(=0SYP^{|6!1eslhgaJJeDD> zxB8L5_DDACh~{N`Ml5UGwKO1V1e59IpCL;1yJXQJh^&b+z%x0o%bipDjTX&yvXMU0td zdN|dhFgPEG@I6@9Sz__~PNN66@c4|DCc6cLuA{A`sfJ2+$kkR>$5T&ROoPo(Op`@W zNnnh1u{OE)np+Kz?yDWH)GDch-Z;rPp$Z0gDWwfa>i~I=bZzH)=55v|EpK_bT+V}w zX_jYkfI-s1h7AbC0P4~{CUvi3L)m!E)SFu_xH&M{SgNuW5Xnr1ve>$~fQ#;9j%JxA zl`PgAesAo%n0fyIlJ-bugL2+uH>8FkJB}Gn05lvk$2@&H^_ME|+k`qIvHb=Dh3W|P zBD^?&MQciA)1$-Ce;s=RWM?<7_20QX4NlXN2u zswc_fI`3j(G4e2FPcPjv1zAYw(XFZtSsYJrxG<1e9cd<_-oLo0>W2A zyOVGLNBUmGDJx8X{DXGu;xOF&VanB32YKWwX z30buZAYecrRV#b*`ToAui+gad^#F=+ENN5aN*o$=nWec5z8MW)EOlBR%)jA=2j?$B z*KIAoOM*S^)qL#Mg zQB~vK3Gul&D`lgt$5g7XrfN!xc1O{vuD9SHau}6lQ6xxOq*LraBjrrj@~@Xbg6y4- z=U>}edHQuSaVAT0^>xF2^Pmj?2Kc7MFb2ai4rM8Ve$?g58wfoPYVyb4N#P6CMr)hOH z8nUcSTemkHGsoLK9hE5eih2s@;DFoqm@BxPBsDaZ6*#$O&h=+@?L*^<)!X>) zHJJ%mysB)I>J|`^TUA(+Pw@WH=js}OQ;$m3Qhh!u1A;v3@}SKqIB7g{N_Dg6!4LRU zK-^hvuhyS9y0V6s_>NwOZT|qX3)6?~F_f~^RnX#K$#yqTW@_fiVW6d`k><%{FxeW7 zT$+3|NV-D!_cA z+O#{@s`tL#-+Nyn1w7DYw)RFE*y9y2M^g+H^y*f#7hGVGS*hw{hI9wigW04r!*IHx zlrZ^mA86ta$kU{9MIObnXI*FvN9vjMKlpjPP&2ehMbkt z#hSpij|1BiO3JU;bo$f}+0$fqREl-oJdvy`EMhB@%EnoMYXvIIbdtaeUAg>yeXy*E zp@lq8&;3~Gom4u(2d_0+Mp}23(F#PNY)DeF$X$k}D&Azb_HLkkO~CfxodML^xN!3R zeO+WEfB~;wj;1DX@Og?vB~KbENR=%q5*AjulgS*Bk#fqTQ(POV789c$&rJHCkRE+l zI4l$l^_A9H<5ViDXNG7hCRdgjAi6LQO&N+oA@U!obl?IB`g?Q$+6yje^XkE?pFW|} zD$xijCH@~BK#}3cEPA|;j*Y4O&EjNPBXN5+jc5*n%x-O7*n**IdVib!UvE|I8S^Hc zcKKQnG;l#sYUin|sG|u=?>L64kHjjWnWNPWA*D++itMdx*;tz&Fe6uSAo_ok{aiZp z9AM{%`oGol>(5XEwwT@Jj$;5vWsRg{0m~1CSVB~oR58;H{44#G2ik@j zo}}08^7Qoc>Ah{h4?djZM2Z)Rm7s$9)m8`;#E#5v<`fF7!dAOomj3`!M?USXZSjm6AvB9NhMX$Ac!anC;-Y8L&{gx&XQP<@%*@|pqH&!4=$}$ z0+c^4vWI3C8j|2O?7D#jdP*?42K?IA{{Rnn3|gmv{(X5^fJS=A3x8KXQDzDQa0eFp zUfgrEF=5`NyYgMX+X{{Ta4kM`HUy>$AT@fqki?GEAUj+WbXd%L%LBV_fa z*`kI@ij3Cw+_;^&LL-D~e+;=ws&BcJ0m4Kb*zf^9-i8ULG>Rr~uz!U4b>>}5LD32S z0Ee9ZS6}y;eOLb5bbt0a@7@{z0Dr^(068Q70HC_pguaKb|JMZRqiTY6u#jDDtq5j` zWYj=n4f%F!5KpV?$tT`Fg^hd_)kLS6txgZFDNJOO>()XQl^GgFs^kE{cxkOz9u(pY z4r(%K)NHQYp~%H7QYyTI$!Q}i=|ilcB{i7{)z2QVZ~AX%t>tw^YBg9?F9AcwwDO>- ztulDmrkWWmA$3;-(xbabtwF6w1NPL?pbiDwu{zd~p=7J3O3G$w7fhlL(5RrY*v8rl z*b`v4v9UhPlJ`1Ps8TDYq>qpQVNd6e;pqgHhyz5lC`Se=HDfP ztlKq{(RjnKia7%aoN7d7(!>`b$hgu677fjeV3lUK24ENxa0Lrz00zh(I*(o$=}oo% z?X*g*w%^Zfrh!ViD_V>S{w_7HCh(}bPpTLH~_FG z)%oJy?zWqC!+x4FFynwmIDji!FAqvk`O~5OhrJy4wt*eZ_l*qz%IP2jki-@Rh^Z$U zfT0-a*Ad-QQdeTe;-#5!rn-?bN6=X))=0%mM#L_eU!5dbcmn?bk9xP+!I}m7plyQ# zL0Z#12+!?2c#3r-+5O|9OGay}LN2MK9^C|iN`u=`QY%i-KpL`XdR@o-+WNB-aEkL052bsFpZfFhS^R!o5~y9yTax zp^het!pr+@8P((<`3td7Znj&W$zl)Z+;vw%;3?8b?FSl2?j)K}8WILi9MtvEm53P3 zk;+-4c`#93HA2ZTZb7Q}aVrr-|a4VAwg2Rz=k|l{z=x5Y9 z;1B3|CHQ30BBc~Bbudc`;)l+Iff>en4R70U-0W_)>$t;JSc6b%G6=vvzJ6E(9UZUb zr@HrkbFVu?r81kD=cd^CB(K|)xeAc-(P46lBN_^Ib}rOV)x_FX+$(+u9`l3R&F+2o zl;V4mTH@U3B%H8Q+fs0GL7%fcdgBki+?)MW=IPZGh-P+Ss)`h`;ZdI24U1 z`Oj2Um7$#?gJkDK-hu7dN$|@Ok*|cMlDSoam-5)Dzs3bP|}qkpPdgL0)wLyxV(7X z(^DfDuLW{A2^W!xj#SVdSl!$|1fECrH{;qk-FsT3;+#PM{(s;+M_y8af{|0GijPk! z6U3jkqP#j#cU4o*Pqr%P=VYjTs{xgp#AI}OxvdkD!}}@0Qh2q%_w8j8TD2&|nha8d z%Y`Y96$kcpRaaW*3bL@EryoDqPp=;%)pYis#$K}R{{SJ%;^W2UR+(*_$D~xXK39#N z5hQUkE2g%%Vm)P#vJKy1vfV)v#8PwS27YJeY4+31ap=k$tBY^!*%~zmP-ZRm(2fd5 zYm#_oy;cWx{6*}pl8!vY@HXPvb@ElkNna1|)YGg$ODf2*dKj!s2_x#uW6#zx-8o|C zY*KC2-T|FJP=Q_m6OmspE;;DZ*K!iHaZD*Y0ze})7|#GJju`b71ET#d#i_2t{{S1I zo;hJhV9_y(IhCVTa|r`L@*{Dis5ZGL>2Ri0&`DJk;uJBiNw3*MljVWLbZ{bMSVx8m z4>D_>G(LyZjxj;gPTAah!(`{NIhq>E{{Xkc)yG~0RZ;~rQZRT!F11E)AU8H*10S!t zJglc!aMh_J^A#t{g(^S6j;$Gw^pQ@LH9r>``U6VP)YN3~!1^R+pAmQJl+ zSR$s52&F8l5Sb!6OGq>$5x^iDbMB?k=`R&?oKSwl@p{yMkacE8R1oW8hJkD4$A~qp zN%N&K#+@5Jto~s;GXYycQ`)#1e8w{qNgOEHye2lYaa0zbo??ktTO~YUTS2~tR#Rpl z<8|R@o3OKZ zef0Z!ih`%FcmDugZWCKeHZqblsYlAijLGfVq`Y2<7O;mTet7oX)UiOVG}5ZVGgFN| zoP5Wq_3353q?Z(m2#ZO;0CK?p0GxX99$g0=*S@+pyt^+IxVAq~ZCn-?YE@J&Gj}!? zl7~IHSb~zgu|*VS9A=_QEV`sOxC%b8zc6#g^(d0dYreRO(26r_V9ck8p*0F|L&pFD zLH)ju3|2?jc`6G!-rw7!U62426jAC=nHe6RK8;sf#N0?ed`YiH*U`LEGV1KFulc%DWGZ2A*{30sQ6-e9bmdBh z`uzwu1pffM`(k;5NHjPrnt9{-R1e$d(=jHM3|CEm)n1Y{lAFBDr_=c)1{z5riPkU8 zxW50 zj{+(vKW|EtZfQtRxS-)$eVq~>{rR7_`r{2zTbA5(xabt5 zUOKwL0jhG^d}yWh77Tc@-0}6dwBJ#Ec+4XOfCm-x9+f}0`E+d_)oX3xnMZRG_;`NL z_IPwz`iJIj;M^O!k2g;&D~6h)7^o{&u^o|6nFOrJ-~^Rc%W-=T@gCW@OUqx?37s|1 zooP@&;r7$lr>C{DxVLx|(nP@r&&s&r`JOyaMHBhIYz)6sZjFWVv#K_(-=gbo{rik& z^~qDvd1u0R7AA<-PSr5k;G?JBm?&PM2un3hJeTE-UjD801x?kY07^k9l^F1X|^BDEx$AsMk7~?-`z7`ilE3Ob9n?cbr>Dz zorRFbG#yl~x=A*_wp^B_ReVkrsTlMi*N@xN&1~kQw1%cB{$Dy^0nrHV&*XX9nJlJP zaCQFM*?7IyX{3|;*YVqZU>g&-o>!7s({go2{{UU94o*4M{{VJ1hg&HjSesvIxESBV zk$Wke)}LYH^8WxgO}&l41cW{%e7!4?Kq>k0>aBOLRCeFTl+E=ges$Jc3$UoGne*Sl zb{I)r>^&Bbi(fo`Qv5F5=W+BmVPQ9dsv zi!T5zCMKlQT0%-Ovim?|@Z=7Xv@iD3xj&0Pv4wc&&!yUov8zm;B7CyL{jEg@sb4yE zweP|o_*Blo+_bpuuk%-9OSN(ySSV!eUb})kjtEpd%^OR)Ht1@3@Z^~kvxw;9i4%mB zonF^Ry4=EiJGcv;HBm!OJPsJs_)ke>u}K3-YV}`3Odl{!a7UOwKDMOkUi|65k$W#6 z*j**qn`g1MhD{l%vio+uDpgrDi6N_{aTRS8@fQJ-XwilL0K|JYx4O5wQeluV^B#Yg z{{T?vx#M`v9Y{S2@>8RsRV@)W^+jc2dtTQB3)}i%-P#0UL4(sR8nEHiV*|rt6U?Ck zu?F%TI!>=0t$Ri|PpSNSXT$KpI(2$=M@FY;`+8x>vScBsqo}7(vy~E_b)IQyEWSd( zqQub85%ilCWpY#ieX`QFy<&sNe7~1e6f^{P4!tH;YIaznglNzZx0^ylsxKIb6m=!k zau|kHrS|v$5Yv zi*fD^y@uSKkARP0)#YjOw3$x7q~1GgacvE?yfQn2aA*GjBc+O)d}c*WI=m|*NfXpg z@vSzXAKQXis6#{)3f7!HM~?zLsrL1<6X8}AO@bg?-~gG(hm{{V4Q1L-luPMH`LD1E6~Ak>kNzLf`$sPgMeiUaGP z^?#eE8c64YjtY93$t&uq=;BGL=B0%tt(qv&WUG>ziYjVUdWivJ9AQ)wWdI9%bu|FJ z)g)GwALRc42UP`0&MET$08r~ZNh^6$XQq2F((tT`z@BdC%*7AW=;z+hK11mv)OBK` zI$IU%!kq&nH9SuwXUMF|9hI%eiP=MNc)8Q<+Ab(MtrfpQ&eqIXQUVlc z@>Yy#VnFzS)THK~T^ZW_8!ac4_@g<%ugm56^|GJ)HXjE60O#s_N&f)QlczuE-(W8a zZ~8FYf6f>G0HAs{@U4H}iT?He&tL!01*mDCLh?XZk(sm>>FHaJIQQg~p>X9Eha73DhKg%a1wUap8SB?2fsSyQo6Mf(yxekD*p;o^AB{U)|ty1jMwSWYV6zDk*{GUoS(_dzgt| z>=uLya5b;Ye8oXNVuzp;actzLsF=i5!RBQF7Vj9=tYU2_RR~=yZY-d1Z|zt#8md1m znsMVwQy?Ev_8ysX?Aie}tqy9yk>*7*D~eQ#0D1(sZ(Y$>Q%aRo@yw59j${q22aSPH z>{*n%8)_g9EY>5FNM>zC0A^Fe6&U=gPa5$w96ChS;JIaC+Qgikf&i-Lj}e@j*P?&C z`a)Flwk`bV;9N9rWGoo7uC>syx`Xs1Ne7Yiv6MFs7zB}(6kt+=&9~axmSd$k||Z`omd8Vn5zOGQIQ=;VBnzrHVf?f3xu99 z;x66<5IFFqa0ou8qtMo!6v+&BMd!7Y#W5n97>5KkOJGq)^g*B*$mv0}`glR`oJX-+>nicnDXnqJ=f@5(&=8r!VPZ@d-EEO?w( zNi-x@yha-p=wX(ePiwBUG04sq>|4_M9f)@Qz(6;+A4ARkl_Lay4OdK6AOcUQ#sLJ^ z(4Gf}Q$*iSc%p`};GP7YG^oJ<`g!#8@m7~9w7ywjBEr<1d^_uGWpLFritM!Y^)RpA z!y658t>c<9QMC;Ljjw-sBkUgKC+~gVYF~lkSEX}MX{$912Ms>FY1cV^`TU(7rro!5 z6i_CEE}DT*m902Zo!^L3nHjAOjA!UKZqn@BggG?6F0Ph3s@bBdR-vUyb$UcH6qL>d zfoSywBkB3~lQP#s5$AVRk$#e)8S6grj^Dq5s~ zc!EI4B#t!n9bVcUXI29~pjwrv82}ALDGEgzgf%JA{rFEfqpaELzBPs_svx?U2?d=A z5xLUOJ0H|7!h^+yy}VJ`Scf{anqvozMQK0)`2tU$R+dC*VsjUJ6H3qm2fC$+}BTF?DwvtAWszLG~8fOGjgCw4vJ60h!*V;9zg`|^eybl~q$jvNSDdV#iI#wnM zKx57C^uN0^@e&O^)TbUJu67jfL zRfdgGKA2ub1ji$JRF+`G8;_;FzS?+oyqZ~PO>3y&aK&&vX-~JO5=B%x)UF0_LweMX zBDg+=nB&y#`AJEf>tvzG!%J5H$yJA?k}o1?s-sp1ONY@i2td`s*b(niB1;^x$j#yU zobaIpV}YrrMSS|8eGKyxrA;sh#RUQKp{Jo06&!k}&GYe}_`c`NF3PSLs*1VUW5*yd z(o9-e)l{Oh2W8-`)E~$^-`E3txHT2?Y-E~mEw#S7r!Mqc(*sc*Bg|tJQd6{8>VypBI@BU51%dSGI&aPY0Hkqy zw_R=W2(DtHa4Z2J(*Q0!$FJ?^>fYihmD=7=)ISYE@W>V7SL~?!dQ|M*pWD6FSxG~+ zcMTrh+%-O*20=E*bU6!?+3 zkmRouQaFLct}1XcPC7gv7JeI6bhpT?CSSfbhBLCZ-Ud19F&G%B=C0a#%&XI>qOGc~ zl@dCNNFkU=u*z0Tk?A(zIk|37?d>wl8P=Xup!pEgr_UV?wysjSyxL&jpt-hN8CV5C z$HffQIgE;cDUxsxS3$9Q*RC*ow=ui+Usvq@yU6Z|RV(1y__%2FQlok!Z%eRQZdtV0 zem|-A8}7Tz*YXb*H~LQ?Y82)G+Rh>IWbZ z_SBqUXN`E*qc_!?!#hx5p^^oHoPirj9|6V2p~1H{z5bW~0AucvX;R@Bfy4@N{{Umx zq}zqPip0~S9~b69;fjGk4Say;-tEYRTtSV`;Q<5=R9@r|SYPS>zqPPJBygoxwBmU1 z&3<1x0(uNwO4S0i81($Qlh_+4HJsY@kZk;wE-!Nk?~jtZPuWW)n26>pXH;f3`tj{; z)uEQ#^cs_a!-k-7{{R)!HdnFRTq&L%aMq+(KWIHtuXOx!{%xDDA(6y&%|FM?J|*?V zL%H+&t2I38jM4*8*m!ZQHAJ>545Sw3*0}du3mX`u)woA+%rQj*lq2|wp*7)*eEg1Y zd4o#2?AGz4no*=?I%|eB0)+g${zsx8mi|az%-6C~X*)yZuTskmZBpbXrl`SH?g(il zCi-YrN?IdMkpt-n7WNk>*tBof5yAAa^6Pj?v>nP1&mn3)WE|FmpmRgI&u}g$<`P_x zN`)mwDh8U;xb?uVL$^?WBR`g%bp$mp^3SgK6VuKnj|ow;^H}-`4av8bJfn#00MfyD z99!r?RlqmZ5!eXh9!2VCahwC`jsWy;W4l~fH7{LmNIXJlqLD*@c%M3ceq9(pnEwD7 zzE)*^73I2Q31V<+e7-}}bW_c{j2nVSHI11P6GtSReS?KR;<_)t6SwZb+aDOP z6de(O#`La7ekAohn^c(=&F<~PxUm@;oMu*^ckaOe&*U)}W{uMsLmMR>EOyZVk>ruZ zyN1RtwX}1|;sK3ZDdj<24_sFr1-8xPSWbd_R51faAQH#tN>k)G{@V05Wc!b1ZARMr z@|U%$_byKp6>TL|9xiJ5>5uUmYPv?H$x_yFP=@ii3=69QKh`H}DJ($~Kzv%^hE)Fm zgj3V@bTziSUEL*HJw6c0;2R$g9OH%uQ+A*89?s%0xJRhS)vb0iHpgUXB9c~0u?rV> zU169oM-l?W7Sct{y|V8-K^zh*-zjjk=H4i_hY0=4ZwKbCqie=#~|3G#!k zF?l_ikfFu){>l>9Y%IjneVs1t!_0(N_11o}FtUnFvnZ1vQ6YHft3dRKrj(NiuLN#| zNC4v>Zefl)VIubd$Avih9<}rCy`_QN^tcYY#cmDB)m#4ntYysA=l6GA z*Uz+a*v&NybLw{xwPXvfj;rYJTdz^Z%l~bs}W3U7{{qz6!M@P zN3TRDE7bWsr1d#1gPEf48XR_%$W!get2S?Y?P$a4sDnAzxwaXsobV5+N6AJ&uw@*N zJ)IZ)USW!oj4G#y;pO(J`+9M1gDS1m0I;Wcs9-)+peOw`dS3Kj%)gQ!8ml6cq5HeA z_AI!})D`tjv@%(3t(&B;rIk{6_m0MyroiRd;(=nSCYnZ>S4n$u?7Ulea`==my(kvF zhto?8(!NLe^sLH{8ZNbwa4SkUAJPW~oH5qV9|J$(RhzdE_>GbC<7Httejv=$pXsZo zsAi+w)D*GliVD5w*0M7#Q-qAPvg24WEKY-C?Qp!hfxDNgtJdUVSHf zM3Ej?9An5Fkg;*NDjOEHrY( z1g#F?+fmgV?h2}$)GA1oRPhv$={);0j%Z~H%6Qg*;M9D&LeaWql!4Iy0F%ZhMj>fD z6%mIJ&*MpuYEq^-;d?C5HTf4;A5>*-ed>68L^NtR;C#O^<~pW4$4sLi_RCQ%Qo~Oi zN`uJN3e++oE-xBXX%M+-00KrjNCQ#&lp$OK(x?N}8iV$9)1zwaIOG1uNSf*QC2WE! zJbYVfk|Mz?^5HA8^R}Rh)ELTHWu&BvKv-&>+*|u1!`^`e0th3m0iuQ*tA|-J zJ8Kyf>t9$U%VebvuUnFFSlW?wG<5Kg$r5TJ$QMHY0I>J$SFN)+_)iZ`l%H^r$i_g* z5ef&5W<+1q6b6h&+BB7GTaoWwYfVNt`Sj0{n!2W^9iqI$4J}BPs*P}%{Dk>3)UO^n z+M^-O2*uY)9Y~Tic^IHesMU7^wHQ~ATUA;bAgC1o09X4xV94R4~bh56m3WpCk)22j_U38IkH};}8Z8XjeFn^y-vJ8N8^5I^m zP-SU_G;b@-o=Curr>Ue7$EHUS3lIXb*nw+%RI=o&8joJQR+J*0HD$L0 zQc+jd3`S2m{5EK^RMa#S)VU0`LaRgmPm7|Rv2^C8Rix9Zp`>4^EJ#taD%8`{{a?4M z3b$^m8u35s;m~v5J@vP`N8^`m{Dj;vWbrs&v+Et_*mZdP-Zpv+lx?=K^_8^v+KLBO zk_xPad=bKk#OrB62T8xR`(?Plzq7TW0!dX*$w?ZIhb9e)nHU){#id~Um)$} zxH5aYJ)Yhhf~IP`{_)&7{oS}HV|gdcZfwP7e{6 zUeU6XtJFaxx8w6=D)j+qtVMH5*A=ZQPnr8X`1NK51d>$LFB%OX`5M-h@~r_Q9C}FS z@Rai}k(@I)Xl_{$f*SUSgQ=OG!t6!B9P#Z;PRLAQOA-bfGyr2xFg-rI%lj z9}zzzs=9<{;M#-}G87B0Zr zv{|}ZrV&P!NzS1tjIdzr>l>a*s)2U{k#WES*`zWiv@I#s!nCUz6G4zb0;az+UXWiT zY$uWt8_z*ps4YdK3Yz@5V-yq}5?#-Rn;TnE5dou)S7uP>M2ArQUs6HRMUB8d&#b3c zi3S52ftry+<$?C&k3rkA1cBgXShZG~fCmDq*`dg<3g(yq^c+=G$woy)4w=n_G*!=)s4U?!!;N`mqjgiJ)w&B(cUSM^(&?sYy2b%pyNsq z3G$)n&~&%Sy39>fI1a**t8q09u+wIpttAp_I#R2~q)8Gm;DN=h{yxJS=PO4fZ8qMy z98eSU$jB$`ss8{zSoH0-;2l}WBG3}Tj?I+Y|TU#RBZ(sCB_H!X8+(YPyVMwmw+ zrUEu7XbwT)fu6EI-#%Tk=kIIxg|-4j5E&7aiVZ8MA6yU!&kT9ft9|T@bq?m+-DTYo z=JELqX6?n$)x+SeSgDpAg)9{a?(s;gG>a^csy;}u9`mu-IcJSPEk@K&kxQWF6f^~ReZL`Il9jvPE^;(@j688kTTqaq1S*u!Qb%C(63U>=#ZH_3 z0Uzu8Ow3)%AnxL6>F7w}eEhoITC7wb3UNoFtx$qG;~E@gfjY)YAb`2Kz`mGI|(wyD=^b@H@FlGx(a1;j| zC*vF!lql`UD)cNo>%+^Btv^1L{e?i)U1zrPkrs&4 z(&TAbp916tDzC0`-yC!SgJJ5q#atEt-qzsl>SN?3dm?=qEyq<91j3br{sEE zH5|wYhfZ7&4QfpQq19RnU}pdyK6wI_7)qF>s+E&WO(N<|R=r5Fsv32=Ydk6EPdZ8W zsI!#pkI#n=nwT=O66^&iY5-!Od71&Jd5n?KR;;PVL%Nuz?d4N!j8K6o~)kZiTBD4T- zBDKJ&=fV!JElHXVTckec)A_sUqu9Y z7*#-66E_UeEjCgJifQv9S%C)Oo00>#u(93XA~gkoH5D|i0LKa+@Q+T9pt!lQnOS6I zVL}Z&>4SshF;Ron?BhDm7h8;_-Mw+1qTRb+Ck%BojYC+qDv?a7F**zl;)k-$I8;b%77dAIHKiAvI zCR8@B3}cRS`PQ|`!N)|iT1aDOLHd4_^!4NUSC84zhM`2Lfn{0MmrkO$P_{e(Pt=Ql zu=aNYJepiJPnY;VKeY5n^jh}QtQ8eh5$aDemX7vBYx=Eg5D(MS{@dNe=@``VlE?Y= zu@tRF5%%=bxiKTKQV~^!$R}6Q=KlautNrTV;mzWl%tn#gIOe}+{8v_Zbd2EBr#foX zj@OV7$5rp7DFAv6&(Xg>;C-)*nk^I*K6M;($E432NY$ry2Osr+f}J()AK;U(k0GX9 zeqxqY8Z3I#=byJ7 zXmQ?K_Lt)i$j^{HF}3nlH9KQr_Ri~E8>M8wvx&}0N1vdizM#73*0;fB`jiCoe{x>Q zaBsG|8<`TfFCIwXXmpk!j8qEw{D(j-(%4#V7uNCD!$znAxC}J_5BUcU9D2#s{{SKI z=W|9YE2PX|bND>X7GDXOtNVndIVxG5&MswXW}}`O^+$$9^`mq7KG)n@t;|wJ)N~}! zQl3@Eu0PBO={>dF_Ll-!10$%dMGg^Sgqy#5!`s`( z6SDUOS4DRo>%}(K%2Q-0JejI|2LAw)A4mKvHIJK9LX~CWsYNmR8H0NV=yZu>4p@Ui z4Lx|N@~@aaR2>VgxrT8l`m_ceAB0eXX_M=ZO!<7euKv>amGk$cWOv`+6g!GMO(Q%@ zp4qr`>`V-l6Dy&Sa(gPba56~&g@cJBO-AI7Z|;XmFfoPzd1E#6#xeH(eICQUZSH|m zMC5rm!qx0PfrYUJxsJU)EP)A zYhs!y2?1ROv7`fjJ*J%&;rMyj1_>(Y4j<&k z*P(>XL0OlnrtALzkvLjtkTU-O4BfcZNob*!b_|<(j6Yi#LGYy|2Hr{ZsNP3JiT@YBGCg%XjAOMmKNu{{VPU^{;7VyfpB1?|)NMbzflBR8=y^ z20sMZYWl64y(=mvB~}a$UnwonmOw3c)WuC_3`d?v?cx3d^68BRq>TRnoBdyxR=D{5 zN=>Ec~zM^$n$Dhx){+s{-Vq5)R>htNZ4ScXVXRF23(}r+ooivs! z6oSa!Kno~)y51wmu^fGP9@%(ZGDSyK(!hgHKlN9n*N!O(nUt1N(MHmODx+B3mDI{W zQ*&^6u(QsPF@B8xCzsNnKF>i+;$dW$_fsgab+GR93s%(W2Ggr<1p zP|k!yrZaEWMaSR)?_g1|*{7CzupbQ$dg3y|HWf04c*eO)iIAdxpI)F$WGXirNfze! zKHOPcoGp6rM!>*5R~Peg>5ldJZSX_4K0SPN&Fr1MzPlGMv+>zTJ4bg??47@s*xPqM zPq=gR7@X}L7Gc*by5`4IQpA;NkThk4tq{3m&8qb+rk%7nklVYC{gQ-CvivoZGSUM6wQgyNZg5N{+wF z{X~E7zvM4=@LT>;PweWRG+)9002%)PXRrU#E^$}Niy!IKWD2a~(hm{^GJcR=OKH8p zRU*Q`40=X|;Y@KKm;*gzK#jaIvB(tGr;ig_k%Nlog?d$EvP)5Lme3ng zc+pX&epR)zT*hyI#jc?Hw}z25WL5!`tw5sslY^Ge%>9+>hr~msF+fRbP#tvpYf4ws zjXHgbbVT$yX7z*`N09-G%2qS_l}d0$jkw~+-jTamOQ~v)P%)1#A3UEt^>sa}d@>Z) zy}o2sKmwUKCx@@ktTME6C>ObxODhd12t%t$V9n~}t^WX}&-&L%G^isLQatO9Bji0j zM@_piEX-;M2l?bz*VO+2o20gUQwU^986+V{jH-g_z;f}m*l-x!+>)#PEIq7%X;M=S zQI8}0e!@xf`+7+zB-D*4%5?fEJO>(@XB4L#bXYf#rHvtat9_PQ4;!%Lw+D@Edc0R&|IhwbCiSyh~>YYf$+pP>hmv)rb;y>W%8G9aj2BrU&Ke{vM(v4*r{vyc2N1+Qi&1=Yjb5 zb0`9|>A0>I!BaZ2C3Er3ZE;{u)EKeSWImE*@fWw)`u=@P- z;C{++`#yeMM}b6=vpJy*a;CK>0Gg9krwW?43iVIj$&?j+fw?8862ltqEQqI)X%(GO zDx{7ia+1i>85%!Mtw0lFU@QwGkb(q=r5iLXe{TQ%UU-RAqe#pvfC~1Lnu-8^cpvF}`mjFOubP{&Di{@(5nD`*il_lo97IX4S-h%+ zPvyT0d)waNW)YwYc$31v=b-gJE|MmoWq8Rdri^kx&k?D(k$^pO_6@sQ8cp5RF;JHV zXmc4_R7no71#-yhy#Ck*rX}XVjqWXPeqikN29-g_`X`M6^BqtXYydn8*A%bWkDuq! zINtaQj8@{QrKt-Tm16NZH&|vY8PL4%;?ixTYPIy-aeF6b5z8SdsYv0ZQ2fZPe_H<%JS$2qatUuL(2VsB@di2tA@xBcG>iL@JZK*2<%3u*S(x2a9UvYD^l1r> zG6|%VK137i!h(m;RDsu|MN*D+Xat@hh0a(S{{X6$IluuouHA)m4^ss^Wq$UA$ur2o zBrvpv$c^kIyM0L^fco+E@Ns}aA0xmKoEp>~6cpi_b))s_bUA3Thn z9U5M=$$h09RZz#|mLCN~P)5s7BQlj{kH;wg04a_)E6>n|x6pe_d%M`|mX}+m;Xa#G zO+~B3@G3YHUKkxIv$43{t}QIBV6DS29g0p*@ni}PBg=s3$h|&Gc+{pxaKTL+0u+Xm z60wGY801^4POM#Is&K~SjVcKq@b91f!Mf)Q)$VlKVyKQWNcdfHREbU{F$@DtgwOBK^;mHyy2urCKkRYCc>|Kh!vNWL-b}%sOws=;7yxSBL;`d2l@H=j+1Sh z_5Rk>Mt={BB|Q)4k&0HGA5D+hn40*}u$d?%nVnR;b4TeU6(vRZEQ@>c2t0i~#e26c z-dIWqfE#g4jyNM6Kbazx$m(9&If~DAja8-5AsGghu5p?l*bmF2Ik9)dE0l&=>U`}8 zzp2;pq!D&&0!o{IxAqxg#GMg^m*<*NpzsHe$Pv-y%xGWM-aFauk9YcE{LPsgGsHFl{x!<+~c7mZRP56 z2ql(Am8D}LxM0e31Aa->_4@ujyJ~z&laK)6Pqv;}&-#Z=U82THAg7go)x)Pe-s_~= z^fFf0v8Shx*6%2GKuG+u>itChewX&XDbX6CsJpFvSM;*IN!2zqEv&*2S zkFs}e^PQ(a=Aa<4KadLCd#Sp*k>nQ07_XrJ0AioB*P{_( zXKt!*t`!X_P9z>VrfKEF?C3*}sk^6i&=t&Qa2r^%F{WbjWGd;UAcT?CL~*f=t;N3| z)!u^!lN*EV*s+M7ro z6kIBnR^dZJYg6Vp3h)D~*wKM?El$Ntzi2?7@@_tVFw< z9yZ$(O;JVuB|Hj|^37;ZuRyKZ_RnRJmvFe#N@~GsRMkoI6{ypwQ>)h5m_Ozhw7xpx zdaGr1KqQZP#C2OoHcTxk0lg6mvDabGu;tGo18`-mqE)BBPCZ2c`PQ{L z=-$JfHtVR78T6LG5)CyN$TjuiDNuf0FEJm_Q*~u=l^Cy*KOHt!`NlOnQdiP%jh{=9 zsEVON_@jDl^|x80Mi;b;IV*3e;QL4YUEHlaMDbmrGyuAqk6e+*)A?hgmECsv{{T|j z<~4u#T&hP5)GJhc{{Uw~uUdaKUxb)S*f$=^>Fj4q=CZYz{9ab4XyEHt16PKcsuiz% z&f3FfUkj1P#SD!j+MOkcC}eQf_E$F1xwO;*KNf@r%|$$$G+=zjKHAfx$hXEzQ4?Lf zmMRBpFvpi+BT~@tAkg{X)2mq6pUle>7SYUZjQ$9@nj& zvVshL6B>hTXZL<`w>49dFws#*k7|^7+BP=O&h3WL%-1&wXKy-Hfgng|6t5Gn_&kMj zDl3kRt+yUfk~yZ{TIug~00b<8ppV2DtqAiXwes`mR_>3G9}9j&bXf8KBX3(* zhTEmAt8(b?phqD(SK~T}Sj7fHmZ=8C>j|?yk+>SpC6*8}lKw zvH7fYm^_@lD7a36t^N@+L}tTdbG<`~**R#jq*+=Qsgy{mW3K$zPVuueS{13oNaOaM zM17|?&+_)T_O-@3)t-GRgChVlF zXI9E#Me9!I#U#7 zy{Zv?S659+KECSgft0h9AXFTM;ZH1Aj~=$VhyYQ1q_Msgo2NcNWb<3HmjjQECW>r+!QL%f9`xB1F++0|G&9#?pqT17=eq+_aU>_d zNk$kHpg(1CUo(&oS6IZ%#1GHU{hqf!_%Hte3JLfz^A;>d*v#%qkBdFKkf?%yY#!{b zq&pKcm!6(lmdEUl-=u0yt5~{GBZe%P!PmOEu zgX_c}&;0c1ntFAPvmZr}jiai8CPzj_y}>B<)Cp294w3c0)7^?iBI*Di^=GY9C&={B zFp<$l5}BhE$fn5JU}(T3kc^74w!8CvKTc1!N+d)-ZjtNT)e5nx;(BO|!8Fe#4-A1n zZHxvc*Cbz6X^^~Hm72%v&$=v$BP+z=yuM%R^6N!uN~s+(=3%N@c_oUOEA&hqMAagi zDn(ri=U0W?!dB#)@ZehB{UUK75A$`fYIL`+T;ZjbzKq9Lt~D|%qvNY3fJfk#H;q~2 zWM^4|4Qkd|5sI)Q>*&QRP&A&jMx9hAtn=b2YSb*TEM*)R#A{%TtQ|pE$W1ET-$)ns z@F5<*j$03i>aqKTk2Lqt$(QYrZTEZ zjX}L~EBW=YR<94ATG;&Y{!HC{+4R-f9i_D?_Lk_HrN7+07DB5NiZRF2$K~mk zcaV)nB#h}M%sz(lYhdg^X2%o$s&v>OH5lfHhCkK&dezIjf0eJw-kZwqb3V|IA-C{w zMPEUirp(dhu(?`UU6MgVm5C@S#cdnL8c1qs;~*QUVaTJk2oeU*8URPjIsL!j>t$Gw zBL^Hm&&SKoy%K-)LEV4z?lV8~R36&Wf8UAwKiTQ(zpwmv{QZCb(<#)=tlBq`kg!tY z(zjTgGeiIvM2sm6Eo*zIP5SaCw4J%@Ri;#I=ux3E9X!=g-9UNh#YZBb&6cokwi{o(Ww?ebwU6Ux~L3wHJQ1) zD8Kt3ZW!xL4nl$CatEHi(}Ri(Q_C6YqTm?fB&i^fML^Ox6JK2UpY*+HhSM!4#r1s+5ik26p3 zV;Ij!?mRt6?t7S#T6)rhCY2xYbQ$QEb{=LqB9dVuDUZn!LwHSsM!;OhptN@MfZm&n zU-BV?Okr5ZRv>1zs5KNTLc+ea$fid{8-s_dItS9=3hEU!_=P@06sf5510;ie?k29C zv6Rl%5;vKWM0=?qDr!&!3Z%F_Z;YrjK3n?IzZ|m)Odj2eQjUiE));BspP+1EXP|Q>fV6fzoaCLn@+oxv&zv>_A{hb>_Ya^9n$4I7Bomr@*K{@rP zBA%XNM$W-hecTn&D!`D*9MaUv#s#K^p3*ZstXeR{SX_O77dQ4rxZa^d3~i~~fC9BX zpXL7mW2uXgd1m4pi1#~~mN6f3cJ0us+(={FUKs>e%BH;^Z-O1yo9d3>uEKTkC&vt<}RaJno?l2*;48A6j|TkCi%#!Yh?1;DTreks~9H z1!^l(k3On5dDBlM@?^^X^+i+E)dXdg!&OvCQ&iH&btYEw9a=#b0AK6uu6itbrEN;I z%{bIxfsWrWO-VEq=;GEgjzzmRKnA9uQ{td5sz?Q80gk~TCQ^NAR39t$2OT1 zDFG^DePK%KLa3HEV{iu^)k7*4iFFD90XYEIi6rpNPLso=(kych1TZ+&#(?@0P=AKC z1ZNcL$h*F>7#IK`SwB0YfKc?@_qV%8Ab$*(p%oP)C;B+YmyzoC5H_P4s}yhdpHe^oe!)+-)kWQyKfP== zW`u%jl1QoxH<21>Y2WoaqpIsd=HLZu{!c#XA#DbVDW6e}BNY`NJ|4L0$yH>~0;@HB zNp1uR`BU;726NC4Bx0Tbr~IJDQ{!cAewauqq$;8l5DuzEfp5ps{@aC{LhGPXIFXv4 z@EO$a?EQ$wIe6Yk)J;!(Vo+@Uhi|Qm4X%y zO;|NFtpM&o5x;P0@d^Mbk&n)XqpiBwZTfl>P{yjU7fh17GZ0HP(1u%SKmbAw{{RHv z-XQa*K3(%w%Ik8L3VS0Jr7KF11#`!Rap|72Kb5&&$Cs_u5rmg|Xk>i)6QufAfu(Eb zPK;#*9Xm?Q#Ycz};~Fm}o5mC;!I0AAqmY;W$WjLN0MYaX4| z^*Q5TI*%?LKGQ0Af+-H6$5k=qP6OlRRePDAHsN0~W452LMUMJb)ZY>Y%<# ze=IGpyJgGoE|toiueuP)RUSGy76>G$i^kv>#*`zE#*#07exAl#S2$hR_;B2vP>N(8 z3UNw~1J4w%pFs`RlH%MvS?q}u8~{gd2m=%#kMJKO)o*S7=(VSPhSKkN*jYrO5d%u5&nf&4fXt_uor9)R)V)Mb0M?mHdY zG@yqytBQeI;+%MS<0Sm*E%)Ph&TXr|{@W9s&cTGux*6elYT`jwScO3xle(X@5 z>w9zTDZ6r2oyBL{z(=Vh0Bh-*RAYy)4uzXHI@~CR4Z(H6f*6s*g-9ZU?HKbs2Ug+J zl?OJ|*&{qv@kk?dtB!FhHl?-E71+iK+v;uoFYYhgEiNr(@a`j{t5T$6`aC!jpSR58 zsWuy{S>Q8SI4Z)tYe9@Ie2B*nv#So-vdIlKD(Tcm(10w=ZZ1h0tN{N253l=X;U$nL z_-p4{{LVn2`E*xv7O5m5X^fs9fyuobo_T7GYd><=p&|~hB0NOq(r8SEw}+8 zD_}oAQT=_IrTjMF#EPJfAX63mzvB9&c5f+GlC57eUXst*6x9y?I*t^o1;3~`B--PF z{y)?GkF>40JcJD-f0OL#TWzvL3D5u@pW#33^%Apw(bK^7Qq-6YJ>@bqfdaA(UXX39 zj(WA3F1CxoO)o`(CGkF`Bt2N%TG?J)8^-Yb@tuu4Z*wPX|uI-8zUdM zw@%u^RngOCtG>ymfK^kiM6kg1vg6@!isUo+!h?GQC-M#Oy4p7cL04J)#~#p6&(ro- zsE^z&v_ZY?i*m$4BnGD^gZBO)3F0yjk>EN3_LuW2=}n#3SdN{>(Nt{=4(!9@_oN-? zytcF(vv1@cx|W(;7TTtQI%=lGQb|KI$ZCvEuQ+JVmKXOT*>eTWjii>=w(Q_V;qQp4>(iA`Ri9wtLGd1h#k*Dn4BnkCp!b%){ir zT6WfVt#&5Kqt4>!;>YFo=JTf5+j|t7!)j(J7OsOiw{>mGn^V+G?Ga}HtgtXD4Xh{I z_pWNYfZSNls+k>;sR4%t;7fUAeYnp+P0y1(wz0c5yUx(BAZ+TEQq=w+S*iOgQ;O7K zw+-KP*X9;Hru#vl7tR5Ayh&L@+2rU^W&e-p@zrp{{SHE<}KG^*{u<{ z$11U5L%@PbBkivoeEI=%U&`|#fcYJm?JtZenc3eKcV0IMy}EN3zqWU*3?{Lq#-2+D5xGyuZqm@AlVo*d?@*s}RNARh9UIr14Ya zX~v`F(oS;c`#w|LEbR9QZh}m;4Ga=X;vgy;xdBi?G&P~qLPrzTiDf(Qt~#G`>>BN( z@e>`~zZ^H-BXQ!pHxIaX9Ya#Ir(_DU( znT&%_%Rs`p#X1o?A8K!%jhUeAJ)yR`x%L+7q{Q$2i_{&dE^>Fv?FSTfd7X>=T8fPM4^-#6Y)?#lK?U?k<=5t z?R>S$eAcG(lea6qx3fl!M#e+hH2F4XSVYC*ur+5uH9_rgjB~EQbjvKU^7EdNMb<;&!VmJ zcVp)Iv%R|yW#_2QI-YE_x!fdB*8TN1OK#=VRAX~E`sbyED@{>X^IZ{=tV*R+sUE`H z@<2B!q_hX=WeWO80Mvo0XgGK3pcV2tuR>jor){>?FNim23b6-J?I%g8p>En7it(=w zf+}3SR15w{?^s=;mKo6+CPh=|jZ~{gB$6sBf$T{Bpx`=*g8|xZ@97a85whR@zK$UrNQ2mkx@jb$p%be7@bR+ZipNjP3kOz;)vC*r=ev zc_UG&j!v}=R5C&U0$O4k_appNM-wjt#~x$z^siq1AQFl-R=%Wzx{+`r@W!4;5*W`aNYyP9t zCQQ;XOxB<3;pIYpcxWO{srdVL7Ot|6{e0c~kD5Apo_W$l6R z{1&A=u|xKQkC>$oS6P~XGS;4TAdk#{m!~>vr+Aj5A5pE*?<@jGN`N&f3p_eRRjNqg ztVk!3$Gtv~+GI*8;BiCc$IJ8M$E`+Gpk!*FLB_tFTTj7H=VkMI;KaDx7hd*lUgGNv zeMDxbs{0Wtceh^syp>4x5K!&f+UhK>+chBo*SGSRSqbIDfR#HwGJj(wP>KLXD~~!F zeqh(Fmquga&;jN?e!oBUQ?1QD4*vkcl|CJOj>l4AenH0v#y$HRQc~7rav8I_daky5 zj|36c$GFoSjNDsRo~EW-xXR-aiiJ(3$UTdl$9$UBDbU8}0MO|tI0uK9u6;VOw`K+5 zI*@;wy=)7P&TU@E+qkXKv$s|&c5NJ_0>2Zuc4p$D%kBKdKR!CTOx_Bns*@*3Eys#h zjgQouaP+pxB^poV!=%PXjj@mQf2)sK>9M%_4>^J_6tyx5YIVv=%`Sizp>-ci$)H`Y zaz{7!s9=o(=~@a`2mM*;wq`s}Q_9Z*sPFCVKD!LY5^+b_khU`JO zza!8VX6HD;eY ze$x0g;}XWIhlWr6@H)9^y#;&iUCH&K&=4>i5Mb+qdrEawXa!|aLrp7DLly# ze-Nff96ojFnO#~bh-TJ!@FWvTigyD;_JhZdKnDK+-U@u-Wz?)$r9}+O6uK;pV5k8q zw*kJF7B;uDyGv#&zy_$P%_>GoIN}GH9mHdeIw-uph8X4rr_YB( zo3nR@ichqqnLg$~+6R!C6Iv^?IZ#52pGo5P{MdUFZT6#D$Xi@1okSkvo;4ZM!lTQe z)Y8?6NywB817DU)X~C)OtrP+Wmq0ZJ8XAk#R@PGooyl~Tbw{`!wI!GyTl0JVJ)6yP z$}~e8(MOQ4%pdkTGuioi)?{m)$8v;tj%pe7wkxP)jFUklSv@yOP8@?J`Uxz1)JaOnuXyBz&_a=Fx~{oUup^r{JbRjU=vElx zSe(=mOsO>-aw}2?0h~~E1Dk;)=CQDkfgmuU;sC`4tWbh0oONpCZdemHx_1=t%8Rws z3d3a;nYnT4M1$?4C?jB8HNhHywY`rdQt=@qjufaBAbQsor`hx9foEwXc5wQnVif5V z09Q)n(Q$%SmEvpBE!?>bPCkv+wnRxR%zU*9l}AxCGX%N)A&62~i`afG?U|=Y)dZ5D zMX9eE519FroC8jj#~ZLzh7+h%n!Q_q;Xp8WS5+}lPNsCPbH3Nz7@9175=|7f@tJ0J zW%N9Nqsq$YJq|Bx0N>&{_D*-`MDfHCnQ8G7IM>Wm^7)GNw8XMU;y#6Hnt(|(A2#%* zDZ@BEeOrfY?(9}-n-`g$r6GFFvyTNC)jU!qBylp4>D7Cd{5T`)^!9ouLc&d5$0n6E z)mnaBagcw&RI%%u^owcD2xHoydDJO_$lf+3i8N}OR=FNju03(<$ELMNAw*N9NT3Har9dEYP&<$cSTS}3hyWwse-qYwf4lbU&Ydea>WTYqfh zFc)_Ms;W>8YrJ9CQ#g3Y`~sxuCz1Xp+~KD)^QPg=7m{AzF+~QE#-{;lXee-a{8aMu z4+7!vb+sM-;$=^ z)O!d^F=JBsY61;$jvxd60yvtEgi8{F+A=hdDNK+!DW-Vv^Qh~#+%ZE_6l)_IlM!cdgP}CEgpD!^%<>)ciqY|Tb z0jvt*hs)C~Om#VU5Cw)rA)I+o6=l*b>Wp03hw3KRvvc(J>``h;6`*bvHLs_g zN7`w_B8RF;Sl`2Cs2mM{!Akw0@bbq=nw+7nn2Kf4urbzEO5ClB0yHSn%19sCzxadi z!4;Tc%$2G8K1VhCc=~jw#z@n}VMpQc>Zc5xDfBc`O7sKw7g6jU1Jh;B!tQzMM}_H!(TO=U$vj6IU{blK3UwFnyrU(ovR+w8rXmegp~C+F4RMp_Tvv}n7sIdS zJ-IqQv2Z)mOqN3z1c^&ghsf&wCygYk_-#<1aW0p8-Oa|X1-bSr+;*M2dbb`TsAKrl ziXSfE38DGq4?NeP*3rFPZ1;K!w}5F>BTu2hr9}@CPHR9Z*4RG~K3??Sf9;jY?QHEd zwc;3!Mml+sD`{r>G*iPM4-0A}jxD5d^}o1-b=a=8DX3T_{kNF{t{zz|;`j{cn4FBxzGtkix1* zZD~)oqQ7l^-i$2liDfLON%a^%v-Wfo*Kg?+9p$dpylMpL*QHesf=IYO)9HVDiA;M1T^v%$HEeX=Jx&>>MF;#8hSPuPf9veR zI1v`KI@j0B(~r;jV~0!<%vn)J4r|9hFHi9B=!<-u`Omfb$7@y8eceTUWpCV3;_2v? zMirSTaF2fna9wZ=~6+rvn{u7mid+xEuV;t1@hu}^d!j*SpINw6e7|J7chWR!3aM-`m+|TEE~Fw3}lhCeGmE zs+s4die?QO%cV-%z-TQk?j-t~y2Kr+rZ5|{{45U&A3!QN^&G*zPibf^V}RXB20TY5 z5a4lAtO+cps!8Gi#dr>JMMjRYA00t8h8prUpML;(EL;b0eF` zZ0C#0VJ-L;#$2aVbrpSoh+_#8aZ)?#6*>l|((EG2vhU}^9X zZA>f@!YgU23QruexMCFjSCd;^p3WB%*+VFljU`x&(<6t^ho{@pD~@2@?&D~0VTeai zRK^O?sB2wEE9H}epO^!&J06z>m#U)L-Mid-dXs)t(N*pY7hmm7!HS^VdF(wKQ(^Lg zs-h~0X!A6&xP>K+V|kPWYk)0g+ZIVp-S*b<1Vdaf?eoZ`Y4fQ3xG+Rn=KW+PPic+dpeiZXg96eont_ z;ibjFJ!M4H!YYDvGYIsS0DBi$@|NR0v@&=;H;ACD%&NuI{4HHWQ38}X2L#ukJig%U z`(4zVeB8z%hB;eY3SCTYrjDTkwt@|6DP2|RhL7Sla(en`a+S5vJ1bDqL6YnZp@^ra zN}1ZGJZ?QItLK`Te2!KaL#Q%w`k1j!{?OgXC7SBuc^fT2P?B|^16?A{BO*(RROy1W@KW9j+-OBB#`bJ44iQ{ zpB5*nrKf_mEBsAWj+UMoeDOY;>y3$u_l{eWZdm7@*_Pdj6k@HRl#!*GO)HH`Fw{8} zsOn_p?qyB!Wr^h0Fw~;(2Z*gmBp$1>uX1)5XH-o4Cv0YS1rswC-#vj< zSBAkvtt$~eGK!`@zpg-BwuqozcK-luP+BM|3Y__TBOf9DPLI{x)mdAIAC~|=Rr9Bp z?CTCwq3D?%`y+eSZ#wB63T^xW{_5>YcP7RrjRR!zW<4PQk&{>S_Sv0@__D)*`G1G= z>HQ@~dXVEfMhG$}FS&MaLfY#IR7SMkgQY{Q9C1P#E@sQ|ta={;YJ* z6y7%yLgC$?Q!hR;)&qtYBsEJOAL8YF$qx11ncFxH;z^+tW-B4ZhynuQ;@MykPOzK1H(BUo}513wv3F*>Pe~K zMJRu7_-XU%!G0`%Fn^Rk60@n8=&t799eD%EO;J&|=(1vu5m_xEQ{v3+?1WXjKXg+` zBw#c-8Yv4Y^fEP@+Hco{gBz7lbCT$Bii-Bv`ahZJ;NimSQRhHK2(S4+)sD8X_*wq| z3P|4jrjnBj@9lX<;t`Q{1X>!^nZ3Do>A;%xv_D1spy19JCd7Z74T3nZcIXypf63I&UymGi8`#XZ-E11>dbv~dP)8)}@ zki2KPO*$Rh%w#al6na$hLbjzABZ9`vr~6j5$G2Elw1YxAXULl8tZ>l54v1;sik)IC z;UEhd0_Ofj1REK7jBk*W+1wn;osO&J7allMVb*q_~w#48&SuGRoI(EbO%NC}|R zQPzh^>7|N>LFB29H6lj>XL2->H8L}5RloJUza!lQfel>H9;_Eqnk9N@G?<)LyWPeIAOf=nlU^&gIAIM9~q7nvz2XHuNh-~O42Wv>JL9w2TuTM z_TWYmmS$aaq2p8jlu%cP5AyVyMUFo8C&Q>D;+3Zw@i`R$SBDU3(gQ1-F}$8i^M7jX;dTZ`I#g50@!^l3ulf2%EU6lg4oy*lY5}LlKmksg zo&}GYq2tg&o!w?A<)}{%qI_kVM$q6!3{fM-uFA@VuA~q3zaZ8%I^SHCT!2|Zf%Xd2 z;-FWJc=TU&aU3E!C#WQf9f5Z& zx}uDhW5)y8&Af5N2$ohs640EIPn9d0;)aC$snKPI-*?PAq!t@&P2a`ztxYosP_K=YnI+YNGm`pDhJt+#eD15CQwurlTWKjCgGHSV(1Nzq~C*Y>F(f~ zkVSvho|t&l#=2zExzCs%gtFHsPo@dL=wj&|rzYgw)wQNQbo+XVYCu&oE7jDru+xKW zAZbG*=_KDz*VvDjcIUmgc~sFOQb{6%<}3DphcxJ)bC*O92?Mx*JB=}3KQB;!Y3Stb zO}|qHYactVwOZl|bh3obFU8Cc;(S8rW499#h4 zeyPAyXFi1dalz%}@EbKTS5R#DeWxhWooo_WgD!0a^KT-2+}aOzQ& zKwzVSm$?3(*tGFlND4_nNhW}bQ|;kS2AoHwdf$kP6w4Nn;DbZ!<*T>i^cf<)lD6iZ+Sa(O9WV2?+>Ti{AWc2k=e(on6Sv%cDsYui+#QDp2DUrV217Zt!gu#(Vq4jsc$_NX=`K-jtxh^2bJYyJyx*;91(VvlIAgLDTajRM5A| zl;BTSAJpAtzwvuw8hyng(aBdOG}BUs^34os5&|T7H7}Km6*o7q{+{A)WcR(2IkxUy zN|8`yYV`FD!ZY^w}SmIjH zF07jH@~O@VsHg1e1y(7H`pSBxkzJT8A63qs3t|~%Zb3J-y_YogP^Ez_#-^YiI5nny z2(Qnh1y$0|pqQ�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≻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 z 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�q(rwc}X=PcE3)9F7F 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 @b7O1 zsz7S_yebW+CX7K6lOx&uwA7Y=>-y=h!llH{M~0Ti%pZm7>c)j$*JW&KAd7odgvl;&Y#uex!v|Bq$iCIkFJ}EWEm2u zqYwXsqVo)EV*9$d_u5cI1Sv{YnobJK@td3r3DDm1myqb{X8G$nP+CsIeYE3ew#}?QNjLJ(zoW&?;F_+$T{1N zmUc+Mxo@A(%P86?8*~W|+dgXMHB{m~q|Wv*M1|@qf{+zz#c-wXwVp2-vx9$eyp(7# z@E4paO}9=2^+j>oO)Xvj_Ekc7u1VYGf?uY0yW7ymdH@@}rA|m}T&+83=z7=l++SVR zrsDFeiVF*OODi54XUjs3rqSw(=yp}0cqgs%gsBa>34r@T23(kPsS~_ZK37l78y~9crfSOD_>^hRp ze>yC4NDXM6Q1rcFkOrc?dDZB8E%3hH$j`(MC8B4L?q{5`;oR5KC~)8?xIIt)(Oq}Y z4SSPe`QgxqsW)YUjsb*_N!~uC8~xiseF$$Y(Py(OWY_^d=hV**vUcxjl-fV1FCWZ+ zC1#Z4E=dnY@qWpUg8@x7%X&ldEeho1N>Yk2>6uE~WiRHZ^QZuawaFj?ezfP#kmnsC ztV4PBDvhosQ#--fT7qLDO~7pF@%8o$b}>P(3t_ZI+Ioh=k}l-TPhmN~7N<}7+zEG4 zIC-e~wNEN#Lz*-nT*uiKbcu5S`(;n*P=4lnCjm#&{mVh$E7=t@p>4SE$D$V~*LM4J z`toP;lo3c)7@)p>@It`N&FW0>zU zub5YJ=IECY8!9m|b6(wm=Az*{BWZ-mf&0Oqfm<@oLZ*pzF#vWs-ujx6epwB`KLz1~<<3S{jE}90qP)#E|M28(Nd>U@EKio3~=AB*WO{ zyF##A_gh*BnLX|z*V;!vuotxuxUbstSpd*Kz_C6{dJ~VLor33{(zRKOjj3Em%+#rX6byJs2wMXvJV$ z7eVWWCxxlco30&n?!E6Wk{1@JduLMHAg^Fxzp%~$-nvf7p5L4+zc<|@f;U`h&7KeW zdk8#1oM<-80zRMXS9-g(r^GvW0XwhrxX0*NAm5FvX4X#Tlh_ikRqTzrmlK6|7nO+! z0k z;A3WK#sLz2q}YC?<1Y2Ygb>r$f`jlk;uCKG9P~r}?hT_$1`4c}8oWs%PGsVuG@|hq zN|}f9&!C4neU>YN7vOXaNo<>aWCP*_xo>gufyVWjr>xfOL|OX=o`jT{ekWuBr&0~nUqa&&7;vy2cE%=jx`LSNmN`KR^V*Tep^|^n$TrUmuHr_4!++dC5wqA0_e$K#hk|>11Pc{fl0N-||Rj zQDuV{2Obc3yDiIJdqmI-aL!CA|9HS?DtnsW>deFconaPn8X|*fGX-xt^JHB@?7mJ8 z=}w50&yyH;CDWqs^(P8EOpG6XGWSNow)a%LVfzFRs|*f((m+NX!(K+G2PXzi1RUol zxI(~2?9J;_!rc9cwZ4!>{EQEHu&4g|Tqid%vXU|72=Wbum%T-XMuxy(UaoC8e8NIY zEa{}3{s%|ABFI}S@0FyIa~=N=BiTP;vS-Q!t+L=_XJYQ)KsBXrg%f70Mn$l5+n+Jb`An~B-*aLyl*bkBv(H-KWwiTXmln0RNGQCY!6S0VPeN3)&r0eNyC6%LbYBUr#lb}(Ql3RVe(U+L9Xu^C3X zXtv>2x}@ZWGP1;;A>K6vTi8pH_u`SYyV;}|Rw0wdkcYFMo1>{STOJ2=O_>*bc8()5 zGWP^`!;-i@*4QBf2IZ=%%ZI61_<-$o>i#T6K0{|)^*Z@zSl_78vP@QC*S=dQcQU+W zceYD!+sc{d)^*^Jei-$$Cz6LWKL7@WieLA#$*%uIRB6&HaIZYH`2{XKWh0w1ObH2$ zjb623o_`>#qMWCkO3E-NVO{CNzp7>#G}`LU;iTpE&!hl^?x;muEWlL9W1yR6(=gr-L9)R3^H0 zHk{`VPq6yw6H&99&;SM{e&Q}kIy9FJdPfVJ(L$8}PrXE{C-j;z} z1BM}gJQe}nYko7sR|^r(pS^AuJiSam)@yU{JEZq?sBgz?;51|QJ1@kD<+5Z3y1R$I zG3;&=I<|@3#OeaqKXtq7mug?S9$&))Ri9YcJE@#{qJ6Yw=QuS;%N{I1Z@I>Es2b@y z$2~_!Kvo<6;7iw;FC^*QO~B9hfTi7{_NiN1spy}{wRY293BHxMdIhcsob%M=Go1{m zGKbCYe+AMW?b z^b*7St;xzWvw|150L@+{iRKDoZZ|DN0(RbATjQ4AwV`T;qf-iq*nc%+ORnVPp^3H0 zWAvn|>>D1Q7AaEHYX%nQbKW%MzH>gBOsbN#sJLN7Gy2?tc398qi+H_`7+-R2b~_uL z83HwVpYv;&0d+#_sg|AYMn0kaJQ3*Z&ZgnxnJQ*)axzwqB8vDKZzF5N49RY+3nhLC zre`R?ttZbW*B4$+o9R8U6>_S8)i?s?yZCe;1J#FFLCKvzaGjWn1lpSTxkLH6`W}E{ zNd4(>kbkLnhY}UB`wYg~eV{o6QgF&-?HN}6s>J$L`o z{%`Zj_ig`rzPv4P?-7C+-5Zb_IHYgy_!Us37cb+ON=g==E^{)}dSV)b=qI!HYGLz)SlFU0lN)Ro7Oe*sIk zi|$r-Yc6kkU^1VBy;`Mk!SnAK^x?nSq+NFM90_v31nZOZ6wG6_T=mPE^?X+Y_8JsQdCZv&u}$>lgt|BrrFRTi}^)uxt#jmro+qHYF9cbhc1 zR%ZI~_Kh9JNfmoOb|7d8fz^7)1c&R|sluCoIA`CWJ~Sx>^?H?FyIg&y~CXvoqk3^e8EfnR6sDw@K2O90K z(QKR8G6!P@x@v3F@YeTl)zl|Of)PPnfoxr9_O)-Bdy<^4Ofo|+PGye-*r z_(cHyF@kLyQ+%T4EZj;K9r5Wf`tAz5Y2L05Jskh>a0`p@W{AR}9nFL`YAHpPQ`k25 z$+(Y8D&4#}?i(Ssudd<}A9WbP-}Cf9`M+^Fqwj%{7+tnHd!QK<8zAZiByD(N$+s!> z%uS!R+=`HJl_?+7c49xHyXif(UJHGBiJ z`zjUP;$2AnH6>nR1{iXaT8fYHz?yzsP%Uv<_eI>PfM)zMFq>;dIBXe=m259pa54Xs zt+s!hdV-rw>j~BN%{BUn7hutJO2xlhI8BGA-OhiO4YVV^;@TS{YmH-?q{mrV>*g}^UFUYXHJnpPnX2k*>2`Bfa=_`9ADEshP=+#&TmY5em3 zu&@V84O6cQ##@sVX+wTBpox@|vF66TJAcY#f z1H3v@MA~Vw$`N_Z@#L@V{gg=Y1SR%Y$PFhD(=Zqk;sk*B)3*PMv(HXp&layYMP3QQ zr9YbItcA>|WOSXKX7sZJf606J_4gOZ1)Gra>#uqmUA0U<^p=M@DK8)9(BM$}-5ak} z?wKIhHG=WLeqEZm`Eo`S$zmx^c`4A;k=nX6R@y13{Z}d1b%zP;G5TUJO`EHf-XCYd z63t4@N2*-Uw`px=i+0F8>z%s!)>aq43`jfeFRsQuRj!}~?zdrjD4D9D`KhgdSsrIm z3oh5&+#=}FG@HwXXQ__#^ zi5^_8G!=g*sZCF%k-nCFpLiioN=$NGGJ`2#lRaJo&9!vzThyECzF4?sZs#zN5GM6S zDw|r!PklkX-6T|A;9F`|;zhXE(D-CrMWYmtFrscks&vV(miIxowfg@yFfS4H9bRcM zvVQeFUggi)19RWk_Oeb_%XCxxMi~e=;;OfOLFCKI{&KMcn3aFx+ws<4@@UIO>?X~Y z`m^%U@ngm+ZEukVprWf+a%}c_oerJmNo30?uiaxyDWN{>bQ8l{t;t*6G6|j!wXn|% zR``6)5OM9k_`RmX^#v_}?$0MT)3?A748Q!x_l)$HZJ)cAU&9MYqS;L`TJIDruWKn$19v^>NZ)I ztHRWNny%Y=d`yRzti1k~%SxB$P_i^7*D88I#;?z^mqyG)$9Rx*%|D1`MUP`^VmeWQ zikCf~oK1e*l2!6NAzySWc{4!is<)6pF{)ge$=vH33ij{m2d$!nbEO+wCa~ckUle(3 zON^s+ZCn@XKI=iB#7tC)9) z6*JRjTfD-M+fGT%@eM`P9`>(;(uub^$BD7|R{}L{KHN$BG``tE@!4>KT0>dBmkmQ; zQLLtR%v(Dbs#t+>T+fimbgE6o&2}ktTfL~X6vlSfh~jq1$P)do&24z=Vbxv65K$f< z8erB!4Mxu46Sj(a^Y%+zwe{z1LY^AA2#QG zgL@%gmKTaYZ0opk*wbtC?C>o(JzROYf0J%cMzxzg!6h9VTgR@HS5?hAF!ZnCFzw@; zPDb}&+kL88)rQDGvSWTwJ+$#pS-=g??0w`}75fSkSi4U59- z_i9W_NHtdBc;%UXYK|PjX^muqx2$Y@5S&VWN)3ygm*tc6=$auvz+jX&oOS+;f@y?J!{Lu+jT!WXjVhQ+WY{F+ONW&%Bu?h4lMFi|u72^;R zhe^tMsL!c{>awj+6|?&25UsOr5(s3N?gu^j8T0ZoJCq=ARXd+q4YW>{IvP$l%T|X1 zUhGqtC@y&uN}UQoaVYW%TS^CA+N|4S>h%bidlm9i!fZrfc`6Rm+cPxSn7*6N$aV0| z5TBpFm?hV~#!m>QwCSDiuPSH%JG7iQ3|N`QV6Ynn&SO}u(Ah(FZ~wEoiv62ooU#U@+>k1H3FWrHRG^ta*|DN?id)MhA7gwb^~bD@rp7Q{LhRvemtNtJJ6mgC^7(x(&vKmx{C(|W`I z@7V^HF_WK9D59luHInD#_JZEc?^6R}(S*VpMD-L1^*KhUX{DE4GcOZtxZwO#2B?3A zCvq)@8!(QNazp6f`HRVAwt0gc_Nq6gwgA$oaIoyc7nDysR-@0a?50(;QaR2dC~yj5 zSlv-E(IGe6rXb7G?RLK+Z0wk6j9>Ca;jBDvrk)5Gw!kUQzxvv=z8W~s zeZ~8=%FzqjepdO+Z=n~wJ$2{uEw^{G`<(W6r+%I%aeQtT*!lbsX5OoRQ`aQ;gXv{C zWp7}WlbSbh2Ul1HoC+^1FR)8?;_VRocqhKcI>i|l+;8H<)b!2F#1I_oA%MD<-p*Gs zL}^S?Mt&PxXt+2L5{@~%eARKglobFR}5J;r_B(;RUn4Rt@@DMrI1 z@qcTSZR;gVwRd2*H;D7}5ai^>*vg>v#8eCUQ}*T>90KeZk%;{^l@7cE^O4A-`NzMp zbi{7;il6sZUqyS(z8Jqfp|J7fl-T^vs#C3xtFTzb;Zf?&(12q*4&R1rAcT4;0C=M7 zeUdm*3d&B*zHDditmJ8{Ge1Kez9ttssvXr5pzZqw3YK< z@b+w;fu-6=i1GE@xqF-HRZb;9EL73jBmbRx1 zAOxSG95OMGh-w$wSst1fz33GC^Q%!CMNFeSaZDjy00(N#%%xd9S;$?Ol?pvK?sH=l zuP-d(9eqdKb7M{nu5}l!w55mn1I<5fleH|4u`o49o7AOzBL!q&7iSKDtX%FLJE&A6m*FYgG^nKmfR;CmOE8VVW1 zGOyggepPJ4+DoMG`AD{6(&o;e_DEA+d`c_s{qbL-ow)2U_`O%KU_awB%XMI`p7;Ay zunENhTbMR4{KRL8BGHbwKR;6MH~#y8$NBpC_JZ!x?6p{TKWMi1nh%z3|LKZEz19ZK zq1}3HqC#b3CK`!VgZtmL)BMYT*P0WSF!%o>kA_@^+N}ZiGyvY?i3@ z3J?PP+fqqDKsm9<%lf66gt0>XIrglt(h>LIk;G2I;5qI`adTVoC~7EYXt7o?D1XM} zoIs(_xLcycpkhNEwAKcQ;`{3-RO{)G884tWS$k<9wTtyYzu_&Y@rw{~v+Cs}53v5> z=}62=PoPVJ803X5Y=j(Q0rZz};p*u7WnM$nHfMnb2%8Nef*rEW5W^@xoBa*x&k#Dt zTog^qi~6M0HpTTBsSVBdNHU$@3gC1=m5xvLmU~rlZiY?+8PK*o3ihe{Yr(5OUQJeM zqVAJoT4cxHsl#z)cL6Pd$T>L3?w}~%ndd}(u3Z8u-hFzTj8ug{a(9Q<3ncE=)$VB^ zUcSk&$*{g}98?J%eznt!11$?nN2{p&8VEhq)t%4=ql2^DfIeG37E8Cy*(P>cNxoo^X5i2Ora0xmESe(V(iI?Yi!NY&&M?@RfmV~h`N?}P-+=9 zK`n1X-4!M^QKj_=?``i%+YLgr;0|ZJfXe-RPW6xU(W>g7;eGwbUUMN(zEKRtVIY31 zBFFSgQxgSnB3TXI*MV5PStRdy-O0W2;YWvDlRh%|*>VMXxUJ&5b4DpvLxA@7*WEYh!r_ zpNd6wj-@u3)sa#K%*foVxuUc2J_uA2+S2lkM6{G`!`i{6$`Q0m3_@{Bg9|2dPs-(% zCEuF^6UTU9fuEMAM6F8-{Ns4=(bL}4PuctrE?;)G2~+Z6GhDzsxlEgF-*4!sL1XACZTj|&%bji{$c7ogkz z89+r|SHN4+OAJh^&g}Wag`lyy0WVm(8GyY!Ltm)}-XNrO*>ZWHu}^lt@H#@*DCf0w zb#&5!oaADq-oup2YU8PK#Drf;dMMPeJZ}{~8!pgZM42lywMMH8a$rLTr3&-Z!^QBp zRrr)Zz>GSGi>f|mO>;23{t3s8)2PBLQ|!h2%09@eKmY?#59ZOQ~~b z?ZBhZ5@^rmr1)&3T$gM&4zEJ1%uPMO zdgS%E7;SLbp;PFL>w?pS3YRKVaTBTNnq)x6-t-h0H&8WeVxOhmb)wZRW8YkLYe^}2 zcizgZF3ey|8}QkzZVEc>;IM)N0w}oo{-f2;o!K0>6T6g(69v@oTvrxQOx)2NKBwZ>G1O8-dI>QcynL`eoeb^my#Q)^{bY(=Mh@_ zkxYVT#T0!|>VS%4b)Co6pUrB42fsDAY4RlFrSW^I!>j6Y?{eB~S-<-BHEoJf6>Hb+ z|KvaG_%fD!mWXX_0Y8O6OP!wDa(hjx;c_euNZs#Co%Fv34SuN=`#Uqse(0TEQ>&>j zf+mY6O}@5g^AB4a20ySa@cJa0@pz~GJP_e~L1&LWKJ^r<0Yf(SjuxC)HYNVmjBhWW z$NZ21BvwgCW7fs~R`B_y!}_->sQK(@RLCZ0_T{VYor$VCYF>q$@^P`iu-r|i!YTQ$ zm@En6E)P)>-P-@zUgmvuqfzqsh7@;_LYUg z+lRbQ$sI+vJ3?!}_p*M!nuc`zwhB>eIJy#vxlo39ek$I){jEYTA%BoCzI)ud`u}A@ z`Hq0BqQk@$pmZBA7Go>u!?hqUm*tsyYsFKZPA;~*BxszUZXJ^Eo7iY!ZewPX-ioXL zZC5o9qm*4n5AmcEtjqXyaEE1NtDNcZobs7q<7bzAYwhj7QinzMGwA)@fyzKB2`cRu zxE-&rJp8aFRUJ!I8?Z&0PE6)${^=XVxMc)xh8ZZ|1jSH$b6BD(%ce?R<>joIN7Y?Ts|1KZlZeWHF} zZ8-l!*g8nkU)T=VM)6$c*J2&`7FO{!n_3Q9K<%&79d zga{-A$b8dy(MrHHy>Y>Zd{k}k^1Zp*XIol6Bj(Q0t-XEvD`Vz01hlewe8YNx9Q~=7 z-_{N{+g*Qm=Jk};J~^VOR&y^kIzb^X4M%_t12BRA)Mr$DW%Zm3qNacGLT(D24?<;r z^>dO~d)2s_ho0C^+;&>2x){r}0p+80?^O~oJU-7*cgsCyw5B6=G5wKQC5H&p3pBJ>1bov|B; zotNj-z|g--M4c{AQRmzfczgVCc2S>!x^lkKxa&**g$u zqzBudQ|91QI`8K4vXMvnza3ptgU^%%T}y6$8a_l5spq3AiB(i}@!`iuxkj>w|H|?i zLF!E{7cjeHTBT(&L6_sDURbO4dPm5IQnQav#ji;54}4}N3a|Asok z%N_V4RpaT7eRGtClf-wnCnt`f(#8ruNKzneau#iH^Lv9U9Ms-j7JXpa))f0~T&b?k zEfJEC)TO$ZBBYXL7Iy3YttM-qT$6jCd_+dztN|WJSfwmx-)^(A$TBwU2bYkD{jSzx^%;6%qe-*tRR^?IBlkx< z{dNcp5&1D9oJ^(cwHrOhlp495u>5X9+0xQe&uz5e|{3$=G5*- zh}dV$5E@=!S}HV{BkYbmiWfB06+EBFsRr|jkn zEAM|k)oWObbP?2i&Atxuefh#V_DJXSPV29R!7##0@ucgtEBBBZuI z_<}T({ouc#+|31lS#oLC)uXf>e!b!wO z$#qwf{{Ee4?h@3^E1GM{Z*OEXG|m2;fJrU7RxN=~@}{Kkr=ag1drUlhrhne!dGxyv zwosEnwFO-(EHW3sUwAO({jE);5`K9&+XB{SWvWeA3d)sV4>)jgi~jVlr9-;aExs(* zqL2Z(OE#|$I!Q_{t#(PKmM1PAor*?|K*dkQ zxs|pe9ex)UO{_$YHV3S9wk|EQxl}3<8&m9PGC*6n!hS7qhaC+akVC5cb~8Th8bdgn z0wadS^HRj>()C~6j_z49>(FbQ9!)keG(-OH%sDy*fyN%Ea4*dEasu@GY_?$sLIr&t zNhm&=2=e+Yj8Mw6eq%zxJ^1;KTlR}kk0^n6BVH|s?7PnW?@YHa*)g|Rsqavs(*5~WVUWn{hd^wlL@1B1dqANOmV_uv|7Ir7Ok3xjVlU5zE$-$4 zopEDB!Hp>o<+RF+F&_?S9nAc^g*!#@?~xOM17lTS)0jZ zhtN1y)D_ao$<6Kj_;06y2W=U2g;%x3*1o@?bE6_~+Clu5%8X@ygcM1y(Pz^gOTZnj z>c#C9TzVlZJ%ZPN+R@P>hzPx`eGc{{N6-B|O)uLBrENdodG*ka)v>C??3R0)RC5bBc(chmbhZyrtq*o=6enCwK zCa?UesEtf>xYXP=v}R(WO^_iL7cTKc7lY*MxgY1G-a`YvOS_L$+w$R7*;NKySDsDm+&zv7jv$Mq zK_CvpD&^mnXQUpeFD)0a<_An&x8`T#k7iOTW7h;Sp!hK|^U@`|r39OB(=}n1#&yY3 zwJnj5SWB6iy;U*(KjjG8Zxlqwwih=^BA6ajv4ne%meJuz1&f*lhn)@B_D!;jJpfa( zv}17n-kH5`9igV?F?LJ-F*gkRE52k}EPCG$dK>+*mOil_iVgo#Qn<7$LmOV7Oac>7 z6S6(I%?uy~29=sedwR;N*60?p%r+)i>0AApOf>$#qSQjk2DXNY6k~^lFL}gl|LP$q zzMV(wYDDyCjGbJZ=jJUh3tjHvJIKj7Pzy|3vozDBP2;==q9QItPzlC~MLkFFV!|HH z&D^m`r}nU`+dSp(>)Ao0D(Znk3FejTF%4aUXY3gEADDIBGk_f0?c|ESLXkh8PMmRD zJstO1;(ejuv&_6Q^g#3pKdZuV+jf7y0G>bMH3pj^Z%H?|CPQU&K=>3=fcO>{n=OhemX3d}`nep&V6RYjXx z9jAHW9JqV$VzipiQx0V0tM>G`9L`fvAC_C3zX)geUTGM(mM7r8W41gS6LAkZO<&EK zbiQ^HEHj}jzDq5B@E$jD{5ElPMT$dF zqZLXFvq|e4U%-`Gy1L&G^Vt$^_}~MBoB2OFFOl8T+O|X)PstkJ_DR)vSEPA^lh1U3yeGeW*uYV*j&B6O9Fd4yA zsw=2Nms7BBDzwv9AN=D^$l}?@->Eq<%$VE#`4lp&gnvr)hpvrFnJpSe#I7-heul(lCDSu%9mfMHkCrwNeZ>zBlK z{=4MkbT9ea&YR}DZaYQ&$V8$3-1(aZIbg+<{TBp}1nm~~2KS+Vd-d}}8}(F;Uc>n| z-^CF}iLf7NKbP&pk5AX`Qt~QPWsglg;blG$sCr39_0J;BS=)n_1=IaRAK7wrczp@X zd3)yjaY=8akka!GK{D}t=Jou_^tGvgV?K{4s>~aHnuZgostq4&@Nrm0St_H!!~gd3 zXkWN`-+oTsxvl3T0bhMi24@f`2-IR(J{oS2%@jAoq)FUibD2gG;boj+zi*uSuXPGw zkk_2Q!^9*hTbN@nm7q3Us+LOj@v+U3L0_-Xzgg#-vjBN_Nf+%GfzT;M$q{4Y$A=-( z(?J9l%QgWcT=DmG{yyEN;13*|1H$``< z-k>k@>vYIlAQU}^1xvF^H?rzNJ|xq#z|W%LlYWUyh{wv{IuAUy zM20qrY+ZqA>wKm&I2Ksy37A>#QPJ2M?e)+Q{?hSbk*BK)JOh2yPy2YGe@HnmZSaAt zr(e#|Mt*by>*RL!TtW#M-CQ}&xlm}6Z}%9n30&-!_JT^cjesKt@T5%pi! zCqFfB~s@({vx0hGv)2jn3zYOiDZ%aCfBI2*rN!>b>EeefhSQ4C^3eA2b@pZK^5 zAorgdp$}7PputK#IHw0>^Q{w=_+=DdY2_AJeB9Cdc*Xz(T`~ z0v9wI?3W(Ks?(}p^@Vz0^_HjU!my~DT5A&+sOm9sW!%|jxe6?cm4!~RgP{lZS_iXG z!JNb8bsMtVHYF$MlEUas5=uD9+HTCmfi}_0ET1-V^&;6O($*M8ao!4~F1aVQ!=;C{ zhmwvH3a4~me#}%5ORlx|WgV?S?W5wNFSrL>*XHT#xknj0bz=exkoxjK1$XwZw08W;K?L%k5s>jZp}{^w2F^Hhyb zE!X%HrUZ=7OxO@td;W5;DtT%0(VfFOS;xciEs@2P!I??XtbZE7JgZ)rx+r|8iz5BHBM-fOph@fTz*V7Y(s z^jS8OR6u)U0R@8A6HYqPNS|92G+IUUkxvJ8yG!-s{Q5JSR+;nadajv9fBmyfPD~^3IYE`>9}c=V%wRs-_8eU6CTXqxqSjM^;@8Ht zA1;6;AuPRk%#1&Xr0P}Cgq!%p3T%?6ugR+)Atv{^=BJ>5)3jn*I~o(zg%Ar(kct+( zHmb3#tG3p0Y1<%zhm{lCX2}lS*L3p0XgX|N;x>7gkBlK29XzEhX!ahXLTjcJU4z}O zE%r!O{c_7JYrVLSJTJ=K|Jw9j^PF%Wb0k<_(w~z&F}G9i}Gs!b)IWOE^rIluUWup54$yNNc8`-@`(qcq#X%F0_L;x_pBR!lDsB%_m1#`Ri<=z`bCQC8>lBNcn_s zZ;c(bY{O&PyhxOu%2KfJeoW9u-2;=2Qr3kOxG$`9%FAIO)uW}g0TT^e5OzHf$cu^A z%+3iacc35MOzEvZNBUDT*alQ#U1>Dd`YUg#INz%NG1jbhJXKDlup1>$O7e3|>7HH( z%2%jOw4kT+LQK_E4V<(;aqMSp5W2+ zc|}vVzWPKJGa*U1_yp|nJ1o>yl|HUBP~cet@p71neqBvBQgn~f(#Vy--uKC~k%l`Q z*8b#j$We2NEqe$w3J$V2QTD#k2d9Uu{UAD>D+;KwI z6s^hkv#}`)sOpow_mCNBy}K@mx3xUp59t3 z+KzivZCWFWk1eHCWNW23(LnKS`9vcK=#q~h7${j}7P~To9?0?TA{52w@nJ@VgPrI- zVzNT+qbY47FFC%DBD%a&q^IANFo1s9`|Rw)7dlZy-L{D+J=6!UZ0dUbOEQfaDR_D{ zxZdFY%B)DF=W3lxd+Qj63HCV&5AkrpQ20OLa!eb>&_5^8nL+I$qlHfbUpqce4Qk6OPpUdhn3h^~;GoRk9sUKEZ=6p;hvI?a1-f zK4-T+b5jJM}V$ZtLSz^VZuw!Q{Yrmv& z^|hmehzadEW*qS&?{sq>G7*`kAQf{uR+pXT_~PpV%$%&=$AP(VwM2msLve^oDiG+~ z{jMsXD^lGi@CA_h5?R`u&(ocJvknyU&)3@X!LxmlJck3;<0_(heMMYFJwXnU37?bn z+bL!VG^n0^ODsGz3CTTEU~<=G0;R+W=o>r!=a~!!?lqS;S8|8k#?R_}1X9C~19thY z>GML3Xez#(lgg!Ew4V`mdW&GGYW_&=r^>8{9yS+mQbvAVRFL61SzSZCGSa%(s>*>$c#+|0RN~d8g=Wi-(?OCtM*q7I96yfU~D*-jGJ^6<< z8xyAFi7La#i5rtpE10RhgjP}xMn0%c`aQg&6x+SM4Z@)@dwQsQS!4(IQbvL+>zS0K|ic+Cb zLFU8swvt|~dIc77z4Y^bKj}$wbctL1 z;Y0~!&6cg4W7f^M4ty@~IDwcf&Vv2R$ zu7Sga=OTH79po=;e`Je%b*M6oRa@QxbW%}hoN3EhJ_Ut1ou6e#%V%G}{K_s}e#j`| zH9HU1JdCGg__j%uP79B#BPK{@;ne((!+$08^^q4B6QlX^{&yxPqt&Mr=SbAG*=n3V zIn4hrLal8(>`3?HR#2$#XS%*S+I~98sx6ATdIO~RJ$;7B!;@{B`{4tfQ_`?ee_pdJ zE-4^4VC$^YD&c1=w!rckc^A~8dZW&U!5sHda?1`uSQn(?CT-MK5Kjc}YjcRUQ3qD) zfu z)$K)YNgC9+`0%YIX;1Hp9dt!dOo`lPSOs(4p<62d`8;dWF-9ZxSTtsP-gl&p+q2ae~?(*&lj`G6(EwD>s8}Ey$BbIo)t%xB|hncz*WU z)QVaZ389JrPFM&aOgP&g-w8&t`H1!a$A3o34J;jRR@{7*dO7RiB=OY^RiKgePmAg# z)A41@!;nQvnY5S{eF^q|6rG1Z+w0%P&*^SewQ7~3tyR0N)taZnOhZvKM%9dn)DD7E zwP$NY8>>p}P$WhK#|TBOM2y%`)Ch^0TE8dHACT88>%PDDeSNO$eK}CWu3e03EL1AH zwDiT&DYbJn!#O7Ns+RT9i)pBM`F${0qbhr?8rEMO%ltjIVm77%I9f$Khe1_}tj1gK zlQGIYP4J?R6FqJymC?FKy<(L+9S+vNk~42NV*(5dt7DEeq~a?BtW|Ek#&t;3|Z~xz44CAed#rAh>hY}n> z%TL8!%DmD;ON}>$dr!S;Z08Cp1D^_yETY^VxKY0GLpeLTV_si<5U#Ju42rBhtVL%z zudih0lr?o;{7_m}@px8ytf=r}(9fncu+8sXldamJbMP(U#{k}c3o;j6MQMu<{q5bg z{#c5n=cL;^OG}GyK?QXTlAv7RZ(C`z5mrx|y zq?DmM!+rN;zK#{fxVW&>qr(OVxwU=B6KQ(?zF|Co^O_Ft`q+L|t9k4wL09AHe%i&K zz)$BEvd*eFovPNy^HQqf@Ty73SAeU4uO1H9Nmp;wpOq7x3>Tf=)Dz%uwx%@j-Nqp{ zG+mZ5jXoRSCgN`{{fd#|)yu%bEH(Dw!9C!9`D3HZ z4BX_->takmRYM?kykX(|L05Is!4BMMcPKhfKCZ_(lxA-xTg|l|6m&>nmPdSj9&u(s zP+#bW0(~B!oBQ#SwSn`cCqt8L{3-1qc7bW!R*sNieW?b}B5nXB_R!<+kDc7Jascow zRW-lgclv&83_Q#ci14Y``AlnbCpmfF}xZ1h(M z1@o!i*1am1V5so(ud`>kQu6LKBKcBvk;{8xaltD_pXe{XSW|;-x6MipoI?eQG8Y5l zXRLql3^)qZ3HIt~>HzD>MgnVT8Bq7iu$b~AEG-j1@g>)@HXLIPNRSNPT5oc`}H#Mrd&$G znck0I8>_S1JRD=%M6@L#v*(&ftpdl-nG(n^PUW?$RQ^a@p{x7SoQ(+hwm89%q%`jBluxF&BGKqw?+-q7k*{m7ahuS}()T6nx5&Af$ayK8y7&40dr6 z>K_a)BZM)ztYRRaisx_yBc8gx28EqVKVzg9(+*W`)D}g`dWgAQQ2pz|?fYx+wvxybaBl)9{FdYd|$w8}DjJarhgS z`Fv0hC}KlP#_@d{pCa@bfwmmREhL3)B*ah+{Xe7m&rEH2Sw3H}>)w__J6}(XP9Cpk z@4)|RtHTw|n&ZQT5Kn87hno>}4Oa$zlxoLU?`!@1vd3m|*fSExgi9{$N)`(IS7UsV zsZ)6SSh)BaO0o=E2+y#yo%8hZJn!$)(16^rMD-i1m)4MWS=F2aGyT@*KR&qm??C)7>2myUp-4s~DjvuvD;K2~`)5kV*PR=Z`X7&Usd1wM4- zsx`CEMek_)PjHJ@w>;L}OqtNy4 zwhJ_nJTmV1+CFhYpn131BgBNjsG z+QWZJYaDtCWv#Po;}8RIegvvdi!4d->>Du# zmV+HbRmrpc=9gH&PG(xQi8ispP#achT4K73+^qDfM8+%Ar;lfBjy=lDsf4>3fBi>w ziM()0YT(z0cCEt^N4IHKeV=S%T-yS74NL*-JR=p0d68VJXZM45KlX8d^t`GMk(YAX zO#9zozrR%NkFS3Y3mms#m$J>JpZwFue>}9#?*B0s``=&v2zG%VW-ECQ@>zUzZ4d3LCYNPKg8|IEF8S$iy713T7 z@y1gfIxti9?Npl4KRLS^h)fJ!_8?1s--cxIzxr{&$MvlzAn5#m(mv3orHWnm4pD}2 zTcY;0(duK9`K`FQtEa*}&YI(vbBw692Vdl2UyuAP$*Tva68WzPGu~OMJF`=cf8_S> z>26PE{#_BoaNi$eMO6H*7m+xrKs=#2o?VTY+)2Hr(|MxP^_>k0Xsp(pYKC!wch17#!hKZa?&-zNMBN-N980l=-}fKbJ!O zf5uEW0>lh#Q#pufm4iF%bZ�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%0DQ^B{D&hbLV#Cn9d--{FC-gnm~6fat$h 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 z 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%0Ap4m(v9HTb&@KV1*{;isE0cp;@C>zgj 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 z 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

Q&-BlDg54o;S2V2z+s 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®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ý~mFLovz4^VbqTqR-ep{5k;-WLkBn_4~I`O>%;lb$MjjH z*3z`i5eD_B?TCl$B%^%PaLmI|vj*x&IL$Lhk{d%zc(+&xo${L32ZO9>4dSZ#m`W%~ zSEP`RASx{$om-w0Ifsi}$q7$SiQ=z#6ksi?#zW@J9Vm^6hA6A0w{}Mltap@8tI(z;{_z0JqMTn z`c8GFox3B@;CK7!&-X3gsWG8f3Zki)LA#&txc?fp$cc}z%L|gW05)e46Dv1dN9RdL z5VSuBW-+8dw_94}Q|JVHZ{PWK6w{Br)cGg(2%U6E%Hh~>Fm&t_5d2(#GySp0ea+!h zf|c(aah+CNbI<(NF#O)FPr5c{ji2~NdfINSZlaB2XWrDE>&WQQU34YSga3=Fw~TA@ zf1`khph$~!4h2O?>1HAVA_^j%BSfSdMs0+EAdP@hlLqPTj)_P}cXw`-1Gf3xzyH%O z_G*j|+`I4Zb*^*Hb*{>GZtV37EMjeh0%pFpp)UOCT>4;2tXNdtr77qX%EPC6o2!X8 z@fJviqvCT+2LK@{_Wa6*3&F{Ss=sZTJ06uQbzY*?dB1~uU$EP9nRB>ic;}oE&N_Z0 zW@l6`UJa7TOXV%FloIakrYaBE%*}l?bH$%QA(0=2C;ob zkg3qan7USUyAYp~2L5C@J9QY;-|`i@oxa7(VUlE?zxFf+UDG)q4_-1mJ>H5sXRWH* zK~fXRzKln)!6fDb7!CV7*1YYA6upo@Q&#ZW)TO7WbIgFmnggH@1XHJ5U$-Ea=ZKR3 zd+#~?zAaj8QXZOs{#3QQjT%{-?Eb)&$-2|9`aEWcj1+(-hZQ?`hWSap-{_8NTnw*7ftW*Q}LGO2!>zN+%=1{xr+m` zz9&44d>$L+57xu#W>@QQ4ZDrCK#5^5fnJl7rxsnF?n_U%I8gog;WIrLZ~PN~1JYG( z{`nlAexf12zXxNT0j7Vf(~~Yjh!omYi<7Eto}omQm6F8Q!up%c-w(5p&((o^?t4$-Bg$ZT4^BVcPmEw=drxb*D~J&=`rNq?Zn0Y{2bvhUjg z*`FALFFOuy@76TjiR9T0_Ae1c?`BHdlYL+Me6jkgKgm0bB#K?j=%I=#))a}!nVaTFu;UFznL=P7TS07aKbTDl?^M|16fl{2ibYrw>P%z9jqp~gQq)bh(Th>gSp)nPt4 z^a%}oQqv$b$-D%Yu!ShU`~sI&KC&%T!dM%wB3FUT_-DKvis^Q?*gjvohwrieMMcM_ z#3P&L6~H0$QQQ91=m$>%!tQCJ-4Bq9^c@p`T)9SJKM_f>{Dl_Z?AhP z1|M;AO@}o4Kk$+!N@C*_PQ_^t z;!X>@rT)Ckf7&}0VZ_I{ZR}yOMVIbrvlxJESB`_SK!3{ad$23IM*n!+Z+NxV8a+sq zWC7*NNI#jl5dA$ak1Ds-6ft+oUFVQ9!3OgnKE$m+qRnpkzP>kOjV^0(xr^E6S6)P#7&8xj7odYp&JN&0Z(j_TP;UxxH@xi;SVE4RRAhQp%+a8bEME2FwPhFj z&m=ijN;c=0d4mw-$Ac#s`qp4O273ozc9!zMkH5ALY>xF1?@np3(001eH)f*8J#%LU z4=#M~?%w5hK6v6gA~B1#?bY7jIiyB9zbv)W#AIHsg2i;m zHPIOPq_k9>=Z-&~pQ0;o#J@-*VT|@4D0||);VYrLKf+i}eIy1>Da|cab;`7o%;bl| zG+%Tbn|>5I!k4$+T0yrnP1hV>50dX|YBw^UmA{-d>u{(bqJAPTTydAiWyx?lWisLL zTrud48kcAJ{z^E!?+4IE44$Cn;D-(oAnO|~alyFRz2$SI51UIsg$|&i8)p!Lt;qSXbHU=iXxeY<_S%CIkgsgOcjjWg``P&y8Pb6ous`;%SvOB>(&4-x=AF}H_LAP*#F%`3&8bncrXd-rcn1d#ohmHwI7Zvix-lV$y|{u;;aL+_??@1>Z;4^^y>+n;#_Hb@+{|?n{i{w=k#hhWGu86*^LNg zN||adj6Co%DtF9nd5%6DHz$ew>-64Bi5Vi~eY6--$Se`Of{az9#)h){WU-*n7etm0 zlX()wRZ?LjQY714=T`QgLnqLEk}lK-^px?ApH?7KA+m&Af8V%(NIb(oA0qSbW-ar{GfX&dNm>*^CMw zS@~;ZO7KJ})vYJpGz_F+SY^YH-7Yk$a8~09H29L zyj)L8ijSD7$&MRJ;o$Q{q~PHnb8pg+USKVIR^3YB#V|f+)lH}jP5Pptj_P_pdyQ(z z_^;g4LC+nCX5BFbX;grQlUt6x)D)(ySBpa3mRR*yS&v1k<6Y6F!>mUO^iC72r2y5~ zG0Sg;;k|G!#PF)6ovOFHIk`zDySd*>Ff7OBMX``-$NzGLah;X_#HnGG*PIm1WXF3Y zuln+PAMk$K^#N7@$12fve~)u^*gKv^zLv5To7c)4+m;Zq(%m-c8+i3ccWC4$N;U@@RR1vl!yi$Au2FoP3|;l= zX1s0?v7J9Q;K(Mz$GMYoeP_X`cyaP1fLAAXJzD2sCIPQF0^nRKzg0#ub{K{Ku185E9p zxKa8sEnq9i>-c;^W=D5|B#|b6|eS-CDT6j8@~x z@3D6f)7x2J(geW(Zs<}KNQ2IYt_kEk@hA&UTE2rae{EUtGw;Sn+X;gv!t$KS>uXz_ zQWFbN-SBtB_@n(wd>q1ZA2OG&*_5)sX44+=F#U=8nxwhMr=LF^T}<6+SPr3oe7%KY z>9~3(e;hL0cIZ&~1CDy{QDP!h_A;$yJ2h2508?mpV*7wvY}ZWab3ttlpX$d%HO;1q zvAB;Av?_RZ&=9SAp~#EPt=KajYz?6@&=i?}nu}HYvj5O+d23sGtr0k>Nub!a6@RrU zaR1fAys5v!&2x)9&qj-W{bY&IS#%YNEoj{fu#4CIu`8QVh7hg8gD+3Y6RSL*30 z+Tf@Cfz1bGCEG4|4FkykwzW)maClXKA|`lx8-5s=lhE0rcq55X>Sk!F2H!8=(>MuC4A~Zk7PB)ijz=JGgvj zCkvcKvES6L9yx!%V-N{2(jC!IPH`mFhmiiQ2Z{VMUxj$sra329Eh`(Fzy6ftCqZ+H$lr6u0UiL_g>Z zxB>B^%mNjpVJ}PR4$1h}_b>PkyqdNzvD1!8YiTyHt-Q~s|4;MRj3n7ya zJd~JGgTPgqa83%edwm=Ieqm?capLAhXk77)#z;5>Cxy1l8h=rVe3J|d2>^YL?U`$> z=x_ZJ@>U{C5+_~a32GI!Z(1>+`+j#ys z07ri$p+os1cs^NsdChYwah>samZz>t=KcfSeQkWgHgnIWCG1ryZK`?93@vVdOFES- zymL5N)+}?`JFtS(y2>bw@0=eYT76LJoWA(LH?IG%HY4=n6JRhw@q?dd(Ony3X)T+? zO0XKH_nm(Ez^?`~iil6n%IGRgQ;7+8%|vQ;-|YjuQ(>Fcj*lv0p13pky}H;6-Y)G$ z*Bm0yc6_eg3QBfST!K`qAl^0W=sd=rO#*4Ec*NP;X@=T_gjuzd^5vD-}bl@IOWKEMJ}EBpU@3n?6+y1Tpqu82Zsm4MiRwgSHDT_}}Gyf1TSMN`L0 z3o(R25xfEXz-|2hOej{212PiR8mlsVh&!Xz_t3rDq-_qfl$;Knqo5nv`$G;hA-AnB zr*>;?xIMJ`RXmNK;7>3(W$@Q>_s*3QnyT_RHLDu6u#w-gfeyMy?_q(X`WOb(Q1l{X zvlR#<_?wE)%uQw?Ue)}{P%{yj)*)EYQxWOxj@UeTwT?f978x9YHU4D2Bcb^?XDQ9T zeNgwS{h+!i(+umklM7I)1kHxO) zydpn9qM#4lEf?msF_VRSIp*?=y9#|AE0~x5<|}(V88KQy`NDTJr(+7|LSd2{>gJFI zT-kf&CH;P`*Iqro))6u{D&Rk}m{~ib`~>TAtz`|V)_ zt2~Eg9?T|d3@k9v%1+ZNDaCLW5$eg1s2i{LxBf(}&e!%(cvZ%8 zh4@yH+e)<>E_(md*Oj1KB4hbg$X5Zxm6D3L>OXyF=7^}XhEJw>ECeTg?k>?xkK*DOHDOct)b9WBiokv+IKg$UAE1bJ_g*W z8m=B;UY`RXr#;G_>m9q4&UwkyoUHMyyAm6oYt0k2B0S?~=k-CVL1D9_lkc^JHELtD zcnvauvR3d0P(z*bbH5HVfui-jtL)=<^*?!~4- z|E@TsU}&Q5L=&!lo+2-|COZQ}cb@e} z^3!Yx$NCmO+W7n#(G$u44ShnJXPS`ceRi?HpF0%^1=(97w%6t_)lL6K)BxZ@RB3j8 z+_l7@=3M5gLK)IYfsABz#sR(y$BciV>d6TlFie$j_0)t*jq?^_#&{D)@)R3a_-_60 zHn0~%VgmPiPTofdE&3LMC$j5i+U;j!-{L*H(W=(-JAA@fZ( z+;41O&daBO`>kM@6teeDrr0KTb9p}GF2vD=Q;y3L-w5N4JGXm{Rq!p?VVz)|Fn=&9 z{yTUZ@qU82)ZgbAO5PH@}MIWj{K# zY0xA-*Ax{ClSg)p{>7U12oAVO&l|}oxFArUm_+NR!&$Qmy|XRA?omTe7~pf*-e!13JO zHkv5!tak8m4=8@_u4x)eFZCcCzB|Glr-UtZSQ~H@tRpj@b9nkSMql7?7{-H{E@X&h zOlG#Ce?Wh2mK0r~4|D#YUcM_-sD@7JTE5%Pvm4{_eQ9aH((TdjR6hAy%Py|0@6^&m z9!PLI3+^fUR-uFKT2pQo%R1y;Q~2Ax8TksXJHB8f!y=9apHte-i8Y??zEEU#`Ya+~ z?ykN#D5bgGpk(IKkNgCsz$tU&A4dv2XlkraFkjSbxE-gHJWTB$y2Br_Z&XevQImUJ z=x@ZIiPRaW`X-dTT(94@^tnXsw;$Cw)_K*-=$=|K+lIj&ggmZSmQb;l-rwAssGM}7 z${c^w3ESn_W^L9q;Ta=8Z}Qr8gq>vLJFoQ6`}%Yqjj!rZSBHJefwz;af7A9yu|JYB zTr@@hx{RXg&~0ab%}wTNZNinlFsx(B+Sq!UH*08Z^9P@3hkKfX6br$_6(17zK3yuy zZ&%kw*iRP*$YO)@vDPXbwHV%rF{t8fZ|Z%kL*|2Lv_YgEQ%!C&&1XfYs`B$6ye*!1 ziZJ-{3h7=EBGSz5IC=kg&I;cPfAHyNq}z78WVU5ilzpynunG zXu|HkXyPM{EI(5nrSY%xtRvXg_>q<2DbMZ9eFwqP<%e|t%(BgczHH_1vuY1#w zfSArf07ev{V+PF$)9p7}2A?E#UiG+e0rX3rvDW|u*kKm%ndhmf)3EEjEM_@shX77Q z)~WS`ks`5A>m09u5BHS?^tRI-T4TU(kBDCIHk_4@uegU*PgctA0bN7RRAUGXSn+TL z2$eMPx$PS#=&OajiT14V9xa5fogIO$O z{R%L9AEx0In?KAyA8n}OCD0ST_+fyJM%y_4o58sNyM2po@yUvl0^M#~P@%*ctO2)DQdWQ;}Ed^d;c&x9*kC54+|M^?3cM_>p(8^+V=IE26er@&t(~M3+LX zZU;uVw=bS2im|qh6VoGTpm5dW4=TZ%GL+O!T8E82a{48#4dczdW)m5;to4u(1 z1xPEfDD4k8zcz=#r%E42Di0Yzjv1M!?sFnAwQ8Im z`HC9)^)IhNpTR^y@!h?|$>zwHY}M3-6);WOTc1fRJeBm??>(!AS?w~v^CgYzuGrzb zmC3?xqsCy;AH~-5m(Pzm7QxqZ$abdqqJ2DN>FDVl_NE<$Aw3gfp7bww{L^;oOmwA& zI}X9y07h*=-x8Ib!qZ0Rzp1aY$Tzelj^(FANgmr3?*9HBGkq9}yn6qw{1+7@k>0}Z ztlWQXg6dXkUUP^P^cUGVegUzn_C|qj)gd(R5${$f^F=w3{%@5Gun14V`=zHNkiEIq z{Z)QMZy8)?)Qe#UN&Hih3nOpsa@Qy+w(zfu^1?S9?OXz*P?nbO z2qDCw0GnHjJ)Ha+x`~RrUUf)C(-C2~Up>kr;9G#o(CiXL%BdJ10-1ac+Qr@YRDsxd zh#&cOX$i0gzBdsL^YP3ZFb~bHk-YbvCqfJTUliyf2V!n3a66j5e6&zcw2t zWkxS$j^JzTF(bjWg*e{&{GVOu^G>b|O5gpd9JS|?3V)wgCBAS^Z<67%o!&Q}zUCq$ z?H6Q}G_~5rayKOKPPLA7OQv`jm&Wi_4F0@+3Yh{p2(#*_<#o;|D;t-yR2hR2TvfbP z^5@T!?92UeSl(kmvxr7A!|w-Jk4XsLrxIl;KhAFO4|gbT&EpbIVcMj&wqWBe)O6US z0bxtj&_4Z-tTF9LJoN@C)k>807f$X@+jHcvH$vpQZ@-bb^k^X|^MCyhgk!Wv%+dkt zodG&-t)u(Ur8kW-i#xM+u#EfdrvdBRFO-Q~9_e|?ZM^UOwjS2+FqnFgk587jT>nJi z!fN&2-8D#QsCjLhy?3!sw{$sH871f4Kk=9@vonLLwDX-HJTwWDNw#86!=x?j_UNqI zSnlc!@^JX%s~Ts?DuMU0jM?Q5JSl)0pN(TCfYFlarF)xoNT$~2+-K8Z%&|33b;Gv_ z3nF4yvAWNG@0;W1f6R9(Dq>ZN>`omd9|soXN%@%#sy9FTwG#F!aOL+8W>4-=Xgcwl zR?zrG1X>Rn9AHpjFWXo8`cBH_A3@KrX%J~1r+duLs7Iq;@Cbv&Sb?K@RVzvy63a=^ zTpM<9?r*~XwXl-Rvx1}N-s{fe+YA}F3`sJsYlC$57BaqL2Gz1lFFU|^tiYr^n&o5c znMIv1ar^;UXi%^ve9(q?*ix!ckotYe7|KPrFU)RYEcT$MHQ4X?J(rB*8FzCq^aD(8 zbt(cQwTk(SqU|YCl9<;hY&N9ujuPp?drbQV@V~y44@iJkyyZS;fn&SD{zhw%DO|oIRznDz`RBz`{(4} zmYoS&#Jv2`l-ASIm{Zfhm&bq2_d_qU`t?3`ugrx%d>L?MqT#RzJyp{|Tt9?~s~TwB zdkS4V221l!Ml9hYJE}07;!h*SBK|b*0W{4`zZtanT4^` ziV+ORelgEom0uc1*CRLY$Eo7nsLYw#~t8kUVc(|byq2=VUWy3m=9Iz@sIU21iJ z*EzsujKBm5=V=uE?dcXscgvwo+o%<#>y&RD!gfqUDJIYxZlUHp9kqJ~X(igc59%%sa};A4+@&qE z1tb)0NZXQeN3+`qCJ8gPmFd2EtoWQ_vR4kOc!Z<;$5bbkz(T3BKwqsr<1=%v64&1> zCRRb-^*f$&USOKKz8ERGA`^BgkBAkoim$B>n8IE^)L}rHL8Kzzo}K;l#l?Q122b3B z872g8dgO~awxpRSBtZtG`!wN_`;ag%H}}2o(9Yi0U|CYsgD-HF@>gq#x%whoE%nXk z$D1CLs{zodUA@GZ#FWp2*}X56Y(zV;52}(c)*B?oVa&nTMmVVvC;+X3o^n9O1ZAg^ zb|r5)#V9mU%0L`nd4kWTzN2w=Oox$ZjCOKD0BzZiWY?b0pA}a!&d(**HC7eNA+%@R z1}QsTACGdX{$KC1 zI8fJGASb%=ME^h*6#tXaN;x{nuS*CNRsS0;A_iiH{+B0Y$Rq@E<_Dmchc1Cz+;PV1 zFu{1rF+bSUYuAWTdVa`Z_D4*M+W&x;j*HfkYG9i~-XG$~^#Q^?pu2Aq*a*(pa8=mP z{UhC|LW&IsI#e}l8E05*Wge^^dj%bgyT(pldH9OEtl~lU-!*jM#RTIt-b-A@ltp9v z@%~h*j)>(RXhCUuD`d5QfCtAhPO9K`VNh<{A`#ae$2&)oA1r+!_GY<7H45&?*oi8i zDrSAG@2&}3ans&oi*~!YX9K>X(4$nv1~6Rv*Qt zydf{ihN3wNo`#gWdR8AJ-Ww#mj9X&oye8X?-r0YWGO=}2m7-pW!~V7GVnVV8vcMf; zJf<$a_srYzSg>Q|J14bBHnL~>gq$D zY|lw%jm+XH2xOX+&@Tdo!n9w8y+698mc7>Ka(kW!)*GvA&EGhk^TDl;um7R+-<~ zX*SIx(9)r6!t_qu_ci2!O=ZBWJUKx1yf3lN@QBOzdi|`BPBfZk=Q2GZlL46#?wWP07KAxDDl<|HoI#yJO~ zDR))5fHE_!KAOu%qLc|=*N+L^<8c_p=WUO1fBpx?{DJ4pVPIe%U__TPk-)V62I9su z8g?To7D9L9W&|<*fegy;d>PCCD-Qc#LIiJ*vG0F)?1U!xZ8hxbmjo!``|#7le;_c$ z`M&*E>cgO3zGxnqgJ~h7Nr@xx?P1a z$)g+&yMOCZ_$Jlp$t5!c2Aq{L2$m0X$C0-heth_&?&ffJxaK&KIk)RxeU7V9_z^BE zk1}Z%(PemMDU74%UR&%>FH#bm$l|}Wlq6X5m1-ZEMqk<%vHQ6}#Z9pUujh4Rj^A37 z4JrRd-#%GXPS(i?mr(%dE6S{7j0E~uJD-l0UN%PhH(zm725uz({g^(Iy-I}Sqny5W1&-s`{U-AUP*{w&C zEo3*c;7%(Xxj{l$&IJc384lu5U@kDmR^p#NBBZC^5b-WJd2#sGF84Q-CR6N-0gRk6 znvk@{uXWQtOFT(8ZR>GfmV=blRQLU)qD0B~0>fLEjS|VG<7~kwya|mIr^?;XmtOf{s!4h4Vj)~no$oVz1prE`yAnv@Hf0GA2S{^RuzL~DXw?wr>5d1B73 z^5Dx`XPW`4rga-$md=f&rnsp(gEg~Z`3L5 zt*(8as@Sy3kGcl`q{yBr?TEVA-ShY5*%-P$ADmOw-NPv~VLc)A02^mZ)e3cbLmu-?Ji7GV%@|!t z5(}ZxJj)k-2qndvQj+6)+Ou7B(kHIfO>f{p_8@5eq@tixi&o!@S8wUU;Rxt??sc~c zKJLjsyN)zJnfxjWtNs~{hW|#co1P~Y;v~U6Egu_=D6nc~oK_&>IN8oKlC_plw>5c8 z;mk%BVjQT8G1IJfm98xVr2S)}4p$Mh&bslHyhGzH@d|-A{iqhf&l}YKSY&{xd?3Ve zSBw?^K$ic(GzU|@_!lTm5i?Y0qVb?14=}|2f(92}HzNG84wKuO6U9&WCMW6<2zU{n zY7rIYRa#gO(LV2JY|1yDKwztb&l0?+@2)nb2JSCsu1e`}9q z6E7tlG`_G75)IsE9DB-!EORt^%%Y1z3zp{$`1Yq5_#NlW^J&W-{dnY&+pQh0EoCguSYtr z_zkvPK84HM7Bk3j>mcK_mL%Y*GcOF3(YcTZ1ZulN;IM2??Jd!R6yUZ!F4hddM=g_(m}W$EwOs z18c?Z#!>?-*rfYjeU{Ure9rBql$9&7!+MwLwtP)&cO#O@xVgIBKX?pKi>XW+ziE(1 zI!Yh;2}OgdR5*f$RMwudy-J0g{{9EzL%xLUM9Ep``t1yT427Khp3+*AG~pBpbgK7O zAX6aJR(4Z>Kr81A@V&*n#`nMqPzHL*0{{gT?i+a9IH}Zr_S|DCmadS%7jOfTY)ay% zT)Z_B(cGp`GEpWt`Vv$jh%d-{vOo8hIOeB1@va_|Hx*k4IYnTwZWUNqhGD1UCV8eu zAF=c8v_TAh+#n<1kxbd160qq(_V^1h`XgBV)N<3fvvjv{LbHM3>SAus-}EbA>;Lk=bIkY8 zW!lHi9>Zuz*M!nhxCR&e&5|N)9z}q1JT=6J76>tNNJg`j1gMQexjzF#yrag=$f)Nu zpG5Dhf6YbV(RJ$nz+-QowA(^}rMQ0E$pl_-mJemZ)jgXuG8#KE04$<1`h2474ksPeb&YPnggIAJtnqM`~Nn~v6;?n^I~x6J=gX`hlPz^d3(AW?lpZrJ-U zZs_$d`dpzWYD%#x?gUBf<29|jfR4J_YbV|?z02j&u;*H%M(^w+dZU{o{pD&yOquX6 z>54Hntsp4Lzyh3eH;=aS$u{^~3BZ%r095(uKalu{x(xHya+xnPoW3IBk3$5;^-G$ll?%NeqWs$ZmuV9l63)K#kRCjT4UY)dxl>?*;GNW>)-xQmC46tF{8s}3c@&V*a{9r8} z*-my-1sdM`RIeXYOJY^$NFWZNd&8i}@}Y-A=Q)R7R29*;nY%w=rnUwAQRs+XVRl&T(b|Y! z?YQHnz0Ry_jjxsm&T@j$;kJ{rS7O*DAMMoO@fD0JO8_Ny&(uK7bkfnmCSsm5_4V zF+@<;mleF#D6H0C+|I_PI&`bKM=l>z+UeWM*#!I)K%@016i6EuBa5ZIgtQ0 z6BJDqTTA>d2FN+NsOu>WiUz+TBrgPzn57v1oR7nP6GmLUE4-Q##cBYg&DH;(v_Y)2 zM1bkx;Pna|_y3vp?BLPCRuz33bzMlH05ZuRX#IcuI20zHGLV=5`Je09E>gq=KCMu1 z)s>#Gae1T-)Xv>TRWMY%7wudRJvI^iowc=M|L97i>5y5;TfAM* zpF2jMsK)?<|PPhWumkJQS3Mk zH-(WVTQAeU?-8TFLJiriG1!%iY&wf0Roh}mbblK^X+lA4{k9NvXW{^hqu4z1)m`M! z=qmkDto+$&$Ax~G)3e2tXKM0O`lZ26^8L)S504Ow+*gy7n-WsQ&^o>TfFp+;4aQ~k zl*-E5WKF^$RLZ`Avi)AY1!A+PBInHiQy$jk9?7Yr+oeuwcX-^_b7`gabQW-{3~H)i zoa?=7qr}64F0aR;txWP)dYN)A-li^{os#9HVVr#tF={P<6@(=iHr z<~_07UipA_`UB6W;7^d}0dj%I^2TZ|R7UdE0A&gF5h(;$Hc}XZ4{T1eQT4n-+RN8c zGS6jSLo@t1pdE(6;7D#j(uyVNna)7cG`@2A!ESsk%@5A)_lHQj+qHI0^# zro$I3q@d@)5BPz*-&z}TRT1f6>$7$d1!5@^sCFat*7?*X+%+f|kbl$H&TO_pEmU@W zzPcYjE?jmXFB0hGalh1#HPH|)x^LDH8&cS_zq|^#l0um|N6bYqDIRucwqB+?a{RZg zdidFaHODWP`1ZHl+j!c@a6}lIZXYncI9_qQm+`IX<@TKizfvKO3G7>KOltuE`AtEz z*vxz%$X$6~cR6tV1Ut9=5?}17@#-I_t+{Jq8<|jYro2Y$AIHSg)bCg}-+()L*;a^n zsB%n`1`&m~a5}PZRm9AHpkRk?4M@HLj@#S7-1zsQF`!cUtKk^n+>k?S z{wjd#{%GGx*>Ft*3`7U(L!ww69o+zDZ*2r8a`%1pj#rQM?g*8s@too3^y0UVCgHyC z?mcBe@tp1Pmo@}Er%4%1=;Q{{U@8C;VD~Z|jtvqLU{_c-{LS0SZcQURIx&&I_*Xp4 zhLi)vusq;rv$W4z#QPEY<P44cl-0xPf0h>#1ziS_tb}$c*j?c_FTz~#rSptG z)!7BPO$P6s8rBoh7Vq8iI0)n`4EK~d6TY*b#m$P}9Jx53o)Z!*=Z-FY>y}tb52?8M ziG_QdvDL)RXYDmB)m;wfy}tVsmTg8B&#kvq*@dZ@J-xTt-|5bV{VB-{%)wZRhWS{K ze^t5{yc<0+r(foa@bIuJd=YM9QlJ*QHumA=4_qGAigVAco2lH9&9nAG_<|2@<52HE!9 zYzm{g#!2hOMjJ7c*^&EvKQ<%zZoj&lm%;^7|63mNd)S6nnLXCs^+(uOJZLYlgnG|O z^TMBnYx>wpu}h#d(s7`!H>%`*{NCcT;DqqQwCU>R#xUGja>7q;Pg^@sv|DTj-BUAK ztV6HV63^J!)$sbDg$SRy-AU)N6yLKK${^hkvY*oXb9IgZDn8b0Y_Ey6MVS(R4~Q2R zXl&jcsTbRN_k*$|)+13QA=U#YR;ZO@=VteI@2^k0)*$_KG(gD^y>ZebddlvWm3N|E z#&5y`S>@KEorf+wUmJ4D3zs5#7-N=6974AGEsn%ie)~pHv$(uoxjiR%)Mm;lJ7K7O zY@eP8YejGCkyA9lUPH8}Vh^*`ZJ+SW_6Vrv8Q|u@XgF<(YZg*QH(AE}hbXOt_)YOf zdJ01N;ov6pR1x%G+EU-JlSGmE4vQg!*UwGEJN{8S;=9gP^@c*_=9`_D1zv9q6V+Fr zzEKDQQHvQ{5cSLmcgA@I8QpYi6I9kfVXTK1+@s-xLh^aJ-Wf)jI(s zVuJpA;YI=EeS{czi$(mWT>Q@;QcFq_*WV5t93e;L@W%lV;CcQA2cjW>tyzN3u5QQw z#fYaA_M6upDC}EnQ8jYpvg{i%s&PF!FY~9q^S<8XTiwLs_&24$Wq2O2h^rQln<+kc z;ODx;=+2nsmt+n#<2gAN4G)yOAsObV{29>s(tVEYIG-&!tLf(7{=iA?1HH^OcGkjI zC3Z-(0>>Yz;W=Tt5oq;?p!r$k7Jv{O#KMJR8FzmQ_!HkE!aSf$4g=|Gt7;U*LCh;Y z<^H{QKh^qwPSxwaXJr^fy5*2J#m&!c&F()XP|TuCzf)SOxc}V({vB-}?#o$RKHpwL zxpTB?L-IApR|NZA;^2z3uS{~j)5VrE^T$tu67k?T`wh1}Y-wRzeKp(I*dlC~-BN8j zYOn*t6Y@44t~302prMHU=5Uk0M^S4P7NN5liJB!lKCs6ZWEU0RY=sm@pC-LqFwl~$ zd#tBNF>=k7_Isl4+nT_wQ90aqy`>eSF`Tjoo$$AuJ!a;9r`rQt&6yN^L$tTdII*+~ zUBOprr$%-2bpuR-0|)lG`%J$y0)J@wANSvUSWY^6Mbj%nrq9Z8%tMr{gqv$|0CTVh`xiX?^X8`{$Q`6swAUR2dDcy)5-I z*(Ry|4ckalNNnHqS53Ik%*O1m8fzN0T3Zo|44BNAT*?%vTtCHe1q84AbE%aM5+pFK zewh<*Elg?mq;xi?oIB@)Op+3nbuR2!n(6~nNe@ZUb~d+{6l(;uR16>kuib&dfrG9J zGdk$YMnrfOReYIjjHk{Y!L@O_+P5F;zS4U?`Ot4W%F7I5j@1#W%3mNWI}+mhU_<`Y zGE!zc!CVOwHMOpdWvDPR=9a6~b^?H#*_-LI{V9x50GlMbpMeo}BW%4kxtHRFGmg8+ zr1?l+*Nx!V8%hu0+;D z2G(}8t3|AxMgD;t-?pN<&B4`B)|u}3;CA>6^Hw_ZT#T3qZ2Q;ZU#Dzfb*ypy5#d#q z3HPZQfxP`YVd`y_G%#ym-x-a(FmEO9ToOhjKeqGjrgHLOG&2i$+Ub)9lC;}nZ@LRp zKNWofl)>PUxgAgylac(OSlL z`OE?pIVEmshQtoOs_9#a6IV<<$Xcd@OFQxh%P8orzJzG0C_z%KYdaIF>(}t1+qsZh znh=&IkR6>+H2Q+vVGe z!? zZOJ8o5iH&e?B1`EM>IeV;@J^>JD=?!zTzC}K{%DFp$|&eFv8EO?{xYdGYkK>_u2Ir+UT!G3)Ypi?kR_WXbtoq1567&xQ z`}1r1P4j_HD1n^jTDCMu&2AmlwShvTi~-(8-5%e7qvu}%#6z7`NTlc$3D%_KM8UU# zA=~D`V4Q%d`cE#7N%$|5{Ckwcu8_#)w^WqCjdT-)RXu=@pnKM82_eE^b4WK@zO8C%dO z{5mCix!^|fZFkgbgo6vz^OWDqrLk1@(g z9dY*3AkNUf>bDfx)6VU*^O4yxYd3%n2|meG_uj6!$}8Oqpe%yGQMuYc?!EK>Gv8qg z2!TH807@F|Ia2A=8vYR7Uz>nwirpCK@IzpeVuHKL9S<3G9Mel=4)sBe@eH7KK9Vve}(PCQ(P@ZB?UpH!6MeNs118jF#tIqcwP8PJ`wD3nxpRPp_ zEBv^K_2w^;FjC$bgKegmFEpQ;$2dccn~wj1UZ=I6PDH!yEK?39{R8ndXmkTL`_*PS z^wJN{k_V@MJB8C*EiQ23)`3HI$KD`l>#Lo;VmM!PnGBHe24AR)#a(YTvj{rze4FWv zsCa-FDO0toCwkf6_>(ubRWEu&s6v3l`|~$-4#Eg800xX2M2uJ{zYm75fNMIS*IO+K ztal9m52C(0uF3!HeuPY<1VoyFph!qJjDbN(cM6iy-7!KyaneYQP`W`{q+3eqlo&8^ zbPgE%{O-^9`90s~kNpALi}Bjt_jRA^T<1DR2|TVP-%`4LyN<9f0ugbkr<;7M72WJK zN>ub6mymuJhBe?h#ZwAd=q>LbKu8s4_DRXpd&De}Qgnnv9l-?AvNAR$V%{pc z2(3ri-QSk$`JG?0L-x;ZoH*A$298i$t?``FVJd%R>XYp9k``%yB?R4|>CAU^5N?4l z12~QB>;U7CVTcd>qftWFVoS;oXOjRli5%SY>^%#z-YNtaJYyo!IQrHBU&Mz z?3g8FQ)y`8opZG|8~?&dd_tA{Wj_oA*7Odv2U1@ZmJ}N;PY|sLR7{}y2c0lP8h@P znSaKUWqambUz*1x7GmwMS-(K8?pBxd(KxJ!9zG3d52tct19lWB)|bZN5%5zE(6kCOW_4>`PFy|j^BAEKD(bJHg^2w$o4dUeYxjC}`~hfQ=(+#EYs zU<=_JC@GtX6wqMF{_NWWqfMGgFq$4mr+c{vcY36jE0Kpeb3!{ zYHC_RJLmil=*Zv{*zIsc0hOXqqY60Wx5wh)+%?DsN6$6K!&>?a)x7!>>8 z1UvL7 zyS5ao-;KMzT3f&M6AfS2SV$(Fwp}az1H{Nk9Dd}%f`$ZD$D zVzXj{VJMdKuT#2sqjiJ&OZOPRaKv8`8>#CLcsjc<=0$eSYc<8@XbyU4SXyzqZPU*n z*jd@+VPLctGy%#Jo&HP&LZr~lW_g}kq(YqhVeYtsZ!KG&Af`y->9sGee3{;6Y^mXN zqsZ(N5G_eq`HC)wSI-Jj`*J^?l;P&viScSGB>8TA-EWI{Ha?SV|vcDM^d*t$ex>7<;+p%&vsK` z*P1=QTnl(~8z~misGaOg&q)_IkJHor+z}wSZbi3N71SY` zqm{+w4GQpj$~Q!F&x&9qY(6~;`)ts*rq9)b2ml=wH8)H%7s~IeQI?b;!n%F+A%c_m zJU=(SZ2T*j5}?GVqIcR|lae-ECM`dZ-FS##AwW3-PX79GT zy|}6Yb9zhRgbvh+-;Peh0)l2RR$NE$d8_L(Nf&DV*EzC>@mOd(Cxdp_v$Zc;^Lb8a zoi^FKW!W-0a_Xtt^5*n_(5?5q-cfr7V@FSTIsO8f7j`vG&*O#j(o5)=%#{QzX4S)m z8~kNIIy{*d5kN(%$lW}SLsNP_BKd{9c|$i+ykokhz>Q?%l}xuR=h6Ug6w(qciK+A)ycV>S{4+@q^ftcc)r%L`1O6p%3Rdyd<_xF= zw;+)7?CJHukReo=p@tEw$(}6@$3CtOIrC8ecz?b!SZU zoHj^n3vHvW&utZ_^31tozDMw3lR7R}7FkA6m!Jj&e+$rWuZ5)rk-oPw8Eh2`pNh11 zl#J@yGy0qt(TzEw-Z2sW8qE;m-LG+PA9=7dAgtO(@XKVBSk1$;EydCZKd_niwvOiZ z=rNntjabknNe{};AiMNnvE%y%ksMJVkgW1`9#K_|9bR_{;P9s z{ST16E`=N>{62xbO{gB5m)hQh+q4jVhP_+h61nVZ1g zjhq)sfLJvg7m=yD4015{v_NZ)H#1Lft?^;nQp?d1Y3{I z`Xe^bOU^da;3w+Hrguc(7xHrMUX6wmIvl=JVYKvHAT*Z_Yr-kvhZCHV2A3^CLzGb) zgB!2D1;P8a(Fxa1Gv_t&3+dgfcUB!Bhm~TJ#{YoYpx%NB2f(ZZQR;4^JFc|~ZdRk1 z6p5u+ya_Tr&^bHNpJPqb*6Oqr|MT;LanynSzMBX_`J(@+KrK3`j&(>J zr1?`RnE-QIs(xuS zV#W5tAZvXDzkAZKKX%LPsabY3M_Mc#W74b}KBP?K!4*cwKUH70EZqelU&GMlO;@s9 z23y)a{icT%^pz!q3RH47;&nw9>`9t3R2cJiWS@%A4VY-MS*(mmrh@7f{*1jkSh<(6 zYpQrH@?25u? z_G-dt9u!?Nt^`Et0dvPr-Ic}j<*;NUzV#k(tYC%*IlB#>xN#CwId<5qJ0acCJaKdK z&})&1dVOg(311o-c0Ai@cZIC+{bP@1GXRccTFK*0#`!Q=({BeKlp!?sQbWg|*Wkdy zoM=}BeBI7*q6H|{|0*cHV!tZm_ybc@Mml>-waqq~A@{#R4V@1PM;TuVOgg03nTe zLF4f#Sw)7Sjnoy9XkG94)sG;@XTGs8VRn{84bJ6Dgche0n*CzTA#k2oOK&#Ufq{W# z58puA(PX3ch(R=H={ZnW4HEBeSl5q+s&*Sl-Lt8Fo+VC z=D0wOY~C^PyYUbW52$)6B6<;U`l!h)`CMXGxPI&OtZGjT#UQ;=%g;jFlbeI_)(D{< z!~pty9=AaMKJd~Jw;2~A#~KZ^Hq~R6jv-2^gKLmzFB*|ma-aRsFcZv1=R5L}4W$Mp zz(C$jCgBRGTtL$G;5F`7o+E20qe~hr)2X79cz7dsYiS2 zaho-)fpS^?lU){{P@@Uto+o!|(0rozz|7^OXnC#GgF!l)9UrRipf zFyp-!JS!8=lIC{wv$np^e^rvjt*X8FMxvDzFQO^D|Cs;#$z~a7&8M`mMXx8=W{EgR-%sM?QDL6pONEUu$*3pH2VI~|>bdx|dt)8anjXJn z+YMhLZD$L z@7aveKvAn%2rFR@JAS3)5RL@M#UE4Cx#VL5L4f4lzkgDzuk~_p_%;xhlQl=TcK;vH zhxFpy-@&$5xQ`Zj{R?+P)LOW|d!SY?oYnGGGDQ%qj6h($PFq^_^uno+&fV`IV5WTPY zR|3I{r4PGoQYN$&OGtYKUiwNsXf~sHqZm>^1Vf9>euF)z8xWns=o=~s{lHNt!kB{9 z`;vh}8slPq-hqRtLO!A zXS60SJx^?;&gi)O<4e4*{EJDxX{0TBPv($!rQ~kc=YJal*Fe3s;&;-9C*bQ&psAQw zC32L~Wt=|a$Ai$;%0K%m#Po7!s3MaXB`%IrjP5*BokhL!1$HIb+pub%`3*S+aWV?wb-*{SniA1Ysaj;RBfidcn99G3<>Lrw_LMGslz{lV6Uh3u?){p z(A6cHSArEXYmLHYl!p zY9XCvc0W6(m#)FT73dW^H}3yB;x=8B*Q;2zNw|9BybFn|zYQ1`a9e?46b(nn^RfPr zP!vwG@1p}0-UzfizhXMtvCYRgKCBL>T{za=3Iy$Nj@!2ElSt@^XJf9NXz0`#ew6Gu zn9Ksvn=E}M+kp1BD1I+cM~DMr5i$BrPaaH5MjtJaHzY1^k#fU?hs*D-h^&z?kjun{ ze!o`bj%Wj}_bHdghqKqApTBy}9TqG5{2EJl*-YrE_<`BFZ{53vPrIG&P1HFVzGXY5 zZumTb6XdN*H#ZTlDT>VVG;n+L$iM|nRC`fq@-78IlpJ^!Clf33Bs+%7#e3-NqPTtN zVItz{%0NH$t#)57DTiY*idU7GFmOzgnaK7;WsC8vEaeL$lX2WoXv=}B*p|V3G6|Ti z(a;&$LZEONWYf-3^$z`w&5=Ek3WPV%*(ceR5Jkoba4l;|u}~W@VMaWeZ9e7OVFEq+ zQo45H`J7c!1K$z(g0r^w?2LwO2HRcU%-yn3c46^W$ZFlqqu^e$5tROso6}O04|f>8 zz&%<1PPKxUO*o0lTw><5ruqw=G=Aq&cE zmK57FrrLtmX&R74zBC_*>k9}1;vCpX;H#!P;+Y_=ORo2zx zAshU)=_20>P>ZnXpOX$RPmV-2$VKsqt5;-3u17vG*ldxcU+jaB(_!bgSZ_|q`zz}v z67I0heR024`b|r$$w`^}S}g2hkJq|J=ZgMZ3sC4{`JN?R8%lB4#E9YBJCuNGqkC)K zk9|FMwgcddBb%fkjln!N|9~FM<^iRzW#&ZlBL}@2UF*tNV9kbu{-nM8mnteH| zW4@n0mpKG9ERl`dt5n6e9$+HEoqzi5NGgd0UCq}0Vy^mV@XgS*>sU*164`9_;P>y$ za-CXkw_WdH!qlO>zXO^i(p9>)?PEkT4bDT5kMd@TodHMjFqsKjki;e-SU2>qa!MGH zga^Dztn$I4W`CE7aFUiN2Pc}FY<}h*((O{2-Se#EeJ}N()OH5Fp@WD6I~7`&?Bl5R zT_N67Z?s$R_0%Wr!n#+dKuAHi0+_YFUq~8JYqxtQ zEXPAkxlrM$`L3;Adj{zA)&@WmVWCccM+?`QoF6{2=wye62J0U!ZxX6v#@HoX?Kn%M zwmWb)k*n~oY~dCbQ7`DqSXjuy@)hmJl^ecOvh!P9IMT*(`OAUdd4c6XNH51x?&`ll z>F0lE6?X9MKuvkR5P5*z8g2g{f{HGx?qJ6fkR@~nV6ioar>Ot+3N2)jIGFsOQ3ayi z$xQBa%yA)Y5ZrFprMUNVHZAE=QT*%j*skk5o078A(v&6@#W>WNOl#ebGH`gi>2#bq zPi;|_VZ?j%dywZ5#B{=P&#~q7X1%5cFCYr<$-?Sx66M8y;^bVYcHX3d+y%V9#M4>N z96L{6*VM=hzhnxzjWu}ep?XM>$Z`eks`kY_dxHc2o4(NLRuIu$JR;3YhzJK1UmLBC zkGSXBx#pg24RzfKGoLbJO6m8wlhXE?mG?zjt!Chuz1gU~2z8_%Dyue~IV1IS6Ubg} z?=sfh&pFcm5Y2fzaA>1^c{!%Zo}7xY|Jix5MG5ylB0Olyup{5()3(sl`je>X)9obt z<$N?Uw^PT!p~d=HT{jE4p6*&XO{gQ+(TP(&og!lM7xQb=&XINF zLEH7)=@&~eDqy+kIa&!E)jrSy>3&k&wiX=#pXA@)YU7De=YxdI4y3Nz>cuY`Njq}r zMGi*g=FYSh4w04l?*{7xr_R~T%QL^sCiP2Hcm+67!5l~^4l~m{lWNSp^RDb}h5S1F zZTOOu0m#2S+p|=`kJ&=rj`};`x#xg3Zs{@4;D(YoJZ3_5W>X*gx_sXyVUN!$w8O+X z^Vb4wou#9fC6F^Y@Os38vfLjhFq0*ma#Q3K+OgX>=ICY98x%#2d@6f%G25&K)F4`| z%pl->D4Ux5_C!0cUa~+gnA+SwjM`uee5$4kEo1j5TeMxdK!V2zH#0GRPG_4 z;ZDU*WdfYK;HZz5B7c%UwUJj1vooF8wr~5MDt`^QV^N#WR`95uOf@6$IRTPVu}0#M zzv#08x)jRyQ*3xZh$<}gS4Y#&8C5FVJE9t*dlrQ#vb?J2_T~a?*`l}9>(QIl(RJhv zxB2DWDwZ(1{2A_<-+ap>&Z9wRbnF?SYk{yDF#^fVNMp7yX(fD#qQK}WTJbwQRRx9eU_?K4%LQHiyoD9GP2~Aky6o1_@4!K} zw5QTBqq(A2ddY^wv_C!G5E;rw3rCtEgQjK;L7?SerZIYWpXP5VRwrlYNX;49mcLR5 z3QWI#{EF0$%5~}!Z6d7qP?4@oZ8c8^FELgKjgpWk6wY)lL}Ea;o9NRDopDMP?mR`~ zT8qRME-NanD)XjqmwshCdiLQ9^)21q+@O=J8`_&Fxw=D{pU;(6$`E1Vmz}O&j4u;@ zbiU|Z%k>iL1o1CqOSw24IRUewK?+{BgMZ7;{}JXXKz{}>h{-jFSork+66Q@D#i_Ubf_r4=Xk_qgPWlQF^u}3$>brbnk$rDuyLZ-t+q3!k zTDiz}Oi=f+N?698F_U+^XZN02P#Ee$<|qYd%eY&&JLC;4-(3wEg7J^)9rDh{LM@NJ zywHm1BrP!9Sz}huyLR-pe1yGh4tX(iERCPZle58_GF>&J+y<~@ho80-xdJF>l)PYD zMT6p_o$nmUj&rq}c`MbT61AM1msz`{?>xN=&(Sy0_g%}~K$1$?unvXyo7n3E;)euE!YY5FN zu#zb8yxSTcR49l8<(ha&mZ5(q*%_Lz-6(6$5RX2$O7`r`<@sXhf>>LFt5r48sM3mM z4wDlsT~4uWx=O=(Z=A}i>C3Fp4(UQ{1**XB=p4xb@n?<=)998)+6@0>4Rw0gV%A7z47xvXg$~N>d zzJy9J-=AmKBW6$X$_DTc|2Tw*rX~QGCavrG8349GPP=$96{C%hv!H)K2DgXg5>_61 zt&Ac8|P|R4`W#)X7a(w{f z;HS4pFHwu%*&=r4kdl9Iyb-H6jJM^EEc&C;62d^+MP!mrpUXg~>k2cR}Nz z>qZsLYX$egdsR|aATFi_nyJ=6HwL9D-nG51F_Mt*sJYTT{n7q#h9NSHrfOO(^KA6d z?Qf41dZjm~ic-^vI3wa4l^F3JZ_$iWMOoIj=e?2W(_*el3zG<&Puz>h`nA+EaYZ{u zfk76%z8?^F)NDkSj>>1hDMX8vcbBwuxz0*B0mTxR&F?%kDLvPz+|OH$=}?l}kZ4tw zY7!$lbrp|tsj~aJLghg}Nf1Vvu0=6VPb;*|x8Cn0nEp^Dwf0=9(jaeFVL8JnFjJd* zF|f4^;r{j+34Es{z?cB9JM3l9`8hMRX+IvsCYr_6k}bYhP1!|66!S+T4A=(fmU)@C zfS>cfz~UA=#rC!?XZ$YcuJnK|3}p>>z?cL12=KDX@(RT?R{I1vz-1>c|F_{92Jq+! zYbPBZ5{wNxInCi)e@snnXSv>eeXd_F&HBwc4MvoW3>;&C(UzcO+>TQmbnzI(CvbTqzF#(k??>h{RDwonV z7Yhh^?*U2cRANV~u)B@1KtJ_}bEl)D3cDZzSwOGLCVB&N=NILhsJ!3fd|Om(-#u{( zGpWA#U+KWzw#oUg`$x*EYgrt(e@N0=sqhk{Be!+#h=RR_c8H8G-VEfaaiYLsjN)3u z8@y8OWpP8Xu;`ikihu^=?hiD5g|KWH7a$L*W{W6`7E)29`bkHeG{NLdK`M74dC9ur*pEo?`hB!BP+3xT+!RVO0IB{O~EGm484X;(nb>7K8oS1ua&}BqZ>iWB|~Bp$VfkSiaOam{SRe z9Nr^das+VJfcNY#JIh9PFjp-^?aB;)XPvim&%6s@xRV^T_JCUXF{HmBQJ}yIc)wS{ z*vy$q}}Fp(6+I_B_RL}~v1XP%FZ(!6v4><*O0NlyZT+dxw>RfnH=qdnr{sM5P;t;c{&_RR;z9&ntLSM7x z|6ey|{A}NC#NDa(s{z2Afu$lg2h_*d!NuCwQ#$Ef7qVlaibt&o%lf>Y$cYxg$b5i)ZaSG8!AtfA zTpQRyeHp!AYxW)4*bTKXfP*59rvyiR;rE=o0Zjbp#yccjStsadJQyR^V;RRCO{Tvh z(bHjcWNlu3NGs|%^7r9=o1b=N4j-E_Q<;!#Pc%a9Huup{V+Mf{e&G09Qqp8Ot7_Iw z1-P-g6XYbAcaLc#-@7F_ z+0shaoS%YF*hgpmo4LOp`*WZ5)?K2*cy{uAPk{GU0C0<>EWBr-oyDsb{wJ-PbKNB$ zr$40r)n*mTU z>daEj&%(}5YjAWOTG$cB)T0Edoi*>d3-Oaj@uPFRt=#04&f{=e+2rp!du+EotPnIZ z4pn~VUas1bEDntx@+7a%-vA<)vn8`1cZk|pPDwtyIYZw56fIu+j%GhCIvE)I9e!l+ z$=CKV33LfL`N@9#7ou#(Fek=>>Nx$$!EEB_rJ*(HGVeDPP|Y}$Go>KZcM@$wK=XnpB9MB@KM z%1aPHPv}6B7?ipA6m2N+zw61_W!=t<9tn77)|5#FZVEJ8j1HUxxi0RfR#K1o<2*oP5jJJrx12I`Q zPl3v~Q#y0gCX`x7`351`|>CkDLwM5QmM055P=oLf@odbT`W3IYOV zABPH*0K?qNih(Vy_(t_+T;D@9p2YdjKcM*Mg1d8vMahQj0jeHU@Y6C(PKf#}>%{#} z3K8!>NjoZ!*pEwy6Mp2YW`2O^Qi&z~=ssDtNe=kz;v!wbyvdc*%Ro{{OCsBzKv*sp z6)Z%&=^aNtemMa`5bUUvQSc=iBRuEzo%X}50|!+1152M*axIf$Fe>9-{z3qh*1na( z`)*zsyuFj#Nb{rD163S!tq*_G(=@}qy(_wyQQy?_x4pG+B|LbjNQjIjUh0b~$r>Tj zwY1Qy*9%Fom^GRF45F4@+c?;kX4!rw*0o7{Hm1b*RLJ}o>LmS$Y)*>1*ipjNl&Ur5 zmKOVI`R;ngCY$V(oBhLdcZejTID>U%S1n9Z@$9pc$nx{M_s~aG77vftNe84V-!LOx ziQ;EUiq)PMZ2k4_SF;K#=^Y-bO{5-DyNWtDNQ19y{UDIT#)KsO12VU&N$X%;hSZG= zL3mgwo&Q1>bnRfbw~5?w2tAZ1`bM4Z*UJrM0Zy#?8LM$AR<9}?@WODFnz#|oZKYtG z!&C1)CkG5yfH~*sFXyspRrlziLjf=GYzZR#!kBqX0=orRhXFkdKIIqooUp2?OLCDc6(U-$pmeC|wfS9G3HZQDh&WOK2xf{2Va| zlWbRFpjv~NYWH_>ok{nLoz+R$enuuzX{mYmEt|8omp_7M%PQiei&P~E{gM()>u7ig zwX&r+IH~;(=03@AxH$g$QM#5(T8&AH)9`oN5hp0e<|W5VD6MfDY}ge$Ch)!AC$4 zgOQABlOx^FBS9gS__cTn_O!alULe^}k#p;v-Y_R5=XQ6@?)i=${pXe)6{1KPzd{p2 z8WlMr++PvYLn<+0c3Y~R>ObI2cyQFuNVwW-UzWQ;)2^IuEV_YFqg+j@=&VnRR%+(& zhF|5B70raBlg1vXewWNIy|{&j#`8#eK)41yh^N%Q-_;VoSN*bvWzEZxD~Vp3C1N(o z@y;>561Y*BKU0@JYUky4NOv|`YAaN!Cx4ao%`1x z_s$qZ;mL@I0vH&e0adrE z&eHm=EWr`Bms=Ig2Z@$vx8tI&T==)^Kv%<*y{<@#_|A^gqwrUAdY%$tbj~BwIrbBI z*A7sxSq3)d>6gC8>3LYDIdzLK3Q>(AD}lUa-;e`4gZq1A6l% zu4?9WZHgmV4JEFyqss{({jg-9zIme~|C!aN4|&(NX*$h9g$*zv*jm*-*G;8Em?FMw zs(T!c4zJ1dafD5FaZ5>Ubff_1vPHIe&&I3TySaDK18{}Y#8`^{8NI*G!h&1T2y{oe zoQC~?R&?=ynG{A|Tp78$N_gnRvX!)Z$b;ag&$$j&s((+uxGpDI|I2IZO!46d77SIn zah!O3hv;gWcMQ=AiRMCho;a|by|f;l)EKJBjY<7M1R@D6{bDD@?jScA7*1Ir%~0Ur z!Ox#Djv5b&^BReih|e4|qH6!(N0O@wi4|V?(h>d;{dx03Zg?Eb zwq2@0t2A#tSW{ZU6)xe4o#wq9m(49s1W5Vcrb)&qc2tp6gv01CG4Lm?8R^|EdrIGX%%d6lU(&AGG3Pnui`ls1&cS55d}%Hh z<)4n}9%f9B2%x4g3iNxnF64C(p_&TtB|}f)zn)4_c(TK&YvpzGj2+6aFf(4kDU+no&+frW~g{oRMrzM0( z9w`nDPV3vf=T|{-GoJN}NLq`iU=Z5XiXK#qa!d*$e)gQ6`%WEeL{@B?B2=cI0tsum zJew*Q70Bt2#0czZulrdmtOq%XgJvn(D9r-b4BHV14}yazJ$9&M7maXpirmo+-_Gj7 zQ&*tpvoqv!uxv%+=Yc*3CvSiM>-`jlSHhNB_#avfSk=c|0Pr9s-ULd3dKD%}a8+3x zzFt4G`LKiD84WpMss|w9k~Ai>eggL(>z(=G2W-elzmKR2eBIc2%>l9`p&XHS=>YZC z7FfMwNzZc65|AgGE+7r($FRo6A=*=UUxzMPPL9R>{sA#%YW3$Rko>VmL1BJr-8deP zFz%hd)t(*Crfy=Y=TLIHVf=qh6ca>XgBOkl6#dYI5y0e8A2?mke6?>`-pKf=03ts- z09z#Y3p@j2H97!S_{e&7=JUqyG=i{s8PC&+D-oZX%+q9zAD`Sr#{wrd9N-Je^&zk{ zjY7L1>Xbc;{xXh;37y#%!PtGKUw*)8^K|EsHCwDtnVw~4q70=}c6&1{>^s3Y(f$+= zCGTk_WxrnZ40k-a4>cxgXx0i#?eL}};yM`~R0~%jvy~7X-bj^Nk4x5)F32F$uD`3e zqe}vg3_dbQOR$Mg<3@f?-RI6dQ&6dCtTj3oYa4+pI6cguXMpsoO(b;>%FR3??s*!7 zmd5e?L9_24%vKae-O~3fv*8RMWU()eZIwx+6i&)B*N>8i-eNXb9UCg(;bXqPFEYtDhKLOah$=jOhm$XIpMOSfN@3znK+k~Nc%Ln$lV|!nckqeUhR9yMq|#XxvyeZzU*)_47sb5vM$JOX&)gf# z7g-t?6OOIh-3Re!CH95QudsA!Z`Sn?fEAf;UqckDkcg(UG4%E)bY4JZ4esG$1grew zGO7awK;EOelWQKF(14d1qbkVn+9$FDek4WI|1Gj~2RM9Jbio$`)+OgUSZAS$kamii;QqWd(kpVww z&390Y^zVp}${<chFdRT%9u>x%g05e8p;XXi8Sx%UQL zS^bs`Ux0`M_$9vjN5MC-gQLM;B+jbl%XmkeB{!Dnjbu+_olL z>=U0)ejTU3bWH(#ts=VoMXhq$ib zya7-zxas|(ch#R`!8KJi`S6Hz!V+yz zz$IwTa#lu^F-_Qa<20PO3IFX1qT10s5lswrdg#*1epWODPKo-R`eBg@0+Kdn0pwuD7dF9Oo-|g2PbmshHB%Ak=t#R-00uCn6FAYXwTNtULK&+1 zqUXRGRnKC<&fmvhT0auTJ18TyWq#FNXJYjw2L!SB+iVIJ+}XUz=T z&1QF<7KMlJEF0z&(19Hp2PpY?=RhGPiPBXsB{`EKvKDzFy0F=Aj$BWWn=3HL$KbgE z6My`09>shjd_z@=kuB?kQ6x4Sc9{B#2DY`+c0JdMvuFSJ1%64#J4OWY!il~lu-UJF ze*n0Fznq~|stcbw6~h`F_u9wNOBFpEZM75M71x8-9MX9t^pa9bEPIH!>GmM#yfmlR z102>+zLX9I=f0q~Z66eU4d9*HfZ~C%PHCK{dX@sE=tL1I2Qk7&Y`;%R*yTjUZYOD6 zx_IB5pbfX3H5S!2SxKA}McqL8#*f<*+EUs}=b2z?Vrw7}o2&)WhjuYXDvT2pSMW)5 z$2Yv&`(*PoH?*vkGZ8MMAfjvVZahG0yQ2Q4iz7zTIi-7QMeY;gt3bP}97V@N}*9Ol$1^<)b90ci8GEP_*of)l^XLJr{Q)+bpvTe}S zu3SVt{+Z~DXC>Ddi@Th7y4(&@m_Vz&>YzJs&=x9@iv0KIZZ_>rs`J@zv!m-~jH`DT zsNM$!6XA6I0oTupI_$4b{QdDlWjz`AA2M^Tp7*c~l(D4iq|Y7zBjAj{o=0P&t`@G@ z9N;=?8?~1+-NLNk-A2Zc#o3#10Ipa&&I5jNDwyrP#}QsFu>P@7W`K}4wgz&_n+mCJ z2pSG6_dhx%L+0sz2!_jV37Hvc;>el);C;8 z$TO9|p$mM&Y-z=Era1w^K0%6Z}@xX5?ryHOOM4tC(^+IB&D1WoJu|lmZ4{JvM%prjsf-!e3o7|GV5kC}|E^KZ; z?lVb%d^_gpYCNBBU1q@>58<8P4ZB#-9vEZt2`Qna?o%ZzJjBT5z`bMkqK%*%`!V7O zilV&G!eN#=gfu^1Kg7vci`Hwj68{5Qe$hGbUAgbIQQurR;*zZ*b)yaq1p67Y>sp23^CxTeqUPVZ`Pv~x+}SmzCP zv+72Nh@I=QiY#mTp1C4QQiK(}E81O=14bdIU=rl)7YI8Cv~0h1Lqr2q2lwYdY-Shut$_4~(NHa1Gqk(wEG6G`3zqx zLqN`(W>j4M0rk~r;b1>EYI1$PbUJA-<51zwV<`=pOXoVfxdbjt`E2vz%S$qqX0flZ z)l^-SUx*i#U5G5&GcQ$#Iq!```3c05<;s7bA|+6Lok-&N`Rl^Oz0VO~uk%u8-Rfa| zq#LxW=z0`Xy3qZ)nKM_q$cT}c?R10wO$s|(5VeL9b0orb@G#5KZzWRX_Jo+IWQI`2 zgj&AFm#0d85o#szB~go6BE~F!7=>|_d$&{IjKoJ6O-%@Q^=}O&t=Ct&pNFJv6lggU zy#^B$bxDY0=qwcNy2NEV6$-0-?~Ye!)WbOx5Ui%u8_2D~x9Q-TQG9uXh%osHm0C9eMgIp`fn#54j6RSmwE zbU=U)5W8Yo4LMYWb{>vT-Wn%bJpTt&Vq4~Z;RUhzn+4qFNB(zKArA=lB2PZUZht4n z?rgk_xLlgse$L_r=e+^E=_8NXVYhH(kAebbT@!1V-HyT?h?MJ!mROH! zh%Y9uh+$sp4Cr|2PS}T7yQ)CWq7Lj?8ly@KM=A=hjJ6oU5ReM&EXJH0*@4LmdX$n!T2a1ATqf(4xZ;U1G zq(NWU_2&G(L;>3Y47~6K;9kx;7g@+`;U$mOv(yax@&8zR>##PuZ*4d@MT!?Ev_L8D z6c25IAjP2+cZX7nYp_CbD^gsGyE_yKP^`EXcTKSXfxh!RzjMwf??3N#ecwPb$)03p z&t%qKYp-?RYw^b--{~l2BvvVkjH3_{orY%?EzxHkI-*tIyDZ(|z2Z6f*~bfjb?t9j z@e#1pWXvEzK3H{uXRCd96&Z)Zx&V`J+@K~28d{|m+-HsfIp%T|E&xa^&2xzoFb7@O zUR%VDg~Ogs4&uw#D59(6HXY5+4%R4MV3+uhhqT*ggs=eSAizIS}__A&I_uZy8|peqTVx1K7fAP z=ELt!$G{PS^q-G@wI68MpMM+`xUbOmEVstiAUMjskQ1GLG-}#(Xbftnu|9=f*!EST z?gLIN%ubu}6K%${eyfRF(MLJex969+A20)wXj2pTqBO+g&#?#OKB6{~I)g)Oo=FLHj_i8l>yv*#X3m zlJ!u1GMH!bqy9iBy2pbO0&1t~c16U4Z`dG6ogF&7a`(j8{|NKuakmDVQG@%cc*LcU z9*8f2eT)4O4!vKQ>&VZ>(AV?yWpZOenh65^YE1^ubpkI(ZS=UE6I^1Fq(9!?mLLd! z>~1o^NHH>q$kyj>Js60kr*3-XITSzp6MQMU4!$rvp?{ZAP`*`U2QNxCTha?>+( zJhxat&4|7rdGlRfTi#6W1v;zQdyx2LX`zyUcj!eKDSydkMCA(Na1{MRUwn23(YsOG z_l=W}#osx2oueIL*}M;uA38jp{4Sk2HrEq^#g}!MF*gOS1;lf4?=NWD&iI~!&=(M#gy3L1$af9~S zk_o3Iw4NwHPBHZMjxu9`)T}<%Vxu`@;<&q&hRcoN-s!Qo@e=@;q+z)=gTpMgHxzu9 zrDq<5nF>C`0ANfBIQ{g7VW|7;Esh|h!3T;P2EN)QqFB>2S#iz3&t2@ed%*jMnca}wPy^W>=#ARVuIV+x zDyTf%Mso?>jX1XeMA{Wvi6mJalGfS`5UE^T=%G3xQrwWh4-Ly5L&t$2lX!Y1+tM5(2J&tKGjNPwS&4d>EMuB)7es++ z-XTU8JuDWJ7r+YriAC|ObBBulQSnPh2W#w%a;bG=xL|rUD24R6v-gct&MIe@RgErh0VRpG%${9W6clN_gSdV1k0*cqA?YRz z-BHwZs=`tJ2aJT7J;$_Gl6?#BBM391G>mYvLWWY*%=@Zhc58v=$-4eFILRm&geq#V zUSxP97=X|@KF_$Fjf9pEzTZGemkTW=W@Jm&-JAnS>+oIthoq<&UG+QQOLuZ&e~#Vc z=PGOYzUddub|}HK%pQjP=?6Y`0ThtiFHp6sc=hG8esK#bYLG{++>8bhYXwR4c#sQR zPr6^r#2Tm2q*0gCUPRX`YZzDy?XX(sssO_lJq2gtBcRWPbBaCh&88ejbHFvon4oc+VMn6#06 z7*Vcp#aPpU4WB>kZ|W1|ygiENPU&tZSZm1JqpTZV#eK69-6@Jgci%0PRwIkm!+rAn z=aT^ey(cnEJoGVkA&O9(*-E{dWo+?xE`AZ=3rOf!EBM*mWLK>ZpkeFVvA+BTg->V4 zp5#}hNjyIxj$S5-(wT(S`cxy`JgGl*EoqpX0AW1!*;M1rr#cUhj-K#SAl)iM9jtZh z!8dqz+suFdf@+)urU%->8ZRsJhNb-(?AJif<+=d5xuq;AbDM_ZPvfH(M8;R2y>aOD zw&gr}{UzLN`W3qUC9l#>I=M!M5O3Zy!+tJ(eC&g_)=94jTNiFLZ32R_k@ty)RsG)t z5UM&iUE7y!_w0F-CdV%4Ob>X5iFZ2oj^ik=c@rQWkRh~os|YJ(Lc312UhLR>z>|4m zyjWzgo77N)b9g0U-z(^uR5_Ixx2*FG5}rv@5UYJA_Bs5qs`|8!z0EQm!(Y&B^C>1b zBj|jxjS8DDP%e3TQk?9$2mOi<#=eR+$Q-PwhS4Ywr!VQ3R?cryOm0o`d!@ev5JKYv zSeF^5OFG)XC50U0l71xwvSS~i^d(!4+tArKf(*^!&Sk_@AxKEcngAQ8fx!g)Qq!WkIqQS+N z<5HRSZY|$(ttf3owh%fd+8CJD&x#i_^KqD_guItC08(}?zsRwpbLDarPyoZlD19@< z57T$DI`5N!Rg-XlV86OIa zGj>^jf6XAfEJFM9gjGT~4Jx@0W^pf#ZRfjDXP{PrdE zOjfW(d&)?;^`{~N^9?pxD{bSB#2DSTHnA%fFxui{*vl=5Qa<2RvajTDg^qu?j0z(w zKg*{efL=cWhys>RSl74r-8b(n&mhNN-Oi0arxW-%F9SS@+G_Awr4xwWtq5Sr%)L1D z942Xrv<4_=zsd#%*}b8bbXMUb#_sO(iSU?k zzy1>OnTmc~&oCWe42&vlb1x^@%6RRMw-man{bG2uTU=Coe5!(%gEkjqt9W99cD$_7 ziY_G{AuYO?v!)eJy+-GnllyM`kDwtaGU*UiqSJg`H~{5{zsRTi0H-c;1wCdvcmy)< zcveL%Qbe#DQ$HOvOD^h=VJ?`;R1L2wTvU0rW|l07;f|xSrRjk6`XxD2m5?deE)K%} zSuKbap{l^>TGyBV> z2i%)%q;+I__Kjy9ka|%?ZBhjhchnMpSwXI@_Wr-pS%8SCC?pSmbU7K%&-DU6%j+L< z6BU~gbNw{ZKCuJ`Rq!M>upqa0YC$)q`&0eWxz=B=Cx~|E`lOy9h=L@bu(feYTY-5y zZ_BAAV?6@`360#vVduH{x!eO0#wo7Nr*az~RlV=|foW9L!;d!`*(?{$;dhx> z+Cb?SVimh()5riZlXn9eqK0lbSLH`I&o#3rJHP|zZ|*p3N#IoLC$X&A$h$9dS@yWJ zS^&m+%6Q)>aASw{%6RgO=%>)|CICui_mQmz{O;#FE{CrM8H+b>)XJg~c%gRA`|(*> zNqzOg)KqJwx6Z1V93(d`%8{Yt4Wj;6@}(;V*qMNtj>vgpTJOq)9r`M2vw9;#j+gxM zLWog-URA|&l%)9mwK+oYyv1u=GlnhiIh=X30>t=9fokiz5I;opVojqs>g6!J$lI_5 zqZ7*7Ab5mffd{Za8px8UsK$lZ9(uKV&TW%< zHa(&k#ku0dv-u=wn2D1WiyT;(5uq=1Yr}HOl7I23<`%~*ykD3|H$S206)@I%80uOe zMv1rRA2viu)&JJ3BOLKf{X_0?d^0zE%Zy3Keo22gS07o{0a>f3eD{f8!vFavdRk0y z9ej#j?A<){ZhEK>hIwnYrr*B?BW@_q8E}i_Z=r{I2zib7fl0bT9>8{h1MR058`Yzj zg2B96UwTAUANZ`qEor7=a(`o{JS+%>zVJVADEEmTH zP=(jyyT;ksbwKbolVgC4C22Wc3B1DI=LQ+>%t!u0kPYA?oD7>Hb>p>#Y?E|ACOC}l zMT91)`CJaZ@pnFpf~)nj%}Y?>D?h+TnfGSYOE}gM zWNTwMuHiol)?2H;!#>x-qW9w%POM)P^B)!ieAoK%=z&v0Q;RaMU2oF{&PMB4T0;$l zp;VO-FI1o+J>}cN3mqbNd0v*D=vj=+4v&x<-(!f2Vj36&0|voH>|Zk@wq=d$j@Pm- zyetTtNA-kvOS+40sM$S-3RZf*ey>hgE+Us;_U*o)moD2_CYy@YBb^>xGS`6r5-nK5 ze+E=n+&-S3ddoF^bx~0Ud*qq0_J~VDvRIL}D8*(M5?97?_7kr0GWj=kOTaay0x;z7 zd6uas?x|$zj(s+12CYqcy+s8Lk8>PhvKbfO{RxUl*((j^c%IHYwV zNEEmzJy3^mA5Dk2@o>dGyoN#wHS&d;Tk@_%x<9vY{7yn+jIz$4+1o-`AN3cJ&>Svy z<_aHqy^B+R!CLhGH~@~qYcJ~qW}50%^L0I~4YT2nXLo&Kg`-JRyz~9JfbLVU)x)WR&XqI{(w6ZdE{80H+)23sd+j`>C-VtAWdRf-=`?AuQbi@-g z*i+*Q*co)oMheZ&{ZoEH4P=DDNOBiXgCFa|0lt$Dex_=J-yqQY!fD@-l3 zAmvyw@8ysrwq}%x$>cS;-rIuAOUWR>Z2KQa=syloYQfhwBi2+*m?ZJW$=PRG;Cbgx zY|ly67-It03{NG)Hpt?;YSy2HMlYGsP<-;Apq6Gj0a`i-Zsy3l?oJA1BEa?R&Jz5U z+ckNqZ`IV<@a+>lmB~Gj-*$@_cVGLFhg`*RIs#o5C%r^UJVNF|80p-kfJT_d3?)VqZ zdMRHT_}tW}bEVOESchTtlC?>eEV*Yc!#LEV|fN+;5~ZnE!6k3=^RAAY+p1@JoeiV_n;U+!}uNddSMaA`>3Lm zz*n|4sy+>GiDbs9$}}(xg$>2IC?iG@A;Q7?0=6||a}Uq?hGKnX3}#BT83ql08LB*c zLH@C~q%8Sr-mw|Q(OGk!b(tU5HdlcjpZQDApcy4VGn-V^1H;}QjU`5@1WnOxyf=%C zb>TdKDf<7YGIf#J6qJ{a*9x5M&=}zN#|^>EMwVpLd-k`xrC1mF|D>Tl7pjVM}3*O3-8g=cpQZ&+`ex4ue= zo^<0~pGLK6pZglmZ7X>ZIF_qu2gMb5g<*mf$D-vGvjUHHX_6D9obGd7_3y^RuQe9; zQ%FM_8+r=}bnah!^nYrF2BI`w#L8*Nze)HWm7zv`AbrK1%)dQ5->j>Wyw_i-sK+b1 z6JA+)|2nY8{hiqx?9+Y|!~V@oNt(^RYzCGZt-CuOjpY}o*X|qb`*%X>%ZFMg4dy78 zGbmi_bF;GvnaJ4FZwLVD{uEr{7UzpG>qufTE5v69>ELSYxfvcZ(l0}9u4NFI0X`4Q z??X?id6hP)7RFH+BjfwJSHDH?lPy>rd^JlC9Yk5>Cr+yXJL;)7)6wZ!+KZ)1NUQ zRvX?PM~kmP0$nG>=vCpC^I&I+k_T9{G9}=5cfjw)T8;Ln*aKi4=WxZYX?p*#(Gc)( z+2W9^(iXSYwe=gy{xS*;SEs;hxCD0E$s+g{*BAr?a7=z~Lg?9`DtOkDzLGG^r8V>- zE~4Z7lOlEE6|XzjzSe12Z>l=)9*lT{Az582#0 z=4BTp+Tem?H=zwcVnfpz8pn;U=*56VSJ>ml;1#a#aeqNu3VJ!s#!-)7t|A`>y1_T= zMf%TI`*O=^#~0eJ947Ov5vzT%RK{o{a6@Fe7wH2BT}|<=S&hZnDvAt8I@=NjBXr`f zi%zSGNKs1#U<4MKOBV$Ps?GPm2ga&4xLzt*#rAhK2vsDarNjW$&KKh(yWJ|yuHo5r zm@%5V_eFxo%5bePKtbA@`3Vo4s7~M=0McKjCGbsNJ-dygS7VWoD>!1 z>ZFA(E1agSOhIfjDW-F}G!TF<^M4FEgdtj!A=`#E$W_F- zW)#fy;ir*++OoCQ^u>}8#$5V$r(Q>>^Cn~wt^w37hjnL?j;j7n(L+WB z3Vm$jL`nVnaEWnsY`*rcXubGrT=tTam4(0OkEPKU;BbmU@KMhh`n7txUJFuaeYT}F z^Lv){P5U{amlYCZ@{W3Z3VnB>A1P}a2vMss}3lmC`U zWbpb>zIe4HyZ}XtRLvD}q+IU|vxCY7D}I(oy`FnxzkV-<)<`Qd@ff59(!LjXJ1g`~ zdrB~}EL0Nn$!K$M0i>lCi$O7e6>huD0@Y+M^H`CFf81VRrX~f<6mG4<-%NiskP4zQM z$)?&^zu@}@OPti?WE)!2+8If59$Ic_HWohyJmr ziBB2ZyLWrqf%Nv*CQ(s3!>eZ+#`AeRu||&pK`J`CQ)L~X!790*wofe8t5gUHoRuAV z;q#}f4|n$K4NGO;@Js0C_%S^qzc(AZA^Q=Sbcwunj=JK+iP+h(-nSM28_W5uk&W^C z#i~~~&vjY*NV3Y>R6Wnya1Z31SJ=V!Or_wMV`4oM+Fhk@$5}u9!ax=FLyB(-bGEj7 z=$U-8=RCMwV7Qv`E{LO-O!vMNX4yrgixlr^%GW!KFe0;M8Ti_yu{bb-FW2^EQB?$o zi8Tr%VlQK(VCuk{s);s#Ar~o*z;BCZz?5?t)tXxQrQj*iasdFcf@If;vGkZY zk?^2z%V3htuZY8F8exj5HR_T4_O4{h&)o71qhF`0;j-d6zYlFVRs4ngl29JRYE*B5 zAT2wR%S;_*Yby@hlh5mXlX&F~OpObCr5o%G%?Ez7hlQN|Nh8o~#G}Avfw>NPaJAHUbnJdQu&p4H(+P_$tB4lqy1b zEayXkNX+k_Z`#^CHfwvycD@y?`0{r8Wj#USBRI6FZ!A}jbnqqjawp95W4;K65LOWg1#6 zJRxXdG-n1q8mBKQO$2jE^%ZTL!VlML=Xz#|+4fjlntlDzr6GzH&Ks(WL~1`Ie@9xj z-8H7y`~|_NKPv-MLb$1W$YFN9N8hn>>?(=f6Ja|)=PP>|rt|U+{WaF3-u02uO-C1_ z7WtdR2U4PNoehD9Kk1*1M>JeAuW8iupU#CNN~Xuld`&`U`LZ0>gCM=^4I_vCf@cE> zdOS1_v&mPUcS9~4smI+Y{6K}$aUh2C>+EQ~!5;RRf9y*sc5Zo(kFfa1KW+X==5olp zJ1Uz9u6C@ol_w?{WuEry+x>$8A7O-OS7BJyUGfUb!_x;_h&XtifO3g7Oo4c)biEwe zotH7l?$)e8>7FSnSLOPOBRb1fUgJYB>^>;mrlLPs0d)$l3LDyG!+Lp2tabW9Ibt_O#|d<)%HJpTM`_iAxu4iil9 zF!&qNsyUc&t`Ia~{qWl=>LJOIyHm6UykK1G`XnbisUem^?=^J#&908#@0a(b4R5)s zy1DRr^fPbA`?Q7urD@ujcr!JSeWzu|ad+$iD7`i$VZ%e-Ph?p)A-9&ed~PnX>T0y{ zY-ap({V5I-N4cRnOVl_0-fHJePE7>UA(UV0W>Z9JhT=LHX75C%FBwyU@aSIDuFvtR zvGpfxj*r0=`F(936}Z%(+m3WZEUB|ERvpV)nz>y2im%D%!zWghC3PpeEUUteSP~tw z>v{V94AUQU_xW`7IegHZY^eOPONQSqXUWbFG~9pdWR!mc@QUhpzq}eV6pSWQ4OE>P zjnKTE+3&J~Jd&wkjr14tebx2u@G6$Huvlt!4*^B>yDx%KWE^m#7m)?TGVy4WI z+t9l58%MZbAtkubU5ph)qCe0&UEx7_q-4)D22Fq7#V`I+l(ut<@AO#RRr}ldRoPkk z72Pi)l#Ud4eQIoHCkrz3(NdRi4E_1Wf|!NX_zmax-lC!><}Y$Ve-oWrwE2S(D)QpiYG5uFj+ zw1;T}(IYSC5Lj~}Lir+vzN2S9mLjsR4G^Ir`Vo1dxgRE6+EvM+`9K5Skbpadby@L* zCstV{LhI@@0YR!%dq}$FD1h}a2-TMUetKWP>~spZUjHN2%q9AuJ!8{#23-v%ZkBq6 ztl2nR_SX4`h4zCNQ?z2mU`J!Kxvek1NcdSh)%%olh@wREL}B)l zIy=pENay?@F$4RTY2hf}=3H=ve}m2HnPS%hs}g+4)z3ry^6o?9CgggL#jTYGMfMkT z1(|3}cM1}780qTwleosb_k}b58hZlWWd2QfU*tx5&)Mk_)&`ikb#N3gFh{n`AK2+% zQFP(UMCq6o!g`)Lq2z|^{NY)g)8V23_}HE%D(9}cH3I_~abHH97o9J1QTQiCbSOW= zpcoZ%R)iu^>Q_6?hTcc|;(X7-O}?ci?LD`4n(R>hVSFY(9_#(-%aLZcH-YjD7aA=L zH-{Q^co9HApswyN&a}?O@$iTQ@$3`P7nltPE{|*FL$eE^`XRmp?^UF6jxm2C;b+_aG<*{AXYx;6|geTN>t!r%gm-4>~vYlP%a+$ z`r3WmMG+BeFHW1tp+~vl%ROfFj>!n_AA{$TlvgkBlTlJV7vq7QU`&D!S>t1n8{!7n zTS!k;h!NOvk@d%45Yb}Ob_qC)YGQbLFF<(_|NA57Vk6=O#(B{LUdtW6s<}JN<}~D%Ps}wj8DW&}#2{N&Big1W z#zc00%eOL-;k$k2^W%!$BI0(G#kl5e4~w+4Nf=Jn+PQIE)2wh>Qb8l-Rm~_SqTWT8 zJ*YCoqy(p!DN3goT%U5pw!!oHfx88f(&I$9a-fHu1BBmy;_4~X-_V(xs3-hN@MJpK z#hIQ=^a(uYY-K5CmUW_uS><|pL^9CD&h0YWAqT%wyf3&+kQzFJy_fb``SBDWOoY69 z_y%0c^ZQ~qt<{$y=T5G~ArtaR-nQqlVkxp$| z-o_pq(;?k|G9}WE3PT7ZAbNYQRY+#nNmG<8qQ?uuue)d1_1hL!NcjdLC83Yd8F-*+ zf5Je4glrspxDZ$6>Faa8S#F;ifK-^i?CV-|(ZV`{SV_Ldf_MNrk49H7@$}1El+J-% z641FgM)j6oqgJ$3DX)>S99h<^}y%1gNC&^uXz|3IP zpc&xrD|zBPh#NPEsUET1vFxn_g~OlpoWM z0cI0xIOhvcelR-(|H%KbukOs)sMA#=Lb;dhyk~tJ&$e;cFED{R!{4joC(pbSJd1ZR zUmJN-g|pY#nmK~I`nli*pK)8Oe^}l=AFk`@v)Kjc+0s%e(I8$!gL4#~!3bw;Zzj*f zqemN6ppl58%#wGe(^KH#GP_xUE;*x;~RL0>bGPfIY&rhX4S9u&#xMpPf6 z$5r5@!(8*!g@OfqiXUq1Z{qE`F9+JfYe$`P}(IP8`_vn7p@cq(pKA7^lbH2 zHIPHtw%`pl_4#EcEfT3hmqa9cWBjif5SHP9x9kJEk+6qbdGRX8dR^QtjBMr&%&;zz3dGE1BPO5RV@ znuF)h+()FBgoTfqpQgZ*BWrq|=DI#mD7PZy&wOH+N6V+YJQUPS4*Lrik3GCl4lJPH zMz!o_xt!dz?ykIiYhguZLOG9N^z++jhK=9q0I zoN!mCv}Hc|HD9{uf|27}%bU`|dWRHgd=c@BJuiE2+a z?u|r`ISz&P6X}&7UJnc}72XqefE!cIvH~l|8s4M5Wg;`S-?v%q$ia;1KD;s4uJqfm z_s3jV4S(Cgl(i$#xc7bd%}C{6{EO|oUCz~piq}g09p7)+lR3LpZnC4&{KBjL{4jRP zvX99sWfVuF;dII#Z+cILylB($e!VbHi$E;Ax^VR`ZJNrsjGAgdeaZu8c@*oP8W2^h z?jD(k*0o1CuX1F23|}=eg6+ieMG}C*D674DTHUyNn5|4=Unup@#B}lLf8iQbw5>Iv zPjBS5-ki~~xU}+pdE~BldO6+WNUYSV+E`~-1s$~iOCWZzqVTot(MO0Y+6%aB++{gO z>}C!~D_C~t*pB@bFk2b9EejLxW-$|O#xk>IP5#+8slbUb(TZ_`&T%^b@M_T06`{kw za!gYUloe;weL1lbqR>XPS4mpoe8MGZSawOdn(Z|dQQnXuz6CiwFrB5~#lP@1#PLrV z{n5gZ&y@DLtl>`_*U2z*>{ReVi>x!lhpy~`h&8;AclYXit)%%(2eBb$_5OD)A|6d$ zAuGZY(2Wl;HoM5%Pp_f%A$}EgM?TR`@XXxSHpxs~Pwe$JmUfR*t?>_nPkuy)tr{Da zPp5cy3cYX=lYkDj^CUSPXYSq{8Ya#J*Lu;B2dp}MFvm4I_A7FGVJySCT;=wHX!TVs zxHH%S;)|oe&>74;CqS||Csx0z%QUyRT}wG|noail#`MpljrhNi#UI=s<cyCT@gtaG?+@Y?9jxR0z7cF;`)P9IYS~9)%obesUNbMmpjNk~}7_{&g zE#%5DISj^e2Q|M-ns!f)-S30Lsim0pm*9#|J}m9>#tMYTA_%|<72EmN^j=2_z84nA zI0r}Yf){F4Qnh%0*Y_7q`Xy?psq0S0-jh>yFH?GVC1K(~J@c+@jeY`u6Z@RkWxk7h zDW=@$Z_G2FS?)zk{{iJylBgvXPY;Y62Sr9b_h#^vln%kcin)k30XT4x%HX;9rCD=; z18LXzLZl48EsylilKP<$;nDjE29;^aIMa1j=6Nr;oZoanWR&VtJ>#jiMMq@+Il{Euh48% zD_cpKej@*t=HbereR-e+f&Tu*0R1y+;{oIIKg(0lREgMp5jP0*&*KTu^8X&S1-R`# zT3Y{||GNevR+Lka1EHaVKo-Cs=B+L!onNYTuX(Vv+vSga7*yXF@`T z20}+i!vGHcUmMXtBv1KXF{+yqI|uRt`#S6SCB2ULy9gq{06t2BK?0oK46qa1Imtpe z|9|#|Hk9O@%JgB3si0-E$oHB>JHbttPkA!QV^SIfLho?X^(cvr;My^@7f~Pna$0&X zA|9TRx4+0!v(qsy2?D8K{(7^LraHPXq9{Pv%CzjVO#i1MiE9pT)M%XD<#*BcEx+~^ zh&n7ct;O-30nM+FeF|>O@#jn%`j>>>E{^v0KR@;70pLkBkhy=QoPliJlavXW$|22~ zkmnX>`h|+WX&iqR-=uSD&4YfMlV2j(l9#^Qr-T)9CMKHaW^jE{)Rxp@&FkobuS}rf zxOqW};&%w&MYQUXn2QPo|5A9Sm(yDav9i8b>D@jA;aQam9N%pFjwW-f;+kfp_SVHO za6SK1=1t9cvGm>RRvP2wYFc4l8BuzrKOt^zO?PoYX6zR)>02)z&#Dgdb`U?2DzgSF z!uD%0QkoECqM$JJ>|GmxNrgVo-Z`lKWrGt+f4E_v1q2uOnhzdtp&k!m4kM@d-Mz_T6e#>WlkobwitY2#`?OmPz)xe;}+^H6h6@GXN# zo;b(dwutn5*T3KA{PlEXKF?lKW>vs9e7J1~Vo7g2Hok4=HxhuQqbypLo5=&w@#be+ zu~}bbf*TEm!1EBCJK`4tZ_j7jcI-f)@vGfJhe946{coQu3qMn?a2yzlCS};TT?}YF z+#F5~IsSBy50eIAYwvAW=@0w6$DLgyhAX~}Hwk}gT$d!t*~*ihx1P2JU`l2Oeza^p zi6xSLy1swZf#0m@?q~gTMpQchv{c-8@1U^V7S))rL(q~W+seVqkZD)eA>`O82Pa`f z!*KJ079|nT_!i}S*(?Am;=DF*R%aMeu9rFy&gOUz!V=J?KDnj!N*hy<={x^L{5B-y z&v`Lc2i>gL-HgOBBZzwJX!>5e@z16AM;Yh2xGRe<2`7}Pm)w#DDZVNvazk4lm=^leXeSW^2dyOviCxbtpJqp~zgnOKIE(-JT zXchVe;DoXsuD=?luGC03)LwE<#ZMsJi=0u)6gpv$8|wz)bw(8XxKy7en7nq=?e}vr zHgKM-nKKw_4gZoEJTeW4Ajvyt47ZQT2z(EMyWPH9GKTywC#NxY58?s;$R`^0m$4hm zRW7m6`!}6pjk`?~|Fr(s0s$l&7Z?`Mu+ZBtzm|vQq2HoEC8;`QEt9Nl6#MW>S=Zo& zxPKq97lm5R9}#-l#RXnkvD^(S9A@RQ9BCgXaIIxSw;02Y3?}Qma(i|qOoQ+}q{JbSG1^H=W zdS2%2SB}%hPdJ;gU&f!u;kc&jJ9bRB`*|M9EewC;`yRb0)@f1@WtHHPmZl@j7n5d- zw&sOhsGY0^=_-p&=-f>h`l?)H02$on(4DXMVasQgV*g&4X7?#G8+BmwsnX8sXEo2p zo#&QMS)~{Aw;4!X)zIh6Of5-!Nv+T4sb6e!XspV_B5GqiFoFV1mk^tl^9)KCh}4s- z+CMr{^)8xGoa*u_<6pmC27P+P`(vtFwO?iLMx`|fhy8t!^oQ=cuPL$crmBXEuXV{f zs3qo;Ag>;n^}841QB&@MTch{7c{w4g0lMKcZ%&f#S8N<|>N{$Mq2f}?Otp63zWIg- zyl!D~-z3#1c(SXmtrhezP{g?~_H>mu5_h=-V07DSy&_$UUfN9Xw6Hjmx8yT^rakt! zMfT0{!JEYDX3OeF=ls_igCx^Y=}XlyjOkT*H%Y9UcHfijbi?!Y*`}r{F-ARSAiFM& zi7|l<_jykNN1Ken{AHdU2f2Dg@E zX5~2FBJe11jEzNT-L*cPY`tm7dX>94nm{jRlV&tVDjHb};*hEhRx~(@*>laZ@#CSVj9WgLH6Ku8U%0@H3aw#dc;cYu~sqOJ?{` zuVmnVoW~1!IcxYwbNET4vE?w#G5Bcj+3LLE9|f0E*sJPvKKIK;l0nWp&pue@?+xYq z@H@w3&Kbc9Ro1e&*VpvGEn!nR&dU799>-8Y;^~CHz$L}U8nmDbqZHtf2b-IRC*oF9 zeP<&_edGAWJ7s}H_IktLi%S&;sT93_0J$h*E%X9f2GP4IeLiGwv+Z#()(P$HZ$>-w zZwSGkk(H32E7j9Zl@Q)1W3CutmO9adPj^C$@D$mL=PFvtr&bSo>T;(rGN!2G~M??^1~40*$muIpU8VfiBij3@c-vcsybqi<+K zWx*)oWLJOopZ5(*LQS(<-VCYK6=NYs_a~1NOhd~c!?U$-MNYAcFMmWcq&(}VXPMkm zxadpXvwfbbY>~E-LLektvG8$I)$41TDKvNATgLmv(b$ec=n%u6UBT@65`E0I+02t1 zuEc?PwA_7n4&6DXwV&RS_)0gNiMm|t8n!_+`Lmn4&&k~-CuSI$`SK=@-boSfKTk1J z4d+^$xagtRN?WnyCil*pJ!Ey5>dP=j=LAV4k{QhZ40jfrKeR8;!~ptCn<-cppM3b| ziSV^SOp6Y?msHum7Xahm3y}Sb#9;X_evW-xKOMK;ZJ>F!zh-u>C2h-fl79?Q)iIK+ zWH;Z)S#GVn!UZ*8CFi(orLy?uR~ecL^{jWDw@TYD>f?gyhol=onhjm4qJoujLlx@n zdqcgA3HX&O)>KW_q9;|t-ja3N9`XC$fI$t8A2M6Gg}d*fcV`-YSWxypntD2UW=j9( zmoUkyAkwMK-Zf>Fz)31UbkHf3f8LP&X9F4<@OmuM%Kb~PdXY1@n^GiSW+|0dWqbI+V!xUH3M(#7NHwM-evP0Wb5f?X)K=i_DEs#D#w6}Ac{ zXoxOZq?zoeikD9^KQmD*ro&sFa_~-x_4OGQoULcdB~NayV>2J7V2&^utCXvx96`S7 zA=)`jT?|o(*r)3v^-aDue0)!~DA-zXPv_0=#;;DQXvvy{Pjk?YL!+zr3-6!J-v!>b zR2bu;6F!x_WB|ET+TaX`o~RgxwA$9a<)XwPe5vqNp^pbqILuG0pu@-1`@zq#_)ed%k8qpfI7 zh)FC2O$&DBr>^p;9GaIMq)s<4eOCoUlip1e#q2bRNI{oMMSq;!Q> z-{DbUc6ws=u*s75)j~gVTT5)|%)i>UjPBqiWi6!m%3_ycx>SBDA#u(nG5$WvMtKu5 zTYmRF)wQN=^TRjkN84!mE@rn`kg=BT4U?C;@@;t|!`V`F(ZAp7*S!xKXm9XmOjyZd z7;X@aDb-gF5ft2rpy#q`2rjz)GMN+jbd_FKF=}TT82AmIh1k3jg+eD+w~IS;4_!m1 zJyH*Dl9UxCC1c!5nTp&L$)V!M$qMVQuPwY59xuEoSpDY1ny!#GtM>K-1K(D=5MoIA zv}}m;Q_YaKPwq^~oTY~rrO|QtXHczsub9romd1A{EgxrN!Zas7-4%VQCx6)59gHv& z$!#Lr7st`o_NFA|N#|SbTC4X{D_lBB@97hxh@Q#k`S?|*jgXc1c;trM3FwV0nfr?F zymAbuSOHz2YFEP>DEnkzVv7~;FIJfgir!k&8*8n$7$i^4bJ8cqeCuF3WltN&jDO0T ztio|g;Ax4+&1J9T#P0L%MZ{Mu#T7Yj<78XAlZg6s`AIHDEz_43G?y~fCv1dv3nCQ7bGW07tB9%PS&X`y zXK%FF=iCQp<$0B0wqA5bi}bdqi>Cx%_5UEpd3!<&^fG_#7@kMHwOz|1F;DZ?JdJJp zk^he6C!}zQY=_r>oz%s!o!Ru$2iGi~ zDm$l&%lQwvJJwqES*joD(v{7zH8dTF=oh1PN~LJQDk2{em=bk)Rvy2jz+@Ozi%Fa3 ziZ;+-KA8vQ(d)A7h+)klMoZm7jt5OdM>{2-v&xRJ<)DmCh}RXoV1$RJGu|@o6S4N? z9|ctQ(3@oDxH6iEOZbDId=bhR)0JL|DDkM}I4^BX%>Kxakd@U%L}I{kWW8NMj?alF zup&|uqv+#6^}TF_7*Fm+E1XJxQ!6kjV1y{>`S_aon5WA{Ol8jfws&~p$g3*=FXgQelgtsY|qJW#JsxWwsfm@Z;*3+yyKghp(=I#2n? zCgU|a@M4_U3b$kXaA_TfcW-q!0iH$@j{C=gC>M}inUzTN#QG2+|SI1d& z?OvvEsX557p^b7wvk=lsXmpro0}?pL5$qJJat;p+fzhj-u>~ z0~znskf2@52C^^OGD3=a(e0HFJ1JkYmjQPyo0@CETDML8*U;+s6T#w{irV$jk7LUe zy6x-Tqw1p7S>=Km-s2jOj`E(pUOlI+8iAk)5^P2(tNi` z&-$2px6Ch?knb2}Ts+X`89u2xnJ2~9JU~-LJ8_q12)%&~JSkhz*{%j4A>se3S-`IY zdAhI0)kB&C`FRQ9KD-MOyWNUoug88T&Wo4MHX(SP^av} zud|dl^-BKzuDvymybSql1NDnVG6%#w{RHQ0PQ zy)Tj@Vx&WBd3o;36qyqAq;q+?4o796exx*qG9%v=3@*@=y1Xb@X!F<3=G<%HbIWOB z&*`!DE!%UvOSm)BAcdGkEfT7m8p^?v#wIU_b;GF7mo5Lupbe(e*scC`)}Yjh!WDST zo$_s)gUL^frZVjrojPheqIaD}gu#O-Gu1LaZNl=x50Hu)_i0|g?6;S*IhIHvqOq0c zT&`K+EiUs#R1B{rFFpvCZc4P5AEZq*VIGp7YNypI_PkIMi=H?de2FHE#2N`J%{00f z6Pa0xVw_HV+qxdH=Q)%6h%hSKo(BqRCtkbOvd}=1KbS$r-L0ANUVBi(kVtKN1r)C!Gqc|t@i4&(A*9SI*updoX=r*BJp{sd1LALZF+TW|= zd|WRIV9$;%$~Cc9a9wrz6ocAOqHiCB?#n7Z$a!T`P8xLM*n`-Rr0({u%RwbeJ;w(m zYBEFj@l}WuMHyvA9_GN*@=Ut)mp`3uuDCwE=gWgZOfhXz{PN~0RNtcJBxNSG`g@;H z>z!{=)l)02YhB!x=@%K%<$g~uLf?<1?o=LlW{fQ?`vydbn19*Hs2!qC>Y=v2TQ@lQ z^#sd%0{83Pt_+V$RrlZwFs}sd;CRk6dYD7e)>$G!C=L^d8&H?t?DL+uFNwE{d+%%Z zt2IfKx4YiMC?V@~ZjG=TE?}@A7bSBY^1i8pU>QkvOr2H*8KeF1I!D9~hQv&hR>GJR zO91Cr{7QaA@)#@F3pa;2$d2?`UJhX_zDzB?e7%k;BWAc=0>`4l_N$Y3Cw9K#X_qR- zrlYGU@%ZDfJhFFJ6*YW|z)6w>lY4z@Hwyh5-1nhprPg*!E;DKqof^97O@ypiB94xC zp9;y7esLWMX!G(ZeuZ@_=A=kc2;brcK`K9 z7GG7Q&iV-Ued9FkFtObdr?0&?oNN{PhgCTf?hp*BvLn*^wyghJ zVPjyoyM+*-59m*{eqA_(oZuDX+hk}`o1o98HTI(^p`$T@rEq~b;js3@7C9S7$Ku*I zTLvHe{Yhk^ZKsL-p()_fmgHoR$j)(LFCkAP@8s)`n#9*_D%ep0M@A52B7J**3xB-e zcNNEBuPvMIUec0?k-n1G9z9SHh+gPW5|@6>C8qXZaFV$pdG;tZF8h(($+xUfapG;h zpvWNg2RTaIe0FQ0W@7l?80Q5yh`-}%b7(I<<5+Y=*hI7sYQlZWQMTt9Xp#FJ&E}ca zQ~kb1J2Qb{!}o4|sJRub5=&{i?VQx_S>##hDkONaI@Ys;r~%s{>_ek8Yb=EvbBma{ zF^S3Dsh_}*mG*N1vF>NfFAk0aC{rz72;CjvuB9&cdaQ3`lAU&m`KD7B@+D$Q#@p3%YTsApczOK%b zr#Q|@l^mji|E7JK(N`uz+|`zvXV8zJuhr%IQ3Qvu?R?O;CnFIG_LTMChv2b^vtILh zDG2hq?eCI@t;{u7vOYHTXd<;KlBu&c;AilwNvpFYXnam8M`h>fr+f5v)~wGnCfOG~ z%L;KIrW~@1?1P}kn?~fgM9uRc68as%)+ixN;=uGSv;SF)!w>wg5=y0qQ@BxYtInL? zxjL-gi4|boi2n(QUr0ott07l;SRDQ6Hmn`J=%wfuuk2x7+Vwe&7K*aH!@))12#c?t zr{rwhk8UfRmRY<8h`3SR&VS9%;qMCD z2dbf+=3h)TA;j@dmT+S%FIZB#%f9(vM8sjvIGHYkhPNUuTQ#ep`{1cNBePu>eW4yv#Y& z8M;OIV1m2P>G?gRCeO8jCtD#cJyVs1UIc|I$4#CqmEOkQj}o=Y^_(rF&b2q2Dm6GC zheVDlYl+LJ>4i)G*7w2)rdtk@FT1T&9{YtRi8!|ofLi!+zx-O#dT<=UjgG*h@AOmtkSZOwCx zjBj}^JG$$`#z{J;LCVQ^{O}cYDtDWHd^Nl0hn!zxg#X6FXH5E-T=_S6MDB;3n>KlV z9Ofz&05-;JPrx6-UpAa8aXxSRW_)s7A3zK74ZG)cl;ztm7x3&SAlpHvllxG1T*~LD z{}_Lsj+LvSfc#0>mW7%g6S^6*^OtkSnCBIuWZjZ#2W*83RnV>1_sK*vsSlVAxk?1H zntiPXj+XOKC-eeQDVe7_rj|U<1FEd1x~H)MSyVO~tL{B}A~#O{nJV5WOX_8|I7(hI zHy5|_lVhm0*X9GSv*p6`$x8KJFcfKGbE3rag0Fj`*s7RkOsCm9OSZ79*yAWgFxcZ< z|Fy)^_lw)c>X*rzGnXXE(H@hlcxJTA_@Eo*h=0M9elc!($awNQv81G4=U}2&J8`kQ zpLLR|q(`RZp1;VIJccXQUtjI;l9VV2lo^tgnQr9}4l6Sxzq@DP9GRrtq-TN^WXxdZ zLMNgjmW0(J9)RKSxDDTeU@mi7+)UYW8rp&OCsU`6G z(<2p!H<#}`m4tmRIjlq&9tjTBJbs=OBJoV&JFhZX(GnSJ2}35iF`J@Z5^f1PL&b?Q z!$C8Ms*EXlVt=31CU2trbV9oJQUy$iM~!U!(QW%o@;Q~he+Zq&1tCjAE%p0y$EGYP ztnvl<=I0$g-xZR=zI;v%&#&dV^N0^873IdW9<+t)Rk~GEUatXl42ltMDw(wb zcMwx0CpN<9sz^+@G2gOVZyr)wR+ycj#}caZ$pgbz=og#R5B62bl46;^=|L(ER6OdC zCfvI;2U({Qag0yX*IvgIx5t~@cfFVP_+r?2hjX~ErF6rLBcZkj`x&Zd5LN4_E1?H4 zRr0o;d&{2$;mvF#N7J1YY4z4_FMvShy|mOBXG`aU;HuoW4yI#nB|#>TuH{bd2HSf< zG(Q1J|7VuE_G0@V@pbm*_9Vwu^gY)ThIxuwbwv=^>wQ$8trrMQ9UO2(PoFll_7!Ez z=zh2CP1cP^Y^7}*S1oTQRHMcjjlPQ*b@N4BT7`Z-5SL$J++<wNZs22^Rt2&PtlarrrF0}a#b!uz}bZ#uqbC%0_PWYE~cvee7Fi1>R zaGf2=oj9~2>oWSc@#EJwlE7@dW%YA+GT&sB+++R0FV~NEvm$|1V^EK>$teR3r4NR+ zexv<62Ucmd7XOJnIeHzwqqBZtJdp=^_F<`^$55QPZm*y1S+rsotilxa^=go#u=`6Y zQJ#!k@~@C38k3!odApTj{)3xerAe^>7UHkF9Cyf0#Xe?kAw;2kB(r*}v0bk6b2`DBxkLk zAEkEoWI`HIW8bl*&#`jb;Bt-AzOgEG_?a0$qrHkb{!7Q%ABwxg1o0Q;uUETn-Nks+ zp#H?g$C^g?OBB_dtRUx0_DKHJVDk9^%q1d7WZ~O4)YOGx3vqO_Tri?=`Nq9NI~suca6i)cXv)Yl$<)fx=EG#jKwKvWP8e&fkjaQIGSI`@tu>8T z8lQJad4L)qS3rXO^t4vSiOY^)=wrY9!kNFD+^yS0n4G-aT!`y#RL|KwqvCFv@Nibk zeat}mP@8M)QgetzP(IGVdSII^LO%YgAzYmx)_|lHSyF%y_tx5jsxQRaWR5TwX`MMX zbeE-DH;e7x22kqNx>v%&Tv(~m^D)Wq>k1evqz(*~)3u*raZdRli#FVniioRt^A+}# zzBIs;(br;;o{D8tgPG{H>XrQoAIPdI$ySqe_FBV{?>kS z`GFgkJ1UoftUlcvBcYS+&E0|6YWg?d@jr5)(qi9Ci7$besPp?r*{VrKj7@62uFtl48}Vm4Lc@tjq!8b4RQ_I_*mvo^1n=snSWiV&tQmT7 z=O5`4eXQRA(-&$vr#9+~sQB#S24Pga^F$TvDvEDGlSEaYN1+#A+H4{!v`G6-(RaAG zuhV17K6=CHiLb79Bi?>h+m6ZMI^!qzyhK*mcX)b+h!?ct-6I(fVI<2fW#Zq8AC|+U zzoWQEePKTllx8hd4x^ZJ$T)pSZW@9{1Mw~`<49D_fBwTEb)t5jkmrt}E^1TAk#sSy zjfb7%NtIWV49nOJShUs`>KsZ0{I~6VGMQj%%KE6txZ=qBQFl>PGXq%m`Vuxfkf;_B z&8;Cdg!~!U;d}Q@kZSL%Z>jlCa$4x2e0yhYWWU}adrOTL4GB@oIwta&JmscfsYIYR zO-ujduC&}!yb!*N_My$(+V)1yEVE3lD7M*~{mPd4#Uv_R*aXOV70eCC4p~g|U6|@1- z)kUZChej1&OA)ZARl|ZA0hyHMIUGbo zErbdiL4(*u9OO^!c5Hi1IlQ5s5y(kGkMUnW(7{`aG#Oo*P3_7}ylFh~m215JL38}o$b3*kV@y%uD z+INMLp=Sb^0hb$W-3p8EokRU3K3w#L5quU2YrNG*jDsr~7FzD7!I{fRVZmWXI=Uq= zeLt1%UW*4ub<5BtEK-aZOeyy%z=ZY8>3 zuB+SCz6gbO-+5X|T_ZV(o+)*=4!sAyC1E+taM@?A9;+eMV6I zvjpPdWwZLV`26-q3X{3yEXxk{kounfR0sFGFk)yei+Z7NMlWa1q)7nHqF>Y!e!-5d znfxx*=bi1_G7H>|7ZchN^q#(@KN^VETA@w-m?y=S^#1v~<=Y8|tXWe(9B(G}-jX;P z%(2A``Tq1Y^Hk_!a5%H@5-R>=5qt|6^>6WssjelLe3x(rV_P^x z@7F!izUW&UY!}dU?pV6L6((rUKbx|LRi`*5l*e`-TykQtG)W{lex^Digl?S%;WazA z`y3bL9z{5k+M25M_kDJHx({=>UHd~&QLC)V<3Q(tPuT53rFiTi^C=0f&C4zqPB(`LCW=?A@hMhM-`#9> z&vH1)E^eyuk_d?e&~`j!SLLu=v=%Wu6wJil^`djD}8Jy{sdEGc>&In`!gRuYLky#QB8F&BpA}_23My z)18>Ikk*^5N?YObAy@o4%FNM_jHX>K&VJhF^h-$tnO%=q;;Cnt%9(?XBu@M7UZp`_nw8n4omx_JzVS63y%+|agc(#nv()-fg(}{|W16pG(sN$&SC7x_~y+ZY{ z&{y9ZFjRl{)K+jLBtlo8OC(EbB#)Ih)-TY(&DUIlnd*s17CY+!$9p5_q?VYvYle&- z&X@c^y$aQJ?U+GY7EOsbwuKjX^nFbi(rN3aHMKRbi}VUcQ>oKys{%Heta!~sE2TE- z5p-Yo>-eR9;p)q){g#3`8|QMgd6FRxrlq8L-!RWS5ujxpV7?Upxz01k>G>Tky>2=@ zPJXZGvieSa4)%v$o7{a}Irb|Bx@6;p_p9F|UOXXK(W^Gs7d)B{sg^jP+^SxTR(-Rj z!o?NB6g#uLKM*sgl!SczoDs$3g@M3BOwL36+DAB=HDfwOg}Eat$+fxJOQnhFigic$ zXnA7i9L&(tlmix2zx?KM39d2Et;T1TYKjl09Qpk36fk#?7>S=d-IX!<0UiIiEN$^p zbuoqcK^f2LnB{3O|2g@ML*BNasXIZ{eN_(%k}GtIOQM6ooV@D^RmVDFKY=g#=f0w) zI33(np^D=z^E_!>;tG`G52-hcE)3)Q#Ze12+X?c5Q<O{pN+6mXhy9>ckI`Q|c6CekSG6XjY<~nF!r#&W?6DpDfXCQ%&KmQUkL_bl|Rj z8Q%p{mu>2mSa<1uTf~S<%VfD%v#+?iMry9x{yf|9}STeI}(h@azGuQn9Jscrn!bkRJ{Yl+LeVH-Psi)R$D?T^dHK%>3sw#j?a71C8QcU#u-Skyw_CH;l| z5*p_P;&$uHC?}kYrLwx9st+)gC(|We_}XGVnBtE=f2TRnba-wHozS+Vv%KBDy+H3Q zO-CvoBO(KNPmwP}E38R-8V1RTxO~`3^R-x97t&a*)&E+PXkVJ~%ZFnvKf-S7Q!&@SF|qcpwZ$Jpl#aP5^qm!(FuDJ2?dT>Rb%MH-EuZAk6ZM26Uqb zc)+$q;JFdpd4Iu!AWVpG-4C3`;Q`WBKPw>I4I*g%+yD(_RZR^*UPMFy&h!=4ALlDC zd>So#H*YsDdpCC)Ax>_9mz$eklv_lUN0^3(N0gUelt&PhOGd;spL-zF*}vcu5T=X% ziwEXkFzEFU0FO|w-2J(EdAJcDUGskl(j)zX2|ykpkFRM!XLkVM@pb=9ARZ|Rbc1V|s1gbD)7ZC&@zhF2TzQJ{89UTB5g7!S87?|+oyH4YyB@b^Bz z;#FVHzs~S7eEaj({Z9g*rXv2*Ik?XLp_c@p0RGTRauEKzUP2JAWk(0%5q`msaIP-l zKWW-OLPP#|es%$@D-E=eRR^4t}=7qd#M*aUrNEXvm0Id{hQ;}i^LK>)c$y5b2H1zF&V1zH{gBzTAk9U(Gr_+uhC z2OTy)xD~Hm5zlsot1iF|o(ceXqjdYCiJ z-jzP-AN~_?rT!7?R(FiJ20H3_nkrV8a@Ks6_u1nN9)3w`0)9*osm$Lv_q`Dsv3N4! zr{n-jpzU2Yob?+yr!IPcua4>oX2|WUafytKPn{jz#o1g~*fRKHSEop~P+jue==s}z7jL>ZAkJU5q^=#)S z@UEa+Ticr~IR4ca@7t5Smn%(A>g(rCd>f7{UY4Cv7ijw`&ki8VA5s;{;qAAZwYaSZ zwg?7=?#oNH-3|j^-F!noO}Gw|-$eh`I=M)XAcz}u;6bWGjVYx~#~);`?VG(5j2 zuHYI1j`u9vG3c|9(oNa0lg2cD5?2n}k3uyeUw(Y6KHUg?PQ9`46DZWd9TJl`85rD(4;5Xc@6#q)>Td?a|)*ue^6SSeLdDo zr}Ji(p+j9WxGeOTj+xvo)jav4cKhYc8y3}tQ=-ps)%w0Gxa1cJcR{8`=now$w~QX9 zWyeL0?xf*SNV&K?+?y89d{Y6A6}mZ-a@<-HYOvizHsjE=mNJc1-~3dSwY28KqUg(h zeaI8M+O(H$Gv#b<#JX`_r;UQIn!<+}cAZQ*Lz3H8NoG_&2j4EeVHp2)F!m>q)m!V_ z1Ww?PLXtyMde-VB$D7NP9`)57tk!k>1Wu<4V-iDjzXsM5@Afp{^cqdKc~m<~%;=rZ z8=timK_?ou-AWpijM|Js^Vfd@y&o>s3WIWwX{XK=gtWqDX6e>(kROf@wY~ju!YXN` zxZTutFdLf8$i4I0bpxpQ zsuQVaW#=a3Hq;d~n4a!9tAG^zm@e`lnrJfHscj$YI@H|Pb$);xX`l@YL+s7{CiA}V zWBW|vFz`Zd9?kW_9C=YxB&|`d@7vwTAdZUaa4>ATgX7ixZx`YVA(3rh7z=4huo?BI zec{sSA{u8M=vy)W&6^h*gU1s&cv+t6hW5%{iyhDGE)tZc2OQ9;UR?2KAY)u^t z8nl1s4Ho3-{(h%!Mz}F?aXchlEqzyTUZRbBo*T$VDPE9UgN=Gat>jc~L5+ z5)cqGCDo(5D;`-g?qMgWLDs$R4!FhQ=gE>5?fC5V0>Pl+mEH7oZFOOl0Z3sK9|7I ztcqYLeq1`3b?d=TKsTu_P*dYYk@sLoj`I6KUzD_NSHJP7s-M8N zr=FelTOphg4eC!4$zV1%wjZ$#(-?<1OadLNCtex@rKq|d0RnBd%YK_bfe*y3S(0yq znXj~j&(;>1lgU-Y%6I;BU0ZO9lqfAV>j%YpCm z`kTwtp`4MB$1)3|ErC8mICkKVMZ55B;?QFI(P^m2maCyl;}rDZi$m#oys_?)m*&?8 z7iW5J1MD5#IY{`8I^|rUtq&hwtc!5JRE+e~COxKzz;QBBk8JTL2>o~(7^>;G6X@?Z z$HKWb=pZR>$TJq`s}Z79i`L_sShcU{%XgZ!HY<>ecQcm)X)~di<5|RRws6a->PXD^ zg3357ap|Oy&n1jR?xEsg=FyMi^wEtIudtX!8%@IPx&F4cU^ka;H|YCi?bdIiS2;J5$pB5=^hrR;k_%sz zZ%w*5nYcim8*3p=pMsX1GJovm>?fLw10M}}YUfvkc%8D#7aQER#5Iq=%qRusB@brG zUf@zCPnd##po+M~jCv8sM@QGkgQxgTS$_g3IdrwCR(V#zHq<5Sp?%gNYEQg_Va1_K zpcl&SI{RMDB&t@QkDispgZcAiXtoo@Z1J7?o8O0zlhKJ95naJPe*%w1H7|)OztZE8 z2;xpd5+@FLIJdsMnyszR-faq_%omcT&Uy&`%`N^3^e;&6ZvOCk7@fr2nHqED-W$*OUx3#v;LrWB^1 z!-52Zj5avpjL6why@j0SEbW=+`7gmNQ$Cx0rG;ZZCuX43Ene>z^TmY_E6>{GX%%ic zctGXSljy$-)CL9bU99KtGCX)hA<3`kwa6hGp6(l7UMq6l7kq zvy?}EQF9kIB?f2mRy}o5wVBu%D8|)8zEMJxel@ON*4rclkIoN@U5MSF(nkxtc4qm0 zA*U@{oOaKT?lK2EZkNBUNGQOiAFsr#BJXk~X>O1{r%EoZ9KUSdk!8#c$3Exyh7=nC zNt6avWp>^FCor5GZ|cR{JK};L2hipczE6K7Ikd2=Jx9}+)SFH7R+8bC!GoRI#WJVY z#}MJ39`FY^diQ0{8H3BCJ-Khb8l(V4qd#F$iB1LT>_L{L9&17r)}J2 zi76)sW=rSCU3Vou1vVS#-*4&~hpLH8_{S+#=OtqTG{mC&K^}{*H7}{l#j5OUr!ymD@SMlll&g_@-wxU``e;EIaO(So8tXbz~rNI!wrz_R>{6A(H*=sQW~OIYskH&LcN=gPed9le}6%m#gD7+rHVPY!;}o>NbSp4Z(SPht&u z`t~v{@#3ZMxgNN>!NrtVXzuccWY#6;PayC6z`9(L?or`I)49f_Q_k?E)0xE<-p-}n zj~mqK`+nn>7U!_TK&8B&b3b>99RIR=@PT#@VHst0B={5^Gy_q9)&K+mfdauF!1!wt zenr7}MS*8+RCneLeam~ZVY!m}&24^o9U>S33~qS8Ccg-OoUht3UDf@X9m8SCFyMMj zFz*4l!AGXLq9prg8S(I{4B8v6H^_CXYXcTI@r1Ww#=EM!Hk-gfge!iIudqr0m#r;m zcyI=f@TooA2yu9I(w}5I_Uu09`;9 z&;SGgK7b$Gulj`3{A2rLVhY2h zUg5wpwv~^!n8vMjqz4Z5 zOSo|1{}ZF`We58Q2F1$RThGewA2=K+3~UGU_g3~&(oa0V6WKVh+~-Mm4C`cHUF@D|(uNAjzu4{n0K zR#oJyG8VjuQw|>B;t2zH9S{W1K_H0p2p|P*cz;g_^V{n8+v?Z%+v@k*>i65~_uK0C z+v@k*>i65~_uK0C+v@k*>i65~_uK0CKV$W~nzzz|(^CM@2lp$#4O~DP%v0(HSOYMC z2G9cRLD(DIy{;h8&;=0wZzyO0A%GL$hIe>vd%Ctbfeu9A0AN1NpC5>I?7h9+MY*_K zy*RDlnNK;PZZ2H@R_Us~FjX&h|CnGFThxz*ie zVfGG6fu1nkKn*=;pc7QYhFMYqLrn6jD-N(54qFFjZ?#*rnw^Vb`obcQrDvK1`Qof4&F4poWh*E9DIE2G`5~r zE-*hgPbV54P61}HOHUhHQ5`vjUmb!aapqqa=I7_f>BqpBO)Tg#m&pb%gX^$ zaCil{dRzH(xO&lp<6SZ0VDx9Rf5^kZ=t>;mKo~SvL&<@cm{|o^uv!UVO04c<{;8*`Qmj1tH^A9h) ze=QvMKdS$b(H|`Tfftpvx|Y=cG~=L_{cD#0(C@$G3u68*!T)g?gX62K|F4;KarvbW zSG1yXZcrZ=n5(z4oW%9RW8($|HSo{7@rN$*{;zaV4F0IAtN*>T|9*Y4f&O`+?x1P( z>d~};a>1No@aypc)rjZUmD)f>ZT@=F;19#~<0tLxeO0(FIXl3gCsAiBS37ZLe~w=^ zO=gL|zK>i#A$kZ6EeZTv#J{!cx48Z-3H)2c zzqRYPxc)5({9DAowd=RI{yho&WgmsPf<{q4(E9oFBbJe}tgMBWj;4aLn*5b17fVUa z!PN}`biZ?P_4d?Jl%X*)HlaZs2Ho$_K`%hi(as9$<*u%)0QV6Cl;veHo>~mvFsMBU!_CxKo_ad6APla>g@$GKH`w}bus7%d2hswv zZtekBK4CO0&|5U1aaWi|3FhYv^Y-S@0*%&Io;EbHZZ7Utt^weRUsu-*Zv_y*WlIAJ zS&&CWP>_R{6Yl5u$M(Oh{DbI!bB5pBYm!6lt9u3^8T_=)E>AO*++Du5=S2N(n902KT{`@02y2u~665y}zj5jqeC5T+1T5I!RugDcQsB9b7| zB61)KBg!IbBAOuDB6=c*AjTr5BIYB$L~KUvL!3ZdLEJ$+Lqb6!M500BK)Q{jgrtuI zMe;xjL5fGpKq^M6N9snJK>C2Rk93KQjZA^ehAfJ#jBJE#hwO(Og`A39gj|Q*gFJ=2 zhJ1p8f6)gfS6|EGl6>S`C1MNFH9y%ksD7q%P4SE22BKmXm zX7myCHT3To_!!I>;uv}uju_z>PcdF%^kBTlIK;%nq{9@!)W&qc48weiS%vu)^8@A? z76BG3mMoSjmJe0})(fn5tU0VhY;0^MY$=NuQ>?Q1PID|NyILbISIH5S1 zIQ2N=ID5G0xQw{cxaPQlxT&}`xFfhbc<6Xcc(Qm_cp-S1cujaSc*ppJ_&oTU_%8VI z_@(&o@HYui3781v32X@N6BH115v&p-64DdO5<&^@5k4pEAzULuAz~&{CUPW-BdQ=8 zCfX+^Am%4FAoeHDBz{A@LV`%bM50XMOp-`aO)^b#euMIc^bOdJm>Vx|jNdpVy-6xX z3L}jrtt6cyJtw0flP7Z`dra0qwn&ad&PuLL?nnNNyoY?}Ceh8?H=#FUZ&u%&r$C@! zrO=@Wq9~vkq&TLeqEw`Gr%b2pqTHb(p^~CkSWt;F-hS0rd8EG2R!RwQX9tt9g$KT6R{*+>;hZAjme zc9brc-jm^$@sz2PIh7Ta4VG<}LzGjLi{d&yZhIpi{6@C{x&16i^IOY*#{7 zQdN4aG^0$Z3{@^s-d7P)30CP=#ZuK(%~1WQ#;WG2)~t@8uA-i-{$7Jo!&Rd}6VO!F zOx9e~V%GA|YSBi~*3!<@Uf1E#xvSHsOQ>t1TdI4aC!?3Bx1i6W@1x&ofNNlCP-1Xu zC})^txMIX*6l^qLOm6I8+-QPoVqj8aa(qYr&XYT9rUIr>rqgE3X8vaH%*oB2&EHty zT3A`sSRz{*T9#V=u+p^3w>q{~w$8HNhsr|Jpr37|Y*K8tVB)YO*oLjRZIbP#ow!}H z-Il$ieX9MAgRDb_!-1ocV~*pglcv)Pr=QM-&Xq1`E|xA$t^}@5uH9}_ZvJj#?riQ+ z?kgUm9#1^>Jyku6ydYj?UX9*F;LFsY4~tKv&j()#-%Q_ceg=Lu{`mf`{(}Lm0Wkp^ zfeL|zK}bQ+pw7Frcf;>~2$l}c3xR}KhjfP0hu#le3sVd$4#x<03LlE#j!23)x@UN= z`99_Su=}f#ijieeI8mNaGY@V*$caXZc8DI1;fqO+xs0`m?T_P*OO5*x4~_4C$n)^& z!=DMZ3B!qkiO(LPJaT$vg zUL{FoToq8|Q?>od^3`;;YISFgaLvnF#@ehp!n#;6b6i0EeuI6(N~3Y(Sd&UqXY=jm zx)#os7q4kwXTBkRlh}&UdcXB&TVUI9yLVbw|4h%k801`UWMMS zKIy);x8iSKzY~4e)GyrMFd#TkKPWI*HzY7rH!L_@KO!{JI4UyQJSH~QIxachF(Eh6 zJE=T5Fr_gyHmyHBJ7YStGHWxtIp;igFz-A6eIe{U^846Dyv5WdilzMJTg#Ozf-7%6 z$bA_6sQYnY6}tNQlh>yoYxmc&*HbsBH%c~nH(zflY>jT;*y<);eA~aXI;Z8vBjxTk)CjS>L(g`Nns@AE-Z` zUfjB9zEr(@|I-DGT>5Ku+A#240L+Q<$Lh53SA)N{|DWV1fv-*rDL{DqxBMjCKtK3? z^T$%Jzc>by?7%aVz%!Ekbq#O`0#2CVsYp=3Bs^fFD-?i_K!AuxLyN>CO~*^f$4$g9 zMK8mUD~qfJE=>!r8;6bb2Pyb|g$FJriy+NQ!@Un*nl|rM2SEg)l-6Uqu@48-6PV7^n{yW=fE?lrJRQc#dcNslLve+-fgC;G{@2V6y2J9_vrOY zz5F*x3PHtH12)?N3sGIl%7%q>JZ(I2g%KXP&XodZ4-M95n|z>6oa@_z-fW-T%sk&2 ztDWHc$deci-`e7vB`eQ&@-fgc_O_0HXY!@ggKaE!RXXFSjjEh+tX}njoGVvHQC`Qq z&4faYV7!Ua0M58}60c7{bzJmt0RdA~lCiPQ0;bL5d~eS3Y)vu0yc`|&6PPG*KXLzU zgb80W0u}Bj+Gb*#JIg&gc8-FyymET!rmpfhGsJ8WY4!?2tdV}j6|?w}g$73QuyA8* znosx);6J8l5nAlW4AJ%Y4CsP#mQimXK1N{zL*SxlkTzST)xVuM3E0i3C%XWRzcR%#N4t)K-Sv;Lr86p@WSf!DnY+h(=_yp4Me+bef z9Rx9PA=qCxo8#8X3`9N)kbj*MHZ-2$LmwCvDSg+iXQrlK$@H#LIoVv@wiXYZCOh5- z?jy+EZ?^;l!|#O`v1jt6S}u>6PEXmi)_}RZ9z3!K39>K49WTeAS6jPMA{Fu+;^@u5eY)o}NlW4(97 z&+S?2-vQ_mqyVYk%BE`Ykp(*g$GW|;{MfK78~cY&C(&r7GKmc9?8f?`K=$V9&jPt& z0J0oxL;Y@sjxw`U#8M7@jcL(V!l~+8AK0F-nnQ#`lzIT&aH#CFrt+8Xf?d@Ed@{no znR3>FTupnb41M}Umy3Nh0mEmy*%t0E%^&RutMP4@+pTTsQu8yqKq$EEkq(3Y2>_>;NJ&%E0Mucxut zU#?n6WD#_{!0L0zl@mbIf2%dgGreY-H>Vc&awyo*VVi#}*_U#B;e}wjsp;uc9Hp{) z6nb}esZ>@gtW2IBGc0o3H>gy^rq9PqU7xSk?kR{eg!drQ^*+D!)6!u|=8?VgITS5e`y+VNy3!eq+G1pra8y+}(#yO_t1 zj-f}MM@7Q2EPXW;cLui(ZwNeD;3|jf9e_0IG+^n@tas>)hi|Xkt?i(LC*MmIKV$qN zPyd98h$%kkl}qZPh>t3|mZQCVnt;r_f(@4U`?dUOOq?AL^~ps60fuM@6aG-CK$j@R zcZPIJFsB;NF5A#(CxegW5r${|Q-Jhjm3`g&EG}cdV(2)%c74eSg^?xU$5&o2aY-gq z&KHCmm62&6+br#x0`DBmJ;BUZedHqIRNrcWPF(xL!=TzGcg8V_!J&Ir`q$^6Xc zF!XwQ0;!W7-6H+*$H1G6Uta{Fzui6LFC=!%YP2xa?%%XGkgtA3gMwZ_^*)HPM#Dv? zQ)$|3QAnjei9z-$Gwc0rDi{BcEt{>5Jq$72(Vg@%>ZBgt0rLZN+p^J)10GvGYf~%$ z|B5BhlWZ=tWTE@C$pyT}#+e!}>!1+OBLH%_4OOmy&Tj@W3<#ECc%x4dtP*X-ljh1e zODqdqYi@d(*_2f?5lVUH@1zncB~Z@h{~Aphom)9i!GmS(s43$uvx$QTN&NYU;tQ%K z6HCM}z>+?i=_tMStj(bD0o;o2%(Wik=EPHaAZ_(r4qcb ztx26P&t-^y{?ajv&$^q`&nosv`|ea#Ji(L>r#{`33A=u2Wo8?8KSJH8oXOYE;!Lq8 zs#&8%HzFB#hQH9oXS050=6dxujek`n*gPn&eB6{M4Vke+*+g8c(xb)z?G8S+!QVUaxR%TG9sf?Na z^qCG*V2Vi5T>XW$(MGl-AHg z*9T)n<3|GNh$j8y@p;Alsu9EPYhhWDF=$|P zF=rf61tW=0NJUl(N$nV$uF2Ziq?0{H$)YVq&u3M#PodFkCnU{~wI`@%xPwL_|LYk}hK?pEC0y|}x(Lvi25U5YytcPL)m-F1Nldbhvd|NZX!-tW85 zeQr)RGs#KjOeQ(mBqz_zWHPPU*m+4G`}v4;`=|nDb`%^QnF@L)4t1ywRwSVc1@~7} zG$XUY6%EH9&$Y}dCqIsC*KNgMU(!BJrNcMO-EZO&`wq#bAs9(ocqO8I3y7deMlZDMqHj=_)8R7 zY!C;nJ%bt*G;zS((OnE6Mxte-=(sb|^Gw3^g3SV-}lbo~> zt=$lSYeefm#nS7M_Gue#|9nRVl!8LLsmaTAY;E!%M3{${C{#P{7ey z{Vock`5M=9!os7)z{8%>Hm{qkC0t^@u$huuVPSozr)-BoYUjGpw5s>5fg;pp6@8aG zGd-NLYi3&1F8Mw)>oPB!d7e4)g zsx>`~0%RGA;_9g^unoy%8A=B!tLXlM>vQBO42tQ4Yd63ZSh>o-0EVLY7>47lpFgz% zl>!)1N`x}uW*MI%{dk4gP|6o>QJ=AUASp|eV#oM`1|(85x6s{%C>e=&V{i7FzZzeD zC6tLBNcb@VbKz#DbI|_LCj3{oBXo|q-N2pvgyAR}#{QSev~@Yzev5M%Z}f9mZWuJE z>r})q;@ml!FwhmzoP8F|sY>pWXV%AbZMxY2^h9%X3SydpLfd0H6Unm}yP_JF-W(Wd zq6FGP>g?bxC+6rcSbSy~Ba)nElw8Kzi3Rp*ZjmiA@J9@%@MWKjNy&+fxMd_WPI1R} zSaC>+j6^Wl%L6g>qV1zTruI#4bYtY$w0)a#c19t-q$Mvx&H$;48nX|6Qm15X7N?+< z3364#6Ne+!i4SIJ{)VP@3J*({6!%*%Zm>|Qn7#b7yd*0k>vt7%SYGHRY8ctC^OUfZ z{7jOH=D}I>Wh12uqdQ80-v%(5m_u{Ewue5~(tS|kQoN5(*^1BV8Ie`_N-ly?hM6g< zl$oJ=*20CBHxfoYK#Hiogpp#vw%wAwtpGs76brHo3=R89LD$6otlrdzgfS%CRfzX7 za9G*#iApplkmWtOO5C!Sb<7BjjC)N~pNvLyg5Brr4xdDgd@c|5fed{!cy~9_@>$Gi z2^_2rap?n!!Ec4~>}rf!UTx~IT3;HRRE*4FaA!&p`d-YeXHi@BQ`|~K41p4`)ua0| zL5szn(2NL@EUn^=IY=S~98P1HQD0T!W-y#0e+{uvVw8~`aQci#^=+}nNq%NcE5IRE z#-D-~xu9*g?sGzP&D5<~iw&aH8FHc!oR3p4G0)sF)SBIo608`%3878B?^&`T7ZZMK{GdIYAjGl|{1>OBJl1Fe>w+ z`jiXQLwR!rZ0U)8Z6s%_`g4jDzXs%mJAG582d&_{S~ER+F`{O0qXpvAR6ttUiDWxr$zcm4rMFJETF8W zxyHe6i3(D53tyOOtC~Gdf@7y{*v=Xg_O@rs$3Z_&huTm3+nt?U>ESn5>jobyd)+)4 znP3O+54t;-ma?923=L#YQ}4%~Pfu%Wy4xXumscM7@>A1JW2Z)X{Ot9L0iW!!x#w9e zQR;4er@LnS*!8jjAKkx6VY@#%-LbI$xd_}O*Ogn;>=p>z6xLN+)XpIY9dn_>sfy>= znpKCpv&KR3&#R(BR5d`xSSk&cN*aNc+Zq>HXM=%uE&WoG>?p-v(v7s&m(C;uX{Imf z|0dMPw9)QWCY4o0|MjIbW6n8{U{(6U;8pcI;zVridhm%4oy?GPHqcp4O9S8>upPo2rN{_(}FDU1M&!>$PIIBc&%pZEWjEEs)@dJ2$`}%N$@i0KV*Ht>i>}Sb$^Q?s`!kzz(n7l=Nd@n9GH1MN|;5H*X*}e ze8XEs+gJA4U$)ZfY~yXgbbZW_yi~oEwpb+~{@;SU3VUwz!9?i7p?7nL%29Ho^H<9r z&gp}EiP3HCw3_y*i(xjSuGAMrSY7inaX< z!SMU3p!s<;-qE6Rt8cm33L0g>MaTq<7b=g)(GO=d`iWzdYR$X7bhf14jv5|hUvVD) zm5_Qu0F5teYpx)UYd1agXK#H$eoXV6a)zFgVdy}WU4nQSJ8d4h;~zV@dj00>W7^~I z+Sc&^+ChJyM165!Th{Un1r{0~9E7avF81lqYV>_OVk{&pOFlCXUdJ|IQMBCs-YQT_ zY0ROZHJ|@tM!xq^qQDkUkJ}d9Cd>TMug$qxc#FJNWu#-ymLev6}#K@JH=@}(dyUq zB-?J*@-2nA?L{h>0$|6yPQo)KZ z*`G98^>>=}WYQ>wY1UZ{_uG=kcku}%wp+KEBx?A)_?`9tSA|9}VLn~f9>PYmRg4-+dy&GYxxjL#jq(l^C6d5iSZI`M)#Lhs1se}(nylTjDI5yksfU=oMJAR;Q(l=`iCj&b zmtC=N%0#?uZkr)DO8COU8^#^)?}RhFza7&9@{R@2I1OzQ?N^51Q*zteWr|2rN}`n@ zIu(cy>O{qA9BfofAQcBGRPQIPx@+|&hRFy^t4jMRRK#TJ>+g;&*=swRi4h{Z1k!!0 zbp)3Dc58^&t+Y8?hrElBRwWOAL}X6Qc2;hIH#1`Otj>cP`pkpBif7imp2nQ2t|rG$ zCu*_>?TopvhBZaIWMO4R{=}is!r{UQ`SyabTR>yp{GgjNd zHEV^4@$erprY-AUYEC0_?$&5CwAjVMEa08Ov!>&*Cx^XS)w%1_?y8S%T9^~=PfpMRn#?jbWE^1zHMpIXHzD3ZE^)3OXWqa|eC&)PIbCLk(V{)Jb=PzxC=u{R-dDWvFFZJB^>vTGQ%^VIq|fVUP~ z896Iy^qmUTTpoLF`|Hr92b~`fc2%L3QM-Cf6g4sQ$Exk9FsDz94PEV6!xz$gAa-#ReyxjQrNy9ow`VY@N1@ONifD0bL52tU~@J zcHNW>L_5R05Lt!j7nj0f31O|%p*cpmWy<8a?JEngeNL@0*vx}GfTzH1>8!dzVH@%X3x3@0JGHQne* z{+aOe-UXB+S0#u!S#&vGI%i|YbEOJ3dgd~vA2DL7sBL7Lj7GJs@&0Q*)r$Qe5+f!5 z+w2N5@zM@!(qIPqmGfI{i(65*H=l&jluEo;he+K$sY$0=qpe1yzw{@SLbV|af$?hq zX5JTi$?T4v-&Htq1*p2K=f&1(=HU87*7>q?&i`?x)jTVs|G7_!w5Ai+b zJI8Zd#|xDQEU|>1OL6~tr7|^IEX1%~1CHH)5Yhbqr2L-{sL|-vuh7Lf%Dgf~q-4B_ zNeisTAvC->UsI$;y+xUeRWh|x$jLv6BQ}|8H3Z!13t~H{AJOX=MszlFA|QOIcEh zOcbqIIRs?>4-i#hmL(l+Mf*2|+@qw8s<6nCE`nsV&Me8Y`s@1{;kJx-})GRuF*oXSit z)xrGjs2C)?i>u~i>P+-*{SMKz$h|X}{0q^$Nb`c-7$XH_?Bb8MEzJ{o5c!@If9hop zJYFJV6_gzO;Y$PwZ<%`+Gnbj=!Yi=9h(yZ2I#tlAm{+ixToRKd2EOCO->oo0TjHP# zc5Ba(sDQ8%f*31PRH+fBOvID9gp`o3$1aCaIvni~7Hk_Ulb0VDB)JT)K}JErGesjNW9(%Zgd7IR!3aTx%qtOf2x2 z7uHKsxFEZ%W2z#yA{Hr6pOgJ$w4Phf5x-=-wQiq8R7RIBNQON}Fn7>?u$LHy+|u>& zU9v=h>*H)T-TvGMoid$J6X+b-sBb1m*eJD63QX@{uvEimFxAYy;8Jm8Vaf!A{V@C8 zzUHH(d~S=35<~$%LMg{$8i(xsJ^KJ9u!S`)kF3z+lYvMnTHI^X4E4rauwf4}`ABB~;9jIcoYPUWgJu=RV^g%jn9)fTo5lT-$Fz;nI% zI1|B@=+gx%zHk%({_7xoaFfcGK*F4~1a6`S9B#9woB|x(wlq!SM#6b;g65kaP{%oN zWVBvT!`5};Hz&h)UAiGM9{pMD{dp7k1=rT&bef?ePdo7Fg7A@KP9VC-Cftc}ct$fa z5GoqJ-q&@!hsa4+p*l5wu)yqzh^<1^O7z_is$Ji1)_l}SnK&%0O1^SyM&vU2UqY+Q zC%L*+Q8d=oFbJ8@0Ry;YG@(?|gvvA0D{W>=9|nKWB%=gH>0U*Uy!2f)6lH%Nj%Nh2 znKVK4tPGR3)iHFWAE}(DK`~Eh{S~axW27gMy4IR=z?V6;otS4>;h1^;=RM{5q zl0X`(wg_$jzG?ajNy6;F=f#U$!8!yZ`sG9m^h!min}HXmV3E`qf0C1fTD_d%w zsl~GYY{NkR-G=!C72@$v3}Srazr~=TKL|m8+WhyGrM3!WH#F=9nIKDG&IDVpJ6?mZP8W9t<398m%);JiH(brAg> zEPk%T@JgGTCgLZj%+o-2{Y4^;s!TK~j18fmJ_k_LLwD6w`aMo;A1)ljSgIWQKDUTR zTy)`=8boR2`#aZ39*}~FpJk>5?|@7!vfEt8Rrexu$QKg+)LN&r3HI=+8W44;8TNtmb3{#@s+y;QM2tb(^Q_bRx z_nj`<2jOGszF=nPvz@lJqPoo+w#j2S=H8tsW)!ofKHIo=(AYfDm#YTG6kElQ6@7sL z%fcsyR-xAv3tn!FfU=ro{(_1RB2W+J9J9z%LaFl%+R1TAbS2ecf;Rcb)6SkO`fBOl zlv$?$cUQRMGHMFq)Rsxcke^=S5ay6>G_Mj=f`YL>+kLEo2eYPKTtF~G*8KcW&FNW%Nojx0gIb`LBZ@% zzjN|2+R#H}!8OO{#%c{RTe_0mYGh&Pd$MYWbN{7({5+`qQgx%WOU}1E zA=T5jvVY%zg!bx5Gq@9Ls}|OmZrc#?QM0cb>t3DYxx}|yTV80d_Cj;v-p}yA1!LXn zH?>%vm4gPf*P79t>O22L8mj&q{ZKxv=k*IPAsgXz9Qo z@X{M)whBvVn22qgL^g00rl4c1sQPmAG7!2XA#62kD*4X*0D^Kh~Z^ zV1Wx2%SkOz{PxR<{SMy~$L>CF`A%nUCnO){Ha)87aU^!BF~5m#R-#S1dI(eh)t3>7 zO8Y~((BI6PuTKnBdyruZKsDL`so#z_&3AynV*+K7*4+ai=X;hb0ChmKQda0@(5DO_ z<SkU!#OA=N=hD}G3r5~I5XkntE%}Tld#&!!*SCk?P zWm~eG&$?LIx&~_L3qJ-l%du4eY*a@!)hYvn-+ppmz5KFtry6evgh-mVnO!xvpaefd z>alJ)1DUbwYeO-jjI%Qgw5OtSFZU9&wWSL(NqWoQyj*kAOxRRvgj(0k!|!P(rccbg z=$}(8v==!WgaMF}KM2RaN;w}J-ysj%N_a5m2vIrw!?AVK#rSsJ#}j6XAPOXX??f}4 zhhj0BvSn*GT}&rFKh!cUz0LX{DFdp})&Gd#a2~=loE9(_hl)=W89+!C?ax@Xe7&Kt z0qJLvBLoUp|@<2H||#uF2yOy)2GX7Rk)EIlvYZQrto@C zD=i?Tdm(KmbYE}`Jk$_)gcSez8Wa5aXIX89Q^O2D^LCaY3^Ra@uwbL-OM}V3y#{@! z{l%%2(_smT>RtG4RILhqu>dy?)~wdOkQAX1)sqS_3M!zx@CvB8Qe~Lj^0(hScLwOR z_}2%!8BZ4K5Gj5bR4uv<$}l;Zk0E70WvjLt5SRoO;+ij~uL;a5pbmNQc|zKpWdSbi zP5{r`I;3J;Hu)s4^_#F%@yo`(R!P#fvZj8u-^rsAfm5orL=IZf??8P~8_|R!TuT-1 zO)7`KuMuJs*+^mFzK~QU>dWK*oi==+uMi#DPX=@-ife^ha9{W!XrJZSK(KedHMQa2 zt5KvqyFbn#y?d4;>Z$0mOmg23LQr8$C^cO&@c*t8s@pK`D`9 zK(swU!`x6Bdiu*a@P~Rib_c6(Uqqj?bHhvz(kv2fmcN%N;lJYhO$WzHAMKl_&GY?H zk=8RZqOw?zc3Ts%RlTnU%kct&C_jIHqA9OuWqxWgdCp+j`K(H*jA=}x}^Ovd?25t)Jn1glxM%!0EclV=kW? z9bZ`=-V*NH;_3@-pVEi7SXR$3>rCXt)&KGn+<-ki2mR+=|VLE%Z1e z2f-tzIhOO7=Sz#^q$Cu6o+>v&(|h+`D9GldJ)&_MCM#B-3~1s%@CPdN&gxOIk&3{N z1K0j-*-0ev!IMe@C=)vu7gIDcDzp##)ii!Em!B#s53JUO>*SKUm5;g05;XhhP0cEp zte38grl^C1b*~)_-!0uMkbtnAFp=XYptHhZ+@AVi`f8izJe7PiQd9Lny%L@_trGn! zZ{%G09?Qm@SOh)VW0)a2A ztU4Ga;Rn2uRzri;MB6z+Nb}u`y2m~ANR=wJi|5+r<(TS(Po(q>-wx_GLKL*W>9Qsj zXgh1$YuLShuHPuP&~3cQYRYub)k6FE@8?K}aZ}QY#&xWxYlef5kEe$;Eu3@#$a}R6 zqpxgXbYP52inqKL138x8J)_kCQ&RjAviE}JgrSc)LXw z=EBsAcO>t3LhYVE`O?~im50ccx#aZjyXGVZwHQ{E0&a18fqG zm1S5!eSB%0zB!=5csFHQ#TjKg=kTuq-J+5~$8rkY=-%PFl8k+_^Y)&FhCf0`?3i5;t;=#- zm7&;lwo$HW6HWOE<%B4%J;1`eub1P2YIL%7aEI(Apom35?kU_#uhT!ajtV9s=`9JY zMa|R0QYC-=d``{mfDaxd5rkNi;rp=cu-PbQLqKvvu`_cS5qcl|wUnRx+4w+<3#Q_Q zr0N18$G2G9K(U(!+(fG%yBi+p)WU9qo<8zmr*YJF;>;_HGw^@a7Z}7V1L=|(2 z6l5=DKsFWg`23?^cyswljCDD|CnE0;6mi5N&VWPf#TVGY=NxR$9GqmTosVKT4Oi#K zc!^{>n{h%=$tqi&mOVdH2)eO`qt~?35~y4To*wzHZ_`4}cxb>22TgP9LN*ixeeIje7Skw!4c^#R_;)TBpF^;j3fLQD3?h%LPB%TqxCBL~&@t1oPM^Y*I{fErV%vTqx4YrG7Y6EhHQZ5Y$HNzxOm+mft~nc8%DSw@(*KYD$Thvl?6>~!G!jR{FEPv00!bR%Zg zoO0d2n2|r?N$59%>}&#bVFeGt2(7g$_z3!qhQJE3=!PUXxU1dp)aFXa93ftpr@H8Z zu7j6q6fwRjyBK;wLwCs1<_O-`!(tpd!WaSg^EXDbRNlph; z9(7tHCU_Z^bGdtxN+8;HZU}F=Sw##kiQf=XsnO;1=t{ZBj1xd4@th@4PB2_zLc582 zYI-O)_TL>mynZJ}Ngm16&iCvU#~{l{czFE5-lqRRk^l}T`}a6@KjUFP7u($eK+j+$ zlYspA?r}cg%i(5cZDL(dmzv2&YKQ@THvRI=f$49v+o4vA@HCjsk@V79l5n4)pW6`; zheesfOf$4+p5{f`F`J{y>;rj@Mxecm=ze?UXWtQ`?e0S;ueg{6Md!9VdHX0N)A5z! zVQg@N%YH0Nb6rcv03$Hs{(48RL<025-{Ob<(ti422u%7DKEAr5|Mq$_ZtNA@_NxMO zmzwJ|ZmAIAQ^q?g@NEtp+D`(7DC*Im+Qoum3XbO|*#+gxwqd8`X#1{!R%k4s-%pN6 ztqP_AJFLXb%|nF9Mp~>P-YVg9i3dFxaT(P@CCU67irH$F#Xj&nHw%G!i?)!Tpf}H-vQ1V2rRm1xNm?Pf6 z?iYaZQLFSsaJHZk^BHa?I9c{p(C^c%g-rzaW(B!SearpCH>}`4P+qAtOt7zno96cDETG`$N8p}nK}W^o^u0F)99Xw=cPeR zP5d;wzK21OP!V0A=$h&~;QcjK9KRJL>Y3aR;J+>nz%+S^MRVQ%~nqn?CZ79qcl(hD#0abir* z#2u*w;=NZzZ~szo!u%g7^Jm~`kLs((NkGY4>GS2k;0%PVn

~rn&In7nolA0M(;- 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

^ksXHZ@5U{)h~(PgjZX@i2;>woDz=;1xyO0hFpe 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⪑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͜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 F{{wD4Wj6o- literal 0 HcmV?d00001 From 58145060c2cbcb90ff5edd7b5726de37b91803f1 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 20 Apr 2015 18:16:30 +0000 Subject: [PATCH 065/301] Fix possible ArrayIndexOutOfBoundsException seen with some word documents git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1674954 13f79535-47bb-0310-9956-ffa450edef68 --- .../hwpf/converter/AbstractWordConverter.java | 2 +- ...ternational-Travel-Approval-Request-Form.doc | Bin 0 -> 86528 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 test-data/document/au.edu.utas.www___data_assets_word_doc_0003_154335_International-Travel-Approval-Request-Form.doc diff --git a/src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java b/src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java index 0c68acef4..29875d67d 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java @@ -850,7 +850,7 @@ public abstract class AbstractWordConverter String[] values = cr.getDropDownListValues(); Integer defIndex = cr.getDropDownListDefaultItemIndex(); - if ( values != null ) + if ( values != null && values.length > 0 ) { processDropDownList( currentBlock, cr, values, defIndex == null ? -1 : defIndex.intValue() ); diff --git a/test-data/document/au.edu.utas.www___data_assets_word_doc_0003_154335_International-Travel-Approval-Request-Form.doc b/test-data/document/au.edu.utas.www___data_assets_word_doc_0003_154335_International-Travel-Approval-Request-Form.doc new file mode 100644 index 0000000000000000000000000000000000000000..82d00415ec26a43edb57fc7b622342b30931529b GIT binary patch literal 86528 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 literal 0 HcmV?d00001 From 5118bdb128682beb639e0164a3fd06f06c0fbb09 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 20 Apr 2015 18:26:39 +0000 Subject: [PATCH 066/301] Avoid possible NullPointerException seen with some powerpoint files git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1674958 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xslf/usermodel/RenderableShape.java | 2 +- ...e.ac.uaeu.faculty_nafaachbili_GeomLec1.pptx | Bin 0 -> 830765 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 test-data/slideshow/ae.ac.uaeu.faculty_nafaachbili_GeomLec1.pptx diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/RenderableShape.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/RenderableShape.java index 053ccd491..e3804413a 100644 --- a/src/ooxml/java/org/apache/poi/xslf/usermodel/RenderableShape.java +++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/RenderableShape.java @@ -576,7 +576,7 @@ class RenderableShape { public Guide getAdjustValue(String name) { CTPresetGeometry2D prst = _shape.getSpPr().getPrstGeom(); - if (prst.isSetAvLst()) { + if (prst != null && prst.isSetAvLst()) { for (CTGeomGuide g : prst.getAvLst().getGdArray()) { if (g.getName().equals(name)) { return new Guide(g); diff --git a/test-data/slideshow/ae.ac.uaeu.faculty_nafaachbili_GeomLec1.pptx b/test-data/slideshow/ae.ac.uaeu.faculty_nafaachbili_GeomLec1.pptx new file mode 100644 index 0000000000000000000000000000000000000000..ca9d7919c4732894117e466e9d524edbb9310911 GIT binary patch literal 830765 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

AK^3pr;a`)` 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�T5%m>7 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

!vf7KoH|R)+F5 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 literal 0 HcmV?d00001 From acfc276396132b8cc0c8abfdcc85b7227f892319 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 20 Apr 2015 19:15:21 +0000 Subject: [PATCH 067/301] Fix usage of Generics in some classes git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1674964 13f79535-47bb-0310-9956-ffa450edef68 --- .../xssf/usermodel/examples/AligningCells.java | 5 +++-- .../org/apache/poi/hslf/model/Hyperlink.java | 8 ++++---- .../src/org/apache/poi/hslf/model/Table.java | 17 +++++++++-------- .../org/apache/poi/hwpf/model/CHPBinTable.java | 4 ++-- .../org/apache/poi/hwpf/model/SectionTable.java | 8 ++++---- .../apache/poi/hslf/model/TestTextShape.java | 16 +++++++++------- .../apache/poi/hwpf/model/TestCHPBinTable.java | 10 +++++----- .../apache/poi/hwpf/model/TestSectionTable.java | 10 +++++----- .../apache/poi/hwpf/usermodel/TestRange.java | 4 ++-- .../poi/hssf/usermodel/StreamUtility.java | 4 ++-- .../poifs/storage/TestSmallDocumentBlock.java | 2 +- 11 files changed, 46 insertions(+), 42 deletions(-) diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/AligningCells.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/AligningCells.java index 6ed76081b..aa96056e4 100644 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/AligningCells.java +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/AligningCells.java @@ -114,16 +114,17 @@ public class AligningCells { // Make the selection CTRowImpl ctRow = (CTRowImpl) row.getCTRow(); - List spanList = new ArrayList(); // Add object with format start_coll:end_coll. For example 1:3 will span from // cell 1 to cell 3, where the column index starts with 0 // // You can add multiple spans for one row Object span = start_column + ":" + end_column; + + List spanList = new ArrayList(); spanList.add(span); //add spns to the row ctRow.setSpans(spanList); } -} \ No newline at end of file +} diff --git a/src/scratchpad/src/org/apache/poi/hslf/model/Hyperlink.java b/src/scratchpad/src/org/apache/poi/hslf/model/Hyperlink.java index fbdd2e7ae..56c8a6a98 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/model/Hyperlink.java +++ b/src/scratchpad/src/org/apache/poi/hslf/model/Hyperlink.java @@ -152,7 +152,7 @@ public final class Hyperlink { * @return found hyperlinks or null if not found */ protected static Hyperlink[] find(TextRun run){ - ArrayList lst = new ArrayList(); + List lst = new ArrayList(); SlideShow ppt = run.getSheet().getSlideShow(); //document-level container which stores info about all links in a presentation ExObjList exobj = ppt.getDocumentRecord().getExObjList(); @@ -177,7 +177,7 @@ public final class Hyperlink { * @return found hyperlink or null */ protected static Hyperlink find(Shape shape){ - ArrayList lst = new ArrayList(); + List lst = new ArrayList(); SlideShow ppt = shape.getSheet().getSlideShow(); //document-level container which stores info about all links in a presentation ExObjList exobj = ppt.getDocumentRecord().getExObjList(); @@ -195,10 +195,10 @@ public final class Hyperlink { } } - return lst.size() == 1 ? (Hyperlink)lst.get(0) : null; + return lst.size() == 1 ? lst.get(0) : null; } - private static void find(Record[] records, ExObjList exobj, List out){ + private static void find(Record[] records, ExObjList exobj, List out){ for (int i = 0; i < records.length; i++) { //see if we have InteractiveInfo in the textrun's records if( records[i] instanceof InteractiveInfo){ diff --git a/src/scratchpad/src/org/apache/poi/hslf/model/Table.java b/src/scratchpad/src/org/apache/poi/hslf/model/Table.java index bafc85182..5c253b13d 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/model/Table.java +++ b/src/scratchpad/src/org/apache/poi/hslf/model/Table.java @@ -150,25 +150,26 @@ public final class Table extends ShapeGroup { protected void initTable(){ Shape[] sh = getShapes(); - Arrays.sort(sh, new Comparator(){ - public int compare( Object o1, Object o2 ) { - Rectangle anchor1 = ((Shape)o1).getAnchor(); - Rectangle anchor2 = ((Shape)o2).getAnchor(); + Arrays.sort(sh, new Comparator(){ + public int compare( Shape o1, Shape o2 ) { + Rectangle anchor1 = o1.getAnchor(); + Rectangle anchor2 = o2.getAnchor(); int delta = anchor1.y - anchor2.y; if(delta == 0) delta = anchor1.x - anchor2.x; return delta; } }); + int y0 = (sh.length > 0) ? sh[0].getAnchor().y - 1 : -1; int maxrowlen = 0; - ArrayList lst = new ArrayList(); - ArrayList row = null; + List> lst = new ArrayList>(); + List row = null; for (int i = 0; i < sh.length; i++) { if(sh[i] instanceof TextShape){ Rectangle anchor = sh[i].getAnchor(); if(anchor.y != y0){ y0 = anchor.y; - row = new ArrayList(); + row = new ArrayList(); lst.add(row); } row.add(sh[i]); @@ -177,7 +178,7 @@ public final class Table extends ShapeGroup { } cells = new TableCell[lst.size()][maxrowlen]; for (int i = 0; i < lst.size(); i++) { - row = (ArrayList)lst.get(i); + row = lst.get(i); for (int j = 0; j < row.size(); j++) { TextShape tx = (TextShape)row.get(j); cells[i][j] = new TableCell(tx.getSpContainer(), getParent()); diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/CHPBinTable.java b/src/scratchpad/src/org/apache/poi/hwpf/model/CHPBinTable.java index 33100e5f8..18747c436 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/CHPBinTable.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/CHPBinTable.java @@ -53,7 +53,7 @@ public class CHPBinTable .getLogger( CHPBinTable.class ); /** List of character properties.*/ - protected ArrayList _textRuns = new ArrayList(); + protected List _textRuns = new ArrayList(); public CHPBinTable() { @@ -498,7 +498,7 @@ public class CHPBinTable int endingFc = translator.getByteIndex( _textRuns.get( _textRuns.size() - 1 ).getEnd() ); - ArrayList overflow = _textRuns; + List overflow = _textRuns; do { CHPX startingProp = overflow.get(0); diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/SectionTable.java b/src/scratchpad/src/org/apache/poi/hwpf/model/SectionTable.java index 5414c2797..956b1b962 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/SectionTable.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/SectionTable.java @@ -38,11 +38,11 @@ public class SectionTable private final static POILogger _logger = POILogFactory.getLogger(SectionTable.class); private static final int SED_SIZE = 12; - protected ArrayList _sections = new ArrayList(); + protected List _sections = new ArrayList(); protected List _text; /** So we can know if things are unicode or not */ - private TextPieceTable tpt; + //private TextPieceTable tpt; public SectionTable() { @@ -54,7 +54,7 @@ public class SectionTable TextPieceTable tpt, int mainLength) { PlexOfCps sedPlex = new PlexOfCps(tableStream, offset, size, SED_SIZE); - this.tpt = tpt; + //this.tpt = tpt; this._text = tpt.getTextPieces(); int length = sedPlex.length(); @@ -160,7 +160,7 @@ public class SectionTable // return FC; // } - public ArrayList getSections() + public List getSections() { return _sections; } diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestTextShape.java b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestTextShape.java index 48b6df54a..8d6324fd9 100644 --- a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestTextShape.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestTextShape.java @@ -22,6 +22,8 @@ import junit.framework.TestCase; import java.io.*; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; +import java.util.Map; import org.apache.poi.hslf.usermodel.SlideShow; import org.apache.poi.hslf.record.TextHeaderAtom; @@ -73,7 +75,7 @@ public final class TestTextShape extends TestCase { public void testRead() throws IOException { SlideShow ppt = new SlideShow(_slTests.openResourceAsStream("text_shapes.ppt")); - ArrayList lst1 = new ArrayList(); + List lst1 = new ArrayList(); Slide slide = ppt.getSlides()[0]; Shape[] shape = slide.getShapes(); for (int i = 0; i < shape.length; i++) { @@ -110,7 +112,7 @@ public final class TestTextShape extends TestCase { lst1.add(run.getText()); } - ArrayList lst2 = new ArrayList(); + List lst2 = new ArrayList(); TextRun[] run = slide.getTextRuns(); for (int i = 0; i < run.length; i++) { lst2.add(run[i].getText()); @@ -160,7 +162,7 @@ public final class TestTextShape extends TestCase { Slide slide = ppt.getSlides()[0]; - HashMap map = new HashMap(); + Map map = new HashMap(); Shape[] shape = slide.getShapes(); for (int i = 0; i < shape.length; i++) { if(shape[i] instanceof TextShape){ @@ -171,25 +173,25 @@ public final class TestTextShape extends TestCase { TextShape tx; - tx = (TextShape)map.get("TEST1"); + tx = map.get("TEST1"); assertEquals(0.1, tx.getMarginLeft()*Shape.EMU_PER_POINT/Shape.EMU_PER_INCH, 0.01); assertEquals(0.1, tx.getMarginRight()*Shape.EMU_PER_POINT/Shape.EMU_PER_INCH, 0.01); assertEquals(0.39, tx.getMarginTop()*Shape.EMU_PER_POINT/Shape.EMU_PER_INCH, 0.01); assertEquals(0.05, tx.getMarginBottom()*Shape.EMU_PER_POINT/Shape.EMU_PER_INCH, 0.01); - tx = (TextShape)map.get("TEST2"); + tx = map.get("TEST2"); assertEquals(0.1, tx.getMarginLeft()*Shape.EMU_PER_POINT/Shape.EMU_PER_INCH, 0.01); assertEquals(0.1, tx.getMarginRight()*Shape.EMU_PER_POINT/Shape.EMU_PER_INCH, 0.01); assertEquals(0.05, tx.getMarginTop()*Shape.EMU_PER_POINT/Shape.EMU_PER_INCH, 0.01); assertEquals(0.39, tx.getMarginBottom()*Shape.EMU_PER_POINT/Shape.EMU_PER_INCH, 0.01); - tx = (TextShape)map.get("TEST3"); + tx = map.get("TEST3"); assertEquals(0.39, tx.getMarginLeft()*Shape.EMU_PER_POINT/Shape.EMU_PER_INCH, 0.01); assertEquals(0.1, tx.getMarginRight()*Shape.EMU_PER_POINT/Shape.EMU_PER_INCH, 0.01); assertEquals(0.05, tx.getMarginTop()*Shape.EMU_PER_POINT/Shape.EMU_PER_INCH, 0.01); assertEquals(0.05, tx.getMarginBottom()*Shape.EMU_PER_POINT/Shape.EMU_PER_INCH, 0.01); - tx = (TextShape)map.get("TEST4"); + tx = map.get("TEST4"); assertEquals(0.1, tx.getMarginLeft()*Shape.EMU_PER_POINT/Shape.EMU_PER_INCH, 0.01); assertEquals(0.39, tx.getMarginRight()*Shape.EMU_PER_POINT/Shape.EMU_PER_INCH, 0.01); assertEquals(0.05, tx.getMarginTop()*Shape.EMU_PER_POINT/Shape.EMU_PER_INCH, 0.01); diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestCHPBinTable.java b/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestCHPBinTable.java index a36a729d5..d98390dac 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestCHPBinTable.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestCHPBinTable.java @@ -18,7 +18,7 @@ package org.apache.poi.hwpf.model; import java.io.ByteArrayOutputStream; -import java.util.ArrayList; +import java.util.List; import junit.framework.TestCase; @@ -59,16 +59,16 @@ public final class TestCHPBinTable CHPBinTable newBinTable = new CHPBinTable(newMainStream, newTableStream, 0, newTableStream.length, fakeTPT); - ArrayList oldTextRuns = _cHPBinTable._textRuns; - ArrayList newTextRuns = newBinTable._textRuns; + List oldTextRuns = _cHPBinTable._textRuns; + List newTextRuns = newBinTable._textRuns; assertEquals(oldTextRuns.size(), newTextRuns.size()); int size = oldTextRuns.size(); for (int x = 0; x < size; x++) { - PropertyNode oldNode = (PropertyNode)oldTextRuns.get(x); - PropertyNode newNode = (PropertyNode)newTextRuns.get(x); + CHPX oldNode = oldTextRuns.get(x); + CHPX newNode = newTextRuns.get(x); assertTrue(oldNode.equals(newNode)); } diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestSectionTable.java b/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestSectionTable.java index 61e537674..6fb92165c 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestSectionTable.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestSectionTable.java @@ -20,7 +20,7 @@ package org.apache.poi.hwpf.model; import junit.framework.*; import java.io.ByteArrayOutputStream; -import java.util.ArrayList; +import java.util.List; import org.apache.poi.hwpf.*; import org.apache.poi.hwpf.model.io.*; @@ -58,8 +58,8 @@ public final class TestSectionTable newMainStream, newTableStream, 0, newTableStream.length, 0, tpt, fib.getSubdocumentTextStreamLength( SubdocumentType.MAIN )); - ArrayList oldSections = sectionTable.getSections(); - ArrayList newSections = newSectionTable.getSections(); + List oldSections = sectionTable.getSections(); + List newSections = newSectionTable.getSections(); assertEquals(oldSections.size(), newSections.size()); @@ -79,8 +79,8 @@ public final class TestSectionTable int size = oldSections.size(); for (int x = 0; x < size; x++) { - PropertyNode oldNode = (PropertyNode)oldSections.get(x); - PropertyNode newNode = (PropertyNode)newSections.get(x); + SEPX oldNode = oldSections.get(x); + SEPX newNode = newSections.get(x); assertEquals(oldNode, newNode); } } diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRange.java b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRange.java index ab4a19673..a7eabe56a 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRange.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRange.java @@ -17,7 +17,7 @@ package org.apache.poi.hwpf.usermodel; -import java.util.ArrayList; +import java.util.List; import junit.framework.TestCase; @@ -62,7 +62,7 @@ public final class TestRange extends TestCase HWPFDocument hwpfDocument = new HWPFDocument( POIDataSamples .getDocumentInstance().openResourceAsStream( "Bug46817.doc" ) ); - final ArrayList sections = hwpfDocument.getSectionTable() + final List sections = hwpfDocument.getSectionTable() .getSections(); assertEquals( sections.size(), 1 ); diff --git a/src/testcases/org/apache/poi/hssf/usermodel/StreamUtility.java b/src/testcases/org/apache/poi/hssf/usermodel/StreamUtility.java index b9f39a03c..06aa0b84b 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/StreamUtility.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/StreamUtility.java @@ -82,7 +82,7 @@ public final class StreamUtility { private static int[] diffInternal(InputStream isA, InputStream isB, int[] allowableDifferenceRegions) throws IOException { int offset = 0; - List temp = new ArrayList(); + List temp = new ArrayList(); while (true) { int b = isA.read(); int b2 = isB.read(); @@ -114,7 +114,7 @@ public final class StreamUtility { return false; } - private static int[] toPrimitiveIntArray(List temp) { + private static int[] toPrimitiveIntArray(List temp) { int nItems = temp.size(); if(nItems < 1) { return null; diff --git a/src/testcases/org/apache/poi/poifs/storage/TestSmallDocumentBlock.java b/src/testcases/org/apache/poi/poifs/storage/TestSmallDocumentBlock.java index b061483c6..24278e207 100644 --- a/src/testcases/org/apache/poi/poifs/storage/TestSmallDocumentBlock.java +++ b/src/testcases/org/apache/poi/poifs/storage/TestSmallDocumentBlock.java @@ -142,7 +142,7 @@ public final class TestSmallDocumentBlock extends TestCase { { for (int j = 0; j <= 8; j++) { - List foo = new ArrayList(); + List foo = new ArrayList(); for (int k = 0; k < j; k++) { From dfe1c74dffee32bde54ee3d76f4d99b6355c8f58 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 20 Apr 2015 19:17:24 +0000 Subject: [PATCH 068/301] Fix some Eclipse warnings git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1674965 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xslf/usermodel/RenderableShape.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/RenderableShape.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/RenderableShape.java index e3804413a..a12805682 100644 --- a/src/ooxml/java/org/apache/poi/xslf/usermodel/RenderableShape.java +++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/RenderableShape.java @@ -167,6 +167,7 @@ class RenderableShape { return paint; } + @SuppressWarnings("unchecked") private Paint createLinearGradientPaint( Graphics2D graphics, CTGradientFillProperties gradFill, Rectangle2D anchor, @@ -224,10 +225,12 @@ class RenderableShape { // Trick to return GradientPaint on JDK 1.5 and LinearGradientPaint on JDK 1.6+ Paint paint; try { - Class clz = Class.forName("java.awt.LinearGradientPaint"); - Class clzCycleMethod = Class.forName("java.awt.MultipleGradientPaint$CycleMethod"); - Class clzColorSpaceType = Class.forName("java.awt.MultipleGradientPaint$ColorSpaceType"); - Constructor c = + Class clz = Class.forName("java.awt.LinearGradientPaint"); + @SuppressWarnings("rawtypes") + Class clzCycleMethod = Class.forName("java.awt.MultipleGradientPaint$CycleMethod"); + @SuppressWarnings("rawtypes") + Class clzColorSpaceType = Class.forName("java.awt.MultipleGradientPaint$ColorSpaceType"); + Constructor c = clz.getConstructor(Point2D.class, Point2D.class, float[].class, Color[].class, clzCycleMethod, clzColorSpaceType, AffineTransform.class); paint = (Paint) c.newInstance(p1, p2, fractions, colors, @@ -298,8 +301,8 @@ class RenderableShape { // Trick to return GradientPaint on JDK 1.5 and RadialGradientPaint on JDK 1.6+ Paint paint; try { - Class clz = Class.forName("java.awt.RadialGradientPaint"); - Constructor c = + Class clz = Class.forName("java.awt.RadialGradientPaint"); + Constructor c = clz.getConstructor(Point2D.class, float.class, float[].class, Color[].class); paint = (Paint) c.newInstance(pCenter, radius, fractions, colors); From d1385bbe1bea4f5882206d6e3f11710b8c7203da Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 20 Apr 2015 20:13:33 +0000 Subject: [PATCH 069/301] Fix bug 57828, shifting more than one commit per row did not work. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1674975 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/xssf/usermodel/XSSFSheet.java | 8 +++-- .../usermodel/TestXSSFSheetShiftRows.java | 34 ++++++++++++++++++ test-data/spreadsheet/57828.xlsx | Bin 0 -> 9708 bytes 3 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 test-data/spreadsheet/57828.xlsx diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java index f24a33194..189922ad4 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java @@ -2596,11 +2596,13 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { // i.e. when shifting down, start from down and go up, when shifting up, vice-versa SortedMap commentsToShift = new TreeMap(new Comparator() { public int compare(XSSFComment o1, XSSFComment o2) { - int row1 = new CellReference(o1.getCTComment().getRef()).getRow(); - int row2 = new CellReference(o2.getCTComment().getRef()).getRow(); + int row1 = o1.getRow(); + int row2 = o2.getRow(); if(row1 == row2) { - return 0; + // ordering is not important when row is equal, but don't return zero to still + // get multiple comments per row into the map + return o1.hashCode() - o2.hashCode(); } // when shifting down, sort higher row-values first diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheetShiftRows.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheetShiftRows.java index e915ee0d4..89364463b 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheetShiftRows.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheetShiftRows.java @@ -332,4 +332,38 @@ public final class TestXSSFSheetShiftRows extends BaseTestSheetShiftRows { wb.removeSheetAt(sn); } } + + public void testBug57828_OnlyOneCommentShiftedInRow() throws IOException { + XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("57828.xlsx"); + XSSFSheet sheet = wb.getSheetAt(0); + + Comment comment1 = sheet.getCellComment(2, 1); + assertNotNull(comment1); + + Comment comment2 = sheet.getCellComment(2, 2); + assertNotNull(comment2); + + Comment comment3 = sheet.getCellComment(1, 1); + assertNull("NO comment in (1,1) and it should be null", comment3); + + sheet.shiftRows(2, 2, -1); + + comment3 = sheet.getCellComment(1, 1); + assertNotNull("Comment in (2,1) moved to (1,1) so its not null now.", comment3); + + comment1 = sheet.getCellComment(2, 1); + assertNull("No comment currently in (2,1) and hence it is null", comment1); + + comment2 = sheet.getCellComment(1, 2); + assertNotNull("Comment in (2,2) should have moved as well because of shift rows. But its not", comment2); + +// OutputStream stream = new FileOutputStream("/tmp/57828.xlsx"); +// try { +// wb.write(stream); +// } finally { +// stream.close(); +// } + + wb.close(); + } } diff --git a/test-data/spreadsheet/57828.xlsx b/test-data/spreadsheet/57828.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..c750a094428176b89fbe03f7f9d21675d2d973e9 GIT binary patch literal 9708 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 literal 0 HcmV?d00001 From f5c3a2a62c20d5b4c9881ca312d4401862fba179 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Wed, 22 Apr 2015 06:49:38 +0000 Subject: [PATCH 070/301] Print out slightly more on test-failure for a unit tests which fails intermittently git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1675266 13f79535-47bb-0310-9956-ffa450edef68 --- .../testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index 5caf72988..6a3ddafa3 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -33,6 +33,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.util.Arrays; import java.util.Calendar; import java.util.List; @@ -1542,7 +1543,8 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { wb.write(bos); byte secondSave[] = bos.toByteArray(); - assertArrayEquals(firstSave, secondSave); + assertArrayEquals("Had: \n" + Arrays.toString(firstSave) + " and \n" + Arrays.toString(secondSave), + firstSave, secondSave); wb.close(); } From bcf825883adb6550f235c7a7d5eace65193f81ee Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 23 Apr 2015 18:01:51 +0000 Subject: [PATCH 071/301] Add unit test for Eventmodel processing of password protected excel files git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1675689 13f79535-47bb-0310-9956-ffa450edef68 --- .../eventusermodel/TestHSSFEventFactory.java | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/src/testcases/org/apache/poi/hssf/eventusermodel/TestHSSFEventFactory.java b/src/testcases/org/apache/poi/hssf/eventusermodel/TestHSSFEventFactory.java index ff76cfa19..7970aaacd 100644 --- a/src/testcases/org/apache/poi/hssf/eventusermodel/TestHSSFEventFactory.java +++ b/src/testcases/org/apache/poi/hssf/eventusermodel/TestHSSFEventFactory.java @@ -22,15 +22,19 @@ import java.util.List; import junit.framework.TestCase; +import org.apache.poi.EncryptedDocumentException; import org.apache.poi.hssf.HSSFTestDataSamples; +import org.apache.poi.hssf.record.BoundSheetRecord; import org.apache.poi.hssf.record.ContinueRecord; import org.apache.poi.hssf.record.DVALRecord; import org.apache.poi.hssf.record.DVRecord; import org.apache.poi.hssf.record.EOFRecord; import org.apache.poi.hssf.record.FeatHdrRecord; +import org.apache.poi.hssf.record.NumberRecord; import org.apache.poi.hssf.record.Record; import org.apache.poi.hssf.record.SelectionRecord; import org.apache.poi.hssf.record.WindowTwoRecord; +import org.apache.poi.hssf.record.crypto.Biff8EncryptionKey; import org.apache.poi.poifs.filesystem.POIFSFileSystem; /** * @@ -137,4 +141,63 @@ public final class TestHSSFEventFactory extends TestCase { factory = new HSSFEventFactory(); factory.processWorkbookEvents(req, fs); } + + public void testWithPasswordProtectedWorkbooks() throws Exception { + HSSFRequest req = new HSSFRequest(); + MockHSSFListener mockListen = new MockHSSFListener(); + req.addListenerForAllRecords(mockListen); + + // Without a password, can't be read + Biff8EncryptionKey.setCurrentUserPassword(null); + POIFSFileSystem fs = new POIFSFileSystem(openSample("xor-encryption-abc.xls")); + + HSSFEventFactory factory = new HSSFEventFactory(); + try { + factory.processWorkbookEvents(req, fs); + fail("Shouldn't be able to process protected workbook without the password"); + } catch (EncryptedDocumentException e) {} + + + // With the password, is properly processed + Biff8EncryptionKey.setCurrentUserPassword("abc"); + + req = new HSSFRequest(); + mockListen = new MockHSSFListener(); + req.addListenerForAllRecords(mockListen); + factory.processWorkbookEvents(req, fs); + + // Check we got the sheet and the contents + Record[] recs = mockListen.getRecords(); + assertTrue( recs.length > 50 ); + + // Has one sheet, with values 1,2,3 in column A rows 1-3 + boolean hasSheet=false, hasA1=false, hasA2=false, hasA3=false; + for (Record r : recs) { + if (r instanceof BoundSheetRecord) { + BoundSheetRecord bsr = (BoundSheetRecord)r; + assertEquals("Sheet1", bsr.getSheetname()); + hasSheet = true; + } + if (r instanceof NumberRecord) { + NumberRecord nr = (NumberRecord)r; + if (nr.getColumn() == 0 && nr.getRow() == 0) { + assertEquals(1, (int)nr.getValue()); + hasA1 = true; + } + if (nr.getColumn() == 0 && nr.getRow() == 1) { + assertEquals(2, (int)nr.getValue()); + hasA2 = true; + } + if (nr.getColumn() == 0 && nr.getRow() == 2) { + assertEquals(3, (int)nr.getValue()); + hasA3 = true; + } + } + } + + assertTrue("Sheet record not found", hasSheet); + assertTrue("Numeric record for A1 not found", hasA1); + assertTrue("Numeric record for A2 not found", hasA2); + assertTrue("Numeric record for A3 not found", hasA3); + } } From 3eb0a69666822b051d3077afb448696816348964 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 23 Apr 2015 18:02:38 +0000 Subject: [PATCH 072/301] Fix inconsistent indents git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1675690 13f79535-47bb-0310-9956-ffa450edef68 --- .../eventusermodel/TestHSSFEventFactory.java | 178 +++++++++--------- 1 file changed, 89 insertions(+), 89 deletions(-) diff --git a/src/testcases/org/apache/poi/hssf/eventusermodel/TestHSSFEventFactory.java b/src/testcases/org/apache/poi/hssf/eventusermodel/TestHSSFEventFactory.java index 7970aaacd..0a111beaa 100644 --- a/src/testcases/org/apache/poi/hssf/eventusermodel/TestHSSFEventFactory.java +++ b/src/testcases/org/apache/poi/hssf/eventusermodel/TestHSSFEventFactory.java @@ -36,99 +36,99 @@ import org.apache.poi.hssf.record.SelectionRecord; import org.apache.poi.hssf.record.WindowTwoRecord; import org.apache.poi.hssf.record.crypto.Biff8EncryptionKey; import org.apache.poi.poifs.filesystem.POIFSFileSystem; + /** - * + * Testing for {@link HSSFEventFactory} */ public final class TestHSSFEventFactory extends TestCase { - - private static final InputStream openSample(String sampleFileName) { - return HSSFTestDataSamples.openSampleFileStream(sampleFileName); - } + private static final InputStream openSample(String sampleFileName) { + return HSSFTestDataSamples.openSampleFileStream(sampleFileName); + } - public void testWithMissingRecords() throws Exception { + public void testWithMissingRecords() throws Exception { - HSSFRequest req = new HSSFRequest(); - MockHSSFListener mockListen = new MockHSSFListener(); - req.addListenerForAllRecords(mockListen); - - POIFSFileSystem fs = new POIFSFileSystem(openSample("SimpleWithSkip.xls")); - HSSFEventFactory factory = new HSSFEventFactory(); - factory.processWorkbookEvents(req, fs); + HSSFRequest req = new HSSFRequest(); + MockHSSFListener mockListen = new MockHSSFListener(); + req.addListenerForAllRecords(mockListen); - Record[] recs = mockListen.getRecords(); - // Check we got the records - assertTrue( recs.length > 100 ); - - // Check that the last few records are as we expect - // (Makes sure we don't accidently skip the end ones) - int numRec = recs.length; - assertEquals(WindowTwoRecord.class, recs[numRec-3].getClass()); - assertEquals(SelectionRecord.class, recs[numRec-2].getClass()); - assertEquals(EOFRecord.class, recs[numRec-1].getClass()); - } + POIFSFileSystem fs = new POIFSFileSystem(openSample("SimpleWithSkip.xls")); + HSSFEventFactory factory = new HSSFEventFactory(); + factory.processWorkbookEvents(req, fs); - public void testWithCrazyContinueRecords() throws Exception { - // Some files have crazy ordering of their continue records - // Check that we don't break on them (bug #42844) - - HSSFRequest req = new HSSFRequest(); - MockHSSFListener mockListen = new MockHSSFListener(); - req.addListenerForAllRecords(mockListen); - - POIFSFileSystem fs = new POIFSFileSystem(openSample("ContinueRecordProblem.xls")); - HSSFEventFactory factory = new HSSFEventFactory(); - factory.processWorkbookEvents(req, fs); + Record[] recs = mockListen.getRecords(); + // Check we got the records + assertTrue( recs.length > 100 ); - Record[] recs = mockListen.getRecords(); - // Check we got the records - assertTrue( recs.length > 100 ); + // Check that the last few records are as we expect + // (Makes sure we don't accidently skip the end ones) + int numRec = recs.length; + assertEquals(WindowTwoRecord.class, recs[numRec-3].getClass()); + assertEquals(SelectionRecord.class, recs[numRec-2].getClass()); + assertEquals(EOFRecord.class, recs[numRec-1].getClass()); + } - // And none of them are continue ones - for(int i=0; i 100 ); - private static class MockHSSFListener implements HSSFListener { - private final List records = new ArrayList(); + // And none of them are continue ones + for(int i=0; i records = new ArrayList(); + + public MockHSSFListener() {} + public Record[] getRecords() { + Record[] result = new Record[records.size()]; + records.toArray(result); + return result; + } + + public void processRecord(Record record) { + records.add(record); + } + } + + public void testWithDifferentWorkbookName() throws Exception { HSSFRequest req = new HSSFRequest(); MockHSSFListener mockListen = new MockHSSFListener(); req.addListenerForAllRecords(mockListen); @@ -140,14 +140,14 @@ public final class TestHSSFEventFactory extends TestCase { fs = new POIFSFileSystem(openSample("WORKBOOK_in_capitals.xls")); factory = new HSSFEventFactory(); factory.processWorkbookEvents(req, fs); - } - - public void testWithPasswordProtectedWorkbooks() throws Exception { + } + + public void testWithPasswordProtectedWorkbooks() throws Exception { HSSFRequest req = new HSSFRequest(); MockHSSFListener mockListen = new MockHSSFListener(); req.addListenerForAllRecords(mockListen); - - // Without a password, can't be read + + // Without a password, can't be read Biff8EncryptionKey.setCurrentUserPassword(null); POIFSFileSystem fs = new POIFSFileSystem(openSample("xor-encryption-abc.xls")); @@ -156,20 +156,20 @@ public final class TestHSSFEventFactory extends TestCase { factory.processWorkbookEvents(req, fs); fail("Shouldn't be able to process protected workbook without the password"); } catch (EncryptedDocumentException e) {} - - + + // With the password, is properly processed Biff8EncryptionKey.setCurrentUserPassword("abc"); - + req = new HSSFRequest(); mockListen = new MockHSSFListener(); req.addListenerForAllRecords(mockListen); factory.processWorkbookEvents(req, fs); - + // Check we got the sheet and the contents Record[] recs = mockListen.getRecords(); assertTrue( recs.length > 50 ); - + // Has one sheet, with values 1,2,3 in column A rows 1-3 boolean hasSheet=false, hasA1=false, hasA2=false, hasA3=false; for (Record r : recs) { @@ -194,10 +194,10 @@ public final class TestHSSFEventFactory extends TestCase { } } } - + assertTrue("Sheet record not found", hasSheet); assertTrue("Numeric record for A1 not found", hasA1); assertTrue("Numeric record for A2 not found", hasA2); assertTrue("Numeric record for A3 not found", hasA3); - } + } } From 28b682eec4d94ea439ec2e4c546be0416fcdeeaf Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 23 Apr 2015 18:10:24 +0000 Subject: [PATCH 073/301] =?UTF-8?q?Test=20file=20from=20Marcin=20=C5=81o?= =?UTF-8?q?=C5=9B=20from=20bug=20#57851?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1675693 13f79535-47bb-0310-9956-ffa450edef68 --- test-data/poifs/unknown_properties.msg | Bin 0 -> 20635 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test-data/poifs/unknown_properties.msg diff --git a/test-data/poifs/unknown_properties.msg b/test-data/poifs/unknown_properties.msg new file mode 100644 index 0000000000000000000000000000000000000000..2c76df98e2f4dbe8a52b5c2537d5a287bf9e33d6 GIT binary patch literal 20635 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 literal 0 HcmV?d00001 From f8977f76d0da10b389849c547ca286ffba0f79dd Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 23 Apr 2015 18:16:37 +0000 Subject: [PATCH 074/301] Pull out a common NPOIFS/POIFS test to a decidated bugs test class git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1675696 13f79535-47bb-0310-9956-ffa450edef68 --- .../poifs/filesystem/TestFileSystemBugs.java | 66 +++++++++++++++++++ .../poifs/filesystem/TestPOIFSFileSystem.java | 41 ------------ 2 files changed, 66 insertions(+), 41 deletions(-) create mode 100644 src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java b/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java new file mode 100644 index 000000000..cdd70c33a --- /dev/null +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java @@ -0,0 +1,66 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.poifs.filesystem; + +import java.util.Iterator; + +import junit.framework.TestCase; + +import org.apache.poi.POIDataSamples; + +/** + * Tests bugs across both POIFSFileSystem and NPOIFSFileSystem + */ +public final class TestFileSystemBugs extends TestCase { + /** + * Test that we can open files that come via Lotus notes. + * These have a top level directory without a name.... + */ + public void testNotesOLE2Files() throws Exception { + POIDataSamples _samples = POIDataSamples.getPOIFSInstance(); + + // Open the file up + POIFSFileSystem fs = new POIFSFileSystem( + _samples.openResourceAsStream("Notes.ole2") + ); + + // Check the contents + assertEquals(1, fs.getRoot().getEntryCount()); + + Entry entry = fs.getRoot().getEntries().next(); + assertTrue(entry.isDirectoryEntry()); + assertTrue(entry instanceof DirectoryEntry); + + // The directory lacks a name! + DirectoryEntry dir = (DirectoryEntry)entry; + assertEquals("", dir.getName()); + + // Has two children + assertEquals(2, dir.getEntryCount()); + + // Check them + Iterator it = dir.getEntries(); + entry = it.next(); + assertEquals(true, entry.isDocumentEntry()); + assertEquals("\u0001Ole10Native", entry.getName()); + + entry = it.next(); + assertEquals(true, entry.isDocumentEntry()); + assertEquals("\u0001CompObj", entry.getName()); + } +} diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestPOIFSFileSystem.java b/src/testcases/org/apache/poi/poifs/filesystem/TestPOIFSFileSystem.java index de5824efe..bbb9b9db1 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestPOIFSFileSystem.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestPOIFSFileSystem.java @@ -22,7 +22,6 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.nio.ByteBuffer; -import java.util.Iterator; import junit.framework.TestCase; @@ -37,12 +36,9 @@ import org.apache.poi.poifs.storage.RawDataBlockList; /** * Tests for POIFSFileSystem - * - * @author Josh Micich */ public final class TestPOIFSFileSystem extends TestCase { private POIDataSamples _samples = POIDataSamples.getPOIFSInstance(); - /** * Mock exception used to ensure correct error handling @@ -297,43 +293,6 @@ public final class TestPOIFSFileSystem extends TestCase { } } } - - /** - * Test that we can open files that come via Lotus notes. - * These have a top level directory without a name.... - */ - public void testNotesOLE2Files() throws Exception { - POIDataSamples _samples = POIDataSamples.getPOIFSInstance(); - - // Open the file up - POIFSFileSystem fs = new POIFSFileSystem( - _samples.openResourceAsStream("Notes.ole2") - ); - - // Check the contents - assertEquals(1, fs.getRoot().getEntryCount()); - - Entry entry = fs.getRoot().getEntries().next(); - assertTrue(entry.isDirectoryEntry()); - assertTrue(entry instanceof DirectoryEntry); - - // The directory lacks a name! - DirectoryEntry dir = (DirectoryEntry)entry; - assertEquals("", dir.getName()); - - // Has two children - assertEquals(2, dir.getEntryCount()); - - // Check them - Iterator it = dir.getEntries(); - entry = it.next(); - assertEquals(true, entry.isDocumentEntry()); - assertEquals("\u0001Ole10Native", entry.getName()); - - entry = it.next(); - assertEquals(true, entry.isDocumentEntry()); - assertEquals("\u0001CompObj", entry.getName()); - } private static InputStream openSampleStream(String sampleFileName) { return HSSFTestDataSamples.openSampleFileStream(sampleFileName); From d540ba43cc5527b97298f61ad5245da330818fa6 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 23 Apr 2015 18:20:27 +0000 Subject: [PATCH 075/301] Make the test generic across POIFS and NPOIFS git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1675698 13f79535-47bb-0310-9956-ffa450edef68 --- .../poifs/filesystem/TestFileSystemBugs.java | 54 +++++++++++-------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java b/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java index cdd70c33a..c5fe52f81 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java @@ -34,33 +34,45 @@ public final class TestFileSystemBugs extends TestCase { public void testNotesOLE2Files() throws Exception { POIDataSamples _samples = POIDataSamples.getPOIFSInstance(); - // Open the file up - POIFSFileSystem fs = new POIFSFileSystem( - _samples.openResourceAsStream("Notes.ole2") - ); + // Open the file up with the two FileSystems + @SuppressWarnings("resource") + DirectoryNode[] roots = new DirectoryNode[] { + new POIFSFileSystem( + _samples.openResourceAsStream("Notes.ole2") + ).getRoot(), + new NPOIFSFileSystem( + _samples.openResourceAsStream("Notes.ole2") + ).getRoot() + }; // Check the contents - assertEquals(1, fs.getRoot().getEntryCount()); + for (DirectoryNode root : roots) { + assertEquals(1, root.getEntryCount()); - Entry entry = fs.getRoot().getEntries().next(); - assertTrue(entry.isDirectoryEntry()); - assertTrue(entry instanceof DirectoryEntry); + Entry entry = root.getEntries().next(); + assertTrue(entry.isDirectoryEntry()); + assertTrue(entry instanceof DirectoryEntry); - // The directory lacks a name! - DirectoryEntry dir = (DirectoryEntry)entry; - assertEquals("", dir.getName()); + // The directory lacks a name! + DirectoryEntry dir = (DirectoryEntry)entry; + assertEquals("", dir.getName()); - // Has two children - assertEquals(2, dir.getEntryCount()); + // Has two children + assertEquals(2, dir.getEntryCount()); - // Check them - Iterator it = dir.getEntries(); - entry = it.next(); - assertEquals(true, entry.isDocumentEntry()); - assertEquals("\u0001Ole10Native", entry.getName()); + // Check them + Iterator it = dir.getEntries(); + entry = it.next(); + assertEquals(true, entry.isDocumentEntry()); + assertEquals("\u0001Ole10Native", entry.getName()); - entry = it.next(); - assertEquals(true, entry.isDocumentEntry()); - assertEquals("\u0001CompObj", entry.getName()); + entry = it.next(); + assertEquals(true, entry.isDocumentEntry()); + assertEquals("\u0001CompObj", entry.getName()); + + // Tidy + if (root.getNFileSystem() != null) + root.getNFileSystem().close(); + } } } From 22fa817fccdc673432748c896405d62313223e12 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 23 Apr 2015 18:26:01 +0000 Subject: [PATCH 076/301] Make the opening code generic git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1675700 13f79535-47bb-0310-9956-ffa450edef68 --- .../poifs/filesystem/TestFileSystemBugs.java | 48 ++++++++++++------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java b/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java index c5fe52f81..6033e0e49 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java @@ -17,7 +17,9 @@ package org.apache.poi.poifs.filesystem; +import java.util.ArrayList; import java.util.Iterator; +import java.util.List; import junit.framework.TestCase; @@ -27,26 +29,40 @@ import org.apache.poi.POIDataSamples; * Tests bugs across both POIFSFileSystem and NPOIFSFileSystem */ public final class TestFileSystemBugs extends TestCase { + protected static POIDataSamples _samples = POIDataSamples.getPOIFSInstance(); + + protected List openedFSs; + protected void tearDown() throws Exception { + if (openedFSs != null && !openedFSs.isEmpty()) { + for (NPOIFSFileSystem fs : openedFSs) { + try { + fs.close(); + } catch (Exception e) { + System.err.println("Error closing FS: " + e); + } + } + } + openedFSs = null; + } + protected DirectoryNode[] openSample(String name) throws Exception { + POIFSFileSystem ofs = new POIFSFileSystem( + _samples.openResourceAsStream(name)); + NPOIFSFileSystem nfs = new NPOIFSFileSystem( + _samples.openResourceAsStream(name)); + + if (openedFSs == null) openedFSs = new ArrayList(); + openedFSs.add(nfs); + + return new DirectoryNode[] { ofs.getRoot(), nfs.getRoot() }; + } + /** * Test that we can open files that come via Lotus notes. * These have a top level directory without a name.... */ public void testNotesOLE2Files() throws Exception { - POIDataSamples _samples = POIDataSamples.getPOIFSInstance(); - - // Open the file up with the two FileSystems - @SuppressWarnings("resource") - DirectoryNode[] roots = new DirectoryNode[] { - new POIFSFileSystem( - _samples.openResourceAsStream("Notes.ole2") - ).getRoot(), - new NPOIFSFileSystem( - _samples.openResourceAsStream("Notes.ole2") - ).getRoot() - }; - // Check the contents - for (DirectoryNode root : roots) { + for (DirectoryNode root : openSample("Notes.ole2")) { assertEquals(1, root.getEntryCount()); Entry entry = root.getEntries().next(); @@ -69,10 +85,6 @@ public final class TestFileSystemBugs extends TestCase { entry = it.next(); assertEquals(true, entry.isDocumentEntry()); assertEquals("\u0001CompObj", entry.getName()); - - // Tidy - if (root.getNFileSystem() != null) - root.getNFileSystem().close(); } } } From 20fa446f40357fab3c4ac5626aa5dcc0f942c63d Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 23 Apr 2015 18:35:15 +0000 Subject: [PATCH 077/301] #57851 - Skip null properties in PropertyTableBase, which is how PropertyFactory reports unsupported POIFS properties git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1675702 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/poifs/property/PropertyTableBase.java | 5 ++++ .../poifs/filesystem/TestFileSystemBugs.java | 30 +++++++++++++++---- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/src/java/org/apache/poi/poifs/property/PropertyTableBase.java b/src/java/org/apache/poi/poifs/property/PropertyTableBase.java index b3690c5c2..477cf036d 100644 --- a/src/java/org/apache/poi/poifs/property/PropertyTableBase.java +++ b/src/java/org/apache/poi/poifs/property/PropertyTableBase.java @@ -111,6 +111,11 @@ public abstract class PropertyTableBase implements BATManaged { while (!children.empty()) { Property property = children.pop(); + if (property == null) + { + // unknown / unsupported / corrupted property, skip + continue; + } root.addChild(property); if (property.isDirectory()) diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java b/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java index 6033e0e49..f6540b4d3 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java @@ -44,15 +44,22 @@ public final class TestFileSystemBugs extends TestCase { } openedFSs = null; } - protected DirectoryNode[] openSample(String name) throws Exception { - POIFSFileSystem ofs = new POIFSFileSystem( - _samples.openResourceAsStream(name)); + protected DirectoryNode[] openSample(String name, boolean oldFails) throws Exception { NPOIFSFileSystem nfs = new NPOIFSFileSystem( _samples.openResourceAsStream(name)); - if (openedFSs == null) openedFSs = new ArrayList(); openedFSs.add(nfs); + POIFSFileSystem ofs = null; + try { + ofs = new POIFSFileSystem( + _samples.openResourceAsStream(name)); + if (oldFails) fail("POIFSFileSystem should have failed but didn't"); + } catch (Exception e) { + if (!oldFails) throw e; + } + + if (ofs == null) return new DirectoryNode[] { nfs.getRoot() }; return new DirectoryNode[] { ofs.getRoot(), nfs.getRoot() }; } @@ -62,7 +69,7 @@ public final class TestFileSystemBugs extends TestCase { */ public void testNotesOLE2Files() throws Exception { // Check the contents - for (DirectoryNode root : openSample("Notes.ole2")) { + for (DirectoryNode root : openSample("Notes.ole2", false)) { assertEquals(1, root.getEntryCount()); Entry entry = root.getEntries().next(); @@ -87,4 +94,17 @@ public final class TestFileSystemBugs extends TestCase { assertEquals("\u0001CompObj", entry.getName()); } } + + /** + * Ensure that a file with a corrupted property in the + * properties table can still be loaded, and the remaining + * properties used + * Note - only works for NPOIFSFileSystem, POIFSFileSystem + * can't cope with this level of corruption + */ + public void testCorruptedProperties() throws Exception { + for (DirectoryNode root : openSample("unknown_properties.msg", true)) { + assertEquals(42, root.getEntryCount()); + } + } } From b68dcd9df5e1e23137b6ca35ffd6c4010235e1e6 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 23 Apr 2015 21:09:42 +0000 Subject: [PATCH 078/301] Add another file exclude, and hae the test print out which fails failed to make it quicker to spot in the jenkins failure email git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1675719 13f79535-47bb-0310-9956-ffa450edef68 --- src/integrationtest/org/apache/poi/TestAllFiles.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/integrationtest/org/apache/poi/TestAllFiles.java b/src/integrationtest/org/apache/poi/TestAllFiles.java index 8a66024f7..701e504e1 100644 --- a/src/integrationtest/org/apache/poi/TestAllFiles.java +++ b/src/integrationtest/org/apache/poi/TestAllFiles.java @@ -234,6 +234,7 @@ public class TestAllFiles { EXPECTED_FAILURES.add("spreadsheet/testEXCEL_4.xls"); EXPECTED_FAILURES.add("spreadsheet/testEXCEL_5.xls"); EXPECTED_FAILURES.add("spreadsheet/testEXCEL_95.xls"); + EXPECTED_FAILURES.add("poifs/unknown_properties.msg"); // POIFS properties corrupted // OOXML Strict is not yet supported, see bug #57699 EXPECTED_FAILURES.add("spreadsheet/SampleSS.strict.xlsx"); @@ -296,12 +297,14 @@ public class TestAllFiles { } else { // check if we expect failure for this file if(!EXPECTED_FAILURES.contains(file) && !AbstractFileHandler.EXPECTED_EXTRACTOR_FAILURES.contains(file)) { + System.out.println("Failed: " + file); throw new Exception("While handling " + file, e); } } } catch (Exception e) { // check if we expect failure for this file if(!EXPECTED_FAILURES.contains(file) && !AbstractFileHandler.EXPECTED_EXTRACTOR_FAILURES.contains(file)) { + System.out.println("Failed: " + file); throw new Exception("While handling " + file, e); } } From a5846f0f660b70cb1bfd88a7a50820ec3779f51c Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Fri, 24 Apr 2015 01:29:10 +0000 Subject: [PATCH 079/301] #57829 Avoid XmlValueDisconnectedException when removing a XWPFRun from a XWPFParagraph by removing from IRuns as well git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1675738 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/xwpf/usermodel/XWPFParagraph.java | 6 +++++- .../apache/poi/xwpf/usermodel/TestXWPFBugs.java | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java index 7ed629c10..c98143a5a 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java @@ -1369,8 +1369,12 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para */ public boolean removeRun(int pos){ if (pos >= 0 && pos < paragraph.sizeOfRArray()) { - getCTP().removeR(pos); + // Remove the run from our high level lists + XWPFRun run = runs.get(pos); runs.remove(pos); + iruns.remove(run); + // Remove the run from the low-level XML + getCTP().removeR(pos); return true; } return false; diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java index 053b611e3..8fd7f97e0 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java @@ -88,4 +88,19 @@ public class TestXWPFBugs { XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("56392.docx"); assertNotNull(doc); } + + /** + * Removing a run needs to remove it from both Runs and IRuns + */ + @Test + public void test57829() throws Exception { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx"); + assertNotNull(doc); + assertEquals(3, doc.getParagraphs().size()); + + for (XWPFParagraph paragraph : doc.getParagraphs()) { + paragraph.removeRun(0); + assertNotNull(paragraph.getText()); + } + } } From 2be2a7cbfc10721a8f027132968c2ab6179a091d Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Fri, 24 Apr 2015 01:42:21 +0000 Subject: [PATCH 080/301] Whitespace and comment updates git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1675740 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/ss/formula/eval/FunctionEval.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/java/org/apache/poi/ss/formula/eval/FunctionEval.java b/src/java/org/apache/poi/ss/formula/eval/FunctionEval.java index 5ba894706..315b769a4 100644 --- a/src/java/org/apache/poi/ss/formula/eval/FunctionEval.java +++ b/src/java/org/apache/poi/ss/formula/eval/FunctionEval.java @@ -27,8 +27,8 @@ import org.apache.poi.ss.formula.function.FunctionMetadataRegistry; import org.apache.poi.ss.formula.functions.*; /** - * @author Amol S. Deshmukh < amolweb at ya hoo dot com > - * @author Johan Karlsteen - added Intercept and Slope + * Mappings from the Excel functions to our evaluation implementations + * (where avilable) */ public final class FunctionEval { /** @@ -99,7 +99,7 @@ public final class FunctionEval { retval[39] = NumericFunction.MOD; retval[43] = new DStarRunner(new DMin()); - + retval[46] = AggregateFunction.VAR; retval[48] = TextFunction.TEXT; @@ -161,7 +161,7 @@ public final class FunctionEval { retval[FunctionID.INDIRECT] = null; // Indirect.evaluate has different signature - retval[162] = TextFunction.CLEAN; //Aniket Banerjee + retval[162] = TextFunction.CLEAN; retval[167] = new IPMT(); retval[168] = new PPMT(); retval[169] = new Counta(); @@ -177,7 +177,7 @@ public final class FunctionEval { retval[212] = NumericFunction.ROUNDUP; retval[213] = NumericFunction.ROUNDDOWN; retval[216] = new Rank(); - retval[219] = new Address(); //Aniket Banerjee + retval[219] = new Address(); retval[220] = new Days360(); retval[221] = new Today(); @@ -290,7 +290,7 @@ public final class FunctionEval { throw new IllegalArgumentException(name + " is a function from the Excel Analysis Toolpack. " + "Use AnalysisToolpack.registerFunction(String name, FreeRefFunction func) instead."); } - + throw new IllegalArgumentException("Unknown function: " + name); } From 55162283676f73c5a4feae667671955a2e92bcfa Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Fri, 24 Apr 2015 01:47:20 +0000 Subject: [PATCH 081/301] Patch from Conor from bug #57747 - Add ISERR() function git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1675741 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/ss/formula/eval/FunctionEval.java | 1 + .../ss/formula/functions/LogicalFunction.java | 21 +++++ .../functions/TestLogicalFunction.java | 88 +++++++++++++++++++ 3 files changed, 110 insertions(+) create mode 100644 src/testcases/org/apache/poi/ss/formula/functions/TestLogicalFunction.java diff --git a/src/java/org/apache/poi/ss/formula/eval/FunctionEval.java b/src/java/org/apache/poi/ss/formula/eval/FunctionEval.java index 315b769a4..cf88b37a6 100644 --- a/src/java/org/apache/poi/ss/formula/eval/FunctionEval.java +++ b/src/java/org/apache/poi/ss/formula/eval/FunctionEval.java @@ -154,6 +154,7 @@ public final class FunctionEval { retval[124] = TextFunction.FIND; + retval[126] = LogicalFunction.ISERR; retval[127] = LogicalFunction.ISTEXT; retval[128] = LogicalFunction.ISNUMBER; retval[129] = LogicalFunction.ISBLANK; diff --git a/src/java/org/apache/poi/ss/formula/functions/LogicalFunction.java b/src/java/org/apache/poi/ss/formula/functions/LogicalFunction.java index ef18dab64..c4b3e6718 100644 --- a/src/java/org/apache/poi/ss/formula/functions/LogicalFunction.java +++ b/src/java/org/apache/poi/ss/formula/functions/LogicalFunction.java @@ -90,6 +90,27 @@ public abstract class LogicalFunction extends Fixed1ArgFunction { } }; + /** + * Implementation of Excel ISERR() function.

+ * + * Syntax:
+ * ISERR(value)

+ * + * value The value to be tested

+ * + * Returns the logical value TRUE if value refers to any error value except + * '#N/A'; otherwise, it returns FALSE. + */ + public static final Function ISERR = new LogicalFunction() { + @Override + protected boolean evaluate(ValueEval arg) { + if (arg instanceof ErrorEval) { + return arg != ErrorEval.NA; + } + return false; + } + }; + /** * Implementation for Excel ISNA() function.

* diff --git a/src/testcases/org/apache/poi/ss/formula/functions/TestLogicalFunction.java b/src/testcases/org/apache/poi/ss/formula/functions/TestLogicalFunction.java new file mode 100644 index 000000000..faafdac3e --- /dev/null +++ b/src/testcases/org/apache/poi/ss/formula/functions/TestLogicalFunction.java @@ -0,0 +1,88 @@ +package org.apache.poi.ss.formula.functions; + +import java.io.IOException; + +import junit.framework.TestCase; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellValue; +import org.apache.poi.ss.usermodel.FormulaEvaluator; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.util.CellReference; + +/** + * LogicalFunction unit tests. + */ +public class TestLogicalFunction extends TestCase { + + private FormulaEvaluator evaluator; + private Row row3; + private Cell cell1; + private Cell cell2; + + @Override + public void setUp() throws IOException { + Workbook wb = new HSSFWorkbook(); + try { + buildWorkbook(wb); + } finally { + wb.close(); + } + } + + private void buildWorkbook(Workbook wb) { + Sheet sh = wb.createSheet(); + Row row1 = sh.createRow(0); + Row row2 = sh.createRow(1); + row3 = sh.createRow(2); + + row1.createCell(0, Cell.CELL_TYPE_NUMERIC); + row1.createCell(1, Cell.CELL_TYPE_NUMERIC); + + row2.createCell(0, Cell.CELL_TYPE_NUMERIC); + row2.createCell(1, Cell.CELL_TYPE_NUMERIC); + + row3.createCell(0); + row3.createCell(1); + + CellReference a1 = new CellReference("A1"); + CellReference a2 = new CellReference("A2"); + CellReference b1 = new CellReference("B1"); + CellReference b2 = new CellReference("B2"); + + sh.getRow(a1.getRow()).getCell(a1.getCol()).setCellValue(35); + sh.getRow(a2.getRow()).getCell(a2.getCol()).setCellValue(0); + sh.getRow(b1.getRow()).getCell(b1.getCol()).setCellFormula("A1/A2"); + sh.getRow(b2.getRow()).getCell(b2.getCol()).setCellFormula("NA()"); + + evaluator = wb.getCreationHelper().createFormulaEvaluator(); + } + + public void testIsErr() { + cell1 = row3.createCell(0); + cell1.setCellFormula("ISERR(B1)"); // produces #DIV/0! + cell2 = row3.createCell(1); + cell2.setCellFormula("ISERR(B2)"); // produces #N/A + + CellValue cell1Value = evaluator.evaluate(cell1); + CellValue cell2Value = evaluator.evaluate(cell2); + + assertEquals(true, cell1Value.getBooleanValue()); + assertEquals(false, cell2Value.getBooleanValue()); + } + + public void testIsError() { + cell1 = row3.createCell(0); + cell1.setCellFormula("ISERROR(B1)"); // produces #DIV/0! + cell2 = row3.createCell(1); + cell2.setCellFormula("ISERROR(B2)"); // produces #N/A + + CellValue cell1Value = evaluator.evaluate(cell1); + CellValue cell2Value = evaluator.evaluate(cell2); + + assertEquals(true, cell1Value.getBooleanValue()); + assertEquals(true, cell2Value.getBooleanValue()); + } +} From 1cbac547a00c088ca5af57bfc8053855b8ed9ce5 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Fri, 24 Apr 2015 02:07:01 +0000 Subject: [PATCH 082/301] Add a common interface for 3D Pxg's git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1675744 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/ss/formula/ptg/Area3DPxg.java | 2 +- .../org/apache/poi/ss/formula/ptg/Pxg3D.java | 27 +++++++++++++++++++ .../apache/poi/ss/formula/ptg/Ref3DPxg.java | 2 +- 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 src/java/org/apache/poi/ss/formula/ptg/Pxg3D.java diff --git a/src/java/org/apache/poi/ss/formula/ptg/Area3DPxg.java b/src/java/org/apache/poi/ss/formula/ptg/Area3DPxg.java index e27ccdd7a..665ac98cf 100644 --- a/src/java/org/apache/poi/ss/formula/ptg/Area3DPxg.java +++ b/src/java/org/apache/poi/ss/formula/ptg/Area3DPxg.java @@ -31,7 +31,7 @@ import org.apache.poi.util.LittleEndianOutput; *

This is XSSF only, as it stores the sheet / book references * in String form. The HSSF equivalent using indexes is {@link Area3DPtg}

*/ -public final class Area3DPxg extends AreaPtgBase implements Pxg { +public final class Area3DPxg extends AreaPtgBase implements Pxg3D { private int externalWorkbookNumber = -1; private String firstSheetName; private String lastSheetName; diff --git a/src/java/org/apache/poi/ss/formula/ptg/Pxg3D.java b/src/java/org/apache/poi/ss/formula/ptg/Pxg3D.java new file mode 100644 index 000000000..49083fe15 --- /dev/null +++ b/src/java/org/apache/poi/ss/formula/ptg/Pxg3D.java @@ -0,0 +1,27 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.ss.formula.ptg; + +/** + * An XSSF only special kind of Ptg, which stores a range of + * sheet / book references in string form. + */ +public interface Pxg3D extends Pxg { + public String getLastSheetName(); + public void setLastSheetName(String sheetName); +} diff --git a/src/java/org/apache/poi/ss/formula/ptg/Ref3DPxg.java b/src/java/org/apache/poi/ss/formula/ptg/Ref3DPxg.java index 41039cd92..3b78c5a4b 100644 --- a/src/java/org/apache/poi/ss/formula/ptg/Ref3DPxg.java +++ b/src/java/org/apache/poi/ss/formula/ptg/Ref3DPxg.java @@ -31,7 +31,7 @@ import org.apache.poi.util.LittleEndianOutput; *

This is XSSF only, as it stores the sheet / book references * in String form. The HSSF equivalent using indexes is {@link Ref3DPtg}

*/ -public final class Ref3DPxg extends RefPtgBase implements Pxg { +public final class Ref3DPxg extends RefPtgBase implements Pxg3D { private int externalWorkbookNumber = -1; private String firstSheetName; private String lastSheetName; From b681f4fb3aa2608e785ea450bafbf6aadc1f4fa2 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Fri, 24 Apr 2015 02:13:07 +0000 Subject: [PATCH 083/301] #57642 Fix setSheetName with ISERROR on XSSF git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1675745 13f79535-47bb-0310-9956-ffa450edef68 --- .../xssf/usermodel/helpers/XSSFFormulaUtils.java | 11 ++++++++++- .../apache/poi/xssf/usermodel/TestXSSFBugs.java | 16 ++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFFormulaUtils.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFFormulaUtils.java index 776210de3..a9d995fb7 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFFormulaUtils.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFFormulaUtils.java @@ -24,6 +24,7 @@ import org.apache.poi.ss.formula.FormulaRenderer; import org.apache.poi.ss.formula.FormulaType; import org.apache.poi.ss.formula.ptg.Ptg; import org.apache.poi.ss.formula.ptg.Pxg; +import org.apache.poi.ss.formula.ptg.Pxg3D; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; @@ -125,9 +126,17 @@ public final class XSSFFormulaUtils { if (ptg instanceof Pxg) { Pxg pxg = (Pxg)ptg; if (pxg.getExternalWorkbookNumber() < 1) { - if (pxg.getSheetName().equals(oldName)) { + if (pxg.getSheetName() != null && + pxg.getSheetName().equals(oldName)) { pxg.setSheetName(newName); } + if (pxg instanceof Pxg3D) { + Pxg3D pxg3D = (Pxg3D)pxg; + if (pxg3D.getLastSheetName() != null && + pxg3D.getLastSheetName().equals(oldName)) { + pxg3D.setLastSheetName(newName); + } + } } } } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index 6a3ddafa3..6a09b9033 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -2367,4 +2367,20 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { assertNotNull(bgColor); assertEquals("FF00FFFF", fgColor.getARGBHex()); } + + @Test + public void bug57642() throws Exception { + XSSFWorkbook wb = new XSSFWorkbook(); + XSSFSheet s = wb.createSheet("TestSheet"); + XSSFCell c = s.createRow(0).createCell(0); + c.setCellFormula("ISERROR(TestSheet!A1)"); + c = s.createRow(1).createCell(1); + c.setCellFormula("ISERROR(B2)"); + + wb.setSheetName(0, "CSN"); + c = s.getRow(0).getCell(0); + assertEquals("ISERROR(CSN!A1)", c.getCellFormula()); + c = s.getRow(1).getCell(1); + assertEquals("ISERROR(B2)", c.getCellFormula()); + } } From 3c1d9756baf1efe20ab022616741aa2ee7273a5c Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Fri, 24 Apr 2015 02:20:57 +0000 Subject: [PATCH 084/301] Fix some inconsistent whitespace git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1675748 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xssf/usermodel/TestXSSFBugs.java | 1724 +++++++++-------- 1 file changed, 870 insertions(+), 854 deletions(-) diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index 6a09b9033..71e008485 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -31,8 +31,6 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; import java.util.Arrays; import java.util.Calendar; import java.util.List; @@ -57,7 +55,26 @@ import org.apache.poi.ss.formula.eval.ErrorEval; import org.apache.poi.ss.formula.eval.NumberEval; import org.apache.poi.ss.formula.eval.ValueEval; import org.apache.poi.ss.formula.functions.Function; -import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.usermodel.BaseTestBugzillaIssues; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.ss.usermodel.CellValue; +import org.apache.poi.ss.usermodel.ClientAnchor; +import org.apache.poi.ss.usermodel.Comment; +import org.apache.poi.ss.usermodel.CreationHelper; +import org.apache.poi.ss.usermodel.DataFormatter; +import org.apache.poi.ss.usermodel.DateUtil; +import org.apache.poi.ss.usermodel.Drawing; +import org.apache.poi.ss.usermodel.Font; +import org.apache.poi.ss.usermodel.FormulaError; +import org.apache.poi.ss.usermodel.FormulaEvaluator; +import org.apache.poi.ss.usermodel.Hyperlink; +import org.apache.poi.ss.usermodel.IndexedColors; +import org.apache.poi.ss.usermodel.Name; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.usermodel.WorkbookFactory; import org.apache.poi.ss.util.AreaReference; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellReference; @@ -77,7 +94,6 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet; import org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTFontImpl; public final class TestXSSFBugs extends BaseTestBugzillaIssues { - public TestXSSFBugs() { super(XSSFITestDataProvider.instance); } @@ -191,7 +207,7 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { assertEquals(1, rels.size()); assertEquals("Sheet1!A1", rels.get(0).getPackageRelationship().getTargetURI().getFragment()); } - + /** * Excel will sometimes write a button with a textbox * containing >br< (not closed!). @@ -200,7 +216,7 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { */ @Test public void bug49020() throws Exception { - /*XSSFWorkbook wb =*/ XSSFTestDataSamples.openSampleWorkbook("BrNotClosed.xlsx"); + /*XSSFWorkbook wb =*/ XSSFTestDataSamples.openSampleWorkbook("BrNotClosed.xlsx"); } /** @@ -212,42 +228,42 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { CTWorksheet sh = wb.getSheetAt(0).getCTWorksheet(); assertNotNull(sh.getPhoneticPr()); } - + /** * Names which are defined with a Sheet * should return that sheet index properly */ @Test public void bug48923() throws Exception { - XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("48923.xlsx"); - assertEquals(4, wb.getNumberOfNames()); - - Name b1 = wb.getName("NameB1"); - Name b2 = wb.getName("NameB2"); - Name sheet2 = wb.getName("NameSheet2"); - Name test = wb.getName("Test"); - - assertNotNull(b1); - assertEquals("NameB1", b1.getNameName()); - assertEquals("Sheet1", b1.getSheetName()); - assertEquals(-1, b1.getSheetIndex()); - - assertNotNull(b2); - assertEquals("NameB2", b2.getNameName()); - assertEquals("Sheet1", b2.getSheetName()); - assertEquals(-1, b2.getSheetIndex()); - - assertNotNull(sheet2); - assertEquals("NameSheet2", sheet2.getNameName()); - assertEquals("Sheet2", sheet2.getSheetName()); - assertEquals(-1, sheet2.getSheetIndex()); - - assertNotNull(test); - assertEquals("Test", test.getNameName()); - assertEquals("Sheet1", test.getSheetName()); - assertEquals(-1, test.getSheetIndex()); + XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("48923.xlsx"); + assertEquals(4, wb.getNumberOfNames()); + + Name b1 = wb.getName("NameB1"); + Name b2 = wb.getName("NameB2"); + Name sheet2 = wb.getName("NameSheet2"); + Name test = wb.getName("Test"); + + assertNotNull(b1); + assertEquals("NameB1", b1.getNameName()); + assertEquals("Sheet1", b1.getSheetName()); + assertEquals(-1, b1.getSheetIndex()); + + assertNotNull(b2); + assertEquals("NameB2", b2.getNameName()); + assertEquals("Sheet1", b2.getSheetName()); + assertEquals(-1, b2.getSheetIndex()); + + assertNotNull(sheet2); + assertEquals("NameSheet2", sheet2.getNameName()); + assertEquals("Sheet2", sheet2.getSheetName()); + assertEquals(-1, sheet2.getSheetIndex()); + + assertNotNull(test); + assertEquals("Test", test.getNameName()); + assertEquals("Sheet1", test.getSheetName()); + assertEquals(-1, test.getSheetIndex()); } - + /** * Problem with evaluation formulas due to * NameXPtgs. @@ -258,77 +274,77 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { */ @Test public void bug48539() throws Exception { - XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("48539.xlsx"); - assertEquals(3, wb.getNumberOfSheets()); - assertEquals(0, wb.getNumberOfNames()); - - // Try each cell individually - XSSFFormulaEvaluator eval = new XSSFFormulaEvaluator(wb); - for(int i=0; i Date: Fri, 24 Apr 2015 02:24:36 +0000 Subject: [PATCH 085/301] Add missing license header git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1675750 13f79535-47bb-0310-9956-ffa450edef68 --- .../formula/functions/TestLogicalFunction.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/testcases/org/apache/poi/ss/formula/functions/TestLogicalFunction.java b/src/testcases/org/apache/poi/ss/formula/functions/TestLogicalFunction.java index faafdac3e..628df033d 100644 --- a/src/testcases/org/apache/poi/ss/formula/functions/TestLogicalFunction.java +++ b/src/testcases/org/apache/poi/ss/formula/functions/TestLogicalFunction.java @@ -1,3 +1,20 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + package org.apache.poi.ss.formula.functions; import java.io.IOException; From 5fc4bd3f48fdc923069423c238ab67e0e004f72f Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Sat, 25 Apr 2015 01:53:30 +0000 Subject: [PATCH 086/301] #57857 Based on the Apache Tika OSGi bundle and tests, start on a maven-powered build and test for a POI bundle git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1675989 13f79535-47bb-0310-9956-ffa450edef68 --- build.xml | 8 + osgi/pom.xml | 226 ++++++++++++++++++ .../org/apache/poi/osgi/TestOSGiBundle.java | 84 +++++++ osgi/test-bundles.xml | 34 +++ 4 files changed, 352 insertions(+) create mode 100644 osgi/pom.xml create mode 100644 osgi/src/test/java/org/apache/poi/osgi/TestOSGiBundle.java create mode 100644 osgi/test-bundles.xml diff --git a/build.xml b/build.xml index b8f7a66a4..90d1cdc06 100644 --- a/build.xml +++ b/build.xml @@ -1593,6 +1593,14 @@ under the License. Use ${dist.dir}/multisign.sh to create md5 checksums and GPG signatures + + + + + + + + diff --git a/osgi/pom.xml b/osgi/pom.xml new file mode 100644 index 000000000..9b33aa84f --- /dev/null +++ b/osgi/pom.xml @@ -0,0 +1,226 @@ + + + + + 4.0.0 + + + org.apache + apache + 10 + + + + org.apache.poi + poi-bundle + bundle + Apache POI OSGi bundle + + OSGi bundle that contains Apache POI, and the dependencies. + + http://poi.apache.org/ + ${poi.version} + + + 1.6 + 1.6 + 4.4.0 + + + + + ${project.groupId} + poi + ${poi.version} + + + ${project.groupId} + poi-scratchpad + ${poi.version} + + + ${project.groupId} + poi-ooxml + ${poi.version} + + + + + junit + junit + 4.12 + + + org.ops4j.pax.exam + pax-exam-junit4 + ${pax.exam.version} + test + + + org.ops4j.pax.exam + pax-exam-container-native + ${pax.exam.version} + test + + + org.apache.felix + org.apache.felix.framework + 4.6.0 + test + + + org.ops4j.pax.exam + pax-exam-link-assembly + ${pax.exam.version} + test + + + org.ops4j.pax.url + pax-url-aether + 2.3.0 + test + + + javax.inject + javax.inject + 1 + test + + + org.osgi + org.osgi.core + 5.0.0 + test + + + + + + + org.apache.felix + maven-bundle-plugin + true + + + + org.apache.poi.osgi.Activator + + + poi;inline=true, + poi-scratchpad;inline=true, + poi-ooxml;inline=true, + poi-ooxml-schemas, + xmlbeans + + true + ${project.url} + + org.apache.poi.* + + + + + + + maven-compiler-plugin + 3.2 + + ${maven.compiler.source} + ${maven.compiler.target} + + + + + + + + java6 + + [1.6,) + + + + + maven-assembly-plugin + + + pre-integration-test + + single + + + test-bundles.xml + test + false + + + + + + maven-failsafe-plugin + 2.10 + + + + integration-test + verify + + + + + + + WARN + + + + + + + + + + + The Apache Software Founation + http://www.apache.org + + + http://svn.apache.org/viewvc/poi/trunk/osgi + scm:svn:http://svn.apache.org/repos/asf/poi/trunk/osgi + scm:svn:https://svn.apache.org/repos/asf/poi/trunk/osgi + + diff --git a/osgi/src/test/java/org/apache/poi/osgi/TestOSGiBundle.java b/osgi/src/test/java/org/apache/poi/osgi/TestOSGiBundle.java new file mode 100644 index 000000000..738d96b99 --- /dev/null +++ b/osgi/src/test/java/org/apache/poi/osgi/TestOSGiBundle.java @@ -0,0 +1,84 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.osgi; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.ops4j.pax.exam.CoreOptions.bundle; +import static org.ops4j.pax.exam.CoreOptions.junitBundles; +import static org.ops4j.pax.exam.CoreOptions.options; + +import javax.inject.Inject; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.net.URISyntaxException; + +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.ops4j.pax.exam.Configuration; +import org.ops4j.pax.exam.Option; +import org.ops4j.pax.exam.junit.PaxExam; +import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy; +import org.ops4j.pax.exam.spi.reactors.PerMethod; +import org.osgi.framework.Bundle; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceReference; + +/** + * Test to ensure that all our main formats can create, write + * and read back in, when running under OSGi + */ +@RunWith(PaxExam.class) +@ExamReactorStrategy(PerMethod.class) +public class TestOSGiBundle { + + private final File TARGET = new File("target"); + + @Inject + private BundleContext bc; + + @Configuration + public Option[] configuration() throws IOException, URISyntaxException { + File base = new File(TARGET, "test-bundles"); + return options( + junitBundles(), + bundle(new File(base, "poi-bundle.jar").toURI().toURL().toString())); + } + + @Test + public void testHSSF() throws Exception { + HSSFWorkbook wb = new HSSFWorkbook(); + HSSFSheet s = wb.createSheet("OSGi"); + s.createRow(0).createCell(0).setCellValue("With OSGi"); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + wb.write(baos); + ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); + + wb = new HSSFWorkbook(bais); + assertEquals(1, wb.getNumberOfSheets()); + + s = wb.getSheet("OSGi"); + assertEquals("With OSGi", s.getRow(0).getCell(0).toString()); + } +} diff --git a/osgi/test-bundles.xml b/osgi/test-bundles.xml new file mode 100644 index 000000000..11502761e --- /dev/null +++ b/osgi/test-bundles.xml @@ -0,0 +1,34 @@ + + + bundles + + dir + + false + + + + ${artifact.artifactId}.jar + + org.apache.poi:poi-bundle + + + + From 7998e373d37ba00358d257b165eacaad8a876753 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Sat, 25 Apr 2015 02:18:06 +0000 Subject: [PATCH 087/301] Little bit more OSGi, not yet working #57857 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1675991 13f79535-47bb-0310-9956-ffa450edef68 --- build.xml | 2 +- osgi/pom.xml | 9 ++++-- .../java/org/apache/poi/osgi/Activator.java | 28 +++++++++++++++++++ 3 files changed, 35 insertions(+), 4 deletions(-) create mode 100644 osgi/src/main/java/org/apache/poi/osgi/Activator.java diff --git a/build.xml b/build.xml index 90d1cdc06..7e7db88fa 100644 --- a/build.xml +++ b/build.xml @@ -1595,7 +1595,7 @@ under the License. - + diff --git a/osgi/pom.xml b/osgi/pom.xml index 9b33aa84f..2849467a9 100644 --- a/osgi/pom.xml +++ b/osgi/pom.xml @@ -37,6 +37,10 @@ http://poi.apache.org/ ${poi.version} + 1.6 @@ -107,7 +111,7 @@ org.osgi org.osgi.core 5.0.0 - test + provided @@ -134,7 +138,6 @@ org.apache.poi.* - diff --git a/osgi/src/main/java/org/apache/poi/osgi/Activator.java b/osgi/src/main/java/org/apache/poi/osgi/Activator.java new file mode 100644 index 000000000..2f0212bd4 --- /dev/null +++ b/osgi/src/main/java/org/apache/poi/osgi/Activator.java @@ -0,0 +1,28 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.osgi; + +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; + +public class Activator implements BundleActivator { + public void start(BundleContext context) throws Exception { + } + public void stop(BundleContext context) throws Exception { + } +} From 4c96affb9a14092849ce1453554269fb561ed7a2 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 27 Apr 2015 14:29:59 +0000 Subject: [PATCH 088/301] Add unit-test which verifies that fill and alignment styles are applied and read back in correctly. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1676276 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xssf/usermodel/TestXSSFCellStyle.java | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java index 4ec812d30..6c7893ed5 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java @@ -23,16 +23,20 @@ import junit.framework.TestCase; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.ss.usermodel.DataFormat; import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.VerticalAlignment; +import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.XSSFTestDataSamples; import org.apache.poi.xssf.model.StylesTable; import org.apache.poi.xssf.usermodel.extensions.XSSFCellBorder; import org.apache.poi.xssf.usermodel.extensions.XSSFCellFill; +import org.junit.Test; import org.openxmlformats.schemas.spreadsheetml.x2006.main.*; public class TestXSSFCellStyle extends TestCase { @@ -891,4 +895,50 @@ public class TestXSSFCellStyle extends TestCase { assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wb)); assertNotNull(XSSFTestDataSamples.writeOutAndReadBack(wbOrig)); } + + @Test + public void testSetColor() throws IOException { + Workbook wb = new XSSFWorkbook(); + Sheet sheet = wb.createSheet(); + Row row = sheet.createRow(0); + + //CreationHelper ch = wb.getCreationHelper(); + DataFormat format = wb.createDataFormat(); + Cell cell = row.createCell(1); + cell.setCellValue("somevalue"); + CellStyle cellStyle = wb.createCellStyle(); + + + cellStyle.setDataFormat(format.getFormat("###0")); + + cellStyle.setFillBackgroundColor(IndexedColors.DARK_BLUE.getIndex()); + cellStyle.setFillForegroundColor(IndexedColors.DARK_BLUE.getIndex()); + cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND); + + cellStyle.setAlignment(CellStyle.ALIGN_RIGHT); + cellStyle.setVerticalAlignment(CellStyle.VERTICAL_TOP); + + cell.setCellStyle(cellStyle); + + /*OutputStream stream = new FileOutputStream("C:\\temp\\CellColor.xlsx"); + try { + wb.write(stream); + } finally { + stream.close(); + }*/ + + Workbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(wb); + Cell cellBack = wbBack.getSheetAt(0).getRow(0).getCell(1); + assertNotNull(cellBack); + CellStyle styleBack = cellBack.getCellStyle(); + assertEquals(IndexedColors.DARK_BLUE.getIndex(), styleBack.getFillBackgroundColor()); + assertEquals(IndexedColors.DARK_BLUE.getIndex(), styleBack.getFillForegroundColor()); + assertEquals(CellStyle.ALIGN_RIGHT, styleBack.getAlignment()); + assertEquals(CellStyle.VERTICAL_TOP, styleBack.getVerticalAlignment()); + assertEquals(CellStyle.SOLID_FOREGROUND, styleBack.getFillPattern()); + + wbBack.close(); + + wb.close(); + } } From 13dc67c73a268427df40017ebd5a8551b08e0fa2 Mon Sep 17 00:00:00 2001 From: Tim Allison Date: Tue, 28 Apr 2015 15:17:51 +0000 Subject: [PATCH 089/301] POI-56998 add some getters to help with list numbering in hwpf git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1676561 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/hwpf/model/ListLevel.java | 35 +++++++++++++++ .../apache/poi/hwpf/usermodel/TestLists.java | 44 +++++++++++++++++++ 2 files changed, 79 insertions(+) diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/ListLevel.java b/src/scratchpad/src/org/apache/poi/hwpf/model/ListLevel.java index f8e331fe5..5c8b9b969 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/ListLevel.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/ListLevel.java @@ -174,6 +174,41 @@ public final class ListLevel return _lvlf.getIxchFollow(); } + /** + * An unsigned integer that specifies the first (most-significant) zero-based level after which the number sequence of this level does not restart. The number sequence of this level does restart after any level that is more significant than the specified level. This MUST be less than or equal to the zero-based level of the list to which this LVLF corresponds. + *

see [MS-DOC], v20140721, 2.9.150

+ * + * @return the first ({@code 0} is the most significant) level after which + * the numbering does not restart or {@code -1} if no restart is applicable + */ + public short getRestart() { + return _lvlf.isFNoRestart() ? _lvlf.getIlvlRestartLim() : -1; + } + + /** + * Determines if the number formatting shall be overridden by + * {@code msonfcArabic}; unless it originally was {@code msonfcArabicLZ} + * in which case it is preserved. + *

see [MS-DOC], v20140721, 2.9.150 and [MS-OSHARED], v20140721, 2.2.1.3

+ * + * @return {@code true} if the level numbering of this and all more + * significant levels must be overridden; {@code false} otherwise + */ + public boolean isLegalNumbering() { + return _lvlf.isFLegal(); + } + + /** + * Array which specifies the character offsets of the level numbers in a + * level numbering string. + *

see [MS-DOC], v20140721, 2.9.150

+ * + * @return {@code 0}-terminated array, unless it is full + */ + public byte[] getLevelNumberingPlaceholderOffsets() { + return _lvlf.getRgbxchNums(); + } + int read( final byte[] data, final int startOffset ) { int offset = startOffset; diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestLists.java b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestLists.java index eafb18fb9..d2c9ac95c 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestLists.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestLists.java @@ -23,6 +23,7 @@ import junit.framework.TestCase; import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.HWPFTestDataSamples; +import org.apache.poi.hwpf.model.ListLevel; /** * Tests for our handling of lists @@ -207,4 +208,47 @@ public final class TestLists extends TestCase { assertEquals(1, r.getParagraph(22).getIlvl()); assertEquals(0, r.getParagraph(23).getIlvl()); } + + public void testSpecificNumberedOrderedListFeatures() throws IOException { + HWPFDocument doc = HWPFTestDataSamples.openSampleFile("Lists.doc"); + + Range r = doc.getRange(); + //these are in the numbered ordered list + //26 = OL 2 + //27 = OL 2.1 + //28 = OL 2.2 + //29 = OL 2.2.1 + for (int i = 26; i < 30; i++) { + Paragraph p = r.getParagraph(i); + assertTrue(p.isInList()); + HWPFList list = p.getList(); + ListLevel level = list.getLVL((char) p.getIlvl()); + assertFalse(level.isLegalNumbering()); + assertEquals(-1, level.getRestart()); + } + Paragraph p = r.getParagraph(26); + HWPFList list = p.getList(); + ListLevel level = list.getLVL((char) p.getIlvl()); + byte[] lvl = level.getLevelNumberingPlaceholderOffsets(); + + assertEquals((byte)1, lvl[0]); + assertEquals((byte)0, lvl[1]); + + p = r.getParagraph(27); + list = p.getList(); + level = list.getLVL((char) p.getIlvl()); + lvl = level.getLevelNumberingPlaceholderOffsets(); + assertEquals((byte)1, lvl[0]); + assertEquals((byte)3, lvl[1]); + + p = r.getParagraph(29); + list = p.getList(); + level = list.getLVL((char) p.getIlvl()); + lvl = level.getLevelNumberingPlaceholderOffsets(); + + assertEquals((byte)1, lvl[0]); + assertEquals((byte)3, lvl[1]); + assertEquals((byte)5, lvl[2]); + } + } From c029154424da3d7e814d232bb05dfd6319b835a2 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Wed, 29 Apr 2015 18:31:12 +0000 Subject: [PATCH 090/301] Add a (disabled) unit test showing the incorrect ordering problem of parts - bug #57552 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1676810 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/xslf/TestXSLFBugs.java | 109 +++++++++++++++++- 1 file changed, 107 insertions(+), 2 deletions(-) diff --git a/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java b/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java index 7d18541d9..9f28049fa 100644 --- a/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java @@ -18,6 +18,7 @@ package org.apache.poi.xslf; import static junit.framework.TestCase.assertEquals; import static org.apache.poi.POITestCase.assertContains; +import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.fail; @@ -47,7 +48,6 @@ import org.apache.poi.xslf.usermodel.XSLFSlide; import org.apache.poi.xslf.usermodel.XSLFSlideLayout; import org.junit.Ignore; import org.junit.Test; - public class TestXSLFBugs { @Test @@ -259,6 +259,108 @@ public class TestXSLFBugs { ss.setSlideOrder(slide, 2); validateSlides(ss, true, "Slide1","Slide2","New slide"); } + + /** + * When working with >9 images, make sure the sorting ensures + * that image10.foo isn't between image1.foo and image2.foo + */ + @Test + @Ignore + public void test57552() throws Exception { + XMLSlideShow ss = new XMLSlideShow(); + for (String s : new String[]{"Slide1","Slide2"}) { + ss.createSlide().createTextBox().setText(s); + } + + // Slide starts with just layout relation + XSLFSlide slide = ss.getSlides()[0]; + assertEquals(0, ss.getAllPictures().size()); + assertEquals(1, slide.getShapes().length); + + assertEquals(1, slide.getRelations().size()); + assertRelationEquals(XSLFRelation.SLIDE_LAYOUT, slide.getRelations().get(0)); + + // Some dummy pictures + byte[][] pics = new byte[15][3]; + for (int i=0; i Date: Wed, 29 Apr 2015 19:21:37 +0000 Subject: [PATCH 091/301] Patch from Jon Scharff from bug #57826 - If a XSSF shape has a buFont but no bullet character, mirror Excel and treat as un-bulleted git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1676831 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xssf/usermodel/XSSFTextParagraph.java | 14 ++++++--- .../poi/xssf/usermodel/TestXSSFBugs.java | 28 ++++++++++++++++++ test-data/spreadsheet/57826.xlsx | Bin 0 -> 9090 bytes 3 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 test-data/spreadsheet/57826.xlsx diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFTextParagraph.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFTextParagraph.java index c89d0cdb3..6500c1603 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFTextParagraph.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFTextParagraph.java @@ -709,13 +709,19 @@ public class XSSFTextParagraph implements Iterable{ public boolean isBullet() { ParagraphPropertyFetcher fetcher = new ParagraphPropertyFetcher(getLevel()){ public boolean fetch(CTTextParagraphProperties props){ - if(props.isSetBuNone()) { + if (props.isSetBuNone()) { setValue(false); return true; } - if(props.isSetBuFont() || props.isSetBuChar() || props.isSetBuAutoNum()){ - setValue(true); - return true; + if (props.isSetBuFont()) { + if (props.isSetBuChar() || props.isSetBuAutoNum()) { + setValue(true); + return true; + } else { + // Excel treats text with buFont but no char/autonum + // as not bulleted + // Possibly the font is just used if bullets turned on again? + } } return false; } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index 71e008485..003666958 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -2369,6 +2369,34 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { checkStyle(styleBack); } + /** + * Paragraph with property BuFont but none of the properties + * BuNone, BuChar, and BuAutoNum, used to trigger a NPE + * Excel treats this as not-bulleted, so now do we + */ + @Test + public void testBug57826() { + XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("57826.xlsx"); + + assertTrue("no sheets in workbook", workbook.getNumberOfSheets() >= 1); + XSSFSheet sheet = workbook.getSheetAt(0); + + XSSFDrawing drawing = sheet.getDrawingPatriarch(); + assertNotNull(drawing); + + List shapes = drawing.getShapes(); + assertEquals(1, shapes.size()); + assertTrue(shapes.get(0) instanceof XSSFSimpleShape); + + XSSFSimpleShape shape = (XSSFSimpleShape)shapes.get(0); + + // Used to throw a NPE + String text = shape.getText(); + + // No bulleting info included + assertEquals("test ok", text); + } + private void checkStyle(XSSFCellStyle cellStyle) { assertNotNull(cellStyle); assertEquals(0, cellStyle.getFillForegroundColor()); diff --git a/test-data/spreadsheet/57826.xlsx b/test-data/spreadsheet/57826.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..ccf2dc38fe9d55f21d9f2ede104aed01a6820524 GIT binary patch literal 9090 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 Date: Wed, 29 Apr 2015 19:28:26 +0000 Subject: [PATCH 092/301] When removing a SXSSF sheet, ensure temp files associated with it are disposed of #57666 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1676833 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/xssf/streaming/SXSSFWorkbook.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java index 79d2cc83b..e3a0363de 100644 --- a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java +++ b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java @@ -709,9 +709,16 @@ public class SXSSFWorkbook implements Workbook @Override public void removeSheetAt(int index) { - XSSFSheet xSheet=_wb.getSheetAt(index); + // Get the sheet to be removed + XSSFSheet xSheet = _wb.getSheetAt(index); + SXSSFSheet sxSheet = getSXSSFSheet(xSheet); + + // De-register it _wb.removeSheetAt(index); deregisterSheetMapping(xSheet); + + // Clean up temporary resources + sxSheet.dispose(); } /** From fb4bf25259289aa72cf05d8f665a99012b82329d Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Wed, 29 Apr 2015 19:47:35 +0000 Subject: [PATCH 093/301] Use a constant for the name of the OOXML encrypted package node git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1676838 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/stress/POIXMLDocumentHandler.java | 3 ++- src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java | 3 ++- .../org/apache/poi/poifs/crypt/ChunkedCipherOutputStream.java | 4 +++- src/java/org/apache/poi/poifs/crypt/DataSpaceMapUtils.java | 2 +- src/java/org/apache/poi/poifs/crypt/Decryptor.java | 1 + src/java/org/apache/poi/poifs/crypt/Encryptor.java | 1 + .../apache/poi/poifs/crypt/binaryrc4/BinaryRC4Decryptor.java | 4 ++-- .../apache/poi/poifs/crypt/standard/StandardDecryptor.java | 2 +- .../apache/poi/poifs/crypt/standard/StandardEncryptor.java | 2 +- .../java/org/apache/poi/poifs/crypt/agile/AgileDecryptor.java | 2 +- .../testcases/org/apache/poi/poifs/crypt/TestEncryptor.java | 4 ++-- 11 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/integrationtest/org/apache/poi/stress/POIXMLDocumentHandler.java b/src/integrationtest/org/apache/poi/stress/POIXMLDocumentHandler.java index c72027235..7b0821dcc 100644 --- a/src/integrationtest/org/apache/poi/stress/POIXMLDocumentHandler.java +++ b/src/integrationtest/org/apache/poi/stress/POIXMLDocumentHandler.java @@ -27,6 +27,7 @@ import org.apache.poi.openxml4j.exceptions.OpenXML4JException; import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.openxml4j.opc.PackageAccess; import org.apache.poi.openxml4j.opc.PackagePart; +import org.apache.poi.poifs.crypt.Decryptor; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.junit.Ignore; import org.junit.Test; @@ -43,7 +44,7 @@ public final class POIXMLDocumentHandler { protected static boolean isEncrypted(InputStream stream) throws IOException { if (POIFSFileSystem.hasPOIFSHeader(stream)) { POIFSFileSystem poifs = new POIFSFileSystem(stream); - if (poifs.getRoot().hasEntry("EncryptedPackage")) { + if (poifs.getRoot().hasEntry(Decryptor.DEFAULT_POIFS_ENTRY)) { return true; } throw new IOException("wrong file format or file extension for OO XML file"); diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java index 503ed64d6..aee2d5444 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java @@ -65,6 +65,7 @@ import org.apache.poi.hssf.record.UnknownRecord; import org.apache.poi.hssf.record.aggregates.RecordAggregate.RecordVisitor; import org.apache.poi.hssf.record.common.UnicodeString; import org.apache.poi.hssf.util.CellReference; +import org.apache.poi.poifs.crypt.Decryptor; import org.apache.poi.poifs.filesystem.DirectoryEntry; import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.poifs.filesystem.EntryUtils; @@ -248,7 +249,7 @@ public final class HSSFWorkbook extends POIDocument implements org.apache.poi.ss // check for an encrypted .xlsx file - they get OLE2 wrapped try { - directory.getEntry("EncryptedPackage"); + directory.getEntry(Decryptor.DEFAULT_POIFS_ENTRY); throw new EncryptedDocumentException("The supplied spreadsheet seems to be an Encrypted .xlsx file. " + "It must be decrypted before use by XSSF, it cannot be used by HSSF"); } catch (FileNotFoundException e) { diff --git a/src/java/org/apache/poi/poifs/crypt/ChunkedCipherOutputStream.java b/src/java/org/apache/poi/poifs/crypt/ChunkedCipherOutputStream.java index 8a2bf0045..f663c7e08 100644 --- a/src/java/org/apache/poi/poifs/crypt/ChunkedCipherOutputStream.java +++ b/src/java/org/apache/poi/poifs/crypt/ChunkedCipherOutputStream.java @@ -16,6 +16,8 @@ ==================================================================== */ package org.apache.poi.poifs.crypt; +import static org.apache.poi.poifs.crypt.Decryptor.DEFAULT_POIFS_ENTRY; + import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; @@ -133,7 +135,7 @@ public abstract class ChunkedCipherOutputStream extends FilterOutputStream { int oleStreamSize = (int)(fileOut.length()+LittleEndianConsts.LONG_SIZE); calculateChecksum(fileOut, oleStreamSize); - dir.createDocument("EncryptedPackage", oleStreamSize, new EncryptedPackageWriter()); + dir.createDocument(DEFAULT_POIFS_ENTRY, oleStreamSize, new EncryptedPackageWriter()); createEncryptionInfoEntry(dir, fileOut); } catch (GeneralSecurityException e) { throw new IOException(e); diff --git a/src/java/org/apache/poi/poifs/crypt/DataSpaceMapUtils.java b/src/java/org/apache/poi/poifs/crypt/DataSpaceMapUtils.java index 0c80c6c2b..f6477fb9b 100644 --- a/src/java/org/apache/poi/poifs/crypt/DataSpaceMapUtils.java +++ b/src/java/org/apache/poi/poifs/crypt/DataSpaceMapUtils.java @@ -36,7 +36,7 @@ public class DataSpaceMapUtils { public static void addDefaultDataSpace(DirectoryEntry dir) throws IOException { DataSpaceMapEntry dsme = new DataSpaceMapEntry( new int[]{ 0 } - , new String[]{ "EncryptedPackage" } + , new String[]{ Decryptor.DEFAULT_POIFS_ENTRY } , "StrongEncryptionDataSpace" ); DataSpaceMap dsm = new DataSpaceMap(new DataSpaceMapEntry[]{dsme}); diff --git a/src/java/org/apache/poi/poifs/crypt/Decryptor.java b/src/java/org/apache/poi/poifs/crypt/Decryptor.java index af449290e..d584346f9 100644 --- a/src/java/org/apache/poi/poifs/crypt/Decryptor.java +++ b/src/java/org/apache/poi/poifs/crypt/Decryptor.java @@ -29,6 +29,7 @@ import org.apache.poi.poifs.filesystem.POIFSFileSystem; public abstract class Decryptor { public static final String DEFAULT_PASSWORD="VelvetSweatshop"; + public static final String DEFAULT_POIFS_ENTRY="EncryptedPackage"; protected final EncryptionInfoBuilder builder; private SecretKey secretKey; diff --git a/src/java/org/apache/poi/poifs/crypt/Encryptor.java b/src/java/org/apache/poi/poifs/crypt/Encryptor.java index abfd69330..4c1b51258 100644 --- a/src/java/org/apache/poi/poifs/crypt/Encryptor.java +++ b/src/java/org/apache/poi/poifs/crypt/Encryptor.java @@ -27,6 +27,7 @@ import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; import org.apache.poi.poifs.filesystem.POIFSFileSystem; public abstract class Encryptor { + protected static final String DEFAULT_POIFS_ENTRY = Decryptor.DEFAULT_POIFS_ENTRY; private SecretKey secretKey; /** diff --git a/src/java/org/apache/poi/poifs/crypt/binaryrc4/BinaryRC4Decryptor.java b/src/java/org/apache/poi/poifs/crypt/binaryrc4/BinaryRC4Decryptor.java index 40eab54e3..a2d3d6f0e 100644 --- a/src/java/org/apache/poi/poifs/crypt/binaryrc4/BinaryRC4Decryptor.java +++ b/src/java/org/apache/poi/poifs/crypt/binaryrc4/BinaryRC4Decryptor.java @@ -118,7 +118,7 @@ public class BinaryRC4Decryptor extends Decryptor { public InputStream getDataStream(DirectoryNode dir) throws IOException, GeneralSecurityException { - DocumentInputStream dis = dir.createDocumentInputStream("EncryptedPackage"); + DocumentInputStream dis = dir.createDocumentInputStream(DEFAULT_POIFS_ENTRY); _length = dis.readLong(); BinaryRC4CipherInputStream cipherStream = new BinaryRC4CipherInputStream(dis, _length); return cipherStream; @@ -131,4 +131,4 @@ public class BinaryRC4Decryptor extends Decryptor { return _length; } -} \ No newline at end of file +} diff --git a/src/java/org/apache/poi/poifs/crypt/standard/StandardDecryptor.java b/src/java/org/apache/poi/poifs/crypt/standard/StandardDecryptor.java index 2b2c75b52..1d6ddd398 100644 --- a/src/java/org/apache/poi/poifs/crypt/standard/StandardDecryptor.java +++ b/src/java/org/apache/poi/poifs/crypt/standard/StandardDecryptor.java @@ -123,7 +123,7 @@ public class StandardDecryptor extends Decryptor { } public InputStream getDataStream(DirectoryNode dir) throws IOException { - DocumentInputStream dis = dir.createDocumentInputStream("EncryptedPackage"); + DocumentInputStream dis = dir.createDocumentInputStream(DEFAULT_POIFS_ENTRY); _length = dis.readLong(); diff --git a/src/java/org/apache/poi/poifs/crypt/standard/StandardEncryptor.java b/src/java/org/apache/poi/poifs/crypt/standard/StandardEncryptor.java index 7049c715d..ae6304fbb 100644 --- a/src/java/org/apache/poi/poifs/crypt/standard/StandardEncryptor.java +++ b/src/java/org/apache/poi/poifs/crypt/standard/StandardEncryptor.java @@ -166,7 +166,7 @@ public class StandardEncryptor extends Encryptor { void writeToPOIFS() throws IOException { int oleStreamSize = (int)(fileOut.length()+LittleEndianConsts.LONG_SIZE); - dir.createDocument("EncryptedPackage", oleStreamSize, this); + dir.createDocument(DEFAULT_POIFS_ENTRY, oleStreamSize, this); // TODO: any properties??? } diff --git a/src/ooxml/java/org/apache/poi/poifs/crypt/agile/AgileDecryptor.java b/src/ooxml/java/org/apache/poi/poifs/crypt/agile/AgileDecryptor.java index 05499685f..3af78128c 100644 --- a/src/ooxml/java/org/apache/poi/poifs/crypt/agile/AgileDecryptor.java +++ b/src/ooxml/java/org/apache/poi/poifs/crypt/agile/AgileDecryptor.java @@ -279,7 +279,7 @@ public class AgileDecryptor extends Decryptor { } public InputStream getDataStream(DirectoryNode dir) throws IOException, GeneralSecurityException { - DocumentInputStream dis = dir.createDocumentInputStream("EncryptedPackage"); + DocumentInputStream dis = dir.createDocumentInputStream(DEFAULT_POIFS_ENTRY); _length = dis.readLong(); ChunkedCipherInputStream cipherStream = new AgileCipherInputStream(dis, _length); diff --git a/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestEncryptor.java b/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestEncryptor.java index 2cd9889bd..fd494ba26 100644 --- a/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestEncryptor.java +++ b/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestEncryptor.java @@ -111,7 +111,7 @@ public class TestEncryptor { long decPackLenExpected = decExpected.getLength(); assertEquals(decPackLenExpected, payloadExpected.length); - is = nfs.getRoot().createDocumentInputStream("EncryptedPackage"); + is = nfs.getRoot().createDocumentInputStream(Decryptor.DEFAULT_POIFS_ENTRY); is = new BoundedInputStream(is, is.available()-16); // ignore padding block byte encPackExpected[] = IOUtils.toByteArray(is); is.close(); @@ -163,7 +163,7 @@ public class TestEncryptor { long decPackLenActual = decActual.getLength(); - is = nfs.getRoot().createDocumentInputStream("EncryptedPackage"); + is = nfs.getRoot().createDocumentInputStream(Decryptor.DEFAULT_POIFS_ENTRY); is = new BoundedInputStream(is, is.available()-16); // ignore padding block byte encPackActual[] = IOUtils.toByteArray(is); is.close(); From ef8cb7fdb4b56943763d5ac1d8cf159ada3767f7 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Wed, 29 Apr 2015 20:07:51 +0000 Subject: [PATCH 094/301] Sample password protected xlsx file from Tika git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1676840 13f79535-47bb-0310-9956-ffa450edef68 --- test-data/spreadsheet/protected_passtika.xlsx | Bin 0 -> 12800 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test-data/spreadsheet/protected_passtika.xlsx diff --git a/test-data/spreadsheet/protected_passtika.xlsx b/test-data/spreadsheet/protected_passtika.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..deea286c6e248589c1c83652b7a23429041cd3c4 GIT binary patch literal 12800 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 Date: Wed, 29 Apr 2015 20:12:18 +0000 Subject: [PATCH 095/301] #57593 Begin adding overloaded WorkbookFactory.create methods which take the spreadsheet password git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1676843 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/ss/usermodel/WorkbookFactory.java | 69 +++++++++++++++- .../apache/poi/ss/TestWorkbookFactory.java | 82 +++++++++++++++++++ 2 files changed, 149 insertions(+), 2 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java b/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java index 747d88c26..b4f341533 100644 --- a/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java +++ b/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java @@ -21,12 +21,17 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.PushbackInputStream; +import java.security.GeneralSecurityException; import org.apache.poi.EncryptedDocumentException; import org.apache.poi.POIXMLDocument; +import org.apache.poi.hssf.record.crypto.Biff8EncryptionKey; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.openxml4j.opc.OPCPackage; +import org.apache.poi.poifs.crypt.Decryptor; +import org.apache.poi.poifs.crypt.EncryptionInfo; +import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; import org.apache.poi.poifs.filesystem.OfficeXmlFileException; import org.apache.poi.poifs.filesystem.POIFSFileSystem; @@ -53,7 +58,50 @@ public class WorkbookFactory { * Workbook should be closed after use. */ public static Workbook create(NPOIFSFileSystem fs) throws IOException { - return new HSSFWorkbook(fs.getRoot(), true); + try { + return create(fs, null); + } catch (InvalidFormatException e) { + // Special case of OOXML-in-POIFS which is broken + throw new IOException(e); + } + } + + /** + * Creates a Workbook from the given NPOIFSFileSystem, which may + * be password protected + */ + private static Workbook create(NPOIFSFileSystem fs, String password) throws IOException, InvalidFormatException { + DirectoryNode root = fs.getRoot(); + if (root.hasEntry(Decryptor.DEFAULT_POIFS_ENTRY)) { + if (password == null) { + throw new EncryptedDocumentException("The supplied spreadsheet is protected, but no password was supplied"); + } else { + EncryptionInfo info = new EncryptionInfo(fs); + Decryptor d = Decryptor.getInstance(info); + + boolean passwordCorrect = false; + InputStream stream = null; + try { + if (d.verifyPassword(password)) { + passwordCorrect = true; + stream = d.getDataStream(root); + } + } catch (GeneralSecurityException e) {} + + if (! passwordCorrect) + throw new EncryptedDocumentException("Password incorrect"); + + OPCPackage pkg = OPCPackage.open(stream); + return create(pkg); + } + } + + if (password != null) { + Biff8EncryptionKey.setCurrentUserPassword(password); + } + Workbook wb = new HSSFWorkbook(root, true); + Biff8EncryptionKey.setCurrentUserPassword(null); + return wb; } /** @@ -77,13 +125,29 @@ public class WorkbookFactory { * @throws EncryptedDocumentException If the workbook given is password protected */ public static Workbook create(InputStream inp) throws IOException, InvalidFormatException, EncryptedDocumentException { + return create(inp, null); + } + + /** + * Creates the appropriate HSSFWorkbook / XSSFWorkbook from + * the given InputStream, which may be password protected. + *

Your input stream MUST either support mark/reset, or + * be wrapped as a {@link PushbackInputStream}! Note that + * using an {@link InputStream} has a higher memory footprint + * than using a {@link File}.

+ *

Note that in order to properly release resources the + * Workbook should be closed after use. + * @throws EncryptedDocumentException If the wrong password is given for a protected file + */ + public static Workbook create(InputStream inp, String password) throws IOException, InvalidFormatException, EncryptedDocumentException { // If clearly doesn't do mark/reset, wrap up if (! inp.markSupported()) { inp = new PushbackInputStream(inp, 8); } if (POIFSFileSystem.hasPOIFSHeader(inp)) { - return new HSSFWorkbook(inp); + NPOIFSFileSystem fs = new NPOIFSFileSystem(inp); + return create(fs, password); } if (POIXMLDocument.hasOOXMLHeader(inp)) { return new XSSFWorkbook(OPCPackage.open(inp)); @@ -91,6 +155,7 @@ public class WorkbookFactory { throw new IllegalArgumentException("Your InputStream was neither an OLE2 stream, nor an OOXML stream"); } + // TODO file+password /** * Creates the appropriate HSSFWorkbook / XSSFWorkbook from * the given File, which must exist and be readable. diff --git a/src/ooxml/testcases/org/apache/poi/ss/TestWorkbookFactory.java b/src/ooxml/testcases/org/apache/poi/ss/TestWorkbookFactory.java index 28983ff6f..1c7e4b7a8 100644 --- a/src/ooxml/testcases/org/apache/poi/ss/TestWorkbookFactory.java +++ b/src/ooxml/testcases/org/apache/poi/ss/TestWorkbookFactory.java @@ -19,6 +19,7 @@ package org.apache.poi.ss; import java.io.InputStream; +import org.apache.poi.EncryptedDocumentException; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.poifs.filesystem.POIFSFileSystem; @@ -32,11 +33,15 @@ import junit.framework.TestCase; public final class TestWorkbookFactory extends TestCase { private String xls; private String xlsx; + private String[] xls_prot; + private String[] xlsx_prot; private String txt; protected void setUp() { xls = "SampleSS.xls"; xlsx = "SampleSS.xlsx"; + xls_prot = new String[] {"password.xls", "password"}; + xlsx_prot = new String[]{"protected_passtika.xlsx", "tika"}; txt = "SampleSS.txt"; } @@ -114,4 +119,81 @@ public final class TestWorkbookFactory extends TestCase { // Good } } + + /** + * Check that the overloaded stream methods which take passwords work properly + */ + public void testCreateWithPasswordFromStream() throws Exception { + Workbook wb; + + + // Unprotected, no password given, opens normally + wb = WorkbookFactory.create( + HSSFTestDataSamples.openSampleFileStream(xls), null + ); + assertNotNull(wb); + assertTrue(wb instanceof HSSFWorkbook); + wb.close(); + + wb = WorkbookFactory.create( + HSSFTestDataSamples.openSampleFileStream(xlsx), null + ); + assertNotNull(wb); + assertTrue(wb instanceof XSSFWorkbook); + + + // Unprotected, wrong password, opens normally + wb = WorkbookFactory.create( + HSSFTestDataSamples.openSampleFileStream(xls), "wrong" + ); + assertNotNull(wb); + assertTrue(wb instanceof HSSFWorkbook); + wb.close(); + + wb = WorkbookFactory.create( + HSSFTestDataSamples.openSampleFileStream(xlsx), "wrong" + ); + assertNotNull(wb); + assertTrue(wb instanceof XSSFWorkbook); + + + // Protected, correct password, opens fine + wb = WorkbookFactory.create( + HSSFTestDataSamples.openSampleFileStream(xls_prot[0]), xls_prot[1] + ); + assertNotNull(wb); + assertTrue(wb instanceof HSSFWorkbook); + wb.close(); + + wb = WorkbookFactory.create( + HSSFTestDataSamples.openSampleFileStream(xlsx_prot[0]), xlsx_prot[1] + ); + assertNotNull(wb); + assertTrue(wb instanceof XSSFWorkbook); + + + // Protected, wrong password, throws Exception + try { + wb = WorkbookFactory.create( + HSSFTestDataSamples.openSampleFileStream(xls_prot[0]), "wrong" + ); + fail("Shouldn't be able to open with the wrong password"); + } catch (EncryptedDocumentException e) {} + + try { + wb = WorkbookFactory.create( + HSSFTestDataSamples.openSampleFileStream(xlsx_prot[0]), "wrong" + ); + fail("Shouldn't be able to open with the wrong password"); + } catch (EncryptedDocumentException e) {} + } + + /** + * Check that the overloaded file methods which take passwords work properly + */ + public void testCreateWithPasswordFromFile() throws Exception { + Workbook wb; + + // TODO + } } From 73aa2c9ee39484672f64a275207d92f0142dc8a0 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Wed, 29 Apr 2015 20:13:42 +0000 Subject: [PATCH 096/301] Fix inconsistent indents git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1676845 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/ss/TestWorkbookFactory.java | 206 +++++++++--------- 1 file changed, 103 insertions(+), 103 deletions(-) diff --git a/src/ooxml/testcases/org/apache/poi/ss/TestWorkbookFactory.java b/src/ooxml/testcases/org/apache/poi/ss/TestWorkbookFactory.java index 1c7e4b7a8..068a70910 100644 --- a/src/ooxml/testcases/org/apache/poi/ss/TestWorkbookFactory.java +++ b/src/ooxml/testcases/org/apache/poi/ss/TestWorkbookFactory.java @@ -31,117 +31,117 @@ import org.apache.poi.openxml4j.opc.OPCPackage; import junit.framework.TestCase; public final class TestWorkbookFactory extends TestCase { - private String xls; - private String xlsx; + private String xls; + private String xlsx; private String[] xls_prot; private String[] xlsx_prot; - private String txt; + private String txt; - protected void setUp() { - xls = "SampleSS.xls"; - xlsx = "SampleSS.xlsx"; - xls_prot = new String[] {"password.xls", "password"}; - xlsx_prot = new String[]{"protected_passtika.xlsx", "tika"}; - txt = "SampleSS.txt"; - } + protected void setUp() { + xls = "SampleSS.xls"; + xlsx = "SampleSS.xlsx"; + xls_prot = new String[] {"password.xls", "password"}; + xlsx_prot = new String[]{"protected_passtika.xlsx", "tika"}; + txt = "SampleSS.txt"; + } - public void testCreateNative() throws Exception { - Workbook wb; - - // POIFS -> hssf - wb = WorkbookFactory.create( - new POIFSFileSystem(HSSFTestDataSamples.openSampleFileStream(xls)) - ); - assertNotNull(wb); - assertTrue(wb instanceof HSSFWorkbook); - wb.close(); - - // Package -> xssf - wb = WorkbookFactory.create( - OPCPackage.open( - HSSFTestDataSamples.openSampleFileStream(xlsx)) - ); - assertNotNull(wb); - assertTrue(wb instanceof XSSFWorkbook); - // TODO: this re-writes the sample-file?! wb.close(); - } - - /** - * Creates the appropriate kind of Workbook, but - * checking the mime magic at the start of the - * InputStream, then creating what's required. - */ - public void testCreateGeneric() throws Exception { - Workbook wb; - - // InputStream -> either - wb = WorkbookFactory.create( - HSSFTestDataSamples.openSampleFileStream(xls) - ); - assertNotNull(wb); - assertTrue(wb instanceof HSSFWorkbook); - wb.close(); - - wb = WorkbookFactory.create( - HSSFTestDataSamples.openSampleFileStream(xlsx) - ); - assertNotNull(wb); - assertTrue(wb instanceof XSSFWorkbook); - // TODO: this re-writes the sample-file?! wb.close(); - - // File -> either - wb = WorkbookFactory.create( - HSSFTestDataSamples.getSampleFile(xls) - ); - assertNotNull(wb); - assertTrue(wb instanceof HSSFWorkbook); - wb.close(); - - wb = WorkbookFactory.create( - HSSFTestDataSamples.getSampleFile(xlsx) - ); - assertNotNull(wb); - assertTrue(wb instanceof XSSFWorkbook); - - // TODO: close() re-writes the sample-file?! Resort to revert() for now to close file handle... - ((XSSFWorkbook)wb).getPackage().revert(); - - // Invalid type -> exception - try { - InputStream stream = HSSFTestDataSamples.openSampleFileStream(txt); - try { - wb = WorkbookFactory.create(stream); - } finally { - stream.close(); - } - fail(); - } catch(IllegalArgumentException e) { - // Good - } - } - - /** - * Check that the overloaded stream methods which take passwords work properly - */ - public void testCreateWithPasswordFromStream() throws Exception { + public void testCreateNative() throws Exception { Workbook wb; - - // Unprotected, no password given, opens normally + // POIFS -> hssf + wb = WorkbookFactory.create( + new POIFSFileSystem(HSSFTestDataSamples.openSampleFileStream(xls)) + ); + assertNotNull(wb); + assertTrue(wb instanceof HSSFWorkbook); + wb.close(); + + // Package -> xssf + wb = WorkbookFactory.create( + OPCPackage.open( + HSSFTestDataSamples.openSampleFileStream(xlsx)) + ); + assertNotNull(wb); + assertTrue(wb instanceof XSSFWorkbook); + // TODO: this re-writes the sample-file?! wb.close(); + } + + /** + * Creates the appropriate kind of Workbook, but + * checking the mime magic at the start of the + * InputStream, then creating what's required. + */ + public void testCreateGeneric() throws Exception { + Workbook wb; + + // InputStream -> either + wb = WorkbookFactory.create( + HSSFTestDataSamples.openSampleFileStream(xls) + ); + assertNotNull(wb); + assertTrue(wb instanceof HSSFWorkbook); + wb.close(); + + wb = WorkbookFactory.create( + HSSFTestDataSamples.openSampleFileStream(xlsx) + ); + assertNotNull(wb); + assertTrue(wb instanceof XSSFWorkbook); + // TODO: this re-writes the sample-file?! wb.close(); + + // File -> either + wb = WorkbookFactory.create( + HSSFTestDataSamples.getSampleFile(xls) + ); + assertNotNull(wb); + assertTrue(wb instanceof HSSFWorkbook); + wb.close(); + + wb = WorkbookFactory.create( + HSSFTestDataSamples.getSampleFile(xlsx) + ); + assertNotNull(wb); + assertTrue(wb instanceof XSSFWorkbook); + + // TODO: close() re-writes the sample-file?! Resort to revert() for now to close file handle... + ((XSSFWorkbook)wb).getPackage().revert(); + + // Invalid type -> exception + try { + InputStream stream = HSSFTestDataSamples.openSampleFileStream(txt); + try { + wb = WorkbookFactory.create(stream); + } finally { + stream.close(); + } + fail(); + } catch(IllegalArgumentException e) { + // Good + } + } + + /** + * Check that the overloaded stream methods which take passwords work properly + */ + public void testCreateWithPasswordFromStream() throws Exception { + Workbook wb; + + + // Unprotected, no password given, opens normally wb = WorkbookFactory.create( HSSFTestDataSamples.openSampleFileStream(xls), null ); assertNotNull(wb); assertTrue(wb instanceof HSSFWorkbook); wb.close(); - + wb = WorkbookFactory.create( HSSFTestDataSamples.openSampleFileStream(xlsx), null ); assertNotNull(wb); assertTrue(wb instanceof XSSFWorkbook); - - + + // Unprotected, wrong password, opens normally wb = WorkbookFactory.create( HSSFTestDataSamples.openSampleFileStream(xls), "wrong" @@ -149,14 +149,14 @@ public final class TestWorkbookFactory extends TestCase { assertNotNull(wb); assertTrue(wb instanceof HSSFWorkbook); wb.close(); - + wb = WorkbookFactory.create( HSSFTestDataSamples.openSampleFileStream(xlsx), "wrong" ); assertNotNull(wb); assertTrue(wb instanceof XSSFWorkbook); - - + + // Protected, correct password, opens fine wb = WorkbookFactory.create( HSSFTestDataSamples.openSampleFileStream(xls_prot[0]), xls_prot[1] @@ -164,14 +164,14 @@ public final class TestWorkbookFactory extends TestCase { assertNotNull(wb); assertTrue(wb instanceof HSSFWorkbook); wb.close(); - + wb = WorkbookFactory.create( HSSFTestDataSamples.openSampleFileStream(xlsx_prot[0]), xlsx_prot[1] ); assertNotNull(wb); assertTrue(wb instanceof XSSFWorkbook); - - + + // Protected, wrong password, throws Exception try { wb = WorkbookFactory.create( @@ -186,14 +186,14 @@ public final class TestWorkbookFactory extends TestCase { ); fail("Shouldn't be able to open with the wrong password"); } catch (EncryptedDocumentException e) {} - } - + } + /** * Check that the overloaded file methods which take passwords work properly */ public void testCreateWithPasswordFromFile() throws Exception { Workbook wb; - + // TODO } } From 9f196708d4a9f59eb9e1f5010412b80c8d5ec5a0 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Wed, 29 Apr 2015 20:19:38 +0000 Subject: [PATCH 097/301] #57593 Complete create overloading in WorkbookFactory to take passwords git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1676847 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/ss/usermodel/WorkbookFactory.java | 23 +++++-- .../apache/poi/ss/TestWorkbookFactory.java | 60 ++++++++++++++++++- 2 files changed, 77 insertions(+), 6 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java b/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java index b4f341533..b6ec1cf8a 100644 --- a/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java +++ b/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java @@ -121,7 +121,9 @@ public class WorkbookFactory { * using an {@link InputStream} has a higher memory footprint * than using a {@link File}.

*

Note that in order to properly release resources the - * Workbook should be closed after use. + * Workbook should be closed after use. Note also that loading + * from an InputStream requires more memory than loading + * from a File, so prefer {@link #create(File)} where possible. * @throws EncryptedDocumentException If the workbook given is password protected */ public static Workbook create(InputStream inp) throws IOException, InvalidFormatException, EncryptedDocumentException { @@ -136,7 +138,9 @@ public class WorkbookFactory { * using an {@link InputStream} has a higher memory footprint * than using a {@link File}.

*

Note that in order to properly release resources the - * Workbook should be closed after use. + * Workbook should be closed after use. Note also that loading + * from an InputStream requires more memory than loading + * from a File, so prefer {@link #create(File)} where possible. * @throws EncryptedDocumentException If the wrong password is given for a protected file */ public static Workbook create(InputStream inp, String password) throws IOException, InvalidFormatException, EncryptedDocumentException { @@ -155,7 +159,6 @@ public class WorkbookFactory { throw new IllegalArgumentException("Your InputStream was neither an OLE2 stream, nor an OOXML stream"); } - // TODO file+password /** * Creates the appropriate HSSFWorkbook / XSSFWorkbook from * the given File, which must exist and be readable. @@ -164,14 +167,24 @@ public class WorkbookFactory { * @throws EncryptedDocumentException If the workbook given is password protected */ public static Workbook create(File file) throws IOException, InvalidFormatException, EncryptedDocumentException { + return create(file, null); + } + /** + * Creates the appropriate HSSFWorkbook / XSSFWorkbook from + * the given File, which must exist and be readable, and + * may be password protected + *

Note that in order to properly release resources the + * Workbook should be closed after use. + * @throws EncryptedDocumentException If the wrong password is given for a protected file + */ + public static Workbook create(File file, String password) throws IOException, InvalidFormatException, EncryptedDocumentException { if (! file.exists()) { throw new FileNotFoundException(file.toString()); } try { - @SuppressWarnings("resource") NPOIFSFileSystem fs = new NPOIFSFileSystem(file); - return new HSSFWorkbook(fs.getRoot(), true); + return create(fs, password); } catch(OfficeXmlFileException e) { // opening as .xls failed => try opening as .xlsx OPCPackage pkg = OPCPackage.open(file); diff --git a/src/ooxml/testcases/org/apache/poi/ss/TestWorkbookFactory.java b/src/ooxml/testcases/org/apache/poi/ss/TestWorkbookFactory.java index 068a70910..582c8c364 100644 --- a/src/ooxml/testcases/org/apache/poi/ss/TestWorkbookFactory.java +++ b/src/ooxml/testcases/org/apache/poi/ss/TestWorkbookFactory.java @@ -194,6 +194,64 @@ public final class TestWorkbookFactory extends TestCase { public void testCreateWithPasswordFromFile() throws Exception { Workbook wb; - // TODO + // Unprotected, no password given, opens normally + wb = WorkbookFactory.create( + HSSFTestDataSamples.getSampleFile(xls), null + ); + assertNotNull(wb); + assertTrue(wb instanceof HSSFWorkbook); + wb.close(); + + wb = WorkbookFactory.create( + HSSFTestDataSamples.getSampleFile(xlsx), null + ); + assertNotNull(wb); + assertTrue(wb instanceof XSSFWorkbook); + + + // Unprotected, wrong password, opens normally + wb = WorkbookFactory.create( + HSSFTestDataSamples.getSampleFile(xls), "wrong" + ); + assertNotNull(wb); + assertTrue(wb instanceof HSSFWorkbook); + wb.close(); + + wb = WorkbookFactory.create( + HSSFTestDataSamples.getSampleFile(xlsx), "wrong" + ); + assertNotNull(wb); + assertTrue(wb instanceof XSSFWorkbook); + + + // Protected, correct password, opens fine + wb = WorkbookFactory.create( + HSSFTestDataSamples.getSampleFile(xls_prot[0]), xls_prot[1] + ); + assertNotNull(wb); + assertTrue(wb instanceof HSSFWorkbook); + wb.close(); + + wb = WorkbookFactory.create( + HSSFTestDataSamples.getSampleFile(xlsx_prot[0]), xlsx_prot[1] + ); + assertNotNull(wb); + assertTrue(wb instanceof XSSFWorkbook); + + + // Protected, wrong password, throws Exception + try { + wb = WorkbookFactory.create( + HSSFTestDataSamples.getSampleFile(xls_prot[0]), "wrong" + ); + fail("Shouldn't be able to open with the wrong password"); + } catch (EncryptedDocumentException e) {} + + try { + wb = WorkbookFactory.create( + HSSFTestDataSamples.getSampleFile(xlsx_prot[0]), "wrong" + ); + fail("Shouldn't be able to open with the wrong password"); + } catch (EncryptedDocumentException e) {} } } From 925d32e2c10e867460310567a2daa22cf7156c28 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Wed, 29 Apr 2015 20:36:13 +0000 Subject: [PATCH 098/301] Allow WorkbookFactory.create to open xlsx files protected with the default password git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1676853 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/ss/usermodel/WorkbookFactory.java | 51 +++++++++++-------- .../poi/xssf/usermodel/TestXSSFBugs.java | 32 +++++++----- 2 files changed, 50 insertions(+), 33 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java b/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java index b6ec1cf8a..bdf37eafc 100644 --- a/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java +++ b/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java @@ -72,30 +72,41 @@ public class WorkbookFactory { */ private static Workbook create(NPOIFSFileSystem fs, String password) throws IOException, InvalidFormatException { DirectoryNode root = fs.getRoot(); + + // Encrypted OOXML files go inside OLE2 containers, is this one? if (root.hasEntry(Decryptor.DEFAULT_POIFS_ENTRY)) { - if (password == null) { - throw new EncryptedDocumentException("The supplied spreadsheet is protected, but no password was supplied"); - } else { - EncryptionInfo info = new EncryptionInfo(fs); - Decryptor d = Decryptor.getInstance(info); - - boolean passwordCorrect = false; - InputStream stream = null; - try { - if (d.verifyPassword(password)) { - passwordCorrect = true; - stream = d.getDataStream(root); - } - } catch (GeneralSecurityException e) {} - - if (! passwordCorrect) - throw new EncryptedDocumentException("Password incorrect"); - - OPCPackage pkg = OPCPackage.open(stream); - return create(pkg); + EncryptionInfo info = new EncryptionInfo(fs); + Decryptor d = Decryptor.getInstance(info); + + boolean passwordCorrect = false; + InputStream stream = null; + try { + if (password != null && d.verifyPassword(password)) { + passwordCorrect = true; + } + if (!passwordCorrect && d.verifyPassword(Decryptor.DEFAULT_PASSWORD)) { + passwordCorrect = true; + } + if (passwordCorrect) { + stream = d.getDataStream(root); + } + } catch (GeneralSecurityException e) { + throw new IOException(e); } + + if (! passwordCorrect) { + if (password != null) + throw new EncryptedDocumentException("Password incorrect"); + else + throw new EncryptedDocumentException("The supplied spreadsheet is protected, but no password was supplied"); + } + + OPCPackage pkg = OPCPackage.open(stream); + return create(pkg); } + // If we get here, it isn't an encrypted XLSX file + // So, treat it as a regular HSSF XLS one if (password != null) { Biff8EncryptionKey.setCurrentUserPassword(password); } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index 003666958..860031c41 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -1488,27 +1488,33 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { /** * Password Protected .xlsx files should give a helpful - * error message when called via WorkbookFactory. - * (You need to supply a password explicitly for them) + * error message when called via WorkbookFactory with no password */ - @Test(expected=EncryptedDocumentException.class) - public void bug55692_stream() throws Exception { - // Directly on a Stream - WorkbookFactory.create(POIDataSamples.getPOIFSInstance().openResourceAsStream("protect.xlsx")); - } - @Test(expected=EncryptedDocumentException.class) public void bug55692_poifs() throws Exception { // Via a POIFSFileSystem - POIFSFileSystem fsP = new POIFSFileSystem(POIDataSamples.getPOIFSInstance().openResourceAsStream("protect.xlsx")); + POIFSFileSystem fsP = new POIFSFileSystem( + POIDataSamples.getPOIFSInstance().openResourceAsStream("protect.xlsx")); WorkbookFactory.create(fsP); } - @Test(expected=EncryptedDocumentException.class) + public void bug55692_stream() throws Exception { + // Directly on a Stream, will go via NPOIFS and spot it's + // actually a .xlsx file encrypted with the default password, and open + Workbook wb = WorkbookFactory.create( + POIDataSamples.getPOIFSInstance().openResourceAsStream("protect.xlsx")); + assertNotNull(wb); + assertEquals(3, wb.getNumberOfSheets()); + } + public void bug55692_npoifs() throws Exception { - // Via a NPOIFSFileSystem - NPOIFSFileSystem fsNP = new NPOIFSFileSystem(POIDataSamples.getPOIFSInstance().openResourceAsStream("protect.xlsx")); - WorkbookFactory.create(fsNP); + // Via a NPOIFSFileSystem, will spot it's actually a .xlsx file + // encrypted with the default password, and open + NPOIFSFileSystem fsNP = new NPOIFSFileSystem( + POIDataSamples.getPOIFSInstance().openResourceAsStream("protect.xlsx")); + Workbook wb = WorkbookFactory.create(fsNP); + assertNotNull(wb); + assertEquals(3, wb.getNumberOfSheets()); } @Test From 157c994ee821736968269958b5339fa24afaf9f8 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Wed, 29 Apr 2015 22:07:43 +0000 Subject: [PATCH 099/301] Skip the new password protected file, and re-org a little bit some other failures git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1676874 13f79535-47bb-0310-9956-ffa450edef68 --- src/integrationtest/org/apache/poi/TestAllFiles.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/integrationtest/org/apache/poi/TestAllFiles.java b/src/integrationtest/org/apache/poi/TestAllFiles.java index 701e504e1..b63684dda 100644 --- a/src/integrationtest/org/apache/poi/TestAllFiles.java +++ b/src/integrationtest/org/apache/poi/TestAllFiles.java @@ -181,6 +181,7 @@ public class TestAllFiles { static { // password protected files EXPECTED_FAILURES.add("spreadsheet/password.xls"); + EXPECTED_FAILURES.add("spreadsheet/protected_passtika.xlsx"); EXPECTED_FAILURES.add("spreadsheet/51832.xls"); EXPECTED_FAILURES.add("document/PasswordProtected.doc"); EXPECTED_FAILURES.add("slideshow/Password_Protected-hello.ppt"); @@ -213,7 +214,7 @@ public class TestAllFiles { // This is actually a spreadsheet! EXPECTED_FAILURES.add("hpsf/TestRobert_Flaherty.doc"); - // some files that are broken, Excel 5.0/95, Word 95, ... + // some files that are broken, eg Word 95, ... EXPECTED_FAILURES.add("spreadsheet/43493.xls"); EXPECTED_FAILURES.add("spreadsheet/46904.xls"); EXPECTED_FAILURES.add("document/56880.doc"); @@ -229,12 +230,14 @@ public class TestAllFiles { EXPECTED_FAILURES.add("spreadsheet/54764-2.xlsx"); // see TestXSSFBugs.bug54764() EXPECTED_FAILURES.add("spreadsheet/54764.xlsx"); // see TestXSSFBugs.bug54764() EXPECTED_FAILURES.add("spreadsheet/Simple.xlsb"); + EXPECTED_FAILURES.add("poifs/unknown_properties.msg"); // POIFS properties corrupted + + // old Excel files, which we only support simple text extraction of EXPECTED_FAILURES.add("spreadsheet/testEXCEL_2.xls"); EXPECTED_FAILURES.add("spreadsheet/testEXCEL_3.xls"); EXPECTED_FAILURES.add("spreadsheet/testEXCEL_4.xls"); EXPECTED_FAILURES.add("spreadsheet/testEXCEL_5.xls"); EXPECTED_FAILURES.add("spreadsheet/testEXCEL_95.xls"); - EXPECTED_FAILURES.add("poifs/unknown_properties.msg"); // POIFS properties corrupted // OOXML Strict is not yet supported, see bug #57699 EXPECTED_FAILURES.add("spreadsheet/SampleSS.strict.xlsx"); From dcfe4f77b7fd3ac602e059698e3d22d2c8283a71 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Thu, 30 Apr 2015 05:50:49 +0000 Subject: [PATCH 100/301] Adjust test to handle a file correctly which works for normal handling but fails expectedly in text-extraction testing. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1676902 13f79535-47bb-0310-9956-ffa450edef68 --- src/integrationtest/org/apache/poi/TestAllFiles.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/integrationtest/org/apache/poi/TestAllFiles.java b/src/integrationtest/org/apache/poi/TestAllFiles.java index b63684dda..96b00fa9d 100644 --- a/src/integrationtest/org/apache/poi/TestAllFiles.java +++ b/src/integrationtest/org/apache/poi/TestAllFiles.java @@ -284,8 +284,6 @@ public class TestAllFiles { try { handler.handleFile(stream); - assertFalse("Expected to fail for file " + file + " and handler " + handler + ", but did not fail!", - EXPECTED_FAILURES.contains(file)); assertFalse("Expected to fail for file " + file + " and handler " + handler + ", but did not fail!", OLD_FILES.contains(file)); } finally { @@ -293,6 +291,9 @@ public class TestAllFiles { } handler.handleExtracting(inputFile); + + assertFalse("Expected to fail for file " + file + " and handler " + handler + ", but did not fail!", + EXPECTED_FAILURES.contains(file)); } catch (OldWordFileFormatException e) { // for old word files we should still support extracting text if(OLD_FILES.contains(file)) { From 3275263c2b8fa96621917af2e81086e9670bf8a0 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Thu, 30 Apr 2015 05:58:15 +0000 Subject: [PATCH 101/301] Remove Eclipse warnings in tests git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1676903 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xssf/usermodel/TestXSSFBugs.java | 40 +++++++++++-------- .../xssf/usermodel/TestXSSFPictureData.java | 4 +- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index 860031c41..f78b98fde 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -554,8 +554,9 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { ); // Save and check - wb = XSSFTestDataSamples.writeOutAndReadBack(wb); - s = wb.getSheetAt(0); + XSSFWorkbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(wb); + wb.close(); + s = wbBack.getSheetAt(0); r = s.getRow(0); c = r.getCell(0); assertEquals(" with spaces ", c.getRichStringCellValue().toString()); @@ -574,7 +575,7 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { ); // Apply a font - XSSFFont f = wb.createFont(); + XSSFFont f = wbBack.createFont(); f.setBold(true); c.getRichStringCellValue().applyFont(0, 5, f); assertEquals("hello world", c.getRichStringCellValue().toString()); @@ -594,12 +595,12 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { ); // Save and check - wb = XSSFTestDataSamples.writeOutAndReadBack(wb); - s = wb.getSheetAt(0); + wbBack = XSSFTestDataSamples.writeOutAndReadBack(wbBack); + s = wbBack.getSheetAt(0); r = s.getRow(0); c = r.getCell(0); assertEquals("hello world", c.getRichStringCellValue().toString()); - wb.close(); + wbBack.close(); } /** @@ -956,8 +957,9 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { assertEquals(text, cell.getStringCellValue()); // Save the file and re-read it - wb = XSSFTestDataSamples.writeOutAndReadBack(wb); - sheet = wb.getSheetAt(0); + XSSFWorkbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(wb); + wb.close(); + sheet = wbBack.getSheetAt(0); row = sheet.getRow(2); cell = row.getCell(2); assertEquals(text, cell.getStringCellValue()); @@ -974,12 +976,12 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { assertEquals("line.\n", r3.substring(r3.length()-6)); // Save and re-check - wb = XSSFTestDataSamples.writeOutAndReadBack(wb); - sheet = wb.getSheetAt(0); + wbBack = XSSFTestDataSamples.writeOutAndReadBack(wbBack); + sheet = wbBack.getSheetAt(0); row = sheet.getRow(2); cell = row.getCell(2); assertEquals(text, cell.getStringCellValue()); - wb.close(); + wbBack.close(); // FileOutputStream out = new FileOutputStream("/tmp/test48877.xlsx"); // wb.write(out); @@ -1214,16 +1216,17 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { // Save, re-load and re-check - wb = XSSFTestDataSamples.writeOutAndReadBack(wb); - s = wb.getSheetAt(0); - defaultStyle = wb.getCellStyleAt(defaultStyle.getIndex()); - blueStyle = wb.getCellStyleAt(blueStyle.getIndex()); - pinkStyle = wb.getCellStyleAt(pinkStyle.getIndex()); + XSSFWorkbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(wb); + wb.close(); + s = wbBack.getSheetAt(0); + defaultStyle = wbBack.getCellStyleAt(defaultStyle.getIndex()); + blueStyle = wbBack.getCellStyleAt(blueStyle.getIndex()); + pinkStyle = wbBack.getCellStyleAt(pinkStyle.getIndex()); assertEquals(pinkStyle, s.getColumnStyle(0)); assertEquals(defaultStyle, s.getColumnStyle(2)); assertEquals(blueStyle, s.getColumnStyle(3)); - wb.close(); + wbBack.close(); } /** @@ -2090,6 +2093,7 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { * A .xlsx file with no Shared Strings table should open fine * in read-only mode */ + @SuppressWarnings("resource") @Test public void bug57482() throws Exception { for (PackageAccess access : new PackageAccess[] { @@ -2432,5 +2436,7 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { assertEquals("ISERROR(CSN!A1)", c.getCellFormula()); c = s.getRow(1).getCell(1); assertEquals("ISERROR(B2)", c.getCellFormula()); + + wb.close(); } } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPictureData.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPictureData.java index fe06afcd8..df5681939 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPictureData.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPictureData.java @@ -92,8 +92,8 @@ public final class TestXSSFPictureData extends TestCase { assertNotNull(p3); //check that the added pictures are accessible after write - wb = XSSFTestDataSamples.writeOutAndReadBack(wb); - List pictures2 = wb.getAllPictures(); + XSSFWorkbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(wb); + List pictures2 = wbBack.getAllPictures(); assertEquals(3, pictures2.size()); assertEquals("jpeg", pictures2.get(jpegIdx).suggestFileExtension()); From 31adc2f269b9da527551b808e1de39917239b8eb Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Thu, 30 Apr 2015 11:54:13 +0000 Subject: [PATCH 102/301] Add verifying testcase for Bug 57423 and Bug 55752, both are still not solved, though. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1676965 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xssf/usermodel/TestUnfixedBugs.java | 169 +++++++++++++++++- test-data/spreadsheet/57423.xlsx | Bin 0 -> 9429 bytes 2 files changed, 167 insertions(+), 2 deletions(-) create mode 100644 test-data/spreadsheet/57423.xlsx diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestUnfixedBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestUnfixedBugs.java index 0e5864b36..b40c4ac1e 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestUnfixedBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestUnfixedBugs.java @@ -17,7 +17,11 @@ package org.apache.poi.xssf.usermodel; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; +import java.io.OutputStream; import java.nio.charset.Charset; import java.util.Calendar; import java.util.Date; @@ -27,6 +31,7 @@ import junit.framework.TestCase; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.DataFormatter; import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.FormulaError; @@ -34,10 +39,14 @@ import org.apache.poi.ss.usermodel.RichTextString; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.ss.util.CellUtil; +import org.apache.poi.ss.util.RegionUtil; import org.apache.poi.xssf.SXSSFITestDataProvider; import org.apache.poi.xssf.XSSFTestDataSamples; import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.junit.Test; +import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRow; /** * @author centic @@ -251,7 +260,7 @@ public final class TestUnfixedBugs extends TestCase { * @param row 0-based * @param column 0-based */ - void setCellFormula(Sheet sheet, int row, int column, String formula) { + private void setCellFormula(Sheet sheet, int row, int column, String formula) { Row r = sheet.getRow(row); if (r == null) { r = sheet.createRow(row); @@ -268,7 +277,163 @@ public final class TestUnfixedBugs extends TestCase { * @param rowNo 0-based * @param column 0-based */ - Cell getCell(Sheet sheet, int rowNo, int column) { + private Cell getCell(Sheet sheet, int rowNo, int column) { return sheet.getRow(rowNo).getCell(column); } + + @Test + public void testBug55752() throws IOException { + Workbook wb = new XSSFWorkbook(); + try { + Sheet sheet = wb.createSheet("test"); + + for (int i = 0; i < 4; i++) { + Row row = sheet.createRow(i); + for (int j = 0; j < 2; j++) { + Cell cell = row.createCell(j); + cell.setCellStyle(wb.createCellStyle()); + } + } + + // set content + Row row1 = sheet.getRow(0); + row1.getCell(0).setCellValue("AAA"); + Row row2 = sheet.getRow(1); + row2.getCell(0).setCellValue("BBB"); + Row row3 = sheet.getRow(2); + row3.getCell(0).setCellValue("CCC"); + Row row4 = sheet.getRow(3); + row4.getCell(0).setCellValue("DDD"); + + // merge cells + CellRangeAddress range1 = new CellRangeAddress(0, 0, 0, 1); + sheet.addMergedRegion(range1); + CellRangeAddress range2 = new CellRangeAddress(1, 1, 0, 1); + sheet.addMergedRegion(range2); + CellRangeAddress range3 = new CellRangeAddress(2, 2, 0, 1); + sheet.addMergedRegion(range3); + assertEquals(0, range3.getFirstColumn()); + assertEquals(1, range3.getLastColumn()); + assertEquals(2, range3.getLastRow()); + CellRangeAddress range4 = new CellRangeAddress(3, 3, 0, 1); + sheet.addMergedRegion(range4); + + // set border + RegionUtil.setBorderBottom(CellStyle.BORDER_THIN, range1, sheet, wb); + + row2.getCell(0).getCellStyle().setBorderBottom(CellStyle.BORDER_THIN); + row2.getCell(1).getCellStyle().setBorderBottom(CellStyle.BORDER_THIN); + + Cell cell0 = CellUtil.getCell(row3, 0); + CellUtil.setCellStyleProperty(cell0, wb, CellUtil.BORDER_BOTTOM, CellStyle.BORDER_THIN); + Cell cell1 = CellUtil.getCell(row3, 1); + CellUtil.setCellStyleProperty(cell1, wb, CellUtil.BORDER_BOTTOM, CellStyle.BORDER_THIN); + + RegionUtil.setBorderBottom(CellStyle.BORDER_THIN, range4, sheet, wb); + + // write to file + OutputStream stream = new FileOutputStream(new File("C:/temp/55752.xlsx")); + try { + wb.write(stream); + } finally { + stream.close(); + } + } finally { + wb.close(); + } + } + + @Test + public void test57423() throws IOException { + Workbook wb = XSSFTestDataSamples.openSampleWorkbook("57423.xlsx"); + + Sheet testSheet = wb.getSheetAt(0); + + // row shift (negative or positive) causes corrupted output xlsx file when the shift value is bigger + // than the number of rows being shifted + // Excel 2010 on opening the output file says: + // "Excel found unreadable content" and offers recovering the file by removing the unreadable content + // This can be observed in cases like the following: + // negative shift of 1 row by less than -1 + // negative shift of 2 rows by less than -2 + // positive shift of 1 row by 2 or more + // positive shift of 2 rows by 3 or more + + //testSheet.shiftRows(4, 5, -3); + testSheet.shiftRows(10, 10, 2); + + checkRows57423(testSheet); + + Workbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(wb); + + /*FileOutputStream stream = new FileOutputStream("C:\\temp\\57423.xlsx"); + try { + wb.write(stream); + } finally { + stream.close(); + }*/ + + wb.close(); + + checkRows57423(wbBack.getSheetAt(0)); + + wbBack.close(); + } + + private void checkRows57423(Sheet testSheet) throws IOException { + checkRow57423(testSheet, 0, "0"); + checkRow57423(testSheet, 1, "1"); + checkRow57423(testSheet, 2, "2"); + checkRow57423(testSheet, 3, "3"); + checkRow57423(testSheet, 4, "4"); + checkRow57423(testSheet, 5, "5"); + checkRow57423(testSheet, 6, "6"); + checkRow57423(testSheet, 7, "7"); + checkRow57423(testSheet, 8, "8"); + checkRow57423(testSheet, 9, "9"); + + assertNull("Row number 10 should be gone after the shift", + testSheet.getRow(10)); + + checkRow57423(testSheet, 11, "11"); + checkRow57423(testSheet, 12, "10"); + checkRow57423(testSheet, 13, "13"); + checkRow57423(testSheet, 14, "14"); + checkRow57423(testSheet, 15, "15"); + checkRow57423(testSheet, 16, "16"); + checkRow57423(testSheet, 17, "17"); + checkRow57423(testSheet, 18, "18"); + + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + try { + ((XSSFSheet)testSheet).write(stream); + } finally { + stream.close(); + } + + // verify that the resulting XML has the rows in correct order as required by Excel + String xml = new String(stream.toByteArray()); + int posR12 = xml.indexOf("yM06_*HTm!)+0RjZK;O@Z#BxrEg zA@G~s_x5F%-S6)oc<-Kb?>&9`*5}-=u1{5WRcorC+yes80O$Y!fDV8f`|1pW1OWKl z0{{pC=*Wh$PL6Jtj&3G8FP$x47;|_z*wg0RLuPpgKt_E3zw5tP10NCw9NW3@<NS?qIwroYIg(R`2ivQ#!BVj>30e)6puH1cyPC=7&ocOZ zpR}+F1(r|Ha-ByQ&62ht8(ZC{I!3*)8e(qJ8^%Uw(x?{!BcYOojS1oTwOMH z?Om_F$$8o20oYfpIS|5KCh*2H&x}6A`10c8&%8E8kxpY8y?o*xa*^1BklvcyG3RxZ zdOlkp%BVb2L+oy9Rh7EFW0J^Q(RX6oI&cHouhS#%N**yD?K&>;HRpRe#V`oh`%5L+ zDw1d>hCL1oY0Y3#_&jhiBz_o|8T|B$(&br%9d4I6Rg15fvjXG$p2{vE4Pr7e`05eK zKiLOb{h*5iV$KN>_JN0(c!YiY*)k$QeFz2tn-~u9lJ>uZZ6br>mC^B=X>s$#(=YNX zwq}xcVQ2d#*F6c#hj`V`HS{N~%gc6bT zx?8}g$3fvY!}C$rs0H|ZkoHrbbf056872cNPa7vlPt!%lv8Cj!LWS;Va8^Eb+_5y7 zZDYof@DuM;&He}OvfJ-0K2&5evjO?1o=H({Lq#rFH)m%#ujr(Ftc1eIzRL3j-hNSN zl)rq$B%$qfXqbu%pU`^b7G`y2PMX1)fbpj>cFGYhS0SPLhlT}bpFD| z($ek4zv=mVgZn?^42o$BZ|4HapQGH!dU?lB1!K!<3)0ttH&7r~b7=F)uyf!~?#*X{NRW~+%v2&rQMgxr_sAb2z3q9HY3GZ3ufSn&;P?#VpELl6mc)O9xBN-=Dt^dq-cxXiZ|m)>*nO}u!iEkd-zO6dZ`*kr(-C! zZEBL9c8=7zk}t*Fia%0EgIO|C<1Uvy+bD9QTNblnXer7S(V3!hCFy|5I2y&&WT+hd zYoFVt6$bayxi`>kS$f7bm-+X`Wv`%}5;PM+Hr}2gKUFBG<1l;72fbA17Bdw0=ceHM z#$D;Gj1QzgN+hM%?FK6|r6-1;n2`<)h|zHms?|Y12I@Z0=|-kOT7ZJ5N+zwC+WF2j zBN=GDy?L@Fq-E8{=lh}Oq)pw*TS!@90nBO{L};R!Q+zVRmdO}yQ2lun33ER_M!bYj z(j-jgxo4BtP5o1on2V|;+|>{VGvlS}are!@L${#=U>l3I!S=MFu7~Rt+UGAkWz*a4 z-qjhINTy5o)k@jr(@t-ml*W&-`|qsq>^fG1N*gbbf1Wa>8opI898I9D6&0oJSX%-6SDm)a*=m+>p1BhfTBZr4A?4m)TbKeqnP5&dSlJ$cFR zY-5@xS2EM@_~?*i%}c-Y_NwDy>-F_ZVSFANy0Hk(tn0I#zKC*(pFbOWm<}8Q6yz^p zPvmk8SJ9~s(A{`LT$mm*xU>*;;A>l>;s$tNY-VCoeJd5VvaG{(iSpEyI%Gk4mbKt% zK@|iku))}%Fk1zj3t3ZfDC0QG9<%Cs2}QhdU57mFq%!r<>u!uN@2PIqM+Wm^DfgT$ zz=R-syp(K|uoRZOjf(^r!R{VtYsNk1Do{lN^n+TSN>xRTCy(JFj5xx>_MTsA@+Nkf zhkcbNiMtTn#H&!s21P~mLFFJCg7uU`k<3SwiLsQ+P$C>Z!uKCld)tgI55(=?WZLEFzC{UlP7}CbxHBE7%Fr3ZWVmVuwh=w9!G4 zXZ5Ua_FV*JPed<}de|0xlL>kj3P}P*`JCkp?m;tC!w5{CJ^UKB)Rv*f#SKPNZqP1f zAip)9wE}L{tR0lu*ET!MboR$tpUYJ|3x?w*{h$(yILEN)IwC$TlWBcFx@c&Ut-E&A zHN7VPD1^0?f?(b*eOT0B)=PuM9EIO{wScd=HVDV&Yp8VdFr|o+AHIr=*OydmY)T{A zkNR)!>C%9RaAh*2mYyB+#Yz?Ap@b1|d~dP|QL(iXJGtr46ri}Ggs_EnK97mnJ!qgF zj;0VMV*r~De2{PP%s5?CFHe+f>6Ls8x7Q$75an^qGu-w$=LQTq%Zx zA{6(2;_KC8^!N>t4~wS6R@5|}g4T&wf+O5wu@6)7B*tHH!i%gj61w{1=ne2Fu&;K! z!Y47m8l>$|IEzNahwp5$%~&pa6LMNUXgVO!6itn0=U{#qF$S8q0v=CS6NVn5P$ZKFAu_jYsb%8T(+l|s&WfrJa>kh?Y887)V@zZH;J2+jf2CR7y^jk zf5>)gfHL?Bgqfg|TcuRdg4A|Uu7u>_W~{ z-}X~PM>>l;(Rsy;HPA0$TiC&Yca3<1Z!1zxC6ZC0lsTj^ zWZfn%9BEX~FYB$ep;xU#!YUnk{27dsNI0-}A8Cp;@hkBx`{b4$bw1x*v{b50fQ1zW z*6~z8VtVP!WQ|eMUpbv?qGvmnC>fw(?^#^e@7tn9Aup@~kB5paE*I@ye9PMNvFCZC z9g&oC@4)l(ra=jZwU zIbwjk!*mg!$vHOYgl6Wp=pgmyw`{>Lbdvsa;osoF%xGpPAm2U#YDE%7QK7)@KHNFe z@w^YV6H`itkLN#d)=dmuW^&ae?XcfS6jmIs4_a=lF3XdPR(~|N6RjEl@@+Q$5vFYX z4y`$*c}oJ3q}Ab=uk#76k3b4HlNwiBA!|T(D0PaM|7tDe(0FMpB1HW?jEDVDc?Lt| zg~WjX0O{Yt_^$x|A;mZ*R{$8Y&vq(FyC)bl=n1TxqiXR16>rrvTSMdDA!P(wTWu_z z&*0vJFOH?|NstcFJ9?;q9x8%xCHZcJVm(Cqn^C(Ado zJs&&jeZA3q>jK~AOcxvzKUWyeS0I~{IEvBAoRS_*R#*i7l*#Z?VelT~56Styt1!ijlt@KX{tPNL7xdG`&RgUR%<_u3vaFEyvqW z*q25AMGjB{Y~1Jh_RD#i>kw|~kMP2@rq+;YdEwQm`>>Yce)SUwCrJVa7fJXqUYo2` zYE8PaJla-`H`S8DO`-Ep`+dn7#}k~Z#$~6UtF;d!3OSqB^H)Vn;`fW;w~U=tm=-}v z36;}Gtd^kutwhPAhG-w+MNORBF>6rkCa}#bdUOA~PjT7o{@dCW_;P;IYiMnTZfI^E zp*E{S>tb_H6K64++g6vd^`z2@4Dr0$!$q-@hsM^gS-YJlmY>KmNAi0xNqKDv2Bxz$m3fO9rDvPmlBe`lM|#2EF7Ph|BF>Pa6nd5t|Vy z4!O^NRca3K8YydU2C`(_o4pRqEzu;0$UQmKKQxN3Zc`Z1iLAM- zZ(cklX2jDG4Kco!hjPr*?{u#a+|JYcqgS)Q5 z7y4SB_!GOqj)rpQ0HeFz42bT==&JYg55~^P>yX2_S%0ZPcT#K6Q(TbNTDMj> zCyK-w6=<##$ReLW*Z-h+A!|UMRJTgQyhca8E8zC2TWHB{bK3rC3)WEcu>BxA$%$cj z{9F{sWJ5znc??@YVa{{qQ%|MQsGTKe5GAh7qo*%hoiAOFP7ze9OPw z`d?=raKnOFEbc+9oC0> z?>g`AOmLfZ^D6POdin2U2V=L(J^;1gj5=v-x7{O4?G$TQbtZU6*f&~uIU+g4^AfV^ zq5$Os1X?4_Db;7CSrP9k23BRy5aMb;Vwv^Y9UAzne3hLOij^>UsRqbXF$yTx&?gw1 zP#N1c&pZ6^!!2T%7Bru%DVftTU=*6v80C3&_-~DQxOjC>3F;nT;AqE&>ER*`16@>Q zU5Ca6eFzp}R&w$3)C=VxR= z>2$;E!RS+9=gv(}C^6$!XAxanh~6575U&tm78I*%AF^ga9a+Np!?cOm?YIMyW!J=ytF-`C60#&$cehI_}BwBNoZ6|zR7ZO6iSbyg;WOqJpUGJx~k+j^4sVCT~s+Ol-Q zs_!uwLq*Vx;-*JonbrNp;s zXVegVVelzNtr$y=sm+h=mGKHP|xNzAsLM_07r^@+rq(7L0x z6vnx1Ft2_Hx4Lo9Tq-I*6ETQ34h8Es)~=BE)ERvXnWg4oeah;sKPYhEH=@p}Q52tc z<(REaBwuobwgZZpaioH08!iHLZIQ9ui~CRopi2~po9Qfg5$3Q>K=F;Wxknr#n^`Hi z=od31u*1^)Ak;uE<{MRGf0xIk%gmb%u%pd6=Hg)ivY)Z};_i0SXTO2@FNG8t*447d z%f0M)lCt1t?ncN~ZXa+>jcsB}S_)&qbONrl#}U=t{D^GXQFSys#CDP z-e1P?ajGEq+HSa#}r&M)% zMoU>flEcNAi$MEeKV z1HSNrv+wDBu!4!H@#GK6v7mS8pKL7h2Pm8Erw<>8XKWZ8HH^V>8H7HumX-6ErP#2G z&35~r64kN5KAE?#+Uz%*k&0H_?=mK!6oEE&v+i|FB+WPPa3;EF(odAiOtV4x@eZBdA)LKnh3AT)@4=)U*=+nzFk(I)xuu>AyN07uf`$$ zlPwLyYT<>$@x|A2a@~f;M1YQk7MEE7yqmbmI3%A(?2-G%`}*T_=S^eOqdlPpj>OMf zxp-1A5PC<*59>Al=GQZ2AZ`XXYC`h(wIuu}jx+4O`)IdY`|UWW?&PN|wTJ(TY0j>;h{CO_wxye!t)uk|&O2>x4v4Me zPQ0;lhZKI#t*smo>kNGvC&B2QKvkp7vT#SS_uF1B&y(|r? z?}Wa`>nh%=j$uD^mcg-i?P+in10!06$e_(i%V?aZv_FPrhf zqMJE8|BvSg3;g$$5hty&!i68auL!51Un-v9Fv#xbmI)>bmDhPbkQv2m%WfokgbiwJ z%~Z-62cC60SS?N*Z&XYU`E67Y6Eu)wa=%@re`9LC* zp2T2Pt5yWa;c~4&{ez3b(&`gz>}JR^K2quxL*~eq1sp6tup-iJbG20W;;O`Mnanis zm038`W2CqlhYhbBZO9yYLPxe`J3bpM2t;{K;V)@PilozbhgZUzQOj5LbX04R;YpNK zZe^==U^Y83b|F38ZU&Z@Hd?ykd5?Le*Tv;CueGX2)$Ark~WT9;ZBq#ZhR2Het$hfreJk*e#;Y~{eRgk67plf|8==jU%6Auxhs6P4Dm}CjQJno z|6ft!F5um){x3jXtbfe$-vzjvQTYWxNpSa%e&tv0qTJol{6bkK{vGAl{^qXeUl%OD z1OWgEM5W?y%a^<2cjL}4fEvW^3NambqR!p+?@{P3=wE&7FGxgaL#(>~^H2Zww3;fY U2n+h{L3(bdKYj{G2LJ#7 literal 0 HcmV?d00001 From 602832bda6f45aa2217848e2ac4d12d1fc9664f0 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Sun, 3 May 2015 07:53:09 +0000 Subject: [PATCH 103/301] Somewhat speed up creating data formats with large counts, and add maximum format/style count checking. #57884 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1677368 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/xssf/model/StylesTable.java | 38 ++++++++++++------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java b/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java index 53d1b7651..d0383754f 100644 --- a/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java +++ b/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java @@ -22,7 +22,7 @@ import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.Arrays; -import java.util.LinkedHashMap; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -30,6 +30,7 @@ import java.util.Map.Entry; import org.apache.poi.POIXMLDocumentPart; import org.apache.poi.openxml4j.opc.PackagePart; import org.apache.poi.openxml4j.opc.PackageRelationship; +import org.apache.poi.ss.SpreadsheetVersion; import org.apache.poi.ss.usermodel.BuiltinFormats; import org.apache.poi.ss.usermodel.FontFamily; import org.apache.poi.ss.usermodel.FontScheme; @@ -59,11 +60,10 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.StyleSheetDocument; /** * Table of styles shared across all sheets in a workbook. - * - * @author ugo */ public class StylesTable extends POIXMLDocumentPart { - private final Map numberFormats = new LinkedHashMap(); + private final Map numberFormats = new HashMap(); + private final boolean[] usedNumberFormats = new boolean[SpreadsheetVersion.EXCEL2007.getMaxCellStyles()]; private final List fonts = new ArrayList(); private final List fills = new ArrayList(); private final List borders = new ArrayList(); @@ -76,6 +76,7 @@ public class StylesTable extends POIXMLDocumentPart { * The first style id available for use as a custom style */ public static final int FIRST_CUSTOM_STYLE_ID = BuiltinFormats.FIRST_USER_DEFINED_FORMAT_INDEX + 1; + private static final int MAXIMUM_STYLE_ID = SpreadsheetVersion.EXCEL2007.getMaxCellStyles(); private StyleSheetDocument doc; private ThemesTable theme; @@ -130,7 +131,9 @@ public class StylesTable extends POIXMLDocumentPart { CTNumFmts ctfmts = styleSheet.getNumFmts(); if( ctfmts != null){ for (CTNumFmt nfmt : ctfmts.getNumFmtArray()) { - numberFormats.put((int)nfmt.getNumFmtId(), nfmt.getFormatCode()); + int formatId = (int)nfmt.getNumFmtId(); + numberFormats.put(formatId, nfmt.getFormatCode()); + usedNumberFormats[formatId] = true; } } @@ -183,21 +186,24 @@ public class StylesTable extends POIXMLDocumentPart { public int putNumberFormat(String fmt) { if (numberFormats.containsValue(fmt)) { // Find the key, and return that - for(Integer key : numberFormats.keySet() ) { - if(numberFormats.get(key).equals(fmt)) { - return key; + for (Entry numFmt : numberFormats.entrySet()) { + if(numFmt.getValue().equals(fmt)) { + return numFmt.getKey(); } } throw new IllegalStateException("Found the format, but couldn't figure out where - should never happen!"); } // Find a spare key, and add that - int newKey = FIRST_CUSTOM_STYLE_ID; - while(numberFormats.containsKey(newKey)) { - newKey++; + for (int i=FIRST_CUSTOM_STYLE_ID; i MAXIMUM_STYLE_ID) + throw new IllegalStateException("The maximum number of Cell Styles was exceeded. " + + "You can define up to " + MAXIMUM_STYLE_ID + " style in a .xlsx Workbook"); + CTXf xf = CTXf.Factory.newInstance(); xf.setNumFmtId(0); xf.setFontId(0); xf.setFillId(0); xf.setBorderId(0); xf.setXfId(0); - int xfSize = styleXfs.size(); int indexXf = putCellXf(xf); return new XSSFCellStyle(indexXf - 1, xfSize - 1, this, theme); } From c76db7492910264ce3d3066612f46b613fed4075 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Sun, 3 May 2015 07:56:40 +0000 Subject: [PATCH 104/301] Fix inconsistent indents git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1677369 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/xssf/model/StylesTable.java | 791 +++++++++--------- 1 file changed, 395 insertions(+), 396 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java b/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java index d0383754f..80b3a9ea9 100644 --- a/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java +++ b/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java @@ -62,73 +62,73 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.StyleSheetDocument; * Table of styles shared across all sheets in a workbook. */ public class StylesTable extends POIXMLDocumentPart { - private final Map numberFormats = new HashMap(); - private final boolean[] usedNumberFormats = new boolean[SpreadsheetVersion.EXCEL2007.getMaxCellStyles()]; - private final List fonts = new ArrayList(); - private final List fills = new ArrayList(); - private final List borders = new ArrayList(); - private final List styleXfs = new ArrayList(); - private final List xfs = new ArrayList(); + private final Map numberFormats = new HashMap(); + private final boolean[] usedNumberFormats = new boolean[SpreadsheetVersion.EXCEL2007.getMaxCellStyles()]; + private final List fonts = new ArrayList(); + private final List fills = new ArrayList(); + private final List borders = new ArrayList(); + private final List styleXfs = new ArrayList(); + private final List xfs = new ArrayList(); - private final List dxfs = new ArrayList(); + private final List dxfs = new ArrayList(); - /** - * The first style id available for use as a custom style - */ - public static final int FIRST_CUSTOM_STYLE_ID = BuiltinFormats.FIRST_USER_DEFINED_FORMAT_INDEX + 1; - private static final int MAXIMUM_STYLE_ID = SpreadsheetVersion.EXCEL2007.getMaxCellStyles(); + /** + * The first style id available for use as a custom style + */ + public static final int FIRST_CUSTOM_STYLE_ID = BuiltinFormats.FIRST_USER_DEFINED_FORMAT_INDEX + 1; + private static final int MAXIMUM_STYLE_ID = SpreadsheetVersion.EXCEL2007.getMaxCellStyles(); - private StyleSheetDocument doc; - private ThemesTable theme; + private StyleSheetDocument doc; + private ThemesTable theme; - /** - * Create a new, empty StylesTable - */ - public StylesTable() { - super(); - doc = StyleSheetDocument.Factory.newInstance(); - doc.addNewStyleSheet(); - // Initialization required in order to make the document readable by MSExcel - initialize(); - } + /** + * Create a new, empty StylesTable + */ + public StylesTable() { + super(); + doc = StyleSheetDocument.Factory.newInstance(); + doc.addNewStyleSheet(); + // Initialization required in order to make the document readable by MSExcel + initialize(); + } - public StylesTable(PackagePart part, PackageRelationship rel) throws IOException { - super(part, rel); - readFrom(part.getInputStream()); - } + public StylesTable(PackagePart part, PackageRelationship rel) throws IOException { + super(part, rel); + readFrom(part.getInputStream()); + } - public ThemesTable getTheme() { + public ThemesTable getTheme() { return theme; } public void setTheme(ThemesTable theme) { this.theme = theme; - + // Pass the themes table along to things which need to // know about it, but have already been created by now for(XSSFFont font : fonts) { - font.setThemesTable(theme); + font.setThemesTable(theme); } for(XSSFCellBorder border : borders) { - border.setThemesTable(theme); + border.setThemesTable(theme); } } - /** - * Read this shared styles table from an XML file. - * - * @param is The input stream containing the XML document. - * @throws IOException if an error occurs while reading. - */ + /** + * Read this shared styles table from an XML file. + * + * @param is The input stream containing the XML document. + * @throws IOException if an error occurs while reading. + */ @SuppressWarnings("deprecation") //YK: getXYZArray() array accessors are deprecated in xmlbeans with JDK 1.5 support - protected void readFrom(InputStream is) throws IOException { - try { - doc = StyleSheetDocument.Factory.parse(is); + protected void readFrom(InputStream is) throws IOException { + try { + doc = StyleSheetDocument.Factory.parse(is); CTStylesheet styleSheet = doc.getStyleSheet(); // Grab all the different bits we care about - CTNumFmts ctfmts = styleSheet.getNumFmts(); + CTNumFmts ctfmts = styleSheet.getNumFmts(); if( ctfmts != null){ for (CTNumFmt nfmt : ctfmts.getNumFmtArray()) { int formatId = (int)nfmt.getNumFmtId(); @@ -139,14 +139,14 @@ public class StylesTable extends POIXMLDocumentPart { CTFonts ctfonts = styleSheet.getFonts(); if(ctfonts != null){ - int idx = 0; - for (CTFont font : ctfonts.getFontArray()) { - // Create the font and save it. Themes Table supplied later - XSSFFont f = new XSSFFont(font, idx); - fonts.add(f); - idx++; - } - } + int idx = 0; + for (CTFont font : ctfonts.getFontArray()) { + // Create the font and save it. Themes Table supplied later + XSSFFont f = new XSSFFont(font, idx); + fonts.add(f); + idx++; + } + } CTFills ctfills = styleSheet.getFills(); if(ctfills != null){ for (CTFill fill : ctfills.getFillArray()) { @@ -168,408 +168,407 @@ public class StylesTable extends POIXMLDocumentPart { if(cellStyleXfs != null) styleXfs.addAll(Arrays.asList(cellStyleXfs.getXfArray())); CTDxfs styleDxfs = styleSheet.getDxfs(); - if(styleDxfs != null) dxfs.addAll(Arrays.asList(styleDxfs.getDxfArray())); + if(styleDxfs != null) dxfs.addAll(Arrays.asList(styleDxfs.getDxfArray())); - } catch (XmlException e) { - throw new IOException(e.getLocalizedMessage()); - } - } + } catch (XmlException e) { + throw new IOException(e.getLocalizedMessage()); + } + } - // =========================================================== - // Start of style related getters and setters - // =========================================================== + // =========================================================== + // Start of style related getters and setters + // =========================================================== - public String getNumberFormatAt(int idx) { - return numberFormats.get(idx); - } + public String getNumberFormatAt(int idx) { + return numberFormats.get(idx); + } - public int putNumberFormat(String fmt) { - if (numberFormats.containsValue(fmt)) { - // Find the key, and return that - for (Entry numFmt : numberFormats.entrySet()) { - if(numFmt.getValue().equals(fmt)) { - return numFmt.getKey(); - } - } - throw new IllegalStateException("Found the format, but couldn't figure out where - should never happen!"); - } + public int putNumberFormat(String fmt) { + if (numberFormats.containsValue(fmt)) { + // Find the key, and return that + for (Entry numFmt : numberFormats.entrySet()) { + if(numFmt.getValue().equals(fmt)) { + return numFmt.getKey(); + } + } + throw new IllegalStateException("Found the format, but couldn't figure out where - should never happen!"); + } - // Find a spare key, and add that - for (int i=FIRST_CUSTOM_STYLE_ID; i 0) { - styleXfId = (int) xfs.get(idx).getXfId(); - } + public XSSFCellStyle getStyleAt(int idx) { + int styleXfId = 0; - return new XSSFCellStyle(idx, styleXfId, this, theme); - } - public int putStyle(XSSFCellStyle style) { - CTXf mainXF = style.getCoreXf(); + // 0 is the empty default + if(xfs.get(idx).getXfId() > 0) { + styleXfId = (int) xfs.get(idx).getXfId(); + } - if(! xfs.contains(mainXF)) { - xfs.add(mainXF); - } - return xfs.indexOf(mainXF); - } + return new XSSFCellStyle(idx, styleXfId, this, theme); + } + public int putStyle(XSSFCellStyle style) { + CTXf mainXF = style.getCoreXf(); - public XSSFCellBorder getBorderAt(int idx) { - return borders.get(idx); - } + if(! xfs.contains(mainXF)) { + xfs.add(mainXF); + } + return xfs.indexOf(mainXF); + } - public int putBorder(XSSFCellBorder border) { - int idx = borders.indexOf(border); - if (idx != -1) { - return idx; - } - borders.add(border); - border.setThemesTable(theme); - return borders.size() - 1; - } + public XSSFCellBorder getBorderAt(int idx) { + return borders.get(idx); + } - public XSSFCellFill getFillAt(int idx) { - return fills.get(idx); - } + public int putBorder(XSSFCellBorder border) { + int idx = borders.indexOf(border); + if (idx != -1) { + return idx; + } + borders.add(border); + border.setThemesTable(theme); + return borders.size() - 1; + } - public List getBorders(){ - return borders; - } + public XSSFCellFill getFillAt(int idx) { + return fills.get(idx); + } - public List getFills(){ - return fills; - } + public List getBorders(){ + return borders; + } - public List getFonts(){ - return fonts; - } + public List getFills(){ + return fills; + } - public Map getNumberFormats(){ - return numberFormats; - } + public List getFonts(){ + return fonts; + } - public int putFill(XSSFCellFill fill) { - int idx = fills.indexOf(fill); - if (idx != -1) { - return idx; - } - fills.add(fill); - return fills.size() - 1; - } + public Map getNumberFormats(){ + return numberFormats; + } - public CTXf getCellXfAt(int idx) { - return xfs.get(idx); - } - public int putCellXf(CTXf cellXf) { - xfs.add(cellXf); - return xfs.size(); - } - public void replaceCellXfAt(int idx, CTXf cellXf) { - xfs.set(idx, cellXf); - } + public int putFill(XSSFCellFill fill) { + int idx = fills.indexOf(fill); + if (idx != -1) { + return idx; + } + fills.add(fill); + return fills.size() - 1; + } - public CTXf getCellStyleXfAt(int idx) { - return idx < styleXfs.size() ? styleXfs.get(idx) : null; - } - public int putCellStyleXf(CTXf cellStyleXf) { - styleXfs.add(cellStyleXf); - return styleXfs.size(); - } - public void replaceCellStyleXfAt(int idx, CTXf cellStyleXf) { - styleXfs.set(idx, cellStyleXf); - } - - /** - * get the size of cell styles - */ - public int getNumCellStyles(){ + public CTXf getCellXfAt(int idx) { + return xfs.get(idx); + } + public int putCellXf(CTXf cellXf) { + xfs.add(cellXf); + return xfs.size(); + } + public void replaceCellXfAt(int idx, CTXf cellXf) { + xfs.set(idx, cellXf); + } + + public CTXf getCellStyleXfAt(int idx) { + return idx < styleXfs.size() ? styleXfs.get(idx) : null; + } + public int putCellStyleXf(CTXf cellStyleXf) { + styleXfs.add(cellStyleXf); + return styleXfs.size(); + } + public void replaceCellStyleXfAt(int idx, CTXf cellStyleXf) { + styleXfs.set(idx, cellStyleXf); + } + + /** + * get the size of cell styles + */ + public int getNumCellStyles(){ // Each cell style has a unique xfs entry // Several might share the same styleXfs entry return xfs.size(); - } + } - /** - * For unit testing only - */ - public int _getNumberFormatSize() { - return numberFormats.size(); - } + /** + * For unit testing only + */ + public int _getNumberFormatSize() { + return numberFormats.size(); + } - /** - * For unit testing only - */ - public int _getXfsSize() { - return xfs.size(); - } - /** - * For unit testing only - */ - public int _getStyleXfsSize() { - return styleXfs.size(); - } - /** - * For unit testing only! - */ - public CTStylesheet getCTStylesheet() { - return doc.getStyleSheet(); - } + /** + * For unit testing only + */ + public int _getXfsSize() { + return xfs.size(); + } + /** + * For unit testing only + */ + public int _getStyleXfsSize() { + return styleXfs.size(); + } + /** + * For unit testing only! + */ + public CTStylesheet getCTStylesheet() { + return doc.getStyleSheet(); + } public int _getDXfsSize() { return dxfs.size(); } - /** - * Write this table out as XML. - * - * @param out The stream to write to. - * @throws IOException if an error occurs while writing. - */ - public void writeTo(OutputStream out) throws IOException { - XmlOptions options = new XmlOptions(DEFAULT_XML_OPTIONS); + /** + * Write this table out as XML. + * + * @param out The stream to write to. + * @throws IOException if an error occurs while writing. + */ + public void writeTo(OutputStream out) throws IOException { + XmlOptions options = new XmlOptions(DEFAULT_XML_OPTIONS); - // Work on the current one - // Need to do this, as we don't handle - // all the possible entries yet - CTStylesheet styleSheet = doc.getStyleSheet(); + // Work on the current one + // Need to do this, as we don't handle + // all the possible entries yet + CTStylesheet styleSheet = doc.getStyleSheet(); - // Formats - CTNumFmts formats = CTNumFmts.Factory.newInstance(); - formats.setCount(numberFormats.size()); - for (Entry fmt : numberFormats.entrySet()) { - CTNumFmt ctFmt = formats.addNewNumFmt(); - ctFmt.setNumFmtId(fmt.getKey()); - ctFmt.setFormatCode(fmt.getValue()); - } - styleSheet.setNumFmts(formats); + // Formats + CTNumFmts formats = CTNumFmts.Factory.newInstance(); + formats.setCount(numberFormats.size()); + for (Entry fmt : numberFormats.entrySet()) { + CTNumFmt ctFmt = formats.addNewNumFmt(); + ctFmt.setNumFmtId(fmt.getKey()); + ctFmt.setFormatCode(fmt.getValue()); + } + styleSheet.setNumFmts(formats); - int idx; - // Fonts - CTFonts ctFonts = styleSheet.getFonts(); - if (ctFonts == null) { - ctFonts = CTFonts.Factory.newInstance(); - } - ctFonts.setCount(fonts.size()); - CTFont[] ctfnt = new CTFont[fonts.size()]; - idx = 0; - for(XSSFFont f : fonts) ctfnt[idx++] = f.getCTFont(); - ctFonts.setFontArray(ctfnt); - styleSheet.setFonts(ctFonts); + int idx; + // Fonts + CTFonts ctFonts = styleSheet.getFonts(); + if (ctFonts == null) { + ctFonts = CTFonts.Factory.newInstance(); + } + ctFonts.setCount(fonts.size()); + CTFont[] ctfnt = new CTFont[fonts.size()]; + idx = 0; + for(XSSFFont f : fonts) ctfnt[idx++] = f.getCTFont(); + ctFonts.setFontArray(ctfnt); + styleSheet.setFonts(ctFonts); - // Fills - CTFills ctFills = styleSheet.getFills(); - if (ctFills == null) { - ctFills = CTFills.Factory.newInstance(); - } - ctFills.setCount(fills.size()); - CTFill[] ctf = new CTFill[fills.size()]; - idx = 0; - for(XSSFCellFill f : fills) ctf[idx++] = f.getCTFill(); - ctFills.setFillArray(ctf); - styleSheet.setFills(ctFills); + // Fills + CTFills ctFills = styleSheet.getFills(); + if (ctFills == null) { + ctFills = CTFills.Factory.newInstance(); + } + ctFills.setCount(fills.size()); + CTFill[] ctf = new CTFill[fills.size()]; + idx = 0; + for(XSSFCellFill f : fills) ctf[idx++] = f.getCTFill(); + ctFills.setFillArray(ctf); + styleSheet.setFills(ctFills); - // Borders - CTBorders ctBorders = styleSheet.getBorders(); - if (ctBorders == null) { - ctBorders = CTBorders.Factory.newInstance(); - } - ctBorders.setCount(borders.size()); - CTBorder[] ctb = new CTBorder[borders.size()]; - idx = 0; - for(XSSFCellBorder b : borders) ctb[idx++] = b.getCTBorder(); - ctBorders.setBorderArray(ctb); - styleSheet.setBorders(ctBorders); + // Borders + CTBorders ctBorders = styleSheet.getBorders(); + if (ctBorders == null) { + ctBorders = CTBorders.Factory.newInstance(); + } + ctBorders.setCount(borders.size()); + CTBorder[] ctb = new CTBorder[borders.size()]; + idx = 0; + for(XSSFCellBorder b : borders) ctb[idx++] = b.getCTBorder(); + ctBorders.setBorderArray(ctb); + styleSheet.setBorders(ctBorders); - // Xfs - if(xfs.size() > 0) { - CTCellXfs ctXfs = styleSheet.getCellXfs(); - if (ctXfs == null) { - ctXfs = CTCellXfs.Factory.newInstance(); - } - ctXfs.setCount(xfs.size()); - ctXfs.setXfArray( - xfs.toArray(new CTXf[xfs.size()]) - ); - styleSheet.setCellXfs(ctXfs); - } + // Xfs + if(xfs.size() > 0) { + CTCellXfs ctXfs = styleSheet.getCellXfs(); + if (ctXfs == null) { + ctXfs = CTCellXfs.Factory.newInstance(); + } + ctXfs.setCount(xfs.size()); + ctXfs.setXfArray( + xfs.toArray(new CTXf[xfs.size()]) + ); + styleSheet.setCellXfs(ctXfs); + } - // Style xfs - if(styleXfs.size() > 0) { - CTCellStyleXfs ctSXfs = styleSheet.getCellStyleXfs(); - if (ctSXfs == null) { - ctSXfs = CTCellStyleXfs.Factory.newInstance(); - } - ctSXfs.setCount(styleXfs.size()); - ctSXfs.setXfArray( - styleXfs.toArray(new CTXf[styleXfs.size()]) - ); - styleSheet.setCellStyleXfs(ctSXfs); - } + // Style xfs + if(styleXfs.size() > 0) { + CTCellStyleXfs ctSXfs = styleSheet.getCellStyleXfs(); + if (ctSXfs == null) { + ctSXfs = CTCellStyleXfs.Factory.newInstance(); + } + ctSXfs.setCount(styleXfs.size()); + ctSXfs.setXfArray( + styleXfs.toArray(new CTXf[styleXfs.size()]) + ); + styleSheet.setCellStyleXfs(ctSXfs); + } - // Style dxfs - if(dxfs.size() > 0) { - CTDxfs ctDxfs = styleSheet.getDxfs(); - if (ctDxfs == null) { - ctDxfs = CTDxfs.Factory.newInstance(); - } - ctDxfs.setCount(dxfs.size()); - ctDxfs.setDxfArray(dxfs.toArray(new CTDxf[dxfs.size()]) - ); - styleSheet.setDxfs(ctDxfs); - } + // Style dxfs + if(dxfs.size() > 0) { + CTDxfs ctDxfs = styleSheet.getDxfs(); + if (ctDxfs == null) { + ctDxfs = CTDxfs.Factory.newInstance(); + } + ctDxfs.setCount(dxfs.size()); + ctDxfs.setDxfArray(dxfs.toArray(new CTDxf[dxfs.size()])); + styleSheet.setDxfs(ctDxfs); + } - // Save - doc.save(out, options); - } + // Save + doc.save(out, options); + } - @Override - protected void commit() throws IOException { - PackagePart part = getPackagePart(); - OutputStream out = part.getOutputStream(); - writeTo(out); - out.close(); - } + @Override + protected void commit() throws IOException { + PackagePart part = getPackagePart(); + OutputStream out = part.getOutputStream(); + writeTo(out); + out.close(); + } - private void initialize() { - //CTFont ctFont = createDefaultFont(); - XSSFFont xssfFont = createDefaultFont(); - fonts.add(xssfFont); + private void initialize() { + //CTFont ctFont = createDefaultFont(); + XSSFFont xssfFont = createDefaultFont(); + fonts.add(xssfFont); - CTFill[] ctFill = createDefaultFills(); - fills.add(new XSSFCellFill(ctFill[0])); - fills.add(new XSSFCellFill(ctFill[1])); + CTFill[] ctFill = createDefaultFills(); + fills.add(new XSSFCellFill(ctFill[0])); + fills.add(new XSSFCellFill(ctFill[1])); - CTBorder ctBorder = createDefaultBorder(); - borders.add(new XSSFCellBorder(ctBorder)); + CTBorder ctBorder = createDefaultBorder(); + borders.add(new XSSFCellBorder(ctBorder)); - CTXf styleXf = createDefaultXf(); - styleXfs.add(styleXf); - CTXf xf = createDefaultXf(); - xf.setXfId(0); - xfs.add(xf); - } + CTXf styleXf = createDefaultXf(); + styleXfs.add(styleXf); + CTXf xf = createDefaultXf(); + xf.setXfId(0); + xfs.add(xf); + } - private static CTXf createDefaultXf() { - CTXf ctXf = CTXf.Factory.newInstance(); - ctXf.setNumFmtId(0); - ctXf.setFontId(0); - ctXf.setFillId(0); - ctXf.setBorderId(0); - return ctXf; - } - private static CTBorder createDefaultBorder() { - CTBorder ctBorder = CTBorder.Factory.newInstance(); - ctBorder.addNewBottom(); - ctBorder.addNewTop(); - ctBorder.addNewLeft(); - ctBorder.addNewRight(); - ctBorder.addNewDiagonal(); - return ctBorder; - } + private static CTXf createDefaultXf() { + CTXf ctXf = CTXf.Factory.newInstance(); + ctXf.setNumFmtId(0); + ctXf.setFontId(0); + ctXf.setFillId(0); + ctXf.setBorderId(0); + return ctXf; + } + private static CTBorder createDefaultBorder() { + CTBorder ctBorder = CTBorder.Factory.newInstance(); + ctBorder.addNewBottom(); + ctBorder.addNewTop(); + ctBorder.addNewLeft(); + ctBorder.addNewRight(); + ctBorder.addNewDiagonal(); + return ctBorder; + } - private static CTFill[] createDefaultFills() { - CTFill[] ctFill = new CTFill[]{CTFill.Factory.newInstance(),CTFill.Factory.newInstance()}; - ctFill[0].addNewPatternFill().setPatternType(STPatternType.NONE); - ctFill[1].addNewPatternFill().setPatternType(STPatternType.DARK_GRAY); - return ctFill; - } + private static CTFill[] createDefaultFills() { + CTFill[] ctFill = new CTFill[]{CTFill.Factory.newInstance(),CTFill.Factory.newInstance()}; + ctFill[0].addNewPatternFill().setPatternType(STPatternType.NONE); + ctFill[1].addNewPatternFill().setPatternType(STPatternType.DARK_GRAY); + return ctFill; + } - private static XSSFFont createDefaultFont() { - CTFont ctFont = CTFont.Factory.newInstance(); - XSSFFont xssfFont=new XSSFFont(ctFont, 0); - xssfFont.setFontHeightInPoints(XSSFFont.DEFAULT_FONT_SIZE); - xssfFont.setColor(XSSFFont.DEFAULT_FONT_COLOR);//setTheme - xssfFont.setFontName(XSSFFont.DEFAULT_FONT_NAME); - xssfFont.setFamily(FontFamily.SWISS); - xssfFont.setScheme(FontScheme.MINOR); - return xssfFont; - } + private static XSSFFont createDefaultFont() { + CTFont ctFont = CTFont.Factory.newInstance(); + XSSFFont xssfFont=new XSSFFont(ctFont, 0); + xssfFont.setFontHeightInPoints(XSSFFont.DEFAULT_FONT_SIZE); + xssfFont.setColor(XSSFFont.DEFAULT_FONT_COLOR);//setTheme + xssfFont.setFontName(XSSFFont.DEFAULT_FONT_NAME); + xssfFont.setFamily(FontFamily.SWISS); + xssfFont.setScheme(FontScheme.MINOR); + return xssfFont; + } - public CTDxf getDxfAt(int idx) { - return dxfs.get(idx); - } + public CTDxf getDxfAt(int idx) { + return dxfs.get(idx); + } - public int putDxf(CTDxf dxf) { - this.dxfs.add(dxf); - return this.dxfs.size(); - } + public int putDxf(CTDxf dxf) { + this.dxfs.add(dxf); + return this.dxfs.size(); + } - public XSSFCellStyle createCellStyle() { + public XSSFCellStyle createCellStyle() { int xfSize = styleXfs.size(); if (xfSize > MAXIMUM_STYLE_ID) throw new IllegalStateException("The maximum number of Cell Styles was exceeded. " + "You can define up to " + MAXIMUM_STYLE_ID + " style in a .xlsx Workbook"); - - CTXf xf = CTXf.Factory.newInstance(); - xf.setNumFmtId(0); - xf.setFontId(0); - xf.setFillId(0); - xf.setBorderId(0); - xf.setXfId(0); - int indexXf = putCellXf(xf); - return new XSSFCellStyle(indexXf - 1, xfSize - 1, this, theme); - } - /** - * Finds a font that matches the one with the supplied attributes - */ - public XSSFFont findFont(short boldWeight, short color, short fontHeight, String name, boolean italic, boolean strikeout, short typeOffset, byte underline) { - for (XSSFFont font : fonts) { - if ( (font.getBoldweight() == boldWeight) - && font.getColor() == color - && font.getFontHeight() == fontHeight - && font.getFontName().equals(name) - && font.getItalic() == italic - && font.getStrikeout() == strikeout - && font.getTypeOffset() == typeOffset - && font.getUnderline() == underline) - { - return font; - } - } - return null; - } + CTXf xf = CTXf.Factory.newInstance(); + xf.setNumFmtId(0); + xf.setFontId(0); + xf.setFillId(0); + xf.setBorderId(0); + xf.setXfId(0); + int indexXf = putCellXf(xf); + return new XSSFCellStyle(indexXf - 1, xfSize - 1, this, theme); + } + + /** + * Finds a font that matches the one with the supplied attributes + */ + public XSSFFont findFont(short boldWeight, short color, short fontHeight, String name, boolean italic, boolean strikeout, short typeOffset, byte underline) { + for (XSSFFont font : fonts) { + if ( (font.getBoldweight() == boldWeight) + && font.getColor() == color + && font.getFontHeight() == fontHeight + && font.getFontName().equals(name) + && font.getItalic() == italic + && font.getStrikeout() == strikeout + && font.getTypeOffset() == typeOffset + && font.getUnderline() == underline) + { + return font; + } + } + return null; + } } From 16d2e7881a6c781b2447e17a64a4f5292c8d2e39 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Sun, 3 May 2015 07:59:18 +0000 Subject: [PATCH 105/301] Ensure consistent ordering when writing out formats following changes in r1677368 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1677370 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/poi/xssf/model/StylesTable.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java b/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java index 80b3a9ea9..3937e3eea 100644 --- a/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java +++ b/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java @@ -378,10 +378,12 @@ public class StylesTable extends POIXMLDocumentPart { // Formats CTNumFmts formats = CTNumFmts.Factory.newInstance(); formats.setCount(numberFormats.size()); - for (Entry fmt : numberFormats.entrySet()) { - CTNumFmt ctFmt = formats.addNewNumFmt(); - ctFmt.setNumFmtId(fmt.getKey()); - ctFmt.setFormatCode(fmt.getValue()); + for (int fmtId=0; fmtId Date: Sun, 3 May 2015 08:10:07 +0000 Subject: [PATCH 106/301] Avoid short wrapping on cell styles and formats > 32,767 in XSSF - format supports up to 64,000 of them #57880 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1677371 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xssf/usermodel/XSSFCellStyle.java | 12 +++++++ .../poi/xssf/usermodel/XSSFDataFormat.java | 8 +++++ .../poi/xssf/usermodel/XSSFWorkbook.java | 9 +++++ .../poi/xssf/usermodel/TestXSSFBugs.java | 35 +++++++++++++++++++ 4 files changed, 64 insertions(+) diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java index 760026be1..f83facdda 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java @@ -603,6 +603,9 @@ public class XSSFCellStyle implements CellStyle { public short getIndex() { return (short)this._cellXfId; } + protected int getUIndex() { + return this._cellXfId; + } /** * Get the color to use for the left border @@ -974,6 +977,15 @@ public class XSSFCellStyle implements CellStyle { * @param fmt the index of a data format */ public void setDataFormat(short fmt) { + // XSSF supports >32,767 formats + setDataFormat(fmt&0xffff); + } + /** + * Set the index of a data format + * + * @param fmt the index of a data format + */ + public void setDataFormat(int fmt) { _cellXf.setApplyNumberFormat(true); _cellXf.setNumFmtId(fmt); } diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDataFormat.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDataFormat.java index 00ac90736..870c6c025 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDataFormat.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDataFormat.java @@ -51,6 +51,14 @@ public class XSSFDataFormat implements DataFormat { * @return string represented at index of format or null if there is not a format at that index */ public String getFormat(short index) { + return getFormat(index&0xffff); + } + /** + * get the format string that matches the given format index + * @param index of a format + * @return string represented at index of format or null if there is not a format at that index + */ + public String getFormat(int index) { String fmt = stylesSource.getNumberFormatAt(index); if(fmt == null) fmt = BuiltinFormats.getBuiltinFormat(index); return fmt; diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java index 499c3db08..9230797e4 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java @@ -843,6 +843,15 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable Date: Sun, 3 May 2015 08:47:50 +0000 Subject: [PATCH 107/301] Patch from Mark Olesen from bug #57552: Sort PackagePart returns from OPCPackage by name considering numbers in filenames, so Image10.png comes after Image9.png, fixing problems with XSLF adding 10+ images to a slide git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1677373 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/openxml4j/opc/OPCPackage.java | 21 ++- .../apache/poi/openxml4j/opc/PackagePart.java | 18 ++- .../poi/openxml4j/opc/PackagePartName.java | 137 ++++++++++++++++-- .../org/apache/poi/xslf/TestXSLFBugs.java | 1 - 4 files changed, 153 insertions(+), 24 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/openxml4j/opc/OPCPackage.java b/src/ooxml/java/org/apache/poi/openxml4j/opc/OPCPackage.java index 9dbddddd7..8b65418e0 100644 --- a/src/ooxml/java/org/apache/poi/openxml4j/opc/OPCPackage.java +++ b/src/ooxml/java/org/apache/poi/openxml4j/opc/OPCPackage.java @@ -29,6 +29,7 @@ import java.io.OutputStream; import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; +import java.util.Collections; import java.util.Date; import java.util.Hashtable; import java.util.List; @@ -581,6 +582,7 @@ public abstract class OPCPackage implements RelationshipSource, Closeable { if (part.getContentType().equals(contentType)) retArr.add(part); } + Collections.sort(retArr); return retArr; } @@ -604,22 +606,31 @@ public abstract class OPCPackage implements RelationshipSource, Closeable { retArr.add(part); } } + Collections.sort(retArr); return retArr; } + /** + * Retrieve parts by name + * + * @param namePattern + * The pattern for matching the names + * @return All parts associated to the specified content type, sorted + * in alphanumerically by the part-name + */ public List getPartsByName(final Pattern namePattern) { if (namePattern == null) { throw new IllegalArgumentException("name pattern must not be null"); } + Matcher matcher = namePattern.matcher(""); ArrayList result = new ArrayList(); for (PackagePart part : partList.values()) { PackagePartName partName = part.getPartName(); - String name = partName.getName(); - Matcher matcher = namePattern.matcher(name); - if (matcher.matches()) { + if (matcher.reset(partName.getName()).matches()) { result.add(part); } } + Collections.sort(result); return result; } @@ -727,7 +738,9 @@ public abstract class OPCPackage implements RelationshipSource, Closeable { } } } - return new ArrayList(partList.values()); + ArrayList result = new ArrayList(partList.values()); + java.util.Collections.sort(result); + return result; } /** diff --git a/src/ooxml/java/org/apache/poi/openxml4j/opc/PackagePart.java b/src/ooxml/java/org/apache/poi/openxml4j/opc/PackagePart.java index 8cfdb0fb3..1943cf6a5 100644 --- a/src/ooxml/java/org/apache/poi/openxml4j/opc/PackagePart.java +++ b/src/ooxml/java/org/apache/poi/openxml4j/opc/PackagePart.java @@ -30,11 +30,8 @@ import org.apache.poi.openxml4j.opc.internal.ContentType; /** * Provides a base class for parts stored in a Package. - * - * @author Julien Chable - * @version 0.9 */ -public abstract class PackagePart implements RelationshipSource { +public abstract class PackagePart implements RelationshipSource, Comparable { /** * This part's container. @@ -650,6 +647,19 @@ public abstract class PackagePart implements RelationshipSource { + this._contentType.toString(); } + /** + * Compare based on the package part name, using a natural sort order + */ + @Override + public int compareTo(PackagePart other) + { + // NOTE could also throw a NullPointerException() if desired + if (other == null) + return -1; + + return PackagePartName.compare(this._partName, other._partName); + } + /*-------------- Abstract methods ------------- */ /** diff --git a/src/ooxml/java/org/apache/poi/openxml4j/opc/PackagePartName.java b/src/ooxml/java/org/apache/poi/openxml4j/opc/PackagePartName.java index 6f946a278..9ac6941bc 100644 --- a/src/ooxml/java/org/apache/poi/openxml4j/opc/PackagePartName.java +++ b/src/ooxml/java/org/apache/poi/openxml4j/opc/PackagePartName.java @@ -17,6 +17,7 @@ package org.apache.poi.openxml4j.opc; +import java.math.BigInteger; import java.net.URI; import java.net.URISyntaxException; @@ -428,19 +429,20 @@ public final class PackagePartName implements Comparable { } /** - * Compare two part name following the rule M1.12 : + * Compare two part names following the rule M1.12 : * * Part name equivalence is determined by comparing part names as * case-insensitive ASCII strings. Packages shall not contain equivalent * part names and package implementers shall neither create nor recognize * packages with equivalent part names. [M1.12] */ - public int compareTo(PackagePartName otherPartName) { - if (otherPartName == null) - return -1; - return this.partNameURI.toASCIIString().toLowerCase().compareTo( - otherPartName.partNameURI.toASCIIString().toLowerCase()); - } + @Override + public int compareTo(PackagePartName other) + { + // compare with natural sort order + return compare(this, other); + } + /** * Retrieves the extension of the part name if any. If there is no extension @@ -474,14 +476,17 @@ public final class PackagePartName implements Comparable { * packages with equivalent part names. [M1.12] */ @Override - public boolean equals(Object otherPartName) { - if (otherPartName == null - || !(otherPartName instanceof PackagePartName)) - return false; - return this.partNameURI.toASCIIString().toLowerCase().equals( - ((PackagePartName) otherPartName).partNameURI.toASCIIString() - .toLowerCase()); - } + public boolean equals(Object other) { + if (other instanceof PackagePartName) { + // String.equals() is compatible with our compareTo(), but cheaper + return this.partNameURI.toASCIIString().toLowerCase().equals + ( + ((PackagePartName) other).partNameURI.toASCIIString().toLowerCase() + ); + } else { + return false; + } + } @Override public int hashCode() { @@ -503,4 +508,106 @@ public final class PackagePartName implements Comparable { public URI getURI() { return this.partNameURI; } + + + /** + * A natural sort order for package part names, consistent with the + * requirements of {@code java.util.Comparator}, but simply implemented + * as a static method. + *

+ * For example, this sorts "file10.png" after "file2.png" (comparing the + * numerical portion), but sorts "File10.png" before "file2.png" + * (lexigraphical sort) + * + *

+ * When comparing part names, the rule M1.12 is followed: + * + * Part name equivalence is determined by comparing part names as + * case-insensitive ASCII strings. Packages shall not contain equivalent + * part names and package implementers shall neither create nor recognize + * packages with equivalent part names. [M1.12] + */ + public static int compare(PackagePartName obj1, PackagePartName obj2) + { + // NOTE could also throw a NullPointerException() if desired + if (obj1 == null) + { + // (null) == (null), (null) < (non-null) + return (obj2 == null ? 0 : -1); + } + else if (obj2 == null) + { + // (non-null) > (null) + return 1; + } + + return compare + ( + obj1.getURI().toASCIIString().toLowerCase(), + obj2.getURI().toASCIIString().toLowerCase() + ); + } + + + /** + * A natural sort order for strings, consistent with the + * requirements of {@code java.util.Comparator}, but simply implemented + * as a static method. + *

+ * For example, this sorts "file10.png" after "file2.png" (comparing the + * numerical portion), but sorts "File10.png" before "file2.png" + * (lexigraphical sort) + */ + public static int compare(String str1, String str2) + { + if (str1 == null) + { + // (null) == (null), (null) < (non-null) + return (str2 == null ? 0 : -1); + } + else if (str2 == null) + { + // (non-null) > (null) + return 1; + } + + int len1 = str1.length(); + int len2 = str2.length(); + for (int idx1 = 0, idx2 = 0; idx1 < len1 && idx2 < len2; /*nil*/) + { + char c1 = str1.charAt(idx1++); + char c2 = str2.charAt(idx2++); + + if (Character.isDigit(c1) && Character.isDigit(c2)) + { + int beg1 = idx1 - 1; // undo previous increment + while (idx1 < len1 && Character.isDigit(str1.charAt(idx1))) + { + ++idx1; + } + + int beg2 = idx2 - 1; // undo previous increment + while (idx2 < len2 && Character.isDigit(str2.charAt(idx2))) + { + ++idx2; + } + + // note: BigInteger for extra safety + int cmp = new BigInteger(str1.substring(beg1, idx1)).compareTo + ( + new BigInteger(str2.substring(beg2, idx2)) + ); + if (cmp != 0) return cmp; + } + else if (c1 != c2) + { + return (c1 - c2); + } + } + + return (len1 - len2); + } + } + +/* ************************************************************************** */ diff --git a/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java b/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java index 9f28049fa..8cf3aca1b 100644 --- a/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java @@ -265,7 +265,6 @@ public class TestXSLFBugs { * that image10.foo isn't between image1.foo and image2.foo */ @Test - @Ignore public void test57552() throws Exception { XMLSlideShow ss = new XMLSlideShow(); for (String s : new String[]{"Slide1","Slide2"}) { From f911f58441537839a06f892e1e16376e11e8a869 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 4 May 2015 09:14:48 +0000 Subject: [PATCH 108/301] New EmptyFileException, and fix serial warning git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1677561 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/EmptyFileException.java | 28 +++++++++++++++++++ .../poi/EncryptedDocumentException.java | 3 +- 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 src/java/org/apache/poi/EmptyFileException.java diff --git a/src/java/org/apache/poi/EmptyFileException.java b/src/java/org/apache/poi/EmptyFileException.java new file mode 100644 index 000000000..ddbd14280 --- /dev/null +++ b/src/java/org/apache/poi/EmptyFileException.java @@ -0,0 +1,28 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ +package org.apache.poi; + +/** + * Exception thrown if an Empty (zero byte) file is supplied + */ +public class EmptyFileException extends IllegalArgumentException { + private static final long serialVersionUID = 1536449292174360166L; + + public EmptyFileException() { + super("The supplied file was empty (zero bytes long)"); + } +} \ No newline at end of file diff --git a/src/java/org/apache/poi/EncryptedDocumentException.java b/src/java/org/apache/poi/EncryptedDocumentException.java index 12196c80c..4ac6123e4 100644 --- a/src/java/org/apache/poi/EncryptedDocumentException.java +++ b/src/java/org/apache/poi/EncryptedDocumentException.java @@ -16,9 +16,10 @@ ==================================================================== */ package org.apache.poi; -@SuppressWarnings("serial") public class EncryptedDocumentException extends IllegalStateException { + private static final long serialVersionUID = 7276950444540469193L; + public EncryptedDocumentException(String s) { super(s); } From e9340cc1babdcd64cdaf4805dfc301f4bcd0ca6c Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 4 May 2015 09:15:48 +0000 Subject: [PATCH 109/301] If an empty stream or file is given to WorkbookFactory.create, give a more informative exception - EmptyFileException git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1677562 13f79535-47bb-0310-9956-ffa450edef68 --- .../poifs/filesystem/NPOIFSFileSystem.java | 9 ++++- .../poi/poifs/filesystem/POIFSFileSystem.java | 35 +++++++++++-------- src/java/org/apache/poi/util/IOUtils.java | 31 ++++++++++++++++ .../poi/ss/usermodel/WorkbookFactory.java | 10 +++++- .../apache/poi/ss/TestWorkbookFactory.java | 25 +++++++++++++ 5 files changed, 93 insertions(+), 17 deletions(-) diff --git a/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java b/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java index f21f6a39a..3aa070719 100644 --- a/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java +++ b/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java @@ -36,6 +36,7 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; +import org.apache.poi.EmptyFileException; import org.apache.poi.poifs.common.POIFSBigBlockSize; import org.apache.poi.poifs.common.POIFSConstants; import org.apache.poi.poifs.dev.POIFSViewable; @@ -210,6 +211,9 @@ public class NPOIFSFileSystem extends BlockStore try { // Initialize the datasource if (srcFile != null) { + if (srcFile.length() == 0) + throw new EmptyFileException(); + FileBackedDataSource d = new FileBackedDataSource(srcFile, readOnly); channel = d.getChannel(); _data = d; @@ -236,7 +240,10 @@ public class NPOIFSFileSystem extends BlockStore // TODO Decide if we can handle these better whilst // still sticking to the iterator contract if(closeChannelOnError) { - channel.close(); + if (channel != null) { + channel.close(); + channel = null; + } } throw e; } diff --git a/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java b/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java index 7169d91f9..f1d73d898 100644 --- a/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java +++ b/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java @@ -25,7 +25,6 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.io.PushbackInputStream; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; @@ -37,7 +36,17 @@ import org.apache.poi.poifs.dev.POIFSViewable; import org.apache.poi.poifs.property.DirectoryProperty; import org.apache.poi.poifs.property.Property; import org.apache.poi.poifs.property.PropertyTable; -import org.apache.poi.poifs.storage.*; +import org.apache.poi.poifs.storage.BATBlock; +import org.apache.poi.poifs.storage.BlockAllocationTableReader; +import org.apache.poi.poifs.storage.BlockAllocationTableWriter; +import org.apache.poi.poifs.storage.BlockList; +import org.apache.poi.poifs.storage.BlockWritable; +import org.apache.poi.poifs.storage.HeaderBlock; +import org.apache.poi.poifs.storage.HeaderBlockConstants; +import org.apache.poi.poifs.storage.HeaderBlockWriter; +import org.apache.poi.poifs.storage.RawDataBlockList; +import org.apache.poi.poifs.storage.SmallBlockTableReader; +import org.apache.poi.poifs.storage.SmallBlockTableWriter; import org.apache.poi.util.CloseIgnoringInputStream; import org.apache.poi.util.IOUtils; import org.apache.poi.util.LongField; @@ -201,19 +210,15 @@ public class POIFSFileSystem */ public static boolean hasPOIFSHeader(InputStream inp) throws IOException { // We want to peek at the first 8 bytes - inp.mark(8); - - byte[] header = new byte[8]; - IOUtils.readFully(inp, header); - LongField signature = new LongField(HeaderBlockConstants._signature_offset, header); - - // Wind back those 8 bytes - if(inp instanceof PushbackInputStream) { - PushbackInputStream pin = (PushbackInputStream)inp; - pin.unread(header); - } else { - inp.reset(); - } + byte[] header = IOUtils.peekFirst8Bytes(inp); + return hasPOIFSHeader(header); + } + /** + * Checks if the supplied first 8 bytes of a stream / file + * has a POIFS (OLE2) header. + */ + public static boolean hasPOIFSHeader(byte[] header8Bytes) { + LongField signature = new LongField(HeaderBlockConstants._signature_offset, header8Bytes); // Did it match the signature? return (signature.get() == HeaderBlockConstants._signature); diff --git a/src/java/org/apache/poi/util/IOUtils.java b/src/java/org/apache/poi/util/IOUtils.java index 4f18214c4..e0f2bd16c 100644 --- a/src/java/org/apache/poi/util/IOUtils.java +++ b/src/java/org/apache/poi/util/IOUtils.java @@ -22,11 +22,14 @@ import java.io.Closeable; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.io.PushbackInputStream; import java.nio.ByteBuffer; import java.nio.channels.ReadableByteChannel; import java.util.zip.CRC32; import java.util.zip.Checksum; +import org.apache.poi.EmptyFileException; + public final class IOUtils { private static final POILogger logger = POILogFactory @@ -35,6 +38,34 @@ public final class IOUtils { private IOUtils() { // no instances of this class } + + /** + * Peeks at the first 8 bytes of the stream. Returns those bytes, but + * with the stream unaffected. Requires a stream that supports mark/reset, + * or a PushbackInputStream. If the stream has >0 but <8 bytes, + * remaining bytes will be zero. + * @throws EmptyFileException if the stream is empty + */ + public static byte[] peekFirst8Bytes(InputStream stream) throws IOException, EmptyFileException { + // We want to peek at the first 8 bytes + stream.mark(8); + + byte[] header = new byte[8]; + int read = IOUtils.readFully(stream, header); + + if (read < 1) + throw new EmptyFileException(); + + // Wind back those 8 bytes + if(stream instanceof PushbackInputStream) { + PushbackInputStream pin = (PushbackInputStream)stream; + pin.unread(header); + } else { + stream.reset(); + } + + return header; + } /** * Reads all the data from the input stream, and returns the bytes read. diff --git a/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java b/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java index bdf37eafc..80d9b76d4 100644 --- a/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java +++ b/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java @@ -23,6 +23,7 @@ import java.io.InputStream; import java.io.PushbackInputStream; import java.security.GeneralSecurityException; +import org.apache.poi.EmptyFileException; import org.apache.poi.EncryptedDocumentException; import org.apache.poi.POIXMLDocument; import org.apache.poi.hssf.record.crypto.Biff8EncryptionKey; @@ -35,6 +36,7 @@ import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; import org.apache.poi.poifs.filesystem.OfficeXmlFileException; import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.apache.poi.util.IOUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; /** @@ -153,14 +155,19 @@ public class WorkbookFactory { * from an InputStream requires more memory than loading * from a File, so prefer {@link #create(File)} where possible. * @throws EncryptedDocumentException If the wrong password is given for a protected file + * @throws EmptyFileException If an empty stream is given */ public static Workbook create(InputStream inp, String password) throws IOException, InvalidFormatException, EncryptedDocumentException { // If clearly doesn't do mark/reset, wrap up if (! inp.markSupported()) { inp = new PushbackInputStream(inp, 8); } + + // Ensure that there is at least some data there + byte[] header8 = IOUtils.peekFirst8Bytes(inp); - if (POIFSFileSystem.hasPOIFSHeader(inp)) { + // Try to create + if (POIFSFileSystem.hasPOIFSHeader(header8)) { NPOIFSFileSystem fs = new NPOIFSFileSystem(inp); return create(fs, password); } @@ -187,6 +194,7 @@ public class WorkbookFactory { *

Note that in order to properly release resources the * Workbook should be closed after use. * @throws EncryptedDocumentException If the wrong password is given for a protected file + * @throws EmptyFileException If an empty stream is given */ public static Workbook create(File file, String password) throws IOException, InvalidFormatException, EncryptedDocumentException { if (! file.exists()) { diff --git a/src/ooxml/testcases/org/apache/poi/ss/TestWorkbookFactory.java b/src/ooxml/testcases/org/apache/poi/ss/TestWorkbookFactory.java index 582c8c364..27d6d9ec1 100644 --- a/src/ooxml/testcases/org/apache/poi/ss/TestWorkbookFactory.java +++ b/src/ooxml/testcases/org/apache/poi/ss/TestWorkbookFactory.java @@ -17,14 +17,18 @@ package org.apache.poi.ss; +import java.io.ByteArrayInputStream; +import java.io.File; import java.io.InputStream; +import org.apache.poi.EmptyFileException; import org.apache.poi.EncryptedDocumentException; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; +import org.apache.poi.util.TempFile; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.openxml4j.opc.OPCPackage; @@ -254,4 +258,25 @@ public final class TestWorkbookFactory extends TestCase { fail("Shouldn't be able to open with the wrong password"); } catch (EncryptedDocumentException e) {} } + + /** + * Check that a helpful exception is given on an empty file / stream + */ + public void testEmptyFile() throws Exception { + InputStream emptyStream = new ByteArrayInputStream(new byte[0]); + File emptyFile = TempFile.createTempFile("empty", ".poi"); + + try { + WorkbookFactory.create(emptyStream); + fail("Shouldn't be able to create for an empty stream"); + } catch (EmptyFileException e) { + } + + try { + WorkbookFactory.create(emptyFile); + fail("Shouldn't be able to create for an empty file"); + } catch (EmptyFileException e) { + } + emptyFile.delete(); + } } From c5f9a72dd1cad00130e4bf5ccf9f041922a4977b Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 4 May 2015 09:17:14 +0000 Subject: [PATCH 110/301] Fix inconsistent whitespace git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1677565 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/poi/util/IOUtils.java | 234 +++++++++++----------- 1 file changed, 114 insertions(+), 120 deletions(-) diff --git a/src/java/org/apache/poi/util/IOUtils.java b/src/java/org/apache/poi/util/IOUtils.java index e0f2bd16c..f1d5a2378 100644 --- a/src/java/org/apache/poi/util/IOUtils.java +++ b/src/java/org/apache/poi/util/IOUtils.java @@ -31,28 +31,26 @@ import java.util.zip.Checksum; import org.apache.poi.EmptyFileException; public final class IOUtils { + private static final POILogger logger = POILogFactory.getLogger( IOUtils.class ); - private static final POILogger logger = POILogFactory - .getLogger( IOUtils.class ); + private IOUtils() { + // no instances of this class + } - private IOUtils() { - // no instances of this class - } - - /** - * Peeks at the first 8 bytes of the stream. Returns those bytes, but - * with the stream unaffected. Requires a stream that supports mark/reset, - * or a PushbackInputStream. If the stream has >0 but <8 bytes, - * remaining bytes will be zero. - * @throws EmptyFileException if the stream is empty - */ - public static byte[] peekFirst8Bytes(InputStream stream) throws IOException, EmptyFileException { + /** + * Peeks at the first 8 bytes of the stream. Returns those bytes, but + * with the stream unaffected. Requires a stream that supports mark/reset, + * or a PushbackInputStream. If the stream has >0 but <8 bytes, + * remaining bytes will be zero. + * @throws EmptyFileException if the stream is empty + */ + public static byte[] peekFirst8Bytes(InputStream stream) throws IOException, EmptyFileException { // We want to peek at the first 8 bytes - stream.mark(8); + stream.mark(8); byte[] header = new byte[8]; int read = IOUtils.readFully(stream, header); - + if (read < 1) throw new EmptyFileException(); @@ -63,110 +61,110 @@ public final class IOUtils { } else { stream.reset(); } - + return header; - } + } - /** - * Reads all the data from the input stream, and returns the bytes read. - */ - public static byte[] toByteArray(InputStream stream) throws IOException { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); + /** + * Reads all the data from the input stream, and returns the bytes read. + */ + public static byte[] toByteArray(InputStream stream) throws IOException { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); - byte[] buffer = new byte[4096]; - int read = 0; - while (read != -1) { - read = stream.read(buffer); - if (read > 0) { - baos.write(buffer, 0, read); - } - } + byte[] buffer = new byte[4096]; + int read = 0; + while (read != -1) { + read = stream.read(buffer); + if (read > 0) { + baos.write(buffer, 0, read); + } + } - return baos.toByteArray(); - } + return baos.toByteArray(); + } - /** - * Returns an array (that shouldn't be written to!) of the - * ByteBuffer. Will be of the requested length, or possibly - * longer if that's easier. - */ - public static byte[] toByteArray(ByteBuffer buffer, int length) { - if(buffer.hasArray() && buffer.arrayOffset() == 0) { - // The backing array should work out fine for us - return buffer.array(); - } - - byte[] data = new byte[length]; - buffer.get(data); - return data; - } + /** + * Returns an array (that shouldn't be written to!) of the + * ByteBuffer. Will be of the requested length, or possibly + * longer if that's easier. + */ + public static byte[] toByteArray(ByteBuffer buffer, int length) { + if(buffer.hasArray() && buffer.arrayOffset() == 0) { + // The backing array should work out fine for us + return buffer.array(); + } - /** - * Helper method, just calls readFully(in, b, 0, b.length) - */ - public static int readFully(InputStream in, byte[] b) throws IOException { - return readFully(in, b, 0, b.length); - } + byte[] data = new byte[length]; + buffer.get(data); + return data; + } - /** - * Same as the normal in.read(b, off, len), but tries to ensure - * that the entire len number of bytes is read. - *

- * If the end of file is reached before any bytes are read, returns -1. If - * the end of the file is reached after some bytes are read, returns the - * number of bytes read. If the end of the file isn't reached before len - * bytes have been read, will return len bytes. - */ - public static int readFully(InputStream in, byte[] b, int off, int len) throws IOException { - int total = 0; - while (true) { - int got = in.read(b, off + total, len - total); - if (got < 0) { - return (total == 0) ? -1 : total; - } - total += got; - if (total == len) { - return total; - } - } - } - - /** - * Same as the normal channel.read(b), but tries to ensure - * that the entire len number of bytes is read. - *

- * If the end of file is reached before any bytes are read, returns -1. If - * the end of the file is reached after some bytes are read, returns the - * number of bytes read. If the end of the file isn't reached before len - * bytes have been read, will return len bytes. - */ - public static int readFully(ReadableByteChannel channel, ByteBuffer b) throws IOException { - int total = 0; - while (true) { - int got = channel.read(b); - if (got < 0) { - return (total == 0) ? -1 : total; - } - total += got; - if (total == b.capacity() || b.position() == b.capacity()) { - return total; - } - } - } - - /** - * Copies all the data from the given InputStream to the OutputStream. It - * leaves both streams open, so you will still need to close them once done. - */ - public static void copy(InputStream inp, OutputStream out) throws IOException { - byte[] buff = new byte[4096]; - int count; - while ((count = inp.read(buff)) != -1) { - if (count > 0) { - out.write(buff, 0, count); - } - } - } + /** + * Helper method, just calls readFully(in, b, 0, b.length) + */ + public static int readFully(InputStream in, byte[] b) throws IOException { + return readFully(in, b, 0, b.length); + } + + /** + * Same as the normal in.read(b, off, len), but tries to ensure + * that the entire len number of bytes is read. + *

+ * If the end of file is reached before any bytes are read, returns -1. If + * the end of the file is reached after some bytes are read, returns the + * number of bytes read. If the end of the file isn't reached before len + * bytes have been read, will return len bytes. + */ + public static int readFully(InputStream in, byte[] b, int off, int len) throws IOException { + int total = 0; + while (true) { + int got = in.read(b, off + total, len - total); + if (got < 0) { + return (total == 0) ? -1 : total; + } + total += got; + if (total == len) { + return total; + } + } + } + + /** + * Same as the normal channel.read(b), but tries to ensure + * that the entire len number of bytes is read. + *

+ * If the end of file is reached before any bytes are read, returns -1. If + * the end of the file is reached after some bytes are read, returns the + * number of bytes read. If the end of the file isn't reached before len + * bytes have been read, will return len bytes. + */ + public static int readFully(ReadableByteChannel channel, ByteBuffer b) throws IOException { + int total = 0; + while (true) { + int got = channel.read(b); + if (got < 0) { + return (total == 0) ? -1 : total; + } + total += got; + if (total == b.capacity() || b.position() == b.capacity()) { + return total; + } + } + } + + /** + * Copies all the data from the given InputStream to the OutputStream. It + * leaves both streams open, so you will still need to close them once done. + */ + public static void copy(InputStream inp, OutputStream out) throws IOException { + byte[] buff = new byte[4096]; + int count; + while ((count = inp.read(buff)) != -1) { + if (count > 0) { + out.write(buff, 0, count); + } + } + } public static long calculateChecksum(byte[] data) { Checksum sum = new CRC32(); @@ -181,14 +179,10 @@ public final class IOUtils { * @param closeable * resource to close */ - public static void closeQuietly( final Closeable closeable ) - { - try - { + public static void closeQuietly( final Closeable closeable ) { + try { closeable.close(); - } - catch ( Exception exc ) - { + } catch ( Exception exc ) { logger.log( POILogger.ERROR, "Unable to close resource: " + exc, exc ); } From cdc2ab7f9b7bea40b2f7381ab949024679956b9b Mon Sep 17 00:00:00 2001 From: Andreas Beeker Date: Mon, 4 May 2015 19:34:48 +0000 Subject: [PATCH 111/301] javadoc fix ... trying to get rid of the "Error fetching URL" warning git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1677659 13f79535-47bb-0310-9956-ffa450edef68 --- build.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.xml b/build.xml index 7e7db88fa..55d38dc04 100644 --- a/build.xml +++ b/build.xml @@ -1478,7 +1478,7 @@ under the License. - + From 125ef5707f96d4dd2cec0abff394e6ca95687324 Mon Sep 17 00:00:00 2001 From: Andreas Beeker Date: Mon, 4 May 2015 20:28:30 +0000 Subject: [PATCH 112/301] Release preparation git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1677675 13f79535-47bb-0310-9956-ffa450edef68 --- build.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.xml b/build.xml index 55d38dc04..24c757c4f 100644 --- a/build.xml +++ b/build.xml @@ -47,8 +47,8 @@ under the License. The Apache POI project Ant build. - - + + From cff2d1dcb6e14ce77601ecd2ff60c8a9acfebe29 Mon Sep 17 00:00:00 2001 From: Andreas Beeker Date: Mon, 4 May 2015 20:31:18 +0000 Subject: [PATCH 113/301] Release preparation git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1677676 13f79535-47bb-0310-9956-ffa450edef68 From 5f92db369f1717009bd13f3434f8431eb2d1b190 Mon Sep 17 00:00:00 2001 From: Andreas Beeker Date: Mon, 4 May 2015 20:55:40 +0000 Subject: [PATCH 114/301] removed because of late TIKA-1315 fix git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1677684 13f79535-47bb-0310-9956-ffa450edef68 From 8bfc6056c879b8e8459d3d0556dbfd2ca81b4c56 Mon Sep 17 00:00:00 2001 From: Tim Allison Date: Tue, 5 May 2015 01:39:16 +0000 Subject: [PATCH 115/301] POI-57889 prevent NPE with on some documents with XWPFParagraph's getNumFmt() and add some other classes to enable calculation of paragraph numbers git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1677723 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xwpf/usermodel/XWPFParagraph.java | 90 +++++++++++++++++- .../poi/xwpf/usermodel/TestXWPFNumbering.java | 34 ++++++- test-data/document/Numbering.docx | Bin 11709 -> 13808 bytes 3 files changed, 121 insertions(+), 3 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java index c98143a5a..bc0ddf85a 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java @@ -20,7 +20,6 @@ import java.math.BigInteger; import java.util.ArrayList; import java.util.Collections; import java.util.List; - import org.apache.poi.POIXMLDocumentPart; import org.apache.poi.util.Internal; import org.apache.poi.wp.usermodel.Paragraph; @@ -28,11 +27,14 @@ import org.apache.xmlbeans.XmlCursor; import org.apache.xmlbeans.XmlObject; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTAbstractNum; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBorder; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDecimalNumber; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFtnEdnRef; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHyperlink; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTInd; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTJc; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTLvl; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTNum; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTNumLvl; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTOnOff; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPBdr; @@ -284,13 +286,97 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para break; } } - if(level != null) + if(level != null && level.getNumFmt() != null + && level.getNumFmt().getVal() != null) return level.getNumFmt().getVal().toString(); } } return null; } + /** + * Returns the text that should be used around the paragraph level numbers. + * + * @return a string (e.g. "%1.") or null if the value is not found. + */ + public String getNumLevelText() { + BigInteger numID = getNumID(); + XWPFNumbering numbering = document.getNumbering(); + if(numID != null && numbering != null) { + XWPFNum num = numbering.getNum(numID); + if(num != null) { + BigInteger ilvl = getNumIlvl(); + CTNum ctNum = num.getCTNum(); + if (ctNum == null) + return null; + + CTDecimalNumber ctDecimalNumber = ctNum.getAbstractNumId(); + if (ctDecimalNumber == null) + return null; + + BigInteger abstractNumId = ctDecimalNumber.getVal(); + if (abstractNumId == null) + return null; + + XWPFAbstractNum xwpfAbstractNum = numbering.getAbstractNum(abstractNumId); + + if (xwpfAbstractNum == null) + return null; + + CTAbstractNum anum = xwpfAbstractNum.getCTAbstractNum(); + + if (anum == null) + return null; + + CTLvl level = null; + for(int i = 0; i < anum.sizeOfLvlArray(); i++) { + CTLvl lvl = anum.getLvlArray(i); + if(lvl != null && lvl.getIlvl() != null && lvl.getIlvl().equals(ilvl)) { + level = lvl; + break; + } + } + if(level != null && level.getLvlText() != null + && level.getLvlText().getVal() != null) + return level.getLvlText().getVal().toString(); + } + } + return null; + } + + + /** + * Gets the numstartOverride for the paragraph numbering for this paragraph. + * @return returns the overridden start number or null if there is no override for this paragraph. + */ + public BigInteger getNumStartOverride() { + BigInteger numID = getNumID(); + XWPFNumbering numbering = document.getNumbering(); + if(numID != null && numbering != null) { + XWPFNum num = numbering.getNum(numID); + + if(num != null) { + CTNum ctNum = num.getCTNum(); + if (ctNum == null) { + return null; + } + BigInteger ilvl = getNumIlvl(); + CTNumLvl level = null; + for(int i = 0; i < ctNum.sizeOfLvlOverrideArray(); i++) { + CTNumLvl ctNumLvl = ctNum.getLvlOverrideArray(i); + if(ctNumLvl != null && ctNumLvl.getIlvl() != null && + ctNumLvl.getIlvl().equals(ilvl)) { + level = ctNumLvl; + break; + } + } + if(level != null && level.getStartOverride() != null) { + return level.getStartOverride().getVal(); + } + } + } + return null; + } /** * setNumID of Paragraph * @param numPos diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFNumbering.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFNumbering.java index fce9d18e0..2cae023cf 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFNumbering.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFNumbering.java @@ -26,7 +26,7 @@ import org.apache.poi.xwpf.XWPFTestDataSamples; public class TestXWPFNumbering extends TestCase { - public void testCompareAbstractNum() throws IOException{ + public void testCompareAbstractNum() throws IOException { XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Numbering.docx"); XWPFNumbering numbering = doc.getNumbering(); BigInteger numId = BigInteger.valueOf(1); @@ -74,4 +74,36 @@ public class TestXWPFNumbering extends TestCase { assertEquals("lowerLetter", doc.getParagraphs().get(5).getNumFmt()); assertEquals("lowerRoman", doc.getParagraphs().get(6).getNumFmt()); } + + public void testLvlText() throws IOException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Numbering.docx"); + + assertEquals("%1.%2.%3.", doc.getParagraphs().get(12).getNumLevelText()); + + assertEquals("NEW-%1-FORMAT", doc.getParagraphs().get(14).getNumLevelText()); + + XWPFParagraph p = doc.getParagraphs().get(18); + assertEquals("%1.", p.getNumLevelText()); + //test that null doesn't throw NPE + assertNull(p.getNumFmt()); + } + + public void testOverrideList() throws IOException { + //TODO: for now the try/catch block ensures loading/inclusion of CTNumLevel + //for down stream processing. + //Ideally, we should find files that actually use overrides and test against those. + //Use XWPFParagraph's getNumStartOverride() in the actual tests + + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Numbering.docx"); + XWPFParagraph p = doc.getParagraphs().get(18);XWPFNumbering numbering = doc.getNumbering(); + boolean ex = false; + assertNull(p.getNumStartOverride()); + try { + numbering.getNum(p.getNumID()).getCTNum().getLvlOverrideArray(1); + } catch (IndexOutOfBoundsException e) { + ex = true; + } + assertTrue(ex); + } + } diff --git a/test-data/document/Numbering.docx b/test-data/document/Numbering.docx index da0f32572f358d815dd3dbd89505b6485e16a6a1..d5605c9f7861be2e225c74eec41c68012a233ee1 100644 GIT binary patch literal 13808 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 Date: Tue, 5 May 2015 23:51:10 +0000 Subject: [PATCH 116/301] OOM fix for gump run git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1677913 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/xssf/usermodel/TestXSSFBugs.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index 4fc0db157..365ed2270 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -2463,7 +2463,17 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { c.setCellValue(i); } - wb = XSSFTestDataSamples.writeOutAndReadBack(wb); + // using temp file instead of ByteArrayOutputStream because of OOM in gump run + File tmp = TempFile.createTempFile("poi-test", ".bug57880"); + FileOutputStream fos = new FileOutputStream(tmp); + wb.write(fos); + fos.close(); + + wb.close(); + fmt = null; s = null; wb = null; + // System.gc(); + + wb = new XSSFWorkbook(tmp); fmt = wb.getCreationHelper().createDataFormat(); s = wb.getSheetAt(0); for (int i=1; i Date: Wed, 6 May 2015 08:42:28 +0000 Subject: [PATCH 117/301] Try to fix flaky test by waiting for a switch of the second to ensure that we have the same timestamps in the two workbooks that we compare byte-wise in this test. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1677950 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xssf/usermodel/TestXSSFBugs.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index 365ed2270..5658f4c12 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -1561,6 +1561,15 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { cell.setCellValue("Hi"); sheet.setRepeatingRows(new CellRangeAddress(0, 0, 0, 0)); + // small hack to try to make this test stable, previously it failed whenever the two written ZIP files had different file-creation + // dates stored. + // We try to do a loop until the current second changes in order to avoid problems with some date information that is written to the ZIP and thus + // causes differences + long start = System.currentTimeMillis()/1000; + while(System.currentTimeMillis()/1000 == start) { + Thread.sleep(10); + } + ByteArrayOutputStream bos = new ByteArrayOutputStream(8096); wb.write(bos); byte firstSave[] = bos.toByteArray(); @@ -1568,6 +1577,13 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { wb.write(bos); byte secondSave[] = bos.toByteArray(); + /*OutputStream stream = new FileOutputStream("C:\\temp\\poi.xlsx"); + try { + wb.write(stream); + } finally { + stream.close(); + }*/ + assertArrayEquals("Had: \n" + Arrays.toString(firstSave) + " and \n" + Arrays.toString(secondSave), firstSave, secondSave); @@ -2439,7 +2455,7 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { wb.close(); } - + /** * .xlsx supports 64000 cell styles, the style indexes after * 32,767 must not be -32,768, then -32,767, -32,766 From 1f4bc30b92d7b8aaed8e6a8470d0e0862127d2c5 Mon Sep 17 00:00:00 2001 From: Andreas Beeker Date: Wed, 6 May 2015 20:25:29 +0000 Subject: [PATCH 118/301] tag 1678083 as 3.12-final git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678087 13f79535-47bb-0310-9956-ffa450edef68 From 5b211bff3e44b108a9824105a3ac21d16866ea2d Mon Sep 17 00:00:00 2001 From: Andreas Beeker Date: Wed, 6 May 2015 22:33:34 +0000 Subject: [PATCH 119/301] unpin documentation git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678106 13f79535-47bb-0310-9956-ffa450edef68 From 9c558ab29305949896fa7c8d98c326694154cd79 Mon Sep 17 00:00:00 2001 From: Andreas Beeker Date: Wed, 6 May 2015 23:17:18 +0000 Subject: [PATCH 120/301] Use en-locale for javadoc otherwise apidocs contains attributes git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678109 13f79535-47bb-0310-9956-ffa450edef68 --- build.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.xml b/build.xml index 24c757c4f..43747613c 100644 --- a/build.xml +++ b/build.xml @@ -1245,7 +1245,7 @@ under the License. description="Generates the API documentation"> @@ -1473,7 +1473,7 @@ under the License. From 9a755850e9ad663b7c71b0a6171b2b85d6e7b6d0 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 7 May 2015 12:37:43 +0000 Subject: [PATCH 121/301] Begin on test for going from xwpf text to style git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678179 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/xwpf/usermodel/XWPFStyles.java | 11 +++-- .../poi/xwpf/usermodel/TestXWPFStyles.java | 48 +++++++++++++++++++ 2 files changed, 55 insertions(+), 4 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java index 824d39d71..9c6319c56 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java @@ -43,8 +43,10 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTLanguage; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFonts; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDocDefaults; /** - * @author Philipp Epp - * + * Holds details of built-in, default and user styles, which + * apply to tables / paragraphs / lists etc. + * Text within one of those with custom stylings has the style + * information stored in the {@link XWPFRun} */ public class XWPFStyles extends POIXMLDocumentPart{ @@ -83,8 +85,6 @@ public class XWPFStyles extends POIXMLDocumentPart{ } catch (XmlException e) { throw new POIXMLException("Unable to read styles", e); } - - } @Override @@ -154,6 +154,9 @@ public class XWPFStyles extends POIXMLDocumentPart{ } return null; } + public int getNumberOfStyles() { + return listStyle.size(); + } /** * get the styles which are related to the parameter style and their relatives diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java index c29d50208..3e7d54b90 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java @@ -138,4 +138,52 @@ public class TestXWPFStyles extends TestCase { styles = docIn.getStyles(); assertTrue(styles.styleExist(strStyleId)); } + + public void testEasyAccessToStyles() throws IOException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("SampleDoc.docx"); + XWPFStyles styles = doc.getStyles(); + assertNotNull(styles); + + // Has 3 paragraphs on page one, a break, and 3 on page 2 + assertEquals(7, doc.getParagraphs().size()); + + // Check the first three have no run styles, just default paragraph style + for (int i=0; i<3; i++) { + XWPFParagraph p = doc.getParagraphs().get(i); + assertEquals(null, p.getStyle()); + assertEquals(null, p.getStyleID()); + assertEquals(1, p.getRuns().size()); + + XWPFRun r = p.getRuns().get(0); + assertEquals(null, r.getColor()); + assertEquals(null, r.getFontFamily()); + assertEquals(null, r.getFontName()); + assertEquals(-1, r.getFontSize()); + } + + // On page two, has explicit styles, but on runs not on + // the paragraph itself + for (int i=4; i<7; i++) { + XWPFParagraph p = doc.getParagraphs().get(i); + assertEquals(null, p.getStyle()); + assertEquals(null, p.getStyleID()); + assertEquals(1, p.getRuns().size()); + + XWPFRun r = p.getRuns().get(0); + assertEquals("Arial Black", r.getFontFamily()); + assertEquals("Arial Black", r.getFontName()); + assertEquals(16, r.getFontSize()); + assertEquals("548DD4", r.getColor()); + } + + // Check the document styles + // Should have a style defined for each type + assertEquals(4, styles.getNumberOfStyles()); + assertNotNull(styles.getStyle("Normal")); + assertNotNull(styles.getStyle("DefaultParagraphFont")); + assertNotNull(styles.getStyle("TableNormal")); + assertNotNull(styles.getStyle("NoList")); + + // TODO Check latent and default + } } From 9fd183275375f1dae57e1632dd8c496e1043de4c Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 7 May 2015 13:07:00 +0000 Subject: [PATCH 122/301] Start on XWPFStyles support for document default styles git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678187 13f79535-47bb-0310-9956-ffa450edef68 --- .../usermodel/XWPFDefaultParagraphStyle.java | 38 +++++++++++++++++++ .../xwpf/usermodel/XWPFDefaultRunStyle.java | 38 +++++++++++++++++++ .../poi/xwpf/usermodel/XWPFLatentStyles.java | 6 ++- .../apache/poi/xwpf/usermodel/XWPFStyles.java | 30 +++++++++------ .../poi/xwpf/usermodel/TestXWPFStyles.java | 6 ++- 5 files changed, 105 insertions(+), 13 deletions(-) create mode 100644 src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultParagraphStyle.java create mode 100644 src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultParagraphStyle.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultParagraphStyle.java new file mode 100644 index 000000000..3d29f7942 --- /dev/null +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultParagraphStyle.java @@ -0,0 +1,38 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.xwpf.usermodel; + +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPPr; + +/** + * Default Paragraph style, from which other styles will override + * TODO Share logic with {@link XWPFParagraph} which also uses CTPPr + */ +public class XWPFDefaultParagraphStyle { + private CTPPr ppr; + + public XWPFDefaultParagraphStyle(CTPPr ppr) { + this.ppr = ppr; + } + + public int getSpacingAfter() { + if (ppr.isSetSpacing()) + return ppr.getSpacing().getAfter().intValue(); + return -1; + } +} diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java new file mode 100644 index 000000000..38de75e34 --- /dev/null +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java @@ -0,0 +1,38 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.xwpf.usermodel; + +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr; + +/** + * Default Character Run style, from which other styles will override + * TODO Share logic with {@link XWPFRun} which also uses CTRPr + */ +public class XWPFDefaultRunStyle { + private CTRPr rpr; + + public XWPFDefaultRunStyle(CTRPr rpr) { + this.rpr = rpr; + } + + public int getFontSize() { + if (rpr.isSetSz()) + return rpr.getSz().getVal().intValue() / 2; + return -1; + } +} diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFLatentStyles.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFLatentStyles.java index 83b898c1b..c296a4aaf 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFLatentStyles.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFLatentStyles.java @@ -35,8 +35,12 @@ public class XWPFLatentStyles { this.styles=styles; } + public int getNumberOfStyles() { + return latentStyles.sizeOfLsdExceptionArray(); + } + /** - * checks wheter specific LatentStyleID is a latentStyle + * checks whether specific LatentStyleID is a latentStyle */ @SuppressWarnings("deprecation") protected boolean isLatentStyle(String latentStyleID){ diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java index 9c6319c56..2888c1372 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java @@ -49,7 +49,6 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDocDefaults; * information stored in the {@link XWPFRun} */ public class XWPFStyles extends POIXMLDocumentPart{ - private List listStyle = new ArrayList(); private CTStyles ctStyles; XWPFLatentStyles latentStyles; @@ -104,6 +103,10 @@ public class XWPFStyles extends POIXMLDocumentPart{ ctStyles.save(out, xmlOptions); out.close(); } + + protected void ensureDocDefaults() { + // TODO Refactor from elsewhere + } /** * Sets the ctStyles @@ -290,14 +293,6 @@ public class XWPFStyles extends POIXMLDocumentPart{ runProps.setRFonts(fonts); } - - /** - * get latentstyles - */ - public XWPFLatentStyles getLatentStyles() { - return latentStyles; - } - /** * get the style with the same name * if this style is not existing, return null @@ -309,6 +304,19 @@ public class XWPFStyles extends POIXMLDocumentPart{ } } return null; - } -}//end class + + /** + * Get the default paragraph style which applies to the document + */ + public XWPFDefaultParagraphStyle getDefaultParagraphStyle() { + return null; // TODO + } + + /** + * Get the definition of all the Latent Styles + */ + public XWPFLatentStyles getLatentStyles() { + return latentStyles; + } +} diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java index 3e7d54b90..578e73f81 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java @@ -184,6 +184,10 @@ public class TestXWPFStyles extends TestCase { assertNotNull(styles.getStyle("TableNormal")); assertNotNull(styles.getStyle("NoList")); - // TODO Check latent and default + // We can't do much yet with latent styles + assertEquals(137, styles.getLatentStyles().getNumberOfStyles()); + + // Check the default styles + // TODO } } From 1c693babb8b666f9f3e96ae436dd06e6bdffe6f5 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 7 May 2015 13:08:15 +0000 Subject: [PATCH 123/301] Fix inconsistent whitespace/indents git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678188 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xwpf/usermodel/XWPFLatentStyles.java | 60 +-- .../apache/poi/xwpf/usermodel/XWPFStyles.java | 463 +++++++++--------- 2 files changed, 261 insertions(+), 262 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFLatentStyles.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFLatentStyles.java index c296a4aaf..e94299198 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFLatentStyles.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFLatentStyles.java @@ -20,35 +20,35 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTLatentStyles; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTLsdException; public class XWPFLatentStyles { - private CTLatentStyles latentStyles; - protected XWPFStyles styles; //LatentStyle shall know styles - - protected XWPFLatentStyles(){ - } - - protected XWPFLatentStyles(CTLatentStyles latentStyles){ - this(latentStyles,null); - } - - protected XWPFLatentStyles(CTLatentStyles latentStyles, XWPFStyles styles) { - this.latentStyles=latentStyles; - this.styles=styles; - } - - public int getNumberOfStyles() { - return latentStyles.sizeOfLsdExceptionArray(); - } - - /** - * checks whether specific LatentStyleID is a latentStyle - */ + private CTLatentStyles latentStyles; + protected XWPFStyles styles; //LatentStyle shall know styles + + protected XWPFLatentStyles(){ + } + + protected XWPFLatentStyles(CTLatentStyles latentStyles){ + this(latentStyles,null); + } + + protected XWPFLatentStyles(CTLatentStyles latentStyles, XWPFStyles styles) { + this.latentStyles=latentStyles; + this.styles=styles; + } + + public int getNumberOfStyles() { + return latentStyles.sizeOfLsdExceptionArray(); + } + + /** + * checks whether specific LatentStyleID is a latentStyle + */ @SuppressWarnings("deprecation") - protected boolean isLatentStyle(String latentStyleID){ - for ( CTLsdException lsd: latentStyles.getLsdExceptionArray()) { - if(lsd.getName().equals(latentStyleID)) { - return true; - } - } - return false; - } + protected boolean isLatentStyle(String latentStyleID){ + for ( CTLsdException lsd: latentStyles.getLsdExceptionArray()) { + if(lsd.getName().equals(latentStyleID)) { + return true; + } + } + return false; + } } diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java index 2888c1372..06405a63f 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java @@ -59,260 +59,259 @@ public class XWPFStyles extends POIXMLDocumentPart{ * @param part the package part holding the data of the styles, * @param rel the package relationship of type "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" */ + public XWPFStyles(PackagePart part, PackageRelationship rel) throws IOException, OpenXML4JException{ + super(part, rel); + } - public XWPFStyles(PackagePart part, PackageRelationship rel) throws IOException, OpenXML4JException{ - super(part, rel); - } + /** + * Construct XWPFStyles from scratch for a new document. + */ + public XWPFStyles() { + } - /** - * Construct XWPFStyles from scratch for a new document. - */ - public XWPFStyles() { - } + /** + * Read document + */ + @Override + protected void onDocumentRead() throws IOException{ + StylesDocument stylesDoc; + try { + InputStream is = getPackagePart().getInputStream(); + stylesDoc = StylesDocument.Factory.parse(is); + setStyles(stylesDoc.getStyles()); + latentStyles = new XWPFLatentStyles(ctStyles.getLatentStyles(), this); + } catch (XmlException e) { + throw new POIXMLException("Unable to read styles", e); + } + } + + @Override + protected void commit() throws IOException { + if (ctStyles == null) { + throw new IllegalStateException("Unable to write out styles that were never read in!"); + } + + XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS); + xmlOptions.setSaveSyntheticDocumentElement(new QName(CTStyles.type.getName().getNamespaceURI(), "styles")); + Map map = new HashMap(); + map.put("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "r"); + map.put("http://schemas.openxmlformats.org/wordprocessingml/2006/main", "w"); + xmlOptions.setSaveSuggestedPrefixes(map); + PackagePart part = getPackagePart(); + OutputStream out = part.getOutputStream(); + ctStyles.save(out, xmlOptions); + out.close(); + } + + protected void ensureDocDefaults() { + // TODO Refactor from elsewhere + } - /** - * Read document - */ - @Override - protected void onDocumentRead() throws IOException{ - StylesDocument stylesDoc; - try { - InputStream is = getPackagePart().getInputStream(); - stylesDoc = StylesDocument.Factory.parse(is); - setStyles(stylesDoc.getStyles()); - latentStyles = new XWPFLatentStyles(ctStyles.getLatentStyles(), this); - } catch (XmlException e) { - throw new POIXMLException("Unable to read styles", e); - } - } - - @Override - protected void commit() throws IOException { - if (ctStyles == null) { - throw new IllegalStateException("Unable to write out styles that were never read in!"); - } - - XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS); - xmlOptions.setSaveSyntheticDocumentElement(new QName(CTStyles.type.getName().getNamespaceURI(), "styles")); - Map map = new HashMap(); - map.put("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "r"); - map.put("http://schemas.openxmlformats.org/wordprocessingml/2006/main", "w"); - xmlOptions.setSaveSuggestedPrefixes(map); - PackagePart part = getPackagePart(); - OutputStream out = part.getOutputStream(); - ctStyles.save(out, xmlOptions); - out.close(); - } - - protected void ensureDocDefaults() { - // TODO Refactor from elsewhere - } - /** * Sets the ctStyles * @param styles */ @SuppressWarnings("deprecation") public void setStyles(CTStyles styles) { - ctStyles = styles; - - // Build up all the style objects - for(CTStyle style : ctStyles.getStyleArray()) { - listStyle.add(new XWPFStyle(style, this)); - } + ctStyles = styles; + + // Build up all the style objects + for(CTStyle style : ctStyles.getStyleArray()) { + listStyle.add(new XWPFStyle(style, this)); + } } - - /** - * checks whether style with styleID exist - * @param styleID styleID of the Style in the style-Document - * @return true if style exist, false if style not exist - */ - public boolean styleExist(String styleID){ - for (XWPFStyle style : listStyle) { - if (style.getStyleId().equals(styleID)) - return true; - } - return false; - } - /** - * add a style to the document - * @param style - * @throws IOException - */ - public void addStyle(XWPFStyle style){ - listStyle.add(style); - ctStyles.addNewStyle(); - int pos = ctStyles.sizeOfStyleArray() - 1; - ctStyles.setStyleArray(pos, style.getCTStyle()); - } - /** - *get style by a styleID - * @param styleID styleID of the searched style - * @return style - */ - public XWPFStyle getStyle(String styleID){ - for (XWPFStyle style : listStyle) { - if(style.getStyleId().equals(styleID)) - return style; - } - return null; - } - public int getNumberOfStyles() { - return listStyle.size(); - } - /** - * get the styles which are related to the parameter style and their relatives - * this method can be used to copy all styles from one document to another document - * @param style - * @return a list of all styles which were used by this method - */ - public List getUsedStyleList(XWPFStyle style){ - List usedStyleList = new ArrayList(); - usedStyleList.add(style); - return getUsedStyleList(style, usedStyleList); - } - - /** - * get the styles which are related to parameter style - * @param style - * @return all Styles of the parameterList - */ - private List getUsedStyleList(XWPFStyle style, List usedStyleList){ - String basisStyleID = style.getBasisStyleID(); - XWPFStyle basisStyle = getStyle(basisStyleID); - if((basisStyle!=null)&&(!usedStyleList.contains(basisStyle))){ - usedStyleList.add(basisStyle); - getUsedStyleList(basisStyle, usedStyleList); - } - String linkStyleID = style.getLinkStyleID(); - XWPFStyle linkStyle = getStyle(linkStyleID); - if((linkStyle!=null)&&(!usedStyleList.contains(linkStyle))){ - usedStyleList.add(linkStyle); - getUsedStyleList(linkStyle, usedStyleList); - } - - String nextStyleID = style.getNextStyleID(); - XWPFStyle nextStyle = getStyle(nextStyleID); - if((nextStyle!=null)&&(!usedStyleList.contains(nextStyle))){ - usedStyleList.add(linkStyle); - getUsedStyleList(linkStyle, usedStyleList); - } - return usedStyleList; - } - - /** - * Sets the default spelling language on ctStyles DocDefaults parameter - * @param strSpellingLanguage - */ - public void setSpellingLanguage(String strSpellingLanguage) { - CTDocDefaults docDefaults = null; - CTRPr runProps = null; - CTLanguage lang = null; + /** + * checks whether style with styleID exist + * @param styleID styleID of the Style in the style-Document + * @return true if style exist, false if style not exist + */ + public boolean styleExist(String styleID){ + for (XWPFStyle style : listStyle) { + if (style.getStyleId().equals(styleID)) + return true; + } + return false; + } + /** + * add a style to the document + * @param style + * @throws IOException + */ + public void addStyle(XWPFStyle style){ + listStyle.add(style); + ctStyles.addNewStyle(); + int pos = ctStyles.sizeOfStyleArray() - 1; + ctStyles.setStyleArray(pos, style.getCTStyle()); + } + /** + * Get style by a styleID + * @param styleID styleID of the searched style + * @return style + */ + public XWPFStyle getStyle(String styleID){ + for (XWPFStyle style : listStyle) { + if(style.getStyleId().equals(styleID)) + return style; + } + return null; + } + public int getNumberOfStyles() { + return listStyle.size(); + } - // Just making sure we use the members that have already been defined - if(ctStyles.isSetDocDefaults()) { - docDefaults = ctStyles.getDocDefaults(); - if(docDefaults.isSetRPrDefault()) { - CTRPrDefault RPrDefault = docDefaults.getRPrDefault(); - if(RPrDefault.isSetRPr()) { - runProps = RPrDefault.getRPr(); - if(runProps.isSetLang()) - lang = runProps.getLang(); - } - } - } + /** + * get the styles which are related to the parameter style and their relatives + * this method can be used to copy all styles from one document to another document + * @param style + * @return a list of all styles which were used by this method + */ + public List getUsedStyleList(XWPFStyle style){ + List usedStyleList = new ArrayList(); + usedStyleList.add(style); + return getUsedStyleList(style, usedStyleList); + } - if(docDefaults == null) - docDefaults = ctStyles.addNewDocDefaults(); - if(runProps == null) - runProps = docDefaults.addNewRPrDefault().addNewRPr(); - if(lang == null) - lang = runProps.addNewLang(); + /** + * get the styles which are related to parameter style + * @param style + * @return all Styles of the parameterList + */ + private List getUsedStyleList(XWPFStyle style, List usedStyleList){ + String basisStyleID = style.getBasisStyleID(); + XWPFStyle basisStyle = getStyle(basisStyleID); + if((basisStyle!=null)&&(!usedStyleList.contains(basisStyle))){ + usedStyleList.add(basisStyle); + getUsedStyleList(basisStyle, usedStyleList); + } + String linkStyleID = style.getLinkStyleID(); + XWPFStyle linkStyle = getStyle(linkStyleID); + if((linkStyle!=null)&&(!usedStyleList.contains(linkStyle))){ + usedStyleList.add(linkStyle); + getUsedStyleList(linkStyle, usedStyleList); + } - lang.setVal(strSpellingLanguage); - lang.setBidi(strSpellingLanguage); - } + String nextStyleID = style.getNextStyleID(); + XWPFStyle nextStyle = getStyle(nextStyleID); + if((nextStyle!=null)&&(!usedStyleList.contains(nextStyle))){ + usedStyleList.add(linkStyle); + getUsedStyleList(linkStyle, usedStyleList); + } + return usedStyleList; + } - /** - * Sets the default East Asia spelling language on ctStyles DocDefaults parameter - * @param strEastAsia - */ - public void setEastAsia(String strEastAsia) { - CTDocDefaults docDefaults = null; - CTRPr runProps = null; - CTLanguage lang = null; + /** + * Sets the default spelling language on ctStyles DocDefaults parameter + * @param strSpellingLanguage + */ + public void setSpellingLanguage(String strSpellingLanguage) { + CTDocDefaults docDefaults = null; + CTRPr runProps = null; + CTLanguage lang = null; - // Just making sure we use the members that have already been defined - if(ctStyles.isSetDocDefaults()) { - docDefaults = ctStyles.getDocDefaults(); - if(docDefaults.isSetRPrDefault()) { - CTRPrDefault RPrDefault = docDefaults.getRPrDefault(); - if(RPrDefault.isSetRPr()) { - runProps = RPrDefault.getRPr(); - if(runProps.isSetLang()) - lang = runProps.getLang(); - } - } - } + // Just making sure we use the members that have already been defined + if(ctStyles.isSetDocDefaults()) { + docDefaults = ctStyles.getDocDefaults(); + if(docDefaults.isSetRPrDefault()) { + CTRPrDefault RPrDefault = docDefaults.getRPrDefault(); + if(RPrDefault.isSetRPr()) { + runProps = RPrDefault.getRPr(); + if(runProps.isSetLang()) + lang = runProps.getLang(); + } + } + } - if(docDefaults == null) - docDefaults = ctStyles.addNewDocDefaults(); - if(runProps == null) - runProps = docDefaults.addNewRPrDefault().addNewRPr(); - if(lang == null) - lang = runProps.addNewLang(); + if(docDefaults == null) + docDefaults = ctStyles.addNewDocDefaults(); + if(runProps == null) + runProps = docDefaults.addNewRPrDefault().addNewRPr(); + if(lang == null) + lang = runProps.addNewLang(); - lang.setEastAsia(strEastAsia); - } + lang.setVal(strSpellingLanguage); + lang.setBidi(strSpellingLanguage); + } - /** - * Sets the default font on ctStyles DocDefaults parameter - * @param fonts - */ - public void setDefaultFonts(CTFonts fonts) { - CTDocDefaults docDefaults = null; - CTRPr runProps = null; + /** + * Sets the default East Asia spelling language on ctStyles DocDefaults parameter + * @param strEastAsia + */ + public void setEastAsia(String strEastAsia) { + CTDocDefaults docDefaults = null; + CTRPr runProps = null; + CTLanguage lang = null; - // Just making sure we use the members that have already been defined - if(ctStyles.isSetDocDefaults()) { - docDefaults = ctStyles.getDocDefaults(); - if(docDefaults.isSetRPrDefault()) { - CTRPrDefault RPrDefault = docDefaults.getRPrDefault(); - if(RPrDefault.isSetRPr()) { - runProps = RPrDefault.getRPr(); - } - } - } + // Just making sure we use the members that have already been defined + if(ctStyles.isSetDocDefaults()) { + docDefaults = ctStyles.getDocDefaults(); + if(docDefaults.isSetRPrDefault()) { + CTRPrDefault RPrDefault = docDefaults.getRPrDefault(); + if(RPrDefault.isSetRPr()) { + runProps = RPrDefault.getRPr(); + if(runProps.isSetLang()) + lang = runProps.getLang(); + } + } + } - if(docDefaults == null) - docDefaults = ctStyles.addNewDocDefaults(); - if(runProps == null) - runProps = docDefaults.addNewRPrDefault().addNewRPr(); + if(docDefaults == null) + docDefaults = ctStyles.addNewDocDefaults(); + if(runProps == null) + runProps = docDefaults.addNewRPrDefault().addNewRPr(); + if(lang == null) + lang = runProps.addNewLang(); + + lang.setEastAsia(strEastAsia); + } + + /** + * Sets the default font on ctStyles DocDefaults parameter + * @param fonts + */ + public void setDefaultFonts(CTFonts fonts) { + CTDocDefaults docDefaults = null; + CTRPr runProps = null; + + // Just making sure we use the members that have already been defined + if(ctStyles.isSetDocDefaults()) { + docDefaults = ctStyles.getDocDefaults(); + if(docDefaults.isSetRPrDefault()) { + CTRPrDefault RPrDefault = docDefaults.getRPrDefault(); + if(RPrDefault.isSetRPr()) { + runProps = RPrDefault.getRPr(); + } + } + } + + if(docDefaults == null) + docDefaults = ctStyles.addNewDocDefaults(); + if(runProps == null) + runProps = docDefaults.addNewRPrDefault().addNewRPr(); + + runProps.setRFonts(fonts); + } + + /** + * get the style with the same name + * if this style is not existing, return null + */ + public XWPFStyle getStyleWithSameName(XWPFStyle style){ + for (XWPFStyle ownStyle : listStyle) { + if(ownStyle.hasSameName(style)){ + return ownStyle; + } + } + return null; + } + + /** + * Get the default paragraph style which applies to the document + */ + public XWPFDefaultParagraphStyle getDefaultParagraphStyle() { + return null; // TODO + } - runProps.setRFonts(fonts); - } - - /** - * get the style with the same name - * if this style is not existing, return null - */ - public XWPFStyle getStyleWithSameName(XWPFStyle style){ - for (XWPFStyle ownStyle : listStyle) { - if(ownStyle.hasSameName(style)){ - return ownStyle; - } - } - return null; - } - - /** - * Get the default paragraph style which applies to the document - */ - public XWPFDefaultParagraphStyle getDefaultParagraphStyle() { - return null; // TODO - } - /** * Get the definition of all the Latent Styles */ From 120608b1f92343159a06e90de9cf14c7aad484ef Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 7 May 2015 13:25:47 +0000 Subject: [PATCH 124/301] Start exposing the default paragraph and run styles from XWPFStyles git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678193 13f79535-47bb-0310-9956-ffa450edef68 --- .../usermodel/XWPFDefaultParagraphStyle.java | 4 + .../xwpf/usermodel/XWPFDefaultRunStyle.java | 4 + .../apache/poi/xwpf/usermodel/XWPFStyles.java | 77 +++++++++++++------ .../poi/xwpf/usermodel/TestXWPFStyles.java | 6 +- 4 files changed, 65 insertions(+), 26 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultParagraphStyle.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultParagraphStyle.java index 3d29f7942..9d16e26da 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultParagraphStyle.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultParagraphStyle.java @@ -30,6 +30,10 @@ public class XWPFDefaultParagraphStyle { this.ppr = ppr; } + protected CTPPr getPPr() { + return ppr; + } + public int getSpacingAfter() { if (ppr.isSetSpacing()) return ppr.getSpacing().getAfter().intValue(); diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java index 38de75e34..210a95163 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java @@ -30,6 +30,10 @@ public class XWPFDefaultRunStyle { this.rpr = rpr; } + protected CTRPr getRPr() { + return rpr; + } + public int getFontSize() { if (rpr.isSetSz()) return rpr.getSz().getVal().intValue() / 2; diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java index 06405a63f..cebc63cad 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java @@ -34,6 +34,7 @@ import org.apache.poi.openxml4j.opc.PackagePart; import org.apache.poi.openxml4j.opc.PackageRelationship; import org.apache.xmlbeans.XmlException; import org.apache.xmlbeans.XmlOptions; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPPrDefault; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTStyle; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTStyles; import org.openxmlformats.schemas.wordprocessingml.x2006.main.StylesDocument; @@ -49,9 +50,12 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDocDefaults; * information stored in the {@link XWPFRun} */ public class XWPFStyles extends POIXMLDocumentPart{ - private List listStyle = new ArrayList(); private CTStyles ctStyles; - XWPFLatentStyles latentStyles; + private List listStyle = new ArrayList(); + + private XWPFLatentStyles latentStyles; + private XWPFDefaultRunStyle defaultRunStyle; + private XWPFDefaultParagraphStyle defaultParaStyle; /** * Construct XWPFStyles from a package part @@ -104,7 +108,23 @@ public class XWPFStyles extends POIXMLDocumentPart{ } protected void ensureDocDefaults() { - // TODO Refactor from elsewhere + if (! ctStyles.isSetDocDefaults()) { + ctStyles.addNewDocDefaults(); + } + + CTDocDefaults docDefaults = ctStyles.getDocDefaults(); + if (! docDefaults.isSetPPrDefault()) + docDefaults.addNewPPrDefault(); + if (! docDefaults.isSetRPrDefault()) + docDefaults.addNewRPrDefault(); + + CTPPrDefault pprd = docDefaults.getPPrDefault(); + CTRPrDefault rprd = docDefaults.getRPrDefault(); + if (!pprd.isSetPPr()) pprd.addNewPPr(); + if (!rprd.isSetRPr()) rprd.addNewRPr(); + + defaultRunStyle = new XWPFDefaultRunStyle(rprd.getRPr()); + defaultParaStyle = new XWPFDefaultParagraphStyle(pprd.getPPr()); } /** @@ -119,6 +139,17 @@ public class XWPFStyles extends POIXMLDocumentPart{ for(CTStyle style : ctStyles.getStyleArray()) { listStyle.add(new XWPFStyle(style, this)); } + if (ctStyles.isSetDocDefaults()) { + CTDocDefaults docDefaults = ctStyles.getDocDefaults(); + if (docDefaults.isSetRPrDefault() && docDefaults.getRPrDefault().isSetRPr()) { + defaultRunStyle = new XWPFDefaultRunStyle( + docDefaults.getRPrDefault().getRPr()); + } + if (docDefaults.isSetPPrDefault() && docDefaults.getPPrDefault().isSetPPr()) { + defaultParaStyle = new XWPFDefaultParagraphStyle( + docDefaults.getPPrDefault().getPPr()); + } + } } /** @@ -205,33 +236,20 @@ public class XWPFStyles extends POIXMLDocumentPart{ * @param strSpellingLanguage */ public void setSpellingLanguage(String strSpellingLanguage) { - CTDocDefaults docDefaults = null; - CTRPr runProps = null; + ensureDocDefaults(); + CTLanguage lang = null; - - // Just making sure we use the members that have already been defined - if(ctStyles.isSetDocDefaults()) { - docDefaults = ctStyles.getDocDefaults(); - if(docDefaults.isSetRPrDefault()) { - CTRPrDefault RPrDefault = docDefaults.getRPrDefault(); - if(RPrDefault.isSetRPr()) { - runProps = RPrDefault.getRPr(); - if(runProps.isSetLang()) - lang = runProps.getLang(); - } - } + if (defaultRunStyle.getRPr().isSetLang()) { + lang = defaultRunStyle.getRPr().getLang(); + } else { + lang = defaultRunStyle.getRPr().addNewLang(); } - if(docDefaults == null) - docDefaults = ctStyles.addNewDocDefaults(); - if(runProps == null) - runProps = docDefaults.addNewRPrDefault().addNewRPr(); - if(lang == null) - lang = runProps.addNewLang(); - lang.setVal(strSpellingLanguage); lang.setBidi(strSpellingLanguage); } + + // TODO Refactor the others like this /** * Sets the default East Asia spelling language on ctStyles DocDefaults parameter @@ -305,11 +323,20 @@ public class XWPFStyles extends POIXMLDocumentPart{ return null; } + /** + * Get the default style which applies text runs in the document + */ + public XWPFDefaultRunStyle getDefaultRunStyle() { + ensureDocDefaults(); + return defaultRunStyle; + } + /** * Get the default paragraph style which applies to the document */ public XWPFDefaultParagraphStyle getDefaultParagraphStyle() { - return null; // TODO + ensureDocDefaults(); + return defaultParaStyle; } /** diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java index 578e73f81..c297bc4c3 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java @@ -188,6 +188,10 @@ public class TestXWPFStyles extends TestCase { assertEquals(137, styles.getLatentStyles().getNumberOfStyles()); // Check the default styles - // TODO + assertNotNull(styles.getDefaultRunStyle()); + assertNotNull(styles.getDefaultParagraphStyle()); + + assertEquals(11, styles.getDefaultRunStyle().getFontSize()); + assertEquals(200, styles.getDefaultParagraphStyle().getSpacingAfter()); } } From 8bd0d5b8190e0cfd4871dad06b6a43908e8e5aa4 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 7 May 2015 13:34:03 +0000 Subject: [PATCH 125/301] Refactor common default styles code to use the new helpers git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678197 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/xwpf/usermodel/XWPFStyles.java | 69 +++++-------------- 1 file changed, 17 insertions(+), 52 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java index cebc63cad..8647cc9f7 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java @@ -231,11 +231,7 @@ public class XWPFStyles extends POIXMLDocumentPart{ return usedStyleList; } - /** - * Sets the default spelling language on ctStyles DocDefaults parameter - * @param strSpellingLanguage - */ - public void setSpellingLanguage(String strSpellingLanguage) { + protected CTLanguage getCTLanguage() { ensureDocDefaults(); CTLanguage lang = null; @@ -244,69 +240,38 @@ public class XWPFStyles extends POIXMLDocumentPart{ } else { lang = defaultRunStyle.getRPr().addNewLang(); } - + + return lang; + } + + /** + * Sets the default spelling language on ctStyles DocDefaults parameter + * @param strSpellingLanguage + */ + public void setSpellingLanguage(String strSpellingLanguage) { + CTLanguage lang = getCTLanguage(); lang.setVal(strSpellingLanguage); lang.setBidi(strSpellingLanguage); } - // TODO Refactor the others like this - /** * Sets the default East Asia spelling language on ctStyles DocDefaults parameter * @param strEastAsia */ public void setEastAsia(String strEastAsia) { - CTDocDefaults docDefaults = null; - CTRPr runProps = null; - CTLanguage lang = null; - - // Just making sure we use the members that have already been defined - if(ctStyles.isSetDocDefaults()) { - docDefaults = ctStyles.getDocDefaults(); - if(docDefaults.isSetRPrDefault()) { - CTRPrDefault RPrDefault = docDefaults.getRPrDefault(); - if(RPrDefault.isSetRPr()) { - runProps = RPrDefault.getRPr(); - if(runProps.isSetLang()) - lang = runProps.getLang(); - } - } - } - - if(docDefaults == null) - docDefaults = ctStyles.addNewDocDefaults(); - if(runProps == null) - runProps = docDefaults.addNewRPrDefault().addNewRPr(); - if(lang == null) - lang = runProps.addNewLang(); - + CTLanguage lang = getCTLanguage(); lang.setEastAsia(strEastAsia); } /** * Sets the default font on ctStyles DocDefaults parameter - * @param fonts + * TODO Replace this with specific setters for each type, possibly + * on XWPFDefaultRunStyle */ public void setDefaultFonts(CTFonts fonts) { - CTDocDefaults docDefaults = null; - CTRPr runProps = null; - - // Just making sure we use the members that have already been defined - if(ctStyles.isSetDocDefaults()) { - docDefaults = ctStyles.getDocDefaults(); - if(docDefaults.isSetRPrDefault()) { - CTRPrDefault RPrDefault = docDefaults.getRPrDefault(); - if(RPrDefault.isSetRPr()) { - runProps = RPrDefault.getRPr(); - } - } - } - - if(docDefaults == null) - docDefaults = ctStyles.addNewDocDefaults(); - if(runProps == null) - runProps = docDefaults.addNewRPrDefault().addNewRPr(); - + ensureDocDefaults(); + + CTRPr runProps = defaultRunStyle.getRPr(); runProps.setRFonts(fonts); } From c3e1267a4daf3264cec447621b9754f6a2cf15fe Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Fri, 8 May 2015 10:32:26 +0000 Subject: [PATCH 126/301] Make source-build from a fresh repository work, compile-lib was not created. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678322 13f79535-47bb-0310-9956-ffa450edef68 --- build.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/build.xml b/build.xml index 43747613c..9509ed3db 100644 --- a/build.xml +++ b/build.xml @@ -406,6 +406,7 @@ under the License. + From 6cff7275c41976965f787e8809588025a20533be Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Fri, 8 May 2015 18:46:28 +0000 Subject: [PATCH 127/301] #57907 Fix DOAP syntax, and add missing final releases git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678424 13f79535-47bb-0310-9956-ffa450edef68 --- doap_POI.rdf | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/doap_POI.rdf b/doap_POI.rdf index e0123c2a8..ce364249d 100644 --- a/doap_POI.rdf +++ b/doap_POI.rdf @@ -19,22 +19,49 @@ Java + + + Apache POI 3.11 + 2014-12-21 + 3.11 + + + + + Apache POI 3.10.1 + 2014-08-18 + 3.10.1 + + + + + Apache POI 3.10 + 2014-02-08 + 3.10 + + Apache POI 3.9 2012-12-03 3.9 + + Apache POI 3.8 2012-03-26 3.8 + + Apache POI 3.7 2010-10-29 3.7 + + Apache POI 3.6 2009-12-14 From b2710c996160adef48964f6a2d330559df52e772 Mon Sep 17 00:00:00 2001 From: Andreas Beeker Date: Sat, 9 May 2015 15:42:39 +0000 Subject: [PATCH 128/301] external pinning for 3.12 (RC3) git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678498 13f79535-47bb-0310-9956-ffa450edef68 From 4d7ff880bfe2ed71c4d58948b87e8f48355da9e7 Mon Sep 17 00:00:00 2001 From: Andreas Beeker Date: Sat, 9 May 2015 17:35:52 +0000 Subject: [PATCH 129/301] external unpinning git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678508 13f79535-47bb-0310-9956-ffa450edef68 From 08bd34b20f8477fe4a3d436f358a83559f2094ce Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 11 May 2015 06:29:17 +0000 Subject: [PATCH 130/301] Begin making NPOIFS the default #56791 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678677 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/poifs/filesystem/DirectoryNode.java | 25 +- .../poifs/filesystem/OPOIFSFileSystem.java | 607 ++++++++++++++++++ .../poi/poifs/filesystem/POIFSFileSystem.java | 1 + 3 files changed, 624 insertions(+), 9 deletions(-) create mode 100644 src/java/org/apache/poi/poifs/filesystem/OPOIFSFileSystem.java diff --git a/src/java/org/apache/poi/poifs/filesystem/DirectoryNode.java b/src/java/org/apache/poi/poifs/filesystem/DirectoryNode.java index 8d39bbfa2..c1d4a25b0 100644 --- a/src/java/org/apache/poi/poifs/filesystem/DirectoryNode.java +++ b/src/java/org/apache/poi/poifs/filesystem/DirectoryNode.java @@ -37,8 +37,6 @@ import org.apache.poi.poifs.property.Property; /** * Simple implementation of DirectoryEntry - * - * @author Marc Johnson (mjohnson at apache dot org) */ public class DirectoryNode extends EntryNode @@ -50,9 +48,9 @@ public class DirectoryNode // Our list of entries, kept sorted to preserve order private ArrayList _entries; - // Only one of these two will exist - // the POIFSFileSystem we belong to - private POIFSFileSystem _ofilesystem; + // Only one of these two will exist + // the OPOIFSFileSystem we belong to + private OPOIFSFileSystem _ofilesystem; // the NPOIFSFileSytem we belong to private NPOIFSFileSystem _nfilesystem; @@ -64,11 +62,11 @@ public class DirectoryNode * is intended strictly for the internal use of this package * * @param property the DirectoryProperty for this DirectoryEntry - * @param filesystem the POIFSFileSystem we belong to + * @param filesystem the OPOIFSFileSystem we belong to * @param parent the parent of this entry */ DirectoryNode(final DirectoryProperty property, - final POIFSFileSystem filesystem, + final OPOIFSFileSystem filesystem, final DirectoryNode parent) { this(property, parent, filesystem, (NPOIFSFileSystem)null); @@ -86,12 +84,12 @@ public class DirectoryNode final NPOIFSFileSystem nfilesystem, final DirectoryNode parent) { - this(property, parent, (POIFSFileSystem)null, nfilesystem); + this(property, parent, (OPOIFSFileSystem)null, nfilesystem); } private DirectoryNode(final DirectoryProperty property, final DirectoryNode parent, - final POIFSFileSystem ofilesystem, + final OPOIFSFileSystem ofilesystem, final NPOIFSFileSystem nfilesystem) { super(property, parent); @@ -147,8 +145,17 @@ public class DirectoryNode /** * @return the filesystem that this belongs to + * TODO Temporary workaround during #56791 */ public POIFSFileSystem getFileSystem() + { + return (POIFSFileSystem)_ofilesystem; + } + + /** + * @return the filesystem that this belongs to + */ + public OPOIFSFileSystem getOFileSystem() { return _ofilesystem; } diff --git a/src/java/org/apache/poi/poifs/filesystem/OPOIFSFileSystem.java b/src/java/org/apache/poi/poifs/filesystem/OPOIFSFileSystem.java new file mode 100644 index 000000000..b95c89919 --- /dev/null +++ b/src/java/org/apache/poi/poifs/filesystem/OPOIFSFileSystem.java @@ -0,0 +1,607 @@ + +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + + +package org.apache.poi.poifs.filesystem; + +import java.io.ByteArrayInputStream; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + +import org.apache.poi.poifs.common.POIFSBigBlockSize; +import org.apache.poi.poifs.common.POIFSConstants; +import org.apache.poi.poifs.dev.POIFSViewable; +import org.apache.poi.poifs.property.DirectoryProperty; +import org.apache.poi.poifs.property.Property; +import org.apache.poi.poifs.property.PropertyTable; +import org.apache.poi.poifs.storage.BATBlock; +import org.apache.poi.poifs.storage.BlockAllocationTableReader; +import org.apache.poi.poifs.storage.BlockAllocationTableWriter; +import org.apache.poi.poifs.storage.BlockList; +import org.apache.poi.poifs.storage.BlockWritable; +import org.apache.poi.poifs.storage.HeaderBlock; +import org.apache.poi.poifs.storage.HeaderBlockConstants; +import org.apache.poi.poifs.storage.HeaderBlockWriter; +import org.apache.poi.poifs.storage.RawDataBlockList; +import org.apache.poi.poifs.storage.SmallBlockTableReader; +import org.apache.poi.poifs.storage.SmallBlockTableWriter; +import org.apache.poi.util.CloseIgnoringInputStream; +import org.apache.poi.util.IOUtils; +import org.apache.poi.util.LongField; +import org.apache.poi.util.POILogFactory; +import org.apache.poi.util.POILogger; + +/** + *

This is the main class of the POIFS system; it manages the entire + * life cycle of the filesystem.

+ *

This is the older version, which uses more memory, and doesn't + * support in-place writes.

+ */ +public class OPOIFSFileSystem + implements POIFSViewable +{ + private static final POILogger _logger = + POILogFactory.getLogger(OPOIFSFileSystem.class); + + /** + * Convenience method for clients that want to avoid the auto-close behaviour of the constructor. + */ + public static InputStream createNonClosingInputStream(InputStream is) { + return new CloseIgnoringInputStream(is); + } + + private PropertyTable _property_table; + private List _documents; + private DirectoryNode _root; + + /** + * What big block size the file uses. Most files + * use 512 bytes, but a few use 4096 + */ + private POIFSBigBlockSize bigBlockSize = + POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS; + + /** + * Constructor, intended for writing + */ + public OPOIFSFileSystem() + { + HeaderBlock header_block = new HeaderBlock(bigBlockSize); + _property_table = new PropertyTable(header_block); + _documents = new ArrayList(); + _root = null; + } + + /** + * Create a OPOIFSFileSystem from an InputStream. Normally the stream is read until + * EOF. The stream is always closed.

+ * + * Some streams are usable after reaching EOF (typically those that return true + * for markSupported()). In the unlikely case that the caller has such a stream + * and needs to use it after this constructor completes, a work around is to wrap the + * stream in order to trap the close() call. A convenience method ( + * createNonClosingInputStream()) has been provided for this purpose: + *

+     * InputStream wrappedStream = OPOIFSFileSystem.createNonClosingInputStream(is);
+     * HSSFWorkbook wb = new HSSFWorkbook(wrappedStream);
+     * is.reset();
+     * doSomethingElse(is);
+     * 
+ * Note also the special case of ByteArrayInputStream for which the close() + * method does nothing. + *
+     * ByteArrayInputStream bais = ...
+     * HSSFWorkbook wb = new HSSFWorkbook(bais); // calls bais.close() !
+     * bais.reset(); // no problem
+     * doSomethingElse(bais);
+     * 
+ * + * @param stream the InputStream from which to read the data + * + * @exception IOException on errors reading, or on invalid data + */ + + public OPOIFSFileSystem(InputStream stream) + throws IOException + { + this(); + boolean success = false; + + HeaderBlock header_block; + RawDataBlockList data_blocks; + try { + // read the header block from the stream + header_block = new HeaderBlock(stream); + bigBlockSize = header_block.getBigBlockSize(); + + // read the rest of the stream into blocks + data_blocks = new RawDataBlockList(stream, bigBlockSize); + success = true; + } finally { + closeInputStream(stream, success); + } + + + // set up the block allocation table (necessary for the + // data_blocks to be manageable + new BlockAllocationTableReader(header_block.getBigBlockSize(), + header_block.getBATCount(), + header_block.getBATArray(), + header_block.getXBATCount(), + header_block.getXBATIndex(), + data_blocks); + + // get property table from the document + PropertyTable properties = + new PropertyTable(header_block, data_blocks); + + // init documents + processProperties( + SmallBlockTableReader.getSmallDocumentBlocks( + bigBlockSize, data_blocks, properties.getRoot(), + header_block.getSBATStart() + ), + data_blocks, + properties.getRoot().getChildren(), + null, + header_block.getPropertyStart() + ); + + // For whatever reason CLSID of root is always 0. + getRoot().setStorageClsid(properties.getRoot().getStorageClsid()); + } + /** + * @param stream the stream to be closed + * @param success false if an exception is currently being thrown in the calling method + */ + private void closeInputStream(InputStream stream, boolean success) { + + if(stream.markSupported() && !(stream instanceof ByteArrayInputStream)) { + String msg = "POIFS is closing the supplied input stream of type (" + + stream.getClass().getName() + ") which supports mark/reset. " + + "This will be a problem for the caller if the stream will still be used. " + + "If that is the case the caller should wrap the input stream to avoid this close logic. " + + "This warning is only temporary and will not be present in future versions of POI."; + _logger.log(POILogger.WARN, msg); + } + try { + stream.close(); + } catch (IOException e) { + if(success) { + throw new RuntimeException(e); + } + // else not success? Try block did not complete normally + // just print stack trace and leave original ex to be thrown + e.printStackTrace(); + } + } + + /** + * Checks that the supplied InputStream (which MUST + * support mark and reset, or be a PushbackInputStream) + * has a POIFS (OLE2) header at the start of it. + * If your InputStream does not support mark / reset, + * then wrap it in a PushBackInputStream, then be + * sure to always use that, and not the original! + * @param inp An InputStream which supports either mark/reset, or is a PushbackInputStream + */ + public static boolean hasPOIFSHeader(InputStream inp) throws IOException { + // We want to peek at the first 8 bytes + byte[] header = IOUtils.peekFirst8Bytes(inp); + return hasPOIFSHeader(header); + } + /** + * Checks if the supplied first 8 bytes of a stream / file + * has a POIFS (OLE2) header. + */ + public static boolean hasPOIFSHeader(byte[] header8Bytes) { + LongField signature = new LongField(HeaderBlockConstants._signature_offset, header8Bytes); + + // Did it match the signature? + return (signature.get() == HeaderBlockConstants._signature); + } + + /** + * Create a new document to be added to the root directory + * + * @param stream the InputStream from which the document's data + * will be obtained + * @param name the name of the new POIFSDocument + * + * @return the new DocumentEntry + * + * @exception IOException on error creating the new POIFSDocument + */ + + public DocumentEntry createDocument(final InputStream stream, + final String name) + throws IOException + { + return getRoot().createDocument(name, stream); + } + + /** + * create a new DocumentEntry in the root entry; the data will be + * provided later + * + * @param name the name of the new DocumentEntry + * @param size the size of the new DocumentEntry + * @param writer the writer of the new DocumentEntry + * + * @return the new DocumentEntry + * + * @exception IOException + */ + + public DocumentEntry createDocument(final String name, final int size, + final POIFSWriterListener writer) + throws IOException + { + return getRoot().createDocument(name, size, writer); + } + + /** + * create a new DirectoryEntry in the root directory + * + * @param name the name of the new DirectoryEntry + * + * @return the new DirectoryEntry + * + * @exception IOException on name duplication + */ + + public DirectoryEntry createDirectory(final String name) + throws IOException + { + return getRoot().createDirectory(name); + } + + /** + * Write the filesystem out + * + * @param stream the OutputStream to which the filesystem will be + * written + * + * @exception IOException thrown on errors writing to the stream + */ + + public void writeFilesystem(final OutputStream stream) + throws IOException + { + + // get the property table ready + _property_table.preWrite(); + + // create the small block store, and the SBAT + SmallBlockTableWriter sbtw = + new SmallBlockTableWriter(bigBlockSize, _documents, _property_table.getRoot()); + + // create the block allocation table + BlockAllocationTableWriter bat = + new BlockAllocationTableWriter(bigBlockSize); + + // create a list of BATManaged objects: the documents plus the + // property table and the small block table + List bm_objects = new ArrayList(); + + bm_objects.addAll(_documents); + bm_objects.add(_property_table); + bm_objects.add(sbtw); + bm_objects.add(sbtw.getSBAT()); + + // walk the list, allocating space for each and assigning each + // a starting block number + Iterator iter = bm_objects.iterator(); + + while (iter.hasNext()) + { + BATManaged bmo = ( BATManaged ) iter.next(); + int block_count = bmo.countBlocks(); + + if (block_count != 0) + { + bmo.setStartBlock(bat.allocateSpace(block_count)); + } + else + { + + // Either the BATManaged object is empty or its data + // is composed of SmallBlocks; in either case, + // allocating space in the BAT is inappropriate + } + } + + // allocate space for the block allocation table and take its + // starting block + int batStartBlock = bat.createBlocks(); + + // get the extended block allocation table blocks + HeaderBlockWriter header_block_writer = new HeaderBlockWriter(bigBlockSize); + BATBlock[] xbat_blocks = + header_block_writer.setBATBlocks(bat.countBlocks(), + batStartBlock); + + // set the property table start block + header_block_writer.setPropertyStart(_property_table.getStartBlock()); + + // set the small block allocation table start block + header_block_writer.setSBATStart(sbtw.getSBAT().getStartBlock()); + + // set the small block allocation table block count + header_block_writer.setSBATBlockCount(sbtw.getSBATBlockCount()); + + // the header is now properly initialized. Make a list of + // writers (the header block, followed by the documents, the + // property table, the small block store, the small block + // allocation table, the block allocation table, and the + // extended block allocation table blocks) + List writers = new ArrayList(); + + writers.add(header_block_writer); + writers.addAll(_documents); + writers.add(_property_table); + writers.add(sbtw); + writers.add(sbtw.getSBAT()); + writers.add(bat); + for (int j = 0; j < xbat_blocks.length; j++) + { + writers.add(xbat_blocks[ j ]); + } + + // now, write everything out + iter = writers.iterator(); + while (iter.hasNext()) + { + BlockWritable writer = ( BlockWritable ) iter.next(); + + writer.writeBlocks(stream); + } + } + + /** + * read in a file and write it back out again + * + * @param args names of the files; arg[ 0 ] is the input file, + * arg[ 1 ] is the output file + * + * @exception IOException + */ + + public static void main(String args[]) + throws IOException + { + if (args.length != 2) + { + System.err.println( + "two arguments required: input filename and output filename"); + System.exit(1); + } + FileInputStream istream = new FileInputStream(args[ 0 ]); + FileOutputStream ostream = new FileOutputStream(args[ 1 ]); + + new OPOIFSFileSystem(istream).writeFilesystem(ostream); + istream.close(); + ostream.close(); + } + + /** + * get the root entry + * + * @return the root entry + */ + + public DirectoryNode getRoot() + { + if (_root == null) + { + _root = new DirectoryNode(_property_table.getRoot(), this, null); + } + return _root; + } + + /** + * open a document in the root entry's list of entries + * + * @param documentName the name of the document to be opened + * + * @return a newly opened DocumentInputStream + * + * @exception IOException if the document does not exist or the + * name is that of a DirectoryEntry + */ + + public DocumentInputStream createDocumentInputStream( + final String documentName) + throws IOException + { + return getRoot().createDocumentInputStream(documentName); + } + + /** + * add a new POIFSDocument + * + * @param document the POIFSDocument being added + */ + + void addDocument(final POIFSDocument document) + { + _documents.add(document); + _property_table.addProperty(document.getDocumentProperty()); + } + + /** + * add a new DirectoryProperty + * + * @param directory the DirectoryProperty being added + */ + + void addDirectory(final DirectoryProperty directory) + { + _property_table.addProperty(directory); + } + + /** + * remove an entry + * + * @param entry to be removed + */ + + void remove(EntryNode entry) + { + _property_table.removeProperty(entry.getProperty()); + if (entry.isDocumentEntry()) + { + _documents.remove((( DocumentNode ) entry).getDocument()); + } + } + + private void processProperties(final BlockList small_blocks, + final BlockList big_blocks, + final Iterator properties, + final DirectoryNode dir, + final int headerPropertiesStartAt) + throws IOException + { + while (properties.hasNext()) + { + Property property = properties.next(); + String name = property.getName(); + DirectoryNode parent = (dir == null) + ? (( DirectoryNode ) getRoot()) + : dir; + + if (property.isDirectory()) + { + DirectoryNode new_dir = + ( DirectoryNode ) parent.createDirectory(name); + + new_dir.setStorageClsid( property.getStorageClsid() ); + + processProperties( + small_blocks, big_blocks, + (( DirectoryProperty ) property).getChildren(), + new_dir, headerPropertiesStartAt); + } + else + { + int startBlock = property.getStartBlock(); + int size = property.getSize(); + POIFSDocument document = null; + + if (property.shouldUseSmallBlocks()) + { + document = + new POIFSDocument(name, + small_blocks.fetchBlocks(startBlock, headerPropertiesStartAt), + size); + } + else + { + document = + new POIFSDocument(name, + big_blocks.fetchBlocks(startBlock, headerPropertiesStartAt), + size); + } + parent.createDocument(document); + } + } + } + + /* ********** START begin implementation of POIFSViewable ********** */ + + /** + * Get an array of objects, some of which may implement + * POIFSViewable + * + * @return an array of Object; may not be null, but may be empty + */ + + public Object [] getViewableArray() + { + if (preferArray()) + { + return (( POIFSViewable ) getRoot()).getViewableArray(); + } + return new Object[ 0 ]; + } + + /** + * Get an Iterator of objects, some of which may implement + * POIFSViewable + * + * @return an Iterator; may not be null, but may have an empty + * back end store + */ + + public Iterator getViewableIterator() + { + if (!preferArray()) + { + return (( POIFSViewable ) getRoot()).getViewableIterator(); + } + return Collections.emptyList().iterator(); + } + + /** + * Give viewers a hint as to whether to call getViewableArray or + * getViewableIterator + * + * @return true if a viewer should call getViewableArray, false if + * a viewer should call getViewableIterator + */ + + public boolean preferArray() + { + return (( POIFSViewable ) getRoot()).preferArray(); + } + + /** + * Provides a short description of the object, to be used when a + * POIFSViewable object has not provided its contents. + * + * @return short description + */ + + public String getShortDescription() + { + return "POIFS FileSystem"; + } + + /** + * @return The Big Block size, normally 512 bytes, sometimes 4096 bytes + */ + public int getBigBlockSize() { + return bigBlockSize.getBigBlockSize(); + } + /** + * @return The Big Block size, normally 512 bytes, sometimes 4096 bytes + */ + public POIFSBigBlockSize getBigBlockSizeDetails() { + return bigBlockSize; + } + + /* ********** END begin implementation of POIFSViewable ********** */ +} // end public class OPOIFSFileSystem + diff --git a/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java b/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java index f1d73d898..c6223cf24 100644 --- a/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java +++ b/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java @@ -61,6 +61,7 @@ import org.apache.poi.util.POILogger; */ public class POIFSFileSystem + extends OPOIFSFileSystem // TODO Temporary workaround during #56791 implements POIFSViewable { private static final POILogger _logger = From 252d7cc81a7d2d2df842c388b5437c66330cd84b Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 11 May 2015 14:26:01 +0000 Subject: [PATCH 131/301] #56791 Default to NPOIFS git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678759 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/poi/POIDocument.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/java/org/apache/poi/POIDocument.java b/src/java/org/apache/poi/POIDocument.java index 950e5eb3e..d591def0b 100644 --- a/src/java/org/apache/poi/POIDocument.java +++ b/src/java/org/apache/poi/POIDocument.java @@ -182,7 +182,7 @@ public abstract class POIDocument { if (encryptionInfo != null) { try { InputStream is = encryptionInfo.getDecryptor().getDataStream(directory); - POIFSFileSystem poifs = new POIFSFileSystem(is); + NPOIFSFileSystem poifs = new NPOIFSFileSystem(is); is.close(); dirNode = poifs.getRoot(); } catch (Exception e) { From 2df3bef375db985db85d5ed6c7275e11172bca6b Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 11 May 2015 14:26:39 +0000 Subject: [PATCH 132/301] #56791 Remove long-deprecated OPOIFS related methods git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678760 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/poi/POIDocument.java | 51 ------------------------ 1 file changed, 51 deletions(-) diff --git a/src/java/org/apache/poi/POIDocument.java b/src/java/org/apache/poi/POIDocument.java index d591def0b..bcef60054 100644 --- a/src/java/org/apache/poi/POIDocument.java +++ b/src/java/org/apache/poi/POIDocument.java @@ -288,55 +288,4 @@ public abstract class POIDocument { * @throws IOException thrown on errors writing to the stream */ public abstract void write(OutputStream out) throws IOException; - - /** - * Copies nodes from one POIFS to the other minus the excepts - * @param source is the source POIFS to copy from - * @param target is the target POIFS to copy to - * @param excepts is a list of Strings specifying what nodes NOT to copy - * - * @throws IOException thrown on errors writing to the target file system. - * - * @deprecated Use {@link EntryUtils#copyNodes(DirectoryEntry, DirectoryEntry, List)} instead - */ - @Deprecated - protected void copyNodes( POIFSFileSystem source, POIFSFileSystem target, - List excepts ) throws IOException { - EntryUtils.copyNodes( source, target, excepts ); - } - - /** - * Copies nodes from one POIFS to the other minus the excepts - * @param sourceRoot is the source POIFS to copy from - * @param targetRoot is the target POIFS to copy to - * @param excepts is a list of Strings specifying what nodes NOT to copy - * - * @throws IOException thrown on errors writing to the target directory node. - * - * @deprecated Use {@link EntryUtils#copyNodes(DirectoryEntry, DirectoryEntry, List)} instead - */ - @Deprecated - protected void copyNodes( DirectoryNode sourceRoot, - DirectoryNode targetRoot, List excepts ) throws IOException - { - EntryUtils.copyNodes( sourceRoot, targetRoot, excepts ); - } - - /** - * Copies an Entry into a target POIFS directory, recursively - * - * @param entry the entry to copy from - * @param target the entry to write to - * - * @throws IOException thrown on errors writing to the target directory entry. - * - * @deprecated Use {@link EntryUtils#copyNodeRecursively(Entry, DirectoryEntry)} instead - */ - @Internal - @Deprecated - protected void copyNodeRecursively( Entry entry, DirectoryEntry target ) - throws IOException - { - EntryUtils.copyNodeRecursively( entry, target ); - } } From 89890a247a8322a8308ecdb78fa786bce30d22b3 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 11 May 2015 14:58:43 +0000 Subject: [PATCH 133/301] Add a (disabled) failing unit test on heavily nested NPOIFS copies, found working on #56791 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678764 13f79535-47bb-0310-9956-ffa450edef68 --- .../poifs/filesystem/TestFileSystemBugs.java | 54 +++++++++++++++++-- 1 file changed, 50 insertions(+), 4 deletions(-) diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java b/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java index f6540b4d3..fc3d4a958 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java @@ -17,6 +17,9 @@ package org.apache.poi.poifs.filesystem; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.InputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -30,6 +33,7 @@ import org.apache.poi.POIDataSamples; */ public final class TestFileSystemBugs extends TestCase { protected static POIDataSamples _samples = POIDataSamples.getPOIFSInstance(); + protected static POIDataSamples _ssSamples = POIDataSamples.getSpreadSheetInstance(); protected List openedFSs; protected void tearDown() throws Exception { @@ -45,15 +49,25 @@ public final class TestFileSystemBugs extends TestCase { openedFSs = null; } protected DirectoryNode[] openSample(String name, boolean oldFails) throws Exception { - NPOIFSFileSystem nfs = new NPOIFSFileSystem( - _samples.openResourceAsStream(name)); + return openSamples(new InputStream[] { + _samples.openResourceAsStream(name), + _samples.openResourceAsStream(name) + }, oldFails); + } + protected DirectoryNode[] openSSSample(String name, boolean oldFails) throws Exception { + return openSamples(new InputStream[] { + _ssSamples.openResourceAsStream(name), + _ssSamples.openResourceAsStream(name) + }, oldFails); + } + protected DirectoryNode[] openSamples(InputStream[] inps, boolean oldFails) throws Exception { + NPOIFSFileSystem nfs = new NPOIFSFileSystem(inps[0]); if (openedFSs == null) openedFSs = new ArrayList(); openedFSs.add(nfs); POIFSFileSystem ofs = null; try { - ofs = new POIFSFileSystem( - _samples.openResourceAsStream(name)); + ofs = new POIFSFileSystem(inps[1]); if (oldFails) fail("POIFSFileSystem should have failed but didn't"); } catch (Exception e) { if (!oldFails) throw e; @@ -107,4 +121,36 @@ public final class TestFileSystemBugs extends TestCase { assertEquals(42, root.getEntryCount()); } } + + /** + * With heavily nested documents, ensure we still re-write the same + */ + public void IGNOREDtestHeavilyNestedReWrite() throws Exception { + for (DirectoryNode root : openSSSample("ex42570-20305.xls", false)) { + // TODO Record the structure + + // Prepare to copy + DirectoryNode dest; + if (root.getNFileSystem() != null) { + dest = (new NPOIFSFileSystem()).getRoot(); + } else { + dest = (new OPOIFSFileSystem()).getRoot(); + } + + // Copy over + EntryUtils.copyNodes(root, dest); + + // Re-load, always as NPOIFS + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + if (root.getNFileSystem() != null) { + root.getNFileSystem().writeFilesystem(baos); + } else { + root.getOFileSystem().writeFilesystem(baos); + } + NPOIFSFileSystem read = new NPOIFSFileSystem( + new ByteArrayInputStream(baos.toByteArray())); + + // TODO Check the structure matches + } + } } From 794e2b95fa8cf614160feb4204e67b0c9b471958 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 11 May 2015 15:20:42 +0000 Subject: [PATCH 134/301] More NPOIFS ministore tests git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678767 13f79535-47bb-0310-9956-ffa450edef68 --- .../poifs/filesystem/TestNPOIFSMiniStore.java | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java b/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java index c875c5299..044542290 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java @@ -17,6 +17,7 @@ package org.apache.poi.poifs.filesystem; +import java.io.ByteArrayInputStream; import java.nio.ByteBuffer; import java.util.Iterator; @@ -332,4 +333,51 @@ public final class TestNPOIFSMiniStore extends TestCase { fs.close(); } + + public void testCreateMiniStoreFirst() throws Exception { + NPOIFSFileSystem fs = new NPOIFSFileSystem(); + NPOIFSMiniStore ministore = fs.getMiniStore(); + + // Initially has BAT + Properties but nothing else + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(0)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(1)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(2)); + // Ministore has no blocks, so can't iterate until used + try { + ministore.getNextBlock(0); + } catch (IndexOutOfBoundsException e) {} + + // Write a very small new document, will populate the ministore for us + byte[] data = new byte[8]; + for (int i=0; i Date: Mon, 11 May 2015 15:27:59 +0000 Subject: [PATCH 135/301] Disabled NPOIFS unit test - problem with 0 length entries discovered working on #56791 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678769 13f79535-47bb-0310-9956-ffa450edef68 --- .../filesystem/TestNPOIFSFileSystem.java | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java b/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java index b5793a266..b4e3b79af 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java @@ -41,6 +41,7 @@ import org.apache.poi.poifs.property.Property; import org.apache.poi.poifs.property.RootProperty; import org.apache.poi.poifs.storage.HeaderBlock; import org.apache.poi.util.IOUtils; +import org.junit.Ignore; import org.junit.Test; /** @@ -1305,6 +1306,66 @@ public final class TestNPOIFSFileSystem { normDoc = (DocumentEntry)testDir.getEntry("Normal4106"); assertContentsMatches(main4106, normDoc); } + + @Ignore + @Test + public void writeZeroLengthEntries() throws Exception { + NPOIFSFileSystem fs = new NPOIFSFileSystem(); + DirectoryNode testDir = fs.getRoot(); + DocumentEntry miniDoc; + DocumentEntry normDoc; + DocumentEntry emptyDoc; + + // Add mini and normal sized entries to start + byte[] mini2 = new byte[] { -42, 0, -1, -2, -3, -4, -42 }; + testDir.createDocument("Mini2", new ByteArrayInputStream(mini2)); + + // Add to the main stream + byte[] main4106 = new byte[4106]; + main4106[0] = 41; + main4106[4105] = 42; + testDir.createDocument("Normal4106", new ByteArrayInputStream(main4106)); + + // Now add some empty ones + byte[] empty = new byte[0]; + testDir.createDocument("empty-1", new ByteArrayInputStream(empty)); + testDir.createDocument("empty-2", new ByteArrayInputStream(empty)); + testDir.createDocument("empty-3", new ByteArrayInputStream(empty)); + + // Check + miniDoc = (DocumentEntry)testDir.getEntry("Mini2"); + assertContentsMatches(mini2, miniDoc); + + normDoc = (DocumentEntry)testDir.getEntry("Normal4106"); + assertContentsMatches(main4106, normDoc); + + emptyDoc = (DocumentEntry)testDir.getEntry("empty-1"); + assertContentsMatches(empty, emptyDoc); + + emptyDoc = (DocumentEntry)testDir.getEntry("empty-2"); + assertContentsMatches(empty, emptyDoc); + + emptyDoc = (DocumentEntry)testDir.getEntry("empty-3"); + assertContentsMatches(empty, emptyDoc); + + // Save and re-check + fs = writeOutAndReadBack(fs); + + miniDoc = (DocumentEntry)testDir.getEntry("Mini2"); + assertContentsMatches(mini2, miniDoc); + + normDoc = (DocumentEntry)testDir.getEntry("Normal4106"); + assertContentsMatches(main4106, normDoc); + + emptyDoc = (DocumentEntry)testDir.getEntry("empty-1"); + assertContentsMatches(empty, emptyDoc); + + emptyDoc = (DocumentEntry)testDir.getEntry("empty-2"); + assertContentsMatches(empty, emptyDoc); + + emptyDoc = (DocumentEntry)testDir.getEntry("empty-3"); + assertContentsMatches(empty, emptyDoc); + } /** * Test that we can read a file with NPOIFS, create a new NPOIFS instance, From 1945dfc00c725a786432405dfa5357a757286617 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 11 May 2015 17:53:59 +0000 Subject: [PATCH 136/301] Correct zero byte entry support in NPOIFS git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678778 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/poifs/filesystem/NPOIFSDocument.java | 6 +++++- .../apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java | 3 +-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/java/org/apache/poi/poifs/filesystem/NPOIFSDocument.java b/src/java/org/apache/poi/poifs/filesystem/NPOIFSDocument.java index 7846ed0df..9492c2598 100644 --- a/src/java/org/apache/poi/poifs/filesystem/NPOIFSDocument.java +++ b/src/java/org/apache/poi/poifs/filesystem/NPOIFSDocument.java @@ -143,8 +143,12 @@ public final class NPOIFSDocument implements POIFSViewable { os.write(buf, 0, readBytes); } - os.close(); + // If this is an empty document, write a single byte + // to force a block allocation for this document + if (length == 0) os.write(0); + // Tidy and return the length + os.close(); return length; } diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java b/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java index b4e3b79af..144437483 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java @@ -41,7 +41,6 @@ import org.apache.poi.poifs.property.Property; import org.apache.poi.poifs.property.RootProperty; import org.apache.poi.poifs.storage.HeaderBlock; import org.apache.poi.util.IOUtils; -import org.junit.Ignore; import org.junit.Test; /** @@ -1307,7 +1306,6 @@ public final class TestNPOIFSFileSystem { assertContentsMatches(main4106, normDoc); } - @Ignore @Test public void writeZeroLengthEntries() throws Exception { NPOIFSFileSystem fs = new NPOIFSFileSystem(); @@ -1350,6 +1348,7 @@ public final class TestNPOIFSFileSystem { // Save and re-check fs = writeOutAndReadBack(fs); + testDir = fs.getRoot(); miniDoc = (DocumentEntry)testDir.getEntry("Mini2"); assertContentsMatches(mini2, miniDoc); From bd6012d9b9d5467ec73a1dce1cb6284b0e017e0d Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 11 May 2015 18:00:45 +0000 Subject: [PATCH 137/301] Add a deep re-write NPOIFS test git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678781 13f79535-47bb-0310-9956-ffa450edef68 --- .../poifs/filesystem/TestFileSystemBugs.java | 36 +++++++++++++++++-- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java b/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java index fc3d4a958..3de3ccb8d 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java @@ -21,8 +21,10 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.util.ArrayList; +import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Map; import junit.framework.TestCase; @@ -125,9 +127,11 @@ public final class TestFileSystemBugs extends TestCase { /** * With heavily nested documents, ensure we still re-write the same */ - public void IGNOREDtestHeavilyNestedReWrite() throws Exception { + public void testHeavilyNestedReWrite() throws Exception { for (DirectoryNode root : openSSSample("ex42570-20305.xls", false)) { - // TODO Record the structure + // Record the structure + Map entries = new HashMap(); + fetchSizes("/", root, entries); // Prepare to copy DirectoryNode dest; @@ -150,7 +154,33 @@ public final class TestFileSystemBugs extends TestCase { NPOIFSFileSystem read = new NPOIFSFileSystem( new ByteArrayInputStream(baos.toByteArray())); - // TODO Check the structure matches + // Check the structure matches + checkSizes("/", read.getRoot(), entries); + } + } + private void fetchSizes(String path, DirectoryNode dir, Map entries) { + for (Entry entry : dir) { + if (entry instanceof DirectoryNode) { + String ourPath = path + entry.getName() + "/"; + entries.put(ourPath, -1); + fetchSizes(ourPath, (DirectoryNode)entry, entries); + } else { + DocumentNode doc = (DocumentNode)entry; + entries.put(path+entry.getName(), doc.getSize()); + } + } + } + private void checkSizes(String path, DirectoryNode dir, Map entries) { + for (Entry entry : dir) { + if (entry instanceof DirectoryNode) { + String ourPath = path + entry.getName() + "/"; + assertTrue(entries.containsKey(ourPath)); + assertEquals(-1, entries.get(ourPath).intValue()); + checkSizes(ourPath, (DirectoryNode)entry, entries); + } else { + DocumentNode doc = (DocumentNode)entry; + assertEquals(entries.get(path+entry.getName()).intValue(), doc.getSize()); + } } } } From a89a9d673a7e7b2557a0b58acd34e8702a10203e Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 11 May 2015 18:04:30 +0000 Subject: [PATCH 138/301] #56791 More updates from OPOIFS to NPOIFS git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678783 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/poi/POIDocument.java | 57 ++++++++++--------- .../org/apache/poi/POIOLE2TextExtractor.java | 14 ----- .../poi/hpsf/HPSFPropertiesOnlyDocument.java | 2 +- .../poi/hssf/usermodel/HSSFWorkbook.java | 2 +- .../poi/poifs/filesystem/EntryUtils.java | 39 +++++++++++-- .../org/apache/poi/hslf/HSLFSlideShow.java | 12 ++-- .../poi/hslf/record/CurrentUserAtom.java | 14 ++--- .../src/org/apache/poi/hwpf/HWPFDocument.java | 4 +- .../apache/poi/TestPOIDocumentScratchpad.java | 4 +- .../org/apache/poi/TestPOIDocumentMain.java | 5 +- 10 files changed, 89 insertions(+), 64 deletions(-) diff --git a/src/java/org/apache/poi/POIDocument.java b/src/java/org/apache/poi/POIDocument.java index bcef60054..50c088ba7 100644 --- a/src/java/org/apache/poi/POIDocument.java +++ b/src/java/org/apache/poi/POIDocument.java @@ -30,14 +30,10 @@ import org.apache.poi.hpsf.PropertySet; import org.apache.poi.hpsf.PropertySetFactory; import org.apache.poi.hpsf.SummaryInformation; import org.apache.poi.poifs.crypt.EncryptionInfo; -import org.apache.poi.poifs.filesystem.DirectoryEntry; import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.poifs.filesystem.DocumentInputStream; -import org.apache.poi.poifs.filesystem.Entry; -import org.apache.poi.poifs.filesystem.EntryUtils; import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; import org.apache.poi.poifs.filesystem.POIFSFileSystem; -import org.apache.poi.util.Internal; import org.apache.poi.util.POILogFactory; import org.apache.poi.util.POILogger; @@ -45,8 +41,6 @@ import org.apache.poi.util.POILogger; * This holds the common functionality for all POI * Document classes. * Currently, this relates to Document Information Properties - * - * @author Nick Burch */ public abstract class POIDocument { /** Holds metadata on our document */ @@ -71,14 +65,6 @@ public abstract class POIDocument { this.directory = dir; } - /** - * @deprecated use {@link POIDocument#POIDocument(DirectoryNode)} instead - */ - @Deprecated - protected POIDocument(DirectoryNode dir, POIFSFileSystem fs) { - this.directory = dir; - } - protected POIDocument(POIFSFileSystem fs) { this(fs.getRoot()); } @@ -179,12 +165,13 @@ public abstract class POIDocument { protected PropertySet getPropertySet(String setName, EncryptionInfo encryptionInfo) { DirectoryNode dirNode = directory; + NPOIFSFileSystem encPoifs = null; if (encryptionInfo != null) { try { InputStream is = encryptionInfo.getDecryptor().getDataStream(directory); - NPOIFSFileSystem poifs = new NPOIFSFileSystem(is); + encPoifs = new NPOIFSFileSystem(is); is.close(); - dirNode = poifs.getRoot(); + dirNode = encPoifs.getRoot(); } catch (Exception e) { logger.log(POILogger.ERROR, "Error getting encrypted property set with name " + setName, e); return null; @@ -208,6 +195,11 @@ public abstract class POIDocument { try { // Create the Property Set PropertySet set = PropertySetFactory.create(dis); + // Tidy up if needed + if (encPoifs != null) { + encPoifs.close(); + } + // Return the properties return set; } catch(IOException ie) { // Must be corrupt or something like that @@ -218,26 +210,39 @@ public abstract class POIDocument { } return null; } + + /** + * Writes out the updated standard Document Information Properties (HPSF) + * into the currently open NPOIFSFileSystem + * TODO Implement in-place update + * + * @throws IOException if an error when writing to the open + * {@link NPOIFSFileSystem} occurs + * TODO throws exception if open from stream not file + */ + protected void writeProperties() throws IOException { + throw new IllegalStateException("In-place write is not yet supported"); + } /** - * Writes out the standard Documment Information Properties (HPSF) + * Writes out the standard Document Information Properties (HPSF) * @param outFS the POIFSFileSystem to write the properties into * * @throws IOException if an error when writing to the - * {@link POIFSFileSystem} occurs + * {@link NPOIFSFileSystem} occurs */ - protected void writeProperties(POIFSFileSystem outFS) throws IOException { + protected void writeProperties(NPOIFSFileSystem outFS) throws IOException { writeProperties(outFS, null); } /** - * Writes out the standard Documment Information Properties (HPSF) - * @param outFS the POIFSFileSystem to write the properties into + * Writes out the standard Document Information Properties (HPSF) + * @param outFS the NPOIFSFileSystem to write the properties into * @param writtenEntries a list of POIFS entries to add the property names too * * @throws IOException if an error when writing to the - * {@link POIFSFileSystem} occurs + * {@link NPOIFSFileSystem} occurs */ - protected void writeProperties(POIFSFileSystem outFS, List writtenEntries) throws IOException { + protected void writeProperties(NPOIFSFileSystem outFS, List writtenEntries) throws IOException { SummaryInformation si = getSummaryInformation(); if (si != null) { writePropertySet(SummaryInformation.DEFAULT_STREAM_NAME, si, outFS); @@ -258,12 +263,12 @@ public abstract class POIDocument { * Writes out a given ProperySet * @param name the (POIFS Level) name of the property to write * @param set the PropertySet to write out - * @param outFS the POIFSFileSystem to write the property into + * @param outFS the NPOIFSFileSystem to write the property into * * @throws IOException if an error when writing to the - * {@link POIFSFileSystem} occurs + * {@link NPOIFSFileSystem} occurs */ - protected void writePropertySet(String name, PropertySet set, POIFSFileSystem outFS) throws IOException { + protected void writePropertySet(String name, PropertySet set, NPOIFSFileSystem outFS) throws IOException { try { MutablePropertySet mSet = new MutablePropertySet(set); ByteArrayOutputStream bOut = new ByteArrayOutputStream(); diff --git a/src/java/org/apache/poi/POIOLE2TextExtractor.java b/src/java/org/apache/poi/POIOLE2TextExtractor.java index c0f4cbd1d..7679136c8 100644 --- a/src/java/org/apache/poi/POIOLE2TextExtractor.java +++ b/src/java/org/apache/poi/POIOLE2TextExtractor.java @@ -20,7 +20,6 @@ import org.apache.poi.hpsf.DocumentSummaryInformation; import org.apache.poi.hpsf.SummaryInformation; import org.apache.poi.hpsf.extractor.HPSFPropertiesExtractor; import org.apache.poi.poifs.filesystem.DirectoryEntry; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; /** * Common Parent for OLE2 based Text Extractors @@ -81,17 +80,4 @@ public abstract class POIOLE2TextExtractor extends POITextExtractor { { return document.directory; } - - /** - * Return the underlying POIFS FileSystem of this document. - * - * @return the POIFSFileSystem that is associated with the POIDocument of this extractor. - * - * @deprecated Use {@link #getRoot()} instead - */ - @Deprecated - public POIFSFileSystem getFileSystem() - { - return document.directory.getFileSystem(); - } } diff --git a/src/java/org/apache/poi/hpsf/HPSFPropertiesOnlyDocument.java b/src/java/org/apache/poi/hpsf/HPSFPropertiesOnlyDocument.java index f1b9ca962..ea6bc0b1b 100644 --- a/src/java/org/apache/poi/hpsf/HPSFPropertiesOnlyDocument.java +++ b/src/java/org/apache/poi/hpsf/HPSFPropertiesOnlyDocument.java @@ -44,7 +44,7 @@ public class HPSFPropertiesOnlyDocument extends POIDocument { * Write out, with any properties changes, but nothing else */ public void write(OutputStream out) throws IOException { - POIFSFileSystem fs = new POIFSFileSystem(); + NPOIFSFileSystem fs = new NPOIFSFileSystem(); // For tracking what we've written out, so far List excepts = new ArrayList(1); diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java index aee2d5444..be1c7ef9f 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java @@ -1277,7 +1277,7 @@ public final class HSSFWorkbook extends POIDocument implements org.apache.poi.ss throws IOException { byte[] bytes = getBytes(); - POIFSFileSystem fs = new POIFSFileSystem(); + NPOIFSFileSystem fs = new NPOIFSFileSystem(); // For tracking what we've written out, used if we're // going to be preserving nodes diff --git a/src/java/org/apache/poi/poifs/filesystem/EntryUtils.java b/src/java/org/apache/poi/poifs/filesystem/EntryUtils.java index 4bce0641a..d8a55563a 100644 --- a/src/java/org/apache/poi/poifs/filesystem/EntryUtils.java +++ b/src/java/org/apache/poi/poifs/filesystem/EntryUtils.java @@ -124,8 +124,21 @@ public class EntryUtils * @param target * is the target POIFS to copy to */ - public static void copyNodes( POIFSFileSystem source, - POIFSFileSystem target ) throws IOException + public static void copyNodes( OPOIFSFileSystem source, + OPOIFSFileSystem target ) throws IOException + { + copyNodes( source.getRoot(), target.getRoot() ); + } + /** + * Copies all nodes from one POIFS to the other + * + * @param source + * is the source POIFS to copy from + * @param target + * is the target POIFS to copy to + */ + public static void copyNodes( NPOIFSFileSystem source, + NPOIFSFileSystem target ) throws IOException { copyNodes( source.getRoot(), target.getRoot() ); } @@ -140,8 +153,26 @@ public class EntryUtils * @param target is the target POIFS to copy to * @param excepts is a list of Entry Names to be excluded from the copy */ - public static void copyNodes( POIFSFileSystem source, - POIFSFileSystem target, List excepts ) throws IOException + public static void copyNodes( OPOIFSFileSystem source, + OPOIFSFileSystem target, List excepts ) throws IOException + { + copyNodes( + new FilteringDirectoryNode(source.getRoot(), excepts), + new FilteringDirectoryNode(target.getRoot(), excepts) + ); + } + /** + * Copies nodes from one POIFS to the other, minus the excepts. + * This delegates the filtering work to {@link FilteringDirectoryNode}, + * so excepts can be of the form "NodeToExclude" or + * "FilteringDirectory/ExcludedChildNode" + * + * @param source is the source POIFS to copy from + * @param target is the target POIFS to copy to + * @param excepts is a list of Entry Names to be excluded from the copy + */ + public static void copyNodes( NPOIFSFileSystem source, + NPOIFSFileSystem target, List excepts ) throws IOException { copyNodes( new FilteringDirectoryNode(source.getRoot(), excepts), diff --git a/src/scratchpad/src/org/apache/poi/hslf/HSLFSlideShow.java b/src/scratchpad/src/org/apache/poi/hslf/HSLFSlideShow.java index 55c3f6f87..5097ea39c 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/HSLFSlideShow.java +++ b/src/scratchpad/src/org/apache/poi/hslf/HSLFSlideShow.java @@ -52,6 +52,7 @@ import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.poifs.filesystem.DocumentEntry; import org.apache.poi.poifs.filesystem.DocumentInputStream; import org.apache.poi.poifs.filesystem.EntryUtils; +import org.apache.poi.poifs.filesystem.FilteringDirectoryNode; import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.util.LittleEndian; @@ -584,7 +585,7 @@ public final class HSLFSlideShow extends POIDocument { _records = encryptedSS.updateEncryptionRecord(_records); // Get a new Filesystem to write into - POIFSFileSystem outFS = new POIFSFileSystem(); + NPOIFSFileSystem outFS = new NPOIFSFileSystem(); // The list of entries we've written out List writtenEntries = new ArrayList(1); @@ -628,7 +629,9 @@ public final class HSLFSlideShow extends POIDocument { // If requested, write out any other streams we spot if(preserveNodes) { - EntryUtils.copyNodes(directory.getFileSystem(), outFS, writtenEntries); + FilteringDirectoryNode sNode = new FilteringDirectoryNode(directory, writtenEntries); + FilteringDirectoryNode dNode = new FilteringDirectoryNode(outFS.getRoot(), writtenEntries); + EntryUtils.copyNodes(sNode, dNode); } // Send the POIFSFileSystem object out to the underlying stream @@ -651,13 +654,14 @@ public final class HSLFSlideShow extends POIDocument { /** * Writes out the standard Documment Information Properties (HPSF) - * @param outFS the POIFSFileSystem to write the properties into + * @param outFS the NPOIFSFileSystem to write the properties into * @param writtenEntries a list of POIFS entries to add the property names too * * @throws IOException if an error when writing to the * {@link POIFSFileSystem} occurs */ - protected void writeProperties(POIFSFileSystem outFS, List writtenEntries) throws IOException { + @Override + protected void writeProperties(NPOIFSFileSystem outFS, List writtenEntries) throws IOException { super.writeProperties(outFS, writtenEntries); DocumentEncryptionAtom dea = getDocumentEncryptionAtom(); if (dea != null) { diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/CurrentUserAtom.java b/src/scratchpad/src/org/apache/poi/hslf/record/CurrentUserAtom.java index 0ed4357ee..e34103a8c 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/record/CurrentUserAtom.java +++ b/src/scratchpad/src/org/apache/poi/hslf/record/CurrentUserAtom.java @@ -30,21 +30,18 @@ import org.apache.poi.hslf.exceptions.CorruptPowerPointFileException; import org.apache.poi.hslf.exceptions.OldPowerPointFormatException; import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.poifs.filesystem.DocumentEntry; +import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.util.LittleEndian; import org.apache.poi.util.POILogFactory; import org.apache.poi.util.POILogger; import org.apache.poi.util.StringUtil; - /** - * This is a special kind of Atom, becauase it doesn't live inside the - * PowerPoint document. Instead, it lives in a seperate stream in the - * document. As such, it has to be treaded specially - * - * @author Nick Burch + * This is a special kind of Atom, because it doesn't live inside the + * PowerPoint document. Instead, it lives in a separate stream in the + * document. As such, it has to be treated specially */ - public class CurrentUserAtom { private static POILogger logger = POILogFactory.getLogger(CurrentUserAtom.class); @@ -117,6 +114,7 @@ public class CurrentUserAtom /** * Find the Current User in the filesystem, and create from that + * @deprecated Use {@link #CurrentUserAtom(DirectoryNode)} instead */ public CurrentUserAtom(POIFSFileSystem fs) throws IOException { this(fs.getRoot()); @@ -278,7 +276,7 @@ public class CurrentUserAtom /** * Writes ourselves back out to a filesystem */ - public void writeToFS(POIFSFileSystem fs) throws IOException { + public void writeToFS(NPOIFSFileSystem fs) throws IOException { // Grab contents ByteArrayOutputStream baos = new ByteArrayOutputStream(); writeOut(baos); diff --git a/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java b/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java index 701288789..8aef34b21 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java @@ -67,10 +67,10 @@ import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.poifs.filesystem.DocumentEntry; import org.apache.poi.poifs.filesystem.Entry; import org.apache.poi.poifs.filesystem.EntryUtils; +import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.util.Internal; - /** * * This class acts as the bucket that we throw all of the Word data structures @@ -924,7 +924,7 @@ public final class HWPFDocument extends HWPFDocumentCore } // create new document preserving order of entries - POIFSFileSystem pfs = new POIFSFileSystem(); + NPOIFSFileSystem pfs = new NPOIFSFileSystem(); boolean docWritten = false; boolean dataWritten = false; boolean objectPoolWritten = false; diff --git a/src/scratchpad/testcases/org/apache/poi/TestPOIDocumentScratchpad.java b/src/scratchpad/testcases/org/apache/poi/TestPOIDocumentScratchpad.java index b3f91236e..f09f39f3c 100644 --- a/src/scratchpad/testcases/org/apache/poi/TestPOIDocumentScratchpad.java +++ b/src/scratchpad/testcases/org/apache/poi/TestPOIDocumentScratchpad.java @@ -74,7 +74,7 @@ public final class TestPOIDocumentScratchpad extends TestCase { public void testWriteProperties() throws Exception { // Just check we can write them back out into a filesystem - POIFSFileSystem outFS = new POIFSFileSystem(); + NPOIFSFileSystem outFS = new NPOIFSFileSystem(); doc.writeProperties(outFS); // Should now hold them @@ -86,7 +86,7 @@ public final class TestPOIDocumentScratchpad extends TestCase { ByteArrayOutputStream baos = new ByteArrayOutputStream(); // Write them out - POIFSFileSystem outFS = new POIFSFileSystem(); + NPOIFSFileSystem outFS = new NPOIFSFileSystem(); doc.writeProperties(outFS); outFS.writeFilesystem(baos); diff --git a/src/testcases/org/apache/poi/TestPOIDocumentMain.java b/src/testcases/org/apache/poi/TestPOIDocumentMain.java index 67552588f..4ababd6f4 100644 --- a/src/testcases/org/apache/poi/TestPOIDocumentMain.java +++ b/src/testcases/org/apache/poi/TestPOIDocumentMain.java @@ -26,6 +26,7 @@ import junit.framework.TestCase; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; import org.apache.poi.poifs.filesystem.POIFSFileSystem; /** @@ -72,7 +73,7 @@ public final class TestPOIDocumentMain extends TestCase { public void testWriteProperties() throws Exception { // Just check we can write them back out into a filesystem - POIFSFileSystem outFS = new POIFSFileSystem(); + NPOIFSFileSystem outFS = new NPOIFSFileSystem(); doc.readProperties(); doc.writeProperties(outFS); @@ -89,7 +90,7 @@ public final class TestPOIDocumentMain extends TestCase { ByteArrayOutputStream baos = new ByteArrayOutputStream(); // Write them out - POIFSFileSystem outFS = new POIFSFileSystem(); + NPOIFSFileSystem outFS = new NPOIFSFileSystem(); doc.readProperties(); doc.writeProperties(outFS); outFS.writeFilesystem(baos); From aec457dbcb9c67a1d5d95e733d1e869bdaad401b Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 11 May 2015 18:15:03 +0000 Subject: [PATCH 139/301] #56791 More updates from OPOIFS to NPOIFS git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678787 13f79535-47bb-0310-9956-ffa450edef68 --- .../poifs/eventfilesystem/POIFSReader.java | 10 +++---- .../poi/poifs/filesystem/DirectoryNode.java | 6 ++-- .../poifs/filesystem/DocumentInputStream.java | 2 +- .../poi/poifs/filesystem/DocumentNode.java | 10 ++----- .../filesystem/ODocumentInputStream.java | 10 +++---- ...POIFSDocument.java => OPOIFSDocument.java} | 23 +++++++------- .../poifs/filesystem/OPOIFSFileSystem.java | 16 +++++----- .../poi/poifs/filesystem/POIFSFileSystem.java | 16 +++++----- .../poi/poifs/property/DocumentProperty.java | 10 +++---- .../poifs/storage/SmallBlockTableWriter.java | 4 +-- .../apache/poi/hssf/usermodel/TestBugs.java | 1 - .../poi/poifs/filesystem/TestDocument.java | 30 +++++++++---------- .../filesystem/TestDocumentInputStream.java | 4 +-- .../poifs/filesystem/TestDocumentNode.java | 2 +- .../storage/TestSmallBlockTableWriter.java | 28 ++++++++--------- 15 files changed, 80 insertions(+), 92 deletions(-) rename src/java/org/apache/poi/poifs/filesystem/{POIFSDocument.java => OPOIFSDocument.java} (94%) diff --git a/src/java/org/apache/poi/poifs/eventfilesystem/POIFSReader.java b/src/java/org/apache/poi/poifs/eventfilesystem/POIFSReader.java index 567527523..a28870918 100644 --- a/src/java/org/apache/poi/poifs/eventfilesystem/POIFSReader.java +++ b/src/java/org/apache/poi/poifs/eventfilesystem/POIFSReader.java @@ -24,7 +24,7 @@ import java.io.*; import java.util.*; import org.apache.poi.poifs.filesystem.DocumentInputStream; -import org.apache.poi.poifs.filesystem.POIFSDocument; +import org.apache.poi.poifs.filesystem.OPOIFSDocument; import org.apache.poi.poifs.filesystem.POIFSDocumentPath; import org.apache.poi.poifs.property.DirectoryProperty; import org.apache.poi.poifs.property.Property; @@ -240,19 +240,19 @@ public class POIFSReader if (listeners.hasNext()) { - int size = property.getSize(); - POIFSDocument document = null; + int size = property.getSize(); + OPOIFSDocument document = null; if (property.shouldUseSmallBlocks()) { document = - new POIFSDocument(name, small_blocks + new OPOIFSDocument(name, small_blocks .fetchBlocks(startBlock, -1), size); } else { document = - new POIFSDocument(name, big_blocks + new OPOIFSDocument(name, big_blocks .fetchBlocks(startBlock, -1), size); } while (listeners.hasNext()) diff --git a/src/java/org/apache/poi/poifs/filesystem/DirectoryNode.java b/src/java/org/apache/poi/poifs/filesystem/DirectoryNode.java index c1d4a25b0..e8c6638bf 100644 --- a/src/java/org/apache/poi/poifs/filesystem/DirectoryNode.java +++ b/src/java/org/apache/poi/poifs/filesystem/DirectoryNode.java @@ -217,7 +217,7 @@ public class DirectoryNode * * @exception IOException */ - DocumentEntry createDocument(final POIFSDocument document) + DocumentEntry createDocument(final OPOIFSDocument document) throws IOException { DocumentProperty property = document.getDocumentProperty(); @@ -418,7 +418,7 @@ public class DirectoryNode if(_nfilesystem != null) { return createDocument(new NPOIFSDocument(name, _nfilesystem, stream)); } else { - return createDocument(new POIFSDocument(name, stream)); + return createDocument(new OPOIFSDocument(name, stream)); } } @@ -441,7 +441,7 @@ public class DirectoryNode if(_nfilesystem != null) { return createDocument(new NPOIFSDocument(name, size, _nfilesystem, writer)); } else { - return createDocument(new POIFSDocument(name, size, _path, writer)); + return createDocument(new OPOIFSDocument(name, size, _path, writer)); } } diff --git a/src/java/org/apache/poi/poifs/filesystem/DocumentInputStream.java b/src/java/org/apache/poi/poifs/filesystem/DocumentInputStream.java index 6c6b6100c..35d0c2365 100644 --- a/src/java/org/apache/poi/poifs/filesystem/DocumentInputStream.java +++ b/src/java/org/apache/poi/poifs/filesystem/DocumentInputStream.java @@ -72,7 +72,7 @@ public class DocumentInputStream extends InputStream implements LittleEndianInpu * * @param document the Document to be read */ - public DocumentInputStream(POIFSDocument document) { + public DocumentInputStream(OPOIFSDocument document) { delegate = new ODocumentInputStream(document); } diff --git a/src/java/org/apache/poi/poifs/filesystem/DocumentNode.java b/src/java/org/apache/poi/poifs/filesystem/DocumentNode.java index 9caafb766..7a5bf6900 100644 --- a/src/java/org/apache/poi/poifs/filesystem/DocumentNode.java +++ b/src/java/org/apache/poi/poifs/filesystem/DocumentNode.java @@ -27,18 +27,15 @@ import org.apache.poi.poifs.dev.POIFSViewable; import org.apache.poi.poifs.property.DocumentProperty; /** - * Simple implementation of DocumentEntry - * - * @author Marc Johnson (mjohnson at apache dot org) + * Simple implementation of DocumentEntry for OPOIFS */ - public class DocumentNode extends EntryNode implements DocumentEntry, POIFSViewable { // underlying POIFSDocument instance - private POIFSDocument _document; + private OPOIFSDocument _document; /** * create a DocumentNode. This method is not public by design; it @@ -59,8 +56,7 @@ public class DocumentNode * * @return the internal POIFSDocument */ - - POIFSDocument getDocument() + OPOIFSDocument getDocument() { return _document; } diff --git a/src/java/org/apache/poi/poifs/filesystem/ODocumentInputStream.java b/src/java/org/apache/poi/poifs/filesystem/ODocumentInputStream.java index a1bc5da95..858e2d9d9 100644 --- a/src/java/org/apache/poi/poifs/filesystem/ODocumentInputStream.java +++ b/src/java/org/apache/poi/poifs/filesystem/ODocumentInputStream.java @@ -23,9 +23,7 @@ import org.apache.poi.poifs.storage.DataInputBlock; /** * This class provides methods to read a DocumentEntry managed by a - * {@link POIFSFileSystem} instance. - * - * @author Marc Johnson (mjohnson at apache dot org) + * {@link OPOIFSFileSystem} instance. */ public final class ODocumentInputStream extends DocumentInputStream { /** current offset into the Document */ @@ -41,7 +39,7 @@ public final class ODocumentInputStream extends DocumentInputStream { private boolean _closed; /** the actual Document */ - private POIFSDocument _document; + private OPOIFSDocument _document; /** the data block containing the current stream pointer */ private DataInputBlock _currentBlock; @@ -59,7 +57,7 @@ public final class ODocumentInputStream extends DocumentInputStream { throw new IOException("Cannot open internal document storage"); } DocumentNode documentNode = (DocumentNode)document; - if(documentNode.getDocument() == null) { + if (documentNode.getDocument() == null) { throw new IOException("Cannot open internal document storage"); } @@ -76,7 +74,7 @@ public final class ODocumentInputStream extends DocumentInputStream { * * @param document the Document to be read */ - public ODocumentInputStream(POIFSDocument document) { + public ODocumentInputStream(OPOIFSDocument document) { _current_offset = 0; _marked_offset = 0; _document_size = document.getSize(); diff --git a/src/java/org/apache/poi/poifs/filesystem/POIFSDocument.java b/src/java/org/apache/poi/poifs/filesystem/OPOIFSDocument.java similarity index 94% rename from src/java/org/apache/poi/poifs/filesystem/POIFSDocument.java rename to src/java/org/apache/poi/poifs/filesystem/OPOIFSDocument.java index c6b35fd88..3862b2987 100644 --- a/src/java/org/apache/poi/poifs/filesystem/POIFSDocument.java +++ b/src/java/org/apache/poi/poifs/filesystem/OPOIFSDocument.java @@ -40,11 +40,10 @@ import org.apache.poi.poifs.storage.SmallDocumentBlock; import org.apache.poi.util.HexDump; /** - * This class manages a document in the POIFS filesystem. - * - * @author Marc Johnson (mjohnson at apache dot org) + * This class manages a document in a old-style + * OPOIFS filesystem. */ -public final class POIFSDocument implements BATManaged, BlockWritable, POIFSViewable { +public final class OPOIFSDocument implements BATManaged, BlockWritable, POIFSViewable { private static final DocumentBlock[] EMPTY_BIG_BLOCK_ARRAY = { }; private static final SmallDocumentBlock[] EMPTY_SMALL_BLOCK_ARRAY = { }; private DocumentProperty _property; @@ -63,7 +62,7 @@ public final class POIFSDocument implements BATManaged, BlockWritable, POIFSView * @param blocks the big blocks making up the POIFSDocument * @param length the actual length of the POIFSDocument */ - public POIFSDocument(String name, RawDataBlock[] blocks, int length) throws IOException { + public OPOIFSDocument(String name, RawDataBlock[] blocks, int length) throws IOException { _size = length; if(blocks.length == 0) { _bigBigBlockSize = POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS; @@ -104,7 +103,7 @@ public final class POIFSDocument implements BATManaged, BlockWritable, POIFSView * @param blocks the small blocks making up the POIFSDocument * @param length the actual length of the POIFSDocument */ - public POIFSDocument(String name, SmallDocumentBlock[] blocks, int length) { + public OPOIFSDocument(String name, SmallDocumentBlock[] blocks, int length) { _size = length; if(blocks.length == 0) { @@ -126,7 +125,7 @@ public final class POIFSDocument implements BATManaged, BlockWritable, POIFSView * @param blocks the small blocks making up the POIFSDocument * @param length the actual length of the POIFSDocument */ - public POIFSDocument(String name, POIFSBigBlockSize bigBlockSize, ListManagedBlock[] blocks, int length) throws IOException { + public OPOIFSDocument(String name, POIFSBigBlockSize bigBlockSize, ListManagedBlock[] blocks, int length) throws IOException { _size = length; _bigBigBlockSize = bigBlockSize; _property = new DocumentProperty(name, _size); @@ -139,7 +138,7 @@ public final class POIFSDocument implements BATManaged, BlockWritable, POIFSView _small_store = new SmallBlockStore(bigBlockSize,EMPTY_SMALL_BLOCK_ARRAY); } } - public POIFSDocument(String name, ListManagedBlock[] blocks, int length) throws IOException { + public OPOIFSDocument(String name, ListManagedBlock[] blocks, int length) throws IOException { this(name, POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS, blocks, length); } @@ -149,7 +148,7 @@ public final class POIFSDocument implements BATManaged, BlockWritable, POIFSView * @param name the name of the POIFSDocument * @param stream the InputStream we read data from */ - public POIFSDocument(String name, POIFSBigBlockSize bigBlockSize, InputStream stream) throws IOException { + public OPOIFSDocument(String name, POIFSBigBlockSize bigBlockSize, InputStream stream) throws IOException { List blocks = new ArrayList(); _size = 0; @@ -178,7 +177,7 @@ public final class POIFSDocument implements BATManaged, BlockWritable, POIFSView _small_store = new SmallBlockStore(bigBlockSize,EMPTY_SMALL_BLOCK_ARRAY); } } - public POIFSDocument(String name, InputStream stream) throws IOException { + public OPOIFSDocument(String name, InputStream stream) throws IOException { this(name, POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS, stream); } @@ -190,7 +189,7 @@ public final class POIFSDocument implements BATManaged, BlockWritable, POIFSView * @param path the path of the POIFSDocument * @param writer the writer who will eventually write the document contents */ - public POIFSDocument(String name, int size, POIFSBigBlockSize bigBlockSize, POIFSDocumentPath path, POIFSWriterListener writer) { + public OPOIFSDocument(String name, int size, POIFSBigBlockSize bigBlockSize, POIFSDocumentPath path, POIFSWriterListener writer) { _size = size; _bigBigBlockSize = bigBlockSize; _property = new DocumentProperty(name, _size); @@ -203,7 +202,7 @@ public final class POIFSDocument implements BATManaged, BlockWritable, POIFSView _big_store = new BigBlockStore(_bigBigBlockSize, path, name, size, writer); } } - public POIFSDocument(String name, int size, POIFSDocumentPath path, POIFSWriterListener writer) { + public OPOIFSDocument(String name, int size, POIFSDocumentPath path, POIFSWriterListener writer) { this(name, size, POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS, path, writer); } diff --git a/src/java/org/apache/poi/poifs/filesystem/OPOIFSFileSystem.java b/src/java/org/apache/poi/poifs/filesystem/OPOIFSFileSystem.java index b95c89919..d03c57942 100644 --- a/src/java/org/apache/poi/poifs/filesystem/OPOIFSFileSystem.java +++ b/src/java/org/apache/poi/poifs/filesystem/OPOIFSFileSystem.java @@ -445,7 +445,7 @@ public class OPOIFSFileSystem * @param document the POIFSDocument being added */ - void addDocument(final POIFSDocument document) + void addDocument(final OPOIFSDocument document) { _documents.add(document); _property_table.addProperty(document.getDocumentProperty()); @@ -508,21 +508,21 @@ public class OPOIFSFileSystem { int startBlock = property.getStartBlock(); int size = property.getSize(); - POIFSDocument document = null; + OPOIFSDocument document = null; if (property.shouldUseSmallBlocks()) { document = - new POIFSDocument(name, - small_blocks.fetchBlocks(startBlock, headerPropertiesStartAt), - size); + new OPOIFSDocument(name, + small_blocks.fetchBlocks(startBlock, headerPropertiesStartAt), + size); } else { document = - new POIFSDocument(name, - big_blocks.fetchBlocks(startBlock, headerPropertiesStartAt), - size); + new OPOIFSDocument(name, + big_blocks.fetchBlocks(startBlock, headerPropertiesStartAt), + size); } parent.createDocument(document); } diff --git a/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java b/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java index c6223cf24..bf5ea3c58 100644 --- a/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java +++ b/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java @@ -447,7 +447,7 @@ public class POIFSFileSystem * @param document the POIFSDocument being added */ - void addDocument(final POIFSDocument document) + void addDocument(final OPOIFSDocument document) { _documents.add(document); _property_table.addProperty(document.getDocumentProperty()); @@ -510,21 +510,21 @@ public class POIFSFileSystem { int startBlock = property.getStartBlock(); int size = property.getSize(); - POIFSDocument document = null; + OPOIFSDocument document = null; if (property.shouldUseSmallBlocks()) { document = - new POIFSDocument(name, - small_blocks.fetchBlocks(startBlock, headerPropertiesStartAt), - size); + new OPOIFSDocument(name, + small_blocks.fetchBlocks(startBlock, headerPropertiesStartAt), + size); } else { document = - new POIFSDocument(name, - big_blocks.fetchBlocks(startBlock, headerPropertiesStartAt), - size); + new OPOIFSDocument(name, + big_blocks.fetchBlocks(startBlock, headerPropertiesStartAt), + size); } parent.createDocument(document); } diff --git a/src/java/org/apache/poi/poifs/property/DocumentProperty.java b/src/java/org/apache/poi/poifs/property/DocumentProperty.java index 67c8b0307..3ba3c0889 100644 --- a/src/java/org/apache/poi/poifs/property/DocumentProperty.java +++ b/src/java/org/apache/poi/poifs/property/DocumentProperty.java @@ -19,12 +19,10 @@ package org.apache.poi.poifs.property; -import org.apache.poi.poifs.filesystem.POIFSDocument; +import org.apache.poi.poifs.filesystem.OPOIFSDocument; /** * Trivial extension of Property for POIFSDocuments - * - * @author Marc Johnson (mjohnson at apache dot org) */ public class DocumentProperty @@ -32,7 +30,7 @@ public class DocumentProperty { // the POIFSDocument this property is associated with - private POIFSDocument _document; + private OPOIFSDocument _document; /** * Constructor @@ -72,7 +70,7 @@ public class DocumentProperty * @param doc the associated POIFSDocument */ - public void setDocument(POIFSDocument doc) + public void setDocument(OPOIFSDocument doc) { _document = doc; } @@ -83,7 +81,7 @@ public class DocumentProperty * @return the associated document */ - public POIFSDocument getDocument() + public OPOIFSDocument getDocument() { return _document; } diff --git a/src/java/org/apache/poi/poifs/storage/SmallBlockTableWriter.java b/src/java/org/apache/poi/poifs/storage/SmallBlockTableWriter.java index 2db7bf4c7..783518f15 100644 --- a/src/java/org/apache/poi/poifs/storage/SmallBlockTableWriter.java +++ b/src/java/org/apache/poi/poifs/storage/SmallBlockTableWriter.java @@ -22,7 +22,7 @@ package org.apache.poi.poifs.storage; import org.apache.poi.poifs.common.POIFSBigBlockSize; import org.apache.poi.poifs.common.POIFSConstants; import org.apache.poi.poifs.filesystem.BATManaged; -import org.apache.poi.poifs.filesystem.POIFSDocument; +import org.apache.poi.poifs.filesystem.OPOIFSDocument; import org.apache.poi.poifs.property.RootProperty; import java.util.*; @@ -62,7 +62,7 @@ public class SmallBlockTableWriter while (iter.hasNext()) { - POIFSDocument doc = ( POIFSDocument ) iter.next(); + OPOIFSDocument doc = ( OPOIFSDocument ) iter.next(); BlockWritable[] blocks = doc.getSmallBlocks(); if (blocks.length != 0) diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java index 0bb1de24b..6c2969a78 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java @@ -32,7 +32,6 @@ import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; -import java.io.OutputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestDocument.java b/src/testcases/org/apache/poi/poifs/filesystem/TestDocument.java index e216ed9a8..21494b39b 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestDocument.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestDocument.java @@ -28,27 +28,25 @@ import org.apache.poi.poifs.storage.RawDataBlock; import org.apache.poi.poifs.storage.SmallDocumentBlock; /** - * Class to test POIFSDocument functionality - * - * @author Marc Johnson + * Class to test OPOIFSDocument functionality */ public final class TestDocument extends TestCase { /** * Integration test -- really about all we can do */ - public void testPOIFSDocument() throws IOException { + public void testOPOIFSDocument() throws IOException { // verify correct number of blocks get created for document // that is exact multituple of block size - POIFSDocument document; + OPOIFSDocument document; byte[] array = new byte[ 4096 ]; for (int j = 0; j < array.length; j++) { array[ j ] = ( byte ) j; } - document = new POIFSDocument("foo", new SlowInputStream(new ByteArrayInputStream(array))); + document = new OPOIFSDocument("foo", new SlowInputStream(new ByteArrayInputStream(array))); checkDocument(document, array); // verify correct number of blocks get created for document @@ -58,7 +56,7 @@ public final class TestDocument extends TestCase { { array[ j ] = ( byte ) j; } - document = new POIFSDocument("bar", new ByteArrayInputStream(array)); + document = new OPOIFSDocument("bar", new ByteArrayInputStream(array)); checkDocument(document, array); // verify correct number of blocks get created for document @@ -68,7 +66,7 @@ public final class TestDocument extends TestCase { { array[ j ] = ( byte ) j; } - document = new POIFSDocument("_bar", new ByteArrayInputStream(array)); + document = new OPOIFSDocument("_bar", new ByteArrayInputStream(array)); checkDocument(document, array); // verify correct number of blocks get created for document @@ -78,7 +76,7 @@ public final class TestDocument extends TestCase { { array[ j ] = ( byte ) j; } - document = new POIFSDocument("_bar2", + document = new OPOIFSDocument("_bar2", new ByteArrayInputStream(array)); checkDocument(document, array); @@ -88,7 +86,7 @@ public final class TestDocument extends TestCase { { array[ j ] = ( byte ) j; } - document = new POIFSDocument("foobar", + document = new OPOIFSDocument("foobar", new ByteArrayInputStream(array)); checkDocument(document, array); document.setStartBlock(0x12345678); // what a big file!! @@ -135,9 +133,9 @@ public final class TestDocument extends TestCase { } } - private static POIFSDocument makeCopy(POIFSDocument document, byte[] input, byte[] data) + private static OPOIFSDocument makeCopy(OPOIFSDocument document, byte[] input, byte[] data) throws IOException { - POIFSDocument copy = null; + OPOIFSDocument copy = null; if (input.length >= 4096) { @@ -156,12 +154,12 @@ public final class TestDocument extends TestCase { } blocks[ index++ ] = block; } - copy = new POIFSDocument("test" + input.length, blocks, + copy = new OPOIFSDocument("test" + input.length, blocks, input.length); } else { - copy = new POIFSDocument( + copy = new OPOIFSDocument( "test" + input.length, ( SmallDocumentBlock [] ) document.getSmallBlocks(), input.length); @@ -169,7 +167,7 @@ public final class TestDocument extends TestCase { return copy; } - private static void checkDocument(final POIFSDocument document, final byte[] input) + private static void checkDocument(final OPOIFSDocument document, final byte[] input) throws IOException { int big_blocks = 0; int small_blocks = 0; @@ -195,7 +193,7 @@ public final class TestDocument extends TestCase { } private static byte[] checkValues(int big_blocks, int small_blocks, int total_output, - POIFSDocument document, byte[] input) throws IOException { + OPOIFSDocument document, byte[] input) throws IOException { assertEquals(document, document.getDocumentProperty().getDocument()); int increment = ( int ) Math.sqrt(input.length); diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentInputStream.java b/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentInputStream.java index 6ba10f99c..98b2b7a7d 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentInputStream.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentInputStream.java @@ -64,8 +64,8 @@ public final class TestDocumentInputStream extends TestCase { { rawBlocks[ j ] = new RawDataBlock(stream); } - POIFSDocument document = new POIFSDocument("Workbook", rawBlocks, - _workbook_size); + OPOIFSDocument document = new OPOIFSDocument("Workbook", rawBlocks, + _workbook_size); _workbook_o = new DocumentNode( document.getDocumentProperty(), diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentNode.java b/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentNode.java index 6101494a0..69d167793 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentNode.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentNode.java @@ -46,7 +46,7 @@ public final class TestDocumentNode extends TestCase { { rawBlocks[ j ] = new RawDataBlock(stream); } - POIFSDocument document = new POIFSDocument("document", rawBlocks, + OPOIFSDocument document = new OPOIFSDocument("document", rawBlocks, 2000); DocumentProperty property2 = document.getDocumentProperty(); DirectoryNode parent = new DirectoryNode(property1, (POIFSFileSystem)null, null); diff --git a/src/testcases/org/apache/poi/poifs/storage/TestSmallBlockTableWriter.java b/src/testcases/org/apache/poi/poifs/storage/TestSmallBlockTableWriter.java index f10576a4a..9bb4f6a16 100644 --- a/src/testcases/org/apache/poi/poifs/storage/TestSmallBlockTableWriter.java +++ b/src/testcases/org/apache/poi/poifs/storage/TestSmallBlockTableWriter.java @@ -25,7 +25,7 @@ import java.util.List; import junit.framework.TestCase; import org.apache.poi.poifs.common.POIFSConstants; -import org.apache.poi.poifs.filesystem.POIFSDocument; +import org.apache.poi.poifs.filesystem.OPOIFSDocument; import org.apache.poi.poifs.property.PropertyTable; import org.apache.poi.poifs.property.RootProperty; @@ -37,43 +37,43 @@ import org.apache.poi.poifs.property.RootProperty; public final class TestSmallBlockTableWriter extends TestCase { public void testWritingConstructor() throws IOException { - List documents = new ArrayList(); + List documents = new ArrayList(); documents.add( - new POIFSDocument( + new OPOIFSDocument( "doc340", new ByteArrayInputStream(new byte[ 340 ]))); documents.add( - new POIFSDocument( + new OPOIFSDocument( "doc5000", new ByteArrayInputStream(new byte[ 5000 ]))); documents - .add(new POIFSDocument("doc0", + .add(new OPOIFSDocument("doc0", new ByteArrayInputStream(new byte[ 0 ]))); documents - .add(new POIFSDocument("doc1", + .add(new OPOIFSDocument("doc1", new ByteArrayInputStream(new byte[ 1 ]))); documents - .add(new POIFSDocument("doc2", + .add(new OPOIFSDocument("doc2", new ByteArrayInputStream(new byte[ 2 ]))); documents - .add(new POIFSDocument("doc3", + .add(new OPOIFSDocument("doc3", new ByteArrayInputStream(new byte[ 3 ]))); documents - .add(new POIFSDocument("doc4", + .add(new OPOIFSDocument("doc4", new ByteArrayInputStream(new byte[ 4 ]))); documents - .add(new POIFSDocument("doc5", + .add(new OPOIFSDocument("doc5", new ByteArrayInputStream(new byte[ 5 ]))); documents - .add(new POIFSDocument("doc6", + .add(new OPOIFSDocument("doc6", new ByteArrayInputStream(new byte[ 6 ]))); documents - .add(new POIFSDocument("doc7", + .add(new OPOIFSDocument("doc7", new ByteArrayInputStream(new byte[ 7 ]))); documents - .add(new POIFSDocument("doc8", + .add(new OPOIFSDocument("doc8", new ByteArrayInputStream(new byte[ 8 ]))); documents - .add(new POIFSDocument("doc9", + .add(new OPOIFSDocument("doc9", new ByteArrayInputStream(new byte[ 9 ]))); HeaderBlock header = new HeaderBlock(POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS); From 46f4c0fbd288609f0e55190225737a6e1e32e0a5 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 11 May 2015 18:21:20 +0000 Subject: [PATCH 140/301] Leave POIFSFileSystem as a lightweight shim around OPOIFSFileSystem pending the final changeover for #56791 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678790 13f79535-47bb-0310-9956-ffa450edef68 --- .../poifs/filesystem/OPOIFSFileSystem.java | 2 +- .../poi/poifs/filesystem/POIFSFileSystem.java | 504 +----------------- 2 files changed, 10 insertions(+), 496 deletions(-) diff --git a/src/java/org/apache/poi/poifs/filesystem/OPOIFSFileSystem.java b/src/java/org/apache/poi/poifs/filesystem/OPOIFSFileSystem.java index d03c57942..dcd1808a9 100644 --- a/src/java/org/apache/poi/poifs/filesystem/OPOIFSFileSystem.java +++ b/src/java/org/apache/poi/poifs/filesystem/OPOIFSFileSystem.java @@ -176,7 +176,7 @@ public class OPOIFSFileSystem * @param stream the stream to be closed * @param success false if an exception is currently being thrown in the calling method */ - private void closeInputStream(InputStream stream, boolean success) { + protected void closeInputStream(InputStream stream, boolean success) { if(stream.markSupported() && !(stream instanceof ByteArrayInputStream)) { String msg = "POIFS is closing the supplied input stream of type (" diff --git a/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java b/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java index bf5ea3c58..b8afa2f70 100644 --- a/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java +++ b/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java @@ -19,54 +19,22 @@ package org.apache.poi.poifs.filesystem; -import java.io.ByteArrayInputStream; -import java.io.FileInputStream; -import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; -import java.io.OutputStream; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import org.apache.poi.poifs.common.POIFSBigBlockSize; -import org.apache.poi.poifs.common.POIFSConstants; import org.apache.poi.poifs.dev.POIFSViewable; -import org.apache.poi.poifs.property.DirectoryProperty; -import org.apache.poi.poifs.property.Property; -import org.apache.poi.poifs.property.PropertyTable; -import org.apache.poi.poifs.storage.BATBlock; -import org.apache.poi.poifs.storage.BlockAllocationTableReader; -import org.apache.poi.poifs.storage.BlockAllocationTableWriter; -import org.apache.poi.poifs.storage.BlockList; -import org.apache.poi.poifs.storage.BlockWritable; -import org.apache.poi.poifs.storage.HeaderBlock; -import org.apache.poi.poifs.storage.HeaderBlockConstants; -import org.apache.poi.poifs.storage.HeaderBlockWriter; -import org.apache.poi.poifs.storage.RawDataBlockList; -import org.apache.poi.poifs.storage.SmallBlockTableReader; -import org.apache.poi.poifs.storage.SmallBlockTableWriter; import org.apache.poi.util.CloseIgnoringInputStream; -import org.apache.poi.util.IOUtils; -import org.apache.poi.util.LongField; -import org.apache.poi.util.POILogFactory; -import org.apache.poi.util.POILogger; /** - * This is the main class of the POIFS system; it manages the entire - * life cycle of the filesystem. - * - * @author Marc Johnson (mjohnson at apache dot org) + * Transition class for the move from {@link POIFSFileSystem} to + * {@link OPOIFSFileSystem}, and from {@link NPOIFSFileSystem} to + * {@link POIFSFileSystem}. Currently, this is OPOIFS-powered */ public class POIFSFileSystem extends OPOIFSFileSystem // TODO Temporary workaround during #56791 implements POIFSViewable { - private static final POILogger _logger = - POILogFactory.getLogger(POIFSFileSystem.class); - /** * Convenience method for clients that want to avoid the auto-close behaviour of the constructor. */ @@ -74,26 +42,12 @@ public class POIFSFileSystem return new CloseIgnoringInputStream(is); } - private PropertyTable _property_table; - private List _documents; - private DirectoryNode _root; - - /** - * What big block size the file uses. Most files - * use 512 bytes, but a few use 4096 - */ - private POIFSBigBlockSize bigBlockSize = - POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS; - /** * Constructor, intended for writing */ public POIFSFileSystem() { - HeaderBlock header_block = new HeaderBlock(bigBlockSize); - _property_table = new PropertyTable(header_block); - _documents = new ArrayList(); - _root = null; + super(); } /** @@ -128,76 +82,7 @@ public class POIFSFileSystem public POIFSFileSystem(InputStream stream) throws IOException { - this(); - boolean success = false; - - HeaderBlock header_block; - RawDataBlockList data_blocks; - try { - // read the header block from the stream - header_block = new HeaderBlock(stream); - bigBlockSize = header_block.getBigBlockSize(); - - // read the rest of the stream into blocks - data_blocks = new RawDataBlockList(stream, bigBlockSize); - success = true; - } finally { - closeInputStream(stream, success); - } - - - // set up the block allocation table (necessary for the - // data_blocks to be manageable - new BlockAllocationTableReader(header_block.getBigBlockSize(), - header_block.getBATCount(), - header_block.getBATArray(), - header_block.getXBATCount(), - header_block.getXBATIndex(), - data_blocks); - - // get property table from the document - PropertyTable properties = - new PropertyTable(header_block, data_blocks); - - // init documents - processProperties( - SmallBlockTableReader.getSmallDocumentBlocks( - bigBlockSize, data_blocks, properties.getRoot(), - header_block.getSBATStart() - ), - data_blocks, - properties.getRoot().getChildren(), - null, - header_block.getPropertyStart() - ); - - // For whatever reason CLSID of root is always 0. - getRoot().setStorageClsid(properties.getRoot().getStorageClsid()); - } - /** - * @param stream the stream to be closed - * @param success false if an exception is currently being thrown in the calling method - */ - private void closeInputStream(InputStream stream, boolean success) { - - if(stream.markSupported() && !(stream instanceof ByteArrayInputStream)) { - String msg = "POIFS is closing the supplied input stream of type (" - + stream.getClass().getName() + ") which supports mark/reset. " - + "This will be a problem for the caller if the stream will still be used. " - + "If that is the case the caller should wrap the input stream to avoid this close logic. " - + "This warning is only temporary and will not be present in future versions of POI."; - _logger.log(POILogger.WARN, msg); - } - try { - stream.close(); - } catch (IOException e) { - if(success) { - throw new RuntimeException(e); - } - // else not success? Try block did not complete normally - // just print stack trace and leave original ex to be thrown - e.printStackTrace(); - } + super(stream); } /** @@ -210,176 +95,14 @@ public class POIFSFileSystem * @param inp An InputStream which supports either mark/reset, or is a PushbackInputStream */ public static boolean hasPOIFSHeader(InputStream inp) throws IOException { - // We want to peek at the first 8 bytes - byte[] header = IOUtils.peekFirst8Bytes(inp); - return hasPOIFSHeader(header); + return OPOIFSFileSystem.hasPOIFSHeader(inp); } /** * Checks if the supplied first 8 bytes of a stream / file * has a POIFS (OLE2) header. */ public static boolean hasPOIFSHeader(byte[] header8Bytes) { - LongField signature = new LongField(HeaderBlockConstants._signature_offset, header8Bytes); - - // Did it match the signature? - return (signature.get() == HeaderBlockConstants._signature); - } - - /** - * Create a new document to be added to the root directory - * - * @param stream the InputStream from which the document's data - * will be obtained - * @param name the name of the new POIFSDocument - * - * @return the new DocumentEntry - * - * @exception IOException on error creating the new POIFSDocument - */ - - public DocumentEntry createDocument(final InputStream stream, - final String name) - throws IOException - { - return getRoot().createDocument(name, stream); - } - - /** - * create a new DocumentEntry in the root entry; the data will be - * provided later - * - * @param name the name of the new DocumentEntry - * @param size the size of the new DocumentEntry - * @param writer the writer of the new DocumentEntry - * - * @return the new DocumentEntry - * - * @exception IOException - */ - - public DocumentEntry createDocument(final String name, final int size, - final POIFSWriterListener writer) - throws IOException - { - return getRoot().createDocument(name, size, writer); - } - - /** - * create a new DirectoryEntry in the root directory - * - * @param name the name of the new DirectoryEntry - * - * @return the new DirectoryEntry - * - * @exception IOException on name duplication - */ - - public DirectoryEntry createDirectory(final String name) - throws IOException - { - return getRoot().createDirectory(name); - } - - /** - * Write the filesystem out - * - * @param stream the OutputStream to which the filesystem will be - * written - * - * @exception IOException thrown on errors writing to the stream - */ - - public void writeFilesystem(final OutputStream stream) - throws IOException - { - - // get the property table ready - _property_table.preWrite(); - - // create the small block store, and the SBAT - SmallBlockTableWriter sbtw = - new SmallBlockTableWriter(bigBlockSize, _documents, _property_table.getRoot()); - - // create the block allocation table - BlockAllocationTableWriter bat = - new BlockAllocationTableWriter(bigBlockSize); - - // create a list of BATManaged objects: the documents plus the - // property table and the small block table - List bm_objects = new ArrayList(); - - bm_objects.addAll(_documents); - bm_objects.add(_property_table); - bm_objects.add(sbtw); - bm_objects.add(sbtw.getSBAT()); - - // walk the list, allocating space for each and assigning each - // a starting block number - Iterator iter = bm_objects.iterator(); - - while (iter.hasNext()) - { - BATManaged bmo = ( BATManaged ) iter.next(); - int block_count = bmo.countBlocks(); - - if (block_count != 0) - { - bmo.setStartBlock(bat.allocateSpace(block_count)); - } - else - { - - // Either the BATManaged object is empty or its data - // is composed of SmallBlocks; in either case, - // allocating space in the BAT is inappropriate - } - } - - // allocate space for the block allocation table and take its - // starting block - int batStartBlock = bat.createBlocks(); - - // get the extended block allocation table blocks - HeaderBlockWriter header_block_writer = new HeaderBlockWriter(bigBlockSize); - BATBlock[] xbat_blocks = - header_block_writer.setBATBlocks(bat.countBlocks(), - batStartBlock); - - // set the property table start block - header_block_writer.setPropertyStart(_property_table.getStartBlock()); - - // set the small block allocation table start block - header_block_writer.setSBATStart(sbtw.getSBAT().getStartBlock()); - - // set the small block allocation table block count - header_block_writer.setSBATBlockCount(sbtw.getSBATBlockCount()); - - // the header is now properly initialized. Make a list of - // writers (the header block, followed by the documents, the - // property table, the small block store, the small block - // allocation table, the block allocation table, and the - // extended block allocation table blocks) - List writers = new ArrayList(); - - writers.add(header_block_writer); - writers.addAll(_documents); - writers.add(_property_table); - writers.add(sbtw); - writers.add(sbtw.getSBAT()); - writers.add(bat); - for (int j = 0; j < xbat_blocks.length; j++) - { - writers.add(xbat_blocks[ j ]); - } - - // now, write everything out - iter = writers.iterator(); - while (iter.hasNext()) - { - BlockWritable writer = ( BlockWritable ) iter.next(); - - writer.writeBlocks(stream); - } + return OPOIFSFileSystem.hasPOIFSHeader(header8Bytes); } /** @@ -394,216 +117,7 @@ public class POIFSFileSystem public static void main(String args[]) throws IOException { - if (args.length != 2) - { - System.err.println( - "two arguments required: input filename and output filename"); - System.exit(1); - } - FileInputStream istream = new FileInputStream(args[ 0 ]); - FileOutputStream ostream = new FileOutputStream(args[ 1 ]); - - new POIFSFileSystem(istream).writeFilesystem(ostream); - istream.close(); - ostream.close(); + OPOIFSFileSystem.main(args); } - - /** - * get the root entry - * - * @return the root entry - */ - - public DirectoryNode getRoot() - { - if (_root == null) - { - _root = new DirectoryNode(_property_table.getRoot(), this, null); - } - return _root; - } - - /** - * open a document in the root entry's list of entries - * - * @param documentName the name of the document to be opened - * - * @return a newly opened DocumentInputStream - * - * @exception IOException if the document does not exist or the - * name is that of a DirectoryEntry - */ - - public DocumentInputStream createDocumentInputStream( - final String documentName) - throws IOException - { - return getRoot().createDocumentInputStream(documentName); - } - - /** - * add a new POIFSDocument - * - * @param document the POIFSDocument being added - */ - - void addDocument(final OPOIFSDocument document) - { - _documents.add(document); - _property_table.addProperty(document.getDocumentProperty()); - } - - /** - * add a new DirectoryProperty - * - * @param directory the DirectoryProperty being added - */ - - void addDirectory(final DirectoryProperty directory) - { - _property_table.addProperty(directory); - } - - /** - * remove an entry - * - * @param entry to be removed - */ - - void remove(EntryNode entry) - { - _property_table.removeProperty(entry.getProperty()); - if (entry.isDocumentEntry()) - { - _documents.remove((( DocumentNode ) entry).getDocument()); - } - } - - private void processProperties(final BlockList small_blocks, - final BlockList big_blocks, - final Iterator properties, - final DirectoryNode dir, - final int headerPropertiesStartAt) - throws IOException - { - while (properties.hasNext()) - { - Property property = properties.next(); - String name = property.getName(); - DirectoryNode parent = (dir == null) - ? (( DirectoryNode ) getRoot()) - : dir; - - if (property.isDirectory()) - { - DirectoryNode new_dir = - ( DirectoryNode ) parent.createDirectory(name); - - new_dir.setStorageClsid( property.getStorageClsid() ); - - processProperties( - small_blocks, big_blocks, - (( DirectoryProperty ) property).getChildren(), - new_dir, headerPropertiesStartAt); - } - else - { - int startBlock = property.getStartBlock(); - int size = property.getSize(); - OPOIFSDocument document = null; - - if (property.shouldUseSmallBlocks()) - { - document = - new OPOIFSDocument(name, - small_blocks.fetchBlocks(startBlock, headerPropertiesStartAt), - size); - } - else - { - document = - new OPOIFSDocument(name, - big_blocks.fetchBlocks(startBlock, headerPropertiesStartAt), - size); - } - parent.createDocument(document); - } - } - } - - /* ********** START begin implementation of POIFSViewable ********** */ - - /** - * Get an array of objects, some of which may implement - * POIFSViewable - * - * @return an array of Object; may not be null, but may be empty - */ - - public Object [] getViewableArray() - { - if (preferArray()) - { - return (( POIFSViewable ) getRoot()).getViewableArray(); - } - return new Object[ 0 ]; - } - - /** - * Get an Iterator of objects, some of which may implement - * POIFSViewable - * - * @return an Iterator; may not be null, but may have an empty - * back end store - */ - - public Iterator getViewableIterator() - { - if (!preferArray()) - { - return (( POIFSViewable ) getRoot()).getViewableIterator(); - } - return Collections.emptyList().iterator(); - } - - /** - * Give viewers a hint as to whether to call getViewableArray or - * getViewableIterator - * - * @return true if a viewer should call getViewableArray, false if - * a viewer should call getViewableIterator - */ - - public boolean preferArray() - { - return (( POIFSViewable ) getRoot()).preferArray(); - } - - /** - * Provides a short description of the object, to be used when a - * POIFSViewable object has not provided its contents. - * - * @return short description - */ - - public String getShortDescription() - { - return "POIFS FileSystem"; - } - - /** - * @return The Big Block size, normally 512 bytes, sometimes 4096 bytes - */ - public int getBigBlockSize() { - return bigBlockSize.getBigBlockSize(); - } - /** - * @return The Big Block size, normally 512 bytes, sometimes 4096 bytes - */ - public POIFSBigBlockSize getBigBlockSizeDetails() { - return bigBlockSize; - } - - /* ********** END begin implementation of POIFSViewable ********** */ -} // end public class POIFSFileSystem +} From dd8fc66a0c92b722d188def26f46454eea05c346 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 11 May 2015 18:59:10 +0000 Subject: [PATCH 141/301] #56791 More updates from OPOIFS to NPOIFS git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678801 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/poi/POIDocument.java | 16 ++++- .../poi/hpsf/HPSFPropertiesOnlyDocument.java | 4 ++ .../apache/poi/hssf/dev/BiffDrawingToXml.java | 4 +- .../org/apache/poi/hssf/dev/BiffViewer.java | 58 +++++++++++++++++-- .../poi/hssf/usermodel/HSSFPatriarch.java | 1 - .../poi/hssf/usermodel/HSSFWorkbook.java | 17 +++++- .../org/apache/poi/poifs/crypt/Decryptor.java | 5 +- .../poi/poifs/crypt/EncryptionInfo.java | 7 +++ .../org/apache/poi/poifs/crypt/Encryptor.java | 5 +- .../crypt/cryptoapi/CryptoAPIDecryptor.java | 5 +- .../org/apache/poi/poifs/dev/POIFSDump.java | 5 +- .../org/apache/poi/poifs/dev/POIFSViewer.java | 10 ++-- .../poifs/filesystem/DocumentInputStream.java | 2 +- .../poifs/filesystem/NPOIFSFileSystem.java | 9 +++ .../poi/poifs/property/PropertyTable.java | 1 - .../poi/util/CloseIgnoringInputStream.java | 2 - src/java/org/apache/poi/util/DrawingDump.java | 12 ++-- .../poi/extractor/ExtractorFactory.java | 41 +++++++------ .../poi/ss/usermodel/WorkbookFactory.java | 2 +- .../org/apache/poi/hdgf/dev/VSDDumper.java | 6 +- .../hdgf/extractor/VisioTextExtractor.java | 2 +- .../src/org/apache/poi/hpbf/HPBFDocument.java | 11 +--- .../org/apache/poi/hpbf/dev/HPBFDumper.java | 8 +-- .../org/apache/poi/hpbf/dev/PLCDumper.java | 6 +- .../extractor/PublisherTextExtractor.java | 4 -- .../org/apache/poi/hslf/HSLFSlideShow.java | 18 +----- .../org/apache/poi/hslf/dev/PPTXMLDump.java | 7 +-- .../apache/poi/hslf/dev/SlideShowDumper.java | 32 +++++----- .../hslf/extractor/PowerPointExtractor.java | 13 +---- .../QuickButCruddyTextExtractor.java | 14 ++--- .../org/apache/poi/TestPOIDocumentMain.java | 4 +- .../apache/poi/hpsf/basic/TestHPSFBugs.java | 12 ++-- .../poi/hssf/HSSFITestDataProvider.java | 5 ++ .../apache/poi/hssf/usermodel/TestBugs.java | 20 ++++++- 34 files changed, 219 insertions(+), 149 deletions(-) diff --git a/src/java/org/apache/poi/POIDocument.java b/src/java/org/apache/poi/POIDocument.java index 50c088ba7..4345d4b1c 100644 --- a/src/java/org/apache/poi/POIDocument.java +++ b/src/java/org/apache/poi/POIDocument.java @@ -33,6 +33,7 @@ import org.apache.poi.poifs.crypt.EncryptionInfo; import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.poifs.filesystem.DocumentInputStream; import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; +import org.apache.poi.poifs.filesystem.OPOIFSFileSystem; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.util.POILogFactory; import org.apache.poi.util.POILogger; @@ -65,13 +66,24 @@ public abstract class POIDocument { this.directory = dir; } - protected POIDocument(POIFSFileSystem fs) { + /** + * Constructs from an old-style OPOIFS + */ + protected POIDocument(OPOIFSFileSystem fs) { this(fs.getRoot()); } - + /** + * Constructs from an old-style OPOIFS + */ protected POIDocument(NPOIFSFileSystem fs) { this(fs.getRoot()); } + /** + * Constructs from the default POIFS + */ + protected POIDocument(POIFSFileSystem fs) { + this(fs.getRoot()); + } /** * Fetch the Document Summary Information of the document diff --git a/src/java/org/apache/poi/hpsf/HPSFPropertiesOnlyDocument.java b/src/java/org/apache/poi/hpsf/HPSFPropertiesOnlyDocument.java index ea6bc0b1b..9b0f84d47 100644 --- a/src/java/org/apache/poi/hpsf/HPSFPropertiesOnlyDocument.java +++ b/src/java/org/apache/poi/hpsf/HPSFPropertiesOnlyDocument.java @@ -24,6 +24,7 @@ import java.util.List; import org.apache.poi.POIDocument; import org.apache.poi.poifs.filesystem.EntryUtils; import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; +import org.apache.poi.poifs.filesystem.OPOIFSFileSystem; import org.apache.poi.poifs.filesystem.POIFSFileSystem; /** @@ -36,6 +37,9 @@ public class HPSFPropertiesOnlyDocument extends POIDocument { public HPSFPropertiesOnlyDocument(NPOIFSFileSystem fs) { super(fs.getRoot()); } + public HPSFPropertiesOnlyDocument(OPOIFSFileSystem fs) { + super(fs); + } public HPSFPropertiesOnlyDocument(POIFSFileSystem fs) { super(fs); } diff --git a/src/java/org/apache/poi/hssf/dev/BiffDrawingToXml.java b/src/java/org/apache/poi/hssf/dev/BiffDrawingToXml.java index c9f987271..ca35c631b 100644 --- a/src/java/org/apache/poi/hssf/dev/BiffDrawingToXml.java +++ b/src/java/org/apache/poi/hssf/dev/BiffDrawingToXml.java @@ -34,7 +34,7 @@ import org.apache.poi.hssf.record.DrawingGroupRecord; import org.apache.poi.hssf.record.EscherAggregate; import org.apache.poi.hssf.usermodel.HSSFPatriarch; import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; /** * Utility for representing drawings contained in a binary Excel file as a XML tree @@ -138,7 +138,7 @@ public class BiffDrawingToXml { } public static void writeToFile(OutputStream fos, InputStream xlsWorkbook, boolean excludeWorkbookRecords, String[] params) throws IOException { - POIFSFileSystem fs = new POIFSFileSystem(xlsWorkbook); + NPOIFSFileSystem fs = new NPOIFSFileSystem(xlsWorkbook); HSSFWorkbook workbook = new HSSFWorkbook(fs); InternalWorkbook internalWorkbook = getInternalWorkbook(workbook); DrawingGroupRecord r = (DrawingGroupRecord) internalWorkbook.findFirstRecordBySid(DrawingGroupRecord.sid); diff --git a/src/java/org/apache/poi/hssf/dev/BiffViewer.java b/src/java/org/apache/poi/hssf/dev/BiffViewer.java index 5451b2789..42d851de7 100644 --- a/src/java/org/apache/poi/hssf/dev/BiffViewer.java +++ b/src/java/org/apache/poi/hssf/dev/BiffViewer.java @@ -17,13 +17,63 @@ package org.apache.poi.hssf.dev; -import java.io.*; +import java.io.DataInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.PrintStream; +import java.io.Writer; import java.util.ArrayList; import java.util.List; import org.apache.poi.hssf.record.*; import org.apache.poi.hssf.record.RecordInputStream.LeftoverDataException; -import org.apache.poi.hssf.record.chart.*; +import org.apache.poi.hssf.record.chart.AreaFormatRecord; +import org.apache.poi.hssf.record.chart.AreaRecord; +import org.apache.poi.hssf.record.chart.AxisLineFormatRecord; +import org.apache.poi.hssf.record.chart.AxisOptionsRecord; +import org.apache.poi.hssf.record.chart.AxisParentRecord; +import org.apache.poi.hssf.record.chart.AxisRecord; +import org.apache.poi.hssf.record.chart.AxisUsedRecord; +import org.apache.poi.hssf.record.chart.BarRecord; +import org.apache.poi.hssf.record.chart.BeginRecord; +import org.apache.poi.hssf.record.chart.CatLabRecord; +import org.apache.poi.hssf.record.chart.CategorySeriesAxisRecord; +import org.apache.poi.hssf.record.chart.ChartEndBlockRecord; +import org.apache.poi.hssf.record.chart.ChartEndObjectRecord; +import org.apache.poi.hssf.record.chart.ChartFRTInfoRecord; +import org.apache.poi.hssf.record.chart.ChartFormatRecord; +import org.apache.poi.hssf.record.chart.ChartRecord; +import org.apache.poi.hssf.record.chart.ChartStartBlockRecord; +import org.apache.poi.hssf.record.chart.ChartStartObjectRecord; +import org.apache.poi.hssf.record.chart.DatRecord; +import org.apache.poi.hssf.record.chart.DataFormatRecord; +import org.apache.poi.hssf.record.chart.DefaultDataLabelTextPropertiesRecord; +import org.apache.poi.hssf.record.chart.EndRecord; +import org.apache.poi.hssf.record.chart.FontBasisRecord; +import org.apache.poi.hssf.record.chart.FontIndexRecord; +import org.apache.poi.hssf.record.chart.FrameRecord; +import org.apache.poi.hssf.record.chart.LegendRecord; +import org.apache.poi.hssf.record.chart.LineFormatRecord; +import org.apache.poi.hssf.record.chart.LinkedDataRecord; +import org.apache.poi.hssf.record.chart.ObjectLinkRecord; +import org.apache.poi.hssf.record.chart.PlotAreaRecord; +import org.apache.poi.hssf.record.chart.PlotGrowthRecord; +import org.apache.poi.hssf.record.chart.SeriesIndexRecord; +import org.apache.poi.hssf.record.chart.SeriesListRecord; +import org.apache.poi.hssf.record.chart.SeriesRecord; +import org.apache.poi.hssf.record.chart.SeriesTextRecord; +import org.apache.poi.hssf.record.chart.SeriesToChartGroupRecord; +import org.apache.poi.hssf.record.chart.SheetPropertiesRecord; +import org.apache.poi.hssf.record.chart.TextRecord; +import org.apache.poi.hssf.record.chart.TickRecord; +import org.apache.poi.hssf.record.chart.UnitsRecord; +import org.apache.poi.hssf.record.chart.ValueRangeRecord; import org.apache.poi.hssf.record.pivottable.DataItemRecord; import org.apache.poi.hssf.record.pivottable.ExtendedPivotTableViewFieldsRecord; import org.apache.poi.hssf.record.pivottable.PageItemRecord; @@ -32,7 +82,7 @@ import org.apache.poi.hssf.record.pivottable.ViewDefinitionRecord; import org.apache.poi.hssf.record.pivottable.ViewFieldsRecord; import org.apache.poi.hssf.record.pivottable.ViewSourceRecord; import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; import org.apache.poi.util.HexDump; import org.apache.poi.util.LittleEndian; @@ -420,7 +470,7 @@ public final class BiffViewer { protected static InputStream getPOIFSInputStream(File file) throws IOException, FileNotFoundException { - POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(file)); + NPOIFSFileSystem fs = new NPOIFSFileSystem(new FileInputStream(file)); String workbookName = HSSFWorkbook.getWorkbookDirEntryName(fs.getRoot()); return fs.createDocumentInputStream(workbookName); } diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFPatriarch.java b/src/java/org/apache/poi/hssf/usermodel/HSSFPatriarch.java index dda4b3957..04f57b493 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFPatriarch.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFPatriarch.java @@ -45,7 +45,6 @@ import org.apache.poi.hssf.record.ObjRecord; import org.apache.poi.hssf.util.CellReference; import org.apache.poi.poifs.filesystem.DirectoryEntry; import org.apache.poi.poifs.filesystem.DirectoryNode; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.ss.usermodel.Chart; import org.apache.poi.ss.usermodel.ClientAnchor; import org.apache.poi.ss.usermodel.Drawing; diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java index be1c7ef9f..65ec1a33e 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java @@ -206,6 +206,19 @@ public final class HSSFWorkbook extends POIDocument implements org.apache.poi.ss public HSSFWorkbook(POIFSFileSystem fs) throws IOException { this(fs,true); } + /** + * Given a POI POIFSFileSystem object, read in its Workbook along + * with all related nodes, and populate the high and low level models. + *

This calls {@link #HSSFWorkbook(POIFSFileSystem, boolean)} with + * preserve nodes set to true. + * + * @see #HSSFWorkbook(POIFSFileSystem, boolean) + * @see org.apache.poi.poifs.filesystem.POIFSFileSystem + * @exception IOException if the stream cannot be read + */ + public HSSFWorkbook(NPOIFSFileSystem fs) throws IOException { + this(fs.getRoot(),true); + } /** * Given a POI POIFSFileSystem object, read in its Workbook and populate @@ -379,7 +392,7 @@ public final class HSSFWorkbook extends POIDocument implements org.apache.poi.ss public HSSFWorkbook(InputStream s, boolean preserveNodes) throws IOException { - this(new POIFSFileSystem(s), preserveNodes); + this(new NPOIFSFileSystem(s).getRoot(), preserveNodes); } /** @@ -1844,7 +1857,7 @@ public final class HSSFWorkbook extends POIDocument implements org.apache.poi.ss throws IOException { // check if we were created by POIFS otherwise create a new dummy POIFS for storing the package data if (directory == null) { - directory = new POIFSFileSystem().getRoot(); + directory = new NPOIFSFileSystem().getRoot(); preserveNodes = true; } diff --git a/src/java/org/apache/poi/poifs/crypt/Decryptor.java b/src/java/org/apache/poi/poifs/crypt/Decryptor.java index d584346f9..eb94dca98 100644 --- a/src/java/org/apache/poi/poifs/crypt/Decryptor.java +++ b/src/java/org/apache/poi/poifs/crypt/Decryptor.java @@ -25,6 +25,7 @@ import javax.crypto.SecretKey; import org.apache.poi.EncryptedDocumentException; import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; +import org.apache.poi.poifs.filesystem.OPOIFSFileSystem; import org.apache.poi.poifs.filesystem.POIFSFileSystem; public abstract class Decryptor { @@ -84,7 +85,9 @@ public abstract class Decryptor { public InputStream getDataStream(NPOIFSFileSystem fs) throws IOException, GeneralSecurityException { return getDataStream(fs.getRoot()); } - + public InputStream getDataStream(OPOIFSFileSystem fs) throws IOException, GeneralSecurityException { + return getDataStream(fs.getRoot()); + } public InputStream getDataStream(POIFSFileSystem fs) throws IOException, GeneralSecurityException { return getDataStream(fs.getRoot()); } diff --git a/src/java/org/apache/poi/poifs/crypt/EncryptionInfo.java b/src/java/org/apache/poi/poifs/crypt/EncryptionInfo.java index 2c2a42258..3aafb90ca 100644 --- a/src/java/org/apache/poi/poifs/crypt/EncryptionInfo.java +++ b/src/java/org/apache/poi/poifs/crypt/EncryptionInfo.java @@ -26,6 +26,7 @@ import java.io.IOException; import org.apache.poi.EncryptedDocumentException; import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; +import org.apache.poi.poifs.filesystem.OPOIFSFileSystem; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.util.BitField; import org.apache.poi.util.BitFieldFactory; @@ -74,6 +75,12 @@ public class EncryptionInfo { public EncryptionInfo(POIFSFileSystem fs) throws IOException { this(fs.getRoot()); } + /** + * Opens for decryption + */ + public EncryptionInfo(OPOIFSFileSystem fs) throws IOException { + this(fs.getRoot()); + } /** * Opens for decryption */ diff --git a/src/java/org/apache/poi/poifs/crypt/Encryptor.java b/src/java/org/apache/poi/poifs/crypt/Encryptor.java index 4c1b51258..d40f8ae5d 100644 --- a/src/java/org/apache/poi/poifs/crypt/Encryptor.java +++ b/src/java/org/apache/poi/poifs/crypt/Encryptor.java @@ -24,6 +24,7 @@ import javax.crypto.SecretKey; import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; +import org.apache.poi.poifs.filesystem.OPOIFSFileSystem; import org.apache.poi.poifs.filesystem.POIFSFileSystem; public abstract class Encryptor { @@ -51,7 +52,9 @@ public abstract class Encryptor { public OutputStream getDataStream(NPOIFSFileSystem fs) throws IOException, GeneralSecurityException { return getDataStream(fs.getRoot()); } - + public OutputStream getDataStream(OPOIFSFileSystem fs) throws IOException, GeneralSecurityException { + return getDataStream(fs.getRoot()); + } public OutputStream getDataStream(POIFSFileSystem fs) throws IOException, GeneralSecurityException { return getDataStream(fs.getRoot()); } diff --git a/src/java/org/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor.java b/src/java/org/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor.java index c1ae13cee..1e470d726 100644 --- a/src/java/org/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor.java +++ b/src/java/org/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDecryptor.java @@ -40,7 +40,7 @@ import org.apache.poi.poifs.crypt.HashAlgorithm; import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.poifs.filesystem.DocumentInputStream; import org.apache.poi.poifs.filesystem.DocumentNode; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; import org.apache.poi.util.BitField; import org.apache.poi.util.BitFieldFactory; import org.apache.poi.util.BoundedInputStream; @@ -200,7 +200,7 @@ public class CryptoAPIDecryptor extends Decryptor { @SuppressWarnings("unused") public InputStream getDataStream(DirectoryNode dir) throws IOException, GeneralSecurityException { - POIFSFileSystem fsOut = new POIFSFileSystem(); + NPOIFSFileSystem fsOut = new NPOIFSFileSystem(); DocumentNode es = (DocumentNode) dir.getEntry("EncryptedSummary"); DocumentInputStream dis = dir.createDocumentInputStream(es); ByteArrayOutputStream bos = new ByteArrayOutputStream(); @@ -240,6 +240,7 @@ public class CryptoAPIDecryptor extends Decryptor { sbis = null; bos.reset(); fsOut.writeFilesystem(bos); + fsOut.close(); _length = bos.size(); ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); return bis; diff --git a/src/java/org/apache/poi/poifs/dev/POIFSDump.java b/src/java/org/apache/poi/poifs/dev/POIFSDump.java index 66597fd4d..3af3690fd 100644 --- a/src/java/org/apache/poi/poifs/dev/POIFSDump.java +++ b/src/java/org/apache/poi/poifs/dev/POIFSDump.java @@ -26,10 +26,7 @@ import java.io.OutputStream; import java.util.Iterator; /** - * * Dump internal structure of a OLE2 file into file system - * - * @author Yegor Kozlov */ public class POIFSDump { @@ -37,7 +34,7 @@ public class POIFSDump { for (int i = 0; i < args.length; i++) { System.out.println("Dumping " + args[i]); FileInputStream is = new FileInputStream(args[i]); - POIFSFileSystem fs = new POIFSFileSystem(is); + NPOIFSFileSystem fs = new NPOIFSFileSystem(is); is.close(); DirectoryEntry root = fs.getRoot(); diff --git a/src/java/org/apache/poi/poifs/dev/POIFSViewer.java b/src/java/org/apache/poi/poifs/dev/POIFSViewer.java index 8b8173426..4614376db 100644 --- a/src/java/org/apache/poi/poifs/dev/POIFSViewer.java +++ b/src/java/org/apache/poi/poifs/dev/POIFSViewer.java @@ -19,12 +19,12 @@ package org.apache.poi.poifs.dev; -import java.io.FileInputStream; +import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.List; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; /** * A simple viewer for POIFS files @@ -76,10 +76,10 @@ public class POIFSViewer try { POIFSViewable fs = - new POIFSFileSystem(new FileInputStream(filename)); - List strings = POIFSViewEngine.inspectViewable(fs, true, + new NPOIFSFileSystem(new File(filename)); + List strings = POIFSViewEngine.inspectViewable(fs, true, 0, " "); - Iterator iter = strings.iterator(); + Iterator iter = strings.iterator(); while (iter.hasNext()) { diff --git a/src/java/org/apache/poi/poifs/filesystem/DocumentInputStream.java b/src/java/org/apache/poi/poifs/filesystem/DocumentInputStream.java index 35d0c2365..82959c7ff 100644 --- a/src/java/org/apache/poi/poifs/filesystem/DocumentInputStream.java +++ b/src/java/org/apache/poi/poifs/filesystem/DocumentInputStream.java @@ -58,7 +58,7 @@ public class DocumentInputStream extends InputStream implements LittleEndianInpu if(documentNode.getDocument() != null) { delegate = new ODocumentInputStream(document); - } else if(parentNode.getFileSystem() != null) { + } else if(parentNode.getOFileSystem() != null) { delegate = new ODocumentInputStream(document); } else if(parentNode.getNFileSystem() != null) { delegate = new NDocumentInputStream(document); diff --git a/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java b/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java index 3aa070719..4ad5c0a5b 100644 --- a/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java +++ b/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java @@ -376,6 +376,15 @@ public class NPOIFSFileSystem extends BlockStore return (signature.get() == HeaderBlockConstants._signature); } + /** + * Checks if the supplied first 8 bytes of a stream / file + * has a POIFS (OLE2) header. + */ + public static boolean hasPOIFSHeader(byte[] header8Bytes) { + LongField signature = new LongField(HeaderBlockConstants._signature_offset, header8Bytes); + return (signature.get() == HeaderBlockConstants._signature); + } + /** * Read and process the PropertiesTable and the * FAT / XFAT blocks, so that we're ready to diff --git a/src/java/org/apache/poi/poifs/property/PropertyTable.java b/src/java/org/apache/poi/poifs/property/PropertyTable.java index 45a973415..28d49cde1 100644 --- a/src/java/org/apache/poi/poifs/property/PropertyTable.java +++ b/src/java/org/apache/poi/poifs/property/PropertyTable.java @@ -21,7 +21,6 @@ import java.io.IOException; import java.io.OutputStream; import org.apache.poi.poifs.common.POIFSBigBlockSize; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.poifs.storage.BlockWritable; import org.apache.poi.poifs.storage.HeaderBlock; import org.apache.poi.poifs.storage.PropertyBlock; diff --git a/src/java/org/apache/poi/util/CloseIgnoringInputStream.java b/src/java/org/apache/poi/util/CloseIgnoringInputStream.java index f4896a831..0ccc24ee9 100644 --- a/src/java/org/apache/poi/util/CloseIgnoringInputStream.java +++ b/src/java/org/apache/poi/util/CloseIgnoringInputStream.java @@ -20,8 +20,6 @@ package org.apache.poi.util; import java.io.FilterInputStream; import java.io.InputStream; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; - /** * A wrapper around an {@link InputStream}, which * ignores close requests made to it. diff --git a/src/java/org/apache/poi/util/DrawingDump.java b/src/java/org/apache/poi/util/DrawingDump.java index 1055ab2da..4eb6a2aff 100644 --- a/src/java/org/apache/poi/util/DrawingDump.java +++ b/src/java/org/apache/poi/util/DrawingDump.java @@ -18,12 +18,12 @@ package org.apache.poi.util; +import java.io.File; +import java.io.IOException; + import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; - -import java.io.FileInputStream; -import java.io.IOException; +import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; /** * Dump out the aggregated escher records @@ -32,8 +32,8 @@ public class DrawingDump { public static void main( String[] args ) throws IOException { - POIFSFileSystem fs = - new POIFSFileSystem(new FileInputStream(args[0])); + NPOIFSFileSystem fs = + new NPOIFSFileSystem(new File(args[0])); HSSFWorkbook wb = new HSSFWorkbook(fs); try { System.out.println( "Drawing group:" ); diff --git a/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java b/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java index b484e2ed0..2ef23d2da 100644 --- a/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java +++ b/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java @@ -18,7 +18,6 @@ package org.apache.poi.extractor; import java.io.ByteArrayInputStream; import java.io.File; -import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; @@ -51,6 +50,10 @@ import org.apache.poi.openxml4j.opc.PackageRelationshipTypes; import org.apache.poi.poifs.filesystem.DirectoryEntry; import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.poifs.filesystem.Entry; +import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; +import org.apache.poi.poifs.filesystem.NotOLE2FileException; +import org.apache.poi.poifs.filesystem.OPOIFSFileSystem; +import org.apache.poi.poifs.filesystem.OfficeXmlFileException; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.xslf.XSLFSlideShow; import org.apache.poi.xslf.extractor.XSLFPowerPointExtractor; @@ -128,16 +131,14 @@ public class ExtractorFactory { public static POITextExtractor createExtractor(File f) throws IOException, InvalidFormatException, OpenXML4JException, XmlException { InputStream inp = null; try { - inp = new PushbackInputStream( - new FileInputStream(f), 8); - - if(POIFSFileSystem.hasPOIFSHeader(inp)) { - return createExtractor(new POIFSFileSystem(inp)); - } - if(POIXMLDocument.hasOOXMLHeader(inp)) { + try { + NPOIFSFileSystem fs = new NPOIFSFileSystem(f); + return createExtractor(fs); + } catch (OfficeXmlFileException e) { return createExtractor(OPCPackage.open(f.toString(), PackageAccess.READ)); + } catch (NotOLE2FileException ne) { + throw new IllegalArgumentException("Your File was neither an OLE2 file, nor an OOXML file"); } - throw new IllegalArgumentException("Your File was neither an OLE2 file, nor an OOXML file"); } finally { if(inp != null) inp.close(); } @@ -150,8 +151,8 @@ public class ExtractorFactory { inp = new PushbackInputStream(inp, 8); } - if(POIFSFileSystem.hasPOIFSHeader(inp)) { - return createExtractor(new POIFSFileSystem(inp)); + if(NPOIFSFileSystem.hasPOIFSHeader(inp)) { + return createExtractor(new NPOIFSFileSystem(inp)); } if(POIXMLDocument.hasOOXMLHeader(inp)) { return createExtractor(OPCPackage.open(inp)); @@ -226,16 +227,14 @@ public class ExtractorFactory { // Only ever an OLE2 one from the root of the FS return (POIOLE2TextExtractor)createExtractor(fs.getRoot()); } - - /** - * @deprecated Use {@link #createExtractor(DirectoryNode)} instead - */ - @Deprecated - public static POITextExtractor createExtractor(DirectoryNode poifsDir, POIFSFileSystem fs) - throws IOException, InvalidFormatException, OpenXML4JException, XmlException - { - return createExtractor(poifsDir); - } + public static POIOLE2TextExtractor createExtractor(NPOIFSFileSystem fs) throws IOException, InvalidFormatException, OpenXML4JException, XmlException { + // Only ever an OLE2 one from the root of the FS + return (POIOLE2TextExtractor)createExtractor(fs.getRoot()); + } + public static POIOLE2TextExtractor createExtractor(OPOIFSFileSystem fs) throws IOException, InvalidFormatException, OpenXML4JException, XmlException { + // Only ever an OLE2 one from the root of the FS + return (POIOLE2TextExtractor)createExtractor(fs.getRoot()); + } public static POITextExtractor createExtractor(DirectoryNode poifsDir) throws IOException, InvalidFormatException, OpenXML4JException, XmlException diff --git a/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java b/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java index 80d9b76d4..3f5d5ea83 100644 --- a/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java +++ b/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java @@ -167,7 +167,7 @@ public class WorkbookFactory { byte[] header8 = IOUtils.peekFirst8Bytes(inp); // Try to create - if (POIFSFileSystem.hasPOIFSHeader(header8)) { + if (NPOIFSFileSystem.hasPOIFSHeader(header8)) { NPOIFSFileSystem fs = new NPOIFSFileSystem(inp); return create(fs, password); } diff --git a/src/scratchpad/src/org/apache/poi/hdgf/dev/VSDDumper.java b/src/scratchpad/src/org/apache/poi/hdgf/dev/VSDDumper.java index ed5e700d0..40a8a7b31 100644 --- a/src/scratchpad/src/org/apache/poi/hdgf/dev/VSDDumper.java +++ b/src/scratchpad/src/org/apache/poi/hdgf/dev/VSDDumper.java @@ -17,7 +17,7 @@ package org.apache.poi.hdgf.dev; -import java.io.FileInputStream; +import java.io.File; import org.apache.poi.hdgf.HDGFDiagram; import org.apache.poi.hdgf.chunks.Chunk; @@ -26,7 +26,7 @@ import org.apache.poi.hdgf.pointers.Pointer; import org.apache.poi.hdgf.streams.ChunkStream; import org.apache.poi.hdgf.streams.PointerContainingStream; import org.apache.poi.hdgf.streams.Stream; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; /** * Developer helper class to dump out the pointer+stream structure @@ -41,7 +41,7 @@ public final class VSDDumper { } HDGFDiagram hdgf = new HDGFDiagram( - new POIFSFileSystem(new FileInputStream(args[0])) + new NPOIFSFileSystem(new File(args[0])) ); System.out.println("Opened " + args[0]); diff --git a/src/scratchpad/src/org/apache/poi/hdgf/extractor/VisioTextExtractor.java b/src/scratchpad/src/org/apache/poi/hdgf/extractor/VisioTextExtractor.java index 0290d5913..d37a28eb2 100644 --- a/src/scratchpad/src/org/apache/poi/hdgf/extractor/VisioTextExtractor.java +++ b/src/scratchpad/src/org/apache/poi/hdgf/extractor/VisioTextExtractor.java @@ -62,7 +62,7 @@ public final class VisioTextExtractor extends POIOLE2TextExtractor { this(new HDGFDiagram(dir, fs)); } public VisioTextExtractor(InputStream inp) throws IOException { - this(new POIFSFileSystem(inp)); + this(new NPOIFSFileSystem(inp)); } /** diff --git a/src/scratchpad/src/org/apache/poi/hpbf/HPBFDocument.java b/src/scratchpad/src/org/apache/poi/hpbf/HPBFDocument.java index 69602e7d8..fb046c803 100644 --- a/src/scratchpad/src/org/apache/poi/hpbf/HPBFDocument.java +++ b/src/scratchpad/src/org/apache/poi/hpbf/HPBFDocument.java @@ -51,18 +51,9 @@ public final class HPBFDocument extends POIDocument { this(fs.getRoot()); } public HPBFDocument(InputStream inp) throws IOException { - this(new POIFSFileSystem(inp)); + this(new NPOIFSFileSystem(inp)); } - /** - * Opens an embedded publisher document, - * at the given directory. - * @deprecated Use {@link #HPBFDocument(DirectoryNode)} instead - */ - @Deprecated - public HPBFDocument(DirectoryNode dir, POIFSFileSystem fs) throws IOException { - this(dir); - } /** * Opens an embedded publisher document, * at the given directory. diff --git a/src/scratchpad/src/org/apache/poi/hpbf/dev/HPBFDumper.java b/src/scratchpad/src/org/apache/poi/hpbf/dev/HPBFDumper.java index df4bb15a4..3ea5e9a35 100644 --- a/src/scratchpad/src/org/apache/poi/hpbf/dev/HPBFDumper.java +++ b/src/scratchpad/src/org/apache/poi/hpbf/dev/HPBFDumper.java @@ -25,7 +25,7 @@ import org.apache.poi.ddf.DefaultEscherRecordFactory; import org.apache.poi.ddf.EscherRecord; import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.poifs.filesystem.DocumentEntry; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; import org.apache.poi.util.LittleEndian; import org.apache.poi.util.StringUtil; @@ -35,12 +35,12 @@ import org.apache.poi.util.StringUtil; * constructed. */ public final class HPBFDumper { - private POIFSFileSystem fs; - public HPBFDumper(POIFSFileSystem fs) { + private NPOIFSFileSystem fs; + public HPBFDumper(NPOIFSFileSystem fs) { this.fs = fs; } public HPBFDumper(InputStream inp) throws IOException { - this(new POIFSFileSystem(inp)); + this(new NPOIFSFileSystem(inp)); } private static byte[] getData(DirectoryNode dir, String name) throws IOException { diff --git a/src/scratchpad/src/org/apache/poi/hpbf/dev/PLCDumper.java b/src/scratchpad/src/org/apache/poi/hpbf/dev/PLCDumper.java index c6bfca93b..7625a08b8 100644 --- a/src/scratchpad/src/org/apache/poi/hpbf/dev/PLCDumper.java +++ b/src/scratchpad/src/org/apache/poi/hpbf/dev/PLCDumper.java @@ -24,7 +24,7 @@ import java.io.InputStream; import org.apache.poi.hpbf.HPBFDocument; import org.apache.poi.hpbf.model.QuillContents; import org.apache.poi.hpbf.model.qcbits.QCBit; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; import org.apache.poi.util.HexDump; /** @@ -40,11 +40,11 @@ public final class PLCDumper { doc = hpbfDoc; qc = doc.getQuillContents(); } - public PLCDumper(POIFSFileSystem fs) throws IOException { + public PLCDumper(NPOIFSFileSystem fs) throws IOException { this(new HPBFDocument(fs)); } public PLCDumper(InputStream inp) throws IOException { - this(new POIFSFileSystem(inp)); + this(new NPOIFSFileSystem(inp)); } public static void main(String[] args) throws Exception { diff --git a/src/scratchpad/src/org/apache/poi/hpbf/extractor/PublisherTextExtractor.java b/src/scratchpad/src/org/apache/poi/hpbf/extractor/PublisherTextExtractor.java index be238b6f3..2295f235f 100644 --- a/src/scratchpad/src/org/apache/poi/hpbf/extractor/PublisherTextExtractor.java +++ b/src/scratchpad/src/org/apache/poi/hpbf/extractor/PublisherTextExtractor.java @@ -53,10 +53,6 @@ public final class PublisherTextExtractor extends POIOLE2TextExtractor { public PublisherTextExtractor(InputStream is) throws IOException { this(new POIFSFileSystem(is)); } - @Deprecated - public PublisherTextExtractor(DirectoryNode dir, POIFSFileSystem fs) throws IOException { - this(new HPBFDocument(dir, fs)); - } /** * Should a call to getText() return hyperlinks inline diff --git a/src/scratchpad/src/org/apache/poi/hslf/HSLFSlideShow.java b/src/scratchpad/src/org/apache/poi/hslf/HSLFSlideShow.java index 5097ea39c..f5ac0c3b1 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/HSLFSlideShow.java +++ b/src/scratchpad/src/org/apache/poi/hslf/HSLFSlideShow.java @@ -123,7 +123,7 @@ public final class HSLFSlideShow extends POIDocument { */ public HSLFSlideShow(InputStream inputStream) throws IOException { //do Ole stuff - this(new POIFSFileSystem(inputStream)); + this(new NPOIFSFileSystem(inputStream)); } /** @@ -150,22 +150,6 @@ public final class HSLFSlideShow extends POIDocument { this(filesystem.getRoot()); } - /** - * Constructs a Powerpoint document from a specific point in a - * POIFS Filesystem. Parses the document and places all the - * important stuff into data structures. - * - * @deprecated Use {@link #HSLFSlideShow(DirectoryNode)} instead - * @param dir the POIFS directory to read from - * @param filesystem the POIFS FileSystem to read from - * @throws IOException if there is a problem while parsing the document. - */ - @Deprecated - public HSLFSlideShow(DirectoryNode dir, POIFSFileSystem filesystem) throws IOException - { - this(dir); - } - /** * Constructs a Powerpoint document from a specific point in a * POIFS Filesystem. Parses the document and places all the diff --git a/src/scratchpad/src/org/apache/poi/hslf/dev/PPTXMLDump.java b/src/scratchpad/src/org/apache/poi/hslf/dev/PPTXMLDump.java index 0b5755261..dad74ffa6 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/dev/PPTXMLDump.java +++ b/src/scratchpad/src/org/apache/poi/hslf/dev/PPTXMLDump.java @@ -18,7 +18,6 @@ package org.apache.poi.hslf.dev; import java.io.File; -import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; @@ -28,7 +27,7 @@ import java.io.Writer; import org.apache.poi.hslf.record.RecordTypes; import org.apache.poi.poifs.filesystem.DocumentEntry; import org.apache.poi.poifs.filesystem.DocumentInputStream; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; import org.apache.poi.util.LittleEndian; /** @@ -50,9 +49,7 @@ public final class PPTXMLDump { protected boolean hexHeader = true; public PPTXMLDump(File ppt) throws IOException { - FileInputStream fis = new FileInputStream(ppt); - POIFSFileSystem fs = new POIFSFileSystem(fis); - fis.close(); + NPOIFSFileSystem fs = new NPOIFSFileSystem(ppt); //read the document entry from OLE file system DocumentEntry entry = (DocumentEntry)fs.getRoot().getEntry(PPDOC_ENTRY); diff --git a/src/scratchpad/src/org/apache/poi/hslf/dev/SlideShowDumper.java b/src/scratchpad/src/org/apache/poi/hslf/dev/SlideShowDumper.java index 9cb1a45a5..5e122d94e 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/dev/SlideShowDumper.java +++ b/src/scratchpad/src/org/apache/poi/hslf/dev/SlideShowDumper.java @@ -17,14 +17,17 @@ package org.apache.poi.hslf.dev; -import java.io.*; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; -import org.apache.poi.poifs.filesystem.DocumentEntry; - -import org.apache.poi.ddf.*; +import org.apache.poi.ddf.DefaultEscherRecordFactory; +import org.apache.poi.ddf.EscherContainerRecord; +import org.apache.poi.ddf.EscherRecord; +import org.apache.poi.ddf.EscherTextboxRecord; import org.apache.poi.hslf.record.RecordTypes; - +import org.apache.poi.poifs.filesystem.DocumentEntry; +import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; import org.apache.poi.util.LittleEndian; /** @@ -38,12 +41,9 @@ import org.apache.poi.util.LittleEndian; * To peek inside PPDrawings, which hold Escher drawings, we use the * DDF package from POI (but we can fake it by using the Escher listings * from hslf.record.RecordTypes also) - * - * @author Nick Burch */ public final class SlideShowDumper { - private InputStream istream; - private POIFSFileSystem filesystem; + private NPOIFSFileSystem filesystem; private byte[] _docstream; @@ -92,7 +92,7 @@ public final class SlideShowDumper { */ public SlideShowDumper(String fileName) throws IOException { - this(new FileInputStream(fileName)); + this(new NPOIFSFileSystem(new File(fileName))); } /** @@ -105,8 +105,7 @@ public final class SlideShowDumper { public SlideShowDumper(InputStream inputStream) throws IOException { //do Ole stuff - this(new POIFSFileSystem(inputStream)); - istream = inputStream; + this(new NPOIFSFileSystem(inputStream)); } /** @@ -116,7 +115,7 @@ public final class SlideShowDumper { * @param filesystem the POIFS FileSystem to read from * @throws IOException if there is a problem while parsing the document. */ - public SlideShowDumper(POIFSFileSystem filesystem) throws IOException + public SlideShowDumper(NPOIFSFileSystem filesystem) throws IOException { this.filesystem = filesystem; @@ -153,10 +152,7 @@ public final class SlideShowDumper { */ public void close() throws IOException { - if(istream != null) { - istream.close(); - } - filesystem = null; + filesystem.close(); } diff --git a/src/scratchpad/src/org/apache/poi/hslf/extractor/PowerPointExtractor.java b/src/scratchpad/src/org/apache/poi/hslf/extractor/PowerPointExtractor.java index d96e2243d..908bb44e9 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/extractor/PowerPointExtractor.java +++ b/src/scratchpad/src/org/apache/poi/hslf/extractor/PowerPointExtractor.java @@ -17,6 +17,7 @@ package org.apache.poi.hslf.extractor; +import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; @@ -83,7 +84,7 @@ public final class PowerPointExtractor extends POIOLE2TextExtractor { * @param fileName The name of the file to extract from */ public PowerPointExtractor(String fileName) throws IOException { - this(new FileInputStream(fileName)); + this(new NPOIFSFileSystem(new File(fileName))); } /** @@ -92,7 +93,7 @@ public final class PowerPointExtractor extends POIOLE2TextExtractor { * @param iStream The input stream containing the PowerPoint document */ public PowerPointExtractor(InputStream iStream) throws IOException { - this(new POIFSFileSystem(iStream)); + this(new NPOIFSFileSystem(iStream)); } /** @@ -123,14 +124,6 @@ public final class PowerPointExtractor extends POIOLE2TextExtractor { this(new HSLFSlideShow(dir)); } - /** - * @deprecated Use {@link #PowerPointExtractor(DirectoryNode)} instead - */ - @Deprecated - public PowerPointExtractor(DirectoryNode dir, POIFSFileSystem fs) throws IOException { - this(new HSLFSlideShow(dir, fs)); - } - /** * Creates a PowerPointExtractor, from a HSLFSlideShow * diff --git a/src/scratchpad/src/org/apache/poi/hslf/extractor/QuickButCruddyTextExtractor.java b/src/scratchpad/src/org/apache/poi/hslf/extractor/QuickButCruddyTextExtractor.java index e449a555e..45ca0ce63 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/extractor/QuickButCruddyTextExtractor.java +++ b/src/scratchpad/src/org/apache/poi/hslf/extractor/QuickButCruddyTextExtractor.java @@ -17,7 +17,7 @@ package org.apache.poi.hslf.extractor; -import java.io.FileInputStream; +import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; @@ -32,7 +32,7 @@ import org.apache.poi.hslf.record.TextBytesAtom; import org.apache.poi.hslf.record.TextCharsAtom; import org.apache.poi.hslf.record.TextHeaderAtom; import org.apache.poi.poifs.filesystem.DocumentEntry; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; import org.apache.poi.util.LittleEndian; /** @@ -52,11 +52,9 @@ import org.apache.poi.util.LittleEndian; * Almost everyone will want to use @see PowerPointExtractor instead. There * are only a very small number of cases (eg some performance sensitive * lucene indexers) that would ever want to use this! - * - * @author Nick Burch */ public final class QuickButCruddyTextExtractor { - private POIFSFileSystem fs; + private NPOIFSFileSystem fs; private InputStream is; private byte[] pptContents; @@ -84,7 +82,7 @@ public final class QuickButCruddyTextExtractor { * @param fileName */ public QuickButCruddyTextExtractor(String fileName) throws IOException { - this(new FileInputStream(fileName)); + this(new NPOIFSFileSystem(new File(fileName))); } /** @@ -92,7 +90,7 @@ public final class QuickButCruddyTextExtractor { * @param iStream */ public QuickButCruddyTextExtractor(InputStream iStream) throws IOException { - this(new POIFSFileSystem(iStream)); + this(new NPOIFSFileSystem(iStream)); is = iStream; } @@ -100,7 +98,7 @@ public final class QuickButCruddyTextExtractor { * Creates an extractor from a POIFS Filesystem * @param poifs */ - public QuickButCruddyTextExtractor(POIFSFileSystem poifs) throws IOException { + public QuickButCruddyTextExtractor(NPOIFSFileSystem poifs) throws IOException { fs = poifs; // Find the PowerPoint bit, and get out the bytes diff --git a/src/testcases/org/apache/poi/TestPOIDocumentMain.java b/src/testcases/org/apache/poi/TestPOIDocumentMain.java index 4ababd6f4..cacca43b3 100644 --- a/src/testcases/org/apache/poi/TestPOIDocumentMain.java +++ b/src/testcases/org/apache/poi/TestPOIDocumentMain.java @@ -27,7 +27,7 @@ import junit.framework.TestCase; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.apache.poi.poifs.filesystem.OPOIFSFileSystem; /** * Tests that POIDocument correctly loads and saves the common @@ -97,7 +97,7 @@ public final class TestPOIDocumentMain extends TestCase { // Create a new version ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); - POIFSFileSystem inFS = new POIFSFileSystem(bais); + OPOIFSFileSystem inFS = new OPOIFSFileSystem(bais); // Check they're still there doc.directory = inFS.getRoot(); diff --git a/src/testcases/org/apache/poi/hpsf/basic/TestHPSFBugs.java b/src/testcases/org/apache/poi/hpsf/basic/TestHPSFBugs.java index ff9ba878a..cd58e159f 100644 --- a/src/testcases/org/apache/poi/hpsf/basic/TestHPSFBugs.java +++ b/src/testcases/org/apache/poi/hpsf/basic/TestHPSFBugs.java @@ -31,7 +31,7 @@ import org.apache.poi.hpsf.PropertySetFactory; import org.apache.poi.hpsf.SummaryInformation; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.DocumentInputStream; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; /** * Tests various bugs have been fixed @@ -109,8 +109,8 @@ public final class TestHPSFBugs extends TestCase { */ public void test54233() throws Exception { DocumentInputStream dis; - POIFSFileSystem fs = - new POIFSFileSystem(_samples.openResourceAsStream("TestNon4ByteBoundary.doc")); + NPOIFSFileSystem fs = + new NPOIFSFileSystem(_samples.openResourceAsStream("TestNon4ByteBoundary.doc")); dis = fs.createDocumentInputStream(SummaryInformation.DEFAULT_STREAM_NAME); SummaryInformation si = (SummaryInformation)PropertySetFactory.create(dis); @@ -130,7 +130,7 @@ public final class TestHPSFBugs extends TestCase { ByteArrayOutputStream baos = new ByteArrayOutputStream(); doc.write(baos); ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); - doc = new HPSFPropertiesOnlyDocument(new POIFSFileSystem(bais)); + doc = new HPSFPropertiesOnlyDocument(new NPOIFSFileSystem(bais)); // Check properties are still there assertEquals("Microsoft Word 10.0", si.getApplicationName()); @@ -144,8 +144,8 @@ public final class TestHPSFBugs extends TestCase { */ public void test56138() throws Exception { DocumentInputStream dis; - POIFSFileSystem fs = - new POIFSFileSystem(_samples.openResourceAsStream("TestZeroLengthCodePage.mpp")); + NPOIFSFileSystem fs = + new NPOIFSFileSystem(_samples.openResourceAsStream("TestZeroLengthCodePage.mpp")); dis = fs.createDocumentInputStream(SummaryInformation.DEFAULT_STREAM_NAME); SummaryInformation si = (SummaryInformation)PropertySetFactory.create(dis); diff --git a/src/testcases/org/apache/poi/hssf/HSSFITestDataProvider.java b/src/testcases/org/apache/poi/hssf/HSSFITestDataProvider.java index 51cc0ed45..d544b0b79 100644 --- a/src/testcases/org/apache/poi/hssf/HSSFITestDataProvider.java +++ b/src/testcases/org/apache/poi/hssf/HSSFITestDataProvider.java @@ -17,6 +17,8 @@ package org.apache.poi.hssf; +import java.io.InputStream; + import org.apache.poi.POIDataSamples; import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator; import org.apache.poi.hssf.usermodel.HSSFWorkbook; @@ -38,6 +40,9 @@ public final class HSSFITestDataProvider implements ITestDataProvider { public HSSFWorkbook openSampleWorkbook(String sampleFileName) { return HSSFTestDataSamples.openSampleWorkbook(sampleFileName); } + public InputStream openWorkbookStream(String sampleFileName) { + return HSSFTestDataSamples.openSampleFileStream(sampleFileName); + } public HSSFWorkbook writeOutAndReadBack(Workbook original) { if(!(original instanceof HSSFWorkbook)) { diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java index 6c2969a78..36f397c01 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java @@ -58,6 +58,7 @@ import org.apache.poi.hssf.record.aggregates.RecordAggregate; import org.apache.poi.hssf.record.common.UnicodeString; import org.apache.poi.hssf.record.crypto.Biff8EncryptionKey; import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; +import org.apache.poi.poifs.filesystem.OPOIFSFileSystem; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.ss.formula.ptg.Area3DPtg; import org.apache.poi.ss.formula.ptg.DeletedArea3DPtg; @@ -1566,15 +1567,30 @@ public final class TestBugs extends BaseTestBugzillaIssues { * (is an excel 95 file though) */ @Test - public void bug46904() { + public void bug46904() throws Exception { try { - openSample("46904.xls"); + OPOIFSFileSystem fs = new OPOIFSFileSystem( + HSSFITestDataProvider.instance.openWorkbookStream("46904.xls")); + new HSSFWorkbook(fs.getRoot(), false); fail(); } catch(OldExcelFormatException e) { assertTrue(e.getMessage().startsWith( "The supplied spreadsheet seems to be Excel" )); } + // TODO Fix this to work with NPOIFS as well +/* + try { + NPOIFSFileSystem fs = new NPOIFSFileSystem( + HSSFITestDataProvider.instance.openWorkbookStream("46904.xls")); + new HSSFWorkbook(fs.getRoot(), false); + fail(); + } catch(OldExcelFormatException e) { + assertTrue(e.getMessage().startsWith( + "The supplied spreadsheet seems to be Excel" + )); + } +*/ } /** From c9c4aee324c1352916f1b95c2b0cb3c72ef3917a Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 11 May 2015 19:00:12 +0000 Subject: [PATCH 142/301] #56791 More updates from OPOIFS to NPOIFS git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678802 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/hslf/HSLFSlideShow.java | 26 +++++++------------ 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/src/scratchpad/src/org/apache/poi/hslf/HSLFSlideShow.java b/src/scratchpad/src/org/apache/poi/hslf/HSLFSlideShow.java index f5ac0c3b1..c2a5248e7 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/HSLFSlideShow.java +++ b/src/scratchpad/src/org/apache/poi/hslf/HSLFSlideShow.java @@ -19,7 +19,7 @@ package org.apache.poi.hslf; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; -import java.io.FileInputStream; +import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -87,23 +87,15 @@ public final class HSLFSlideShow extends POIDocument { private ObjectData[] _objects; /** - * Returns the underlying POIFSFileSystem for the document - * that is open. - */ - protected POIFSFileSystem getPOIFSFileSystem() { - return directory.getFileSystem(); - } - - /** - * Returns the directory in the underlying POIFSFileSystem for the - * document that is open. - */ - protected DirectoryNode getPOIFSDirectory() { - return directory; - } + * Returns the directory in the underlying POIFSFileSystem for the + * document that is open. + */ + protected DirectoryNode getPOIFSDirectory() { + return directory; + } /** - * Constructs a Powerpoint document from fileName. Parses the document + * Constructs a PowerPoint document from fileName. Parses the document * and places all the important stuff into data structures. * * @param fileName The name of the file to read. @@ -111,7 +103,7 @@ public final class HSLFSlideShow extends POIDocument { */ public HSLFSlideShow(String fileName) throws IOException { - this(new FileInputStream(fileName)); + this(new NPOIFSFileSystem(new File(fileName))); } /** From 5ca35be087ce2c4d6f55612d9b0c9e8bcd5b3792 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 11 May 2015 19:59:52 +0000 Subject: [PATCH 143/301] Add checks for invalid row number in RowRecord to find corrupted files earlier git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678810 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/poi/hssf/record/RowRecord.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/java/org/apache/poi/hssf/record/RowRecord.java b/src/java/org/apache/poi/hssf/record/RowRecord.java index 75d3f99b1..7a9026dc5 100644 --- a/src/java/org/apache/poi/hssf/record/RowRecord.java +++ b/src/java/org/apache/poi/hssf/record/RowRecord.java @@ -64,6 +64,9 @@ public final class RowRecord extends StandardRecord { // bit 15 is unused public RowRecord(int rowNumber) { + if(rowNumber < 0) { + throw new IllegalArgumentException("Invalid row number " + rowNumber + " specified"); + } field_1_row_number = rowNumber; field_4_height = (short)0xFF; field_5_optimize = ( short ) 0; @@ -76,6 +79,9 @@ public final class RowRecord extends StandardRecord { public RowRecord(RecordInputStream in) { field_1_row_number = in.readUShort(); + if(field_1_row_number < 0) { + throw new IllegalArgumentException("Invalid row number " + field_1_row_number + " found in InputStream"); + } field_2_first_col = in.readShort(); field_3_last_col = in.readShort(); field_4_height = in.readShort(); From 142e4a9f92b38cd5d6700433be9ca1bf77e47cda Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 11 May 2015 20:00:18 +0000 Subject: [PATCH 144/301] Avoid possible NPE found via CommonCrawl files git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678811 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/hssf/usermodel/HSSFShapeFactory.java | 21 ++++++++---------- .../hssf/extractor/TestExcelExtractor.java | 6 +++++ .../org/apache/poi/hssf/model/TestShapes.java | 4 +++- ...rm%20Inscripcion%20Curso%20NO%20Socios.xls | Bin 0 -> 31233 bytes 4 files changed, 18 insertions(+), 13 deletions(-) create mode 100644 test-data/spreadsheet/ar.org.apsme.www_Form%20Inscripcion%20Curso%20NO%20Socios.xls diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFShapeFactory.java b/src/java/org/apache/poi/hssf/usermodel/HSSFShapeFactory.java index 3e82fbe18..ef1b13b22 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFShapeFactory.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFShapeFactory.java @@ -29,13 +29,6 @@ import java.util.Map; * Factory class for producing Excel Shapes from Escher records */ public class HSSFShapeFactory { - - private final static short OBJECT_TYPE_LINE = 1; - private final static short OBJECT_TYPE_RECTANGLE = 2; - private final static short OBJECT_TYPE_OVAL = 3; - private final static short OBJECT_TYPE_ARC = 4; - private final static short OBJECT_TYPE_PICTURE = 8; - /** * build shape tree from escher container * @param container root escher container from which escher records must be taken @@ -81,7 +74,7 @@ public class HSSFShapeFactory { return; } CommonObjectDataSubRecord cmo = (CommonObjectDataSubRecord) objRecord.getSubRecords().get(0); - HSSFShape shape; + final HSSFShape shape; switch (cmo.getObjectType()) { case CommonObjectDataSubRecord.OBJECT_TYPE_PICTURE: shape = new HSSFPicture(container, objRecord); @@ -97,11 +90,15 @@ public class HSSFShapeFactory { break; case CommonObjectDataSubRecord.OBJECT_TYPE_MICROSOFT_OFFICE_DRAWING: EscherOptRecord optRecord = container.getChildById(EscherOptRecord.RECORD_ID); - EscherProperty property = optRecord.lookup(EscherProperties.GEOMETRY__VERTICES); - if (null != property) { - shape = new HSSFPolygon(container, objRecord, txtRecord); + if(optRecord == null) { + shape = new HSSFSimpleShape(container, objRecord, txtRecord); } else { - shape = new HSSFSimpleShape(container, objRecord, txtRecord); + EscherProperty property = optRecord.lookup(EscherProperties.GEOMETRY__VERTICES); + if (null != property) { + shape = new HSSFPolygon(container, objRecord, txtRecord); + } else { + shape = new HSSFSimpleShape(container, objRecord, txtRecord); + } } break; case CommonObjectDataSubRecord.OBJECT_TYPE_TEXT: diff --git a/src/testcases/org/apache/poi/hssf/extractor/TestExcelExtractor.java b/src/testcases/org/apache/poi/hssf/extractor/TestExcelExtractor.java index f7584ff11..793215a02 100644 --- a/src/testcases/org/apache/poi/hssf/extractor/TestExcelExtractor.java +++ b/src/testcases/org/apache/poi/hssf/extractor/TestExcelExtractor.java @@ -363,4 +363,10 @@ public final class TestExcelExtractor extends TestCase { assertTrue(text.contains("ZIP")); } + + public void testNullPointerException() { + ExcelExtractor extractor = createExtractor("ar.org.apsme.www_Form%20Inscripcion%20Curso%20NO%20Socios.xls"); + assertNotNull(extractor); + assertNotNull(extractor.getText()); + } } diff --git a/src/testcases/org/apache/poi/hssf/model/TestShapes.java b/src/testcases/org/apache/poi/hssf/model/TestShapes.java index d17178ee7..beed4a1d3 100644 --- a/src/testcases/org/apache/poi/hssf/model/TestShapes.java +++ b/src/testcases/org/apache/poi/hssf/model/TestShapes.java @@ -20,6 +20,7 @@ package org.apache.poi.hssf.model; import junit.framework.TestCase; + import org.apache.poi.hssf.record.CommonObjectDataSubRecord; import org.apache.poi.hssf.usermodel.HSSFClientAnchor; import org.apache.poi.hssf.usermodel.HSSFComment; @@ -37,7 +38,8 @@ public final class TestShapes extends TestCase { * * See Bug 51332 */ - public void testShapeId(){ + @SuppressWarnings("deprecation") + public void testShapeId(){ HSSFClientAnchor anchor = new HSSFClientAnchor(); AbstractShape shape; diff --git a/test-data/spreadsheet/ar.org.apsme.www_Form%20Inscripcion%20Curso%20NO%20Socios.xls b/test-data/spreadsheet/ar.org.apsme.www_Form%20Inscripcion%20Curso%20NO%20Socios.xls new file mode 100644 index 0000000000000000000000000000000000000000..5554ab9f9f6ba51adde3ff6f1345054c98c6c66c GIT binary patch literal 31233 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 Date: Mon, 11 May 2015 20:00:42 +0000 Subject: [PATCH 145/301] Provide better exception if we would access out of bounds in arraycopy for Escher properties git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678812 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/poi/ddf/EscherPropertyFactory.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/java/org/apache/poi/ddf/EscherPropertyFactory.java b/src/java/org/apache/poi/ddf/EscherPropertyFactory.java index 3dcce79b8..3e653f5b8 100644 --- a/src/java/org/apache/poi/ddf/EscherPropertyFactory.java +++ b/src/java/org/apache/poi/ddf/EscherPropertyFactory.java @@ -82,7 +82,14 @@ public final class EscherPropertyFactory { pos += ((EscherArrayProperty)p).setArrayData(data, pos); } else { byte[] complexData = ((EscherComplexProperty)p).getComplexData(); - System.arraycopy(data, pos, complexData, 0, complexData.length); + + int leftover = data.length-pos; + if(leftover < complexData.length){ + throw new IllegalStateException("Could not read complex escher property, lenght was " + complexData.length + ", but had only " + + leftover + " bytes left"); + } + + System.arraycopy(data, pos, complexData, 0, complexData.length); pos += complexData.length; } } From b3a56bd752ab39e6e89130b178c846880f37d292 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 11 May 2015 20:03:36 +0000 Subject: [PATCH 146/301] Adjust intendation git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678814 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/poi/ddf/EscherPropertyFactory.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/java/org/apache/poi/ddf/EscherPropertyFactory.java b/src/java/org/apache/poi/ddf/EscherPropertyFactory.java index 3e653f5b8..efea00438 100644 --- a/src/java/org/apache/poi/ddf/EscherPropertyFactory.java +++ b/src/java/org/apache/poi/ddf/EscherPropertyFactory.java @@ -84,12 +84,12 @@ public final class EscherPropertyFactory { byte[] complexData = ((EscherComplexProperty)p).getComplexData(); int leftover = data.length-pos; - if(leftover < complexData.length){ - throw new IllegalStateException("Could not read complex escher property, lenght was " + complexData.length + ", but had only " + - leftover + " bytes left"); + if(leftover < complexData.length){ + throw new IllegalStateException("Could not read complex escher property, lenght was " + complexData.length + ", but had only " + + leftover + " bytes left"); } - System.arraycopy(data, pos, complexData, 0, complexData.length); + System.arraycopy(data, pos, complexData, 0, complexData.length); pos += complexData.length; } } From 6b6890152cbcad8bac29236a0c935a8cfe77ce5e Mon Sep 17 00:00:00 2001 From: Andreas Beeker Date: Mon, 11 May 2015 23:49:42 +0000 Subject: [PATCH 147/301] Update documentation for POI 3.12 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678838 13f79535-47bb-0310-9956-ffa450edef68 --- doap_POI.rdf | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doap_POI.rdf b/doap_POI.rdf index ce364249d..17dee9ff6 100644 --- a/doap_POI.rdf +++ b/doap_POI.rdf @@ -19,6 +19,13 @@ Java + + + Apache POI 3.12 + 2015-05-11 + 3.12 + + Apache POI 3.11 From c4a26a18f40e14ef06dc135dad56d45e3f4cf4eb Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Tue, 12 May 2015 04:54:47 +0000 Subject: [PATCH 148/301] Fix unit test which asserts on actual error message git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678861 13f79535-47bb-0310-9956-ffa450edef68 --- src/testcases/org/apache/poi/ss/usermodel/BaseTestRow.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestRow.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestRow.java index d013beaf2..ca59fa7f7 100644 --- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestRow.java +++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestRow.java @@ -137,7 +137,8 @@ public abstract class BaseTestRow extends TestCase { fail("expected exception"); } catch (IllegalArgumentException e) { // expected during successful test - assertTrue(e.getMessage().startsWith("Invalid row number (-1)")); + assertTrue("Did not find expected error message, had: " + e, + e.getMessage().startsWith("Invalid row number -1")); } //Test high row bound From cbd315d441e7d4c8917738ead00aef94b051550a Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Tue, 12 May 2015 06:27:11 +0000 Subject: [PATCH 149/301] Adjust error message to have the same error across different types of Workbook and revert test to check on common error message again git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678874 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/poi/hssf/record/RowRecord.java | 2 +- .../org/apache/poi/hssf/usermodel/TestHSSFRow.java | 10 ++++++++-- .../org/apache/poi/ss/usermodel/BaseTestRow.java | 5 +++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/java/org/apache/poi/hssf/record/RowRecord.java b/src/java/org/apache/poi/hssf/record/RowRecord.java index 7a9026dc5..ffbf9c753 100644 --- a/src/java/org/apache/poi/hssf/record/RowRecord.java +++ b/src/java/org/apache/poi/hssf/record/RowRecord.java @@ -65,7 +65,7 @@ public final class RowRecord extends StandardRecord { public RowRecord(int rowNumber) { if(rowNumber < 0) { - throw new IllegalArgumentException("Invalid row number " + rowNumber + " specified"); + throw new IllegalArgumentException("Invalid row number (" + rowNumber + ")"); } field_1_row_number = rowNumber; field_4_height = (short)0xFF; diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFRow.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFRow.java index 654db6aa0..dafb481d3 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFRow.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFRow.java @@ -17,6 +17,8 @@ package org.apache.poi.hssf.usermodel; +import java.io.IOException; + import junit.framework.AssertionFailedError; import org.apache.poi.hssf.HSSFITestDataProvider; @@ -71,7 +73,7 @@ public final class TestHSSFRow extends BaseTestRow { assertEquals(-1, row.getLastCellNum()); } - public void testMoveCell() { + public void testMoveCell() throws IOException { HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet(); HSSFRow row = sheet.createRow(0); @@ -115,9 +117,11 @@ public final class TestHSSFRow extends BaseTestRow { assertEquals(5, cellB2.getColumnIndex()); assertEquals(2, row.getFirstCellNum()); assertEquals(6, row.getLastCellNum()); + + workbook.close(); } - public void testRowHeight(){ + public void testRowHeight() throws IOException{ HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet(); HSSFRow row = sheet.createRow(0); @@ -132,5 +136,7 @@ public final class TestHSSFRow extends BaseTestRow { row.setHeight((short) -1); assertEquals(row.getHeight(), sheet.getDefaultRowHeight()); assertEquals(row.getRowRecord().getBadFontHeight(), false); + + workbook.close(); } } diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestRow.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestRow.java index ca59fa7f7..2ae096aa1 100644 --- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestRow.java +++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestRow.java @@ -17,6 +17,7 @@ package org.apache.poi.ss.usermodel; +import java.io.IOException; import java.util.Iterator; import junit.framework.TestCase; @@ -138,7 +139,7 @@ public abstract class BaseTestRow extends TestCase { } catch (IllegalArgumentException e) { // expected during successful test assertTrue("Did not find expected error message, had: " + e, - e.getMessage().startsWith("Invalid row number -1")); + e.getMessage().startsWith("Invalid row number (-1)")); } //Test high row bound @@ -285,7 +286,7 @@ public abstract class BaseTestRow extends TestCase { assertEquals(Cell.CELL_TYPE_NUMERIC, row.getCell(5).getCellType()); } - public void testRowHeight() { + public void testRowHeight() throws IOException { Workbook workbook = _testDataProvider.createWorkbook(); Sheet sheet = workbook.createSheet(); Row row1 = sheet.createRow(0); From dafabdc7b9e37c8489be90f0641eafbb3305ace5 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 17 May 2015 21:26:31 +0000 Subject: [PATCH 150/301] Move location where document is held and adjust constructors and class-hierarchy accordingly git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1679903 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/POIOLE2TextExtractor.java | 14 +++++++++++++- src/java/org/apache/poi/POITextExtractor.java | 18 ------------------ .../extractor/HPSFPropertiesExtractor.java | 5 +++-- .../extractor/EventBasedExcelExtractor.java | 3 ++- .../org/apache/poi/POIXMLTextExtractor.java | 2 -- 5 files changed, 18 insertions(+), 24 deletions(-) diff --git a/src/java/org/apache/poi/POIOLE2TextExtractor.java b/src/java/org/apache/poi/POIOLE2TextExtractor.java index 7679136c8..5dd1d755e 100644 --- a/src/java/org/apache/poi/POIOLE2TextExtractor.java +++ b/src/java/org/apache/poi/POIOLE2TextExtractor.java @@ -33,15 +33,27 @@ import org.apache.poi.poifs.filesystem.DirectoryEntry; * @see org.apache.poi.hwpf.extractor.WordExtractor */ public abstract class POIOLE2TextExtractor extends POITextExtractor { + /** The POIDocument that's open */ + protected POIDocument document; + /** * Creates a new text extractor for the given document * * @param document The POIDocument to use in this extractor. */ public POIOLE2TextExtractor(POIDocument document) { - super(document); + this.document = document; } + /** + * Creates a new text extractor, using the same + * document as another text extractor. Normally + * only used by properties extractors. + */ + protected POIOLE2TextExtractor(POIOLE2TextExtractor otherExtractor) { + this.document = otherExtractor.document; + } + /** * Returns the document information metadata for the document * diff --git a/src/java/org/apache/poi/POITextExtractor.java b/src/java/org/apache/poi/POITextExtractor.java index e18078b46..6514ad5d1 100644 --- a/src/java/org/apache/poi/POITextExtractor.java +++ b/src/java/org/apache/poi/POITextExtractor.java @@ -31,24 +31,6 @@ import java.io.IOException; * @see org.apache.poi.hwpf.extractor.WordExtractor */ public abstract class POITextExtractor implements Closeable { - /** The POIDocument that's open */ - protected POIDocument document; - - /** - * Creates a new text extractor for the given document - */ - public POITextExtractor(POIDocument document) { - this.document = document; - } - /** - * Creates a new text extractor, using the same - * document as another text extractor. Normally - * only used by properties extractors. - */ - protected POITextExtractor(POITextExtractor otherExtractor) { - this.document = otherExtractor.document; - } - /** * Retrieves all the text from the document. * How cells, paragraphs etc are separated in the text diff --git a/src/java/org/apache/poi/hpsf/extractor/HPSFPropertiesExtractor.java b/src/java/org/apache/poi/hpsf/extractor/HPSFPropertiesExtractor.java index 1a0db0389..b7967f333 100644 --- a/src/java/org/apache/poi/hpsf/extractor/HPSFPropertiesExtractor.java +++ b/src/java/org/apache/poi/hpsf/extractor/HPSFPropertiesExtractor.java @@ -23,6 +23,7 @@ import java.io.IOException; import java.util.Iterator; import org.apache.poi.POIDocument; +import org.apache.poi.POIOLE2TextExtractor; import org.apache.poi.POITextExtractor; import org.apache.poi.hpsf.CustomProperties; import org.apache.poi.hpsf.DocumentSummaryInformation; @@ -39,10 +40,10 @@ import org.apache.poi.poifs.filesystem.POIFSFileSystem; * build in and custom, returning them in * textual form. */ -public class HPSFPropertiesExtractor extends POITextExtractor { +public class HPSFPropertiesExtractor extends POIOLE2TextExtractor { private Closeable toClose; - public HPSFPropertiesExtractor(POITextExtractor mainExtractor) { + public HPSFPropertiesExtractor(POIOLE2TextExtractor mainExtractor) { super(mainExtractor); } public HPSFPropertiesExtractor(POIDocument doc) { diff --git a/src/java/org/apache/poi/hssf/extractor/EventBasedExcelExtractor.java b/src/java/org/apache/poi/hssf/extractor/EventBasedExcelExtractor.java index 889de20b4..debeee92c 100644 --- a/src/java/org/apache/poi/hssf/extractor/EventBasedExcelExtractor.java +++ b/src/java/org/apache/poi/hssf/extractor/EventBasedExcelExtractor.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; +import org.apache.poi.POIDocument; import org.apache.poi.POIOLE2TextExtractor; import org.apache.poi.hpsf.DocumentSummaryInformation; import org.apache.poi.hpsf.SummaryInformation; @@ -75,7 +76,7 @@ public class EventBasedExcelExtractor extends POIOLE2TextExtractor implements or public EventBasedExcelExtractor( DirectoryNode dir ) { - super( null ); + super( (POIDocument)null ); _dir = dir; } diff --git a/src/ooxml/java/org/apache/poi/POIXMLTextExtractor.java b/src/ooxml/java/org/apache/poi/POIXMLTextExtractor.java index 3a600f48a..705bf42a6 100644 --- a/src/ooxml/java/org/apache/poi/POIXMLTextExtractor.java +++ b/src/ooxml/java/org/apache/poi/POIXMLTextExtractor.java @@ -32,8 +32,6 @@ public abstract class POIXMLTextExtractor extends POITextExtractor { * Creates a new text extractor for the given document */ public POIXMLTextExtractor(POIXMLDocument document) { - super((POIDocument)null); - _document = document; } From b817b934778bca8dce2d1f0b1d3900629c41fef3 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Tue, 19 May 2015 09:37:52 +0000 Subject: [PATCH 151/301] Let Eclipse add some more settings to the project files git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1680216 13f79535-47bb-0310-9956-ffa450edef68 --- .settings/org.eclipse.jdt.ui.prefs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.settings/org.eclipse.jdt.ui.prefs b/.settings/org.eclipse.jdt.ui.prefs index a38e1bfcf..051e06109 100644 --- a/.settings/org.eclipse.jdt.ui.prefs +++ b/.settings/org.eclipse.jdt.ui.prefs @@ -4,9 +4,13 @@ formatter_profile=_Apache POI formatter_settings_version=12 org.eclipse.jdt.ui.exception.name=e org.eclipse.jdt.ui.gettersetter.use.is=true +org.eclipse.jdt.ui.ignorelowercasenames=true +org.eclipse.jdt.ui.importorder=java;javax;org;com; org.eclipse.jdt.ui.javadoc=false org.eclipse.jdt.ui.keywordthis=false +org.eclipse.jdt.ui.ondemandthreshold=10 org.eclipse.jdt.ui.overrideannotation=false +org.eclipse.jdt.ui.staticondemandthreshold=10 org.eclipse.jdt.ui.text.custom_code_templates= sp_cleanup.add_default_serial_version_id=true sp_cleanup.add_generated_serial_version_id=false @@ -21,10 +25,12 @@ sp_cleanup.always_use_blocks=true sp_cleanup.always_use_parentheses_in_expressions=false sp_cleanup.always_use_this_for_non_static_field_access=false sp_cleanup.always_use_this_for_non_static_method_access=false +sp_cleanup.convert_functional_interfaces=false sp_cleanup.convert_to_enhanced_for_loop=true sp_cleanup.correct_indentation=false sp_cleanup.format_source_code=false sp_cleanup.format_source_code_changes_only=false +sp_cleanup.insert_inferred_type_arguments=false sp_cleanup.make_local_variable_final=false sp_cleanup.make_parameters_final=false sp_cleanup.make_private_fields_final=true @@ -40,6 +46,7 @@ sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class= sp_cleanup.qualify_static_member_accesses_with_declaring_class=false sp_cleanup.qualify_static_method_accesses_with_declaring_class=false sp_cleanup.remove_private_constructors=true +sp_cleanup.remove_redundant_type_arguments=false sp_cleanup.remove_trailing_whitespaces=false sp_cleanup.remove_trailing_whitespaces_all=true sp_cleanup.remove_trailing_whitespaces_ignore_empty=false @@ -53,10 +60,13 @@ sp_cleanup.remove_unused_private_methods=true sp_cleanup.remove_unused_private_types=true sp_cleanup.sort_members=false sp_cleanup.sort_members_all=false +sp_cleanup.use_anonymous_class_creation=false sp_cleanup.use_blocks=true sp_cleanup.use_blocks_only_for_return_and_throw=false +sp_cleanup.use_lambda=false sp_cleanup.use_parentheses_in_expressions=false sp_cleanup.use_this_for_non_static_field_access=false sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true sp_cleanup.use_this_for_non_static_method_access=false sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true +sp_cleanup.use_type_arguments=false From 4c826a7ee3079c8584e95540f389d511ac99a9dc Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Tue, 19 May 2015 10:16:57 +0000 Subject: [PATCH 152/301] Update to JaCoCo 0.7.4 and fix location of coverage data in build-output git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1680228 13f79535-47bb-0310-9956-ffa450edef68 --- build.xml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/build.xml b/build.xml index 9509ed3db..4e4d60932 100644 --- a/build.xml +++ b/build.xml @@ -173,8 +173,8 @@ under the License. value="${repository.m2}/maven2/org/apache/xmlbeans/xmlbeans/2.6.0/xmlbeans-2.6.0.jar"/> - - + + @@ -415,6 +415,7 @@ under the License. + @@ -942,7 +943,7 @@ under the License. - + From 589b18915101386d79f59bf9aa78c220b04c5911 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Tue, 19 May 2015 13:13:09 +0000 Subject: [PATCH 153/301] Prevent problems reported in Bug 56574 by ensuring that Cells are properly removed when a row is overwritten by calling createRow() with it's rownum. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1680280 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/xssf/usermodel/XSSFSheet.java | 10 ++ .../poi/xssf/usermodel/TestXSSFBugs.java | 98 ++++++++++++++++++ .../ss/usermodel/BaseTestBugzillaIssues.java | 55 +++++++++- test-data/spreadsheet/56574.xlsx | Bin 0 -> 9915 bytes 4 files changed, 160 insertions(+), 3 deletions(-) create mode 100644 test-data/spreadsheet/56574.xlsx diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java index 189922ad4..840ed624d 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java @@ -602,6 +602,15 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { CTRow ctRow; XSSFRow prev = _rows.get(rownum); if(prev != null){ + // the Cells in an existing row are invalidated on-purpose, in order to clean up correctly, we + // need to call the remove, so things like ArrayFormulas and CalculationChain updates are done + // correctly. + // We remove the cell this way as the internal cell-list is changed by the remove call and + // thus would cause ConcurrentModificationException otherwise + while(prev.getFirstCellNum() != -1) { + prev.removeCell(prev.getCell(prev.getFirstCellNum())); + } + ctRow = prev.getCTRow(); ctRow.set(CTRow.Factory.newInstance()); } else { @@ -2614,6 +2623,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { } } }); + for (Iterator it = rowIterator() ; it.hasNext() ; ) { XSSFRow row = (XSSFRow)it.next(); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index 5658f4c12..60f6188a0 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -34,6 +34,9 @@ import java.io.IOException; import java.util.Arrays; import java.util.Calendar; import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; import org.apache.poi.EncryptedDocumentException; import org.apache.poi.POIDataSamples; @@ -87,6 +90,7 @@ import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.apache.poi.xssf.usermodel.extensions.XSSFCellFill; import org.junit.Ignore; import org.junit.Test; +import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCalcCell; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCols; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDefinedName; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDefinedNames; @@ -2502,4 +2506,98 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { wb.close(); tmp.delete(); } + + @Test + public void test56574() throws IOException { + runTest56574(false); + runTest56574(true); + } + + @SuppressWarnings("deprecation") + private void runTest56574(boolean createRow) throws IOException { + Workbook wb = XSSFTestDataSamples.openSampleWorkbook("56574.xlsx"); + + Sheet sheet = wb.getSheet("Func"); + assertNotNull(sheet); + + Map data; + data = new TreeMap(); + data.put("1", new Object[] {"ID", "NAME", "LASTNAME"}); + data.put("2", new Object[] {2, "Amit", "Shukla"}); + data.put("3", new Object[] {1, "Lokesh", "Gupta"}); + data.put("4", new Object[] {4, "John", "Adwards"}); + data.put("5", new Object[] {2, "Brian", "Schultz"}); + + Set keyset = data.keySet(); + int rownum = 1; + for (String key : keyset) + { + final Row row; + if(createRow) { + row = sheet.createRow(rownum++); + } else { + row = sheet.getRow(rownum++); + } + assertNotNull(row); + + Object [] objArr = data.get(key); + int cellnum = 0; + for (Object obj : objArr) + { + Cell cell = row.getCell(cellnum); + if(cell == null){ + cell = row.createCell(cellnum); + } else { + if(cell.getCellType() == Cell.CELL_TYPE_FORMULA) { + cell.setCellFormula(null); + cell.getCellStyle().setDataFormat((short) 0); + } + } + if(obj instanceof String) { + cell.setCellValue((String)obj); + } else if(obj instanceof Integer) { + cell.setCellValue((Integer)obj); + } + cellnum++; + } + } + + XSSFFormulaEvaluator.evaluateAllFormulaCells((XSSFWorkbook) wb); + wb.getCreationHelper().createFormulaEvaluator().evaluateAll(); + + CalculationChain chain = ((XSSFWorkbook)wb).getCalculationChain(); + CTCalcCell[] cArray = chain.getCTCalcChain().getCArray(); + for(CTCalcCell calc : cArray) { + // A2 to A6 should be gone + assertFalse(calc.getR().equals("A2")); + assertFalse(calc.getR().equals("A3")); + assertFalse(calc.getR().equals("A4")); + assertFalse(calc.getR().equals("A5")); + assertFalse(calc.getR().equals("A6")); + } + + /*FileOutputStream out = new FileOutputStream(new File("C:\\temp\\56574.xlsx")); + try { + wb.write(out); + } finally { + out.close(); + }*/ + + Workbook wbBack = XSSFTestDataSamples.writeOutAndReadBack(wb); + Sheet sheetBack = wbBack.getSheet("Func"); + assertNotNull(sheetBack); + + chain = ((XSSFWorkbook)wbBack).getCalculationChain(); + cArray = chain.getCTCalcChain().getCArray(); + for(CTCalcCell calc : cArray) { + // A2 to A6 should be gone + assertFalse(calc.getR().equals("A2")); + assertFalse(calc.getR().equals("A3")); + assertFalse(calc.getR().equals("A4")); + assertFalse(calc.getR().equals("A5")); + assertFalse(calc.getR().equals("A6")); + } + + wb.close(); + } } diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java index fe11df658..8b6732ca4 100644 --- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java +++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java @@ -18,9 +18,12 @@ package org.apache.poi.ss.usermodel; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import java.io.IOException; import java.util.HashMap; import java.util.Map; @@ -637,7 +640,7 @@ public abstract class BaseTestBugzillaIssues { // Next up, SEARCH on its own cf.setCellFormula("SEARCH(\"am\", A1)"); cf = evaluateCell(wb, cf); - assertEquals(ErrorConstants.ERROR_VALUE, cf.getErrorCellValue()); + assertEquals(FormulaError.VALUE.getCode(), cf.getErrorCellValue()); cf.setCellFormula("SEARCH(\"am\", B1)"); cf = evaluateCell(wb, cf); @@ -645,11 +648,11 @@ public abstract class BaseTestBugzillaIssues { cf.setCellFormula("SEARCH(\"am\", C1)"); cf = evaluateCell(wb, cf); - assertEquals(ErrorConstants.ERROR_VALUE, cf.getErrorCellValue()); + assertEquals(FormulaError.VALUE.getCode(), cf.getErrorCellValue()); cf.setCellFormula("SEARCH(\"am\", D1)"); cf = evaluateCell(wb, cf); - assertEquals(ErrorConstants.ERROR_VALUE, cf.getErrorCellValue()); + assertEquals(FormulaError.VALUE.getCode(), cf.getErrorCellValue()); // Finally, bring it all together @@ -757,4 +760,50 @@ public abstract class BaseTestBugzillaIssues { assertEquals(otherCellText, c1.getStringCellValue()); assertEquals(otherCellText, c2.getStringCellValue()); } + + @Test + public void test56574OverwriteExistingRow() throws IOException { + Workbook wb = _testDataProvider.createWorkbook(); + Sheet sheet = wb.createSheet(); + + { // create the Formula-Cell + Row row = sheet.createRow(0); + Cell cell = row.createCell(0); + cell.setCellFormula("A2"); + } + + { // check that it is there now + Row row = sheet.getRow(0); + + /* CTCell[] cArray = ((XSSFRow)row).getCTRow().getCArray(); + assertEquals(1, cArray.length);*/ + + Cell cell = row.getCell(0); + assertEquals(Cell.CELL_TYPE_FORMULA, cell.getCellType()); + } + + { // overwrite the row + Row row = sheet.createRow(0); + assertNotNull(row); + } + + { // creating a row in place of another should remove the existing data, + // check that the cell is gone now + Row row = sheet.getRow(0); + + /*CTCell[] cArray = ((XSSFRow)row).getCTRow().getCArray(); + assertEquals(0, cArray.length);*/ + + Cell cell = row.getCell(0); + assertNull(cell); + } + + // the calculation chain in XSSF is empty in a newly created workbook, so we cannot check if it is correctly updated + /*assertNull(((XSSFWorkbook)wb).getCalculationChain()); + assertNotNull(((XSSFWorkbook)wb).getCalculationChain().getCTCalcChain()); + assertNotNull(((XSSFWorkbook)wb).getCalculationChain().getCTCalcChain().getCArray()); + assertEquals(0, ((XSSFWorkbook)wb).getCalculationChain().getCTCalcChain().getCArray().length);*/ + + wb.close(); + } } diff --git a/test-data/spreadsheet/56574.xlsx b/test-data/spreadsheet/56574.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..9cce54cc8ff3026acdac6616da1d225a339fb3b6 GIT binary patch literal 9915 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 u7Fdes~gdL|Mq{itJHr0 literal 0 HcmV?d00001 From 001cdeb936e36859e219d04206df434bd4200391 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Wed, 20 May 2015 18:00:19 +0000 Subject: [PATCH 154/301] Apply fix reported in bug 47661 and add unit tests git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1680642 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/ss/usermodel/DateUtil.java | 2 +- .../poi/hssf/usermodel/TestHSSFDateUtil.java | 24 ++++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/java/org/apache/poi/ss/usermodel/DateUtil.java b/src/java/org/apache/poi/ss/usermodel/DateUtil.java index 79512ef10..31dbce424 100644 --- a/src/java/org/apache/poi/ss/usermodel/DateUtil.java +++ b/src/java/org/apache/poi/ss/usermodel/DateUtil.java @@ -567,7 +567,7 @@ public class DateUtil { private static int daysInPriorYears(int yr, boolean use1904windowing) { - if ((!use1904windowing && yr < 1900) || (use1904windowing && yr < 1900)) { + if ((!use1904windowing && yr < 1900) || (use1904windowing && yr < 1904)) { throw new IllegalArgumentException("'year' must be 1900 or greater"); } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java index f5ea7a1cc..2e34d6f60 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java @@ -17,9 +17,7 @@ package org.apache.poi.hssf.usermodel; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; import java.io.IOException; import java.text.ParseException; @@ -349,6 +347,7 @@ public final class TestHSSFDateUtil { HSSFWorkbook workbook = HSSFTestDataSamples.openSampleWorkbook("DateFormats.xls"); HSSFSheet sheet = workbook.getSheetAt(0); InternalWorkbook wb = workbook.getWorkbook(); + assertNotNull(wb); HSSFRow row; HSSFCell cell; @@ -481,6 +480,25 @@ public final class TestHSSFDateUtil { assertEquals("Checking absolute day (1 Jan 1901)", 366, HSSFDateUtil.absoluteDay(calendar, false)); } + @Test + public void absoluteDayYearTooLow() { + GregorianCalendar calendar = new GregorianCalendar(1899, 0, 1); + try { + HSSFDateUtil.absoluteDay(calendar, false); + fail("Should fail here"); + } catch (IllegalArgumentException e) { + // expected here + } + + try { + calendar = new GregorianCalendar(1903, 0, 1); + HSSFDateUtil.absoluteDay(calendar, true); + fail("Should fail here"); + } catch (IllegalArgumentException e) { + // expected here + } + } + @Test public void convertTime() { From 8cf9eaa6854bf63eccbf3fb123b69ff1b7021ed1 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Wed, 20 May 2015 19:13:36 +0000 Subject: [PATCH 155/301] Add verification unit test for bug 47169 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1680657 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/ss/usermodel/BaseTestSheetShiftRows.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetShiftRows.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetShiftRows.java index 4c9d25de0..512b4a7e6 100644 --- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetShiftRows.java +++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetShiftRows.java @@ -417,4 +417,13 @@ public abstract class BaseTestSheetShiftRows extends TestCase { } } -} \ No newline at end of file + public void test47169() throws IOException { + Workbook wb = _testDataProvider.createWorkbook(); + Sheet sheet = wb.createSheet(); + sheet.createRow(30); + sheet.shiftRows(29, 29, 1, true, true); + sheet.createRow(30); + + wb.close(); + } +} From e579b786724426b1a04c49f180ad45ea212c50fb Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Tue, 26 May 2015 13:41:29 +0000 Subject: [PATCH 156/301] More 0 byte stream tests git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1681754 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/poifs/property/DirectoryProperty.java | 11 ++++-- .../poi/poifs/property/RootProperty.java | 2 -- .../filesystem/TestNPOIFSFileSystem.java | 32 ++++++++++++++++++ test-data/poifs/only-zero-byte-streams.ole2 | Bin 0 -> 1536 bytes 4 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 test-data/poifs/only-zero-byte-streams.ole2 diff --git a/src/java/org/apache/poi/poifs/property/DirectoryProperty.java b/src/java/org/apache/poi/poifs/property/DirectoryProperty.java index a73221af2..d86e73ada 100644 --- a/src/java/org/apache/poi/poifs/property/DirectoryProperty.java +++ b/src/java/org/apache/poi/poifs/property/DirectoryProperty.java @@ -28,10 +28,8 @@ import java.util.Set; /** * Directory property - * - * @author Marc Johnson (mjohnson at apache dot org) */ -public class DirectoryProperty extends Property implements Parent { // TODO - fix instantiable superclass +public class DirectoryProperty extends Property implements Parent, Iterable { // TODO - fix instantiable superclass /** List of Property instances */ private List _children; @@ -241,6 +239,13 @@ public class DirectoryProperty extends Property implements Parent { // TODO - fi { return _children.iterator(); } + /** + * Get an iterator over the children of this Parent, alias for + * {@link #getChildren()} which supports foreach use + */ + public Iterator iterator() { + return getChildren(); + } /** * Add a new child to the collection of children diff --git a/src/java/org/apache/poi/poifs/property/RootProperty.java b/src/java/org/apache/poi/poifs/property/RootProperty.java index b934a2601..5a8f3d52e 100644 --- a/src/java/org/apache/poi/poifs/property/RootProperty.java +++ b/src/java/org/apache/poi/poifs/property/RootProperty.java @@ -22,8 +22,6 @@ import org.apache.poi.poifs.storage.SmallDocumentBlock; /** * Root property - * - * @author Marc Johnson (mjohnson at apache dot org) */ public final class RootProperty extends DirectoryProperty { private static final String NAME = "Root Entry"; diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java b/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java index 144437483..69c6cacf6 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java @@ -21,6 +21,7 @@ import static org.hamcrest.core.IsCollectionContaining.hasItem; import static org.hamcrest.core.IsEqual.equalTo; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.fail; import java.io.ByteArrayInputStream; @@ -41,6 +42,7 @@ import org.apache.poi.poifs.property.Property; import org.apache.poi.poifs.property.RootProperty; import org.apache.poi.poifs.storage.HeaderBlock; import org.apache.poi.util.IOUtils; +import org.junit.Ignore; import org.junit.Test; /** @@ -1306,6 +1308,36 @@ public final class TestNPOIFSFileSystem { assertContentsMatches(main4106, normDoc); } + @Test + public void readZeroLengthEntries() throws Exception { + NPOIFSFileSystem fs = new NPOIFSFileSystem(_inst.getFile("only-zero-byte-streams.ole2")); + DirectoryNode testDir = fs.getRoot(); + assertEquals(3, testDir.getEntryCount()); + DocumentEntry entry; + + entry = (DocumentEntry)testDir.getEntry("test-zero-1"); + assertNotNull(entry); + assertEquals(0, entry.getSize()); + + entry = (DocumentEntry)testDir.getEntry("test-zero-2"); + assertNotNull(entry); + assertEquals(0, entry.getSize()); + + entry = (DocumentEntry)testDir.getEntry("test-zero-3"); + assertNotNull(entry); + assertEquals(0, entry.getSize()); + + // Check properties, all have zero length, no blocks + NPropertyTable props = fs._get_property_table(); + assertEquals(POIFSConstants.END_OF_CHAIN, props.getRoot().getStartBlock()); + for (Property prop : props.getRoot()) { + assertEquals("test-zero-", prop.getName().substring(0, 10)); + assertEquals(POIFSConstants.END_OF_CHAIN, prop.getStartBlock()); + } + } + + // TODO Should these have a mini-sbat entry or not? + // TODO Is the reading of zero-length properties exactly correct? @Test public void writeZeroLengthEntries() throws Exception { NPOIFSFileSystem fs = new NPOIFSFileSystem(); diff --git a/test-data/poifs/only-zero-byte-streams.ole2 b/test-data/poifs/only-zero-byte-streams.ole2 new file mode 100644 index 0000000000000000000000000000000000000000..c1b8429878c074df587d00811af481ab75020914 GIT binary patch literal 1536 zcmca`Uhu)fjZzO8(10BSGsD0CoD6J8;*3aa1_1`3{Qv(TAs7vk2MUdXArt~Z4EaD< z!l1z5%8&=7ix?`AW0@dZjDeLA=3SKZfk!7Sy?~UIFr+dR14&(mDj=%}=oVcDLp*xX zr6d@b!1gl%B|z>#m&e8@WWNzMO*q70_A>+Jsb#-04!f`k!|aE}0X8-0V#xjnvH!v} JkJ2M91OV Date: Tue, 26 May 2015 13:46:20 +0000 Subject: [PATCH 157/301] Fix NPOIFS to handle dodgy excel-95 file from bug #46904 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1681756 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java | 2 +- src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java b/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java index 4ad5c0a5b..bb5b3a50e 100644 --- a/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java +++ b/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java @@ -436,7 +436,7 @@ public class NPOIFSFileSystem extends BlockStore List sbats = new ArrayList(); _mini_store = new NPOIFSMiniStore(this, _property_table.getRoot(), sbats, _header); nextAt = _header.getSBATStart(); - for(int i=0; i<_header.getSBATCount(); i++) { + for(int i=0; i<_header.getSBATCount() && nextAt != POIFSConstants.END_OF_CHAIN; i++) { loopDetector.claim(nextAt); ByteBuffer fatData = getBlockAt(nextAt); sfat = BATBlock.createBATBlock(bigBlockSize, fatData); diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java index 36f397c01..df470f26c 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java @@ -1578,8 +1578,6 @@ public final class TestBugs extends BaseTestBugzillaIssues { "The supplied spreadsheet seems to be Excel" )); } - // TODO Fix this to work with NPOIFS as well -/* try { NPOIFSFileSystem fs = new NPOIFSFileSystem( HSSFITestDataProvider.instance.openWorkbookStream("46904.xls")); @@ -1590,7 +1588,6 @@ public final class TestBugs extends BaseTestBugzillaIssues { "The supplied spreadsheet seems to be Excel" )); } -*/ } /** From e9f442ffa7eb4242393183af8165a2faf874a338 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Tue, 26 May 2015 13:56:40 +0000 Subject: [PATCH 158/301] Fix testing for NPOIFS zero-length stream writing git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1681762 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/poifs/filesystem/NPOIFSDocument.java | 4 --- .../poi/poifs/filesystem/NPOIFSStream.java | 6 ++-- .../filesystem/TestNPOIFSFileSystem.java | 33 +++++++++++++++++-- 3 files changed, 35 insertions(+), 8 deletions(-) diff --git a/src/java/org/apache/poi/poifs/filesystem/NPOIFSDocument.java b/src/java/org/apache/poi/poifs/filesystem/NPOIFSDocument.java index 9492c2598..bdc35cee7 100644 --- a/src/java/org/apache/poi/poifs/filesystem/NPOIFSDocument.java +++ b/src/java/org/apache/poi/poifs/filesystem/NPOIFSDocument.java @@ -143,10 +143,6 @@ public final class NPOIFSDocument implements POIFSViewable { os.write(buf, 0, readBytes); } - // If this is an empty document, write a single byte - // to force a block allocation for this document - if (length == 0) os.write(0); - // Tidy and return the length os.close(); return length; diff --git a/src/java/org/apache/poi/poifs/filesystem/NPOIFSStream.java b/src/java/org/apache/poi/poifs/filesystem/NPOIFSStream.java index 5d444b8cb..da24fc383 100644 --- a/src/java/org/apache/poi/poifs/filesystem/NPOIFSStream.java +++ b/src/java/org/apache/poi/poifs/filesystem/NPOIFSStream.java @@ -256,8 +256,10 @@ public class NPOIFSStream implements Iterable NPOIFSStream toFree = new NPOIFSStream(blockStore, nextBlock); toFree.free(loopDetector); - // Mark the end of the stream - blockStore.setNextBlock(prevBlock, POIFSConstants.END_OF_CHAIN); + // Mark the end of the stream, if we have any data + if (prevBlock != POIFSConstants.END_OF_CHAIN) { + blockStore.setNextBlock(prevBlock, POIFSConstants.END_OF_CHAIN); + } } } } diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java b/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java index 69c6cacf6..75161b9f8 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java @@ -1336,8 +1336,6 @@ public final class TestNPOIFSFileSystem { } } - // TODO Should these have a mini-sbat entry or not? - // TODO Is the reading of zero-length properties exactly correct? @Test public void writeZeroLengthEntries() throws Exception { NPOIFSFileSystem fs = new NPOIFSFileSystem(); @@ -1378,6 +1376,37 @@ public final class TestNPOIFSFileSystem { emptyDoc = (DocumentEntry)testDir.getEntry("empty-3"); assertContentsMatches(empty, emptyDoc); + // Look at the properties entry, and check the empty ones + // have zero size and no start block + NPropertyTable props = fs._get_property_table(); + Iterator propsIt = props.getRoot().getChildren(); + + Property prop = propsIt.next(); + assertEquals("Mini2", prop.getName()); + assertEquals(0, prop.getStartBlock()); + assertEquals(7, prop.getSize()); + + prop = propsIt.next(); + assertEquals("Normal4106", prop.getName()); + assertEquals(4, prop.getStartBlock()); // BAT, Props, SBAT, MIni + assertEquals(4106, prop.getSize()); + + prop = propsIt.next(); + assertEquals("empty-1", prop.getName()); + assertEquals(POIFSConstants.END_OF_CHAIN, prop.getStartBlock()); + assertEquals(0, prop.getSize()); + + prop = propsIt.next(); + assertEquals("empty-2", prop.getName()); + assertEquals(POIFSConstants.END_OF_CHAIN, prop.getStartBlock()); + assertEquals(0, prop.getSize()); + + prop = propsIt.next(); + assertEquals("empty-3", prop.getName()); + assertEquals(POIFSConstants.END_OF_CHAIN, prop.getStartBlock()); + assertEquals(0, prop.getSize()); + + // Save and re-check fs = writeOutAndReadBack(fs); testDir = fs.getRoot(); From fe07d32178a2225ec58e8c72013499d02fb6d582 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Tue, 26 May 2015 14:06:17 +0000 Subject: [PATCH 159/301] Fix warnings git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1681763 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/poifs/filesystem/TestNPOIFSFileSystem.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java b/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java index 75161b9f8..13fef7d8b 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java @@ -20,8 +20,8 @@ package org.apache.poi.poifs.filesystem; import static org.hamcrest.core.IsCollectionContaining.hasItem; import static org.hamcrest.core.IsEqual.equalTo; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertThat; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; import java.io.ByteArrayInputStream; @@ -42,7 +42,6 @@ import org.apache.poi.poifs.property.Property; import org.apache.poi.poifs.property.RootProperty; import org.apache.poi.poifs.storage.HeaderBlock; import org.apache.poi.util.IOUtils; -import org.junit.Ignore; import org.junit.Test; /** @@ -1306,6 +1305,9 @@ public final class TestNPOIFSFileSystem { normDoc = (DocumentEntry)testDir.getEntry("Normal4106"); assertContentsMatches(main4106, normDoc); + + // All done + fs.close(); } @Test @@ -1334,6 +1336,9 @@ public final class TestNPOIFSFileSystem { assertEquals("test-zero-", prop.getName().substring(0, 10)); assertEquals(POIFSConstants.END_OF_CHAIN, prop.getStartBlock()); } + + // All done + fs.close(); } @Test @@ -1425,6 +1430,9 @@ public final class TestNPOIFSFileSystem { emptyDoc = (DocumentEntry)testDir.getEntry("empty-3"); assertContentsMatches(empty, emptyDoc); + + // All done + fs.close(); } /** From e4b6cb6811183c2edcd7abe8f25021b9a3a0a6e6 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Tue, 26 May 2015 17:55:23 +0000 Subject: [PATCH 160/301] Remove a long-deprecated OPOIFS related method git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1681801 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/hssf/extractor/EventBasedExcelExtractor.java | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/java/org/apache/poi/hssf/extractor/EventBasedExcelExtractor.java b/src/java/org/apache/poi/hssf/extractor/EventBasedExcelExtractor.java index debeee92c..4220ca261 100644 --- a/src/java/org/apache/poi/hssf/extractor/EventBasedExcelExtractor.java +++ b/src/java/org/apache/poi/hssf/extractor/EventBasedExcelExtractor.java @@ -84,16 +84,6 @@ public class EventBasedExcelExtractor extends POIOLE2TextExtractor implements or this(fs.getRoot()); } - /** - * Return the underlying POIFS FileSystem of - * this document. - * - * @deprecated Use {@link #getRoot()} instead - */ - public POIFSFileSystem getFileSystem() { - return _dir.getFileSystem(); - } - /** * Would return the document information metadata for the document, * if we supported it From 8878be359a3c7566614adc5b0ebc9ddfae277e4a Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Tue, 26 May 2015 17:59:13 +0000 Subject: [PATCH 161/301] Force OPOIFS test to explicitly create OPOIFS instance git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1681802 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/poifs/filesystem/TestFileSystemBugs.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java b/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java index 3de3ccb8d..2f7c67f37 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestFileSystemBugs.java @@ -67,9 +67,9 @@ public final class TestFileSystemBugs extends TestCase { if (openedFSs == null) openedFSs = new ArrayList(); openedFSs.add(nfs); - POIFSFileSystem ofs = null; + OPOIFSFileSystem ofs = null; try { - ofs = new POIFSFileSystem(inps[1]); + ofs = new OPOIFSFileSystem(inps[1]); if (oldFails) fail("POIFSFileSystem should have failed but didn't"); } catch (Exception e) { if (!oldFails) throw e; From b8d9c978adc3c792c14ee3f53f7d3004b8c77d27 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Tue, 26 May 2015 18:03:29 +0000 Subject: [PATCH 162/301] Force OPOIFS test to explicitly create OPOIFS instance git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1681803 13f79535-47bb-0310-9956-ffa450edef68 --- .../poifs/filesystem/TestPOIFSFileSystem.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestPOIFSFileSystem.java b/src/testcases/org/apache/poi/poifs/filesystem/TestPOIFSFileSystem.java index bbb9b9db1..2655b4414 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestPOIFSFileSystem.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestPOIFSFileSystem.java @@ -35,7 +35,7 @@ import org.apache.poi.poifs.storage.HeaderBlock; import org.apache.poi.poifs.storage.RawDataBlockList; /** - * Tests for POIFSFileSystem + * Tests for the older OPOIFS-based POIFSFileSystem */ public final class TestPOIFSFileSystem extends TestCase { private POIDataSamples _samples = POIDataSamples.getPOIFSInstance(); @@ -104,7 +104,7 @@ public final class TestPOIFSFileSystem extends TestCase { // Normal case - read until EOF and close testIS = new TestIS(openSampleStream("13224.xls"), -1); try { - new POIFSFileSystem(testIS); + new OPOIFSFileSystem(testIS); } catch (IOException e) { throw new RuntimeException(e); } @@ -113,7 +113,7 @@ public final class TestPOIFSFileSystem extends TestCase { // intended to crash after reading 10000 bytes testIS = new TestIS(openSampleStream("13224.xls"), 10000); try { - new POIFSFileSystem(testIS); + new OPOIFSFileSystem(testIS); fail("ex should have been thrown"); } catch (IOException e) { throw new RuntimeException(e); @@ -141,7 +141,7 @@ public final class TestPOIFSFileSystem extends TestCase { for(int i=0; i 3); @@ -268,7 +268,7 @@ public final class TestPOIFSFileSystem extends TestCase { checkAllDirectoryContents(fs.getRoot()); // Finally, check we can do a similar 512byte one too - fs = new POIFSFileSystem( + fs = new OPOIFSFileSystem( _samples.openResourceAsStream("BlockSize512.zvi")); assertTrue(fs.getRoot().getEntryCount() > 3); checkAllDirectoryContents(fs.getRoot()); From b2d1c1b6ac2c393cc6c8ba10f95a73ad8c240012 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Tue, 26 May 2015 18:04:00 +0000 Subject: [PATCH 163/301] #56791 Make NPOIFS the default when POIFSFileSystem is requested git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1681804 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/poifs/filesystem/DirectoryNode.java | 9 ++++++--- .../poi/poifs/filesystem/POIFSFileSystem.java | 6 +++--- .../filesystem/TestDocumentInputStream.java | 16 +++++++++------- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/java/org/apache/poi/poifs/filesystem/DirectoryNode.java b/src/java/org/apache/poi/poifs/filesystem/DirectoryNode.java index e8c6638bf..9be71a5cc 100644 --- a/src/java/org/apache/poi/poifs/filesystem/DirectoryNode.java +++ b/src/java/org/apache/poi/poifs/filesystem/DirectoryNode.java @@ -145,14 +145,15 @@ public class DirectoryNode /** * @return the filesystem that this belongs to - * TODO Temporary workaround during #56791 */ - public POIFSFileSystem getFileSystem() + public NPOIFSFileSystem getFileSystem() { - return (POIFSFileSystem)_ofilesystem; + return _nfilesystem; } /** + * If this is OPOIFS based, return the NPOIFSFileSystem + * that this belong to, otherwise Null if NPOIFS based * @return the filesystem that this belongs to */ public OPOIFSFileSystem getOFileSystem() @@ -161,6 +162,8 @@ public class DirectoryNode } /** + * If this is NPOIFS based, return the NPOIFSFileSystem + * that this belong to, otherwise Null if OPOIFS based * @return the filesystem that this belongs to */ public NPOIFSFileSystem getNFileSystem() diff --git a/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java b/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java index b8afa2f70..5afb4eb8f 100644 --- a/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java +++ b/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java @@ -32,7 +32,7 @@ import org.apache.poi.util.CloseIgnoringInputStream; */ public class POIFSFileSystem - extends OPOIFSFileSystem // TODO Temporary workaround during #56791 + extends NPOIFSFileSystem // TODO Temporary workaround during #56791 implements POIFSViewable { /** @@ -95,14 +95,14 @@ public class POIFSFileSystem * @param inp An InputStream which supports either mark/reset, or is a PushbackInputStream */ public static boolean hasPOIFSHeader(InputStream inp) throws IOException { - return OPOIFSFileSystem.hasPOIFSHeader(inp); + return NPOIFSFileSystem.hasPOIFSHeader(inp); } /** * Checks if the supplied first 8 bytes of a stream / file * has a POIFS (OLE2) header. */ public static boolean hasPOIFSHeader(byte[] header8Bytes) { - return OPOIFSFileSystem.hasPOIFSHeader(header8Bytes); + return NPOIFSFileSystem.hasPOIFSHeader(header8Bytes); } /** diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentInputStream.java b/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentInputStream.java index 98b2b7a7d..801935865 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentInputStream.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentInputStream.java @@ -31,10 +31,7 @@ import org.apache.poi.poifs.storage.RawDataBlock; /** * Class to test DocumentInputStream functionality - * - * @author Marc Johnson */ - public final class TestDocumentInputStream extends TestCase { private DocumentNode _workbook_n; private DocumentNode _workbook_o; @@ -95,7 +92,7 @@ public final class TestDocumentInputStream extends TestCase { * test constructor */ public void testConstructor() throws IOException { - DocumentInputStream ostream = new DocumentInputStream(_workbook_o); + DocumentInputStream ostream = new ODocumentInputStream(_workbook_o); DocumentInputStream nstream = new NDocumentInputStream(_workbook_n); assertEquals(_workbook_size, _workbook_o.getSize()); @@ -103,6 +100,9 @@ public final class TestDocumentInputStream extends TestCase { assertEquals(_workbook_size, ostream.available()); assertEquals(_workbook_size, nstream.available()); + + ostream.close(); + nstream.close(); } /** @@ -514,12 +514,14 @@ public final class TestDocumentInputStream extends TestCase { NPOIFSFileSystem npoifs = new NPOIFSFileSystem(sample); try { - POIFSFileSystem opoifs = new POIFSFileSystem(new FileInputStream(sample)); + OPOIFSFileSystem opoifs = new OPOIFSFileSystem(new FileInputStream(sample)); // Ensure we have what we expect on the root assertEquals(npoifs, npoifs.getRoot().getNFileSystem()); - assertEquals(null, npoifs.getRoot().getFileSystem()); - assertEquals(opoifs, opoifs.getRoot().getFileSystem()); + assertEquals(npoifs, npoifs.getRoot().getFileSystem()); + assertEquals(null, npoifs.getRoot().getOFileSystem()); + assertEquals(null, opoifs.getRoot().getFileSystem()); + assertEquals(opoifs, opoifs.getRoot().getOFileSystem()); assertEquals(null, opoifs.getRoot().getNFileSystem()); // Check inside From 2f87b078e990dda98ec9792aedeb06d4b0b9f1ca Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Tue, 26 May 2015 18:38:34 +0000 Subject: [PATCH 164/301] Add ignore - file has no content streams git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1681809 13f79535-47bb-0310-9956-ffa450edef68 --- src/integrationtest/org/apache/poi/TestAllFiles.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/integrationtest/org/apache/poi/TestAllFiles.java b/src/integrationtest/org/apache/poi/TestAllFiles.java index 96b00fa9d..85b058084 100644 --- a/src/integrationtest/org/apache/poi/TestAllFiles.java +++ b/src/integrationtest/org/apache/poi/TestAllFiles.java @@ -231,6 +231,7 @@ public class TestAllFiles { EXPECTED_FAILURES.add("spreadsheet/54764.xlsx"); // see TestXSSFBugs.bug54764() EXPECTED_FAILURES.add("spreadsheet/Simple.xlsb"); EXPECTED_FAILURES.add("poifs/unknown_properties.msg"); // POIFS properties corrupted + EXPECTED_FAILURES.add("poifs/only-zero-byte-streams.ole2"); // No actual contents // old Excel files, which we only support simple text extraction of EXPECTED_FAILURES.add("spreadsheet/testEXCEL_2.xls"); From 9017803980006ead9ad3933a64b8c9e8f2ea37cb Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Tue, 26 May 2015 19:30:04 +0000 Subject: [PATCH 165/301] Make POIXMLDocument implement Closeable as it holds an OCPPackage with open resources and thus should be closed after usage. Until now only XSSFWorkbook did this, but it makes sense for all derived classes. Also make close() in POIXMLDocument public to not have to re-implement it in all sub-classes. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1681822 13f79535-47bb-0310-9956-ffa450edef68 --- src/ooxml/java/org/apache/poi/POIXMLDocument.java | 5 +++-- .../apache/poi/xssf/usermodel/XSSFWorkbook.java | 10 ---------- .../org/apache/poi/TestPOIXMLDocument.java | 15 +++++++++------ 3 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/POIXMLDocument.java b/src/ooxml/java/org/apache/poi/POIXMLDocument.java index bf241f897..0e18ee112 100644 --- a/src/ooxml/java/org/apache/poi/POIXMLDocument.java +++ b/src/ooxml/java/org/apache/poi/POIXMLDocument.java @@ -16,6 +16,7 @@ ==================================================================== */ package org.apache.poi; +import java.io.Closeable; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -37,7 +38,7 @@ import org.apache.poi.poifs.common.POIFSConstants; import org.apache.poi.util.IOUtils; import org.apache.xmlbeans.impl.common.SystemCache; -public abstract class POIXMLDocument extends POIXMLDocumentPart{ +public abstract class POIXMLDocument extends POIXMLDocumentPart implements Closeable { public static final String DOCUMENT_CREATOR = "Apache POI"; // OLE embeddings relation name @@ -171,7 +172,7 @@ public abstract class POIXMLDocument extends POIXMLDocumentPart{ * Closes the underlying {@link OPCPackage} from which this * document was read, if there is one */ - protected void close() throws IOException { + public void close() throws IOException { if (pkg != null) { if (pkg.getPackageAccess() == PackageAccess.READ) { pkg.revert(); diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java index 9230797e4..9406fb17c 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java @@ -1548,16 +1548,6 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable Date: Tue, 26 May 2015 19:30:21 +0000 Subject: [PATCH 166/301] Add WorkbookFactory.create() with a flag to allow to open files read-only, keep the current way of opening read/write as default to not break existing code. Also adjust Javadoc somewhat. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1681823 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/ss/usermodel/WorkbookFactory.java | 153 +++++++++++++----- .../apache/poi/ss/TestWorkbookFactory.java | 16 ++ 2 files changed, 129 insertions(+), 40 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java b/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java index 3f5d5ea83..dfdf3f92e 100644 --- a/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java +++ b/src/ooxml/java/org/apache/poi/ss/usermodel/WorkbookFactory.java @@ -30,6 +30,7 @@ import org.apache.poi.hssf.record.crypto.Biff8EncryptionKey; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.openxml4j.opc.OPCPackage; +import org.apache.poi.openxml4j.opc.PackageAccess; import org.apache.poi.poifs.crypt.Decryptor; import org.apache.poi.poifs.crypt.EncryptionInfo; import org.apache.poi.poifs.filesystem.DirectoryNode; @@ -41,22 +42,22 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; /** * Factory for creating the appropriate kind of Workbook - * (be it {@link HSSFWorkbook} or {@link XSSFWorkbook}), + * (be it {@link HSSFWorkbook} or {@link XSSFWorkbook}), * by auto-detecting from the supplied input. */ public class WorkbookFactory { /** * Creates a HSSFWorkbook from the given POIFSFileSystem - *

Note that in order to properly release resources the + *

Note that in order to properly release resources the * Workbook should be closed after use. */ public static Workbook create(POIFSFileSystem fs) throws IOException { return new HSSFWorkbook(fs); } - + /** * Creates a HSSFWorkbook from the given NPOIFSFileSystem - *

Note that in order to properly release resources the + *

Note that in order to properly release resources the * Workbook should be closed after use. */ public static Workbook create(NPOIFSFileSystem fs) throws IOException { @@ -67,19 +68,27 @@ public class WorkbookFactory { throw new IOException(e); } } - + /** * Creates a Workbook from the given NPOIFSFileSystem, which may * be password protected + * + * @param fs The {@link NPOIFSFileSystem} to read the document from + * @param password The password that should be used or null if no password is necessary. + * + * @return The created Workbook + * + * @throws IOException if an error occurs while reading the data + * @throws InvalidFormatException if the contents of the file cannot be parsed into a {@link Workbook} */ private static Workbook create(NPOIFSFileSystem fs, String password) throws IOException, InvalidFormatException { DirectoryNode root = fs.getRoot(); - + // Encrypted OOXML files go inside OLE2 containers, is this one? if (root.hasEntry(Decryptor.DEFAULT_POIFS_ENTRY)) { EncryptionInfo info = new EncryptionInfo(fs); Decryptor d = Decryptor.getInstance(info); - + boolean passwordCorrect = false; InputStream stream = null; try { @@ -95,18 +104,18 @@ public class WorkbookFactory { } catch (GeneralSecurityException e) { throw new IOException(e); } - + if (! passwordCorrect) { if (password != null) throw new EncryptedDocumentException("Password incorrect"); else throw new EncryptedDocumentException("The supplied spreadsheet is protected, but no password was supplied"); } - + OPCPackage pkg = OPCPackage.open(stream); return create(pkg); } - + // If we get here, it isn't an encrypted XLSX file // So, treat it as a regular HSSF XLS one if (password != null) { @@ -116,53 +125,78 @@ public class WorkbookFactory { Biff8EncryptionKey.setCurrentUserPassword(null); return wb; } - + /** * Creates a XSSFWorkbook from the given OOXML Package - *

Note that in order to properly release resources the - * Workbook should be closed after use. + * + *

Note that in order to properly release resources the + * Workbook should be closed after use.

+ * + * @param pkg The {@link OPCPackage} opened for reading data. + * + * @return The created Workbook + * + * @throws IOException if an error occurs while reading the data */ public static Workbook create(OPCPackage pkg) throws IOException { return new XSSFWorkbook(pkg); } - + /** * Creates the appropriate HSSFWorkbook / XSSFWorkbook from * the given InputStream. + * *

Your input stream MUST either support mark/reset, or - * be wrapped as a {@link PushbackInputStream}! Note that - * using an {@link InputStream} has a higher memory footprint - * than using a {@link File}.

- *

Note that in order to properly release resources the + * be wrapped as a {@link PushbackInputStream}! Note that + * using an {@link InputStream} has a higher memory footprint + * than using a {@link File}.

+ * + *

Note that in order to properly release resources the * Workbook should be closed after use. Note also that loading * from an InputStream requires more memory than loading - * from a File, so prefer {@link #create(File)} where possible. - * @throws EncryptedDocumentException If the workbook given is password protected + * from a File, so prefer {@link #create(File)} where possible. + * + * @param inp The {@link InputStream} to read data from. + * + * @return The created Workbook + * + * @throws IOException if an error occurs while reading the data + * @throws InvalidFormatException if the contents of the file cannot be parsed into a {@link Workbook} + * @throws EncryptedDocumentException If the workbook given is password protected */ public static Workbook create(InputStream inp) throws IOException, InvalidFormatException, EncryptedDocumentException { return create(inp, null); } - + /** * Creates the appropriate HSSFWorkbook / XSSFWorkbook from * the given InputStream, which may be password protected. *

Your input stream MUST either support mark/reset, or - * be wrapped as a {@link PushbackInputStream}! Note that - * using an {@link InputStream} has a higher memory footprint - * than using a {@link File}.

- *

Note that in order to properly release resources the + * be wrapped as a {@link PushbackInputStream}! Note that + * using an {@link InputStream} has a higher memory footprint + * than using a {@link File}.

+ * + *

Note that in order to properly release resources the * Workbook should be closed after use. Note also that loading * from an InputStream requires more memory than loading - * from a File, so prefer {@link #create(File)} where possible. - * @throws EncryptedDocumentException If the wrong password is given for a protected file - * @throws EmptyFileException If an empty stream is given + * from a File, so prefer {@link #create(File)} where possible.

+ * + * @param inp The {@link InputStream} to read data from. + * @param password The password that should be used or null if no password is necessary. + * + * @return The created Workbook + * + * @throws IOException if an error occurs while reading the data + * @throws InvalidFormatException if the contents of the file cannot be parsed into a {@link Workbook} + * @throws EncryptedDocumentException If the wrong password is given for a protected file + * @throws EmptyFileException If an empty stream is given */ public static Workbook create(InputStream inp, String password) throws IOException, InvalidFormatException, EncryptedDocumentException { // If clearly doesn't do mark/reset, wrap up if (! inp.markSupported()) { inp = new PushbackInputStream(inp, 8); } - + // Ensure that there is at least some data there byte[] header8 = IOUtils.peekFirst8Bytes(inp); @@ -176,51 +210,90 @@ public class WorkbookFactory { } throw new IllegalArgumentException("Your InputStream was neither an OLE2 stream, nor an OOXML stream"); } - + /** * Creates the appropriate HSSFWorkbook / XSSFWorkbook from * the given File, which must exist and be readable. - *

Note that in order to properly release resources the + *

Note that in order to properly release resources the * Workbook should be closed after use. - * @throws EncryptedDocumentException If the workbook given is password protected + * + * @param file The file to read data from. + * + * @return The created Workbook + * + * @throws IOException if an error occurs while reading the data + * @throws InvalidFormatException if the contents of the file cannot be parsed into a {@link Workbook} + * @throws EncryptedDocumentException If the workbook given is password protected */ public static Workbook create(File file) throws IOException, InvalidFormatException, EncryptedDocumentException { return create(file, null); } + /** * Creates the appropriate HSSFWorkbook / XSSFWorkbook from * the given File, which must exist and be readable, and * may be password protected - *

Note that in order to properly release resources the + *

Note that in order to properly release resources the * Workbook should be closed after use. - * @throws EncryptedDocumentException If the wrong password is given for a protected file - * @throws EmptyFileException If an empty stream is given + * + * @param file The file to read data from. + * @param password The password that should be used or null if no password is necessary. + * + * @return The created Workbook + * + * @throws IOException if an error occurs while reading the data + * @throws InvalidFormatException if the contents of the file cannot be parsed into a {@link Workbook} + * @throws EncryptedDocumentException If the wrong password is given for a protected file + * @throws EmptyFileException If an empty stream is given */ public static Workbook create(File file, String password) throws IOException, InvalidFormatException, EncryptedDocumentException { + return create(file, password, false); + } + + /** + * Creates the appropriate HSSFWorkbook / XSSFWorkbook from + * the given File, which must exist and be readable, and + * may be password protected + *

Note that in order to properly release resources the + * Workbook should be closed after use. + * + * @param file The file to read data from. + * @param password The password that should be used or null if no password is necessary. + * @param readOnly If the Workbook should be opened in read-only mode to avoid writing back + * changes when the document is closed. + * + * @return The created Workbook + * + * @throws IOException if an error occurs while reading the data + * @throws InvalidFormatException if the contents of the file cannot be parsed into a {@link Workbook} + * @throws EncryptedDocumentException If the wrong password is given for a protected file + * @throws EmptyFileException If an empty stream is given + */ + public static Workbook create(File file, String password, boolean readOnly) throws IOException, InvalidFormatException, EncryptedDocumentException { if (! file.exists()) { throw new FileNotFoundException(file.toString()); } try { - NPOIFSFileSystem fs = new NPOIFSFileSystem(file); + NPOIFSFileSystem fs = new NPOIFSFileSystem(file, readOnly); return create(fs, password); } catch(OfficeXmlFileException e) { // opening as .xls failed => try opening as .xlsx - OPCPackage pkg = OPCPackage.open(file); + OPCPackage pkg = OPCPackage.open(file, readOnly ? PackageAccess.READ : PackageAccess.READ_WRITE); try { return new XSSFWorkbook(pkg); } catch (IOException ioe) { // ensure that file handles are closed (use revert() to not re-write the file) pkg.revert(); //pkg.close(); - + // rethrow exception throw ioe; } catch (IllegalArgumentException ioe) { - // ensure that file handles are closed (use revert() to not re-write the file) + // ensure that file handles are closed (use revert() to not re-write the file) pkg.revert(); //pkg.close(); - + // rethrow exception throw ioe; } diff --git a/src/ooxml/testcases/org/apache/poi/ss/TestWorkbookFactory.java b/src/ooxml/testcases/org/apache/poi/ss/TestWorkbookFactory.java index 27d6d9ec1..f3fcbb889 100644 --- a/src/ooxml/testcases/org/apache/poi/ss/TestWorkbookFactory.java +++ b/src/ooxml/testcases/org/apache/poi/ss/TestWorkbookFactory.java @@ -70,6 +70,22 @@ public final class TestWorkbookFactory extends TestCase { // TODO: this re-writes the sample-file?! wb.close(); } + public void testCreateReadOnly() throws Exception { + Workbook wb; + + // POIFS -> hssf + wb = WorkbookFactory.create(HSSFTestDataSamples.getSampleFile(xls), null, true); + assertNotNull(wb); + assertTrue(wb instanceof HSSFWorkbook); + wb.close(); + + // Package -> xssf + wb = WorkbookFactory.create(HSSFTestDataSamples.getSampleFile(xlsx), null, true); + assertNotNull(wb); + assertTrue(wb instanceof XSSFWorkbook); + wb.close(); + } + /** * Creates the appropriate kind of Workbook, but * checking the mime magic at the start of the From 4e3011f70acc1af2df5a08c35683f3fab9a3be2c Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Wed, 27 May 2015 17:10:45 +0000 Subject: [PATCH 167/301] Fix inconsistent indents git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1682081 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/ss/usermodel/DataFormatter.java | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/java/org/apache/poi/ss/usermodel/DataFormatter.java b/src/java/org/apache/poi/ss/usermodel/DataFormatter.java index 28dbfbe3f..1d7c59882 100644 --- a/src/java/org/apache/poi/ss/usermodel/DataFormatter.java +++ b/src/java/org/apache/poi/ss/usermodel/DataFormatter.java @@ -731,7 +731,7 @@ public class DataFormatter { * @see #formatCellValue(Cell) */ public String formatRawCellContents(double value, int formatIndex, String formatString) { - return formatRawCellContents(value, formatIndex, formatString, false); + return formatRawCellContents(value, formatIndex, formatString, false); } /** * Formats the given raw cell value, based on the supplied @@ -744,28 +744,28 @@ public class DataFormatter { if(DateUtil.isValidExcelDate(value)) { Format dateFormat = getFormat(value, formatIndex, formatString); if(dateFormat instanceof ExcelStyleDateFormatter) { - // Hint about the raw excel value - ((ExcelStyleDateFormatter)dateFormat).setDateToBeFormatted(value); + // Hint about the raw excel value + ((ExcelStyleDateFormatter)dateFormat).setDateToBeFormatted(value); } Date d = DateUtil.getJavaDate(value, use1904Windowing); return performDateFormatting(d, dateFormat); } - // RK: Invalid dates are 255 #s. - if (emulateCsv) { - return invalidDateTimeString; - } + // RK: Invalid dates are 255 #s. + if (emulateCsv) { + return invalidDateTimeString; + } } // else Number - Format numberFormat = getFormat(value, formatIndex, formatString); - if (numberFormat == null) { - return String.valueOf(value); - } - // RK: This hack handles scientific notation by adding the missing + back. - String result = numberFormat.format(new Double(value)); - if (result.contains("E") && !result.contains("E-")) { - result = result.replaceFirst("E", "E+"); - } - return result; + Format numberFormat = getFormat(value, formatIndex, formatString); + if (numberFormat == null) { + return String.valueOf(value); + } + // RK: This hack handles scientific notation by adding the missing + back. + String result = numberFormat.format(new Double(value)); + if (result.contains("E") && !result.contains("E-")) { + result = result.replaceFirst("E", "E+"); + } + return result; } /** From 77916b93648ce51b260d42edd3e37c40042cc870 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Wed, 27 May 2015 17:15:17 +0000 Subject: [PATCH 168/301] #57951 Use BigDecimal in some cases in DataFormatter.formatRawCellContents, to avoid rounding problems on JDK8. Patch from Robert Kish git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1682083 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/ss/usermodel/DataFormatter.java | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/java/org/apache/poi/ss/usermodel/DataFormatter.java b/src/java/org/apache/poi/ss/usermodel/DataFormatter.java index 1d7c59882..766ded18f 100644 --- a/src/java/org/apache/poi/ss/usermodel/DataFormatter.java +++ b/src/java/org/apache/poi/ss/usermodel/DataFormatter.java @@ -20,6 +20,7 @@ ==================================================================== */ package org.apache.poi.ss.usermodel; +import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DateFormatSymbols; import java.text.DecimalFormat; @@ -38,6 +39,8 @@ import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.apache.poi.ss.util.NumberToTextConverter; + /** * DataFormatter contains methods for formatting the value stored in an @@ -755,14 +758,28 @@ public class DataFormatter { return invalidDateTimeString; } } + // else Number Format numberFormat = getFormat(value, formatIndex, formatString); if (numberFormat == null) { return String.valueOf(value); } - // RK: This hack handles scientific notation by adding the missing + back. - String result = numberFormat.format(new Double(value)); - if (result.contains("E") && !result.contains("E-")) { + + // When formatting 'value', double to text to BigDecimal produces more + // accurate results than double to Double in JDK8 (as compared to + // previous versions). However, if the value contains E notation, this + // would expand the values, which we do not want, so revert to + // original method. + String result; + final String textValue = NumberToTextConverter.toText(value); + if (textValue.indexOf('E') > -1) { + result = numberFormat.format(new Double(value)); + } + else { + result = numberFormat.format(new BigDecimal(textValue)); + } + // Complete scientific notation by adding the missing +. + if (result.indexOf('E') > -1 && !result.contains("E-")) { result = result.replaceFirst("E", "E+"); } return result; From f769cb346153125976b64a87959d6a9af091ae01 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 28 May 2015 11:00:32 +0000 Subject: [PATCH 169/301] Fix inconsistent indents git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1682201 13f79535-47bb-0310-9956-ffa450edef68 --- build.xml | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/build.xml b/build.xml index 4e4d60932..d8a1e0f97 100644 --- a/build.xml +++ b/build.xml @@ -56,7 +56,7 @@ under the License. - + @@ -192,14 +192,14 @@ under the License. - - - - - - - - + + + + + + + + + - + @@ -271,7 +272,7 @@ under the License. - + @@ -279,7 +280,7 @@ under the License. - + @@ -287,14 +288,14 @@ under the License. - + - + @@ -329,7 +330,7 @@ under the License. - + From 1b20215fc7e35097ae884148a17a187a38058c42 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 28 May 2015 11:06:18 +0000 Subject: [PATCH 170/301] #57963 Move the WP and SL interface definitions to core from scratchpad, so the OOXML classes can work without scratchpad git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1682204 13f79535-47bb-0310-9956-ffa450edef68 --- .../src => java}/org/apache/poi/sl/usermodel/AutoShape.java | 0 .../src => java}/org/apache/poi/sl/usermodel/Background.java | 0 .../src => java}/org/apache/poi/sl/usermodel/Fill.java | 0 .../src => java}/org/apache/poi/sl/usermodel/FontCollection.java | 0 .../src => java}/org/apache/poi/sl/usermodel/Hyperlink.java | 0 .../src => java}/org/apache/poi/sl/usermodel/Line.java | 0 .../src => java}/org/apache/poi/sl/usermodel/LineStyle.java | 0 .../src => java}/org/apache/poi/sl/usermodel/MasterSheet.java | 0 .../src => java}/org/apache/poi/sl/usermodel/Notes.java | 0 .../src => java}/org/apache/poi/sl/usermodel/Picture.java | 0 .../src => java}/org/apache/poi/sl/usermodel/PictureData.java | 0 .../src => java}/org/apache/poi/sl/usermodel/Resources.java | 0 .../src => java}/org/apache/poi/sl/usermodel/Shape.java | 0 .../src => java}/org/apache/poi/sl/usermodel/ShapeContainer.java | 0 .../src => java}/org/apache/poi/sl/usermodel/ShapeGroup.java | 0 .../src => java}/org/apache/poi/sl/usermodel/ShapeTypes.java | 0 .../src => java}/org/apache/poi/sl/usermodel/Sheet.java | 0 .../src => java}/org/apache/poi/sl/usermodel/SimpleShape.java | 0 .../src => java}/org/apache/poi/sl/usermodel/Slide.java | 0 .../src => java}/org/apache/poi/sl/usermodel/SlideShow.java | 0 .../src => java}/org/apache/poi/sl/usermodel/TextBox.java | 0 .../src => java}/org/apache/poi/sl/usermodel/TextRun.java | 0 .../src => java}/org/apache/poi/wp/usermodel/CharacterRun.java | 0 .../src => java}/org/apache/poi/wp/usermodel/Paragraph.java | 0 24 files changed, 0 insertions(+), 0 deletions(-) rename src/{scratchpad/src => java}/org/apache/poi/sl/usermodel/AutoShape.java (100%) rename src/{scratchpad/src => java}/org/apache/poi/sl/usermodel/Background.java (100%) rename src/{scratchpad/src => java}/org/apache/poi/sl/usermodel/Fill.java (100%) rename src/{scratchpad/src => java}/org/apache/poi/sl/usermodel/FontCollection.java (100%) rename src/{scratchpad/src => java}/org/apache/poi/sl/usermodel/Hyperlink.java (100%) rename src/{scratchpad/src => java}/org/apache/poi/sl/usermodel/Line.java (100%) rename src/{scratchpad/src => java}/org/apache/poi/sl/usermodel/LineStyle.java (100%) rename src/{scratchpad/src => java}/org/apache/poi/sl/usermodel/MasterSheet.java (100%) rename src/{scratchpad/src => java}/org/apache/poi/sl/usermodel/Notes.java (100%) rename src/{scratchpad/src => java}/org/apache/poi/sl/usermodel/Picture.java (100%) rename src/{scratchpad/src => java}/org/apache/poi/sl/usermodel/PictureData.java (100%) rename src/{scratchpad/src => java}/org/apache/poi/sl/usermodel/Resources.java (100%) rename src/{scratchpad/src => java}/org/apache/poi/sl/usermodel/Shape.java (100%) rename src/{scratchpad/src => java}/org/apache/poi/sl/usermodel/ShapeContainer.java (100%) rename src/{scratchpad/src => java}/org/apache/poi/sl/usermodel/ShapeGroup.java (100%) rename src/{scratchpad/src => java}/org/apache/poi/sl/usermodel/ShapeTypes.java (100%) rename src/{scratchpad/src => java}/org/apache/poi/sl/usermodel/Sheet.java (100%) rename src/{scratchpad/src => java}/org/apache/poi/sl/usermodel/SimpleShape.java (100%) rename src/{scratchpad/src => java}/org/apache/poi/sl/usermodel/Slide.java (100%) rename src/{scratchpad/src => java}/org/apache/poi/sl/usermodel/SlideShow.java (100%) rename src/{scratchpad/src => java}/org/apache/poi/sl/usermodel/TextBox.java (100%) rename src/{scratchpad/src => java}/org/apache/poi/sl/usermodel/TextRun.java (100%) rename src/{scratchpad/src => java}/org/apache/poi/wp/usermodel/CharacterRun.java (100%) rename src/{scratchpad/src => java}/org/apache/poi/wp/usermodel/Paragraph.java (100%) diff --git a/src/scratchpad/src/org/apache/poi/sl/usermodel/AutoShape.java b/src/java/org/apache/poi/sl/usermodel/AutoShape.java similarity index 100% rename from src/scratchpad/src/org/apache/poi/sl/usermodel/AutoShape.java rename to src/java/org/apache/poi/sl/usermodel/AutoShape.java diff --git a/src/scratchpad/src/org/apache/poi/sl/usermodel/Background.java b/src/java/org/apache/poi/sl/usermodel/Background.java similarity index 100% rename from src/scratchpad/src/org/apache/poi/sl/usermodel/Background.java rename to src/java/org/apache/poi/sl/usermodel/Background.java diff --git a/src/scratchpad/src/org/apache/poi/sl/usermodel/Fill.java b/src/java/org/apache/poi/sl/usermodel/Fill.java similarity index 100% rename from src/scratchpad/src/org/apache/poi/sl/usermodel/Fill.java rename to src/java/org/apache/poi/sl/usermodel/Fill.java diff --git a/src/scratchpad/src/org/apache/poi/sl/usermodel/FontCollection.java b/src/java/org/apache/poi/sl/usermodel/FontCollection.java similarity index 100% rename from src/scratchpad/src/org/apache/poi/sl/usermodel/FontCollection.java rename to src/java/org/apache/poi/sl/usermodel/FontCollection.java diff --git a/src/scratchpad/src/org/apache/poi/sl/usermodel/Hyperlink.java b/src/java/org/apache/poi/sl/usermodel/Hyperlink.java similarity index 100% rename from src/scratchpad/src/org/apache/poi/sl/usermodel/Hyperlink.java rename to src/java/org/apache/poi/sl/usermodel/Hyperlink.java diff --git a/src/scratchpad/src/org/apache/poi/sl/usermodel/Line.java b/src/java/org/apache/poi/sl/usermodel/Line.java similarity index 100% rename from src/scratchpad/src/org/apache/poi/sl/usermodel/Line.java rename to src/java/org/apache/poi/sl/usermodel/Line.java diff --git a/src/scratchpad/src/org/apache/poi/sl/usermodel/LineStyle.java b/src/java/org/apache/poi/sl/usermodel/LineStyle.java similarity index 100% rename from src/scratchpad/src/org/apache/poi/sl/usermodel/LineStyle.java rename to src/java/org/apache/poi/sl/usermodel/LineStyle.java diff --git a/src/scratchpad/src/org/apache/poi/sl/usermodel/MasterSheet.java b/src/java/org/apache/poi/sl/usermodel/MasterSheet.java similarity index 100% rename from src/scratchpad/src/org/apache/poi/sl/usermodel/MasterSheet.java rename to src/java/org/apache/poi/sl/usermodel/MasterSheet.java diff --git a/src/scratchpad/src/org/apache/poi/sl/usermodel/Notes.java b/src/java/org/apache/poi/sl/usermodel/Notes.java similarity index 100% rename from src/scratchpad/src/org/apache/poi/sl/usermodel/Notes.java rename to src/java/org/apache/poi/sl/usermodel/Notes.java diff --git a/src/scratchpad/src/org/apache/poi/sl/usermodel/Picture.java b/src/java/org/apache/poi/sl/usermodel/Picture.java similarity index 100% rename from src/scratchpad/src/org/apache/poi/sl/usermodel/Picture.java rename to src/java/org/apache/poi/sl/usermodel/Picture.java diff --git a/src/scratchpad/src/org/apache/poi/sl/usermodel/PictureData.java b/src/java/org/apache/poi/sl/usermodel/PictureData.java similarity index 100% rename from src/scratchpad/src/org/apache/poi/sl/usermodel/PictureData.java rename to src/java/org/apache/poi/sl/usermodel/PictureData.java diff --git a/src/scratchpad/src/org/apache/poi/sl/usermodel/Resources.java b/src/java/org/apache/poi/sl/usermodel/Resources.java similarity index 100% rename from src/scratchpad/src/org/apache/poi/sl/usermodel/Resources.java rename to src/java/org/apache/poi/sl/usermodel/Resources.java diff --git a/src/scratchpad/src/org/apache/poi/sl/usermodel/Shape.java b/src/java/org/apache/poi/sl/usermodel/Shape.java similarity index 100% rename from src/scratchpad/src/org/apache/poi/sl/usermodel/Shape.java rename to src/java/org/apache/poi/sl/usermodel/Shape.java diff --git a/src/scratchpad/src/org/apache/poi/sl/usermodel/ShapeContainer.java b/src/java/org/apache/poi/sl/usermodel/ShapeContainer.java similarity index 100% rename from src/scratchpad/src/org/apache/poi/sl/usermodel/ShapeContainer.java rename to src/java/org/apache/poi/sl/usermodel/ShapeContainer.java diff --git a/src/scratchpad/src/org/apache/poi/sl/usermodel/ShapeGroup.java b/src/java/org/apache/poi/sl/usermodel/ShapeGroup.java similarity index 100% rename from src/scratchpad/src/org/apache/poi/sl/usermodel/ShapeGroup.java rename to src/java/org/apache/poi/sl/usermodel/ShapeGroup.java diff --git a/src/scratchpad/src/org/apache/poi/sl/usermodel/ShapeTypes.java b/src/java/org/apache/poi/sl/usermodel/ShapeTypes.java similarity index 100% rename from src/scratchpad/src/org/apache/poi/sl/usermodel/ShapeTypes.java rename to src/java/org/apache/poi/sl/usermodel/ShapeTypes.java diff --git a/src/scratchpad/src/org/apache/poi/sl/usermodel/Sheet.java b/src/java/org/apache/poi/sl/usermodel/Sheet.java similarity index 100% rename from src/scratchpad/src/org/apache/poi/sl/usermodel/Sheet.java rename to src/java/org/apache/poi/sl/usermodel/Sheet.java diff --git a/src/scratchpad/src/org/apache/poi/sl/usermodel/SimpleShape.java b/src/java/org/apache/poi/sl/usermodel/SimpleShape.java similarity index 100% rename from src/scratchpad/src/org/apache/poi/sl/usermodel/SimpleShape.java rename to src/java/org/apache/poi/sl/usermodel/SimpleShape.java diff --git a/src/scratchpad/src/org/apache/poi/sl/usermodel/Slide.java b/src/java/org/apache/poi/sl/usermodel/Slide.java similarity index 100% rename from src/scratchpad/src/org/apache/poi/sl/usermodel/Slide.java rename to src/java/org/apache/poi/sl/usermodel/Slide.java diff --git a/src/scratchpad/src/org/apache/poi/sl/usermodel/SlideShow.java b/src/java/org/apache/poi/sl/usermodel/SlideShow.java similarity index 100% rename from src/scratchpad/src/org/apache/poi/sl/usermodel/SlideShow.java rename to src/java/org/apache/poi/sl/usermodel/SlideShow.java diff --git a/src/scratchpad/src/org/apache/poi/sl/usermodel/TextBox.java b/src/java/org/apache/poi/sl/usermodel/TextBox.java similarity index 100% rename from src/scratchpad/src/org/apache/poi/sl/usermodel/TextBox.java rename to src/java/org/apache/poi/sl/usermodel/TextBox.java diff --git a/src/scratchpad/src/org/apache/poi/sl/usermodel/TextRun.java b/src/java/org/apache/poi/sl/usermodel/TextRun.java similarity index 100% rename from src/scratchpad/src/org/apache/poi/sl/usermodel/TextRun.java rename to src/java/org/apache/poi/sl/usermodel/TextRun.java diff --git a/src/scratchpad/src/org/apache/poi/wp/usermodel/CharacterRun.java b/src/java/org/apache/poi/wp/usermodel/CharacterRun.java similarity index 100% rename from src/scratchpad/src/org/apache/poi/wp/usermodel/CharacterRun.java rename to src/java/org/apache/poi/wp/usermodel/CharacterRun.java diff --git a/src/scratchpad/src/org/apache/poi/wp/usermodel/Paragraph.java b/src/java/org/apache/poi/wp/usermodel/Paragraph.java similarity index 100% rename from src/scratchpad/src/org/apache/poi/wp/usermodel/Paragraph.java rename to src/java/org/apache/poi/wp/usermodel/Paragraph.java From c5c70d3ce43a9f8697666aaaa99d09583c37cbac Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 28 May 2015 11:13:23 +0000 Subject: [PATCH 171/301] Pull out the parts of TextPainter needed by XSLF from HSLF to common-SL in core #57963 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1682209 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/sl/usermodel/TextPainter.java | 62 +++++++++++++++++++ .../poi/xslf/usermodel/XSLFTextParagraph.java | 2 +- .../poi/xslf/usermodel/TestPPTX2PNG.java | 2 +- .../apache/poi/hslf/model/TextPainter.java | 40 +----------- 4 files changed, 65 insertions(+), 41 deletions(-) create mode 100644 src/java/org/apache/poi/sl/usermodel/TextPainter.java diff --git a/src/java/org/apache/poi/sl/usermodel/TextPainter.java b/src/java/org/apache/poi/sl/usermodel/TextPainter.java new file mode 100644 index 000000000..e2490dece --- /dev/null +++ b/src/java/org/apache/poi/sl/usermodel/TextPainter.java @@ -0,0 +1,62 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.sl.usermodel; + +import java.awt.RenderingHints; +import java.text.AttributedString; + +/** + * Common parent for painting Text into a Graphics2D object + * for rendering + */ +public interface TextPainter { + public static final Key KEY_FONTFALLBACK = new Key(50, "Font fallback map"); + public static final Key KEY_FONTMAP = new Key(51, "Font map"); + + public static class TextElement { + public AttributedString _text; + public int _textOffset; + public AttributedString _bullet; + public int _bulletOffset; + public int _align; + public float ascent, descent; + public float advance; + public int textStartIndex, textEndIndex; + } + + public static class Key extends RenderingHints.Key { + String description; + + public Key(int paramInt, String paramString) { + super(paramInt); + this.description = paramString; + } + + public final int getIndex() { + return intKey(); + } + + public final String toString() { + return this.description; + } + + public boolean isCompatibleValue(Object paramObject) { + return true; + } + } +} diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java index e0b383a76..32d9faef4 100644 --- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java +++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java @@ -29,7 +29,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; -import org.apache.poi.hslf.model.TextPainter; +import org.apache.poi.sl.model.TextPainter; import org.apache.poi.util.Beta; import org.apache.poi.util.Internal; import org.apache.poi.util.Units; diff --git a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestPPTX2PNG.java b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestPPTX2PNG.java index 5c616cd43..1a79292f4 100644 --- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestPPTX2PNG.java +++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestPPTX2PNG.java @@ -25,7 +25,7 @@ import java.awt.image.BufferedImage; import java.util.HashMap; import java.util.Map; -import org.apache.poi.hslf.model.TextPainter; +import org.apache.poi.sl.model.TextPainter; import org.apache.poi.util.JvmBugs; import org.apache.poi.xslf.XSLFTestDataSamples; import org.junit.Test; diff --git a/src/scratchpad/src/org/apache/poi/hslf/model/TextPainter.java b/src/scratchpad/src/org/apache/poi/hslf/model/TextPainter.java index 6d0dbc82d..79864d678 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/model/TextPainter.java +++ b/src/scratchpad/src/org/apache/poi/hslf/model/TextPainter.java @@ -20,7 +20,6 @@ package org.apache.poi.hslf.model; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; -import java.awt.RenderingHints; import java.awt.font.FontRenderContext; import java.awt.font.LineBreakMeasurer; import java.awt.font.TextAttribute; @@ -41,13 +40,8 @@ import org.apache.poi.util.POILogger; /** * Paint text into java.awt.Graphics2D - * - * @author Yegor Kozlov */ -public final class TextPainter { - public static final Key KEY_FONTFALLBACK = new Key(50, "Font fallback map"); - public static final Key KEY_FONTMAP = new Key(51, "Font map"); - +public final class TextPainter implements org.apache.poi.sl.usermodel.TextPainter { protected POILogger logger = POILogFactory.getLogger(this.getClass()); /** @@ -383,36 +377,4 @@ public final class TextPainter { TextElement[] elems = new TextElement[lines.size()]; return lines.toArray(elems); } - - public static class TextElement { - public AttributedString _text; - public int _textOffset; - public AttributedString _bullet; - public int _bulletOffset; - public int _align; - public float ascent, descent; - public float advance; - public int textStartIndex, textEndIndex; - } - - public static class Key extends RenderingHints.Key { - String description; - - public Key(int paramInt, String paramString) { - super(paramInt); - this.description = paramString; - } - - public final int getIndex() { - return intKey(); - } - - public final String toString() { - return this.description; - } - - public boolean isCompatibleValue(Object paramObject) { - return true; - } - } } From a727593a414c24d17d350e014548e4c3f6caaacf Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 28 May 2015 11:15:07 +0000 Subject: [PATCH 172/301] Correct package git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1682210 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java | 2 +- .../testcases/org/apache/poi/xslf/usermodel/TestPPTX2PNG.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java index 32d9faef4..13d80aea0 100644 --- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java +++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java @@ -29,7 +29,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; -import org.apache.poi.sl.model.TextPainter; +import org.apache.poi.sl.usermodel.TextPainter; import org.apache.poi.util.Beta; import org.apache.poi.util.Internal; import org.apache.poi.util.Units; diff --git a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestPPTX2PNG.java b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestPPTX2PNG.java index 1a79292f4..790899941 100644 --- a/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestPPTX2PNG.java +++ b/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestPPTX2PNG.java @@ -25,7 +25,7 @@ import java.awt.image.BufferedImage; import java.util.HashMap; import java.util.Map; -import org.apache.poi.sl.model.TextPainter; +import org.apache.poi.sl.usermodel.TextPainter; import org.apache.poi.util.JvmBugs; import org.apache.poi.xslf.XSLFTestDataSamples; import org.junit.Test; From 0da60bd78e793f77ee59cd4b5e41b03ff0d4dc69 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 28 May 2015 11:17:41 +0000 Subject: [PATCH 173/301] Note on why ooxml needs scratchpad, for one part only git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1682212 13f79535-47bb-0310-9956-ffa450edef68 --- build.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.xml b/build.xml index d8a1e0f97..95558d384 100644 --- a/build.xml +++ b/build.xml @@ -261,11 +261,11 @@ under the License. - - + + From b8f9c0cad13dd7158e34928ff730ad29d813477e Mon Sep 17 00:00:00 2001 From: Tim Allison Date: Thu, 28 May 2015 19:08:24 +0000 Subject: [PATCH 174/301] POI-57889 -- actually trigger inclusion of CTNumLvl with document contributed by Moritz Dorka on TIKA-1315 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1682310 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xwpf/usermodel/TestXWPFNumbering.java | 24 +++++++----------- test-data/document/NumberingWOverrides.docx | Bin 0 -> 15190 bytes 2 files changed, 9 insertions(+), 15 deletions(-) create mode 100644 test-data/document/NumberingWOverrides.docx diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFNumbering.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFNumbering.java index 2cae023cf..5f5e9c07b 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFNumbering.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFNumbering.java @@ -23,6 +23,8 @@ import java.math.BigInteger; import junit.framework.TestCase; import org.apache.poi.xwpf.XWPFTestDataSamples; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTNum; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTNumLvl; public class TestXWPFNumbering extends TestCase { @@ -89,21 +91,13 @@ public class TestXWPFNumbering extends TestCase { } public void testOverrideList() throws IOException { - //TODO: for now the try/catch block ensures loading/inclusion of CTNumLevel - //for down stream processing. - //Ideally, we should find files that actually use overrides and test against those. - //Use XWPFParagraph's getNumStartOverride() in the actual tests - - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Numbering.docx"); - XWPFParagraph p = doc.getParagraphs().get(18);XWPFNumbering numbering = doc.getNumbering(); - boolean ex = false; - assertNull(p.getNumStartOverride()); - try { - numbering.getNum(p.getNumID()).getCTNum().getLvlOverrideArray(1); - } catch (IndexOutOfBoundsException e) { - ex = true; - } - assertTrue(ex); + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("NumberingWOverrides.docx"); + XWPFParagraph p = doc.getParagraphs().get(4); + XWPFNumbering numbering = doc.getNumbering(); + CTNum ctNum = numbering.getNum(p.getNumID()).getCTNum(); + assertEquals(9, ctNum.sizeOfLvlOverrideArray()); + CTNumLvl ctNumLvl = ctNum.getLvlOverrideArray(0); + assertEquals("upperLetter", ctNumLvl.getLvl().getNumFmt().getVal().toString()); } } diff --git a/test-data/document/NumberingWOverrides.docx b/test-data/document/NumberingWOverrides.docx new file mode 100644 index 0000000000000000000000000000000000000000..48a7e2c251916ee8482891728283dc3f6e723fe4 GIT binary patch literal 15190 zcmeHu1$SJzvTmE1nK_1-Ic8>NW@ct)cFfF-i8$1}5oQa=c$&+@Yq0qe+QZBj*~#K@#$d#<_gb zy9kuNK>dBm8i0$+dHYFXVN^-hRUD@w$*%jH;Js!N(mqV=q& z712W+A%;k%{QVG^TN_eaW;uq5G0JTF=eYrOKAPGN9StSSGFwE4$I2O0E#EWD!n6Ph zcRSf>wdyImN&nIygY6hekEq5V<73{BLXsli9KR%+u)Pj6=J{QsGxw*DN?;htC zq#4bLs0bW0Zd}Mgj$8n+et%uY*UnN-nEMdNM_iL~A76LpU8Huv>JX5AbELlbF7bBx zTCg(_y&P=Wr`;r+AE;SxZ(sn0znLdt0&dF%utpAOeQ-eY)ORwqab}?Zb^l+p{2y$K ze|hxk#2%no!V6pkzXVTrDz5Zk7s)XgPpx7vLqTgx%Al<-SuMW4@GLEX>K+-2kIl>` zO?f$Ii@9zl>t5ofsv<;n!Yn-K^=UtKcmPsDJ4%>5796(Wv-W?Qy^NAcQjZ2lYhpxA z;zB0eN2E`DMcbnh`MFmHXGuyuIcH4XP?YPax_FoF$C97HG{0aaq3sP-$t&6wM$q;R z#}C$wzb=i1?qhuKM!jyo%5l;c=2$E0TUuNjMh1%P1fyzL+{=#XW3Qs_vVq7@T9^Wu zNQNgLGaXc|*Mq2i9Deo-63s^aEqlCdUBPSMB=z6+(a;r500FFN1_J=_0ni}s_D&`Y z|1lC1dt+By;7s;w3j4!gK!EcYkotf2Rh=~PYa9=`2<-}9@}}dq6^2Q0rViB6z5_Aw zei6PkE|%5m_7#;v4Tqc!j$<)0?+Tswx~{?C&cE(t1Fa{A2rI33wbue68u+;dkxpr8 zRZ%SnLgux!d*^<_p_179@#3+k;iFMUK%9k!<9QWg(@iA7R7lz&7ag_4;+3FUUcG3S z#4LsTEd1~%=H*(W`FfUi3 zqsyULX|h4_Z*_bz8#Yc|Bk65?NI12fk;l@J(anBSK>`3!fE2%}(O(s4P2JXhg%SCc z&+?6A)IAftSGuTIB|l#(D{SHX+60xdPQqr4o$=?1yBjK~?flhDon;>W(|K_^d%cfL;rWR(*IGt>&K)+4JMZIH5`;C<`Bje*eWQvf4G^;5y# z(?oeViOBU95M}LO*#3z8(^oBFH)3k#hh)XFWbGm!V*Ueq0ObLOIn7eyqQx#xqj%eq z(GmX>banl3``oT)4^MGKA5nUEkFQXMz%@K+P@?8XSLv1}-T(sgZ-udhtxbpqLs4C~ zwu`nKO)GwjwW))gVq-GAY2$9G@WV2Pg6P6w7NAk@lW%Qh@Ma6n;O(-NPHmbFV(4yi zuk$}DqN3}{OFEq zMx5J3kv4q@)Kd=aH^9e5);RhJLoQCT8wW>Qr(x)Az$+NSZulc-%CHInN_E6BH3Jnr zgKuzelO@5*s5$PF!#ND)Nr8&6wis z8%(ZOKS!PTE+oe;WHTv$*s(JVd*8EPtTyxG-|B65GJI&+z}n;WGT+#nk?hdM+V%C8 z%j7vf-k*J1qvs|`i%R%)9pSU-UIekYV?kSe5SdD`txuJ^&O7Q^`w#4$NAaKKr$`%afCh;}X zR(S>e3afJ3!)7E^bH&DhTC-1!X!7ZJ`bjFDHFr#14iz*Gc_+P;pvDa~`7uxa3g6PRPwYat<^U@^I+sAt%P|L9#nTTAG-MP2K!y*s;A~3nMfo zo9R&D^vskiZ_BjqqdI_;-7$DSpUHyug&F`4`e8OZI_}o%Oz*q40h@weC$!gNz?JiBNfr zuur$BQsL}jl}AmTOVn`Gj<5WGI;u*Ff}azYYaYmge76|A2M{vyU=SP_AI(n_+v~mF z@9#M~JRS}l73s?n@$>oKGz=W$%8;!e-`?pzzuYKaE?!^g@jr~l9dNzg!m}2@Oi}rzO3}Dg!nloSsUuQQhONOYN zzN|3?hJts9=PZ#Au_$Z?e!)zQ#=bef>>GS3IBo{29k9654>(tr@=De`aN)(1j_;+7 zJq>Qih-*jKO0c!@r|S-0R;hKjaXuOv&i9NSPVR#)kqD@cmqV^kU+-IrIN?LY-gBY- z$_wv>tS#&mAwFoOg`?XSIX<=~rm(*nG4ZN9Rn))V6(1*4yoT{{Nr%)Z8ZrWGwHMyAd9y1ewi9gjOi(`2=6C zAI9l2HQA21Crk17BJ_&Tc8Z1+f)fOZ^QMFbZEWlAOw2RBKR3F_Qs%n^>T_`#Y+*zu zUN|X@Ba*MLGIJ?8d6m}|P1e0z>ghvo=3C^?+Pq01I>$b{ir0+Yv#+&zJSB(TZ(F+) zeVfsiu)~78>2&E%JAdnRv0t4$U|4z|tCn`ZU0J(Eu6=Q4EHfOKj@CGo(&qf3(}4<4 zRTPJg2(7e^mOhNd0VTK+9vdUi0EMXEfhN475{0zOfxwZmL?;)ia`~A1gt);ZFU-@r zNsA{#3XDqa?8=9FWzUlQYC+8T7P{HxlU0J33O%$*^IKR5d%9$y9mzB;?j&)6nHxRr z3MOXF_=_6mv2_AQ>l^nJslVo>jHX8&~fZ@P9z$= z#aruK{mRA;!I7Hw6s56~1!>*MDs?EmrkRU*!qNN)&I+%GCE*7i;r(b1hDzU^GifEA z1_lULYGqd>`uE1SKTEV$Uw=Xv;AB9>u6)+Dzr!tY>*S_webK9$`-#`7)V;;=)Yo;< zw9*%j$f;z|qJ6hMn6GN3;@iE;PJ{EJ);{NA-Bi1J+6-xTw?(?(v_IgEqBmfD_wRmM z7G-eH065UqNBE1M=4|TXVrggY{A)&ORF|~hVMp)6I`n6BsWp~N?J&#^Oe;?k%m#OK zI*LuS$b!ZSEI#EFee))wX3{H!pF!L=IrgmM?hamf!EVAOm6|=9S1|LDV2h=P*6R zm_S3@r?p5S_l~I4#Ey6e?jm;jxl)iT>%ceYK=0ZkiLeDlj%F^Y8O^#Hlq`GjM>xo- zSRM95OjN6^UyB`NmkmrF&qJcqXa}ycD`l4`ld~nVk4B|uQ{0~mcE1(eZSp2UZ_}|8 zHLP)s5jpYTGHe8e6_0>vDK}BIeV6O2zoApy3tmE=XAheNY0T>&$Bv82m`yQKC)+$B1Nx0&vFx|H0SI+R$P;8cTTKj^LSLz=9)=nO-_4X?bBn&r8o83k}MZ7tH{kF zN)q!IdOI+J9R zGKJZd44eJ@XHDJSrTR-LVq&xf(lum!6ftrsh=ykL_HP^>(wCpdKl}OR!;}bTw9PWtEM@DyOR4 zkX!6oDl+Muo`($jgio0BlT0_94O5G@n(--+8I9XvF&vD}rIDnltF`uPiVJB7Mr;#23^ZMWaHnvBoPkPko zNak12Vi)*E|HG4ZH#JiJ%dnR`ttbs#(nDRk_gpAkb(Ip(C@mn0K=M@)5l__WYS3ey zGoL))gmF=BkNLDav=X^LtDm^v4B&m{gsrI@lfpozwbjMezJ09MT&ogFgwfui7O09N zwp!QKuPHSPdc{#1@7-TDE!Nb+H%NUZNkSVyDRBJm{0 z{ir-m)wN6xUcYdPkrOW71PPjC;ySa(JR#^*C)wV%O(ZL#C1E5;q6_LJEqpMPMfv-4 z;FRXO0+N)6^jR^Ml%W%=+Nn1{%Ntm#Il%Us71C(-314udcsTvo2@*X?_znbb8>&?!_0N{fDKdX6X7f&10|I88Dipr~;$V1=l_q&2A zFId4r8)YoR!MuiK#-<@lC!=b}acxG-KOo%9=FzT3_Gv|_p~xezJ~iyVy)No;{}`H_ z)Wm%$3^fVThZnm*ghJV?lfcf?hbJWJ!tWpwsVCmye{K^yZ^$KwkIuR zS`5(1HUBYSpqTpb;6SwlF%jWI=`=b&nnA^^R2e_ulb*0`nL*S~Iwm<%N^80|c6oSt z=`v*iixrhVp&|20v}2r#!S(rbeg!EkJr->mo$a2Gb|mQt9Evjad~rkLzG=u0HZxYp z{Fs5zk49=;%1M@D#fmgOF6D1yGYFgDP@Gy|_4m(i-$VsVE4Uu5$Pc<9+N@uuv?f>L*%FQk@6&p?Mt8l!PoifMga&5-PRRk6Rd zT9I;10ZZb-nAhTZqS>a*l#y!MHgeE7lcMwK=wwKzQfaeIm9-drHIx+cH0SOzfO%=n ze^#6^X?T9Z%3+!a(x7d9e7m7M*u$5^#4@{XzBSYz+ zhH}g@5{?S4=ipn`caw)8iFY|*$CW6&DtjA0hBe|uMI+zQj?EJh5Fj3Cx#Bz44wzw` z(@-3<5<+F!j={05r($_^)rz`O$`===)6F_SeTIPK4x(dRB0)c5-eKO2VPn_~VPm-Q z0V|E!Z_V|0|M5z%fhq%!09O(c7Mdv7CuEs#C`P|kvo7R@4vJq7cJ;G`hWeXGj>+_$^>O34p)bQSJxe1pjz3dy3|W?t9-~zcmS0B8343^{hdYQLwp|bFx`tgV zOTMQS&K*S9JtuVa9HIMH(c63}R%AHP;3sw1wwWimPH?3cFbi>}U?$6!PQ=+#$%@%3 zCp9hQRDaLX+iH`6a`*@_iSp$UV#o0oZt!W2LE=Y+zPAomI?6XJXfyDYa^yhvW5Pv5 zGw{)J;BM%(#+Y4hCJWO88?Q?KW-bVNC@I#kWPt(LN_XsfZD1= z2;j|MTYbkqH~nkP?d>+9Sm+PVqFxW8BB7{wMG}bLNdJz+!3goj!BF~>*~?c$Bp?LX zU!1i{=z*1Wj{a#e*m);Wo|LG$Jse%~9mY!HB`tRNTyk~w5 zUH2s0Z+8mqzc?Gh<>a3}4}T1mGaYn=y&>!>-c-cg;39v~|0o?%X7PeBLl<$*u|{l@ z$y{Ksh)3w{-un0+uDmS!O;7Y~PJd)wc5z#%?L_5Vx!2>xRK)|%`4kuCyduVy`g<(6 z?8Z{+(Yl1g{D)@M?{?&z2ywQe>QD7AGZ9<_fd<+cN8s`BTg_JMFyY}#YDL_Em(Z&; z&XmZ62HL#m;JG5Ij(!Bb+aB3+i{IbC!L_;Epv}#K=;#X6Y(InzI$%u5IH*p_IHXL= z2pn1VZ-%lJO~Ga<`Y8!#8J7IysLTjR!A0#ThQ#)-AQ{!RinvO`#T2Wa`xub2(#@F# zqo)KG(>;g0N5>}eAc-Jvs!>4#@}7;{pk(7Z#HRmV8bNVGNjN!g?s6OPx8g8xAa;|2 z?dzXa`O;$22r$0`JtPqrUxA30Ib_o$t?#1CiMS;Wl=$u_3o!jTAGrg+Y_GxG9Hw$j z=dLS-Z!Xgb)@V&Qt}Cgtvh=9(0^edRASGoe!B`71Lho(F9wcK=QXh+de~d*soRUFT zX|)Q+^+Z)GofeZ++(o+E-$@w0nFXcIeX$#%VXM`ymjdF(m3G=n_<+PpdBE}t`D0%B zVKLyt{!YUz{Tpu}L*G9L6BU1PO#yP%{MC@zpIBh|93_x3^DoBLKzfR*xiCA+FDqV9 zY6A-lX3BVJ46Q-?>qO(^w^a?9;Q?NKt0ph?l{8;)CFeT2t2C>j)_54_-Z<>BlDbzB z;xo&vukKWDF>7l~*Rg^qZZ;oFSFZO%4Q>m)NYC)T-hA1V*$&N=(wXUHPTF5LIMIhu zWe@}b7*%hTH2Si?p$9`p7(kVb4*JqOl7hjs6m~RG{iM{Dyq;W zQ`yNVZE`uz)6S*(TIpG$$vd-~F-O((8dZA4p=3|zbX`iFlXANmh*_*bUj5z`3WIU*DcJg8EaTWK8@MvOb@{VF4T*ag^6BJdpZF{xBHHhip; zs9Y@r0bQFz*_0)b*jtdunjL@sWyv+qLqp2Q-6y_$3Dq?3*+dR#Meg=e9tJ9q_c=3e z4W&pEvOi-JBYJ73x!|l!?}`M8=bP zOSc=~#0+5j!aPabjlgUa(apyJuoMcPLDC;0CE_J0D2x3O&Y%?%1>qoR#Ri?fZ8Smm z^dlh{?=h52FL~c9c+tom`_3hOK56UFj+>d|H}Af%yBI1nTS06{6gZI@L1k-J;6P5e zOk6v5al>s9389P?49O)vO(0kHVknQ2&Fvx3&(jky;w>#BUN;2<($6i@pZ06;nue8} z=3nS2Fg=(lCQ?T*Tf|$=Lmks5%+*AAq`AFS3+mq9-ZjrpFEbQR4{kM6sy{%#h_iEo zbsTNM&5tQEh0Z$?g<}dPunt`@-YV}cUJbcA3!jMgsB6}Z-WP6R?JY*vQxS&Ko4>l} ze_+2P>L2jzn;hMvlU|2nH_TZU{iZK)A4sqe*YK49qc`Z5T==+6T^W%r5Z7BSY&bgxwM+Z1pSS z=he$ad^MWMwTd%(Joa@yFo{a>@R0jIkD>ZMK1|*oA1}wZ2%`HPCUi}=U-gN)5QW4O zdA+^zcwhXiZEpAU;MW%|cq_O&w)f`ue?HOo^J<03TX6Tw#`j1`MzOQkV~yQh5nnwtT+|mi5xluXrhV>_M*of^6O8@*Nfw{(`HY=uy++Snd9NHJ=b)pIqJw(%^MRdN}IxV$>ZUP1(6(3Elj7 z;$9xoZay|9JK(KRF6SLo?cxQ?R9ND63TD>(X`KaWzb)(g`mNs&Fg>rTKH9p?*>!4S zSiUQoMIm!bt@n~c3)(H>#OhAH+B_{c+03pPW4L$`{hWIsO8J5R$v@R{vH1D%B6@o) zal>Cf7)oyt2&`Cnw!TU>3~GRVq9c-9n3U!@3$|7XtHp5MJwAGV}X126a&3KviN*)Ollr&wrJ=E96B_|2nf@R$rQB|ZFI#C=rE+1W= zwc0yStHxtNk=dKThlDbv zW?kULy4^n~{_tRV7(YtPJlDsd=;eo(&924NzWw5PyKUpo*$Y++A=_!r>{2z1Wuh8! zfr_Akk#={ii?et1s#ndB6!c)y@hO0$TqaDbDKK)aJS2faVnqaY(8vW=kVrkw z$WlW-Pt>L`v|!vMnJ6<<-L8#+o)>;_9xH@08!jA`>M@5kqp{+v@p1mG3 zKAghQo;BR4*kwwN6@SN6zu~x4_|TfEb%Demr=_JJEUgRa7N&UE(ykEiK|h#$b6g0<;T$$0sBJEq^?jUcWM}VzWBRzhV-7JN~1L3gF1aL6mbIf89O6-(M zn)SciCr<)(Ukc2Ra7c{`;D^`_;P1&J^#*=p2lWT4q`w}gKWfQDu*{g*+?9uQ<+>4N z7#o2bn1T&q@&~*us1zku>cENMo47FC8$k4eIrwKP4VB>7uZ3)~UklT|6-s$SW+Z`k zSwIrd&>mBKWiCy+Fr3T}C*C->3wDuL9-8LPASI<4D;kmlh)rT6vK@k8*T};JD1I#m z_ErqoTQLR#v6N;6W^>_LmvzTd2tR1A)aah<17`D8UUS)Ce7k(n9j+`#8b-Qu+2|DGZXyP@J<2T5^RHEApg$O3f)WZjYw zeTG>A%J-|8EZW!olD^UzJ~7rFc&T(J2ef#C90zt_>~N(N8hD2VKm;tmW}FQ&a2-a32?`=Y(xP9p4dfUp)6vE=$^t)dr|*dy$(7i~ zrXOXDUpf^gn9G?n<9r}<{`D9uH_DS853iRyyo>=%Svl2$Fg$v5#ISZ>fYNYY5cdOe z`6Z2Ppfs}6zGX{2;WAn8qNw}6mu1e%K(lY7EUuSCIoM?m5d0n_h;qQAwi^zikdIl8 zu2NYv6etxB4wABffh(a@G4oS=oK3bbi;6$ob;9ccV&fDCXz_De=X`|#ol?HV1rBu{^76q{5x%hf zAPx)Rz5vPqpiTgQIswQ|L(G=K+gY+X&c5cmy0-7SR!BQk2J^ZNDx21SMJv8IrwkQ}_ad zgbxu1Dn40{;&3B@ylJ6Z5J(LfTM^21HM4TjG9DTA3Sr095dZ6$XvG9 z#uP#4GJ{Z^qA`}UQIVLQM#zduq-`Y8L66s4jMQ3!NA3D1HiOvn&2p|FQcHEgf(uadCKr4O(O>NDyGT0fS&bk9&Jl^0N(i!dXCM}QVSxhN3}`{5Mt3?y^xm*ArC=V4ABtZFBF~C&j zJHV7QltRh6bN0wbrLl=0VuS*^(HVp|dy~5AS?GXKQ$Ro$P}Im^7m?t0zx4R)gxm^% zf5*G;JP=p6& zM2m6pXffN-w29P-hp0;Sy|H(RgFc00<6n4@Eh&(X;w*oX9mT4bZ#dMj^cy+k~pG!PB-__i(8)M{5b z_wAj5J|Xw7uG=C%T2fNA4dcuTh?cQ0*Q-^I{v`Y4({7oH(^!eKFs$1&Hu$sBO+)tm zaQcLcDo)*b>NG>vkE%z*P`~DK90XO-0WCef0eFNe8l(B|if!<5RWl@f4q9V^aN%&N zhNTuSX0WM-g-x;48eti|F@>h-4vu76VUcRHr3N@^LEgqbR=uXtrDY$eShzYgn7X-*xxF{`i&|{u2^cG$E6gGIHbQE zl9t%9A&k$BXkE~K_Phv6KQU%oafilMf&Bi%^H=k4t({M#4F+Se7+MrmZG%*sQAZ^T zC*Zzbx%#mR1_Y|onU(`+jXRj@vKw8kbc63}vJnhA>y1ZHleyC3`=;uXrL8`>e#4Nd zZA_T!nW`3+oH&s68)zJ_K!ZzwX@P?o1XEc}chCv;}3_*5p^+vDr)LA?E~svMy- zxD6vuV!35aj94(cn9I)1cj99L`kL+WA3cd^lIxz6j;IKd&tlx67T86UMMDpWO z_3|eo)3V$K1n%mt^!P$T!V1cflY@l_vas?TU9(xq1enIr`IYmu<=RJ|TPC!GuL}m* z1Ey}h>AGq5--l%#2*E64f~akD%%DiShp)>KmxQt}>-SOyLop)^mkw$z8+)6S<>|CW z%|(Ck4VepR8~g4-^;Vnf;2-%*T9+kudFbcxT&L9cF5nT?WSzB>IB+$W>r_q1;W-5yERZ-k|93+vaV zR4+bbCQ6gAGmJi_w&0?`Fs8C^I&-}NIf4C*w25Ty2$rY~0ja*`vm6jfb*&HM8T=8^ z4UFrEduBT#N(Wi-ZL=uHd>e(dG=Z*x3>+b~zN;Ea*T$zkB=ITL?!n8W^~1OGRJ;-BEZZ(#fh1pq=w0D%A6 z&iE(%pMl~(8EBLL-uBHhEYfPypx TP`v;Ec;E{JsG Date: Fri, 29 May 2015 14:01:31 +0000 Subject: [PATCH 175/301] POI-57975: clean up white spaces and other style issues in XWPF git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1682473 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/poi/util/OOXMLLite.java | 14 +- .../poi/xwpf/extractor/XWPFWordExtractor.java | 275 ++-- .../apache/poi/xwpf/model/XMLParagraph.java | 17 +- .../poi/xwpf/model/XWPFCommentsDecorator.java | 48 +- .../xwpf/model/XWPFHeaderFooterPolicy.java | 94 +- .../xwpf/model/XWPFHyperlinkDecorator.java | 81 +- .../xwpf/model/XWPFParagraphDecorator.java | 36 +- .../java/org/apache/poi/xwpf/package.html | 8 +- .../poi/xwpf/usermodel/AbstractXWPFSDT.java | 188 ++- .../poi/xwpf/usermodel/BodyElementType.java | 23 +- .../apache/poi/xwpf/usermodel/Borders.java | 74 +- .../apache/poi/xwpf/usermodel/BreakClear.java | 85 +- .../apache/poi/xwpf/usermodel/BreakType.java | 81 +- .../apache/poi/xwpf/usermodel/Document.java | 64 +- .../org/apache/poi/xwpf/usermodel/IBody.java | 172 +-- .../poi/xwpf/usermodel/IBodyElement.java | 27 +- .../org/apache/poi/xwpf/usermodel/ICell.java | 20 +- .../apache/poi/xwpf/usermodel/IRunBody.java | 7 +- .../poi/xwpf/usermodel/IRunElement.java | 9 +- .../poi/xwpf/usermodel/ISDTContent.java | 33 +- .../poi/xwpf/usermodel/ISDTContents.java | 4 +- .../poi/xwpf/usermodel/LineSpacingRule.java | 71 +- .../xwpf/usermodel/ParagraphAlignment.java | 55 +- .../xwpf/usermodel/PositionInParagraph.java | 90 +- .../org/apache/poi/xwpf/usermodel/TOC.java | 164 +-- .../poi/xwpf/usermodel/TextAlignment.java | 101 +- .../poi/xwpf/usermodel/TextSegement.java | 161 +-- .../poi/xwpf/usermodel/UnderlinePatterns.java | 71 +- .../poi/xwpf/usermodel/VerticalAlign.java | 71 +- .../poi/xwpf/usermodel/XWPFAbstractNum.java | 79 +- .../poi/xwpf/usermodel/XWPFComment.java | 33 +- .../usermodel/XWPFDefaultParagraphStyle.java | 30 +- .../xwpf/usermodel/XWPFDefaultRunStyle.java | 30 +- .../poi/xwpf/usermodel/XWPFDocument.java | 473 ++++--- .../poi/xwpf/usermodel/XWPFFactory.java | 83 +- .../apache/poi/xwpf/usermodel/XWPFFooter.java | 25 +- .../poi/xwpf/usermodel/XWPFFootnote.java | 546 ++++---- .../poi/xwpf/usermodel/XWPFFootnotes.java | 200 +-- .../apache/poi/xwpf/usermodel/XWPFHeader.java | 20 +- .../poi/xwpf/usermodel/XWPFHeaderFooter.java | 235 ++-- .../poi/xwpf/usermodel/XWPFHyperlink.java | 22 +- .../poi/xwpf/usermodel/XWPFHyperlinkRun.java | 84 +- .../poi/xwpf/usermodel/XWPFLatentStyles.java | 62 +- .../apache/poi/xwpf/usermodel/XWPFNum.java | 87 +- .../poi/xwpf/usermodel/XWPFNumbering.java | 473 +++---- .../poi/xwpf/usermodel/XWPFParagraph.java | 704 +++++----- .../poi/xwpf/usermodel/XWPFPicture.java | 82 +- .../poi/xwpf/usermodel/XWPFPictureData.java | 108 +- .../poi/xwpf/usermodel/XWPFRelation.java | 123 +- .../apache/poi/xwpf/usermodel/XWPFRun.java | 1231 +++++++++-------- .../apache/poi/xwpf/usermodel/XWPFSDT.java | 55 +- .../poi/xwpf/usermodel/XWPFSDTCell.java | 51 +- .../poi/xwpf/usermodel/XWPFSDTContent.java | 190 ++- .../xwpf/usermodel/XWPFSDTContentCell.java | 133 +- .../poi/xwpf/usermodel/XWPFSettings.java | 205 +-- .../apache/poi/xwpf/usermodel/XWPFStyle.java | 263 ++-- .../apache/poi/xwpf/usermodel/XWPFStyles.java | 430 +++--- .../apache/poi/xwpf/usermodel/XWPFTable.java | 95 +- .../poi/xwpf/usermodel/XWPFTableCell.java | 851 ++++++------ .../poi/xwpf/usermodel/XWPFTableRow.java | 368 ++--- .../org/apache/poi/xwpf/AllXWPFTests.java | 40 +- .../poi/xwpf/TestAllExtendedProperties.java | 160 ++- .../TestPackageCorePropertiesGetKeywords.java | 58 +- .../org/apache/poi/xwpf/TestXWPFBugs.java | 10 +- .../xwpf/extractor/TestExternalEntities.java | 8 +- .../xwpf/extractor/TestXWPFWordExtractor.java | 142 +- .../poi/xwpf/model/TestXWPFDecorators.java | 159 ++- .../model/TestXWPFHeaderFooterPolicy.java | 201 ++- .../xwpf/usermodel/TestChangeTracking.java | 2 +- .../poi/xwpf/usermodel/TestXWPFBugs.java | 46 +- .../poi/xwpf/usermodel/TestXWPFDocument.java | 46 +- .../poi/xwpf/usermodel/TestXWPFFootnotes.java | 96 +- .../poi/xwpf/usermodel/TestXWPFHeader.java | 41 +- .../poi/xwpf/usermodel/TestXWPFHeadings.java | 63 +- .../poi/xwpf/usermodel/TestXWPFNumbering.java | 165 ++- .../poi/xwpf/usermodel/TestXWPFParagraph.java | 266 ++-- .../xwpf/usermodel/TestXWPFPictureData.java | 227 ++- .../poi/xwpf/usermodel/TestXWPFRun.java | 470 +++---- .../poi/xwpf/usermodel/TestXWPFSDT.java | 293 ++-- .../poi/xwpf/usermodel/TestXWPFSmartTag.java | 3 +- .../poi/xwpf/usermodel/TestXWPFStyles.java | 283 ++-- .../poi/xwpf/usermodel/TestXWPFTable.java | 169 ++- .../poi/xwpf/usermodel/TestXWPFTableCell.java | 123 +- .../poi/xwpf/usermodel/TestXWPFTableRow.java | 103 +- 84 files changed, 6434 insertions(+), 6255 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/util/OOXMLLite.java b/src/ooxml/java/org/apache/poi/util/OOXMLLite.java index 3b8dc3220..0503dfa76 100644 --- a/src/ooxml/java/org/apache/poi/util/OOXMLLite.java +++ b/src/ooxml/java/org/apache/poi/util/OOXMLLite.java @@ -32,14 +32,12 @@ import java.util.Map; import java.util.Vector; import java.util.jar.JarEntry; import java.util.jar.JarFile; -import java.util.regex.Pattern; - -import junit.framework.TestCase; - -import org.junit.Test; -import org.junit.internal.TextListener; -import org.junit.runner.JUnitCore; -import org.junit.runner.Result; +import java.util.regex.Pattern; + +import junit.framework.TestCase; +import org.junit.Test; +import org.junit.internal.TextListener; +import org.junit.runner.JUnitCore;import org.junit.runner.Result; /** * Build a 'lite' version of the ooxml-schemas.jar diff --git a/src/ooxml/java/org/apache/poi/xwpf/extractor/XWPFWordExtractor.java b/src/ooxml/java/org/apache/poi/xwpf/extractor/XWPFWordExtractor.java index afff770c7..ec701b7e3 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/extractor/XWPFWordExtractor.java +++ b/src/ooxml/java/org/apache/poi/xwpf/extractor/XWPFWordExtractor.java @@ -46,46 +46,47 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSectPr; * Helper class to extract text from an OOXML Word file */ public class XWPFWordExtractor extends POIXMLTextExtractor { - public static final XWPFRelation[] SUPPORTED_TYPES = new XWPFRelation[] { - XWPFRelation.DOCUMENT, XWPFRelation.TEMPLATE, - XWPFRelation.MACRO_DOCUMENT, - XWPFRelation.MACRO_TEMPLATE_DOCUMENT - }; - - private XWPFDocument document; - private boolean fetchHyperlinks = false; - - public XWPFWordExtractor(OPCPackage container) throws XmlException, OpenXML4JException, IOException { - this(new XWPFDocument(container)); - } - public XWPFWordExtractor(XWPFDocument document) { - super(document); - this.document = document; - } + public static final XWPFRelation[] SUPPORTED_TYPES = new XWPFRelation[]{ + XWPFRelation.DOCUMENT, XWPFRelation.TEMPLATE, + XWPFRelation.MACRO_DOCUMENT, + XWPFRelation.MACRO_TEMPLATE_DOCUMENT + }; + + private XWPFDocument document; + private boolean fetchHyperlinks = false; + + public XWPFWordExtractor(OPCPackage container) throws XmlException, OpenXML4JException, IOException { + this(new XWPFDocument(container)); + } + + public XWPFWordExtractor(XWPFDocument document) { + super(document); + this.document = document; + } + + public static void main(String[] args) throws Exception { + if (args.length < 1) { + System.err.println("Use:"); + System.err.println(" XWPFWordExtractor "); + System.exit(1); + } + POIXMLTextExtractor extractor = + new XWPFWordExtractor(POIXMLDocument.openPackage( + args[0] + )); + System.out.println(extractor.getText()); + extractor.close(); + } + + /** + * Should we also fetch the hyperlinks, when fetching + * the text content? Default is to only output the + * hyperlink label, and not the contents + */ + public void setFetchHyperlinks(boolean fetch) { + fetchHyperlinks = fetch; + } - /** - * Should we also fetch the hyperlinks, when fetching - * the text content? Default is to only output the - * hyperlink label, and not the contents - */ - public void setFetchHyperlinks(boolean fetch) { - fetchHyperlinks = fetch; - } - - public static void main(String[] args) throws Exception { - if(args.length < 1) { - System.err.println("Use:"); - System.err.println(" XWPFWordExtractor "); - System.exit(1); - } - POIXMLTextExtractor extractor = - new XWPFWordExtractor(POIXMLDocument.openPackage( - args[0] - )); - System.out.println(extractor.getText()); - extractor.close(); - } - public String getText() { StringBuffer text = new StringBuffer(); XWPFHeaderFooterPolicy hfPolicy = document.getHeaderFooterPolicy(); @@ -94,9 +95,9 @@ public class XWPFWordExtractor extends POIXMLTextExtractor { extractHeaders(text, hfPolicy); // Process all body elements - for (IBodyElement e : document.getBodyElements()){ - appendBodyElementText(text, e); - text.append('\n'); + for (IBodyElement e : document.getBodyElements()) { + appendBodyElementText(text, e); + text.append('\n'); } // Finish up with all the footers @@ -105,108 +106,108 @@ public class XWPFWordExtractor extends POIXMLTextExtractor { return text.toString(); } - public void appendBodyElementText(StringBuffer text, IBodyElement e){ - if (e instanceof XWPFParagraph){ - appendParagraphText(text, (XWPFParagraph)e); - } else if (e instanceof XWPFTable){ - appendTableText(text, (XWPFTable)e); - } else if (e instanceof XWPFSDT){ - text.append(((XWPFSDT)e).getContent().getText()); - } - } - - public void appendParagraphText(StringBuffer text, XWPFParagraph paragraph){ - try { - CTSectPr ctSectPr = null; - if (paragraph.getCTP().getPPr()!=null) { - ctSectPr = paragraph.getCTP().getPPr().getSectPr(); - } + public void appendBodyElementText(StringBuffer text, IBodyElement e) { + if (e instanceof XWPFParagraph) { + appendParagraphText(text, (XWPFParagraph) e); + } else if (e instanceof XWPFTable) { + appendTableText(text, (XWPFTable) e); + } else if (e instanceof XWPFSDT) { + text.append(((XWPFSDT) e).getContent().getText()); + } + } - XWPFHeaderFooterPolicy headerFooterPolicy = null; + public void appendParagraphText(StringBuffer text, XWPFParagraph paragraph) { + try { + CTSectPr ctSectPr = null; + if (paragraph.getCTP().getPPr() != null) { + ctSectPr = paragraph.getCTP().getPPr().getSectPr(); + } - if (ctSectPr!=null) { - headerFooterPolicy = new XWPFHeaderFooterPolicy(document, ctSectPr); - extractHeaders(text, headerFooterPolicy); - } + XWPFHeaderFooterPolicy headerFooterPolicy = null; + + if (ctSectPr != null) { + headerFooterPolicy = new XWPFHeaderFooterPolicy(document, ctSectPr); + extractHeaders(text, headerFooterPolicy); + } - for(IRunElement run : paragraph.getRuns()) { - text.append(run.toString()); - if(run instanceof XWPFHyperlinkRun && fetchHyperlinks) { - XWPFHyperlink link = ((XWPFHyperlinkRun)run).getHyperlink(document); - if(link != null) - text.append(" <" + link.getURL() + ">"); - } - } + for (IRunElement run : paragraph.getRuns()) { + text.append(run.toString()); + if (run instanceof XWPFHyperlinkRun && fetchHyperlinks) { + XWPFHyperlink link = ((XWPFHyperlinkRun) run).getHyperlink(document); + if (link != null) + text.append(" <" + link.getURL() + ">"); + } + } - // Add comments - XWPFCommentsDecorator decorator = new XWPFCommentsDecorator(paragraph, null); - String commentText = decorator.getCommentText(); - if (commentText.length() > 0){ - text.append(commentText).append('\n'); - } + // Add comments + XWPFCommentsDecorator decorator = new XWPFCommentsDecorator(paragraph, null); + String commentText = decorator.getCommentText(); + if (commentText.length() > 0) { + text.append(commentText).append('\n'); + } - // Do endnotes and footnotes - String footnameText = paragraph.getFootnoteText(); - if(footnameText != null && footnameText.length() > 0) { - text.append(footnameText + '\n'); - } + // Do endnotes and footnotes + String footnameText = paragraph.getFootnoteText(); + if (footnameText != null && footnameText.length() > 0) { + text.append(footnameText + '\n'); + } - if (ctSectPr!=null) { - extractFooters(text, headerFooterPolicy); - } - } catch (IOException e) { - throw new POIXMLException(e); - } catch (XmlException e) { - throw new POIXMLException(e); - } - - } + if (ctSectPr != null) { + extractFooters(text, headerFooterPolicy); + } + } catch (IOException e) { + throw new POIXMLException(e); + } catch (XmlException e) { + throw new POIXMLException(e); + } - private void appendTableText(StringBuffer text, XWPFTable table) { - //this works recursively to pull embedded tables from tables - for (XWPFTableRow row : table.getRows()) { - List cells = row.getTableICells(); - for (int i = 0; i < cells.size(); i++) { - ICell cell = cells.get(i); - if (cell instanceof XWPFTableCell) { - text.append(((XWPFTableCell)cell).getTextRecursively()); - } else if (cell instanceof XWPFSDTCell) { - text.append(((XWPFSDTCell)cell).getContent().getText()); - } - if (i < cells.size()-1) { - text.append("\t"); - } - } - text.append('\n'); - } - } - - private void extractFooters(StringBuffer text, XWPFHeaderFooterPolicy hfPolicy) { - if (hfPolicy == null) return; - - if(hfPolicy.getFirstPageFooter() != null) { - text.append( hfPolicy.getFirstPageFooter().getText() ); - } - if(hfPolicy.getEvenPageFooter() != null) { - text.append( hfPolicy.getEvenPageFooter().getText() ); - } - if(hfPolicy.getDefaultFooter() != null) { - text.append( hfPolicy.getDefaultFooter().getText() ); - } - } + } - private void extractHeaders(StringBuffer text, XWPFHeaderFooterPolicy hfPolicy) { - if (hfPolicy == null) return; - - if(hfPolicy.getFirstPageHeader() != null) { - text.append( hfPolicy.getFirstPageHeader().getText() ); - } - if(hfPolicy.getEvenPageHeader() != null) { - text.append( hfPolicy.getEvenPageHeader().getText() ); - } - if(hfPolicy.getDefaultHeader() != null) { - text.append( hfPolicy.getDefaultHeader().getText() ); - } - } + private void appendTableText(StringBuffer text, XWPFTable table) { + //this works recursively to pull embedded tables from tables + for (XWPFTableRow row : table.getRows()) { + List cells = row.getTableICells(); + for (int i = 0; i < cells.size(); i++) { + ICell cell = cells.get(i); + if (cell instanceof XWPFTableCell) { + text.append(((XWPFTableCell) cell).getTextRecursively()); + } else if (cell instanceof XWPFSDTCell) { + text.append(((XWPFSDTCell) cell).getContent().getText()); + } + if (i < cells.size() - 1) { + text.append("\t"); + } + } + text.append('\n'); + } + } + + private void extractFooters(StringBuffer text, XWPFHeaderFooterPolicy hfPolicy) { + if (hfPolicy == null) return; + + if (hfPolicy.getFirstPageFooter() != null) { + text.append(hfPolicy.getFirstPageFooter().getText()); + } + if (hfPolicy.getEvenPageFooter() != null) { + text.append(hfPolicy.getEvenPageFooter().getText()); + } + if (hfPolicy.getDefaultFooter() != null) { + text.append(hfPolicy.getDefaultFooter().getText()); + } + } + + private void extractHeaders(StringBuffer text, XWPFHeaderFooterPolicy hfPolicy) { + if (hfPolicy == null) return; + + if (hfPolicy.getFirstPageHeader() != null) { + text.append(hfPolicy.getFirstPageHeader().getText()); + } + if (hfPolicy.getEvenPageHeader() != null) { + text.append(hfPolicy.getEvenPageHeader().getText()); + } + if (hfPolicy.getDefaultHeader() != null) { + text.append(hfPolicy.getDefaultHeader().getText()); + } + } } diff --git a/src/ooxml/java/org/apache/poi/xwpf/model/XMLParagraph.java b/src/ooxml/java/org/apache/poi/xwpf/model/XMLParagraph.java index c7d4bc261..25aa7aab3 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/model/XMLParagraph.java +++ b/src/ooxml/java/org/apache/poi/xwpf/model/XMLParagraph.java @@ -22,16 +22,15 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP; * Base class for XWPF paragraphs * * @author Yury Batrakov (batrakov at gmail.com) - * */ public class XMLParagraph { - protected CTP paragraph; - - public XMLParagraph(CTP paragraph) { - this.paragraph = paragraph; - } + protected CTP paragraph; - public CTP getCTP() { - return paragraph; - } + public XMLParagraph(CTP paragraph) { + this.paragraph = paragraph; + } + + public CTP getCTP() { + return paragraph; + } } \ No newline at end of file diff --git a/src/ooxml/java/org/apache/poi/xwpf/model/XWPFCommentsDecorator.java b/src/ooxml/java/org/apache/poi/xwpf/model/XWPFCommentsDecorator.java index 502a3b786..bf2b5e8f4 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/model/XWPFCommentsDecorator.java +++ b/src/ooxml/java/org/apache/poi/xwpf/model/XWPFCommentsDecorator.java @@ -21,38 +21,36 @@ import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTMarkupRange; /** - * Decorator class for XWPFParagraph allowing to add comments + * Decorator class for XWPFParagraph allowing to add comments * found in paragraph to its text * * @author Yury Batrakov (batrakov at gmail.com) - * */ public class XWPFCommentsDecorator extends XWPFParagraphDecorator { - private StringBuffer commentText; - - public XWPFCommentsDecorator(XWPFParagraphDecorator nextDecorator) { - this(nextDecorator.paragraph, nextDecorator); - } + private StringBuffer commentText; - @SuppressWarnings("deprecation") - public XWPFCommentsDecorator(XWPFParagraph paragraph, XWPFParagraphDecorator nextDecorator) { - super(paragraph, nextDecorator); + public XWPFCommentsDecorator(XWPFParagraphDecorator nextDecorator) { + this(nextDecorator.paragraph, nextDecorator); + } - XWPFComment comment; - commentText = new StringBuffer(); + @SuppressWarnings("deprecation") + public XWPFCommentsDecorator(XWPFParagraph paragraph, XWPFParagraphDecorator nextDecorator) { + super(paragraph, nextDecorator); - for(CTMarkupRange anchor : paragraph.getCTP().getCommentRangeStartArray()) - { - if((comment = paragraph.getDocument().getCommentByID(anchor.getId().toString())) != null) - commentText.append("\tComment by " + comment.getAuthor()+": "+comment.getText()); - } - } + XWPFComment comment; + commentText = new StringBuffer(); - public String getCommentText() { - return commentText.toString(); - } - - public String getText() { - return super.getText() + commentText; - } + for (CTMarkupRange anchor : paragraph.getCTP().getCommentRangeStartArray()) { + if ((comment = paragraph.getDocument().getCommentByID(anchor.getId().toString())) != null) + commentText.append("\tComment by " + comment.getAuthor() + ": " + comment.getText()); + } + } + + public String getCommentText() { + return commentText.toString(); + } + + public String getText() { + return super.getText() + commentText; + } } diff --git a/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHeaderFooterPolicy.java b/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHeaderFooterPolicy.java index 15783163e..700645df7 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHeaderFooterPolicy.java +++ b/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHeaderFooterPolicy.java @@ -45,7 +45,6 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.FtrDocument; import org.openxmlformats.schemas.wordprocessingml.x2006.main.HdrDocument; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STHdrFtr; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STHdrFtr.Enum; - import schemasMicrosoftComOfficeOffice.CTLock; import schemasMicrosoftComOfficeOffice.STConnectType; import schemasMicrosoftComVml.CTFormulas; @@ -61,10 +60,10 @@ import schemasMicrosoftComVml.STTrueFalse; /** * A .docx file can have no headers/footers, the same header/footer - * on each page, odd/even page footers, and optionally also - * a different header/footer on the first page. + * on each page, odd/even page footers, and optionally also + * a different header/footer on the first page. * This class handles sorting out what there is, and giving you - * the right headers and footers for the document. + * the right headers and footers for the document. */ public class XWPFHeaderFooterPolicy { public static final Enum DEFAULT = STHdrFtr.DEFAULT; @@ -84,8 +83,8 @@ public class XWPFHeaderFooterPolicy { /** * Figures out the policy for the given document, - * and creates any header and footer objects - * as required. + * and creates any header and footer objects + * as required. */ public XWPFHeaderFooterPolicy(XWPFDocument doc) throws IOException, XmlException { this(doc, doc.getDocument().getBody().getSectPr()); @@ -93,8 +92,8 @@ public class XWPFHeaderFooterPolicy { /** * Figures out the policy for the given document, - * and creates any header and footer objects - * as required. + * and creates any header and footer objects + * as required. */ public XWPFHeaderFooterPolicy(XWPFDocument doc, CTSectPr sectPr) throws IOException, XmlException { // Grab what headers and footers have been defined @@ -102,7 +101,7 @@ public class XWPFHeaderFooterPolicy { // doesn't seem that .docx properly supports that // feature of the file format yet this.doc = doc; - for(int i=0; i relations = doc.getRelations(); int i = 1; - for (Iterator it = relations.iterator(); it.hasNext() ; ) { + for (Iterator it = relations.iterator(); it.hasNext(); ) { POIXMLDocumentPart item = it.next(); if (item.getPackageRelationship().getRelationshipType().equals(relation.getRelation())) { - i++; + i++; } } return i; @@ -231,14 +229,14 @@ public class XWPFHeaderFooterPolicy { private CTHdrFtr buildFtr(Enum type, String pStyle, XWPFHeaderFooter wrapper, XWPFParagraph[] pars) { //CTHdrFtr ftr = buildHdrFtr(pStyle, pars); // MB 24 May 2010 - CTHdrFtr ftr = buildHdrFtr(pStyle, pars, wrapper); // MB 24 May 2010 + CTHdrFtr ftr = buildHdrFtr(pStyle, pars, wrapper); // MB 24 May 2010 setFooterReference(type, wrapper); return ftr; } private CTHdrFtr buildHdr(Enum type, String pStyle, XWPFHeaderFooter wrapper, XWPFParagraph[] pars) { //CTHdrFtr hdr = buildHdrFtr(pStyle, pars); // MB 24 May 2010 - CTHdrFtr hdr = buildHdrFtr(pStyle, pars, wrapper); // MB 24 May 2010 + CTHdrFtr hdr = buildHdrFtr(pStyle, pars, wrapper); // MB 24 May 2010 setHeaderReference(type, wrapper); return hdr; } @@ -246,13 +244,12 @@ public class XWPFHeaderFooterPolicy { private CTHdrFtr buildHdrFtr(String pStyle, XWPFParagraph[] paragraphs) { CTHdrFtr ftr = CTHdrFtr.Factory.newInstance(); if (paragraphs != null) { - for (int i = 0 ; i < paragraphs.length ; i++) { + for (int i = 0; i < paragraphs.length; i++) { CTP p = ftr.addNewP(); //ftr.setPArray(0, paragraphs[i].getCTP()); // MB 23 May 2010 - ftr.setPArray(i, paragraphs[i].getCTP()); // MB 23 May 2010 + ftr.setPArray(i, paragraphs[i].getCTP()); // MB 23 May 2010 } - } - else { + } else { CTP p = ftr.addNewP(); byte[] rsidr = doc.getDocument().getBody().getPArray(0).getRsidR(); byte[] rsidrdefault = doc.getDocument().getBody().getPArray(0).getRsidRDefault(); @@ -270,21 +267,20 @@ public class XWPFHeaderFooterPolicy { * and createFooter(int, XWPFParagraph[]) methods or the getXXXXXHeader/Footer methods where * headers or footers had been added to a document since it had been created/opened, returned * an object that contained no XWPFParagraph objects even if the header/footer itself did contain - * text. The reason was that this line of code; CTHdrFtr ftr = CTHdrFtr.Factory.newInstance(); + * text. The reason was that this line of code; CTHdrFtr ftr = CTHdrFtr.Factory.newInstance(); * created a brand new instance of the CTHDRFtr class which was then populated with data when * it should have recovered the CTHdrFtr object encapsulated within the XWPFHeaderFooter object - * that had previoulsy been instantiated in the createHeader(int, XWPFParagraph[]) or + * that had previoulsy been instantiated in the createHeader(int, XWPFParagraph[]) or * createFooter(int, XWPFParagraph[]) methods. */ private CTHdrFtr buildHdrFtr(String pStyle, XWPFParagraph[] paragraphs, XWPFHeaderFooter wrapper) { CTHdrFtr ftr = wrapper._getHdrFtr(); if (paragraphs != null) { - for (int i = 0 ; i < paragraphs.length ; i++) { + for (int i = 0; i < paragraphs.length; i++) { CTP p = ftr.addNewP(); ftr.setPArray(i, paragraphs[i].getCTP()); } - } - else { + } else { CTP p = ftr.addNewP(); byte[] rsidr = doc.getDocument().getBody().getPArray(0).getRsidR(); byte[] rsidrdefault = doc.getDocument().getBody().getPArray(0).getRsidRDefault(); @@ -330,60 +326,70 @@ public class XWPFHeaderFooterPolicy { public XWPFHeader getFirstPageHeader() { return firstPageHeader; } + public XWPFFooter getFirstPageFooter() { return firstPageFooter; } + /** * Returns the odd page header. This is - * also the same as the default one... + * also the same as the default one... */ public XWPFHeader getOddPageHeader() { return defaultHeader; } + /** * Returns the odd page footer. This is - * also the same as the default one... + * also the same as the default one... */ public XWPFFooter getOddPageFooter() { return defaultFooter; } + public XWPFHeader getEvenPageHeader() { return evenPageHeader; } + public XWPFFooter getEvenPageFooter() { return evenPageFooter; } + public XWPFHeader getDefaultHeader() { return defaultHeader; } + public XWPFFooter getDefaultFooter() { return defaultFooter; } /** * Get the header that applies to the given - * (1 based) page. + * (1 based) page. + * * @param pageNumber The one based page number */ public XWPFHeader getHeader(int pageNumber) { - if(pageNumber == 1 && firstPageHeader != null) { + if (pageNumber == 1 && firstPageHeader != null) { return firstPageHeader; } - if(pageNumber % 2 == 0 && evenPageHeader != null) { + if (pageNumber % 2 == 0 && evenPageHeader != null) { return evenPageHeader; } return defaultHeader; } + /** * Get the footer that applies to the given - * (1 based) page. + * (1 based) page. + * * @param pageNumber The one based page number */ public XWPFFooter getFooter(int pageNumber) { - if(pageNumber == 1 && firstPageFooter != null) { + if (pageNumber == 1 && firstPageFooter != null) { return firstPageFooter; } - if(pageNumber % 2 == 0 && evenPageFooter != null) { + if (pageNumber % 2 == 0 && evenPageFooter != null) { return evenPageFooter; } return defaultFooter; @@ -459,7 +465,7 @@ public class XWPFHeaderFooterPolicy { lock.setExt(STExt.EDIT); CTShape shape = group.addNewShape(); shape.setId("PowerPlusWaterMarkObject" + idx); - shape.setSpid("_x0000_s102" + (4+idx)); + shape.setSpid("_x0000_s102" + (4 + idx)); shape.setType("#_x0000_t136"); shape.setStyle("position:absolute;margin-left:0;margin-top:0;width:415pt;height:207.5pt;z-index:-251654144;mso-wrap-edited:f;mso-position-horizontal:center;mso-position-horizontal-relative:margin;mso-position-vertical:center;mso-position-vertical-relative:margin"); shape.setWrapcoords("616 5068 390 16297 39 16921 -39 17155 7265 17545 7186 17467 -39 17467 18904 17467 10507 17467 8710 17545 18904 17077 18787 16843 18358 16297 18279 12554 19178 12476 20701 11774 20779 11228 21131 10059 21248 8811 21248 7563 20975 6316 20935 5380 19490 5146 14022 5068 2616 5068"); diff --git a/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHyperlinkDecorator.java b/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHyperlinkDecorator.java index d8120340f..27e8282ea 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHyperlinkDecorator.java +++ b/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHyperlinkDecorator.java @@ -23,50 +23,49 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTText; /** - * Decorator class for XWPFParagraph allowing to add hyperlinks - * found in paragraph to its text. - * + * Decorator class for XWPFParagraph allowing to add hyperlinks + * found in paragraph to its text. + *

* Note - adds the hyperlink at the end, not in the right place... - * + * * @deprecated Use {@link XWPFHyperlinkRun} instead */ @Deprecated public class XWPFHyperlinkDecorator extends XWPFParagraphDecorator { - private StringBuffer hyperlinkText; - - /** - * @param nextDecorator The next decorator to use - * @param outputHyperlinkUrls Should we output the links too, or just the link text? - */ - public XWPFHyperlinkDecorator(XWPFParagraphDecorator nextDecorator, boolean outputHyperlinkUrls) { - this(nextDecorator.paragraph, nextDecorator, outputHyperlinkUrls); - } - - /** - * @param prgrph The paragraph of text to work on - * @param outputHyperlinkUrls Should we output the links too, or just the link text? - */ - public XWPFHyperlinkDecorator(XWPFParagraph prgrph, XWPFParagraphDecorator nextDecorator, boolean outputHyperlinkUrls) { - super(prgrph, nextDecorator); - - hyperlinkText = new StringBuffer(); - - // loop over hyperlink anchors - for(CTHyperlink link : paragraph.getCTP().getHyperlinkArray()){ - for (CTR r : link.getRArray()) { - // Loop over text runs - for (CTText text : r.getTArray()){ - hyperlinkText.append(text.getStringValue()); - } - } - if(outputHyperlinkUrls && paragraph.getDocument().getHyperlinkByID(link.getId()) != null) { - hyperlinkText.append(" <"+paragraph.getDocument().getHyperlinkByID(link.getId()).getURL()+">"); - } - } - } - - public String getText() - { - return super.getText() + hyperlinkText; - } + private StringBuffer hyperlinkText; + + /** + * @param nextDecorator The next decorator to use + * @param outputHyperlinkUrls Should we output the links too, or just the link text? + */ + public XWPFHyperlinkDecorator(XWPFParagraphDecorator nextDecorator, boolean outputHyperlinkUrls) { + this(nextDecorator.paragraph, nextDecorator, outputHyperlinkUrls); + } + + /** + * @param prgrph The paragraph of text to work on + * @param outputHyperlinkUrls Should we output the links too, or just the link text? + */ + public XWPFHyperlinkDecorator(XWPFParagraph prgrph, XWPFParagraphDecorator nextDecorator, boolean outputHyperlinkUrls) { + super(prgrph, nextDecorator); + + hyperlinkText = new StringBuffer(); + + // loop over hyperlink anchors + for (CTHyperlink link : paragraph.getCTP().getHyperlinkArray()) { + for (CTR r : link.getRArray()) { + // Loop over text runs + for (CTText text : r.getTArray()) { + hyperlinkText.append(text.getStringValue()); + } + } + if (outputHyperlinkUrls && paragraph.getDocument().getHyperlinkByID(link.getId()) != null) { + hyperlinkText.append(" <" + paragraph.getDocument().getHyperlinkByID(link.getId()).getURL() + ">"); + } + } + } + + public String getText() { + return super.getText() + hyperlinkText; + } } diff --git a/src/ooxml/java/org/apache/poi/xwpf/model/XWPFParagraphDecorator.java b/src/ooxml/java/org/apache/poi/xwpf/model/XWPFParagraphDecorator.java index 3946b22b8..46636c3ef 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/model/XWPFParagraphDecorator.java +++ b/src/ooxml/java/org/apache/poi/xwpf/model/XWPFParagraphDecorator.java @@ -22,22 +22,22 @@ import org.apache.poi.xwpf.usermodel.XWPFParagraph; * Base decorator class for XWPFParagraph */ public abstract class XWPFParagraphDecorator { - protected XWPFParagraph paragraph; - protected XWPFParagraphDecorator nextDecorator; - - public XWPFParagraphDecorator(XWPFParagraph paragraph) { - this(paragraph, null); - } - - public XWPFParagraphDecorator(XWPFParagraph paragraph, XWPFParagraphDecorator nextDecorator) { - this.paragraph = paragraph; - this.nextDecorator = nextDecorator; - } - - public String getText() { - if(nextDecorator != null) { - return nextDecorator.getText(); - } - return paragraph.getText(); - } + protected XWPFParagraph paragraph; + protected XWPFParagraphDecorator nextDecorator; + + public XWPFParagraphDecorator(XWPFParagraph paragraph) { + this(paragraph, null); + } + + public XWPFParagraphDecorator(XWPFParagraph paragraph, XWPFParagraphDecorator nextDecorator) { + this.paragraph = paragraph; + this.nextDecorator = nextDecorator; + } + + public String getText() { + if (nextDecorator != null) { + return nextDecorator.getText(); + } + return paragraph.getText(); + } } diff --git a/src/ooxml/java/org/apache/poi/xwpf/package.html b/src/ooxml/java/org/apache/poi/xwpf/package.html index 8c6c70d9e..0a5955646 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/package.html +++ b/src/ooxml/java/org/apache/poi/xwpf/package.html @@ -19,9 +19,9 @@ --> -

This package contains classes for handling Microsoft .docx - Word Processing files, known in POI as XWPF (XML Word Processing - Format). -

+

This package contains classes for handling Microsoft .docx + Word Processing files, known in POI as XWPF (XML Word Processing + Format). +

diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/AbstractXWPFSDT.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/AbstractXWPFSDT.java index e69b0244e..0e275460a 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/AbstractXWPFSDT.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/AbstractXWPFSDT.java @@ -13,102 +13,92 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -==================================================================== */ -package org.apache.poi.xwpf.usermodel; - -import java.util.List; - -import org.apache.poi.POIXMLDocumentPart; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtPr; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTString; - -/** - * Experimental abstract class that is a base for XWPFSDT and XWPFSDTCell - * - * WARNING - APIs expected to change rapidly. - * - * These classes have so far been built only for read-only processing. - * - */ -public abstract class AbstractXWPFSDT implements ISDTContents { - private final String title; - private final String tag; - private final IBody part; - - @SuppressWarnings("deprecation") - public AbstractXWPFSDT(CTSdtPr pr, IBody part){ - - CTString[] aliases = pr.getAliasArray(); - if (aliases != null && aliases.length > 0){ - title = aliases[0].getVal(); - } else { - title = ""; - } - CTString[] tags = pr.getTagArray(); - if (tags != null && tags.length > 0){ - tag = tags[0].getVal(); - } else { - tag = ""; - } - this.part = part; - - } - - /** - * - * @return first SDT Title - */ - public String getTitle(){ - return title; - } - - /** - * - * @return first SDT Tag - */ - public String getTag(){ - return tag; - } - - /** - * - * @return the content object - */ - public abstract ISDTContent getContent(); - - /** - * - * @return null - */ - public IBody getBody() { - return null; - } - - /** - * - * @return document part - */ - public POIXMLDocumentPart getPart() { - return part.getPart(); - } - - /** - * - * @return partType - */ - public BodyType getPartType() { - return BodyType.CONTENTCONTROL; - } - - /** - * - * @return element type - */ - public BodyElementType getElementType() { - return BodyElementType.CONTENTCONTROL; - } - - public XWPFDocument getDocument() { - return part.getXWPFDocument(); - } -} +==================================================================== */ +package org.apache.poi.xwpf.usermodel; + +import org.apache.poi.POIXMLDocumentPart; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtPr; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTString; + +/** + * Experimental abstract class that is a base for XWPFSDT and XWPFSDTCell + *

+ * WARNING - APIs expected to change rapidly. + *

+ * These classes have so far been built only for read-only processing. + */ +public abstract class AbstractXWPFSDT implements ISDTContents { + private final String title; + private final String tag; + private final IBody part; + + @SuppressWarnings("deprecation") + public AbstractXWPFSDT(CTSdtPr pr, IBody part) { + + CTString[] aliases = pr.getAliasArray(); + if (aliases != null && aliases.length > 0) { + title = aliases[0].getVal(); + } else { + title = ""; + } + CTString[] tags = pr.getTagArray(); + if (tags != null && tags.length > 0) { + tag = tags[0].getVal(); + } else { + tag = ""; + } + this.part = part; + + } + + /** + * @return first SDT Title + */ + public String getTitle() { + return title; + } + + /** + * @return first SDT Tag + */ + public String getTag() { + return tag; + } + + /** + * @return the content object + */ + public abstract ISDTContent getContent(); + + /** + * @return null + */ + public IBody getBody() { + return null; + } + + /** + * @return document part + */ + public POIXMLDocumentPart getPart() { + return part.getPart(); + } + + /** + * @return partType + */ + public BodyType getPartType() { + return BodyType.CONTENTCONTROL; + } + + /** + * @return element type + */ + public BodyElementType getElementType() { + return BodyElementType.CONTENTCONTROL; + } + + public XWPFDocument getDocument() { + return part.getXWPFDocument(); + } +} diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/BodyElementType.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/BodyElementType.java index 160c637bd..5a1df0e21 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/BodyElementType.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/BodyElementType.java @@ -21,15 +21,14 @@ package org.apache.poi.xwpf.usermodel; *

* 9 Jan 2010 *

- *

- * // TODO insert Javadoc here! - *

- * @author epp - * - */ -public enum BodyElementType { - CONTENTCONTROL, - PARAGRAPH, - TABLE, - -} + *

+ * // TODO insert Javadoc here! + *

+ * + * @author epp + */ +public enum BodyElementType { + CONTENTCONTROL, + PARAGRAPH, + TABLE, +} diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/Borders.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/Borders.java index 48ea33d2a..b7937e528 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/Borders.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/Borders.java @@ -29,14 +29,15 @@ import java.util.Map; * *
  • Art borders: which specify a repeated image to be used * when drawing a border around the specified object. Line borders may be - * specified on any object which allows a border, however, art borders may only - * be used as a border at the page level - the borders under the pgBorders - * element - *
  • - * - * @author Gisella Bronzetti - */ -public enum Borders { + * specified on any object which allows a border, however, art borders may only + * be used as a border at the page level - the borders under the pgBorders + * element + * + * + * + * @author Gisella Bronzetti + */ +public enum Borders { NIL(1), @@ -596,31 +597,32 @@ public enum Borders { ZANY_TRIANGLES(189), ZIG_ZAG(190), - - ZIG_ZAG_STITCH(191); - - private final int value; - - private Borders(int val) { - value = val; - } - - public int getValue() { - return value; - } - - private static Map imap = new HashMap(); - static { - for (Borders p : values()) { - imap.put(Integer.valueOf(p.getValue()), p); - } - } - - public static Borders valueOf(int type) { - Borders pBorder = imap.get(Integer.valueOf(type)); - if (pBorder == null) { - throw new IllegalArgumentException("Unknown paragraph border: " + type); - } - return pBorder; - } -} + + ZIG_ZAG_STITCH(191); + + private static Map imap = new HashMap(); + + static { + for (Borders p : values()) { + imap.put(Integer.valueOf(p.getValue()), p); + } + } + + private final int value; + + private Borders(int val) { + value = val; + } + + public static Borders valueOf(int type) { + Borders pBorder = imap.get(Integer.valueOf(type)); + if (pBorder == null) { + throw new IllegalArgumentException("Unknown paragraph border: " + type); + } + return pBorder; + } + + public int getValue() { + return value; + } +} diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/BreakClear.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/BreakClear.java index 8ad98905e..4fbef1d20 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/BreakClear.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/BreakClear.java @@ -20,23 +20,23 @@ import java.util.HashMap; import java.util.Map; /** - * Specifies the set of possible restart locations which may be used as to - * determine the next available line when a break's type attribute has a value - * of textWrapping. - * - * @author Gisella Bronzetti - */ -public enum BreakClear { + * Specifies the set of possible restart locations which may be used as to + * determine the next available line when a break's type attribute has a value + * of textWrapping. + * + * @author Gisella Bronzetti + */ +public enum BreakClear { /** * Specifies that the text wrapping break shall advance the text to the next - * line in the WordprocessingML document, regardless of its position left to - * right or the presence of any floating objects which intersect with the - * line, - * - * This is the setting for a typical line break in a document. - */ - + * line in the WordprocessingML document, regardless of its position left to + * right or the presence of any floating objects which intersect with the + * line, + *

    + * This is the setting for a typical line break in a document. + */ + NONE(1), /** @@ -80,31 +80,32 @@ public enum BreakClear { * Specifies that the text wrapping break shall advance the text to the next * line in the WordprocessingML document which spans the full width of the * line. - */ - ALL(4); - - private final int value; - - private BreakClear(int val) { - value = val; - } - - public int getValue() { - return value; - } - - private static Map imap = new HashMap(); - static { - for (BreakClear p : values()) { - imap.put(new Integer(p.getValue()), p); - } - } - - public static BreakClear valueOf(int type) { - BreakClear bType = imap.get(new Integer(type)); - if (bType == null) - throw new IllegalArgumentException("Unknown break clear type: " - + type); - return bType; - } -} + */ + ALL(4); + + private static Map imap = new HashMap(); + + static { + for (BreakClear p : values()) { + imap.put(new Integer(p.getValue()), p); + } + } + + private final int value; + + private BreakClear(int val) { + value = val; + } + + public static BreakClear valueOf(int type) { + BreakClear bType = imap.get(new Integer(type)); + if (bType == null) + throw new IllegalArgumentException("Unknown break clear type: " + + type); + return bType; + } + + public int getValue() { + return value; + } +} diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/BreakType.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/BreakType.java index 60b35225b..94cddab50 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/BreakType.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/BreakType.java @@ -21,18 +21,18 @@ import java.util.Map; /** * Specifies the possible types of break characters in a WordprocessingML - * document. - * The break type determines the next location where text shall be - * placed after this manual break is applied to the text contents - * - * @author Gisella Bronzetti - */ -public enum BreakType { - - - /** - * Specifies that the current break shall restart itself on the next page of - * the document when the document is displayed in page view. + * document. + * The break type determines the next location where text shall be + * placed after this manual break is applied to the text contents + * + * @author Gisella Bronzetti + */ +public enum BreakType { + + + /** + * Specifies that the current break shall restart itself on the next page of + * the document when the document is displayed in page view. */ PAGE(1), @@ -53,31 +53,32 @@ public enum BreakType { * the document when the document is displayed in page view. * The determine of the next line shall be done subject to the value of the clear * attribute on the specified break character. - */ - TEXT_WRAPPING(3); - - private final int value; - - private BreakType(int val) { - value = val; - } - - public int getValue() { - return value; - } - - private static Map imap = new HashMap(); - static { - for (BreakType p : values()) { - imap.put(new Integer(p.getValue()), p); - } - } - - public static BreakType valueOf(int type) { - BreakType bType = imap.get(new Integer(type)); - if (bType == null) - throw new IllegalArgumentException("Unknown break type: " - + type); - return bType; - } -} + */ + TEXT_WRAPPING(3); + + private static Map imap = new HashMap(); + + static { + for (BreakType p : values()) { + imap.put(new Integer(p.getValue()), p); + } + } + + private final int value; + + private BreakType(int val) { + value = val; + } + + public static BreakType valueOf(int type) { + BreakType bType = imap.get(new Integer(type)); + if (bType == null) + throw new IllegalArgumentException("Unknown break type: " + + type); + return bType; + } + + public int getValue() { + return value; + } +} diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/Document.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/Document.java index 2df6f577f..077697a16 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/Document.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/Document.java @@ -14,31 +14,45 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ -package org.apache.poi.xwpf.usermodel; - -public interface Document { - /** Extended windows meta file */ - public static final int PICTURE_TYPE_EMF = 2; - - /** Windows Meta File */ - public static final int PICTURE_TYPE_WMF = 3; - - /** Mac PICT format */ - public static final int PICTURE_TYPE_PICT = 4; - - /** JPEG format */ - public static final int PICTURE_TYPE_JPEG = 5; - - /** PNG format */ - public static final int PICTURE_TYPE_PNG = 6; - - /** Device independent bitmap */ - public static final int PICTURE_TYPE_DIB = 7; - - /** GIF image format */ - public static final int PICTURE_TYPE_GIF = 8; - - /** +package org.apache.poi.xwpf.usermodel; + +public interface Document { + /** + * Extended windows meta file + */ + public static final int PICTURE_TYPE_EMF = 2; + + /** + * Windows Meta File + */ + public static final int PICTURE_TYPE_WMF = 3; + + /** + * Mac PICT format + */ + public static final int PICTURE_TYPE_PICT = 4; + + /** + * JPEG format + */ + public static final int PICTURE_TYPE_JPEG = 5; + + /** + * PNG format + */ + public static final int PICTURE_TYPE_PNG = 6; + + /** + * Device independent bitmap + */ + public static final int PICTURE_TYPE_DIB = 7; + + /** + * GIF image format + */ + public static final int PICTURE_TYPE_GIF = 8; + + /** * Tag Image File (.tiff) */ public static final int PICTURE_TYPE_TIFF = 9; diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/IBody.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/IBody.java index e03588811..6e9ce05e4 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/IBody.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/IBody.java @@ -27,64 +27,68 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc; /** *

    An IBody represents the different parts of the document which - * can contain collections of Paragraphs and Tables. It provides a - * common way to work with these and their contents.

    - *

    Typically, this is something like a XWPFDocument, or one of - * the parts in it like XWPFHeader, XWPFFooter, XWPFTableCell - *

    - */ -public interface IBody { + * can contain collections of Paragraphs and Tables. It provides a + * common way to work with these and their contents.

    + *

    Typically, this is something like a XWPFDocument, or one of + * the parts in it like XWPFHeader, XWPFFooter, XWPFTableCell + *

    + */ +public interface IBody { /** - * returns the Part, to which the body belongs, which you need for adding relationship to other parts - * Actually it is needed of the class XWPFTableCell. Because you have to know to which part the tableCell - * belongs. - * @return the Part, to which the body belongs - */ - public POIXMLDocumentPart getPart(); - - /** - * get the PartType of the body, for example - * DOCUMENT, HEADER, FOOTER, FOOTNOTE, - * @return the PartType of the body - */ - public BodyType getPartType(); - - /** - * Returns an Iterator with paragraphs and tables, - * in the order that they occur in the text. - */ - public List getBodyElements(); - - /** - * Returns the paragraph(s) that holds - * the text of the header or footer. - */ - public List getParagraphs(); - - /** - * Return the table(s) that holds the text - * of the IBodyPart, for complex cases - * where a paragraph isn't used. - */ - public List getTables(); - - /** - * if there is a corresponding {@link XWPFParagraph} of the parameter ctTable in the paragraphList of this header or footer - * the method will return this paragraph - * if there is no corresponding {@link XWPFParagraph} the method will return null - * @param p is instance of CTP and is searching for an XWPFParagraph - * @return null if there is no XWPFParagraph with an corresponding CTPparagraph in the paragraphList of this header or footer - * XWPFParagraph with the correspondig CTP p - */ - public XWPFParagraph getParagraph(CTP p); - - /** - * if there is a corresponding {@link XWPFTable} of the parameter ctTable in the tableList of this header - * the method will return this table - * if there is no corresponding {@link XWPFTable} the method will return null - * @param ctTable - */ - public XWPFTable getTable(CTTbl ctTable); + * returns the Part, to which the body belongs, which you need for adding relationship to other parts + * Actually it is needed of the class XWPFTableCell. Because you have to know to which part the tableCell + * belongs. + * + * @return the Part, to which the body belongs + */ + public POIXMLDocumentPart getPart(); + + /** + * get the PartType of the body, for example + * DOCUMENT, HEADER, FOOTER, FOOTNOTE, + * + * @return the PartType of the body + */ + public BodyType getPartType(); + + /** + * Returns an Iterator with paragraphs and tables, + * in the order that they occur in the text. + */ + public List getBodyElements(); + + /** + * Returns the paragraph(s) that holds + * the text of the header or footer. + */ + public List getParagraphs(); + + /** + * Return the table(s) that holds the text + * of the IBodyPart, for complex cases + * where a paragraph isn't used. + */ + public List getTables(); + + /** + * if there is a corresponding {@link XWPFParagraph} of the parameter ctTable in the paragraphList of this header or footer + * the method will return this paragraph + * if there is no corresponding {@link XWPFParagraph} the method will return null + * + * @param p is instance of CTP and is searching for an XWPFParagraph + * @return null if there is no XWPFParagraph with an corresponding CTPparagraph in the paragraphList of this header or footer + * XWPFParagraph with the correspondig CTP p + */ + public XWPFParagraph getParagraph(CTP p); + + /** + * if there is a corresponding {@link XWPFTable} of the parameter ctTable in the tableList of this header + * the method will return this table + * if there is no corresponding {@link XWPFTable} the method will return null + * + * @param ctTable + */ + public XWPFTable getTable(CTTbl ctTable); /** * Returns the paragraph that of position pos @@ -94,32 +98,36 @@ public interface IBody { /** * Returns the table at position pos */ - public XWPFTable getTableArray(int pos); - - /** - *inserts a new paragraph at position of the cursor - * @param cursor - */ - public XWPFParagraph insertNewParagraph(XmlCursor cursor); - - /** - * inserts a new Table at the cursor position. - * @param cursor - */ - public XWPFTable insertNewTbl(XmlCursor cursor); - - /** - * inserts a new Table at position pos - * @param pos - * @param table - */ + public XWPFTable getTableArray(int pos); + + /** + * inserts a new paragraph at position of the cursor + * + * @param cursor + */ + public XWPFParagraph insertNewParagraph(XmlCursor cursor); + + /** + * inserts a new Table at the cursor position. + * + * @param cursor + */ + public XWPFTable insertNewTbl(XmlCursor cursor); + + /** + * inserts a new Table at position pos + * + * @param pos + * @param table + */ void insertTable(int pos, XWPFTable table); - - /** - * returns the TableCell to which the Table belongs - * @param cell - */ - public XWPFTableCell getTableCell(CTTc cell); + + /** + * returns the TableCell to which the Table belongs + * + * @param cell + */ + public XWPFTableCell getTableCell(CTTc cell); /** * Return XWPFDocument diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/IBodyElement.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/IBodyElement.java index 70009be3b..312ea493f 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/IBodyElement.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/IBodyElement.java @@ -18,15 +18,18 @@ package org.apache.poi.xwpf.usermodel; import org.apache.poi.POIXMLDocumentPart; - -/** - * 9 Jan 2010 - * @author Philipp Epp - * - */ -public interface IBodyElement{ - IBody getBody(); - POIXMLDocumentPart getPart(); - BodyType getPartType(); - BodyElementType getElementType(); -} + +/** + * 9 Jan 2010 + * + * @author Philipp Epp + */ +public interface IBodyElement { + IBody getBody(); + + POIXMLDocumentPart getPart(); + + BodyType getPartType(); + + BodyElementType getElementType(); +} diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/ICell.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/ICell.java index cf32924b8..0ac12c793 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/ICell.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/ICell.java @@ -15,13 +15,13 @@ limitations under the License. ==================================================================== */ package org.apache.poi.xwpf.usermodel; - -/** - * Interface for anything that can be at a table cell level: - * {@link XWPFTableCell}, {@link XWPFSDTCell} - *

    - * Schematically something like this: - * <tr><tc/><tc/><sdt><tc/></sdt></tr> - */ -public interface ICell { -} + +/** + * Interface for anything that can be at a table cell level: + * {@link XWPFTableCell}, {@link XWPFSDTCell} + *

    + * Schematically something like this: + * <tr><tc/><tc/><sdt><tc/></sdt></tr> + */ +public interface ICell { +} diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/IRunBody.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/IRunBody.java index 3ea4acabe..fea7856d1 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/IRunBody.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/IRunBody.java @@ -22,10 +22,11 @@ import org.apache.poi.wp.usermodel.Paragraph; /** * Simple interface describing both {@link XWPFParagraph} * and {@link XWPFSDT} - * + *

    * TODO Should this be based on / extend {@link Paragraph}? */ public interface IRunBody { - public XWPFDocument getDocument(); - public POIXMLDocumentPart getPart(); + public XWPFDocument getDocument(); + + public POIXMLDocumentPart getPart(); } diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/IRunElement.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/IRunElement.java index f11b46a13..e8d1b83e7 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/IRunElement.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/IRunElement.java @@ -20,11 +20,10 @@ import org.apache.poi.wp.usermodel.CharacterRun; /** * Common interface for things that can occur - * where a run (text with common stylings) can, - * eg {@link XWPFRun} or {@link XWPFSDT}. + * where a run (text with common stylings) can, + * eg {@link XWPFRun} or {@link XWPFSDT}. * TODO More methods to follow shortly! - * + *

    * TODO Make this based on {@link CharacterRun} */ -public interface IRunElement { -} \ No newline at end of file +public interface IRunElement {} \ No newline at end of file diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/ISDTContent.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/ISDTContent.java index 25599d7e6..5493ff3bd 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/ISDTContent.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/ISDTContent.java @@ -15,21 +15,20 @@ limitations under the License. ==================================================================== */ package org.apache.poi.xwpf.usermodel; - - -/** - * Experimental interface to offer rudimentary read-only processing of - * of the contentblock of an SDT/ContentControl. - * - * - * - * WARNING - APIs expected to change rapidly - * - */ -public interface ISDTContent { - - public String getText(); - - public String toString(); - + + +/** + * Experimental interface to offer rudimentary read-only processing of + * of the contentblock of an SDT/ContentControl. + *

    + *

    + *

    + * WARNING - APIs expected to change rapidly + */ +public interface ISDTContent { + + public String getText(); + + public String toString(); + } diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/ISDTContents.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/ISDTContents.java index 40776e218..66922b837 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/ISDTContents.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/ISDTContents.java @@ -18,8 +18,8 @@ package org.apache.poi.xwpf.usermodel; /** * Interface for anything that can be within an SDT: - * {@link XWPFRun}, {@link XWPFTable}, {@link XWPFParagraph}, - * {@link XWPFSDT} etc + * {@link XWPFRun}, {@link XWPFTable}, {@link XWPFParagraph}, + * {@link XWPFSDT} etc */ public interface ISDTContents { } diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/LineSpacingRule.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/LineSpacingRule.java index 166d8e701..b46c53206 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/LineSpacingRule.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/LineSpacingRule.java @@ -19,13 +19,13 @@ package org.apache.poi.xwpf.usermodel; import java.util.HashMap; import java.util.Map; -/** - * Specifies the logic which shall be used to calculate the line spacing of the - * parent object when it is displayed in the document. - * - * @author Gisella Bronzetti - */ -public enum LineSpacingRule { +/** + * Specifies the logic which shall be used to calculate the line spacing of the + * parent object when it is displayed in the document. + * + * @author Gisella Bronzetti + */ +public enum LineSpacingRule { /** * Specifies that the line spacing of the parent object shall be @@ -45,31 +45,32 @@ public enum LineSpacingRule { /** * Specifies that the height of the line shall be at least the value * specified, but may be expanded to fit its content as needed. - */ - AT_LEAST(3); - - - private final int value; - - private LineSpacingRule(int val) { - value = val; - } - - public int getValue() { - return value; - } - - private static Map imap = new HashMap(); - static { - for (LineSpacingRule p : values()) { - imap.put(new Integer(p.getValue()), p); - } - } - - public static LineSpacingRule valueOf(int type) { - LineSpacingRule lineType = imap.get(new Integer(type)); - if (lineType == null) - throw new IllegalArgumentException("Unknown line type: " + type); - return lineType; - } -} + */ + AT_LEAST(3); + + + private static Map imap = new HashMap(); + + static { + for (LineSpacingRule p : values()) { + imap.put(new Integer(p.getValue()), p); + } + } + + private final int value; + + private LineSpacingRule(int val) { + value = val; + } + + public static LineSpacingRule valueOf(int type) { + LineSpacingRule lineType = imap.get(new Integer(type)); + if (lineType == null) + throw new IllegalArgumentException("Unknown line type: " + type); + return lineType; + } + + public int getValue() { + return value; + } +} diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/ParagraphAlignment.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/ParagraphAlignment.java index 0585ecb4c..226d4095a 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/ParagraphAlignment.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/ParagraphAlignment.java @@ -37,30 +37,31 @@ public enum ParagraphAlignment { DISTRIBUTE(6), NUM_TAB(7), HIGH_KASHIDA(8), - LOW_KASHIDA(9), - THAI_DISTRIBUTE(10); - - private final int value; - - private ParagraphAlignment(int val){ - value = val; - } - - public int getValue(){ - return value; - } - - private static Map imap = new HashMap(); - static{ - for (ParagraphAlignment p : values()) { - imap.put(new Integer(p.getValue()), p); - } - } - - public static ParagraphAlignment valueOf(int type){ - ParagraphAlignment err = imap.get(new Integer(type)); - if(err == null) throw new IllegalArgumentException("Unknown paragraph alignment: " + type); - return err; - } - -} + LOW_KASHIDA(9), + THAI_DISTRIBUTE(10); + + private static Map imap = new HashMap(); + + static { + for (ParagraphAlignment p : values()) { + imap.put(new Integer(p.getValue()), p); + } + } + + private final int value; + + private ParagraphAlignment(int val) { + value = val; + } + + public static ParagraphAlignment valueOf(int type) { + ParagraphAlignment err = imap.get(new Integer(type)); + if (err == null) throw new IllegalArgumentException("Unknown paragraph alignment: " + type); + return err; + } + + public int getValue() { + return value; + } + +} diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/PositionInParagraph.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/PositionInParagraph.java index 5e387e7f8..4eebe412e 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/PositionInParagraph.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/PositionInParagraph.java @@ -17,49 +17,47 @@ package org.apache.poi.xwpf.usermodel; - -/** - * postion of a character in a paragrapho -* 1st RunPositon -* 2nd TextPosition -* 3rd CharacterPosition -* -* -*/ -public class PositionInParagraph { - private int posRun = 0, posText = 0, posChar = 0; - - public PositionInParagraph(){ - } - - public PositionInParagraph(int posRun, int posText, int posChar){ - this.posRun=posRun; - this.posChar=posChar; - this.posText= posText; - } - - public int getRun() { - return posRun; - } - - public void setRun(int beginRun) { - this.posRun = beginRun; - } - - public int getText() { - return posText; - } - - public void setText(int beginText) { - this.posText = beginText; - } - - public int getChar() { - return posChar; - } - - public void setChar(int beginChar) { - this.posChar = beginChar; - } - -} + +/** + * postion of a character in a paragrapho + * 1st RunPositon + * 2nd TextPosition + * 3rd CharacterPosition + */ +public class PositionInParagraph { + private int posRun = 0, posText = 0, posChar = 0; + + public PositionInParagraph() { + } + + public PositionInParagraph(int posRun, int posText, int posChar) { + this.posRun = posRun; + this.posChar = posChar; + this.posText = posText; + } + + public int getRun() { + return posRun; + } + + public void setRun(int beginRun) { + this.posRun = beginRun; + } + + public int getText() { + return posText; + } + + public void setText(int beginText) { + this.posText = beginText; + } + + public int getChar() { + return posChar; + } + + public void setChar(int beginChar) { + this.posChar = beginChar; + } + +} diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/TOC.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/TOC.java index f144e624d..b7dc6ee2f 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/TOC.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/TOC.java @@ -38,85 +38,85 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTabJc; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTabTlc; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTheme; - -public class TOC { - - CTSdtBlock block; - - public TOC() { - this(CTSdtBlock.Factory.newInstance()); - } - - public TOC(CTSdtBlock block) { - this.block = block; - CTSdtPr sdtPr = block.addNewSdtPr(); - CTDecimalNumber id = sdtPr.addNewId(); - id.setVal(new BigInteger("4844945")); - sdtPr.addNewDocPartObj().addNewDocPartGallery().setVal("Table of contents"); - CTSdtEndPr sdtEndPr = block.addNewSdtEndPr(); - CTRPr rPr = sdtEndPr.addNewRPr(); - CTFonts fonts = rPr.addNewRFonts(); - fonts.setAsciiTheme(STTheme.MINOR_H_ANSI); - fonts.setEastAsiaTheme(STTheme.MINOR_H_ANSI); - fonts.setHAnsiTheme(STTheme.MINOR_H_ANSI); - fonts.setCstheme(STTheme.MINOR_BIDI); - rPr.addNewB().setVal(STOnOff.OFF); - rPr.addNewBCs().setVal(STOnOff.OFF); - rPr.addNewColor().setVal("auto"); - rPr.addNewSz().setVal(new BigInteger("24")); - rPr.addNewSzCs().setVal(new BigInteger("24")); - CTSdtContentBlock content = block.addNewSdtContent(); - CTP p = content.addNewP(); - p.setRsidR("00EF7E24".getBytes()); - p.setRsidRDefault("00EF7E24".getBytes()); - p.addNewPPr().addNewPStyle().setVal("TOCHeading"); - p.addNewR().addNewT().setStringValue("Table of Contents"); - } - - @Internal - public CTSdtBlock getBlock() { - return this.block; - } - - public void addRow(int level, String title, int page, String bookmarkRef) { - CTSdtContentBlock contentBlock = this.block.getSdtContent(); - CTP p = contentBlock.addNewP(); - p.setRsidR("00EF7E24".getBytes()); - p.setRsidRDefault("00EF7E24".getBytes()); - CTPPr pPr = p.addNewPPr(); - pPr.addNewPStyle().setVal("TOC" + level); - CTTabs tabs = pPr.addNewTabs(); - CTTabStop tab = tabs.addNewTab(); - tab.setVal(STTabJc.RIGHT); - tab.setLeader(STTabTlc.DOT); - tab.setPos(new BigInteger("8290")); - pPr.addNewRPr().addNewNoProof(); - CTR run = p.addNewR(); - run.addNewRPr().addNewNoProof(); - run.addNewT().setStringValue(title); - run = p.addNewR(); - run.addNewRPr().addNewNoProof(); - run.addNewTab(); - run = p.addNewR(); - run.addNewRPr().addNewNoProof(); - run.addNewFldChar().setFldCharType(STFldCharType.BEGIN); - // pageref run - run = p.addNewR(); - run.addNewRPr().addNewNoProof(); - CTText text = run.addNewInstrText(); - text.setSpace(Space.PRESERVE); - // bookmark reference - text.setStringValue(" PAGEREF _Toc" + bookmarkRef + " \\h "); - p.addNewR().addNewRPr().addNewNoProof(); - run = p.addNewR(); - run.addNewRPr().addNewNoProof(); - run.addNewFldChar().setFldCharType(STFldCharType.SEPARATE); - // page number run - run = p.addNewR(); - run.addNewRPr().addNewNoProof(); - run.addNewT().setStringValue(Integer.valueOf(page).toString()); - run = p.addNewR(); - run.addNewRPr().addNewNoProof(); - run.addNewFldChar().setFldCharType(STFldCharType.END); - } -} + +public class TOC { + + CTSdtBlock block; + + public TOC() { + this(CTSdtBlock.Factory.newInstance()); + } + + public TOC(CTSdtBlock block) { + this.block = block; + CTSdtPr sdtPr = block.addNewSdtPr(); + CTDecimalNumber id = sdtPr.addNewId(); + id.setVal(new BigInteger("4844945")); + sdtPr.addNewDocPartObj().addNewDocPartGallery().setVal("Table of contents"); + CTSdtEndPr sdtEndPr = block.addNewSdtEndPr(); + CTRPr rPr = sdtEndPr.addNewRPr(); + CTFonts fonts = rPr.addNewRFonts(); + fonts.setAsciiTheme(STTheme.MINOR_H_ANSI); + fonts.setEastAsiaTheme(STTheme.MINOR_H_ANSI); + fonts.setHAnsiTheme(STTheme.MINOR_H_ANSI); + fonts.setCstheme(STTheme.MINOR_BIDI); + rPr.addNewB().setVal(STOnOff.OFF); + rPr.addNewBCs().setVal(STOnOff.OFF); + rPr.addNewColor().setVal("auto"); + rPr.addNewSz().setVal(new BigInteger("24")); + rPr.addNewSzCs().setVal(new BigInteger("24")); + CTSdtContentBlock content = block.addNewSdtContent(); + CTP p = content.addNewP(); + p.setRsidR("00EF7E24".getBytes()); + p.setRsidRDefault("00EF7E24".getBytes()); + p.addNewPPr().addNewPStyle().setVal("TOCHeading"); + p.addNewR().addNewT().setStringValue("Table of Contents"); + } + + @Internal + public CTSdtBlock getBlock() { + return this.block; + } + + public void addRow(int level, String title, int page, String bookmarkRef) { + CTSdtContentBlock contentBlock = this.block.getSdtContent(); + CTP p = contentBlock.addNewP(); + p.setRsidR("00EF7E24".getBytes()); + p.setRsidRDefault("00EF7E24".getBytes()); + CTPPr pPr = p.addNewPPr(); + pPr.addNewPStyle().setVal("TOC" + level); + CTTabs tabs = pPr.addNewTabs(); + CTTabStop tab = tabs.addNewTab(); + tab.setVal(STTabJc.RIGHT); + tab.setLeader(STTabTlc.DOT); + tab.setPos(new BigInteger("8290")); + pPr.addNewRPr().addNewNoProof(); + CTR run = p.addNewR(); + run.addNewRPr().addNewNoProof(); + run.addNewT().setStringValue(title); + run = p.addNewR(); + run.addNewRPr().addNewNoProof(); + run.addNewTab(); + run = p.addNewR(); + run.addNewRPr().addNewNoProof(); + run.addNewFldChar().setFldCharType(STFldCharType.BEGIN); + // pageref run + run = p.addNewR(); + run.addNewRPr().addNewNoProof(); + CTText text = run.addNewInstrText(); + text.setSpace(Space.PRESERVE); + // bookmark reference + text.setStringValue(" PAGEREF _Toc" + bookmarkRef + " \\h "); + p.addNewR().addNewRPr().addNewNoProof(); + run = p.addNewR(); + run.addNewRPr().addNewNoProof(); + run.addNewFldChar().setFldCharType(STFldCharType.SEPARATE); + // page number run + run = p.addNewR(); + run.addNewRPr().addNewNoProof(); + run.addNewT().setStringValue(Integer.valueOf(page).toString()); + run = p.addNewR(); + run.addNewRPr().addNewNoProof(); + run.addNewFldChar().setFldCharType(STFldCharType.END); + } +} diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/TextAlignment.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/TextAlignment.java index b2a8c13c7..7c1187df6 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/TextAlignment.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/TextAlignment.java @@ -17,25 +17,25 @@ package org.apache.poi.xwpf.usermodel; import java.util.HashMap; -import java.util.Map; - -/** - * Specifies all types of vertical alignment which are available to be applied to of all text - * on each line displayed within a paragraph. - * - * @author Gisella Bronzetti - */ -public enum TextAlignment { - /** - * Specifies that all text in the parent object shall be - * aligned to the top of each character when displayed - */ - TOP(1), - /** - * Specifies that all text in the parent object shall be - * aligned to the center of each character when displayed. - */ - CENTER(2), +import java.util.Map; + +/** + * Specifies all types of vertical alignment which are available to be applied to of all text + * on each line displayed within a paragraph. + * + * @author Gisella Bronzetti + */ +public enum TextAlignment { + /** + * Specifies that all text in the parent object shall be + * aligned to the top of each character when displayed + */ + TOP(1), + /** + * Specifies that all text in the parent object shall be + * aligned to the center of each character when displayed. + */ + CENTER(2), /** * Specifies that all text in the parent object shall be * aligned to the baseline of each character when displayed. @@ -44,34 +44,35 @@ public enum TextAlignment { /** * Specifies that all text in the parent object shall be * aligned to the bottom of each character when displayed. - */ - BOTTOM(4), - /** - * Specifies that all text in the parent object shall be - * aligned automatically when displayed. - */ - AUTO(5); - - private final int value; - - private TextAlignment(int val){ - value = val; - } - - public int getValue(){ - return value; - } - - private static Map imap = new HashMap(); - static{ - for (TextAlignment p : values()) { - imap.put(new Integer(p.getValue()), p); - } - } - - public static TextAlignment valueOf(int type){ - TextAlignment align = imap.get(new Integer(type)); - if(align == null) throw new IllegalArgumentException("Unknown text alignment: " + type); - return align; - } -} + */ + BOTTOM(4), + /** + * Specifies that all text in the parent object shall be + * aligned automatically when displayed. + */ + AUTO(5); + + private static Map imap = new HashMap(); + + static { + for (TextAlignment p : values()) { + imap.put(new Integer(p.getValue()), p); + } + } + + private final int value; + + private TextAlignment(int val) { + value = val; + } + + public static TextAlignment valueOf(int type) { + TextAlignment align = imap.get(new Integer(type)); + if (align == null) throw new IllegalArgumentException("Unknown text alignment: " + type); + return align; + } + + public int getValue() { + return value; + } +} diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/TextSegement.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/TextSegement.java index 23aa15808..44477daf8 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/TextSegement.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/TextSegement.java @@ -16,83 +16,84 @@ ==================================================================== */ package org.apache.poi.xwpf.usermodel; - -/** - * saves the begin and end position of a text in a Paragraph -*/ -public class TextSegement { - private PositionInParagraph beginPos; - private PositionInParagraph endPos; - - public TextSegement(){ - this.beginPos = new PositionInParagraph(); - this. endPos = new PositionInParagraph(); - } - - public TextSegement(int beginRun, int endRun, int beginText, int endText, int beginChar, int endChar){ - PositionInParagraph beginPos = new PositionInParagraph(beginRun, beginText, beginChar); - PositionInParagraph endPos = new PositionInParagraph(endRun, endText, endChar); - this.beginPos = beginPos; - this.endPos = endPos; - } - - public TextSegement(PositionInParagraph beginPos, PositionInParagraph endPos){ - this.beginPos = beginPos; - this.endPos = endPos; - } - - public PositionInParagraph getBeginPos(){ - return beginPos; - } - - public PositionInParagraph getEndPos(){ - return endPos; - } - - public int getBeginRun(){ - return beginPos.getRun(); - } - - public void setBeginRun(int beginRun){ - beginPos.setRun(beginRun); - } - - public int getBeginText(){ - return beginPos.getText(); - } - - public void setBeginText(int beginText){ - beginPos.setText(beginText); - } - - public int getBeginChar(){ - return beginPos.getChar(); - } - - public void setBeginChar(int beginChar){ - beginPos.setChar(beginChar); - } - public int getEndRun(){ - return endPos.getRun(); - } - - public void setEndRun(int endRun){ - endPos.setRun(endRun); - } - - public int getEndText(){ - return endPos.getText(); - } - - public void setEndText(int endText){ - endPos.setText(endText); - } - - public int getEndChar(){ - return endPos.getChar(); - } - - public void setEndChar(int endChar){ - endPos.setChar(endChar); - } -} + +/** + * saves the begin and end position of a text in a Paragraph + */ +public class TextSegement { + private PositionInParagraph beginPos; + private PositionInParagraph endPos; + + public TextSegement() { + this.beginPos = new PositionInParagraph(); + this.endPos = new PositionInParagraph(); + } + + public TextSegement(int beginRun, int endRun, int beginText, int endText, int beginChar, int endChar) { + PositionInParagraph beginPos = new PositionInParagraph(beginRun, beginText, beginChar); + PositionInParagraph endPos = new PositionInParagraph(endRun, endText, endChar); + this.beginPos = beginPos; + this.endPos = endPos; + } + + public TextSegement(PositionInParagraph beginPos, PositionInParagraph endPos) { + this.beginPos = beginPos; + this.endPos = endPos; + } + + public PositionInParagraph getBeginPos() { + return beginPos; + } + + public PositionInParagraph getEndPos() { + return endPos; + } + + public int getBeginRun() { + return beginPos.getRun(); + } + + public void setBeginRun(int beginRun) { + beginPos.setRun(beginRun); + } + + public int getBeginText() { + return beginPos.getText(); + } + + public void setBeginText(int beginText) { + beginPos.setText(beginText); + } + + public int getBeginChar() { + return beginPos.getChar(); + } + + public void setBeginChar(int beginChar) { + beginPos.setChar(beginChar); + } + + public int getEndRun() { + return endPos.getRun(); + } + + public void setEndRun(int endRun) { + endPos.setRun(endRun); + } + + public int getEndText() { + return endPos.getText(); + } + + public void setEndText(int endText) { + endPos.setText(endText); + } + + public int getEndChar() { + return endPos.getChar(); + } + + public void setEndChar(int endChar) { + endPos.setChar(endChar); + } +} diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/UnderlinePatterns.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/UnderlinePatterns.java index 578dec332..9272ac060 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/UnderlinePatterns.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/UnderlinePatterns.java @@ -19,13 +19,13 @@ package org.apache.poi.xwpf.usermodel; import java.util.HashMap; import java.util.Map; -/** - * Specifies the types of patterns which may be used to create the underline - * applied beneath the text in a run. - * - * @author Gisella Bronzetti - */ -public enum UnderlinePatterns { +/** + * Specifies the types of patterns which may be used to create the underline + * applied beneath the text in a run. + * + * @author Gisella Bronzetti + */ +public enum UnderlinePatterns { /** * Specifies an underline consisting of a single line beneath all characters @@ -132,31 +132,32 @@ public enum UnderlinePatterns { /** * Specifies no underline beneath this run. - */ - NONE(18); - - private final int value; - - private UnderlinePatterns(int val) { - value = val; - } - - public int getValue() { - return value; - } - - private static Map imap = new HashMap(); - static { - for (UnderlinePatterns p : values()) { - imap.put(new Integer(p.getValue()), p); - } - } - - public static UnderlinePatterns valueOf(int type) { - UnderlinePatterns align = imap.get(new Integer(type)); - if (align == null) - throw new IllegalArgumentException("Unknown underline pattern: " - + type); - return align; - } -} + */ + NONE(18); + + private static Map imap = new HashMap(); + + static { + for (UnderlinePatterns p : values()) { + imap.put(new Integer(p.getValue()), p); + } + } + + private final int value; + + private UnderlinePatterns(int val) { + value = val; + } + + public static UnderlinePatterns valueOf(int type) { + UnderlinePatterns align = imap.get(new Integer(type)); + if (align == null) + throw new IllegalArgumentException("Unknown underline pattern: " + + type); + return align; + } + + public int getValue() { + return value; + } +} diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/VerticalAlign.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/VerticalAlign.java index 84ff62858..4114c1100 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/VerticalAlign.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/VerticalAlign.java @@ -21,13 +21,13 @@ import java.util.Map; /** * Specifies possible values for the alignment of the contents of this run in - * relation to the default appearance of the run's text. This allows the text to - * be repositioned as subscript or superscript without altering the font size of - * the run properties. - * - * @author Gisella Bronzetti - */ -public enum VerticalAlign { + * relation to the default appearance of the run's text. This allows the text to + * be repositioned as subscript or superscript without altering the font size of + * the run properties. + * + * @author Gisella Bronzetti + */ +public enum VerticalAlign { /** * Specifies that the text in the parent run shall be located at the @@ -44,31 +44,32 @@ public enum VerticalAlign { * Specifies that this text should be superscript. This setting shall raise * the text in this run above the baseline and change it to a smaller size, * if a smaller size is available. - */ - SUBSCRIPT(3); - - private final int value; - - private VerticalAlign(int val) { - value = val; - } - - public int getValue() { - return value; - } - - private static Map imap = new HashMap(); - static { - for (VerticalAlign p : values()) { - imap.put(new Integer(p.getValue()), p); - } - } - - public static VerticalAlign valueOf(int type) { - VerticalAlign align = imap.get(new Integer(type)); - if (align == null) - throw new IllegalArgumentException("Unknown vertical alignment: " - + type); - return align; - } -} + */ + SUBSCRIPT(3); + + private static Map imap = new HashMap(); + + static { + for (VerticalAlign p : values()) { + imap.put(new Integer(p.getValue()), p); + } + } + + private final int value; + + private VerticalAlign(int val) { + value = val; + } + + public static VerticalAlign valueOf(int type) { + VerticalAlign align = imap.get(new Integer(type)); + if (align == null) + throw new IllegalArgumentException("Unknown vertical alignment: " + + type); + return align; + } + + public int getValue() { + return value; + } +} diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFAbstractNum.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFAbstractNum.java index 12d2d3a02..8d4886b90 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFAbstractNum.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFAbstractNum.java @@ -18,42 +18,43 @@ package org.apache.poi.xwpf.usermodel; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTAbstractNum; - -/** - * @author Philipp Epp - * - */ -public class XWPFAbstractNum { - private CTAbstractNum ctAbstractNum; - protected XWPFNumbering numbering; - - protected XWPFAbstractNum() { - this.ctAbstractNum = null; - this.numbering = null; - - } - public XWPFAbstractNum(CTAbstractNum abstractNum){ - this.ctAbstractNum = abstractNum; - } - - public XWPFAbstractNum(CTAbstractNum ctAbstractNum, XWPFNumbering numbering){ - this.ctAbstractNum = ctAbstractNum; - this.numbering = numbering; - } - public CTAbstractNum getAbstractNum(){ - return ctAbstractNum; - } - - public XWPFNumbering getNumbering(){ - return numbering; - } - - public CTAbstractNum getCTAbstractNum(){ - return ctAbstractNum; - } - - public void setNumbering(XWPFNumbering numbering){ - this.numbering = numbering; - } - -} + +/** + * @author Philipp Epp + */ +public class XWPFAbstractNum { + protected XWPFNumbering numbering; + private CTAbstractNum ctAbstractNum; + + protected XWPFAbstractNum() { + this.ctAbstractNum = null; + this.numbering = null; + + } + + public XWPFAbstractNum(CTAbstractNum abstractNum) { + this.ctAbstractNum = abstractNum; + } + + public XWPFAbstractNum(CTAbstractNum ctAbstractNum, XWPFNumbering numbering) { + this.ctAbstractNum = ctAbstractNum; + this.numbering = numbering; + } + + public CTAbstractNum getAbstractNum() { + return ctAbstractNum; + } + + public XWPFNumbering getNumbering() { + return numbering; + } + + public void setNumbering(XWPFNumbering numbering) { + this.numbering = numbering; + } + + public CTAbstractNum getCTAbstractNum() { + return ctAbstractNum; + } + +} diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFComment.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFComment.java index 84ebc36bb..627971b34 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFComment.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFComment.java @@ -21,42 +21,35 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP; /** * Sketch of XWPF comment class - * -* @author Yury Batrakov (batrakov at gmail.com) - * + * + * @author Yury Batrakov (batrakov at gmail.com) */ -public class XWPFComment -{ +public class XWPFComment { protected String id; protected String author; protected StringBuffer text; - + @SuppressWarnings("deprecation") - public XWPFComment(CTComment comment, XWPFDocument document) - { + public XWPFComment(CTComment comment, XWPFDocument document) { text = new StringBuffer(); id = comment.getId().toString(); author = comment.getAuthor(); - - for(CTP ctp : comment.getPArray()) - { + + for (CTP ctp : comment.getPArray()) { XWPFParagraph p = new XWPFParagraph(ctp, document); text.append(p.getText()); } } - - public String getId() - { + + public String getId() { return id; } - - public String getAuthor() - { + + public String getAuthor() { return author; } - - public String getText() - { + + public String getText() { return text.toString(); } } diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultParagraphStyle.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultParagraphStyle.java index 9d16e26da..a430c87e5 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultParagraphStyle.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultParagraphStyle.java @@ -22,21 +22,21 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPPr; /** * Default Paragraph style, from which other styles will override * TODO Share logic with {@link XWPFParagraph} which also uses CTPPr - */ -public class XWPFDefaultParagraphStyle { - private CTPPr ppr; - - public XWPFDefaultParagraphStyle(CTPPr ppr) { - this.ppr = ppr; - } - - protected CTPPr getPPr() { - return ppr; - } - - public int getSpacingAfter() { - if (ppr.isSetSpacing()) - return ppr.getSpacing().getAfter().intValue(); + */ +public class XWPFDefaultParagraphStyle { + private CTPPr ppr; + + public XWPFDefaultParagraphStyle(CTPPr ppr) { + this.ppr = ppr; + } + + protected CTPPr getPPr() { + return ppr; + } + + public int getSpacingAfter() { + if (ppr.isSetSpacing()) + return ppr.getSpacing().getAfter().intValue(); return -1; } } diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java index 210a95163..459335de6 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java @@ -22,21 +22,21 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr; /** * Default Character Run style, from which other styles will override * TODO Share logic with {@link XWPFRun} which also uses CTRPr - */ -public class XWPFDefaultRunStyle { - private CTRPr rpr; - - public XWPFDefaultRunStyle(CTRPr rpr) { - this.rpr = rpr; - } - - protected CTRPr getRPr() { - return rpr; - } - - public int getFontSize() { - if (rpr.isSetSz()) - return rpr.getSz().getVal().intValue() / 2; + */ +public class XWPFDefaultRunStyle { + private CTRPr rpr; + + public XWPFDefaultRunStyle(CTRPr rpr) { + this.rpr = rpr; + } + + protected CTRPr getRPr() { + return rpr; + } + + public int getFontSize() { + if (rpr.isSetSz()) + return rpr.getSz().getVal().intValue() / 2; return -1; } } diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java index 6a28db2a8..9eabdebc8 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java @@ -76,23 +76,17 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.StylesDocument; /** *

    High(ish) level class for working with .docx files.

    - * + *

    *

    This class tries to hide some of the complexity - * of the underlying file format, but as it's not a - * mature and stable API yet, certain parts of the - * XML structure come through. You'll therefore almost - * certainly need to refer to the OOXML specifications - * from - * http://www.ecma-international.org/publications/standards/Ecma-376.htm - * at some point in your use.

    + * of the underlying file format, but as it's not a + * mature and stable API yet, certain parts of the + * XML structure come through. You'll therefore almost + * certainly need to refer to the OOXML specifications + * from + * http://www.ecma-international.org/publications/standards/Ecma-376.htm + * at some point in your use.

    */ public class XWPFDocument extends POIXMLDocument implements Document, IBody { - private CTDocument1 ctDocument; - private XWPFSettings settings; - /** - * Keeps track on all id-values used in this document and included parts, like headers, footers, etc. - */ - private IdentifierManager drawingIdManager = new IdentifierManager(0L,4294967295L); protected List footers = new ArrayList(); protected List headers = new ArrayList(); protected List comments = new ArrayList(); @@ -107,8 +101,15 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { protected XWPFNumbering numbering; protected XWPFStyles styles; protected XWPFFootnotes footnotes; - - /** Handles the joy of different headers/footers for different pages */ + private CTDocument1 ctDocument; + private XWPFSettings settings; + /** + * Keeps track on all id-values used in this document and included parts, like headers, footers, etc. + */ + private IdentifierManager drawingIdManager = new IdentifierManager(0L, 4294967295L); + /** + * Handles the joy of different headers/footers for different pages + */ private XWPFHeaderFooterPolicy headerFooterPolicy; public XWPFDocument(OPCPackage pkg) throws IOException { @@ -125,11 +126,32 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { load(XWPFFactory.getInstance()); } - public XWPFDocument(){ + public XWPFDocument() { super(newPackage()); onDocumentCreate(); } + /** + * Create a new WordProcessingML package and setup the default minimal content + */ + protected static OPCPackage newPackage() { + try { + OPCPackage pkg = OPCPackage.create(new ByteArrayOutputStream()); + // Main part + PackagePartName corePartName = PackagingURIHelper.createPartName(XWPFRelation.DOCUMENT.getDefaultFileName()); + // Create main part relationship + pkg.addRelationship(corePartName, TargetMode.INTERNAL, PackageRelationshipTypes.CORE_DOCUMENT); + // Create main document part + pkg.createPart(corePartName, XWPFRelation.DOCUMENT.getContentType()); + + pkg.getPackageProperties().setCreatorProperty(DOCUMENT_CREATOR); + + return pkg; + } catch (Exception e) { + throw new POIXMLException(e); + } + } + @Override protected void onDocumentRead() throws IOException { try { @@ -152,11 +174,11 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { XWPFTable t = new XWPFTable((CTTbl) o, this); bodyElements.add(t); tables.add(t); - } else if (o instanceof CTSdtBlock){ - XWPFSDT c = new XWPFSDT((CTSdtBlock)o, this); - bodyElements.add(c); - contentControls.add(c); - } + } else if (o instanceof CTSdtBlock) { + XWPFSDT c = new XWPFSDT((CTSdtBlock) o, this); + bodyElements.add(c); + contentControls.add(c); + } } cursor.dispose(); @@ -205,7 +227,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { Method onDocumentRead = gp.getClass().getDeclaredMethod("onDocumentRead"); onDocumentRead.setAccessible(true); onDocumentRead.invoke(gp); - } catch(Exception e) { + } catch (Exception e) { throw new POIXMLException(e); } } @@ -217,59 +239,38 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { } } - private void initHyperlinks(){ + private void initHyperlinks() { // Get the hyperlinks // TODO: make me optional/separated in private function try { Iterator relIter = getPackagePart().getRelationshipsByType(XWPFRelation.HYPERLINK.getRelation()).iterator(); - while(relIter.hasNext()) { + while (relIter.hasNext()) { PackageRelationship rel = relIter.next(); hyperlinks.add(new XWPFHyperlink(rel.getId(), rel.getTargetURI().toString())); } - } catch (InvalidFormatException e){ + } catch (InvalidFormatException e) { throw new POIXMLException(e); } } @SuppressWarnings("deprecation") private void initFootnotes() throws XmlException, IOException { - for(POIXMLDocumentPart p : getRelations()){ + for (POIXMLDocumentPart p : getRelations()) { String relation = p.getPackageRelationship().getRelationshipType(); if (relation.equals(XWPFRelation.FOOTNOTE.getRelation())) { - this.footnotes = (XWPFFootnotes)p; + this.footnotes = (XWPFFootnotes) p; this.footnotes.onDocumentRead(); - } else if (relation.equals(XWPFRelation.ENDNOTE.getRelation())){ + } else if (relation.equals(XWPFRelation.ENDNOTE.getRelation())) { EndnotesDocument endnotesDocument = EndnotesDocument.Factory.parse(p.getPackagePart().getInputStream()); - for(CTFtnEdn ctFtnEdn : endnotesDocument.getEndnotes().getEndnoteArray()) { + for (CTFtnEdn ctFtnEdn : endnotesDocument.getEndnotes().getEndnoteArray()) { endnotes.put(ctFtnEdn.getId().intValue(), new XWPFFootnote(this, ctFtnEdn)); } } } } - /** - * Create a new WordProcessingML package and setup the default minimal content - */ - protected static OPCPackage newPackage() { - try { - OPCPackage pkg = OPCPackage.create(new ByteArrayOutputStream()); - // Main part - PackagePartName corePartName = PackagingURIHelper.createPartName(XWPFRelation.DOCUMENT.getDefaultFileName()); - // Create main part relationship - pkg.addRelationship(corePartName, TargetMode.INTERNAL, PackageRelationshipTypes.CORE_DOCUMENT); - // Create main document part - pkg.createPart(corePartName, XWPFRelation.DOCUMENT.getContentType()); - - pkg.getPackageProperties().setCreatorProperty(DOCUMENT_CREATOR); - - return pkg; - } catch (Exception e){ - throw new POIXMLException(e); - } - } - /** * Create a new CTWorkbook with all values set to default */ @@ -278,7 +279,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { ctDocument = CTDocument1.Factory.newInstance(); ctDocument.addNewBody(); - settings = (XWPFSettings) createRelationship(XWPFRelation.SETTINGS,XWPFFactory.getInstance()); + settings = (XWPFSettings) createRelationship(XWPFRelation.SETTINGS, XWPFFactory.getInstance()); POIXMLProperties.ExtendedProperties expProps = getProperties().getExtendedProperties(); expProps.getUnderlyingProperties().setApplication(DOCUMENT_CREATOR); @@ -298,6 +299,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { /** * returns an Iterator with paragraphs and tables + * * @see org.apache.poi.xwpf.usermodel.IBody#getBodyElements() */ @Override @@ -313,7 +315,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { * @see org.apache.poi.xwpf.usermodel.IBody#getParagraphs() */ @Override - public List getParagraphs(){ + public List getParagraphs() { return Collections.unmodifiableList(paragraphs); } @@ -321,7 +323,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { * @see org.apache.poi.xwpf.usermodel.IBody#getTables() */ @Override - public List getTables(){ + public List getTables() { return Collections.unmodifiableList(tables); } @@ -330,37 +332,35 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { */ @Override public XWPFTable getTableArray(int pos) { - if (pos > 0 && pos < tables.size()){ + if (pos > 0 && pos < tables.size()) { return tables.get(pos); } return null; } /** - * - * @return the list of footers + * @return the list of footers */ - public List getFooterList(){ + public List getFooterList() { return Collections.unmodifiableList(footers); } - public XWPFFooter getFooterArray(int pos){ + public XWPFFooter getFooterArray(int pos) { return footers.get(pos); } /** - * - * @return the list of headers + * @return the list of headers */ - public List getHeaderList(){ + public List getHeaderList() { return Collections.unmodifiableList(headers); } - public XWPFHeader getHeaderArray(int pos){ + public XWPFHeader getHeaderArray(int pos) { return headers.get(pos); } - public String getTblStyle(XWPFTable table){ + public String getTblStyle(XWPFTable table) { return table.getStyleID(); } @@ -374,17 +374,17 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { } public XWPFFootnote getFootnoteByID(int id) { - if(footnotes == null) return null; + if (footnotes == null) return null; return footnotes.getFootnoteById(id); } public XWPFFootnote getEndnoteByID(int id) { - if(endnotes == null) return null; + if (endnotes == null) return null; return endnotes.get(id); } public List getFootnotes() { - if(footnotes == null) { + if (footnotes == null) { return Collections.emptyList(); } return footnotes.getFootnotesList(); @@ -409,7 +409,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { /** * Get the document part that's defined as the - * given relationship of the core document. + * given relationship of the core document. */ public PackagePart getPartById(String id) { try { @@ -422,7 +422,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { /** * Returns the policy on headers and footers, which - * also provides a way to get at them. + * also provides a way to get at them. */ public XWPFHeaderFooterPolicy getHeaderFooterPolicy() { return headerFooterPolicy; @@ -436,10 +436,10 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { PackagePart[] parts; try { parts = getRelatedByType(XWPFRelation.STYLES.getRelation()); - } catch(InvalidFormatException e) { + } catch (InvalidFormatException e) { throw new IllegalStateException(e); } - if(parts.length != 1) { + if (parts.length != 1) { throw new IllegalStateException("Expecting one Styles document part, but found " + parts.length); } @@ -471,57 +471,56 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { * Finds that for example the 2nd entry in the body list is the 1st paragraph */ private int getBodyElementSpecificPos(int pos, List list) { - // If there's nothing to find, skip it - if(list.size() == 0) { - return -1; - } + // If there's nothing to find, skip it + if (list.size() == 0) { + return -1; + } - if(pos >= 0 && pos < bodyElements.size()) { - // Ensure the type is correct - IBodyElement needle = bodyElements.get(pos); - if(needle.getElementType() != list.get(0).getElementType()) { - // Wrong type - return -1; - } + if (pos >= 0 && pos < bodyElements.size()) { + // Ensure the type is correct + IBodyElement needle = bodyElements.get(pos); + if (needle.getElementType() != list.get(0).getElementType()) { + // Wrong type + return -1; + } - // Work back until we find it - int startPos = Math.min(pos, list.size()-1); - for(int i=startPos; i>=0; i--) { - if(list.get(i) == needle) { - return i; - } - } - } + // Work back until we find it + int startPos = Math.min(pos, list.size() - 1); + for (int i = startPos; i >= 0; i--) { + if (list.get(i) == needle) { + return i; + } + } + } - // Couldn't be found - return -1; + // Couldn't be found + return -1; } - + /** * Look up the paragraph at the specified position in the body elements list * and return this paragraphs position in the paragraphs list - * - * @param pos - * The position of the relevant paragraph in the body elements + * + * @param pos The position of the relevant paragraph in the body elements * list * @return the position of the paragraph in the paragraphs list, if there is - * a paragraph at the position in the bodyelements list. Else it - * will return -1 - * + * a paragraph at the position in the bodyelements list. Else it + * will return -1 */ public int getParagraphPos(int pos) { - return getBodyElementSpecificPos(pos, paragraphs); + return getBodyElementSpecificPos(pos, paragraphs); } /** - * get with the position of a table in the bodyelement array list + * get with the position of a table in the bodyelement array list * the position of this table in the table array list + * * @param pos position of the table in the bodyelement array list * @return if there is a table at the position in the bodyelement array list, - * else it will return null. + * else it will return null. */ public int getTablePos(int pos) { - return getBodyElementSpecificPos(pos, tables); + return getBodyElementSpecificPos(pos, tables); } /** @@ -530,10 +529,10 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { * of the documents body. When this method is done, the cursor passed as * parameter points to the {@link org.apache.xmlbeans.XmlCursor.TokenType#END} * of the newly inserted paragraph. - * + * * @param cursor * @return the {@link XWPFParagraph} object representing the newly inserted - * CTP object + * CTP object */ @Override public XWPFParagraph insertNewParagraph(XmlCursor cursor) { @@ -635,8 +634,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { cursor.toCursor(tableCursor); cursor.toEndToken(); return newT; - } - finally { + } finally { tableCursor.dispose(); } } @@ -645,6 +643,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { /** * verifies that cursor is on the right position + * * @param cursor */ private boolean isCursorInBody(XmlCursor cursor) { @@ -659,11 +658,11 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { private int getPosOfBodyElement(IBodyElement needle) { BodyElementType type = needle.getElementType(); - IBodyElement current; - for(int i=0; i relations = getRelations(); int i = 1; - for (Iterator it = relations.iterator(); it.hasNext() ; ) { - POIXMLDocumentPart item = it.next(); - if (item.getPackageRelationship().getRelationshipType().equals(relation.getRelation())) { - i++; - } + for (Iterator it = relations.iterator(); it.hasNext(); ) { + POIXMLDocumentPart item = it.next(); + if (item.getPackageRelationship().getRelationshipType().equals(relation.getRelation())) { + i++; + } } return i; } /** * Appends a new paragraph to this document + * * @return a new paragraph */ public XWPFParagraph createParagraph() { @@ -746,16 +749,17 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { /** * Creates an empty numbering if one does not already exist and sets the numbering member + * * @return numbering */ public XWPFNumbering createNumbering() { - if(numbering == null) { + if (numbering == null) { NumberingDocument numberingDoc = NumberingDocument.Factory.newInstance(); XWPFRelation relation = XWPFRelation.NUMBERING; int i = getRelationIndex(relation); - XWPFNumbering wrapper = (XWPFNumbering)createRelationship(relation, XWPFFactory.getInstance(), i); + XWPFNumbering wrapper = (XWPFNumbering) createRelationship(relation, XWPFFactory.getInstance(), i); wrapper.setNumbering(numberingDoc.addNewNumbering()); numbering = wrapper; } @@ -765,61 +769,64 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { /** * Creates an empty styles for the document if one does not already exist + * * @return styles */ public XWPFStyles createStyles() { - if(styles == null) { - StylesDocument stylesDoc = StylesDocument.Factory.newInstance(); + if (styles == null) { + StylesDocument stylesDoc = StylesDocument.Factory.newInstance(); - XWPFRelation relation = XWPFRelation.STYLES; - int i = getRelationIndex(relation); + XWPFRelation relation = XWPFRelation.STYLES; + int i = getRelationIndex(relation); - XWPFStyles wrapper = (XWPFStyles)createRelationship(relation, XWPFFactory.getInstance(), i); - wrapper.setStyles(stylesDoc.addNewStyles()); - styles = wrapper; - } + XWPFStyles wrapper = (XWPFStyles) createRelationship(relation, XWPFFactory.getInstance(), i); + wrapper.setStyles(stylesDoc.addNewStyles()); + styles = wrapper; + } - return styles; + return styles; } /** * Creates an empty footnotes element for the document if one does not already exist + * * @return footnotes */ public XWPFFootnotes createFootnotes() { - if(footnotes == null) { - FootnotesDocument footnotesDoc = FootnotesDocument.Factory.newInstance(); + if (footnotes == null) { + FootnotesDocument footnotesDoc = FootnotesDocument.Factory.newInstance(); - XWPFRelation relation = XWPFRelation.FOOTNOTE; - int i = getRelationIndex(relation); + XWPFRelation relation = XWPFRelation.FOOTNOTE; + int i = getRelationIndex(relation); - XWPFFootnotes wrapper = (XWPFFootnotes)createRelationship(relation, XWPFFactory.getInstance(), i); - wrapper.setFootnotes(footnotesDoc.addNewFootnotes()); - footnotes = wrapper; - } + XWPFFootnotes wrapper = (XWPFFootnotes) createRelationship(relation, XWPFFactory.getInstance(), i); + wrapper.setFootnotes(footnotesDoc.addNewFootnotes()); + footnotes = wrapper; + } - return footnotes; + return footnotes; } public XWPFFootnote addFootnote(CTFtnEdn note) { - return footnotes.addFootnote(note); + return footnotes.addFootnote(note); } public XWPFFootnote addEndnote(CTFtnEdn note) { - XWPFFootnote endnote = new XWPFFootnote(this, note); - endnotes.put(note.getId().intValue(), endnote); - return endnote; + XWPFFootnote endnote = new XWPFFootnote(this, note); + endnotes.put(note.getId().intValue(), endnote); + return endnote; } /** - * remove a BodyElement from bodyElements array list + * remove a BodyElement from bodyElements array list + * * @param pos * @return true if removing was successfully, else return false */ public boolean removeBodyElement(int pos) { if (pos >= 0 && pos < bodyElements.size()) { - BodyElementType type = bodyElements.get(pos).getElementType(); - if (type == BodyElementType.TABLE){ + BodyElementType type = bodyElements.get(pos).getElementType(); + if (type == BodyElementType.TABLE) { int tablePos = getTablePos(pos); tables.remove(tablePos); ctDocument.getBody().removeTbl(tablePos); @@ -830,13 +837,14 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { ctDocument.getBody().removeP(paraPos); } bodyElements.remove(pos); - return true; + return true; } return false; } /** * copies content of a paragraph to a existing paragraph in the list paragraphs at position pos + * * @param paragraph * @param pos */ @@ -859,6 +867,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { /** * Create an empty table with one row and one column as default. + * * @return a new table */ public XWPFTable createTable() { @@ -870,19 +879,20 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { /** * Create an empty table with a number of rows and cols specified + * * @param rows * @param cols * @return table */ public XWPFTable createTable(int rows, int cols) { - XWPFTable table = new XWPFTable(ctDocument.getBody().addNewTbl(), this, rows, cols); - bodyElements.add(table); - tables.add(table); - return table; + XWPFTable table = new XWPFTable(ctDocument.getBody().addNewTbl(), this, rows, cols); + bodyElements.add(table); + tables.add(table); + return table; } /** - * + * */ public void createTOC() { CTSdtBlock block = this.getDocument().getBody().addNewSdt(); @@ -900,7 +910,9 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { } } - /**Replace content of table in array tables at position pos with a + /** + * Replace content of table in array tables at position pos with a + * * @param pos * @param table */ @@ -919,7 +931,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { * <w:settings ... > * <w:documentProtection w:edit="readOnly" w:enforcement="1"/> * - * + * * @return true if documentProtection is enforced with option readOnly */ public boolean isEnforcedReadonlyProtection() { @@ -936,7 +948,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { * <w:settings ... > * <w:documentProtection w:edit="forms" w:enforcement="1"/> * - * + * * @return true if documentProtection is enforced with option forms */ public boolean isEnforcedFillingFormsProtection() { @@ -953,7 +965,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { * <w:settings ... > * <w:documentProtection w:edit="comments" w:enforcement="1"/> * - * + * * @return true if documentProtection is enforced with option comments */ public boolean isEnforcedCommentsProtection() { @@ -970,7 +982,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { * <w:settings ... > * <w:documentProtection w:edit="trackedChanges" w:enforcement="1"/> * - * + * * @return true if documentProtection is enforced with option trackedChanges */ public boolean isEnforcedTrackedChangesProtection() { @@ -1002,21 +1014,21 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { *
    * sample snippet from settings.xml *
    -     *   <w:documentProtection w:edit="readOnly" w:enforcement="1" 
    +     *   <w:documentProtection w:edit="readOnly" w:enforcement="1"
          *       w:cryptProviderType="rsaAES" w:cryptAlgorithmClass="hash"
          *       w:cryptAlgorithmType="typeAny" w:cryptAlgorithmSid="14"
          *       w:cryptSpinCount="100000" w:hash="..." w:salt="...."
          *   />
          * 
    - * + * * @param password the plaintext password, if null no password will be applied * @param hashAlgo the hash algorithm - only md2, m5, sha1, sha256, sha384 and sha512 are supported. - * if null, it will default default to sha1 + * if null, it will default default to sha1 */ public void enforceReadonlyProtection(String password, HashAlgorithm hashAlgo) { settings.setEnforcementEditValue(STDocProtect.READ_ONLY, password, hashAlgo); } - + /** * Enforce the Filling Forms protection.
    * In the documentProtection tag inside settings.xml file,
    @@ -1038,21 +1050,21 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { *
    * sample snippet from settings.xml *
    -     *   <w:documentProtection w:edit="forms" w:enforcement="1" 
    +     *   <w:documentProtection w:edit="forms" w:enforcement="1"
          *       w:cryptProviderType="rsaAES" w:cryptAlgorithmClass="hash"
          *       w:cryptAlgorithmType="typeAny" w:cryptAlgorithmSid="14"
          *       w:cryptSpinCount="100000" w:hash="..." w:salt="...."
          *   />
          * 
    - * + * * @param password the plaintext password, if null no password will be applied * @param hashAlgo the hash algorithm - only md2, m5, sha1, sha256, sha384 and sha512 are supported. - * if null, it will default default to sha1 + * if null, it will default default to sha1 */ public void enforceFillingFormsProtection(String password, HashAlgorithm hashAlgo) { settings.setEnforcementEditValue(STDocProtect.FORMS, password, hashAlgo); } - + /** * Enforce the Comments protection.
    * In the documentProtection tag inside settings.xml file,
    @@ -1074,21 +1086,21 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { *
    * sample snippet from settings.xml *
    -     *   <w:documentProtection w:edit="comments" w:enforcement="1" 
    +     *   <w:documentProtection w:edit="comments" w:enforcement="1"
          *       w:cryptProviderType="rsaAES" w:cryptAlgorithmClass="hash"
          *       w:cryptAlgorithmType="typeAny" w:cryptAlgorithmSid="14"
          *       w:cryptSpinCount="100000" w:hash="..." w:salt="...."
          *   />
          * 
    - * + * * @param password the plaintext password, if null no password will be applied * @param hashAlgo the hash algorithm - only md2, m5, sha1, sha256, sha384 and sha512 are supported. - * if null, it will default default to sha1 + * if null, it will default default to sha1 */ public void enforceCommentsProtection(String password, HashAlgorithm hashAlgo) { settings.setEnforcementEditValue(STDocProtect.COMMENTS, password, hashAlgo); } - + /** * Enforce the Tracked Changes protection.
    * In the documentProtection tag inside settings.xml file,
    @@ -1110,16 +1122,16 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { *
    * sample snippet from settings.xml *
    -     *   <w:documentProtection w:edit="trackedChanges" w:enforcement="1" 
    +     *   <w:documentProtection w:edit="trackedChanges" w:enforcement="1"
          *       w:cryptProviderType="rsaAES" w:cryptAlgorithmClass="hash"
          *       w:cryptAlgorithmType="typeAny" w:cryptAlgorithmSid="14"
          *       w:cryptSpinCount="100000" w:hash="..." w:salt="...."
          *   />
          * 
    - * + * * @param password the plaintext password, if null no password will be applied * @param hashAlgo the hash algorithm - only md2, m5, sha1, sha256, sha384 and sha512 are supported. - * if null, it will default default to sha1 + * if null, it will default default to sha1 */ public void enforceTrackedChangesProtection(String password, HashAlgorithm hashAlgo) { settings.setEnforcementEditValue(STDocProtect.TRACKED_CHANGES, password, hashAlgo); @@ -1134,7 +1146,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { public boolean validateProtectionPassword(String password) { return settings.validateProtectionPassword(password); } - + /** * Remove protection enforcement.
    * In the documentProtection tag inside settings.xml file
    @@ -1148,38 +1160,39 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { * Enforces fields update on document open (in Word). * In the settings.xml file
    * sets the updateSettings value to true (w:updateSettings w:val="true") - * - * NOTICES: - *
      - *
    • Causing Word to ask on open: "This document contains fields that may refer to other files. Do you want to update the fields in this document?" - * (if "Update automatic links at open" is enabled)
    • - *
    • Flag is removed after saving with changes in Word
    • - *
    + *

    + * NOTICES: + *

      + *
    • Causing Word to ask on open: "This document contains fields that may refer to other files. Do you want to update the fields in this document?" + * (if "Update automatic links at open" is enabled)
    • + *
    • Flag is removed after saving with changes in Word
    • + *
    */ public void enforceUpdateFields() { settings.setUpdateFields(); } - + /** - * Check if revision tracking is turned on. - * - * @return true if revision tracking is turned on - */ - public boolean isTrackRevisions() { - return settings.isTrackRevisions(); - } - - /** - * Enable or disable revision tracking. - * - * @param enable true to turn on revision tracking, false to turn off revision tracking - */ - public void setTrackRevisions(boolean enable) { - settings.setTrackRevisions(enable); - } + * Check if revision tracking is turned on. + * + * @return true if revision tracking is turned on + */ + public boolean isTrackRevisions() { + return settings.isTrackRevisions(); + } + + /** + * Enable or disable revision tracking. + * + * @param enable true to turn on revision tracking, false to turn off revision tracking + */ + public void setTrackRevisions(boolean enable) { + settings.setTrackRevisions(enable); + } /** * inserts an existing XWPFTable to the arrays bodyElements and tables + * * @param pos * @param table */ @@ -1199,6 +1212,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { /** * Returns all Pictures, which are referenced from the document itself. + * * @return a {@link List} of {@link XWPFPictureData}. The returned {@link List} is unmodifiable. Use #a */ public List getAllPictures() { @@ -1223,14 +1237,12 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { list = new ArrayList(1); packagePictures.put(picData.getChecksum(), list); } - if (!list.contains(picData)) - { + if (!list.contains(picData)) { list.add(picData); } } - - XWPFPictureData findPackagePictureData(byte[] pictureData, int format) - { + + XWPFPictureData findPackagePictureData(byte[] pictureData, int format) { long checksum = IOUtils.calculateChecksum(pictureData); XWPFPictureData xwpfPicData = null; /* @@ -1246,20 +1258,18 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { xwpfPicData = curElem; } } - } + } return xwpfPicData; } - public String addPictureData(byte[] pictureData,int format) throws InvalidFormatException - { + public String addPictureData(byte[] pictureData, int format) throws InvalidFormatException { XWPFPictureData xwpfPicData = findPackagePictureData(pictureData, format); POIXMLRelation relDesc = XWPFPictureData.RELATIONS[format]; - - if (xwpfPicData == null) - { + + if (xwpfPicData == null) { /* Part doesn't exist, create a new one */ int idx = getNextPicNameNumber(format); - xwpfPicData = (XWPFPictureData) createRelationship(relDesc, XWPFFactory.getInstance(),idx); + xwpfPicData = (XWPFPictureData) createRelationship(relDesc, XWPFFactory.getInstance(), idx); /* write bytes to new part */ PackagePart picDataPart = xwpfPicData.getPackagePart(); OutputStream out = null; @@ -1278,11 +1288,9 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { registerPackagePictureData(xwpfPicData); pictures.add(xwpfPicData); - + return getRelationId(xwpfPicData); - } - else if (!getRelations().contains(xwpfPicData)) - { + } else if (!getRelations().contains(xwpfPicData)) { /* * Part already existed, but was not related so far. Create * relationship to the already existing part and update @@ -1293,21 +1301,18 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { TargetMode targetMode = TargetMode.INTERNAL; PackagePartName partName = picDataPart.getPartName(); String relation = relDesc.getRelation(); - PackageRelationship relShip = getPackagePart().addRelationship(partName,targetMode,relation); + PackageRelationship relShip = getPackagePart().addRelationship(partName, targetMode, relation); String id = relShip.getId(); - addRelation(id,xwpfPicData); + addRelation(id, xwpfPicData); pictures.add(xwpfPicData); return id; - } - else - { + } else { /* Part already existed, get relation id and return it */ return getRelationId(xwpfPicData); } } - - public String addPictureData(InputStream is,int format) throws InvalidFormatException - { + + public String addPictureData(InputStream is, int format) throws InvalidFormatException { try { byte[] data = IOUtils.toByteArray(is); return addPictureData(data, format); @@ -1318,9 +1323,10 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { /** * get the next free ImageNumber + * * @param format * @return the next free ImageNumber - * @throws InvalidFormatException + * @throws InvalidFormatException */ public int getNextPicNameNumber(int format) throws InvalidFormatException { int img = getAllPackagePictures().size() + 1; @@ -1336,6 +1342,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { /** * returns the PictureData by blipID + * * @param blipID * @return XWPFPictureData of a specificID */ @@ -1350,6 +1357,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { /** * getNumbering + * * @return numbering */ public XWPFNumbering getNumbering() { @@ -1358,6 +1366,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { /** * get Styles + * * @return styles for this document */ public XWPFStyles getStyles() { @@ -1366,7 +1375,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { /** * get the paragraph with the CTP class p - * + * * @param p * @return the paragraph with the CTP class p */ @@ -1382,9 +1391,10 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { /** * get a table by its CTTbl-Object + * * @param ctTbl - * @see org.apache.poi.xwpf.usermodel.IBody#getTable(org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl) * @return a table by its CTTbl-Object or null + * @see org.apache.poi.xwpf.usermodel.IBody#getTable(org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl) */ @Override public XWPFTable getTable(CTTbl ctTbl) { @@ -1406,6 +1416,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { /** * Returns the paragraph that of position pos + * * @see org.apache.poi.xwpf.usermodel.IBody#getParagraphArray(int) */ @Override @@ -1420,6 +1431,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { * returns the Part, to which the body belongs, which you need for adding relationship to other parts * Actually it is needed of the class XWPFTableCell. Because you have to know to which part the tableCell * belongs. + * * @see org.apache.poi.xwpf.usermodel.IBody#getPart() */ @Override @@ -1441,6 +1453,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { /** * get the TableCell which belongs to the TableCell + * * @param cell */ @Override @@ -1448,19 +1461,19 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { XmlCursor cursor = cell.newCursor(); cursor.toParent(); XmlObject o = cursor.getObject(); - if(!(o instanceof CTRow)){ + if (!(o instanceof CTRow)) { return null; } - CTRow row = (CTRow)o; + CTRow row = (CTRow) o; cursor.toParent(); o = cursor.getObject(); cursor.dispose(); - if(! (o instanceof CTTbl)){ + if (!(o instanceof CTTbl)) { return null; } CTTbl tbl = (CTTbl) o; XWPFTable table = getTable(tbl); - if(table == null){ + if (table == null) { return null; } XWPFTableRow tableRow = table.getRow(row); diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFactory.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFactory.java index c6b2c2d3e..4fb02ce9b 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFactory.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFactory.java @@ -28,30 +28,29 @@ import org.apache.poi.openxml4j.opc.PackageRelationship; import org.apache.poi.util.POILogFactory; import org.apache.poi.util.POILogger; -/** - * @author Yegor Kozlov - */ -public final class XWPFFactory extends POIXMLFactory { - - private static final POILogger logger = POILogFactory.getLogger(XWPFFactory.class); - - private XWPFFactory(){ - - } - - private static final XWPFFactory inst = new XWPFFactory(); - - public static XWPFFactory getInstance(){ - return inst; - } - - @Override - public POIXMLDocumentPart createDocumentPart(POIXMLDocumentPart parent, PackageRelationship rel, PackagePart part){ - POIXMLRelation descriptor = XWPFRelation.getInstance(rel.getRelationshipType()); - if(descriptor == null || descriptor.getRelationClass() == null){ - logger.log(POILogger.DEBUG, "using default POIXMLDocumentPart for " + rel.getRelationshipType()); - return new POIXMLDocumentPart(part, rel); - } +/** + * @author Yegor Kozlov + */ +public final class XWPFFactory extends POIXMLFactory { + + private static final POILogger logger = POILogFactory.getLogger(XWPFFactory.class); + private static final XWPFFactory inst = new XWPFFactory(); + + private XWPFFactory() { + + } + + public static XWPFFactory getInstance() { + return inst; + } + + @Override + public POIXMLDocumentPart createDocumentPart(POIXMLDocumentPart parent, PackageRelationship rel, PackagePart part) { + POIXMLRelation descriptor = XWPFRelation.getInstance(rel.getRelationshipType()); + if (descriptor == null || descriptor.getRelationClass() == null) { + logger.log(POILogger.DEBUG, "using default POIXMLDocumentPart for " + rel.getRelationshipType()); + return new POIXMLDocumentPart(part, rel); + } try { Class cls = descriptor.getRelationClass(); @@ -59,23 +58,23 @@ public final class XWPFFactory extends POIXMLFactory { Constructor constructor = cls.getDeclaredConstructor(POIXMLDocumentPart.class, PackagePart.class, PackageRelationship.class); return constructor.newInstance(parent, part, rel); } catch (NoSuchMethodException e) { - Constructor constructor = cls.getDeclaredConstructor(PackagePart.class, PackageRelationship.class); - return constructor.newInstance(part, rel); - } - } catch (Exception e){ - throw new POIXMLException(e); - } - } - - @Override - public POIXMLDocumentPart newDocumentPart(POIXMLRelation descriptor){ - try { - Class cls = descriptor.getRelationClass(); - Constructor constructor = cls.getDeclaredConstructor(); - return constructor.newInstance(); - } catch (Exception e){ - throw new POIXMLException(e); - } - } + Constructor constructor = cls.getDeclaredConstructor(PackagePart.class, PackageRelationship.class); + return constructor.newInstance(part, rel); + } + } catch (Exception e) { + throw new POIXMLException(e); + } + } + + @Override + public POIXMLDocumentPart newDocumentPart(POIXMLRelation descriptor) { + try { + Class cls = descriptor.getRelationClass(); + Constructor constructor = cls.getDeclaredConstructor(); + return constructor.newInstance(); + } catch (Exception e) { + throw new POIXMLException(e); + } + } } diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFooter.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFooter.java index 8485f1d6c..8ae33260f 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFooter.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFooter.java @@ -53,16 +53,16 @@ public class XWPFFooter extends XWPFHeaderFooter { while (cursor.toNextSelection()) { XmlObject o = cursor.getObject(); if (o instanceof CTP) { - XWPFParagraph p = new XWPFParagraph((CTP)o, this); + XWPFParagraph p = new XWPFParagraph((CTP) o, this); paragraphs.add(p); bodyElements.add(p); } if (o instanceof CTTbl) { - XWPFTable t = new XWPFTable((CTTbl)o, this); + XWPFTable t = new XWPFTable((CTTbl) o, this); tables.add(t); bodyElements.add(t); } - + } cursor.dispose(); } @@ -78,7 +78,7 @@ public class XWPFFooter extends XWPFHeaderFooter { protected void commit() throws IOException { XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS); xmlOptions.setSaveSyntheticDocumentElement(new QName(CTNumbering.type.getName().getNamespaceURI(), "ftr")); - Map map = new HashMap(); + Map map = new HashMap(); map.put("http://schemas.openxmlformats.org/markup-compatibility/2006", "ve"); map.put("urn:schemas-microsoft-com:office:office", "o"); map.put("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "r"); @@ -95,8 +95,8 @@ public class XWPFFooter extends XWPFHeaderFooter { out.close(); } - @Override - protected void onDocumentRead() throws IOException{ + @Override + protected void onDocumentRead() throws IOException { super.onDocumentRead(); FtrDocument ftrDocument = null; InputStream is; @@ -111,19 +111,19 @@ public class XWPFFooter extends XWPFHeaderFooter { while (cursor.toNextSelection()) { XmlObject o = cursor.getObject(); if (o instanceof CTP) { - XWPFParagraph p = new XWPFParagraph((CTP)o, this); + XWPFParagraph p = new XWPFParagraph((CTP) o, this); paragraphs.add(p); bodyElements.add(p); } if (o instanceof CTTbl) { - XWPFTable t = new XWPFTable((CTTbl)o, this); + XWPFTable t = new XWPFTable((CTTbl) o, this); tables.add(t); bodyElements.add(t); } - if (o instanceof CTSdtBlock){ - XWPFSDT c = new XWPFSDT((CTSdtBlock)o, this); - bodyElements.add(c); - } + if (o instanceof CTSdtBlock) { + XWPFSDT c = new XWPFSDT((CTSdtBlock) o, this); + bodyElements.add(c); + } } cursor.dispose(); } catch (Exception e) { @@ -133,6 +133,7 @@ public class XWPFFooter extends XWPFHeaderFooter { /** * get the PartType of the body + * * @see org.apache.poi.xwpf.usermodel.IBody#getPartType() */ public BodyType getPartType() { diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFootnote.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFootnote.java index 5f0367d6b..7b51ed454 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFootnote.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFootnote.java @@ -27,64 +27,64 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFtnEdn; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtBlock; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc; - -public class XWPFFootnote implements Iterable,IBody { - private List paragraphs = new ArrayList(); - private List tables= new ArrayList(); - private List pictures = new ArrayList(); - private List bodyElements = new ArrayList(); - +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc; + +public class XWPFFootnote implements Iterable, IBody { + private List paragraphs = new ArrayList(); + private List tables = new ArrayList(); + private List pictures = new ArrayList(); + private List bodyElements = new ArrayList(); + private CTFtnEdn ctFtnEdn; private XWPFFootnotes footnotes; - private XWPFDocument document; - - public XWPFFootnote(CTFtnEdn note, XWPFFootnotes xFootnotes) { - footnotes = xFootnotes; - ctFtnEdn = note; - document = xFootnotes.getXWPFDocument(); - init(); - } - - public XWPFFootnote(XWPFDocument document, CTFtnEdn body) { - ctFtnEdn = body; - this.document = document; - init(); - } - - private void init(){ - XmlCursor cursor = ctFtnEdn.newCursor(); - //copied from XWPFDocument...should centralize this code - //to avoid duplication - cursor.selectPath("./*"); - while (cursor.toNextSelection()) { - XmlObject o = cursor.getObject(); - if (o instanceof CTP) { - XWPFParagraph p = new XWPFParagraph((CTP) o, this); - bodyElements.add(p); - paragraphs.add(p); - } else if (o instanceof CTTbl) { - XWPFTable t = new XWPFTable((CTTbl) o, this); - bodyElements.add(t); - tables.add(t); - } else if (o instanceof CTSdtBlock){ - XWPFSDT c = new XWPFSDT((CTSdtBlock)o, this); - bodyElements.add(c); - } - - } - cursor.dispose(); - } - - public List getParagraphs() { - return paragraphs; - } - - public Iterator iterator(){ - return paragraphs.iterator(); - } - + private XWPFDocument document; + + public XWPFFootnote(CTFtnEdn note, XWPFFootnotes xFootnotes) { + footnotes = xFootnotes; + ctFtnEdn = note; + document = xFootnotes.getXWPFDocument(); + init(); + } + + public XWPFFootnote(XWPFDocument document, CTFtnEdn body) { + ctFtnEdn = body; + this.document = document; + init(); + } + + private void init() { + XmlCursor cursor = ctFtnEdn.newCursor(); + //copied from XWPFDocument...should centralize this code + //to avoid duplication + cursor.selectPath("./*"); + while (cursor.toNextSelection()) { + XmlObject o = cursor.getObject(); + if (o instanceof CTP) { + XWPFParagraph p = new XWPFParagraph((CTP) o, this); + bodyElements.add(p); + paragraphs.add(p); + } else if (o instanceof CTTbl) { + XWPFTable t = new XWPFTable((CTTbl) o, this); + bodyElements.add(t); + tables.add(t); + } else if (o instanceof CTSdtBlock) { + XWPFSDT c = new XWPFSDT((CTSdtBlock) o, this); + bodyElements.add(c); + } + + } + cursor.dispose(); + } + + public List getParagraphs() { + return paragraphs; + } + + public Iterator iterator() { + return paragraphs.iterator(); + } + public List getTables() { return tables; } @@ -95,226 +95,231 @@ public class XWPFFootnote implements Iterable,IBody { public List getBodyElements() { return bodyElements; - } - - public CTFtnEdn getCTFtnEdn() { - return ctFtnEdn; - } - - public void setCTFtnEdn(CTFtnEdn footnote) { - ctFtnEdn = footnote; - } - - /** + } + + public CTFtnEdn getCTFtnEdn() { + return ctFtnEdn; + } + + public void setCTFtnEdn(CTFtnEdn footnote) { + ctFtnEdn = footnote; + } + + /** * @param pos in table array * @return The table at position pos - * @see org.apache.poi.xwpf.usermodel.IBody#getTableArray(int) - */ - public XWPFTable getTableArray(int pos) { - if(pos > 0 && pos < tables.size()){ - return tables.get(pos); - } - return null; + * @see org.apache.poi.xwpf.usermodel.IBody#getTableArray(int) + */ + public XWPFTable getTableArray(int pos) { + if (pos > 0 && pos < tables.size()) { + return tables.get(pos); + } + return null; } - - /** - * inserts an existing XWPFTable to the arrays bodyElements and tables - * @param pos - * @param table - * @see org.apache.poi.xwpf.usermodel.IBody#insertTable(int pos, XWPFTable table) + + /** + * inserts an existing XWPFTable to the arrays bodyElements and tables + * + * @param pos + * @param table + * @see org.apache.poi.xwpf.usermodel.IBody#insertTable(int pos, XWPFTable table) */ @SuppressWarnings("deprecation") public void insertTable(int pos, XWPFTable table) { - bodyElements.add(pos, table); - int i = 0; - for (CTTbl tbl : ctFtnEdn.getTblArray()) { - if(tbl == table.getCTTbl()){ - break; - } - i++; + bodyElements.add(pos, table); + int i = 0; + for (CTTbl tbl : ctFtnEdn.getTblArray()) { + if (tbl == table.getCTTbl()) { + break; + } + i++; } tables.add(i, table); } - /** - * if there is a corresponding {@link XWPFTable} of the parameter ctTable in the tableList of this header - * the method will return this table - * if there is no corresponding {@link XWPFTable} the method will return null - * @param ctTable - * @see org.apache.poi.xwpf.usermodel.IBody#getTable(CTTbl ctTable) - */ - public XWPFTable getTable(CTTbl ctTable){ - for (XWPFTable table : tables) { - if(table==null) - return null; - if(table.getCTTbl().equals(ctTable)) - return table; - } - return null; + /** + * if there is a corresponding {@link XWPFTable} of the parameter ctTable in the tableList of this header + * the method will return this table + * if there is no corresponding {@link XWPFTable} the method will return null + * + * @param ctTable + * @see org.apache.poi.xwpf.usermodel.IBody#getTable(CTTbl ctTable) + */ + public XWPFTable getTable(CTTbl ctTable) { + for (XWPFTable table : tables) { + if (table == null) + return null; + if (table.getCTTbl().equals(ctTable)) + return table; + } + return null; } - /** - * if there is a corresponding {@link XWPFParagraph} of the parameter ctTable in the paragraphList of this header or footer - * the method will return this paragraph - * if there is no corresponding {@link XWPFParagraph} the method will return null - * @param p is instance of CTP and is searching for an XWPFParagraph - * @return null if there is no XWPFParagraph with an corresponding CTPparagraph in the paragraphList of this header or footer - * XWPFParagraph with the correspondig CTP p - * @see org.apache.poi.xwpf.usermodel.IBody#getParagraph(CTP p) - */ - public XWPFParagraph getParagraph(CTP p){ - for (XWPFParagraph paragraph : paragraphs) { - if(paragraph.getCTP().equals(p)) - return paragraph; - } - return null; + /** + * if there is a corresponding {@link XWPFParagraph} of the parameter ctTable in the paragraphList of this header or footer + * the method will return this paragraph + * if there is no corresponding {@link XWPFParagraph} the method will return null + * + * @param p is instance of CTP and is searching for an XWPFParagraph + * @return null if there is no XWPFParagraph with an corresponding CTPparagraph in the paragraphList of this header or footer + * XWPFParagraph with the correspondig CTP p + * @see org.apache.poi.xwpf.usermodel.IBody#getParagraph(CTP p) + */ + public XWPFParagraph getParagraph(CTP p) { + for (XWPFParagraph paragraph : paragraphs) { + if (paragraph.getCTP().equals(p)) + return paragraph; + } + return null; } - - /** - * Returns the paragraph that holds - * the text of the header or footer. - * @see org.apache.poi.xwpf.usermodel.IBody#getParagraphArray(int pos) - */ - public XWPFParagraph getParagraphArray(int pos) { + + /** + * Returns the paragraph that holds + * the text of the header or footer. + * + * @see org.apache.poi.xwpf.usermodel.IBody#getParagraphArray(int pos) + */ + public XWPFParagraph getParagraphArray(int pos) { return paragraphs.get(pos); } - - /** - * get the TableCell which belongs to the TableCell - * @param cell - * @see org.apache.poi.xwpf.usermodel.IBody#getTableCell(CTTc cell) - */ + + /** + * get the TableCell which belongs to the TableCell + * + * @param cell + * @see org.apache.poi.xwpf.usermodel.IBody#getTableCell(CTTc cell) + */ public XWPFTableCell getTableCell(CTTc cell) { - XmlCursor cursor = cell.newCursor(); - cursor.toParent(); - XmlObject o = cursor.getObject(); - if(!(o instanceof CTRow)){ - return null; - } - CTRow row = (CTRow)o; - cursor.toParent(); - o = cursor.getObject(); - cursor.dispose(); - if(! (o instanceof CTTbl)){ - return null; - } - CTTbl tbl = (CTTbl) o; - XWPFTable table = getTable(tbl); - if(table == null){ - return null; - } - XWPFTableRow tableRow = table.getRow(row); - if(row == null){ - return null; - } - return tableRow.getTableCell(cell); + XmlCursor cursor = cell.newCursor(); + cursor.toParent(); + XmlObject o = cursor.getObject(); + if (!(o instanceof CTRow)) { + return null; + } + CTRow row = (CTRow) o; + cursor.toParent(); + o = cursor.getObject(); + cursor.dispose(); + if (!(o instanceof CTTbl)) { + return null; + } + CTTbl tbl = (CTTbl) o; + XWPFTable table = getTable(tbl); + if (table == null) { + return null; + } + XWPFTableRow tableRow = table.getRow(row); + if (row == null) { + return null; + } + return tableRow.getTableCell(cell); } - - /** - * verifies that cursor is on the right position - * @param cursor - */ - private boolean isCursorInFtn(XmlCursor cursor) { - XmlCursor verify = cursor.newCursor(); - verify.toParent(); - if(verify.getObject() == this.ctFtnEdn){ - return true; - } - return false; - } - - public POIXMLDocumentPart getOwner(){ - return footnotes; - } - - /** - * - * @param cursor - * @return the inserted table - * @see org.apache.poi.xwpf.usermodel.IBody#insertNewTbl(XmlCursor cursor) - */ - public XWPFTable insertNewTbl(XmlCursor cursor) { - if(isCursorInFtn(cursor)){ - String uri = CTTbl.type.getName().getNamespaceURI(); - String localPart = "tbl"; - cursor.beginElement(localPart,uri); - cursor.toParent(); - CTTbl t = (CTTbl)cursor.getObject(); - XWPFTable newT = new XWPFTable(t, this); - cursor.removeXmlContents(); - XmlObject o = null; - while(!(o instanceof CTTbl)&&(cursor.toPrevSibling())){ - o = cursor.getObject(); - } - if(!(o instanceof CTTbl)){ - tables.add(0, newT); - } - else{ - int pos = tables.indexOf(getTable((CTTbl)o))+1; - tables.add(pos,newT); - } - int i=0; - cursor = t.newCursor(); - while(cursor.toPrevSibling()){ - o =cursor.getObject(); - if(o instanceof CTP || o instanceof CTTbl) - i++; - } - bodyElements.add(i, newT); + + /** + * verifies that cursor is on the right position + * + * @param cursor + */ + private boolean isCursorInFtn(XmlCursor cursor) { + XmlCursor verify = cursor.newCursor(); + verify.toParent(); + if (verify.getObject() == this.ctFtnEdn) { + return true; + } + return false; + } + + public POIXMLDocumentPart getOwner() { + return footnotes; + } + + /** + * @param cursor + * @return the inserted table + * @see org.apache.poi.xwpf.usermodel.IBody#insertNewTbl(XmlCursor cursor) + */ + public XWPFTable insertNewTbl(XmlCursor cursor) { + if (isCursorInFtn(cursor)) { + String uri = CTTbl.type.getName().getNamespaceURI(); + String localPart = "tbl"; + cursor.beginElement(localPart, uri); + cursor.toParent(); + CTTbl t = (CTTbl) cursor.getObject(); + XWPFTable newT = new XWPFTable(t, this); + cursor.removeXmlContents(); + XmlObject o = null; + while (!(o instanceof CTTbl) && (cursor.toPrevSibling())) { + o = cursor.getObject(); + } + if (!(o instanceof CTTbl)) { + tables.add(0, newT); + } else { + int pos = tables.indexOf(getTable((CTTbl) o)) + 1; + tables.add(pos, newT); + } + int i = 0; + cursor = t.newCursor(); + while (cursor.toPrevSibling()) { + o = cursor.getObject(); + if (o instanceof CTP || o instanceof CTTbl) + i++; + } + bodyElements.add(i, newT); cursor = t.newCursor(); cursor.toEndToken(); return newT; } return null; } - - /** - * add a new paragraph at position of the cursor - * @param cursor - * @return the inserted paragraph - * @see org.apache.poi.xwpf.usermodel.IBody#insertNewParagraph(XmlCursor cursor) - */ - public XWPFParagraph insertNewParagraph(XmlCursor cursor){ - if(isCursorInFtn(cursor)){ - String uri = CTP.type.getName().getNamespaceURI(); - String localPart = "p"; - cursor.beginElement(localPart,uri); - cursor.toParent(); - CTP p = (CTP)cursor.getObject(); - XWPFParagraph newP = new XWPFParagraph(p, this); - XmlObject o = null; - while(!(o instanceof CTP)&&(cursor.toPrevSibling())){ - o = cursor.getObject(); - } - if((!(o instanceof CTP)) || (CTP)o == p){ - paragraphs.add(0, newP); - } - else{ - int pos = paragraphs.indexOf(getParagraph((CTP)o))+1; - paragraphs.add(pos,newP); - } - int i=0; - cursor.toCursor(p.newCursor()); - while(cursor.toPrevSibling()){ - o =cursor.getObject(); - if(o instanceof CTP || o instanceof CTTbl) - i++; - } - bodyElements.add(i, newP); + + /** + * add a new paragraph at position of the cursor + * + * @param cursor + * @return the inserted paragraph + * @see org.apache.poi.xwpf.usermodel.IBody#insertNewParagraph(XmlCursor cursor) + */ + public XWPFParagraph insertNewParagraph(XmlCursor cursor) { + if (isCursorInFtn(cursor)) { + String uri = CTP.type.getName().getNamespaceURI(); + String localPart = "p"; + cursor.beginElement(localPart, uri); + cursor.toParent(); + CTP p = (CTP) cursor.getObject(); + XWPFParagraph newP = new XWPFParagraph(p, this); + XmlObject o = null; + while (!(o instanceof CTP) && (cursor.toPrevSibling())) { + o = cursor.getObject(); + } + if ((!(o instanceof CTP)) || (CTP) o == p) { + paragraphs.add(0, newP); + } else { + int pos = paragraphs.indexOf(getParagraph((CTP) o)) + 1; + paragraphs.add(pos, newP); + } + int i = 0; + cursor.toCursor(p.newCursor()); + while (cursor.toPrevSibling()) { + o = cursor.getObject(); + if (o instanceof CTP || o instanceof CTTbl) + i++; + } + bodyElements.add(i, newP); cursor.toCursor(p.newCursor()); cursor.toEndToken(); return newP; } return null; } - - /** - * add a new table to the end of the footnote - * @param table - * @return the added XWPFTable - */ + + /** + * add a new table to the end of the footnote + * + * @param table + * @return the added XWPFTable + */ public XWPFTable addNewTbl(CTTbl table) { CTTbl newTable = ctFtnEdn.addNewTbl(); newTable.set(table); @@ -322,12 +327,13 @@ public class XWPFFootnote implements Iterable,IBody { tables.add(xTable); return xTable; } - - /** - * add a new paragraph to the end of the footnote - * @param paragraph - * @return the added XWPFParagraph - */ + + /** + * add a new paragraph to the end of the footnote + * + * @param paragraph + * @return the added XWPFParagraph + */ public XWPFParagraph addNewParagraph(CTP paragraph) { CTP newPara = ctFtnEdn.addNewP(); newPara.set(paragraph); @@ -336,26 +342,28 @@ public class XWPFFootnote implements Iterable,IBody { return xPara; } - /** - * @see org.apache.poi.xwpf.usermodel.IBody#getXWPFDocument() - */ - public XWPFDocument getXWPFDocument() { - return document; - } - - /** - * returns the Part, to which the body belongs, which you need for adding relationship to other parts - * @see org.apache.poi.xwpf.usermodel.IBody#getPart() - */ - public POIXMLDocumentPart getPart() { + /** + * @see org.apache.poi.xwpf.usermodel.IBody#getXWPFDocument() + */ + public XWPFDocument getXWPFDocument() { + return document; + } + + /** + * returns the Part, to which the body belongs, which you need for adding relationship to other parts + * + * @see org.apache.poi.xwpf.usermodel.IBody#getPart() + */ + public POIXMLDocumentPart getPart() { return footnotes; } - - /** - * get the PartType of the body - * @see org.apache.poi.xwpf.usermodel.IBody#getPartType() - */ - public BodyType getPartType() { + + /** + * get the PartType of the body + * + * @see org.apache.poi.xwpf.usermodel.IBody#getPartType() + */ + public BodyType getPartType() { return BodyType.FOOTNOTE; } } diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFootnotes.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFootnotes.java index 8647454f2..c84cab66c 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFootnotes.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFootnotes.java @@ -31,32 +31,31 @@ import org.apache.poi.POIXMLDocumentPart; import org.apache.poi.POIXMLException; import org.apache.poi.openxml4j.exceptions.OpenXML4JException; import org.apache.poi.openxml4j.opc.PackagePart; -import org.apache.poi.openxml4j.opc.PackageRelationship; -import org.apache.xmlbeans.XmlException; -import org.apache.xmlbeans.XmlOptions; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFtnEdn; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFootnotes; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.FootnotesDocument; - -/** - * Looks after the collection of Footnotes for a document - */ -public class XWPFFootnotes extends POIXMLDocumentPart { - private List listFootnote = new ArrayList(); - private CTFootnotes ctFootnotes; - - protected XWPFDocument document; - - /** - * Construct XWPFFootnotes from a package part - * - * @param part the package part holding the data of the footnotes, - * @param rel the package relationship of type "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes" - */ - public XWPFFootnotes(PackagePart part, PackageRelationship rel) throws IOException, OpenXML4JException{ - super(part, rel); - } - +import org.apache.poi.openxml4j.opc.PackageRelationship; +import org.apache.xmlbeans.XmlException; +import org.apache.xmlbeans.XmlOptions; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFootnotes; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFtnEdn; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.FootnotesDocument; + +/** + * Looks after the collection of Footnotes for a document + */ +public class XWPFFootnotes extends POIXMLDocumentPart { + protected XWPFDocument document; + private List listFootnote = new ArrayList(); + private CTFootnotes ctFootnotes; + + /** + * Construct XWPFFootnotes from a package part + * + * @param part the package part holding the data of the footnotes, + * @param rel the package relationship of type "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes" + */ + public XWPFFootnotes(PackagePart part, PackageRelationship rel) throws IOException, OpenXML4JException { + super(part, rel); + } + /** * Construct XWPFFootnotes from scratch for a new document. */ @@ -65,33 +64,33 @@ public class XWPFFootnotes extends POIXMLDocumentPart { /** * Read document - */ - @Override - @SuppressWarnings("deprecation") - protected void onDocumentRead () throws IOException { - FootnotesDocument notesDoc; - try { - InputStream is = getPackagePart().getInputStream(); + */ + @Override + @SuppressWarnings("deprecation") + protected void onDocumentRead() throws IOException { + FootnotesDocument notesDoc; + try { + InputStream is = getPackagePart().getInputStream(); notesDoc = FootnotesDocument.Factory.parse(is); ctFootnotes = notesDoc.getFootnotes(); } catch (XmlException e) { throw new POIXMLException(); - } - - // Find our footnotes - for(CTFtnEdn note : ctFootnotes.getFootnoteArray()) { - listFootnote.add(new XWPFFootnote(note, this)); - } - } + } + + // Find our footnotes + for (CTFtnEdn note : ctFootnotes.getFootnoteArray()) { + listFootnote.add(new XWPFFootnote(note, this)); + } + } @Override - protected void commit() throws IOException { - XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS); - xmlOptions.setSaveSyntheticDocumentElement(new QName(CTFootnotes.type.getName().getNamespaceURI(), "footnotes")); - Map map = new HashMap(); - map.put("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "r"); - map.put("http://schemas.openxmlformats.org/wordprocessingml/2006/main", "w"); - xmlOptions.setSaveSuggestedPrefixes(map); + protected void commit() throws IOException { + XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS); + xmlOptions.setSaveSyntheticDocumentElement(new QName(CTFootnotes.type.getName().getNamespaceURI(), "footnotes")); + Map map = new HashMap(); + map.put("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "r"); + map.put("http://schemas.openxmlformats.org/wordprocessingml/2006/main", "w"); + xmlOptions.setSaveSuggestedPrefixes(map); PackagePart part = getPackagePart(); OutputStream out = part.getOutputStream(); ctFootnotes.save(out, xmlOptions); @@ -100,59 +99,62 @@ public class XWPFFootnotes extends POIXMLDocumentPart { public List getFootnotesList() { return listFootnote; + } + + public XWPFFootnote getFootnoteById(int id) { + for (XWPFFootnote note : listFootnote) { + if (note.getCTFtnEdn().getId().intValue() == id) + return note; + } + return null; } - - public XWPFFootnote getFootnoteById(int id) { - for(XWPFFootnote note : listFootnote) { - if(note.getCTFtnEdn().getId().intValue() == id) - return note; - } - return null; - } - - /** - * Sets the ctFootnotes - * @param footnotes - */ - public void setFootnotes(CTFootnotes footnotes) { + + /** + * Sets the ctFootnotes + * + * @param footnotes + */ + public void setFootnotes(CTFootnotes footnotes) { ctFootnotes = footnotes; } - - /** - * add an XWPFFootnote to the document - * @param footnote - * @throws IOException - */ - public void addFootnote(XWPFFootnote footnote){ - listFootnote.add(footnote); - ctFootnotes.addNewFootnote().set(footnote.getCTFtnEdn()); - } - - /** - * add a footnote to the document - * @param note - * @throws IOException - */ - public XWPFFootnote addFootnote(CTFtnEdn note){ - CTFtnEdn newNote = ctFootnotes.addNewFootnote(); - newNote.set(note); - XWPFFootnote xNote = new XWPFFootnote(newNote, this); + + /** + * add an XWPFFootnote to the document + * + * @param footnote + * @throws IOException + */ + public void addFootnote(XWPFFootnote footnote) { + listFootnote.add(footnote); + ctFootnotes.addNewFootnote().set(footnote.getCTFtnEdn()); + } + + /** + * add a footnote to the document + * + * @param note + * @throws IOException + */ + public XWPFFootnote addFootnote(CTFtnEdn note) { + CTFtnEdn newNote = ctFootnotes.addNewFootnote(); + newNote.set(note); + XWPFFootnote xNote = new XWPFFootnote(newNote, this); listFootnote.add(xNote); - return xNote; - } - - public void setXWPFDocument(XWPFDocument doc) { - document = doc; - } - - /** - * @see org.apache.poi.xwpf.usermodel.IBody#getPart() - */ - public XWPFDocument getXWPFDocument() { - if ( document != null) { - return document; - } else { - return (XWPFDocument)getParent(); - } - } -} + return xNote; + } + + /** + * @see org.apache.poi.xwpf.usermodel.IBody#getPart() + */ + public XWPFDocument getXWPFDocument() { + if (document != null) { + return document; + } else { + return (XWPFDocument) getParent(); + } + } + + public void setXWPFDocument(XWPFDocument doc) { + document = doc; + } +} diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHeader.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHeader.java index a07bf4141..2a31247fd 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHeader.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHeader.java @@ -69,14 +69,14 @@ public class XWPFHeader extends XWPFHeaderFooter { cursor.dispose(); } - /** + /** * save and commit footer */ @Override protected void commit() throws IOException { XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS); xmlOptions.setSaveSyntheticDocumentElement(new QName(CTNumbering.type.getName().getNamespaceURI(), "hdr")); - Map map = new HashMap(); + Map map = new HashMap(); map.put("http://schemas.openxmlformats.org/markup-compatibility/2006", "ve"); map.put("urn:schemas-microsoft-com:office:office", "o"); map.put("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "r"); @@ -95,11 +95,12 @@ public class XWPFHeader extends XWPFHeaderFooter { /** * reads the document - * @throws IOException + * + * @throws IOException */ - @Override + @Override protected void onDocumentRead() throws IOException { - super.onDocumentRead(); + super.onDocumentRead(); HdrDocument hdrDocument = null; InputStream is; try { @@ -113,17 +114,17 @@ public class XWPFHeader extends XWPFHeaderFooter { while (cursor.toNextSelection()) { XmlObject o = cursor.getObject(); if (o instanceof CTP) { - XWPFParagraph p = new XWPFParagraph((CTP)o, this); + XWPFParagraph p = new XWPFParagraph((CTP) o, this); paragraphs.add(p); bodyElements.add(p); } if (o instanceof CTTbl) { - XWPFTable t = new XWPFTable((CTTbl)o, this); + XWPFTable t = new XWPFTable((CTTbl) o, this); tables.add(t); bodyElements.add(t); } - if (o instanceof CTSdtBlock){ - XWPFSDT c = new XWPFSDT((CTSdtBlock)o, this); + if (o instanceof CTSdtBlock) { + XWPFSDT c = new XWPFSDT((CTSdtBlock) o, this); bodyElements.add(c); } } @@ -135,6 +136,7 @@ public class XWPFHeader extends XWPFHeaderFooter { /** * get the PartType of the body + * * @see org.apache.poi.xwpf.usermodel.IBody#getPartType() */ public BodyType getPartType() { diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHeaderFooter.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHeaderFooter.java index e6dee2fef..2f96a681c 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHeaderFooter.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHeaderFooter.java @@ -46,7 +46,7 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc; */ public abstract class XWPFHeaderFooter extends POIXMLDocumentPart implements IBody { List paragraphs = new ArrayList(1); - List tables= new ArrayList(1); + List tables = new ArrayList(1); List pictures = new ArrayList(); List bodyElements = new ArrayList(1); @@ -54,7 +54,7 @@ public abstract class XWPFHeaderFooter extends POIXMLDocumentPart implements IBo XWPFDocument document; XWPFHeaderFooter(XWPFDocument doc, CTHdrFtr hdrFtr) { - if (doc==null) { + if (doc == null) { throw new NullPointerException(); } @@ -70,17 +70,17 @@ public abstract class XWPFHeaderFooter extends POIXMLDocumentPart implements IBo public XWPFHeaderFooter(POIXMLDocumentPart parent, PackagePart part, PackageRelationship rel) throws IOException { super(parent, part, rel); - this.document = (XWPFDocument)getParent(); + this.document = (XWPFDocument) getParent(); - if (this.document==null) { + if (this.document == null) { throw new NullPointerException(); } } @Override protected void onDocumentRead() throws IOException { - for (POIXMLDocumentPart poixmlDocumentPart : getRelations()){ - if(poixmlDocumentPart instanceof XWPFPictureData){ + for (POIXMLDocumentPart poixmlDocumentPart : getRelations()) { + if (poixmlDocumentPart instanceof XWPFPictureData) { XWPFPictureData xwpfPicData = (XWPFPictureData) poixmlDocumentPart; pictures.add(xwpfPicData); document.registerPackagePictureData(xwpfPicData); @@ -93,16 +93,16 @@ public abstract class XWPFHeaderFooter extends POIXMLDocumentPart implements IBo return headerFooter; } - public List getBodyElements(){ + public List getBodyElements() { return Collections.unmodifiableList(bodyElements); } /** * Returns the paragraph(s) that holds - * the text of the header or footer. + * the text of the header or footer. * Normally there is only the one paragraph, but - * there could be more in certain cases, or - * a table. + * there could be more in certain cases, or + * a table. */ public List getParagraphs() { return Collections.unmodifiableList(paragraphs); @@ -111,29 +111,28 @@ public abstract class XWPFHeaderFooter extends POIXMLDocumentPart implements IBo /** * Return the table(s) that holds the text - * of the header or footer, for complex cases - * where a paragraph isn't used. + * of the header or footer, for complex cases + * where a paragraph isn't used. * Normally there's just one paragraph, but some - * complex headers/footers have a table or two - * in addition. + * complex headers/footers have a table or two + * in addition. */ - public List getTables()throws ArrayIndexOutOfBoundsException { + public List getTables() throws ArrayIndexOutOfBoundsException { return Collections.unmodifiableList(tables); } - /** * Returns the textual content of the header/footer, - * by flattening out the text of its paragraph(s) + * by flattening out the text of its paragraph(s) */ public String getText() { StringBuffer t = new StringBuffer(); - //TODO: simplify this to get ibody elements in order - for(int i=0; i 0) { + if (text != null && text.length() > 0) { t.append(text); t.append('\n'); } @@ -141,26 +140,26 @@ public abstract class XWPFHeaderFooter extends POIXMLDocumentPart implements IBo } List tables = getTables(); - for(int i=0; i 0) { + if (text != null && text.length() > 0) { t.append(text); t.append('\n'); } } - - for (IBodyElement bodyElement : getBodyElements()){ - if (bodyElement instanceof XWPFSDT){ - t.append(((XWPFSDT) bodyElement).getContent().getText()+'\n'); - } - } - return t.toString(); + + for (IBodyElement bodyElement : getBodyElements()) { + if (bodyElement instanceof XWPFSDT) { + t.append(((XWPFSDT) bodyElement).getContent().getText() + '\n'); + } + } + return t.toString(); } /** * set a new headerFooter */ - public void setHeaderFooter(CTHdrFtr headerFooter){ + public void setHeaderFooter(CTHdrFtr headerFooter) { this.headerFooter = headerFooter; readHdrFtr(); } @@ -168,14 +167,15 @@ public abstract class XWPFHeaderFooter extends POIXMLDocumentPart implements IBo /** * if there is a corresponding {@link XWPFTable} of the parameter ctTable in the tableList of this header * the method will return this table - * if there is no corresponding {@link XWPFTable} the method will return null + * if there is no corresponding {@link XWPFTable} the method will return null + * * @param ctTable */ - public XWPFTable getTable(CTTbl ctTable){ + public XWPFTable getTable(CTTbl ctTable) { for (XWPFTable table : tables) { - if(table==null) + if (table == null) return null; - if(table.getCTTbl().equals(ctTable)) + if (table.getCTTbl().equals(ctTable)) return table; } return null; @@ -184,14 +184,15 @@ public abstract class XWPFHeaderFooter extends POIXMLDocumentPart implements IBo /** * if there is a corresponding {@link XWPFParagraph} of the parameter ctTable in the paragraphList of this header or footer * the method will return this paragraph - * if there is no corresponding {@link XWPFParagraph} the method will return null + * if there is no corresponding {@link XWPFParagraph} the method will return null + * * @param p is instance of CTP and is searching for an XWPFParagraph * @return null if there is no XWPFParagraph with an corresponding CTPparagraph in the paragraphList of this header or footer - * XWPFParagraph with the correspondig CTP p + * XWPFParagraph with the correspondig CTP p */ - public XWPFParagraph getParagraph(CTP p){ + public XWPFParagraph getParagraph(CTP p) { for (XWPFParagraph paragraph : paragraphs) { - if(paragraph.getCTP().equals(p)) + if (paragraph.getCTP().equals(p)) return paragraph; } return null; @@ -200,7 +201,7 @@ public abstract class XWPFHeaderFooter extends POIXMLDocumentPart implements IBo /** * Returns the paragraph that holds - * the text of the header or footer. + * the text of the header or footer. */ public XWPFParagraph getParagraphArray(int pos) { @@ -209,9 +210,10 @@ public abstract class XWPFHeaderFooter extends POIXMLDocumentPart implements IBo /** * get a List of all Paragraphs - * @return a list of {@link XWPFParagraph} + * + * @return a list of {@link XWPFParagraph} */ - public List getListParagraph(){ + public List getListParagraph() { return paragraphs; } @@ -221,9 +223,10 @@ public abstract class XWPFHeaderFooter extends POIXMLDocumentPart implements IBo /** * get all Pictures in this package + * * @return all Pictures in this package */ - public List getAllPackagePictures(){ + public List getAllPackagePictures() { return document.getAllPackagePictures(); } @@ -231,22 +234,19 @@ public abstract class XWPFHeaderFooter extends POIXMLDocumentPart implements IBo /** * Adds a picture to the document. * - * @param pictureData The picture data - * @param format The format of the picture. - * + * @param pictureData The picture data + * @param format The format of the picture. * @return the index to this picture (0 based), the added picture can be obtained from {@link #getAllPictures()} . - * @throws InvalidFormatException + * @throws InvalidFormatException */ - public String addPictureData(byte[] pictureData,int format) throws InvalidFormatException - { + public String addPictureData(byte[] pictureData, int format) throws InvalidFormatException { XWPFPictureData xwpfPicData = document.findPackagePictureData(pictureData, format); POIXMLRelation relDesc = XWPFPictureData.RELATIONS[format]; - if (xwpfPicData == null) - { + if (xwpfPicData == null) { /* Part doesn't exist, create a new one */ int idx = document.getNextPicNameNumber(format); - xwpfPicData = (XWPFPictureData) createRelationship(relDesc, XWPFFactory.getInstance(),idx); + xwpfPicData = (XWPFPictureData) createRelationship(relDesc, XWPFFactory.getInstance(), idx); /* write bytes to new part */ PackagePart picDataPart = xwpfPicData.getPackagePart(); OutputStream out = null; @@ -266,9 +266,7 @@ public abstract class XWPFHeaderFooter extends POIXMLDocumentPart implements IBo document.registerPackagePictureData(xwpfPicData); pictures.add(xwpfPicData); return getRelationId(xwpfPicData); - } - else if (!getRelations().contains(xwpfPicData)) - { + } else if (!getRelations().contains(xwpfPicData)) { /* * Part already existed, but was not related so far. Create * relationship to the already existing part and update @@ -279,14 +277,12 @@ public abstract class XWPFHeaderFooter extends POIXMLDocumentPart implements IBo TargetMode targetMode = TargetMode.INTERNAL; PackagePartName partName = picDataPart.getPartName(); String relation = relDesc.getRelation(); - PackageRelationship relShip = getPackagePart().addRelationship(partName,targetMode,relation); + PackageRelationship relShip = getPackagePart().addRelationship(partName, targetMode, relation); String id = relShip.getId(); - addRelation(id,xwpfPicData); + addRelation(id, xwpfPicData); pictures.add(xwpfPicData); return id; - } - else - { + } else { /* Part already existed, get relation id and return it */ return getRelationId(xwpfPicData); } @@ -295,61 +291,61 @@ public abstract class XWPFHeaderFooter extends POIXMLDocumentPart implements IBo /** * Adds a picture to the document. * - * @param is The stream to read image from - * @param format The format of the picture. - * + * @param is The stream to read image from + * @param format The format of the picture. * @return the index to this picture (0 based), the added picture can be obtained from {@link #getAllPictures()} . - * @throws InvalidFormatException - * @throws IOException + * @throws InvalidFormatException + * @throws IOException */ - public String addPictureData(InputStream is, int format) throws InvalidFormatException,IOException { + public String addPictureData(InputStream is, int format) throws InvalidFormatException, IOException { byte[] data = IOUtils.toByteArray(is); - return addPictureData(data,format); + return addPictureData(data, format); } /** * returns the PictureData by blipID + * * @param blipID * @return XWPFPictureData of a specificID - * @throws Exception + * @throws Exception */ public XWPFPictureData getPictureDataByID(String blipID) { POIXMLDocumentPart relatedPart = getRelationById(blipID); if (relatedPart != null && relatedPart instanceof XWPFPictureData) { return (XWPFPictureData) relatedPart; } - return null; + return null; } /** * add a new paragraph at position of the cursor + * * @param cursor * @return the inserted paragraph */ - public XWPFParagraph insertNewParagraph(XmlCursor cursor){ - if(isCursorInHdrF(cursor)){ + public XWPFParagraph insertNewParagraph(XmlCursor cursor) { + if (isCursorInHdrF(cursor)) { String uri = CTP.type.getName().getNamespaceURI(); String localPart = "p"; - cursor.beginElement(localPart,uri); + cursor.beginElement(localPart, uri); cursor.toParent(); - CTP p = (CTP)cursor.getObject(); + CTP p = (CTP) cursor.getObject(); XWPFParagraph newP = new XWPFParagraph(p, this); XmlObject o = null; - while(!(o instanceof CTP)&&(cursor.toPrevSibling())){ + while (!(o instanceof CTP) && (cursor.toPrevSibling())) { o = cursor.getObject(); } - if((!(o instanceof CTP)) || (CTP)o == p){ + if ((!(o instanceof CTP)) || (CTP) o == p) { paragraphs.add(0, newP); + } else { + int pos = paragraphs.indexOf(getParagraph((CTP) o)) + 1; + paragraphs.add(pos, newP); } - else{ - int pos = paragraphs.indexOf(getParagraph((CTP)o))+1; - paragraphs.add(pos,newP); - } - int i=0; + int i = 0; cursor.toCursor(p.newCursor()); - while(cursor.toPrevSibling()){ - o =cursor.getObject(); - if(o instanceof CTP || o instanceof CTTbl) + while (cursor.toPrevSibling()) { + o = cursor.getObject(); + if (o instanceof CTP || o instanceof CTTbl) i++; } bodyElements.add(i, newP); @@ -362,35 +358,33 @@ public abstract class XWPFHeaderFooter extends POIXMLDocumentPart implements IBo /** - * * @param cursor * @return the inserted table */ public XWPFTable insertNewTbl(XmlCursor cursor) { - if(isCursorInHdrF(cursor)){ + if (isCursorInHdrF(cursor)) { String uri = CTTbl.type.getName().getNamespaceURI(); String localPart = "tbl"; - cursor.beginElement(localPart,uri); + cursor.beginElement(localPart, uri); cursor.toParent(); - CTTbl t = (CTTbl)cursor.getObject(); + CTTbl t = (CTTbl) cursor.getObject(); XWPFTable newT = new XWPFTable(t, this); cursor.removeXmlContents(); XmlObject o = null; - while(!(o instanceof CTTbl)&&(cursor.toPrevSibling())){ + while (!(o instanceof CTTbl) && (cursor.toPrevSibling())) { o = cursor.getObject(); } - if(!(o instanceof CTTbl)){ + if (!(o instanceof CTTbl)) { tables.add(0, newT); + } else { + int pos = tables.indexOf(getTable((CTTbl) o)) + 1; + tables.add(pos, newT); } - else{ - int pos = tables.indexOf(getTable((CTTbl)o))+1; - tables.add(pos,newT); - } - int i=0; + int i = 0; cursor = t.newCursor(); - while(cursor.toPrevSibling()){ - o =cursor.getObject(); - if(o instanceof CTP || o instanceof CTTbl) + while (cursor.toPrevSibling()) { + o = cursor.getObject(); + if (o instanceof CTP || o instanceof CTTbl) i++; } bodyElements.add(i, newT); @@ -403,29 +397,31 @@ public abstract class XWPFHeaderFooter extends POIXMLDocumentPart implements IBo /** * verifies that cursor is on the right position + * * @param cursor */ private boolean isCursorInHdrF(XmlCursor cursor) { XmlCursor verify = cursor.newCursor(); verify.toParent(); - if(verify.getObject() == this.headerFooter){ + if (verify.getObject() == this.headerFooter) { return true; } return false; } - public POIXMLDocumentPart getOwner(){ + public POIXMLDocumentPart getOwner() { return this; } /** * Returns the table at position pos + * * @see org.apache.poi.xwpf.usermodel.IBody#getTableArray(int) */ public XWPFTable getTableArray(int pos) { - if(pos > 0 && pos < tables.size()){ + if (pos > 0 && pos < tables.size()) { return tables.get(pos); } return null; @@ -433,6 +429,7 @@ public abstract class XWPFHeaderFooter extends POIXMLDocumentPart implements IBo /** * inserts an existing XWPFTable to the arrays bodyElements and tables + * * @param pos * @param table */ @@ -441,7 +438,7 @@ public abstract class XWPFHeaderFooter extends POIXMLDocumentPart implements IBo bodyElements.add(pos, table); int i = 0; for (CTTbl tbl : headerFooter.getTblArray()) { - if(tbl == table.getCTTbl()){ + if (tbl == table.getCTTbl()) { break; } i++; @@ -450,10 +447,10 @@ public abstract class XWPFHeaderFooter extends POIXMLDocumentPart implements IBo } - public void readHdrFtr(){ + public void readHdrFtr() { bodyElements = new ArrayList(); paragraphs = new ArrayList(); - tables= new ArrayList(); + tables = new ArrayList(); // parse the document with cursor and add // the XmlObject to its lists XmlCursor cursor = headerFooter.newCursor(); @@ -461,12 +458,12 @@ public abstract class XWPFHeaderFooter extends POIXMLDocumentPart implements IBo while (cursor.toNextSelection()) { XmlObject o = cursor.getObject(); if (o instanceof CTP) { - XWPFParagraph p = new XWPFParagraph((CTP)o, this); + XWPFParagraph p = new XWPFParagraph((CTP) o, this); paragraphs.add(p); bodyElements.add(p); } if (o instanceof CTTbl) { - XWPFTable t = new XWPFTable((CTTbl)o, this); + XWPFTable t = new XWPFTable((CTTbl) o, this); tables.add(t); bodyElements.add(t); } @@ -476,48 +473,50 @@ public abstract class XWPFHeaderFooter extends POIXMLDocumentPart implements IBo /** * get the TableCell which belongs to the TableCell + * * @param cell */ public XWPFTableCell getTableCell(CTTc cell) { XmlCursor cursor = cell.newCursor(); cursor.toParent(); XmlObject o = cursor.getObject(); - if(!(o instanceof CTRow)){ + if (!(o instanceof CTRow)) { return null; } - CTRow row = (CTRow)o; + CTRow row = (CTRow) o; cursor.toParent(); o = cursor.getObject(); cursor.dispose(); - if(! (o instanceof CTTbl)){ + if (!(o instanceof CTTbl)) { return null; } CTTbl tbl = (CTTbl) o; XWPFTable table = getTable(tbl); - if(table == null){ + if (table == null) { return null; } XWPFTableRow tableRow = table.getRow(row); - if(row == null){ + if (row == null) { return null; } return tableRow.getTableCell(cell); } + public XWPFDocument getXWPFDocument() { + if (document != null) { + return document; + } else { + return (XWPFDocument) getParent(); + } + } + public void setXWPFDocument(XWPFDocument doc) { document = doc; } - public XWPFDocument getXWPFDocument() { - if (document!=null) { - return document; - } else { - return (XWPFDocument)getParent(); - } - } - /** * returns the Part, to which the body belongs, which you need for adding relationship to other parts + * * @see org.apache.poi.xwpf.usermodel.IBody#getPart() */ public POIXMLDocumentPart getPart() { diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHyperlink.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHyperlink.java index f9f2f9d32..c00f75a89 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHyperlink.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHyperlink.java @@ -18,26 +18,22 @@ package org.apache.poi.xwpf.usermodel; /** * Sketch of XWPF hyperlink class - * -* @author Yury Batrakov (batrakov at gmail.com) - * + * + * @author Yury Batrakov (batrakov at gmail.com) */ -public class XWPFHyperlink -{ +public class XWPFHyperlink { String id, url; - public XWPFHyperlink(String id, String url) - { + + public XWPFHyperlink(String id, String url) { this.id = id; this.url = url; } - - public String getId() - { + + public String getId() { return id; } - - public String getURL() - { + + public String getURL() { return url; } } diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHyperlinkRun.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHyperlinkRun.java index 2461d3324..4c8158a41 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHyperlinkRun.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHyperlinkRun.java @@ -20,45 +20,45 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHyperlink; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR; /** - * A run of text with a Hyperlink applied to it. - * Any given Hyperlink may be made up of multiple of these. - */ -public class XWPFHyperlinkRun extends XWPFRun -{ - private CTHyperlink hyperlink; - - public XWPFHyperlinkRun(CTHyperlink hyperlink, CTR run, IRunBody p) { - super(run, p); - this.hyperlink = hyperlink; - } - - public CTHyperlink getCTHyperlink() { - return hyperlink; - } - - public String getAnchor() { - return hyperlink.getAnchor(); - } - - /** - * Returns the ID of the hyperlink, if one is set. - */ - public String getHyperlinkId() { - return hyperlink.getId(); - } - public void setHyperlinkId(String id) { - hyperlink.setId(id); - } - - /** - * If this Hyperlink is an external reference hyperlink, - * return the object for it. - */ - public XWPFHyperlink getHyperlink(XWPFDocument document) { - String id = getHyperlinkId(); - if(id == null) - return null; - - return document.getHyperlinkByID(id); - } -} + * A run of text with a Hyperlink applied to it. + * Any given Hyperlink may be made up of multiple of these. + */ +public class XWPFHyperlinkRun extends XWPFRun { + private CTHyperlink hyperlink; + + public XWPFHyperlinkRun(CTHyperlink hyperlink, CTR run, IRunBody p) { + super(run, p); + this.hyperlink = hyperlink; + } + + public CTHyperlink getCTHyperlink() { + return hyperlink; + } + + public String getAnchor() { + return hyperlink.getAnchor(); + } + + /** + * Returns the ID of the hyperlink, if one is set. + */ + public String getHyperlinkId() { + return hyperlink.getId(); + } + + public void setHyperlinkId(String id) { + hyperlink.setId(id); + } + + /** + * If this Hyperlink is an external reference hyperlink, + * return the object for it. + */ + public XWPFHyperlink getHyperlink(XWPFDocument document) { + String id = getHyperlinkId(); + if (id == null) + return null; + + return document.getHyperlinkByID(id); + } +} diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFLatentStyles.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFLatentStyles.java index e94299198..ab802ffbc 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFLatentStyles.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFLatentStyles.java @@ -17,38 +17,38 @@ package org.apache.poi.xwpf.usermodel; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTLatentStyles; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTLsdException; - -public class XWPFLatentStyles { - private CTLatentStyles latentStyles; - protected XWPFStyles styles; //LatentStyle shall know styles - - protected XWPFLatentStyles(){ - } - - protected XWPFLatentStyles(CTLatentStyles latentStyles){ - this(latentStyles,null); - } - - protected XWPFLatentStyles(CTLatentStyles latentStyles, XWPFStyles styles) { - this.latentStyles=latentStyles; - this.styles=styles; - } - - public int getNumberOfStyles() { +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTLsdException; + +public class XWPFLatentStyles { + protected XWPFStyles styles; //LatentStyle shall know styles + private CTLatentStyles latentStyles; + + protected XWPFLatentStyles() { + } + + protected XWPFLatentStyles(CTLatentStyles latentStyles) { + this(latentStyles, null); + } + + protected XWPFLatentStyles(CTLatentStyles latentStyles, XWPFStyles styles) { + this.latentStyles = latentStyles; + this.styles = styles; + } + + public int getNumberOfStyles() { return latentStyles.sizeOfLsdExceptionArray(); } /** - * checks whether specific LatentStyleID is a latentStyle - */ - @SuppressWarnings("deprecation") - protected boolean isLatentStyle(String latentStyleID){ - for ( CTLsdException lsd: latentStyles.getLsdExceptionArray()) { - if(lsd.getName().equals(latentStyleID)) { - return true; - } - } - return false; - } -} + * checks whether specific LatentStyleID is a latentStyle + */ + @SuppressWarnings("deprecation") + protected boolean isLatentStyle(String latentStyleID) { + for (CTLsdException lsd : latentStyles.getLsdExceptionArray()) { + if (lsd.getName().equals(latentStyleID)) { + return true; + } + } + return false; + } +} diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFNum.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFNum.java index 300936d2a..b1ae7ed8c 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFNum.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFNum.java @@ -18,48 +18,47 @@ package org.apache.poi.xwpf.usermodel; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTNum; - -/** - * @author Philipp Epp - * - */ -public class XWPFNum { - private CTNum ctNum; - protected XWPFNumbering numbering; - - public XWPFNum(){ - this.ctNum = null; - this.numbering = null; - } - - public XWPFNum(CTNum ctNum){ - this.ctNum = ctNum; - this.numbering = null; - } - - public XWPFNum(XWPFNumbering numbering){ - this.ctNum = null; - this.numbering = numbering; - } - - public XWPFNum(CTNum ctNum, XWPFNumbering numbering){ - this.ctNum = ctNum; - this.numbering = numbering; - } - - public XWPFNumbering getNumbering(){ - return numbering; - } - - public CTNum getCTNum(){ - return ctNum; - } - - public void setNumbering(XWPFNumbering numbering){ - this.numbering = numbering; - } - - public void setCTNum(CTNum ctNum){ - this.ctNum = ctNum; - } + +/** + * @author Philipp Epp + */ +public class XWPFNum { + protected XWPFNumbering numbering; + private CTNum ctNum; + + public XWPFNum() { + this.ctNum = null; + this.numbering = null; + } + + public XWPFNum(CTNum ctNum) { + this.ctNum = ctNum; + this.numbering = null; + } + + public XWPFNum(XWPFNumbering numbering) { + this.ctNum = null; + this.numbering = numbering; + } + + public XWPFNum(CTNum ctNum, XWPFNumbering numbering) { + this.ctNum = ctNum; + this.numbering = numbering; + } + + public XWPFNumbering getNumbering() { + return numbering; + } + + public void setNumbering(XWPFNumbering numbering) { + this.numbering = numbering; + } + + public CTNum getCTNum() { + return ctNum; + } + + public void setCTNum(CTNum ctNum) { + this.ctNum = ctNum; + } } \ No newline at end of file diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFNumbering.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFNumbering.java index 1bc8af5ae..842bb4434 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFNumbering.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFNumbering.java @@ -38,71 +38,69 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTAbstractNum; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTNum; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTNumbering; import org.openxmlformats.schemas.wordprocessingml.x2006.main.NumberingDocument; - -/** - * @author Philipp Epp - * - */ -public class XWPFNumbering extends POIXMLDocumentPart { - protected List abstractNums = new ArrayList(); - protected List nums = new ArrayList(); - - private CTNumbering ctNumbering; - boolean isNew; - - /** - *create a new styles object with an existing document - */ - public XWPFNumbering(PackagePart part, PackageRelationship rel) throws IOException, OpenXML4JException{ - super(part, rel); - isNew = true; - } - - /** - * create a new XWPFNumbering object for use in a new document - */ - public XWPFNumbering(){ - abstractNums = new ArrayList(); - nums = new ArrayList(); - isNew = true; - } - - /** - * read numbering form an existing package - */ - @Override - @SuppressWarnings("deprecation") - protected void onDocumentRead() throws IOException{ - NumberingDocument numberingDoc = null; - InputStream is; - is = getPackagePart().getInputStream(); - try { - numberingDoc = NumberingDocument.Factory.parse(is); - ctNumbering = numberingDoc.getNumbering(); - //get any Nums - for(CTNum ctNum : ctNumbering.getNumArray()) { - nums.add(new XWPFNum(ctNum, this)); - } - for(CTAbstractNum ctAbstractNum : ctNumbering.getAbstractNumArray()){ - abstractNums.add(new XWPFAbstractNum(ctAbstractNum, this)); - } - isNew = false; - } catch (XmlException e) { - throw new POIXMLException(); - } - } - - /** - * save and commit numbering - */ - @Override - protected void commit() throws IOException { - XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS); - xmlOptions.setSaveSyntheticDocumentElement(new QName(CTNumbering.type.getName().getNamespaceURI(), "numbering")); - Map map = new HashMap(); - map.put("http://schemas.openxmlformats.org/markup-compatibility/2006", "ve"); - map.put("urn:schemas-microsoft-com:office:office", "o"); - map.put("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "r"); + +/** + * @author Philipp Epp + */ +public class XWPFNumbering extends POIXMLDocumentPart { + protected List abstractNums = new ArrayList(); + protected List nums = new ArrayList(); + boolean isNew; + private CTNumbering ctNumbering; + + /** + * create a new styles object with an existing document + */ + public XWPFNumbering(PackagePart part, PackageRelationship rel) throws IOException, OpenXML4JException { + super(part, rel); + isNew = true; + } + + /** + * create a new XWPFNumbering object for use in a new document + */ + public XWPFNumbering() { + abstractNums = new ArrayList(); + nums = new ArrayList(); + isNew = true; + } + + /** + * read numbering form an existing package + */ + @Override + @SuppressWarnings("deprecation") + protected void onDocumentRead() throws IOException { + NumberingDocument numberingDoc = null; + InputStream is; + is = getPackagePart().getInputStream(); + try { + numberingDoc = NumberingDocument.Factory.parse(is); + ctNumbering = numberingDoc.getNumbering(); + //get any Nums + for (CTNum ctNum : ctNumbering.getNumArray()) { + nums.add(new XWPFNum(ctNum, this)); + } + for (CTAbstractNum ctAbstractNum : ctNumbering.getAbstractNumArray()) { + abstractNums.add(new XWPFAbstractNum(ctAbstractNum, this)); + } + isNew = false; + } catch (XmlException e) { + throw new POIXMLException(); + } + } + + /** + * save and commit numbering + */ + @Override + protected void commit() throws IOException { + XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS); + xmlOptions.setSaveSyntheticDocumentElement(new QName(CTNumbering.type.getName().getNamespaceURI(), "numbering")); + Map map = new HashMap(); + map.put("http://schemas.openxmlformats.org/markup-compatibility/2006", "ve"); + map.put("urn:schemas-microsoft-com:office:office", "o"); + map.put("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "r"); map.put("http://schemas.openxmlformats.org/officeDocument/2006/math", "m"); map.put("urn:schemas-microsoft-com:vml", "v"); map.put("http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing", "wp"); @@ -114,169 +112,182 @@ public class XWPFNumbering extends POIXMLDocumentPart { OutputStream out = part.getOutputStream(); ctNumbering.save(out, xmlOptions); out.close(); - } - - - /** - * Sets the ctNumbering - * @param numbering - */ - public void setNumbering(CTNumbering numbering){ - ctNumbering = numbering; - } - - - /** - * Checks whether number with numID exists - * @param numID - * @return boolean true if num exist, false if num not exist - */ - public boolean numExist(BigInteger numID){ - for (XWPFNum num : nums) { - if (num.getCTNum().getNumId().equals(numID)) - return true; - } - return false; - } - - /** - * add a new number to the numbering document - * @param num - */ - public BigInteger addNum(XWPFNum num){ - ctNumbering.addNewNum(); - int pos = ctNumbering.sizeOfNumArray() - 1; - ctNumbering.setNumArray(pos, num.getCTNum()); - nums.add(num); - return num.getCTNum().getNumId(); - } - - /** - * Add a new num with an abstractNumID - * @return return NumId of the added num - */ - public BigInteger addNum(BigInteger abstractNumID){ - CTNum ctNum = this.ctNumbering.addNewNum(); - ctNum.addNewAbstractNumId(); - ctNum.getAbstractNumId().setVal(abstractNumID); - ctNum.setNumId(BigInteger.valueOf(nums.size()+1)); - XWPFNum num = new XWPFNum(ctNum, this); - nums.add(num); - return ctNum.getNumId(); - } - - /** - * Add a new num with an abstractNumID and a numID - * @param abstractNumID - * @param numID - */ - public void addNum(BigInteger abstractNumID, BigInteger numID){ - CTNum ctNum = this.ctNumbering.addNewNum(); - ctNum.addNewAbstractNumId(); - ctNum.getAbstractNumId().setVal(abstractNumID); - ctNum.setNumId(numID); - XWPFNum num = new XWPFNum(ctNum, this); - nums.add(num); - } - - /** - * get Num by NumID - * @param numID - * @return abstractNum with NumId if no Num exists with that NumID - * null will be returned - */ - public XWPFNum getNum(BigInteger numID){ - for(XWPFNum num: nums){ - if(num.getCTNum().getNumId().equals(numID)) - return num; - } - return null; - } - /** - * get AbstractNum by abstractNumID - * @param abstractNumID - * @return abstractNum with abstractNumId if no abstractNum exists with that abstractNumID - * null will be returned - */ - public XWPFAbstractNum getAbstractNum(BigInteger abstractNumID){ - for(XWPFAbstractNum abstractNum: abstractNums){ - if(abstractNum.getAbstractNum().getAbstractNumId().equals(abstractNumID)){ - return abstractNum; - } - } - return null; - } - /** - * Compare AbstractNum with abstractNums of this numbering document. - * If the content of abstractNum equals with an abstractNum of the List in numbering - * the BigInteger Value of it will be returned. - * If no equal abstractNum is existing null will be returned - * - * @param abstractNum - * @return BigInteger - */ - public BigInteger getIdOfAbstractNum(XWPFAbstractNum abstractNum){ - CTAbstractNum copy = (CTAbstractNum) abstractNum.getCTAbstractNum().copy(); - XWPFAbstractNum newAbstractNum = new XWPFAbstractNum(copy, this); - int i; - for (i = 0; i < abstractNums.size(); i++) { - newAbstractNum.getCTAbstractNum().setAbstractNumId(BigInteger.valueOf(i)); - newAbstractNum.setNumbering(this); - if(newAbstractNum.getCTAbstractNum().valueEquals(abstractNums.get(i).getCTAbstractNum())){ - return newAbstractNum.getCTAbstractNum().getAbstractNumId(); - } - } - return null; - } - - - /** - * add a new AbstractNum and return its AbstractNumID - * @param abstractNum - */ - public BigInteger addAbstractNum(XWPFAbstractNum abstractNum){ - int pos = abstractNums.size(); - if(abstractNum.getAbstractNum() != null){ // Use the current CTAbstractNum if it exists - ctNumbering.addNewAbstractNum().set(abstractNum.getAbstractNum()); - } else { - ctNumbering.addNewAbstractNum(); - abstractNum.getAbstractNum().setAbstractNumId(BigInteger.valueOf(pos)); - ctNumbering.setAbstractNumArray(pos, abstractNum.getAbstractNum()); - } - abstractNums.add(abstractNum); - return abstractNum.getCTAbstractNum().getAbstractNumId(); - } - - /** - * remove an existing abstractNum - * @param abstractNumID - * @return true if abstractNum with abstractNumID exists in NumberingArray, - * false if abstractNum with abstractNumID not exists - */ - public boolean removeAbstractNum(BigInteger abstractNumID){ - if(abstractNumID.byteValue()A Paragraph within a Document, Table, Header etc.

    - * + *

    A Paragraph within a Document, Table, Header etc.

    + *

    *

    A paragraph has a lot of styling information, but the - * actual text (possibly along with more styling) is held on - * the child {@link XWPFRun}s.

    + * actual text (possibly along with more styling) is held on + * the child {@link XWPFRun}s.

    */ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Paragraph { private final CTP paragraph; protected IBody part; - /** For access to the document's hyperlink, comments, tables etc */ + /** + * For access to the document's hyperlink, comments, tables etc + */ protected XWPFDocument document; protected List runs; protected List iruns; @@ -77,10 +80,10 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para public XWPFParagraph(CTP prgrph, IBody part) { this.paragraph = prgrph; this.part = part; - + this.document = part.getXWPFDocument(); - if (document==null) { + if (document == null) { throw new NullPointerException(); } @@ -90,7 +93,7 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para buildRunsInOrderFromXml(paragraph); // Look for bits associated with the runs - for(XWPFRun run : runs) { + for (XWPFRun run : runs) { CTR r = run.getCTR(); // Check for bits that only apply when attached to a core document @@ -99,13 +102,13 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para c.selectPath("child::*"); while (c.toNextSelection()) { XmlObject o = c.getObject(); - if(o instanceof CTFtnEdnRef) { - CTFtnEdnRef ftn = (CTFtnEdnRef)o; + if (o instanceof CTFtnEdnRef) { + CTFtnEdnRef ftn = (CTFtnEdnRef) o; footnoteText.append(" [").append(ftn.getId()).append(": "); XWPFFootnote footnote = - ftn.getDomNode().getLocalName().equals("footnoteReference") ? - document.getFootnoteByID(ftn.getId().intValue()) : - document.getEndnoteByID(ftn.getId().intValue()); + ftn.getDomNode().getLocalName().equals("footnoteReference") ? + document.getFootnoteByID(ftn.getId().intValue()) : + document.getEndnoteByID(ftn.getId().intValue()); boolean first = true; for (XWPFParagraph p : footnote.getParagraphs()) { @@ -125,8 +128,8 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para /** * Identifies (in order) the parts of the paragraph / - * sub-paragraph that correspond to character text - * runs, and builds the appropriate runs for these. + * sub-paragraph that correspond to character text + * runs, and builds the appropriate runs for these. */ private void buildRunsInOrderFromXml(XmlObject object) { XmlCursor c = object.newCursor(); @@ -134,71 +137,72 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para while (c.toNextSelection()) { XmlObject o = c.getObject(); if (o instanceof CTR) { - XWPFRun r = new XWPFRun((CTR) o, this); - runs.add(r); - iruns.add(r); - } - if (o instanceof CTHyperlink) { - CTHyperlink link = (CTHyperlink) o; - for (CTR r : link.getRArray()) { - XWPFHyperlinkRun hr = new XWPFHyperlinkRun(link, r, this); - runs.add(hr); - iruns.add(hr); - } - } - if (o instanceof CTSdtBlock) { - XWPFSDT cc = new XWPFSDT((CTSdtBlock) o, part); - iruns.add(cc); - } - if (o instanceof CTSdtRun) { - XWPFSDT cc = new XWPFSDT((CTSdtRun) o, part); - iruns.add(cc); - } - if (o instanceof CTRunTrackChange) { - for (CTR r : ((CTRunTrackChange) o).getRArray()) { - XWPFRun cr = new XWPFRun(r, this); - runs.add(cr); - iruns.add(cr); - } - } - if (o instanceof CTSimpleField) { - for (CTR r : ((CTSimpleField) o).getRArray()) { - XWPFRun cr = new XWPFRun(r, this); - runs.add(cr); - iruns.add(cr); - } - } + XWPFRun r = new XWPFRun((CTR) o, this); + runs.add(r); + iruns.add(r); + } + if (o instanceof CTHyperlink) { + CTHyperlink link = (CTHyperlink) o; + for (CTR r : link.getRArray()) { + XWPFHyperlinkRun hr = new XWPFHyperlinkRun(link, r, this); + runs.add(hr); + iruns.add(hr); + } + } + if (o instanceof CTSdtBlock) { + XWPFSDT cc = new XWPFSDT((CTSdtBlock) o, part); + iruns.add(cc); + } + if (o instanceof CTSdtRun) { + XWPFSDT cc = new XWPFSDT((CTSdtRun) o, part); + iruns.add(cc); + } + if (o instanceof CTRunTrackChange) { + for (CTR r : ((CTRunTrackChange) o).getRArray()) { + XWPFRun cr = new XWPFRun(r, this); + runs.add(cr); + iruns.add(cr); + } + } + if (o instanceof CTSimpleField) { + for (CTR r : ((CTSimpleField) o).getRArray()) { + XWPFRun cr = new XWPFRun(r, this); + runs.add(cr); + iruns.add(cr); + } + } if (o instanceof CTSmartTagRun) { - // Smart Tags can be nested many times. + // Smart Tags can be nested many times. // This implementation does not preserve the tagging information buildRunsInOrderFromXml(o); } } c.dispose(); } - + @Internal public CTP getCTP() { return paragraph; } - public List getRuns(){ + public List getRuns() { return Collections.unmodifiableList(runs); } - + /** * Return literal runs and sdt/content control objects. + * * @return List */ public List getIRuns() { return Collections.unmodifiableList(iruns); } - - public boolean isEmpty(){ + + public boolean isEmpty() { return !paragraph.getDomNode().hasChildNodes(); } - public XWPFDocument getDocument(){ + public XWPFDocument getDocument() { return document; } @@ -209,8 +213,8 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para public String getText() { StringBuffer out = new StringBuffer(); for (IRunElement run : iruns) { - if (run instanceof XWPFSDT){ - out.append(((XWPFSDT)run).getContent().getText()); + if (run instanceof XWPFSDT) { + out.append(((XWPFSDT) run).getContent().getText()); } else { out.append(run.toString()); } @@ -221,43 +225,63 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para /** * Return styleID of the paragraph if style exist for this paragraph - * if not, null will be returned - * @return styleID as String + * if not, null will be returned + * + * @return styleID as String */ public String getStyleID() { if (paragraph.getPPr() != null) { - if(paragraph.getPPr().getPStyle()!= null) { - if (paragraph.getPPr().getPStyle().getVal()!= null) + if (paragraph.getPPr().getPStyle() != null) { + if (paragraph.getPPr().getPStyle().getVal() != null) return paragraph.getPPr().getPStyle().getVal(); } } return null; - } + } + /** * If style exist for this paragraph * NumId of the paragraph will be returned. - * If style not exist null will be returned - * @return NumID as BigInteger + * If style not exist null will be returned + * + * @return NumID as BigInteger */ - public BigInteger getNumID(){ - if(paragraph.getPPr()!=null){ - if(paragraph.getPPr().getNumPr()!=null){ - if(paragraph.getPPr().getNumPr().getNumId()!=null) + public BigInteger getNumID() { + if (paragraph.getPPr() != null) { + if (paragraph.getPPr().getNumPr() != null) { + if (paragraph.getPPr().getNumPr().getNumId() != null) return paragraph.getPPr().getNumPr().getNumId().getVal(); } } return null; } + /** + * setNumID of Paragraph + * + * @param numPos + */ + public void setNumID(BigInteger numPos) { + if (paragraph.getPPr() == null) + paragraph.addNewPPr(); + if (paragraph.getPPr().getNumPr() == null) + paragraph.getPPr().addNewNumPr(); + if (paragraph.getPPr().getNumPr().getNumId() == null) { + paragraph.getPPr().getNumPr().addNewNumId(); + } + paragraph.getPPr().getNumPr().getNumId().setVal(numPos); + } + /** * Returns Ilvl of the numeric style for this paragraph. * Returns null if this paragraph does not have numeric style. + * * @return Ilvl as BigInteger */ public BigInteger getNumIlvl() { - if(paragraph.getPPr()!=null){ - if(paragraph.getPPr().getNumPr()!=null){ - if(paragraph.getPPr().getNumPr().getIlvl()!=null) + if (paragraph.getPPr() != null) { + if (paragraph.getPPr().getNumPr() != null) { + if (paragraph.getPPr().getNumPr().getIlvl() != null) return paragraph.getPPr().getNumPr().getIlvl().getVal(); } } @@ -266,28 +290,28 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para /** * Returns numbering format for this paragraph, eg bullet or - * lowerLetter. + * lowerLetter. * Returns null if this paragraph does not have numeric style. */ public String getNumFmt() { BigInteger numID = getNumID(); XWPFNumbering numbering = document.getNumbering(); - if(numID != null && numbering != null) { + if (numID != null && numbering != null) { XWPFNum num = numbering.getNum(numID); - if(num != null) { + if (num != null) { BigInteger ilvl = getNumIlvl(); BigInteger abstractNumId = num.getCTNum().getAbstractNumId().getVal(); CTAbstractNum anum = numbering.getAbstractNum(abstractNumId).getAbstractNum(); CTLvl level = null; - for(int i = 0; i < anum.sizeOfLvlArray(); i++) { + for (int i = 0; i < anum.sizeOfLvlArray(); i++) { CTLvl lvl = anum.getLvlArray(i); - if(lvl.getIlvl().equals(ilvl)) { + if (lvl.getIlvl().equals(ilvl)) { level = lvl; break; } } - if(level != null && level.getNumFmt() != null - && level.getNumFmt().getVal() != null) + if (level != null && level.getNumFmt() != null + && level.getNumFmt().getVal() != null) return level.getNumFmt().getVal().toString(); } } @@ -302,9 +326,9 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para public String getNumLevelText() { BigInteger numID = getNumID(); XWPFNumbering numbering = document.getNumbering(); - if(numID != null && numbering != null) { + if (numID != null && numbering != null) { XWPFNum num = numbering.getNum(numID); - if(num != null) { + if (num != null) { BigInteger ilvl = getNumIlvl(); CTNum ctNum = num.getCTNum(); if (ctNum == null) @@ -329,68 +353,54 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para return null; CTLvl level = null; - for(int i = 0; i < anum.sizeOfLvlArray(); i++) { + for (int i = 0; i < anum.sizeOfLvlArray(); i++) { CTLvl lvl = anum.getLvlArray(i); - if(lvl != null && lvl.getIlvl() != null && lvl.getIlvl().equals(ilvl)) { + if (lvl != null && lvl.getIlvl() != null && lvl.getIlvl().equals(ilvl)) { level = lvl; break; } } - if(level != null && level.getLvlText() != null - && level.getLvlText().getVal() != null) + if (level != null && level.getLvlText() != null + && level.getLvlText().getVal() != null) return level.getLvlText().getVal().toString(); } } return null; } - /** * Gets the numstartOverride for the paragraph numbering for this paragraph. + * * @return returns the overridden start number or null if there is no override for this paragraph. */ public BigInteger getNumStartOverride() { BigInteger numID = getNumID(); XWPFNumbering numbering = document.getNumbering(); - if(numID != null && numbering != null) { + if (numID != null && numbering != null) { XWPFNum num = numbering.getNum(numID); - if(num != null) { + if (num != null) { CTNum ctNum = num.getCTNum(); if (ctNum == null) { return null; } BigInteger ilvl = getNumIlvl(); CTNumLvl level = null; - for(int i = 0; i < ctNum.sizeOfLvlOverrideArray(); i++) { + for (int i = 0; i < ctNum.sizeOfLvlOverrideArray(); i++) { CTNumLvl ctNumLvl = ctNum.getLvlOverrideArray(i); - if(ctNumLvl != null && ctNumLvl.getIlvl() != null && - ctNumLvl.getIlvl().equals(ilvl)) { + if (ctNumLvl != null && ctNumLvl.getIlvl() != null && + ctNumLvl.getIlvl().equals(ilvl)) { level = ctNumLvl; break; } } - if(level != null && level.getStartOverride() != null) { + if (level != null && level.getStartOverride() != null) { return level.getStartOverride().getVal(); } } } return null; } - /** - * setNumID of Paragraph - * @param numPos - */ - public void setNumID(BigInteger numPos) { - if(paragraph.getPPr()==null) - paragraph.addNewPPr(); - if(paragraph.getPPr().getNumPr()==null) - paragraph.getPPr().addNewNumPr(); - if(paragraph.getPPr().getNumPr().getNumId()==null){ - paragraph.getPPr().getNumPr().addNewNumId(); - } - paragraph.getPPr().getNumPr().getNumId().setVal(numPos); - } /** * Returns the text of the paragraph, but not of any objects in the @@ -398,7 +408,7 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para */ public String getParagraphText() { StringBuffer out = new StringBuffer(); - for(XWPFRun run : runs) { + for (XWPFRun run : runs) { out.append(run.toString()); } return out.toString(); @@ -409,7 +419,7 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para */ public String getPictureText() { StringBuffer out = new StringBuffer(); - for(XWPFRun run : runs) { + for (XWPFRun run : runs) { out.append(run.getPictureText()); } return out.toString(); @@ -418,7 +428,7 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para /** * Returns the footnote text of the paragraph * - * @return the footnote text or empty string if the paragraph does not have footnotes + * @return the footnote text or empty string if the paragraph does not have footnotes */ public String getFootnoteText() { return footnoteText.toString(); @@ -471,6 +481,7 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para public int getFontAlignment() { return getAlignment().getValue(); } + public void setFontAlignment(int align) { ParagraphAlignment pAlign = ParagraphAlignment.valueOf(align); setAlignment(pAlign); @@ -498,7 +509,7 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para CTPPr pr = getCTPPr(); return (pr == null || !pr.isSetTextAlignment()) ? TextAlignment.AUTO : TextAlignment.valueOf(pr.getTextAlignment().getVal() - .intValue()); + .intValue()); } /** @@ -524,9 +535,27 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para CTPPr pr = getCTPPr(); CTTextAlignment textAlignment = pr.isSetTextAlignment() ? pr .getTextAlignment() : pr.addNewTextAlignment(); - STTextAlignment.Enum en = STTextAlignment.Enum - .forInt(valign.getValue()); - textAlignment.setVal(en); + STTextAlignment.Enum en = STTextAlignment.Enum + .forInt(valign.getValue()); + textAlignment.setVal(en); + } + + /** + * Specifies the border which shall be displayed above a set of paragraphs + * which have the same set of paragraph border settings. + * + * @return paragraphBorder - the top border for the paragraph + * @see #setBorderTop(Borders) + * @see Borders a list of all types of borders + */ + public Borders getBorderTop() { + CTPBdr border = getCTPBrd(false); + CTBorder ct = null; + if (border != null) { + ct = border.getTop(); + } + STBorder.Enum ptrn = (ct != null) ? ct.getVal() : STBorder.NONE; + return Borders.valueOf(ptrn.intValue()); } /** @@ -570,20 +599,20 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para } /** - * Specifies the border which shall be displayed above a set of paragraphs - * which have the same set of paragraph border settings. + * Specifies the border which shall be displayed below a set of + * paragraphs which have the same set of paragraph border settings. * - * @return paragraphBorder - the top border for the paragraph - * @see #setBorderTop(Borders) + * @return paragraphBorder - the bottom border for the paragraph + * @see #setBorderBottom(Borders) * @see Borders a list of all types of borders */ - public Borders getBorderTop() { + public Borders getBorderBottom() { CTPBdr border = getCTPBrd(false); CTBorder ct = null; if (border != null) { - ct = border.getTop(); + ct = border.getBottom(); } - STBorder.Enum ptrn = (ct != null) ? ct.getVal() : STBorder.NONE; + STBorder.Enum ptrn = ct != null ? ct.getVal() : STBorder.NONE; return Borders.valueOf(ptrn.intValue()); } @@ -624,18 +653,18 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para } /** - * Specifies the border which shall be displayed below a set of - * paragraphs which have the same set of paragraph border settings. + * Specifies the border which shall be displayed on the left side of the + * page around the specified paragraph. * - * @return paragraphBorder - the bottom border for the paragraph - * @see #setBorderBottom(Borders) - * @see Borders a list of all types of borders + * @return ParagraphBorder - the left border for the paragraph + * @see #setBorderLeft(Borders) + * @see Borders for a list of all possible borders */ - public Borders getBorderBottom() { + public Borders getBorderLeft() { CTPBdr border = getCTPBrd(false); CTBorder ct = null; if (border != null) { - ct = border.getBottom(); + ct = border.getLeft(); } STBorder.Enum ptrn = ct != null ? ct.getVal() : STBorder.NONE; return Borders.valueOf(ptrn.intValue()); @@ -673,18 +702,18 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para } /** - * Specifies the border which shall be displayed on the left side of the + * Specifies the border which shall be displayed on the right side of the * page around the specified paragraph. * - * @return ParagraphBorder - the left border for the paragraph - * @see #setBorderLeft(Borders) + * @return ParagraphBorder - the right border for the paragraph + * @see #setBorderRight(Borders) * @see Borders for a list of all possible borders */ - public Borders getBorderLeft() { + public Borders getBorderRight() { CTPBdr border = getCTPBrd(false); CTBorder ct = null; if (border != null) { - ct = border.getLeft(); + ct = border.getRight(); } STBorder.Enum ptrn = ct != null ? ct.getVal() : STBorder.NONE; return Borders.valueOf(ptrn.intValue()); @@ -722,18 +751,18 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para } /** - * Specifies the border which shall be displayed on the right side of the - * page around the specified paragraph. + * Specifies the border which shall be displayed between each paragraph in a + * set of paragraphs which have the same set of paragraph border settings. * - * @return ParagraphBorder - the right border for the paragraph - * @see #setBorderRight(Borders) + * @return ParagraphBorder - the between border for the paragraph + * @see #setBorderBetween(Borders) * @see Borders for a list of all possible borders */ - public Borders getBorderRight() { + public Borders getBorderBetween() { CTPBdr border = getCTPBrd(false); CTBorder ct = null; if (border != null) { - ct = border.getRight(); + ct = border.getBetween(); } STBorder.Enum ptrn = ct != null ? ct.getVal() : STBorder.NONE; return Borders.valueOf(ptrn.intValue()); @@ -775,21 +804,29 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para } /** - * Specifies the border which shall be displayed between each paragraph in a - * set of paragraphs which have the same set of paragraph border settings. + * Specifies that when rendering this document in a paginated + * view, the contents of this paragraph are rendered on the start of a new + * page in the document. + *

    + * If this element is omitted on a given paragraph, + * its value is determined by the setting previously set at any level of the + * style hierarchy (i.e. that previous setting remains unchanged). If this + * setting is never specified in the style hierarchy, then this property + * shall not be applied. Since the paragraph is specified to start on a new + * page, it begins page two even though it could have fit on page one. + *

    * - * @return ParagraphBorder - the between border for the paragraph - * @see #setBorderBetween(Borders) - * @see Borders for a list of all possible borders + * @return boolean - if page break is set */ - public Borders getBorderBetween() { - CTPBdr border = getCTPBrd(false); - CTBorder ct = null; - if (border != null) { - ct = border.getBetween(); + public boolean isPageBreak() { + CTPPr ppr = getCTPPr(); + CTOnOff ct_pageBreak = ppr.isSetPageBreakBefore() ? ppr + .getPageBreakBefore() : null; + if (ct_pageBreak != null + && ct_pageBreak.getVal().intValue() == STOnOff.INT_TRUE) { + return true; } - STBorder.Enum ptrn = ct != null ? ct.getVal() : STBorder.NONE; - return Borders.valueOf(ptrn.intValue()); + return false; } /** @@ -819,29 +856,14 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para } /** - * Specifies that when rendering this document in a paginated - * view, the contents of this paragraph are rendered on the start of a new - * page in the document. - *

    - * If this element is omitted on a given paragraph, - * its value is determined by the setting previously set at any level of the - * style hierarchy (i.e. that previous setting remains unchanged). If this - * setting is never specified in the style hierarchy, then this property - * shall not be applied. Since the paragraph is specified to start on a new - * page, it begins page two even though it could have fit on page one. - *

    + * Specifies the spacing that should be added after the last line in this + * paragraph in the document in absolute units. * - * @return boolean - if page break is set + * @return int - value representing the spacing after the paragraph */ - public boolean isPageBreak() { - CTPPr ppr = getCTPPr(); - CTOnOff ct_pageBreak = ppr.isSetPageBreakBefore() ? ppr - .getPageBreakBefore() : null; - if (ct_pageBreak != null - && ct_pageBreak.getVal().intValue() == STOnOff.INT_TRUE) { - return true; - } - return false; + public int getSpacingAfter() { + CTSpacing spacing = getCTSpacing(false); + return (spacing != null && spacing.isSetAfter()) ? spacing.getAfter().intValue() : -1; } /** @@ -869,11 +891,12 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para * Specifies the spacing that should be added after the last line in this * paragraph in the document in absolute units. * - * @return int - value representing the spacing after the paragraph + * @return bigInteger - value representing the spacing after the paragraph + * @see #setSpacingAfterLines(int) */ - public int getSpacingAfter() { + public int getSpacingAfterLines() { CTSpacing spacing = getCTSpacing(false); - return (spacing != null && spacing.isSetAfter()) ? spacing.getAfter().intValue() : -1; + return (spacing != null && spacing.isSetAfterLines()) ? spacing.getAfterLines().intValue() : -1; } /** @@ -899,20 +922,18 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para spacing.setAfterLines(bi); } - /** - * Specifies the spacing that should be added after the last line in this + * Specifies the spacing that should be added above the first line in this * paragraph in the document in absolute units. * - * @return bigInteger - value representing the spacing after the paragraph - * @see #setSpacingAfterLines(int) + * @return the spacing that should be added above the first line + * @see #setSpacingBefore(int) */ - public int getSpacingAfterLines() { + public int getSpacingBefore() { CTSpacing spacing = getCTSpacing(false); - return (spacing != null && spacing.isSetAfterLines()) ? spacing.getAfterLines().intValue() : -1; + return (spacing != null && spacing.isSetBefore()) ? spacing.getBefore().intValue() : -1; } - /** * Specifies the spacing that should be added above the first line in this * paragraph in the document in absolute units. @@ -930,15 +951,16 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para } /** - * Specifies the spacing that should be added above the first line in this - * paragraph in the document in absolute units. + * Specifies the spacing that should be added before the first line in this paragraph in the + * document in line units. + * The value of this attribute is specified in one hundredths of a line. * - * @return the spacing that should be added above the first line - * @see #setSpacingBefore(int) + * @return the spacing that should be added before the first line in this paragraph + * @see #setSpacingBeforeLines(int) */ - public int getSpacingBefore() { + public int getSpacingBeforeLines() { CTSpacing spacing = getCTSpacing(false); - return (spacing != null && spacing.isSetBefore()) ? spacing.getBefore().intValue() : -1; + return (spacing != null && spacing.isSetBeforeLines()) ? spacing.getBeforeLines().intValue() : -1; } /** @@ -959,33 +981,6 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para spacing.setBeforeLines(bi); } - /** - * Specifies the spacing that should be added before the first line in this paragraph in the - * document in line units. - * The value of this attribute is specified in one hundredths of a line. - * - * @return the spacing that should be added before the first line in this paragraph - * @see #setSpacingBeforeLines(int) - */ - public int getSpacingBeforeLines() { - CTSpacing spacing = getCTSpacing(false); - return (spacing != null && spacing.isSetBeforeLines()) ? spacing.getBeforeLines().intValue() : -1; - } - - - /** - * Specifies how the spacing between lines is calculated as stored in the - * line attribute. If this attribute is omitted, then it shall be assumed to - * be of a value auto if a line attribute value is present. - * - * @param rule - * @see LineSpacingRule - */ - public void setSpacingLineRule(LineSpacingRule rule) { - CTSpacing spacing = getCTSpacing(true); - spacing.setLineRule(STLineSpacingRule.Enum.forInt(rule.getValue())); - } - /** * Specifies how the spacing between lines is calculated as stored in the * line attribute. If this attribute is omitted, then it shall be assumed to @@ -1001,24 +996,17 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para .getLineRule().intValue()) : LineSpacingRule.AUTO; } - /** - * Specifies the indentation which shall be placed between the left text - * margin for this paragraph and the left edge of that paragraph's content - * in a left to right paragraph, and the right text margin and the right - * edge of that paragraph's text in a right to left paragraph - *

    - * If this attribute is omitted, its value shall be assumed to be zero. - * Negative values are defined such that the text is moved past the text margin, - * positive values move the text inside the text margin. - *

    + * Specifies how the spacing between lines is calculated as stored in the + * line attribute. If this attribute is omitted, then it shall be assumed to + * be of a value auto if a line attribute value is present. * - * @param indentation + * @param rule + * @see LineSpacingRule */ - public void setIndentationLeft(int indentation) { - CTInd indent = getCTInd(true); - BigInteger bi = new BigInteger("" + indentation); - indent.setLeft(bi); + public void setSpacingLineRule(LineSpacingRule rule) { + CTSpacing spacing = getCTSpacing(true); + spacing.setLineRule(STLineSpacingRule.Enum.forInt(rule.getValue())); } /** @@ -1039,10 +1027,10 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para return (indentation != null && indentation.isSetLeft()) ? indentation.getLeft().intValue() : -1; } - + /** - * Specifies the indentation which shall be placed between the right text - * margin for this paragraph and the right edge of that paragraph's content + * Specifies the indentation which shall be placed between the left text + * margin for this paragraph and the left edge of that paragraph's content * in a left to right paragraph, and the right text margin and the right * edge of that paragraph's text in a right to left paragraph *

    @@ -1053,10 +1041,10 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para * * @param indentation */ - public void setIndentationRight(int indentation) { + public void setIndentationLeft(int indentation) { CTInd indent = getCTInd(true); BigInteger bi = new BigInteger("" + indentation); - indent.setRight(bi); + indent.setLeft(bi); } /** @@ -1080,23 +1068,22 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para } /** - * Specifies the indentation which shall be removed from the first line of - * the parent paragraph, by moving the indentation on the first line back - * towards the beginning of the direction of text flow. - * This indentation is specified relative to the paragraph indentation which is specified for - * all other lines in the parent paragraph. + * Specifies the indentation which shall be placed between the right text + * margin for this paragraph and the right edge of that paragraph's content + * in a left to right paragraph, and the right text margin and the right + * edge of that paragraph's text in a right to left paragraph *

    - * The firstLine and hanging attributes are mutually exclusive, if both are specified, then the - * firstLine value is ignored. + * If this attribute is omitted, its value shall be assumed to be zero. + * Negative values are defined such that the text is moved past the text margin, + * positive values move the text inside the text margin. *

    * * @param indentation */ - - public void setIndentationHanging(int indentation) { + public void setIndentationRight(int indentation) { CTInd indent = getCTInd(true); BigInteger bi = new BigInteger("" + indentation); - indent.setHanging(bi); + indent.setRight(bi); } /** @@ -1118,23 +1105,23 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para } /** - * Specifies the additional indentation which shall be applied to the first - * line of the parent paragraph. This additional indentation is specified - * relative to the paragraph indentation which is specified for all other - * lines in the parent paragraph. - * The firstLine and hanging attributes are - * mutually exclusive, if both are specified, then the firstLine value is - * ignored. - * If the firstLineChars attribute is also specified, then this - * value is ignored. If this attribute is omitted, then its value shall be - * assumed to be zero (if needed). + * Specifies the indentation which shall be removed from the first line of + * the parent paragraph, by moving the indentation on the first line back + * towards the beginning of the direction of text flow. + * This indentation is specified relative to the paragraph indentation which is specified for + * all other lines in the parent paragraph. + *

    + * The firstLine and hanging attributes are mutually exclusive, if both are specified, then the + * firstLine value is ignored. + *

    * * @param indentation */ - public void setIndentationFirstLine(int indentation) { + + public void setIndentationHanging(int indentation) { CTInd indent = getCTInd(true); BigInteger bi = new BigInteger("" + indentation); - indent.setFirstLine(bi); + indent.setHanging(bi); } /** @@ -1158,9 +1145,30 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para : -1; } + /** + * Specifies the additional indentation which shall be applied to the first + * line of the parent paragraph. This additional indentation is specified + * relative to the paragraph indentation which is specified for all other + * lines in the parent paragraph. + * The firstLine and hanging attributes are + * mutually exclusive, if both are specified, then the firstLine value is + * ignored. + * If the firstLineChars attribute is also specified, then this + * value is ignored. If this attribute is omitted, then its value shall be + * assumed to be zero (if needed). + * + * @param indentation + */ + public void setIndentationFirstLine(int indentation) { + CTInd indent = getCTInd(true); + BigInteger bi = new BigInteger("" + indentation); + indent.setFirstLine(bi); + } + public int getIndentFromLeft() { return getIndentFromLeft(); } + public void setIndentFromLeft(int dxaLeft) { setIndentationLeft(dxaLeft); } @@ -1168,6 +1176,7 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para public int getIndentFromRight() { return getIndentFromRight(); } + public void setIndentFromRight(int dxaRight) { setIndentationRight(dxaRight); } @@ -1175,31 +1184,11 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para public int getFirstLineIndent() { return getIndentationFirstLine(); } + public void setFirstLineIndent(int first) { setIndentationFirstLine(first); } - /** - * This element specifies whether a consumer shall break Latin text which - * exceeds the text extents of a line by breaking the word across two lines - * (breaking on the character level) or by moving the word to the following - * line (breaking on the word level). - * - * @param wrap - boolean - */ - public void setWordWrapped(boolean wrap) { - CTOnOff wordWrap = getCTPPr().isSetWordWrap() ? getCTPPr() - .getWordWrap() : getCTPPr().addNewWordWrap(); - if (wrap) - wordWrap.setVal(STOnOff.TRUE); - else - wordWrap.unsetVal(); - } - @Deprecated - public void setWordWrap(boolean wrap) { - setWordWrapped(wrap); - } - /** * This element specifies whether a consumer shall break Latin text which * exceeds the text extents of a line by breaking the word across two lines @@ -1218,13 +1207,46 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para } return false; } + + /** + * This element specifies whether a consumer shall break Latin text which + * exceeds the text extents of a line by breaking the word across two lines + * (breaking on the character level) or by moving the word to the following + * line (breaking on the word level). + * + * @param wrap - boolean + */ + public void setWordWrapped(boolean wrap) { + CTOnOff wordWrap = getCTPPr().isSetWordWrap() ? getCTPPr() + .getWordWrap() : getCTPPr().addNewWordWrap(); + if (wrap) + wordWrap.setVal(STOnOff.TRUE); + else + wordWrap.unsetVal(); + } + public boolean isWordWrap() { return isWordWrapped(); } + @Deprecated + public void setWordWrap(boolean wrap) { + setWordWrapped(wrap); + } + + /** + * @return the style of the paragraph + */ + public String getStyle() { + CTPPr pr = getCTPPr(); + CTString style = pr.isSetPStyle() ? pr.getPStyle() : null; + return style != null ? style.getVal() : null; + } + /** * This method provides a style to the paragraph * This is useful when, e.g. an Heading style has to be assigned + * * @param newStyle */ public void setStyle(String newStyle) { @@ -1232,15 +1254,6 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para CTString style = pr.getPStyle() != null ? pr.getPStyle() : pr.addNewPStyle(); style.setVal(newStyle); } - - /** - * @return the style of the paragraph - */ - public String getStyle() { - CTPPr pr = getCTPPr(); - CTString style = pr.isSetPStyle() ? pr.getPStyle() : null; - return style != null ? style.getVal() : null; - } /** * Get a copy of the currently used CTPBrd, if none is used, return @@ -1287,20 +1300,21 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para : paragraph.getPPr(); return pr; } - - + + /** - * add a new run at the end of the position of + * add a new run at the end of the position of * the content of parameter run + * * @param run */ - protected void addRun(CTR run){ + protected void addRun(CTR run) { int pos; pos = paragraph.sizeOfRArray(); paragraph.addNewR(); paragraph.setRArray(pos, run); } - + /** * Appends a new run to this paragraph * @@ -1315,14 +1329,15 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para /** * insert a new Run in RunArray + * * @param pos - * @return the inserted run + * @return the inserted run */ - public XWPFRun insertNewRun(int pos){ + public XWPFRun insertNewRun(int pos) { if (pos >= 0 && pos <= paragraph.sizeOfRArray()) { CTR ctRun = paragraph.insertNewR(pos); XWPFRun newRun = new XWPFRun(ctRun, this); - + // To update the iruns, find where we're going // in the normal runs, and go in there int iPos = iruns.size(); @@ -1334,10 +1349,10 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para } } iruns.add(iPos, newRun); - + // Runs itself is easy to update runs.add(pos, newRun); - + return newRun; } return null; @@ -1347,42 +1362,43 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para * this methods parse the paragraph and search for the string searched. * If it finds the string, it will return true and the position of the String * will be saved in the parameter startPos. + * * @param searched * @param startPos */ - public TextSegement searchText(String searched,PositionInParagraph startPos) { - int startRun = startPos.getRun(), - startText = startPos.getText(), - startChar = startPos.getChar(); + public TextSegement searchText(String searched, PositionInParagraph startPos) { + int startRun = startPos.getRun(), + startText = startPos.getText(), + startChar = startPos.getChar(); int beginRunPos = 0, candCharPos = 0; boolean newList = false; CTR[] rArray = paragraph.getRArray(); - for (int runPos=startRun; runPos=startText){ - String candidate = ((CTText)o).getStringValue(); - if(runPos==startRun) - charPos= startChar; + if (o instanceof CTText) { + if (textPos >= startText) { + String candidate = ((CTText) o).getStringValue(); + if (runPos == startRun) + charPos = startChar; else charPos = 0; - - for(; charPos= 0 && pos < paragraph.sizeOfRArray()) { // Remove the run from our high level lists XWPFRun run = runs.get(pos); @@ -1468,23 +1483,24 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para /** * returns the type of the BodyElement Paragraph + * * @see org.apache.poi.xwpf.usermodel.IBodyElement#getElementType() */ public BodyElementType getElementType() { return BodyElementType.PARAGRAPH; } - public IBody getBody() - { + public IBody getBody() { return part; } /** * returns the part of the bodyElement + * * @see org.apache.poi.xwpf.usermodel.IBody#getPart() */ public POIXMLDocumentPart getPart() { - if(part != null){ + if (part != null) { return part.getPart(); } return null; @@ -1492,7 +1508,7 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para /** * returns the partType of the bodyPart which owns the bodyElement - * + * * @see org.apache.poi.xwpf.usermodel.IBody#getPartType() */ public BodyType getPartType() { @@ -1501,7 +1517,7 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para /** * adds a new Run to the Paragraph - * + * * @param r */ public void addRun(XWPFRun r) { @@ -1512,7 +1528,7 @@ public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Para /** * return the XWPFRun-Element which owns the CTR run-Element - * + * * @param r */ public XWPFRun getRun(CTR r) { diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFPicture.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFPicture.java index eba552cc2..c69e8dd1b 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFPicture.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFPicture.java @@ -28,51 +28,51 @@ import org.openxmlformats.schemas.drawingml.x2006.picture.CTPicture; public class XWPFPicture { private CTPicture ctPic; - private String description; - private XWPFRun run; - - public XWPFPicture(CTPicture ctPic, XWPFRun run){ - this.run = run; - this.ctPic = ctPic; - description = ctPic.getNvPicPr().getCNvPr().getDescr(); + private String description; + private XWPFRun run; + + public XWPFPicture(CTPicture ctPic, XWPFRun run) { + this.run = run; + this.ctPic = ctPic; + description = ctPic.getNvPicPr().getCNvPr().getDescr(); } - - /** - * Link Picture with PictureData - * @param rel - */ - public void setPictureReference(PackageRelationship rel){ - ctPic.getBlipFill().getBlip().setEmbed(rel.getId()); - } - + + /** + * Link Picture with PictureData + * + * @param rel + */ + public void setPictureReference(PackageRelationship rel) { + ctPic.getBlipFill().getBlip().setEmbed(rel.getId()); + } + /** * Return the underlying CTPicture bean that holds all properties for this picture - * - * @return the underlying CTPicture bean - */ - public CTPicture getCTPicture(){ - return ctPic; - } - + * + * @return the underlying CTPicture bean + */ + public CTPicture getCTPicture() { + return ctPic; + } + /** - * Get the PictureData of the Picture, if present. - * Note - not all kinds of picture have data - */ - public XWPFPictureData getPictureData(){ - CTBlipFillProperties blipProps = ctPic.getBlipFill(); - - if(blipProps == null || !blipProps.isSetBlip()) { - // return null if Blip data is missing - return null; - } - - String blipId = blipProps.getBlip().getEmbed(); - POIXMLDocumentPart part = run.getParent().getPart(); - if (part != null) - { - POIXMLDocumentPart relatedPart = part.getRelationById(blipId); - if (relatedPart instanceof XWPFPictureData) { - return (XWPFPictureData) relatedPart; + * Get the PictureData of the Picture, if present. + * Note - not all kinds of picture have data + */ + public XWPFPictureData getPictureData() { + CTBlipFillProperties blipProps = ctPic.getBlipFill(); + + if (blipProps == null || !blipProps.isSetBlip()) { + // return null if Blip data is missing + return null; + } + + String blipId = blipProps.getBlip().getEmbed(); + POIXMLDocumentPart part = run.getParent().getPart(); + if (part != null) { + POIXMLDocumentPart relatedPart = part.getRelationById(blipId); + if (relatedPart instanceof XWPFPictureData) { + return (XWPFPictureData) relatedPart; } } return null; diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFPictureData.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFPictureData.java index d7f225358..d685aefca 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFPictureData.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFPictureData.java @@ -40,12 +40,13 @@ import org.apache.poi.util.IOUtils; public class XWPFPictureData extends POIXMLDocumentPart { /** - * Relationships for each known picture type - */ - protected static final POIXMLRelation[] RELATIONS; - static { - RELATIONS = new POIXMLRelation[13]; - RELATIONS[Document.PICTURE_TYPE_EMF] = XWPFRelation.IMAGE_EMF; + * Relationships for each known picture type + */ + protected static final POIXMLRelation[] RELATIONS; + + static { + RELATIONS = new POIXMLRelation[13]; + RELATIONS[Document.PICTURE_TYPE_EMF] = XWPFRelation.IMAGE_EMF; RELATIONS[Document.PICTURE_TYPE_WMF] = XWPFRelation.IMAGE_WMF; RELATIONS[Document.PICTURE_TYPE_PICT] = XWPFRelation.IMAGE_PICT; RELATIONS[Document.PICTURE_TYPE_JPEG] = XWPFRelation.IMAGE_JPEG; @@ -59,24 +60,23 @@ public class XWPFPictureData extends POIXMLDocumentPart { } private Long checksum = null; - - /** - * Create a new XWPFGraphicData node - * - */ - protected XWPFPictureData() { - super(); + + /** + * Create a new XWPFGraphicData node + */ + protected XWPFPictureData() { + super(); } /** * Construct XWPFPictureData from a package part - * - * @param part the package part holding the drawing data, - * @param rel the package relationship holding this drawing, - * the relationship type must be http://schemas.openxmlformats.org/officeDocument/2006/relationships/image - */ - public XWPFPictureData(PackagePart part, PackageRelationship rel) { - super(part, rel); + * + * @param part the package part holding the drawing data, + * @param rel the package relationship holding this drawing, + * the relationship type must be http://schemas.openxmlformats.org/officeDocument/2006/relationships/image + */ + public XWPFPictureData(PackagePart part, PackageRelationship rel) { + super(part, rel); } @Override @@ -91,12 +91,13 @@ public class XWPFPictureData extends POIXMLDocumentPart { * You can grab the picture data directly from the underlying package part as follows: *
    * - * InputStream is = getPackagePart().getInputStream(); - * - *

    - * @return the Picture data. - */ - public byte[] getData() { + * InputStream is = getPackagePart().getInputStream(); + * + *

    + * + * @return the Picture data. + */ + public byte[] getData() { try { return IOUtils.toByteArray(getPackagePart().getInputStream()); } catch (IOException e) { @@ -115,21 +116,22 @@ public class XWPFPictureData extends POIXMLDocumentPart { return null; return name.substring(name.lastIndexOf('/') + 1); } - - /** - * Suggests a file extension for this image. - * @return the file extension. - */ - public String suggestFileExtension() { + + /** + * Suggests a file extension for this image. + * + * @return the file extension. + */ + public String suggestFileExtension() { return getPackagePart().getPartName().getExtension(); } - - /** - * Return an integer constant that specifies type of this picture - * - * @return an integer constant that specifies type of this picture - * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_EMF - * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_WMF + + /** + * Return an integer constant that specifies type of this picture + * + * @return an integer constant that specifies type of this picture + * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_EMF + * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_WMF * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_PICT * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_JPEG * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_PNG @@ -217,13 +219,13 @@ public class XWPFPictureData extends POIXMLDocumentPart { if (!ownPackage.equals(foreignPackage)) { return false; - } - } - } - - Long foreignChecksum = picData.getChecksum(); - Long localChecksum = getChecksum(); - + } + } + } + + Long foreignChecksum = picData.getChecksum(); + Long localChecksum = getChecksum(); + if (!(localChecksum.equals(foreignChecksum))) { return false; } @@ -233,13 +235,13 @@ public class XWPFPictureData extends POIXMLDocumentPart { @Override public int hashCode() { return getChecksum().hashCode(); - } - - /** - * *PictureData objects store the actual content in the part directly without keeping a - * copy like all others therefore we need to handle them differently. - */ - @Override + } + + /** + * *PictureData objects store the actual content in the part directly without keeping a + * copy like all others therefore we need to handle them differently. + */ + @Override protected void prepareForCommit() { // do not clear the part here } diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java index 06642faaa..fae051e74 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java @@ -33,7 +33,6 @@ public final class XWPFRelation extends POIXMLRelation { */ protected static final Map _table = new HashMap(); - public static final XWPFRelation DOCUMENT = new XWPFRelation( "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument", @@ -41,10 +40,10 @@ public final class XWPFRelation extends POIXMLRelation { null ); public static final XWPFRelation TEMPLATE = new XWPFRelation( - "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml", - "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument", - "/word/document.xml", - null + "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument", + "/word/document.xml", + null ); public static final XWPFRelation MACRO_DOCUMENT = new XWPFRelation( "application/vnd.ms-word.document.macroEnabled.main+xml", @@ -64,12 +63,11 @@ public final class XWPFRelation extends POIXMLRelation { "/word/glossary/document.xml", null ); - public static final XWPFRelation NUMBERING = new XWPFRelation( - "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml", - "http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering", - "/word/numbering.xml", - XWPFNumbering.class + "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering", + "/word/numbering.xml", + XWPFNumbering.class ); public static final XWPFRelation FONT_TABLE = new XWPFRelation( "application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml", @@ -126,10 +124,10 @@ public final class XWPFRelation extends POIXMLRelation { null ); public static final XWPFRelation FOOTNOTE = new XWPFRelation( - "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml", - "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes", - "/word/footnotes.xml", - XWPFFootnotes.class + "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes", + "/word/footnotes.xml", + XWPFFootnotes.class ); public static final XWPFRelation ENDNOTE = new XWPFRelation( null, @@ -137,52 +135,51 @@ public final class XWPFRelation extends POIXMLRelation { null, null ); - /** * Supported image formats */ public static final XWPFRelation IMAGE_EMF = new XWPFRelation( - "image/x-emf", - "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", - "/word/media/image#.emf", - XWPFPictureData.class - ); - public static final XWPFRelation IMAGE_WMF = new XWPFRelation( - "image/x-wmf", - "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", - "/word/media/image#.wmf", - XWPFPictureData.class - ); - public static final XWPFRelation IMAGE_PICT = new XWPFRelation( - "image/pict", - "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", - "/word/media/image#.pict", - XWPFPictureData.class - ); - public static final XWPFRelation IMAGE_JPEG = new XWPFRelation( - "image/jpeg", - "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", - "/word/media/image#.jpeg", - XWPFPictureData.class - ); - public static final XWPFRelation IMAGE_PNG = new XWPFRelation( - "image/png", - "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", - "/word/media/image#.png", - XWPFPictureData.class - ); - public static final XWPFRelation IMAGE_DIB = new XWPFRelation( - "image/dib", - "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", - "/word/media/image#.dib", - XWPFPictureData.class - ); - public static final XWPFRelation IMAGE_GIF = new XWPFRelation( - "image/gif", - "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", - "/word/media/image#.gif", - XWPFPictureData.class - ); + "image/x-emf", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", + "/word/media/image#.emf", + XWPFPictureData.class + ); + public static final XWPFRelation IMAGE_WMF = new XWPFRelation( + "image/x-wmf", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", + "/word/media/image#.wmf", + XWPFPictureData.class + ); + public static final XWPFRelation IMAGE_PICT = new XWPFRelation( + "image/pict", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", + "/word/media/image#.pict", + XWPFPictureData.class + ); + public static final XWPFRelation IMAGE_JPEG = new XWPFRelation( + "image/jpeg", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", + "/word/media/image#.jpeg", + XWPFPictureData.class + ); + public static final XWPFRelation IMAGE_PNG = new XWPFRelation( + "image/png", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", + "/word/media/image#.png", + XWPFPictureData.class + ); + public static final XWPFRelation IMAGE_DIB = new XWPFRelation( + "image/dib", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", + "/word/media/image#.dib", + XWPFPictureData.class + ); + public static final XWPFRelation IMAGE_GIF = new XWPFRelation( + "image/gif", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", + "/word/media/image#.gif", + XWPFPictureData.class + ); public static final XWPFRelation IMAGE_TIFF = new XWPFRelation( "image/tiff", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", @@ -207,14 +204,12 @@ public final class XWPFRelation extends POIXMLRelation { "/word/media/image#.wpg", XWPFPictureData.class ); - - public static final XWPFRelation IMAGES = new XWPFRelation( - null, - "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", - null, - null - ); - + public static final XWPFRelation IMAGES = new XWPFRelation( + null, + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", + null, + null + ); private XWPFRelation(String type, String rel, String defaultName, Class cls) { super(type, rel, defaultName, cls); diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java index 07debb98c..1c14bb274 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java @@ -32,19 +32,52 @@ import org.apache.poi.wp.usermodel.CharacterRun; import org.apache.xmlbeans.XmlCursor; import org.apache.xmlbeans.XmlException; import org.apache.xmlbeans.XmlObject; -import org.apache.xmlbeans.XmlString; -import org.apache.xmlbeans.XmlToken; -import org.apache.xmlbeans.impl.values.XmlAnyTypeImpl; -import org.openxmlformats.schemas.drawingml.x2006.main.*; -import org.openxmlformats.schemas.drawingml.x2006.picture.CTPicture; -import org.openxmlformats.schemas.drawingml.x2006.picture.CTPictureNonVisual; -import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTAnchor; -import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTInline; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.*; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTColor; -import org.w3c.dom.NodeList; -import org.w3c.dom.Text; - +import org.apache.xmlbeans.XmlString; +import org.apache.xmlbeans.XmlToken; +import org.apache.xmlbeans.impl.values.XmlAnyTypeImpl; +import org.openxmlformats.schemas.drawingml.x2006.main.CTBlip; +import org.openxmlformats.schemas.drawingml.x2006.main.CTBlipFillProperties; +import org.openxmlformats.schemas.drawingml.x2006.main.CTGraphicalObject; +import org.openxmlformats.schemas.drawingml.x2006.main.CTGraphicalObjectData; +import org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps; +import org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualPictureProperties; +import org.openxmlformats.schemas.drawingml.x2006.main.CTPoint2D; +import org.openxmlformats.schemas.drawingml.x2006.main.CTPositiveSize2D; +import org.openxmlformats.schemas.drawingml.x2006.main.CTPresetGeometry2D; +import org.openxmlformats.schemas.drawingml.x2006.main.CTShapeProperties; +import org.openxmlformats.schemas.drawingml.x2006.main.CTTransform2D; +import org.openxmlformats.schemas.drawingml.x2006.main.STShapeType; +import org.openxmlformats.schemas.drawingml.x2006.picture.CTPicture; +import org.openxmlformats.schemas.drawingml.x2006.picture.CTPictureNonVisual; +import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTAnchor; +import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTInline; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBr; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTColor; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDrawing; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTEmpty; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFFCheckBox; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFldChar; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFonts; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFtnEdnRef; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHpsMeasure; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTOnOff; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPTab; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSignedHpsMeasure; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSignedTwipsMeasure; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTText; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTUnderline; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTVerticalAlignRun; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STBrClear; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STBrType; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STFldCharType; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STUnderline; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STVerticalAlignRun; +import org.w3c.dom.NodeList; +import org.w3c.dom.Text; + /** * XWPFRun object defines a region of text with a common set of properties */ @@ -52,22 +85,12 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun { private CTR run; private String pictureText; private IRunBody parent; - private List pictures; - - /** - * @see [MS-OI29500] Run Fonts - */ - public static enum FontCharRange { - ascii /* char 0-127 */, - cs /* complex symbol */, - eastAsia /* east asia */, - hAnsi /* high ansi */ - }; - - /** - * @param r the CTR bean which holds the run attributes - * @param p the parent paragraph - */ + private List pictures; + + /** + * @param r the CTR bean which holds the run attributes + * @param p the parent paragraph + */ @SuppressWarnings("deprecation") public XWPFRun(CTR r, IRunBody p) { this.run = r; @@ -92,13 +115,13 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun { // Look for any text in any of our pictures or drawings StringBuilder text = new StringBuilder(); - List pictTextObjs = new ArrayList(); - pictTextObjs.addAll(Arrays.asList(r.getPictArray())); - pictTextObjs.addAll(Arrays.asList(r.getDrawingArray())); - for(XmlObject o : pictTextObjs) { - XmlObject[] ts = o.selectPath("declare namespace w='http://schemas.openxmlformats.org/wordprocessingml/2006/main' .//w:t"); - for (XmlObject t : ts) { - NodeList kids = t.getDomNode().getChildNodes(); + List pictTextObjs = new ArrayList(); + pictTextObjs.addAll(Arrays.asList(r.getPictArray())); + pictTextObjs.addAll(Arrays.asList(r.getDrawingArray())); + for (XmlObject o : pictTextObjs) { + XmlObject[] ts = o.selectPath("declare namespace w='http://schemas.openxmlformats.org/wordprocessingml/2006/main' .//w:t"); + for (XmlObject t : ts) { + NodeList kids = t.getDomNode().getChildNodes(); for (int n = 0; n < kids.getLength(); n++) { if (kids.item(n) instanceof Text) { if (text.length() > 0) @@ -110,112 +133,134 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun { } pictureText = text.toString(); - // Do we have any embedded pictures? - // (They're a different CTPicture, under the drawingml namespace) - pictures = new ArrayList(); - for(XmlObject o : pictTextObjs) { - for(CTPicture pict : getCTPictures(o)) { - XWPFPicture picture = new XWPFPicture(pict, this); - pictures.add(picture); - } - } + // Do we have any embedded pictures? + // (They're a different CTPicture, under the drawingml namespace) + pictures = new ArrayList(); + for (XmlObject o : pictTextObjs) { + for (CTPicture pict : getCTPictures(o)) { + XWPFPicture picture = new XWPFPicture(pict, this); + pictures.add(picture); + } + } + } + + ; + + /** + * @deprecated Use {@link XWPFRun#XWPFRun(CTR, IRunBody)} + */ + public XWPFRun(CTR r, XWPFParagraph p) { + this(r, (IRunBody) p); + } + + /** + * Add the xml:spaces="preserve" attribute if the string has leading or trailing white spaces + * + * @param xs the string to check + */ + static void preserveSpaces(XmlString xs) { + String text = xs.getStringValue(); + if (text != null && (text.startsWith(" ") || text.endsWith(" "))) { + XmlCursor c = xs.newCursor(); + c.toNextToken(); + c.insertAttributeWithValue(new QName("http://www.w3.org/XML/1998/namespace", "space"), "preserve"); + c.dispose(); + } + } + + private List getCTPictures(XmlObject o) { + List pictures = new ArrayList(); + XmlObject[] picts = o.selectPath("declare namespace pic='" + CTPicture.type.getName().getNamespaceURI() + "' .//pic:pic"); + for (XmlObject pict : picts) { + if (pict instanceof XmlAnyTypeImpl) { + // Pesky XmlBeans bug - see Bugzilla #49934 + try { + pict = CTPicture.Factory.parse(pict.toString()); + } catch (XmlException e) { + throw new POIXMLException(e); + } + } + if (pict instanceof CTPicture) { + pictures.add((CTPicture) pict); + } + } + return pictures; } - /** - * @deprecated Use {@link XWPFRun#XWPFRun(CTR, IRunBody)} - */ - public XWPFRun(CTR r, XWPFParagraph p) { - this(r, (IRunBody)p); - } - - private List getCTPictures(XmlObject o) { - List pictures = new ArrayList(); - XmlObject[] picts = o.selectPath("declare namespace pic='"+CTPicture.type.getName().getNamespaceURI()+"' .//pic:pic"); - for(XmlObject pict : picts) { - if(pict instanceof XmlAnyTypeImpl) { - // Pesky XmlBeans bug - see Bugzilla #49934 - try { - pict = CTPicture.Factory.parse( pict.toString() ); - } catch(XmlException e) { - throw new POIXMLException(e); - } - } - if(pict instanceof CTPicture) { - pictures.add((CTPicture)pict); - } - } - return pictures; - } - - /** - * Get the currently used CTR object - * @return ctr object - */ - @Internal + + /** + * Get the currently used CTR object + * + * @return ctr object + */ + @Internal public CTR getCTR() { return run; } - - /** - * Get the currently referenced paragraph/SDT object - * @return current parent - */ - public IRunBody getParent() { - return parent; - } - /** - * Get the currently referenced paragraph, or null if a SDT object - * @deprecated use {@link XWPFRun#getParent()} instead - */ - public XWPFParagraph getParagraph() { - if (parent instanceof XWPFParagraph) - return (XWPFParagraph)parent; - return null; - } - - /** - * @return The {@link XWPFDocument} instance, this run belongs to, or - * null if parent structure (paragraph > document) is not properly set. - */ - public XWPFDocument getDocument() { - if (parent != null) { + + /** + * Get the currently referenced paragraph/SDT object + * + * @return current parent + */ + public IRunBody getParent() { + return parent; + } + + /** + * Get the currently referenced paragraph, or null if a SDT object + * + * @deprecated use {@link XWPFRun#getParent()} instead + */ + public XWPFParagraph getParagraph() { + if (parent instanceof XWPFParagraph) + return (XWPFParagraph) parent; + return null; + } + + /** + * @return The {@link XWPFDocument} instance, this run belongs to, or + * null if parent structure (paragraph > document) is not properly set. + */ + public XWPFDocument getDocument() { + if (parent != null) { return parent.getDocument(); } return null; } /** - * For isBold, isItalic etc - */ - private boolean isCTOnOff(CTOnOff onoff) { - if(! onoff.isSetVal()) - return true; - if(onoff.getVal() == STOnOff.ON) - return true; - if(onoff.getVal() == STOnOff.TRUE) - return true; - return false; - } + * For isBold, isItalic etc + */ + private boolean isCTOnOff(CTOnOff onoff) { + if (!onoff.isSetVal()) + return true; + if (onoff.getVal() == STOnOff.ON) + return true; + if (onoff.getVal() == STOnOff.TRUE) + return true; + return false; + } /** * Whether the bold property shall be applied to all non-complex script * characters in the contents of this run when displayed in a document * * @return true if the bold property is applied - */ - public boolean isBold() { - CTRPr pr = run.getRPr(); - if(pr == null || !pr.isSetB()) { - return false; - } - return isCTOnOff(pr.getB()); + */ + public boolean isBold() { + CTRPr pr = run.getRPr(); + if (pr == null || !pr.isSetB()) { + return false; + } + return isCTOnOff(pr.getB()); } - - /** - * Whether the bold property shall be applied to all non-complex script - * characters in the contents of this run when displayed in a document. - *

    - * This formatting property is a toggle property, which specifies that its - * behavior differs between its use within a style definition and its use as + + /** + * Whether the bold property shall be applied to all non-complex script + * characters in the contents of this run when displayed in a document. + *

    + * This formatting property is a toggle property, which specifies that its + * behavior differs between its use within a style definition and its use as * direct formatting. When used as part of a style definition, setting this * property shall toggle the current state of that property as specified up * to this point in the hierarchy (i.e. applied to not applied, and vice @@ -241,25 +286,26 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun { } /** - * Get text color. The returned value is a string in the hex form "RRGGBB". - */ - public String getColor() { - String color = null; - if (run.isSetRPr()) { - CTRPr pr = run.getRPr(); - if (pr.isSetColor()) { - CTColor clr = pr.getColor(); - color = clr.xgetVal().getStringValue(); - } - } - return color; - } - - /** - * Set text color. - * @param rgbStr - the desired color, in the hex form "RRGGBB". - */ - public void setColor(String rgbStr) { + * Get text color. The returned value is a string in the hex form "RRGGBB". + */ + public String getColor() { + String color = null; + if (run.isSetRPr()) { + CTRPr pr = run.getRPr(); + if (pr.isSetColor()) { + CTColor clr = pr.getColor(); + color = clr.xgetVal().getStringValue(); + } + } + return color; + } + + /** + * Set text color. + * + * @param rgbStr - the desired color, in the hex form "RRGGBB". + */ + public void setColor(String rgbStr) { CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr(); CTColor color = pr.isSetColor() ? pr.getColor() : pr.addNewColor(); color.setVal(rgbStr); @@ -285,23 +331,24 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun { /** * Sets the text of this text run * - * @param value the literal text which shall be displayed in the document - */ - public void setText(String value) { - setText(value,run.sizeOfTArray()); - } - - /** - * Sets the text of this text run in the - * - * @param value the literal text which shall be displayed in the document - * @param pos - position in the text array (NB: 0 based) - */ - public void setText(String value, int pos) { - if(pos > run.sizeOfTArray()) throw new ArrayIndexOutOfBoundsException("Value too large for the parameter position in XWPFRun.setText(String value,int pos)"); - CTText t = (pos < run.sizeOfTArray() && pos >= 0) ? run.getTArray(pos) : run.addNewT(); - t.setStringValue(value); - preserveSpaces(t); + * @param value the literal text which shall be displayed in the document + */ + public void setText(String value) { + setText(value, run.sizeOfTArray()); + } + + /** + * Sets the text of this text run in the + * + * @param value the literal text which shall be displayed in the document + * @param pos - position in the text array (NB: 0 based) + */ + public void setText(String value, int pos) { + if (pos > run.sizeOfTArray()) + throw new ArrayIndexOutOfBoundsException("Value too large for the parameter position in XWPFRun.setText(String value,int pos)"); + CTText t = (pos < run.sizeOfTArray() && pos >= 0) ? run.getTArray(pos) : run.addNewT(); + t.setStringValue(value); + preserveSpaces(t); } /** @@ -309,13 +356,13 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun { * characters in the contents of this run when displayed in a document. * * @return true if the italic property is applied - */ - public boolean isItalic() { - CTRPr pr = run.getRPr(); - if(pr == null || !pr.isSetI()) - return false; - return isCTOnOff(pr.getI()); - } + */ + public boolean isItalic() { + CTRPr pr = run.getRPr(); + if (pr == null || !pr.isSetI()) + return false; + return isCTOnOff(pr.getI()); + } /** * Whether the bold property shall be applied to all non-complex script @@ -354,14 +401,14 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun { * * @return the Underline pattern applyed to this run * @see UnderlinePatterns - */ - public UnderlinePatterns getUnderline() { - CTRPr pr = run.getRPr(); - return (pr != null && pr.isSetU() && pr.getU().getVal() != null) - ? UnderlinePatterns.valueOf(pr.getU().getVal().intValue()) - : UnderlinePatterns.NONE; - } - + */ + public UnderlinePatterns getUnderline() { + CTRPr pr = run.getRPr(); + return (pr != null && pr.isSetU() && pr.getU().getVal() != null) + ? UnderlinePatterns.valueOf(pr.getU().getVal().intValue()) + : UnderlinePatterns.NONE; + } + /** * Specifies that the contents of this run should be displayed along with an * underline appearing directly below the character heigh @@ -388,32 +435,16 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun { * horizontal line through the center of the line. * * @return true if the strike property is applied - */ - public boolean isStrikeThrough() { - CTRPr pr = run.getRPr(); - if(pr == null || !pr.isSetStrike()) - return false; - return isCTOnOff(pr.getStrike()); - } - @Deprecated - public boolean isStrike() { - return isStrikeThrough(); - } - /** - * Specifies that the contents of this run shall be displayed with a double - * horizontal line through the center of the line. - * - * @return true if the double strike property is applied - */ - public boolean isDoubleStrikeThrough() { - CTRPr pr = run.getRPr(); - if(pr == null || !pr.isSetDstrike()) - return false; - return isCTOnOff(pr.getDstrike()); - } - - /** - * Specifies that the contents of this run shall be displayed with a single + */ + public boolean isStrikeThrough() { + CTRPr pr = run.getRPr(); + if (pr == null || !pr.isSetStrike()) + return false; + return isCTOnOff(pr.getStrike()); + } + + /** + * Specifies that the contents of this run shall be displayed with a single * horizontal line through the center of the line. *

    * This formatting property is a toggle property, which specifies that its @@ -438,86 +469,113 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun { */ public void setStrikeThrough(boolean value) { CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr(); - CTOnOff strike = pr.isSetStrike() ? pr.getStrike() : pr.addNewStrike(); - strike.setVal(value ? STOnOff.TRUE : STOnOff.FALSE); - } - @Deprecated - public void setStrike(boolean value) { - setStrikeThrough(value); - } - /** - * Specifies that the contents of this run shall be displayed with a - * double horizontal line through the center of the line. - * @see #setStrikeThrough(boolean) for the rules about this - */ - public void setDoubleStrikethrough(boolean value) { + CTOnOff strike = pr.isSetStrike() ? pr.getStrike() : pr.addNewStrike(); + strike.setVal(value ? STOnOff.TRUE : STOnOff.FALSE); + } + + @Deprecated + public boolean isStrike() { + return isStrikeThrough(); + } + + @Deprecated + public void setStrike(boolean value) { + setStrikeThrough(value); + } + + /** + * Specifies that the contents of this run shall be displayed with a double + * horizontal line through the center of the line. + * + * @return true if the double strike property is applied + */ + public boolean isDoubleStrikeThrough() { + CTRPr pr = run.getRPr(); + if (pr == null || !pr.isSetDstrike()) + return false; + return isCTOnOff(pr.getDstrike()); + } + + /** + * Specifies that the contents of this run shall be displayed with a + * double horizontal line through the center of the line. + * + * @see #setStrikeThrough(boolean) for the rules about this + */ + public void setDoubleStrikethrough(boolean value) { CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr(); CTOnOff dstrike = pr.isSetDstrike() ? pr.getDstrike() : pr.addNewDstrike(); dstrike.setVal(value ? STOnOff.TRUE : STOnOff.FALSE); } - - public boolean isSmallCaps() { - CTRPr pr = run.getRPr(); - if(pr == null || !pr.isSetSmallCaps()) - return false; - return isCTOnOff(pr.getSmallCaps()); - } - public void setSmallCaps(boolean value) { - CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr(); - CTOnOff caps = pr.isSetSmallCaps() ? pr.getSmallCaps() : pr.addNewSmallCaps(); - caps.setVal(value ? STOnOff.TRUE : STOnOff.FALSE); - } - public boolean isCapitalized() { - CTRPr pr = run.getRPr(); - if(pr == null || !pr.isSetCaps()) - return false; - return isCTOnOff(pr.getCaps()); - } - public void setCapitalized(boolean value) { - CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr(); - CTOnOff caps = pr.isSetCaps() ? pr.getCaps() : pr.addNewCaps(); - caps.setVal(value ? STOnOff.TRUE : STOnOff.FALSE); - } - - public boolean isShadowed() { - CTRPr pr = run.getRPr(); - if(pr == null || !pr.isSetShadow()) - return false; - return isCTOnOff(pr.getShadow()); - } - public void setShadow(boolean value) { - CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr(); - CTOnOff shadow = pr.isSetShadow() ? pr.getShadow() : pr.addNewShadow(); - shadow.setVal(value ? STOnOff.TRUE : STOnOff.FALSE); - } - - public boolean isImprinted() { - CTRPr pr = run.getRPr(); - if(pr == null || !pr.isSetImprint()) - return false; - return isCTOnOff(pr.getImprint()); - } - public void setImprinted(boolean value) { - CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr(); - CTOnOff imprinted = pr.isSetImprint() ? pr.getImprint() : pr.addNewImprint(); - imprinted.setVal(value ? STOnOff.TRUE : STOnOff.FALSE); - } - - public boolean isEmbossed() { - CTRPr pr = run.getRPr(); - if(pr == null || !pr.isSetEmboss()) - return false; - return isCTOnOff(pr.getEmboss()); - } - public void setEmbossed(boolean value) { - CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr(); - CTOnOff emboss = pr.isSetEmboss() ? pr.getEmboss() : pr.addNewEmboss(); - emboss.setVal(value ? STOnOff.TRUE : STOnOff.FALSE); - } - - /** - * Specifies the alignment which shall be applied to the contents of this - * run in relation to the default appearance of the run's text. + + public boolean isSmallCaps() { + CTRPr pr = run.getRPr(); + if (pr == null || !pr.isSetSmallCaps()) + return false; + return isCTOnOff(pr.getSmallCaps()); + } + + public void setSmallCaps(boolean value) { + CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr(); + CTOnOff caps = pr.isSetSmallCaps() ? pr.getSmallCaps() : pr.addNewSmallCaps(); + caps.setVal(value ? STOnOff.TRUE : STOnOff.FALSE); + } + + public boolean isCapitalized() { + CTRPr pr = run.getRPr(); + if (pr == null || !pr.isSetCaps()) + return false; + return isCTOnOff(pr.getCaps()); + } + + public void setCapitalized(boolean value) { + CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr(); + CTOnOff caps = pr.isSetCaps() ? pr.getCaps() : pr.addNewCaps(); + caps.setVal(value ? STOnOff.TRUE : STOnOff.FALSE); + } + + public boolean isShadowed() { + CTRPr pr = run.getRPr(); + if (pr == null || !pr.isSetShadow()) + return false; + return isCTOnOff(pr.getShadow()); + } + + public void setShadow(boolean value) { + CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr(); + CTOnOff shadow = pr.isSetShadow() ? pr.getShadow() : pr.addNewShadow(); + shadow.setVal(value ? STOnOff.TRUE : STOnOff.FALSE); + } + + public boolean isImprinted() { + CTRPr pr = run.getRPr(); + if (pr == null || !pr.isSetImprint()) + return false; + return isCTOnOff(pr.getImprint()); + } + + public void setImprinted(boolean value) { + CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr(); + CTOnOff imprinted = pr.isSetImprint() ? pr.getImprint() : pr.addNewImprint(); + imprinted.setVal(value ? STOnOff.TRUE : STOnOff.FALSE); + } + + public boolean isEmbossed() { + CTRPr pr = run.getRPr(); + if (pr == null || !pr.isSetEmboss()) + return false; + return isCTOnOff(pr.getEmboss()); + } + + public void setEmbossed(boolean value) { + CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr(); + CTOnOff emboss = pr.isSetEmboss() ? pr.getEmboss() : pr.addNewEmboss(); + emboss.setVal(value ? STOnOff.TRUE : STOnOff.FALSE); + } + + /** + * Specifies the alignment which shall be applied to the contents of this + * run in relation to the default appearance of the run's text. * This allows the text to be repositioned as subscript or superscript without * altering the font size of the run properties. * @@ -550,105 +608,106 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun { CTVerticalAlignRun ctValign = pr.isSetVertAlign() ? pr.getVertAlign() : pr.addNewVertAlign(); ctValign.setVal(STVerticalAlignRun.Enum.forInt(valign.getValue())); } - - public int getKerning() { - CTRPr pr = run.getRPr(); - if(pr == null || !pr.isSetKern()) - return 0; - return pr.getKern().getVal().intValue(); - } - public void setKerning(int kern) { - CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr(); - CTHpsMeasure kernmes = pr.isSetKern() ? pr.getKern() : pr.addNewKern(); - kernmes.setVal(BigInteger.valueOf(kern)); - } - - public int getCharacterSpacing() { - CTRPr pr = run.getRPr(); - if(pr == null || !pr.isSetSpacing()) - return 0; - return pr.getSpacing().getVal().intValue(); - } - public void setCharacterSpacing(int twips) { - CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr(); - CTSignedTwipsMeasure spc = pr.isSetSpacing() ? pr.getSpacing() : pr.addNewSpacing(); - spc.setVal(BigInteger.valueOf(twips)); - } - - /** - * Gets the fonts which shall be used to display the text contents of - * this run. Specifies a font which shall be used to format all characters + + public int getKerning() { + CTRPr pr = run.getRPr(); + if (pr == null || !pr.isSetKern()) + return 0; + return pr.getKern().getVal().intValue(); + } + + public void setKerning(int kern) { + CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr(); + CTHpsMeasure kernmes = pr.isSetKern() ? pr.getKern() : pr.addNewKern(); + kernmes.setVal(BigInteger.valueOf(kern)); + } + + public int getCharacterSpacing() { + CTRPr pr = run.getRPr(); + if (pr == null || !pr.isSetSpacing()) + return 0; + return pr.getSpacing().getVal().intValue(); + } + + public void setCharacterSpacing(int twips) { + CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr(); + CTSignedTwipsMeasure spc = pr.isSetSpacing() ? pr.getSpacing() : pr.addNewSpacing(); + spc.setVal(BigInteger.valueOf(twips)); + } + + /** + * Gets the fonts which shall be used to display the text contents of + * this run. Specifies a font which shall be used to format all characters * in the ASCII range (0 - 127) within the parent run * * @return a string representing the font family */ - public String getFontFamily() { - return getFontFamily(null); - } - /** - * Alias for {@link #getFontFamily()} - */ - public String getFontName() { + public String getFontFamily() { + return getFontFamily(null); + } + + /** + * Specifies the fonts which shall be used to display the text contents of + * this run. Specifies a font which shall be used to format all characters + * in the ASCII range (0 - 127) within the parent run. + *

    + * Also sets the other font ranges, if they haven't been set before + * + * @param fontFamily + * @see FontCharRange + */ + public void setFontFamily(String fontFamily) { + setFontFamily(fontFamily, null); + } + + /** + * Alias for {@link #getFontFamily()} + */ + public String getFontName() { return getFontFamily(); } /** * Gets the font family for the specified font char range. - * If fcr is null, the font char range "ascii" is used - * - * @param fcr the font char range, defaults to "ansi" - * @return a string representing the font famil - */ - public String getFontFamily(FontCharRange fcr) { - CTRPr pr = run.getRPr(); - if (pr == null || !pr.isSetRFonts()) return null; - - CTFonts fonts = pr.getRFonts(); - switch (fcr == null ? FontCharRange.ascii : fcr) { - default: - case ascii: - return fonts.getAscii(); - case cs: - return fonts.getCs(); - case eastAsia: - return fonts.getEastAsia(); - case hAnsi: - return fonts.getHAnsi(); - } - } - - - /** - * Specifies the fonts which shall be used to display the text contents of - * this run. Specifies a font which shall be used to format all characters - * in the ASCII range (0 - 127) within the parent run. - * - * Also sets the other font ranges, if they haven't been set before - * - * @param fontFamily - * - * @see FontCharRange - */ - public void setFontFamily(String fontFamily) { - setFontFamily(fontFamily, null); - } - - /** - * Specifies the fonts which shall be used to display the text contents of - * this run. The default handling for fcr == null is to overwrite the - * ascii font char range with the given font family and also set all not - * specified font ranges - * - * @param fontFamily - * @param fcr FontCharRange or null for default handling - */ - public void setFontFamily(String fontFamily, FontCharRange fcr) { - CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr(); - CTFonts fonts = pr.isSetRFonts() ? pr.getRFonts() : pr.addNewRFonts(); - - if (fcr == null) { - fonts.setAscii(fontFamily); - if (!fonts.isSetHAnsi()) { + * If fcr is null, the font char range "ascii" is used + * + * @param fcr the font char range, defaults to "ansi" + * @return a string representing the font famil + */ + public String getFontFamily(FontCharRange fcr) { + CTRPr pr = run.getRPr(); + if (pr == null || !pr.isSetRFonts()) return null; + + CTFonts fonts = pr.getRFonts(); + switch (fcr == null ? FontCharRange.ascii : fcr) { + default: + case ascii: + return fonts.getAscii(); + case cs: + return fonts.getCs(); + case eastAsia: + return fonts.getEastAsia(); + case hAnsi: + return fonts.getHAnsi(); + } + } + + /** + * Specifies the fonts which shall be used to display the text contents of + * this run. The default handling for fcr == null is to overwrite the + * ascii font char range with the given font family and also set all not + * specified font ranges + * + * @param fontFamily + * @param fcr FontCharRange or null for default handling + */ + public void setFontFamily(String fontFamily, FontCharRange fcr) { + CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr(); + CTFonts fonts = pr.isSetRFonts() ? pr.getRFonts() : pr.addNewRFonts(); + + if (fcr == null) { + fonts.setAscii(fontFamily); + if (!fonts.isSetHAnsi()) { fonts.setHAnsi(fontFamily); } if (!fonts.isSetCs()) { @@ -656,24 +715,24 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun { } if (!fonts.isSetEastAsia()) { fonts.setEastAsia(fontFamily); - } - } else { - switch (fcr) { - case ascii: - fonts.setAscii(fontFamily); - break; - case cs: - fonts.setCs(fontFamily); - break; - case eastAsia: - fonts.setEastAsia(fontFamily); - break; - case hAnsi: - fonts.setHAnsi(fontFamily); - break; - } - } - } + } + } else { + switch (fcr) { + case ascii: + fonts.setAscii(fontFamily); + break; + case cs: + fonts.setCs(fontFamily); + break; + case eastAsia: + fonts.setEastAsia(fontFamily); + break; + case hAnsi: + fonts.setHAnsi(fontFamily); + break; + } + } + } /** * Specifies the font size which shall be applied to all non complex script @@ -696,13 +755,13 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun { * be used for non complex script characters. *

    * - * @param size - */ - public void setFontSize(int size) { - BigInteger bint=new BigInteger(""+size); - CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr(); - CTHpsMeasure ctSize = pr.isSetSz() ? pr.getSz() : pr.addNewSz(); - ctSize.setVal(bint.multiply(new BigInteger("2"))); + * @param size + */ + public void setFontSize(int size) { + BigInteger bint = new BigInteger("" + size); + CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr(); + CTHpsMeasure ctSize = pr.isSetSz() ? pr.getSz() : pr.addNewSz(); + ctSize.setVal(bint.multiply(new BigInteger("2"))); } /** @@ -739,52 +798,54 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun { * contents of this run. *

    * - * @param val - */ - public void setTextPosition(int val) { - BigInteger bint=new BigInteger(""+val); - CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr(); - CTSignedHpsMeasure position = pr.isSetPosition() ? pr.getPosition() : pr.addNewPosition(); - position.setVal(bint); + * @param val + */ + public void setTextPosition(int val) { + BigInteger bint = new BigInteger("" + val); + CTRPr pr = run.isSetRPr() ? run.getRPr() : run.addNewRPr(); + CTSignedHpsMeasure position = pr.isSetPosition() ? pr.getPosition() : pr.addNewPosition(); + position.setVal(bint); + } + + /** + * + */ + public void removeBreak() { + // TODO } - - /** - * - */ - public void removeBreak() { - // TODO - } - - /** - * Specifies that a break shall be placed at the current location in the run - * content. - * A break is a special character which is used to override the - * normal line breaking that would be performed based on the normal layout - * of the document's contents. - * @see #addCarriageReturn() - */ - public void addBreak() { - run.addNewBr(); - } - - /** - * Specifies that a break shall be placed at the current location in the run + + /** + * Specifies that a break shall be placed at the current location in the run + * content. + * A break is a special character which is used to override the + * normal line breaking that would be performed based on the normal layout + * of the document's contents. + * + * @see #addCarriageReturn() + */ + public void addBreak() { + run.addNewBr(); + } + + /** + * Specifies that a break shall be placed at the current location in the run * content. * A break is a special character which is used to override the * normal line breaking that would be performed based on the normal layout * of the document's contents. *

    * The behavior of this break character (the - * location where text shall be restarted after this break) shall be - * determined by its type values. - *

    - * @see BreakType - */ - public void addBreak(BreakType type){ - CTBr br=run.addNewBr(); - br.setType(STBrType.Enum.forInt(type.getValue())); - } - + * location where text shall be restarted after this break) shall be + * determined by its type values. + *

    + * + * @see BreakType + */ + public void addBreak(BreakType type) { + CTBr br = run.addNewBr(); + br.setType(STBrType.Enum.forInt(type.getValue())); + } + /** * Specifies that a break shall be placed at the current location in the run * content. A break is a special character which is used to override the @@ -792,31 +853,32 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun { * of the document's contents. *

    * The behavior of this break character (the - * location where text shall be restarted after this break) shall be - * determined by its type (in this case is BreakType.TEXT_WRAPPING as default) and clear attribute values. - *

    - * @see BreakClear - */ - public void addBreak(BreakClear clear){ - CTBr br=run.addNewBr(); - br.setType(STBrType.Enum.forInt(BreakType.TEXT_WRAPPING.getValue())); - br.setClear(STBrClear.Enum.forInt(clear.getValue())); + * location where text shall be restarted after this break) shall be + * determined by its type (in this case is BreakType.TEXT_WRAPPING as default) and clear attribute values. + *

    + * + * @see BreakClear + */ + public void addBreak(BreakClear clear) { + CTBr br = run.addNewBr(); + br.setType(STBrType.Enum.forInt(BreakType.TEXT_WRAPPING.getValue())); + br.setClear(STBrClear.Enum.forInt(clear.getValue())); + } + + /** + * Specifies that a tab shall be placed at the current location in + * the run content. + */ + public void addTab() { + run.addNewTab(); } - - /** - * Specifies that a tab shall be placed at the current location in - * the run content. - */ - public void addTab() { - run.addNewTab(); - } - - public void removeTab() { - //TODO - } - - /** - * Specifies that a carriage return shall be placed at the + + public void removeTab() { + //TODO + } + + /** + * Specifies that a carriage return shall be placed at the * current location in the run content. * A carriage return is used to end the current line of text in * Wordprocess. @@ -830,34 +892,33 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun { public void addCarriageReturn() { run.addNewCr(); } - - public void removeCarriageReturn() { - //TODO - } - - /** - * Adds a picture to the run. This method handles - * attaching the picture data to the overall file. - * - * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_EMF - * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_WMF - * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_PICT - * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_JPEG - * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_PNG - * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_DIB - * - * @param pictureData The raw picture data - * @param pictureType The type of the picture, eg {@link Document#PICTURE_TYPE_JPEG} - * @param width width in EMUs. To convert to / from points use {@link org.apache.poi.util.Units} - * @param height height in EMUs. To convert to / from points use {@link org.apache.poi.util.Units} - * @throws org.apache.poi.openxml4j.exceptions.InvalidFormatException - * @throws IOException - */ - public XWPFPicture addPicture(InputStream pictureData, int pictureType, String filename, int width, int height) - throws InvalidFormatException, IOException { - XWPFDocument doc = parent.getDocument(); - - // Add the picture + relationship + + public void removeCarriageReturn() { + //TODO + } + + /** + * Adds a picture to the run. This method handles + * attaching the picture data to the overall file. + * + * @param pictureData The raw picture data + * @param pictureType The type of the picture, eg {@link Document#PICTURE_TYPE_JPEG} + * @param width width in EMUs. To convert to / from points use {@link org.apache.poi.util.Units} + * @param height height in EMUs. To convert to / from points use {@link org.apache.poi.util.Units} + * @throws org.apache.poi.openxml4j.exceptions.InvalidFormatException + * @throws IOException + * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_EMF + * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_WMF + * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_PICT + * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_JPEG + * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_PNG + * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_DIB + */ + public XWPFPicture addPicture(InputStream pictureData, int pictureType, String filename, int width, int height) + throws InvalidFormatException, IOException { + XWPFDocument doc = parent.getDocument(); + + // Add the picture + relationship String relationId = doc.addPictureData(pictureData, pictureType); XWPFPictureData picData = (XWPFPictureData) doc.getRelationById(relationId); @@ -865,18 +926,18 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun { try { CTDrawing drawing = run.addNewDrawing(); CTInline inline = drawing.addNewInline(); - - // Do the fiddly namespace bits on the inline - // (We need full control of what goes where and as what) - String xml = - "" + - "" + - "" + - "" + - ""; - inline.set(XmlToken.Factory.parse(xml)); - - // Setup the inline + + // Do the fiddly namespace bits on the inline + // (We need full control of what goes where and as what) + String xml = + "" + + "" + + "" + + "" + + ""; + inline.set(XmlToken.Factory.parse(xml)); + + // Setup the inline inline.setDistT(0); inline.setDistR(0); inline.setDistB(0); @@ -910,13 +971,13 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun { CTNonVisualPictureProperties cNvPicPr = nvPicPr.addNewCNvPicPr(); cNvPicPr.addNewPicLocks().setNoChangeAspect(true); - - CTBlipFillProperties blipFill = pic.addNewBlipFill(); - CTBlip blip = blipFill.addNewBlip(); - blip.setEmbed( picData.getPackageRelationship().getId() ); - blipFill.addNewStretch().addNewFillRect(); - - CTShapeProperties spPr = pic.addNewSpPr(); + + CTBlipFillProperties blipFill = pic.addNewBlipFill(); + CTBlip blip = blipFill.addNewBlip(); + blip.setEmbed(picData.getPackageRelationship().getId()); + blipFill.addNewStretch().addNewFillRect(); + + CTShapeProperties spPr = pic.addNewSpPr(); CTTransform2D xfrm = spPr.addNewXfrm(); CTPoint2D off = xfrm.addNewOff(); @@ -932,50 +993,36 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun { prstGeom.addNewAvLst(); // Finish up - XWPFPicture xwpfPicture = new XWPFPicture(pic, this); - pictures.add(xwpfPicture); - return xwpfPicture; - } catch(XmlException e) { - throw new IllegalStateException(e); - } - } - - /** - * Returns the embedded pictures of the run. These - * are pictures which reference an external, - * embedded picture image such as a .png or .jpg - */ - public List getEmbeddedPictures() { - return pictures; - } - - /** - * Add the xml:spaces="preserve" attribute if the string has leading or trailing white spaces - * - * @param xs the string to check - */ - static void preserveSpaces(XmlString xs) { - String text = xs.getStringValue(); - if (text != null && (text.startsWith(" ") || text.endsWith(" "))) { - XmlCursor c = xs.newCursor(); - c.toNextToken(); - c.insertAttributeWithValue(new QName("http://www.w3.org/XML/1998/namespace", "space"), "preserve"); - c.dispose(); - } - } - - /** - * Returns the string version of the text - */ - public String toString() { - return text(); - } - /** - * Returns the string version of the text, with tabs and - * carriage returns in place of their xml equivalents. - */ - public String text() { - StringBuffer text = new StringBuffer(); + XWPFPicture xwpfPicture = new XWPFPicture(pic, this); + pictures.add(xwpfPicture); + return xwpfPicture; + } catch (XmlException e) { + throw new IllegalStateException(e); + } + } + + /** + * Returns the embedded pictures of the run. These + * are pictures which reference an external, + * embedded picture image such as a .png or .jpg + */ + public List getEmbeddedPictures() { + return pictures; + } + + /** + * Returns the string version of the text + */ + public String toString() { + return text(); + } + + /** + * Returns the string version of the text, with tabs and + * carriage returns in place of their xml equivalents. + */ + public String text() { + StringBuffer text = new StringBuffer(); // Grab the text and tabs of the text run // Do so in a way that preserves the ordering @@ -989,26 +1036,26 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun { // come up as instances of CTText, but we don't want them // in the normal text output if (!"w:instrText".equals(tagName)) { - text.append(((CTText) o).getStringValue()); - } - } - - // Complex type evaluation (currently only for extraction of check boxes) - if(o instanceof CTFldChar) { - CTFldChar ctfldChar = ((CTFldChar)o); - if(ctfldChar.getFldCharType() == STFldCharType.BEGIN) { - if(ctfldChar.getFfData() != null) { - for(CTFFCheckBox checkBox : ctfldChar.getFfData().getCheckBoxList()) { - if(checkBox.getDefault().getVal() == STOnOff.X_1) { - text.append("|X|"); - } else { - text.append("|_|"); - } - } - } - } - } - + text.append(((CTText) o).getStringValue()); + } + } + + // Complex type evaluation (currently only for extraction of check boxes) + if (o instanceof CTFldChar) { + CTFldChar ctfldChar = ((CTFldChar) o); + if (ctfldChar.getFldCharType() == STFldCharType.BEGIN) { + if (ctfldChar.getFfData() != null) { + for (CTFFCheckBox checkBox : ctfldChar.getFfData().getCheckBoxList()) { + if (checkBox.getDefault().getVal() == STOnOff.X_1) { + text.append("|X|"); + } else { + text.append("|_|"); + } + } + } + } + } + if (o instanceof CTPTab) { text.append("\t"); } @@ -1030,23 +1077,33 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun { } if ("w:cr".equals(tagName) || "cr".equals(tagName)) { text.append("\n"); - } - } - if (o instanceof CTFtnEdnRef) { - CTFtnEdnRef ftn = (CTFtnEdnRef)o; - String footnoteRef = ftn.getDomNode().getLocalName().equals("footnoteReference") ? - "[footnoteRef:" + ftn.getId().intValue() + "]" : "[endnoteRef:" + ftn.getId().intValue() + "]"; - text.append(footnoteRef); - } - } - - c.dispose(); - - // Any picture text? - if(pictureText != null && pictureText.length() > 0) { - text.append("\n").append(pictureText); - } - - return text.toString(); - } -} + } + } + if (o instanceof CTFtnEdnRef) { + CTFtnEdnRef ftn = (CTFtnEdnRef) o; + String footnoteRef = ftn.getDomNode().getLocalName().equals("footnoteReference") ? + "[footnoteRef:" + ftn.getId().intValue() + "]" : "[endnoteRef:" + ftn.getId().intValue() + "]"; + text.append(footnoteRef); + } + } + + c.dispose(); + + // Any picture text? + if (pictureText != null && pictureText.length() > 0) { + text.append("\n").append(pictureText); + } + + return text.toString(); + } + + /** + * @see [MS-OI29500] Run Fonts + */ + public static enum FontCharRange { + ascii /* char 0-127 */, + cs /* complex symbol */, + eastAsia /* east asia */, + hAnsi /* high ansi */ + } +} diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDT.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDT.java index 4a51725b1..fd8389ef5 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDT.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDT.java @@ -17,31 +17,30 @@ package org.apache.poi.xwpf.usermodel; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtBlock; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtRun; - -/** - * Experimental class to offer rudimentary read-only processing of - * of StructuredDocumentTags/ContentControl - * - * WARNING - APIs expected to change rapidly - * - */ -public class XWPFSDT extends AbstractXWPFSDT - implements IBodyElement, IRunBody, ISDTContents, IRunElement { - private final ISDTContent content; - - public XWPFSDT(CTSdtRun sdtRun, IBody part){ - super(sdtRun.getSdtPr(), part); - this.content = new XWPFSDTContent(sdtRun.getSdtContent(), part, this); - } - - public XWPFSDT(CTSdtBlock block, IBody part){ - super(block.getSdtPr(), part); - this.content = new XWPFSDTContent( block.getSdtContent(), part, this); - } - - public ISDTContent getContent(){ - return content; - } - -} +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtRun; + +/** + * Experimental class to offer rudimentary read-only processing of + * of StructuredDocumentTags/ContentControl + *

    + * WARNING - APIs expected to change rapidly + */ +public class XWPFSDT extends AbstractXWPFSDT + implements IBodyElement, IRunBody, ISDTContents, IRunElement { + private final ISDTContent content; + + public XWPFSDT(CTSdtRun sdtRun, IBody part) { + super(sdtRun.getSdtPr(), part); + this.content = new XWPFSDTContent(sdtRun.getSdtContent(), part, this); + } + + public XWPFSDT(CTSdtBlock block, IBody part) { + super(block.getSdtPr(), part); + this.content = new XWPFSDTContent(block.getSdtContent(), part, this); + } + + public ISDTContent getContent() { + return content; + } + +} diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTCell.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTCell.java index 21cca3e7b..fb40955ef 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTCell.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTCell.java @@ -16,29 +16,28 @@ ==================================================================== */ package org.apache.poi.xwpf.usermodel; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtCell; - -/** - * Experimental class to offer rudimentary read-only processing of - * of StructuredDocumentTags/ContentControl that can appear - * in a table row as if a table cell. - *

    - * These can contain one or more cells or other SDTs within them. - * - * WARNING - APIs expected to change rapidly - * - */ -public class XWPFSDTCell extends AbstractXWPFSDT implements ICell { - private final XWPFSDTContentCell cellContent; - - public XWPFSDTCell(CTSdtCell sdtCell, XWPFTableRow xwpfTableRow, IBody part){ - super(sdtCell.getSdtPr(), part); - cellContent = new XWPFSDTContentCell(sdtCell.getSdtContent(), xwpfTableRow, part); - } - - @Override - public ISDTContent getContent(){ - return cellContent; - } - -} +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtCell; + +/** + * Experimental class to offer rudimentary read-only processing of + * of StructuredDocumentTags/ContentControl that can appear + * in a table row as if a table cell. + *

    + * These can contain one or more cells or other SDTs within them. + *

    + * WARNING - APIs expected to change rapidly + */ +public class XWPFSDTCell extends AbstractXWPFSDT implements ICell { + private final XWPFSDTContentCell cellContent; + + public XWPFSDTCell(CTSdtCell sdtCell, XWPFTableRow xwpfTableRow, IBody part) { + super(sdtCell.getSdtPr(), part); + cellContent = new XWPFSDTContentCell(sdtCell.getSdtContent(), xwpfTableRow, part); + } + + @Override + public ISDTContent getContent() { + return cellContent; + } + +} diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTContent.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTContent.java index 42c56b377..6942aa749 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTContent.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTContent.java @@ -16,93 +16,91 @@ ==================================================================== */ package org.apache.poi.xwpf.usermodel; -import java.util.ArrayList; -import java.util.List; - - -import org.apache.xmlbeans.XmlCursor; -import org.apache.xmlbeans.XmlObject; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR; - -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtBlock; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtContentBlock; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtContentRun; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl; - -/** - * Experimental class to offer rudimentary read-only processing of - * of the contentblock of an SDT/ContentControl. - * - * - * - * WARNING - APIs expected to change rapidly - * - */ -public class XWPFSDTContent implements ISDTContent { - +import java.util.ArrayList; +import java.util.List; + +import org.apache.xmlbeans.XmlCursor; +import org.apache.xmlbeans.XmlObject; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtBlock; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtContentBlock; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtContentRun; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl; + +/** + * Experimental class to offer rudimentary read-only processing of + * of the contentblock of an SDT/ContentControl. + *

    + *

    + *

    + * WARNING - APIs expected to change rapidly + */ +public class XWPFSDTContent implements ISDTContent { + // private final IBody part; // private final XWPFDocument document; private List paragraphs = new ArrayList(); private List tables = new ArrayList(); private List runs = new ArrayList(); - private List contentControls = new ArrayList(); - private List bodyElements = new ArrayList(); - - public XWPFSDTContent(CTSdtContentRun sdtRun, IBody part, IRunBody parent){ - for (CTR ctr : sdtRun.getRArray()){ - XWPFRun run = new XWPFRun(ctr, parent); - runs.add(run); - bodyElements.add(run); - } - } - public XWPFSDTContent(CTSdtContentBlock block, IBody part, IRunBody parent){ - XmlCursor cursor = block.newCursor(); - cursor.selectPath("./*"); - while (cursor.toNextSelection()) { + private List contentControls = new ArrayList(); + private List bodyElements = new ArrayList(); + + public XWPFSDTContent(CTSdtContentRun sdtRun, IBody part, IRunBody parent) { + for (CTR ctr : sdtRun.getRArray()) { + XWPFRun run = new XWPFRun(ctr, parent); + runs.add(run); + bodyElements.add(run); + } + } + + public XWPFSDTContent(CTSdtContentBlock block, IBody part, IRunBody parent) { + XmlCursor cursor = block.newCursor(); + cursor.selectPath("./*"); + while (cursor.toNextSelection()) { XmlObject o = cursor.getObject(); if (o instanceof CTP) { XWPFParagraph p = new XWPFParagraph((CTP) o, part); bodyElements.add(p); paragraphs.add(p); } else if (o instanceof CTTbl) { - XWPFTable t = new XWPFTable((CTTbl) o, part); - bodyElements.add(t); - tables.add(t); - } else if (o instanceof CTSdtBlock){ - XWPFSDT c = new XWPFSDT(((CTSdtBlock)o), part); - bodyElements.add(c); - contentControls.add(c); - } else if (o instanceof CTR) { + XWPFTable t = new XWPFTable((CTTbl) o, part); + bodyElements.add(t); + tables.add(t); + } else if (o instanceof CTSdtBlock) { + XWPFSDT c = new XWPFSDT(((CTSdtBlock) o), part); + bodyElements.add(c); + contentControls.add(c); + } else if (o instanceof CTR) { XWPFRun run = new XWPFRun((CTR) o, parent); runs.add(run); bodyElements.add(run); } - } - } - - public String getText(){ - StringBuilder text = new StringBuilder(); - boolean addNewLine = false; - for (int i = 0; i < bodyElements.size(); i++){ - Object o = bodyElements.get(i); - if (o instanceof XWPFParagraph){ - appendParagraph((XWPFParagraph)o, text); - addNewLine = true; - } else if (o instanceof XWPFTable){ - appendTable((XWPFTable)o, text); - addNewLine = true; - } else if (o instanceof XWPFSDT){ - text.append(((XWPFSDT)o).getContent().getText()); - addNewLine = true; - } else if (o instanceof XWPFRun){ - text.append(((XWPFRun)o).toString()); - addNewLine = false; - } - if (addNewLine == true && i < bodyElements.size()-1){ - text.append("\n"); - } - } + } + } + + public String getText() { + StringBuilder text = new StringBuilder(); + boolean addNewLine = false; + for (int i = 0; i < bodyElements.size(); i++) { + Object o = bodyElements.get(i); + if (o instanceof XWPFParagraph) { + appendParagraph((XWPFParagraph) o, text); + addNewLine = true; + } else if (o instanceof XWPFTable) { + appendTable((XWPFTable) o, text); + addNewLine = true; + } else if (o instanceof XWPFSDT) { + text.append(((XWPFSDT) o).getContent().getText()); + addNewLine = true; + } else if (o instanceof XWPFRun) { + text.append(((XWPFRun) o).toString()); + addNewLine = false; + } + if (addNewLine == true && i < bodyElements.size() - 1) { + text.append("\n"); + } + } return text.toString(); } @@ -110,28 +108,28 @@ public class XWPFSDTContent implements ISDTContent { //this works recursively to pull embedded tables from within cells for (XWPFTableRow row : table.getRows()) { List cells = row.getTableICells(); - for (int i = 0; i < cells.size(); i++) { - ICell cell = cells.get(i); - if (cell instanceof XWPFTableCell) { - text.append(((XWPFTableCell)cell).getTextRecursively()); - } else if (cell instanceof XWPFSDTCell) { - text.append(((XWPFSDTCell)cell).getContent().getText()); - } - if (i < cells.size()-1) { - text.append("\t"); - } - } - text.append('\n'); - } - } - - private void appendParagraph(XWPFParagraph paragraph, StringBuilder text) { - for(IRunElement run : paragraph.getRuns()) { - text.append(run.toString()); - } - } - - public String toString(){ - return getText(); - } + for (int i = 0; i < cells.size(); i++) { + ICell cell = cells.get(i); + if (cell instanceof XWPFTableCell) { + text.append(((XWPFTableCell) cell).getTextRecursively()); + } else if (cell instanceof XWPFSDTCell) { + text.append(((XWPFSDTCell) cell).getContent().getText()); + } + if (i < cells.size() - 1) { + text.append("\t"); + } + } + text.append('\n'); + } + } + + private void appendParagraph(XWPFParagraph paragraph, StringBuilder text) { + for (IRunElement run : paragraph.getRuns()) { + text.append(run.toString()); + } + } + + public String toString() { + return getText(); + } } diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTContentCell.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTContentCell.java index 25e258a5c..17f388b59 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTContentCell.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTContentCell.java @@ -18,54 +18,52 @@ package org.apache.poi.xwpf.usermodel; import javax.xml.namespace.QName; - -import org.apache.xmlbeans.XmlCursor; -import org.apache.xmlbeans.XmlCursor.TokenType; - -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtContentCell; - - - -/** - * Experimental class to offer rudimentary read-only processing of - * of the XWPFSDTCellContent. - - * WARNING - APIs expected to change rapidly - * - */ -public class XWPFSDTContentCell implements ISDTContent { - + +import org.apache.xmlbeans.XmlCursor; +import org.apache.xmlbeans.XmlCursor.TokenType; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtContentCell; + + +/** + * Experimental class to offer rudimentary read-only processing of + * of the XWPFSDTCellContent. + *

    + * WARNING - APIs expected to change rapidly + */ +public class XWPFSDTContentCell implements ISDTContent { + //A full implementation would grab the icells //that a content cell can contain. This would require //significant changes, including changing the notion that the //parent of a cell can be not just a row, but an sdt. //For now we are just grabbing the text out of the text tokentypes. - //private List cells = new ArrayList(). + //private List cells = new ArrayList(). + + private String text = ""; + + public XWPFSDTContentCell(CTSdtContentCell sdtContentCell, + XWPFTableRow xwpfTableRow, IBody part) { + super(); + StringBuilder sb = new StringBuilder(); + XmlCursor cursor = sdtContentCell.newCursor(); - private String text = ""; - public XWPFSDTContentCell(CTSdtContentCell sdtContentCell, - XWPFTableRow xwpfTableRow, IBody part){ - super(); - StringBuilder sb = new StringBuilder(); - XmlCursor cursor = sdtContentCell.newCursor(); - - //keep track of the following, - //and add "\n" only before the start of a body - //element if it is not the first body element. - - //index of cell in row - int tcCnt = 0; - //count of body objects + //keep track of the following, + //and add "\n" only before the start of a body + //element if it is not the first body element. + + //index of cell in row + int tcCnt = 0; + //count of body objects int iBodyCnt = 0; int depth = 1; - - while (cursor.hasNextToken() && depth > 0) { - TokenType t = cursor.toNextToken(); - if (t.isText()){ - sb.append(cursor.getTextValue()); - } else if (isStartToken(cursor, "tr")) { - tcCnt = 0; + + while (cursor.hasNextToken() && depth > 0) { + TokenType t = cursor.toNextToken(); + if (t.isText()) { + sb.append(cursor.getTextValue()); + } else if (isStartToken(cursor, "tr")) { + tcCnt = 0; iBodyCnt = 0; } else if (isStartToken(cursor, "tc")) { if (tcCnt++ > 0) { @@ -77,38 +75,37 @@ public class XWPFSDTContentCell implements ISDTContent { isStartToken(cursor, "sdt")) { if (iBodyCnt > 0) { sb.append("\n"); - } - iBodyCnt++; - } - if (cursor.isStart()){ - depth++; - } else if (cursor.isEnd()){ - depth--; - } - } - text = sb.toString(); - } - - - - private boolean isStartToken(XmlCursor cursor, String string) { - if (! cursor.isStart()) { - return false; - } - QName qName = cursor.getName(); + } + iBodyCnt++; + } + if (cursor.isStart()) { + depth++; + } else if (cursor.isEnd()) { + depth--; + } + } + text = sb.toString(); + } + + + private boolean isStartToken(XmlCursor cursor, String string) { + if (!cursor.isStart()) { + return false; + } + QName qName = cursor.getName(); if (qName != null && qName.getLocalPart() != null && qName.getLocalPart().equals(string)) { return true; } return false; - } - - - public String getText(){ - return text; - } - - public String toString(){ - return getText(); - } + } + + + public String getText() { + return text; + } + + public String toString() { + return getText(); + } } diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java index 3dcc41aaa..6ce7e2ac3 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSettings.java @@ -59,8 +59,7 @@ public class XWPFSettings extends POIXMLDocumentPart { } @Override - protected void onDocumentRead() throws IOException - { + protected void onDocumentRead() throws IOException { super.onDocumentRead(); readFrom(getPackagePart().getInputStream()); } @@ -74,17 +73,18 @@ public class XWPFSettings extends POIXMLDocumentPart { *

          *    <w:zoom w:percent="50" />
          * 
    +     *
          * @return percentage as an integer of zoom level
          */
         public long getZoomPercent() {
    -       CTZoom zoom;
    -       if (!ctSettings.isSetZoom()) {
    -          zoom = ctSettings.addNewZoom();
    -       } else {
    -          zoom = ctSettings.getZoom();
    -       }
    +        CTZoom zoom;
    +        if (!ctSettings.isSetZoom()) {
    +            zoom = ctSettings.addNewZoom();
    +        } else {
    +            zoom = ctSettings.getZoom();
    +        }
     
    -       return zoom.getPercent().longValue();
    +        return zoom.getPercent().longValue();
         }
     
         /**
    @@ -92,31 +92,31 @@ public class XWPFSettings extends POIXMLDocumentPart {
          * In the zoom tag inside settings.xml file 
    * it sets the value of zoom *
    - * sample snippet from settings.xml + * sample snippet from settings.xml *
    -     *    <w:zoom w:percent="50" /> 
    +     *    <w:zoom w:percent="50" />
          * 
          */
         public void setZoomPercent(long zoomPercent) {
    -       if (! ctSettings.isSetZoom()) {
    -          ctSettings.addNewZoom();
    -       }
    -       CTZoom zoom = ctSettings.getZoom();
    -       zoom.setPercent(BigInteger.valueOf(zoomPercent));
    +        if (!ctSettings.isSetZoom()) {
    +            ctSettings.addNewZoom();
    +        }
    +        CTZoom zoom = ctSettings.getZoom();
    +        zoom.setPercent(BigInteger.valueOf(zoomPercent));
         }
     
         /**
          * Verifies the documentProtection tag inside settings.xml file 
    * if the protection is enforced (w:enforcement="1")
    * and if the kind of protection equals to passed (STDocProtect.Enum editValue)
    - * + *

    *
    * sample snippet from settings.xml *

          *     <w:settings  ... >
          *         <w:documentProtection w:edit="readOnly" w:enforcement="1"/>
          * 
    - * + * * @return true if documentProtection is enforced with option readOnly */ public boolean isEnforcedWith(STDocProtect.Enum editValue) { @@ -152,23 +152,23 @@ public class XWPFSettings extends POIXMLDocumentPart { *
    * sample snippet from settings.xml *
    -     *   <w:documentProtection w:edit="[passed editValue]" w:enforcement="1" 
    +     *   <w:documentProtection w:edit="[passed editValue]" w:enforcement="1"
          *       w:cryptProviderType="rsaAES" w:cryptAlgorithmClass="hash"
          *       w:cryptAlgorithmType="typeAny" w:cryptAlgorithmSid="14"
          *       w:cryptSpinCount="100000" w:hash="..." w:salt="...."
          *   />
          * 
    - * + * * @param editValue the protection type - * @param password the plaintext password, if null no password will be applied - * @param hashAlgo the hash algorithm - only md2, m5, sha1, sha256, sha384 and sha512 are supported. - * if null, it will default default to sha1 + * @param password the plaintext password, if null no password will be applied + * @param hashAlgo the hash algorithm - only md2, m5, sha1, sha256, sha384 and sha512 are supported. + * if null, it will default default to sha1 */ public void setEnforcementEditValue(org.openxmlformats.schemas.wordprocessingml.x2006.main.STDocProtect.Enum editValue, - String password, HashAlgorithm hashAlgo) { + String password, HashAlgorithm hashAlgo) { safeGetDocumentProtection().setEnforcement(STOnOff.X_1); safeGetDocumentProtection().setEdit(editValue); - + if (password == null) { if (safeGetDocumentProtection().isSetCryptProviderType()) { safeGetDocumentProtection().unsetCryptProviderType(); @@ -177,23 +177,23 @@ public class XWPFSettings extends POIXMLDocumentPart { if (safeGetDocumentProtection().isSetCryptAlgorithmClass()) { safeGetDocumentProtection().unsetCryptAlgorithmClass(); } - + if (safeGetDocumentProtection().isSetCryptAlgorithmType()) { safeGetDocumentProtection().unsetCryptAlgorithmType(); } - + if (safeGetDocumentProtection().isSetCryptAlgorithmSid()) { safeGetDocumentProtection().unsetCryptAlgorithmSid(); } - + if (safeGetDocumentProtection().isSetSalt()) { safeGetDocumentProtection().unsetSalt(); } - + if (safeGetDocumentProtection().isSetCryptSpinCount()) { safeGetDocumentProtection().unsetCryptSpinCount(); } - + if (safeGetDocumentProtection().isSetHash()) { safeGetDocumentProtection().unsetHash(); } @@ -201,47 +201,47 @@ public class XWPFSettings extends POIXMLDocumentPart { final STCryptProv.Enum providerType; final int sid; switch (hashAlgo) { - case md2: - providerType = STCryptProv.RSA_FULL; - sid = 1; - break; - case md4: - providerType = STCryptProv.RSA_FULL; - sid = 2; - break; - case md5: - providerType = STCryptProv.RSA_FULL; - sid = 3; - break; - case sha1: - providerType = STCryptProv.RSA_FULL; - sid = 4; - break; - case sha256: - providerType = STCryptProv.RSA_AES; - sid = 12; - break; - case sha384: - providerType = STCryptProv.RSA_AES; - sid = 13; - break; - case sha512: - providerType = STCryptProv.RSA_AES; - sid = 14; - break; - default: - throw new EncryptedDocumentException - ("Hash algorithm '"+hashAlgo+"' is not supported for document write protection."); + case md2: + providerType = STCryptProv.RSA_FULL; + sid = 1; + break; + case md4: + providerType = STCryptProv.RSA_FULL; + sid = 2; + break; + case md5: + providerType = STCryptProv.RSA_FULL; + sid = 3; + break; + case sha1: + providerType = STCryptProv.RSA_FULL; + sid = 4; + break; + case sha256: + providerType = STCryptProv.RSA_AES; + sid = 12; + break; + case sha384: + providerType = STCryptProv.RSA_AES; + sid = 13; + break; + case sha512: + providerType = STCryptProv.RSA_AES; + sid = 14; + break; + default: + throw new EncryptedDocumentException + ("Hash algorithm '" + hashAlgo + "' is not supported for document write protection."); } - - SecureRandom random = new SecureRandom(); + + SecureRandom random = new SecureRandom(); byte salt[] = random.generateSeed(16); - + // Iterations specifies the number of times the hashing function shall be iteratively run (using each // iteration's result as the input for the next iteration). int spinCount = 100000; - + if (hashAlgo == null) hashAlgo = HashAlgorithm.sha1; String legacyHash = CryptoFunctions.xorHashPasswordReversed(password); @@ -257,7 +257,7 @@ public class XWPFSettings extends POIXMLDocumentPart { safeGetDocumentProtection().setCryptAlgorithmClass(STAlgClass.HASH); safeGetDocumentProtection().setCryptProviderType(providerType); safeGetDocumentProtection().setCryptAlgorithmSid(BigInteger.valueOf(sid)); - } + } } /** @@ -271,30 +271,45 @@ public class XWPFSettings extends POIXMLDocumentPart { byte hash[] = safeGetDocumentProtection().getHash(); byte salt[] = safeGetDocumentProtection().getSalt(); BigInteger spinCount = safeGetDocumentProtection().getCryptSpinCount(); - + if (sid == null || hash == null || salt == null || spinCount == null) return false; - + HashAlgorithm hashAlgo; switch (sid.intValue()) { - case 1: hashAlgo = HashAlgorithm.md2; break; - case 2: hashAlgo = HashAlgorithm.md4; break; - case 3: hashAlgo = HashAlgorithm.md5; break; - case 4: hashAlgo = HashAlgorithm.sha1; break; - case 12: hashAlgo = HashAlgorithm.sha256; break; - case 13: hashAlgo = HashAlgorithm.sha384; break; - case 14: hashAlgo = HashAlgorithm.sha512; break; - default: return false; + case 1: + hashAlgo = HashAlgorithm.md2; + break; + case 2: + hashAlgo = HashAlgorithm.md4; + break; + case 3: + hashAlgo = HashAlgorithm.md5; + break; + case 4: + hashAlgo = HashAlgorithm.sha1; + break; + case 12: + hashAlgo = HashAlgorithm.sha256; + break; + case 13: + hashAlgo = HashAlgorithm.sha384; + break; + case 14: + hashAlgo = HashAlgorithm.sha512; + break; + default: + return false; } - + String legacyHash = CryptoFunctions.xorHashPasswordReversed(password); // Implementation Notes List: // --> In this third stage, the reversed byte order legacy hash from the second stage shall // be converted to Unicode hex string representation byte hash2[] = CryptoFunctions.hashPassword(legacyHash, hashAlgo, salt, spinCount.intValue(), false); - + return Arrays.equals(hash, hash2); } - + /** * Removes protection enforcement.
    * In the documentProtection tag inside settings.xml file
    @@ -308,18 +323,18 @@ public class XWPFSettings extends POIXMLDocumentPart { * Enforces fields update on document open (in Word). * In the settings.xml file
    * sets the updateSettings value to true (w:updateSettings w:val="true") - * - * NOTICES: - *
      - *
    • Causing Word to ask on open: "This document contains fields that may refer to other files. Do you want to update the fields in this document?" - * (if "Update automatic links at open" is enabled)
    • - *
    • Flag is removed after saving with changes in Word
    • - *
    + *

    + * NOTICES: + *

      + *
    • Causing Word to ask on open: "This document contains fields that may refer to other files. Do you want to update the fields in this document?" + * (if "Update automatic links at open" is enabled)
    • + *
    • Flag is removed after saving with changes in Word
    • + *
    */ public void setUpdateFields() { - CTOnOff onOff = CTOnOff.Factory.newInstance(); - onOff.setVal(STOnOff.TRUE); - ctSettings.setUpdateFields(onOff); + CTOnOff onOff = CTOnOff.Factory.newInstance(); + onOff.setVal(STOnOff.TRUE); + ctSettings.setUpdateFields(onOff); } boolean isUpdateFields() { @@ -328,7 +343,7 @@ public class XWPFSettings extends POIXMLDocumentPart { /** * Check if revision tracking is turned on. - * + * * @return true if revision tracking is turned on */ public boolean isTrackRevisions() { @@ -337,16 +352,16 @@ public class XWPFSettings extends POIXMLDocumentPart { /** * Enable or disable revision tracking. - * + * * @param enable true to turn on revision tracking, false to turn off revision tracking */ public void setTrackRevisions(boolean enable) { - if(enable) { - if(!ctSettings.isSetTrackRevisions()) { + if (enable) { + if (!ctSettings.isSetTrackRevisions()) { ctSettings.addNewTrackRevisions(); } } else { - if(ctSettings.isSetTrackRevisions()) { + if (ctSettings.isSetTrackRevisions()) { ctSettings.unsetTrackRevisions(); } } @@ -355,7 +370,7 @@ public class XWPFSettings extends POIXMLDocumentPart { @Override protected void commit() throws IOException { if (ctSettings == null) { - throw new IllegalStateException("Unable to write out settings that were never read in!"); + throw new IllegalStateException("Unable to write out settings that were never read in!"); } XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS); diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyle.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyle.java index 2ceff9719..a6ebdcc71 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyle.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyle.java @@ -19,128 +19,141 @@ package org.apache.poi.xwpf.usermodel; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTStyle; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STStyleType; - -/** - * @author Philipp Epp - * - */ -public class XWPFStyle { - - private CTStyle ctStyle; - protected XWPFStyles styles; - - /** - * constructor - * @param style - */ - public XWPFStyle(CTStyle style){ - this(style,null); - } - /** - * constructor - * @param style - * @param styles - */ - public XWPFStyle(CTStyle style, XWPFStyles styles){ - this.ctStyle = style; - this.styles = styles; - } - - /** - * get StyleID of the style - * @return styleID StyleID of the style - */ - public String getStyleId(){ - return ctStyle.getStyleId(); - } - - /** - * get Type of the Style - * @return ctType - */ - public STStyleType.Enum getType(){ - return ctStyle.getType(); - } - - /** - * set style - * @param style - */ - public void setStyle(CTStyle style){ - this.ctStyle = style; - } - /** - * get ctStyle - * @return ctStyle - */ - public CTStyle getCTStyle(){ - return this.ctStyle; - } - /** - * set styleID - * @param styleId - */ - public void setStyleId(String styleId){ - ctStyle.setStyleId(styleId); - } - - /** - * set styleType - * @param type - */ - public void setType(STStyleType.Enum type){ - ctStyle.setType(type); - } - /** - * get styles - * @return styles the styles to which this style belongs - */ - public XWPFStyles getStyles(){ - return styles; - } - - public String getBasisStyleID(){ - if(ctStyle.getBasedOn()!=null) - return ctStyle.getBasedOn().getVal(); - else - return null; - } - - - /** - * get StyleID of the linked Style - */ - public String getLinkStyleID(){ - if (ctStyle.getLink()!=null) - return ctStyle.getLink().getVal(); - else - return null; - } - - /** - * get StyleID of the next style - */ - public String getNextStyleID(){ - if(ctStyle.getNext()!=null) - return ctStyle.getNext().getVal(); - else - return null; - } - - public String getName() { - if(ctStyle.isSetName()) - return ctStyle.getName().getVal(); - return null; - } - - /** - * compares the names of the Styles - * @param compStyle - */ - public boolean hasSameName(XWPFStyle compStyle){ - CTStyle ctCompStyle = compStyle.getCTStyle(); - String name = ctCompStyle.getName().getVal(); - return name.equals(ctStyle.getName().getVal()); - } - -}//end class + +/** + * @author Philipp Epp + */ +public class XWPFStyle { + + protected XWPFStyles styles; + private CTStyle ctStyle; + + /** + * constructor + * + * @param style + */ + public XWPFStyle(CTStyle style) { + this(style, null); + } + + /** + * constructor + * + * @param style + * @param styles + */ + public XWPFStyle(CTStyle style, XWPFStyles styles) { + this.ctStyle = style; + this.styles = styles; + } + + /** + * get StyleID of the style + * + * @return styleID StyleID of the style + */ + public String getStyleId() { + return ctStyle.getStyleId(); + } + + /** + * set styleID + * + * @param styleId + */ + public void setStyleId(String styleId) { + ctStyle.setStyleId(styleId); + } + + /** + * get Type of the Style + * + * @return ctType + */ + public STStyleType.Enum getType() { + return ctStyle.getType(); + } + + /** + * set styleType + * + * @param type + */ + public void setType(STStyleType.Enum type) { + ctStyle.setType(type); + } + + /** + * set style + * + * @param style + */ + public void setStyle(CTStyle style) { + this.ctStyle = style; + } + + /** + * get ctStyle + * + * @return ctStyle + */ + public CTStyle getCTStyle() { + return this.ctStyle; + } + + /** + * get styles + * + * @return styles the styles to which this style belongs + */ + public XWPFStyles getStyles() { + return styles; + } + + public String getBasisStyleID() { + if (ctStyle.getBasedOn() != null) + return ctStyle.getBasedOn().getVal(); + else + return null; + } + + + /** + * get StyleID of the linked Style + */ + public String getLinkStyleID() { + if (ctStyle.getLink() != null) + return ctStyle.getLink().getVal(); + else + return null; + } + + /** + * get StyleID of the next style + */ + public String getNextStyleID() { + if (ctStyle.getNext() != null) + return ctStyle.getNext().getVal(); + else + return null; + } + + public String getName() { + if (ctStyle.isSetName()) + return ctStyle.getName().getVal(); + return null; + } + + /** + * compares the names of the Styles + * + * @param compStyle + */ + public boolean hasSameName(XWPFStyle compStyle) { + CTStyle ctCompStyle = compStyle.getCTStyle(); + String name = ctCompStyle.getName().getVal(); + return name.equals(ctStyle.getName().getVal()); + } + +}//end class diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java index 8647cc9f7..ed3960179 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java @@ -31,42 +31,43 @@ import org.apache.poi.POIXMLDocumentPart; import org.apache.poi.POIXMLException; import org.apache.poi.openxml4j.exceptions.OpenXML4JException; import org.apache.poi.openxml4j.opc.PackagePart; -import org.apache.poi.openxml4j.opc.PackageRelationship; -import org.apache.xmlbeans.XmlException; -import org.apache.xmlbeans.XmlOptions; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPPrDefault; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTStyle; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTStyles; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.StylesDocument; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPrDefault; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTLanguage; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFonts; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDocDefaults; -/** - * Holds details of built-in, default and user styles, which - * apply to tables / paragraphs / lists etc. - * Text within one of those with custom stylings has the style - * information stored in the {@link XWPFRun} - */ -public class XWPFStyles extends POIXMLDocumentPart{ - private CTStyles ctStyles; - private List listStyle = new ArrayList(); - - private XWPFLatentStyles latentStyles; - private XWPFDefaultRunStyle defaultRunStyle; - private XWPFDefaultParagraphStyle defaultParaStyle; +import org.apache.poi.openxml4j.opc.PackageRelationship; +import org.apache.xmlbeans.XmlException; +import org.apache.xmlbeans.XmlOptions; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDocDefaults; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFonts; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTLanguage; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPPrDefault; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPrDefault; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTStyle; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTStyles; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.StylesDocument; + +/** + * Holds details of built-in, default and user styles, which + * apply to tables / paragraphs / lists etc. + * Text within one of those with custom stylings has the style + * information stored in the {@link XWPFRun} + */ +public class XWPFStyles extends POIXMLDocumentPart { + private CTStyles ctStyles; + private List listStyle = new ArrayList(); + + private XWPFLatentStyles latentStyles; + private XWPFDefaultRunStyle defaultRunStyle; + private XWPFDefaultParagraphStyle defaultParaStyle; /** * Construct XWPFStyles from a package part * - * @param part the package part holding the data of the styles, - * @param rel the package relationship of type "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" - */ - public XWPFStyles(PackagePart part, PackageRelationship rel) throws IOException, OpenXML4JException{ - super(part, rel); - } - + * @param part the package part holding the data of the styles, + * @param rel the package relationship of type "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" + */ + public XWPFStyles(PackagePart part, PackageRelationship rel) throws IOException, OpenXML4JException { + super(part, rel); + } + /** * Construct XWPFStyles from scratch for a new document. */ @@ -74,13 +75,13 @@ public class XWPFStyles extends POIXMLDocumentPart{ } /** - * Read document - */ - @Override - protected void onDocumentRead() throws IOException{ - StylesDocument stylesDoc; - try { - InputStream is = getPackagePart().getInputStream(); + * Read document + */ + @Override + protected void onDocumentRead() throws IOException { + StylesDocument stylesDoc; + try { + InputStream is = getPackagePart().getInputStream(); stylesDoc = StylesDocument.Factory.parse(is); setStyles(stylesDoc.getStyles()); latentStyles = new XWPFLatentStyles(ctStyles.getLatentStyles(), this); @@ -94,52 +95,53 @@ public class XWPFStyles extends POIXMLDocumentPart{ if (ctStyles == null) { throw new IllegalStateException("Unable to write out styles that were never read in!"); } - - XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS); - xmlOptions.setSaveSyntheticDocumentElement(new QName(CTStyles.type.getName().getNamespaceURI(), "styles")); - Map map = new HashMap(); - map.put("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "r"); - map.put("http://schemas.openxmlformats.org/wordprocessingml/2006/main", "w"); - xmlOptions.setSaveSuggestedPrefixes(map); + + XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS); + xmlOptions.setSaveSyntheticDocumentElement(new QName(CTStyles.type.getName().getNamespaceURI(), "styles")); + Map map = new HashMap(); + map.put("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "r"); + map.put("http://schemas.openxmlformats.org/wordprocessingml/2006/main", "w"); + xmlOptions.setSaveSuggestedPrefixes(map); PackagePart part = getPackagePart(); OutputStream out = part.getOutputStream(); ctStyles.save(out, xmlOptions); out.close(); - } - - protected void ensureDocDefaults() { - if (! ctStyles.isSetDocDefaults()) { - ctStyles.addNewDocDefaults(); - } - - CTDocDefaults docDefaults = ctStyles.getDocDefaults(); - if (! docDefaults.isSetPPrDefault()) - docDefaults.addNewPPrDefault(); - if (! docDefaults.isSetRPrDefault()) - docDefaults.addNewRPrDefault(); - - CTPPrDefault pprd = docDefaults.getPPrDefault(); - CTRPrDefault rprd = docDefaults.getRPrDefault(); - if (!pprd.isSetPPr()) pprd.addNewPPr(); - if (!rprd.isSetRPr()) rprd.addNewRPr(); - - defaultRunStyle = new XWPFDefaultRunStyle(rprd.getRPr()); - defaultParaStyle = new XWPFDefaultParagraphStyle(pprd.getPPr()); - } - - /** - * Sets the ctStyles - * @param styles - */ - @SuppressWarnings("deprecation") + } + + protected void ensureDocDefaults() { + if (!ctStyles.isSetDocDefaults()) { + ctStyles.addNewDocDefaults(); + } + + CTDocDefaults docDefaults = ctStyles.getDocDefaults(); + if (!docDefaults.isSetPPrDefault()) + docDefaults.addNewPPrDefault(); + if (!docDefaults.isSetRPrDefault()) + docDefaults.addNewRPrDefault(); + + CTPPrDefault pprd = docDefaults.getPPrDefault(); + CTRPrDefault rprd = docDefaults.getRPrDefault(); + if (!pprd.isSetPPr()) pprd.addNewPPr(); + if (!rprd.isSetRPr()) rprd.addNewRPr(); + + defaultRunStyle = new XWPFDefaultRunStyle(rprd.getRPr()); + defaultParaStyle = new XWPFDefaultParagraphStyle(pprd.getPPr()); + } + + /** + * Sets the ctStyles + * + * @param styles + */ + @SuppressWarnings("deprecation") public void setStyles(CTStyles styles) { - ctStyles = styles; - - // Build up all the style objects - for(CTStyle style : ctStyles.getStyleArray()) { - listStyle.add(new XWPFStyle(style, this)); - } - if (ctStyles.isSetDocDefaults()) { + ctStyles = styles; + + // Build up all the style objects + for (CTStyle style : ctStyles.getStyleArray()) { + listStyle.add(new XWPFStyle(style, this)); + } + if (ctStyles.isSetDocDefaults()) { CTDocDefaults docDefaults = ctStyles.getDocDefaults(); if (docDefaults.isSetRPrDefault() && docDefaults.getRPrDefault().isSetRPr()) { defaultRunStyle = new XWPFDefaultRunStyle( @@ -151,142 +153,152 @@ public class XWPFStyles extends POIXMLDocumentPart{ } } } - - /** - * checks whether style with styleID exist - * @param styleID styleID of the Style in the style-Document - * @return true if style exist, false if style not exist - */ - public boolean styleExist(String styleID){ - for (XWPFStyle style : listStyle) { - if (style.getStyleId().equals(styleID)) - return true; - } - return false; - } - /** - * add a style to the document - * @param style - * @throws IOException - */ - public void addStyle(XWPFStyle style){ - listStyle.add(style); - ctStyles.addNewStyle(); - int pos = ctStyles.sizeOfStyleArray() - 1; - ctStyles.setStyleArray(pos, style.getCTStyle()); - } - /** - * Get style by a styleID - * @param styleID styleID of the searched style - * @return style - */ - public XWPFStyle getStyle(String styleID){ - for (XWPFStyle style : listStyle) { - if(style.getStyleId().equals(styleID)) - return style; - } - return null; - } - public int getNumberOfStyles() { - return listStyle.size(); - } - - /** - * get the styles which are related to the parameter style and their relatives - * this method can be used to copy all styles from one document to another document - * @param style - * @return a list of all styles which were used by this method - */ - public List getUsedStyleList(XWPFStyle style){ - List usedStyleList = new ArrayList(); - usedStyleList.add(style); - return getUsedStyleList(style, usedStyleList); - } - - /** - * get the styles which are related to parameter style - * @param style - * @return all Styles of the parameterList - */ - private List getUsedStyleList(XWPFStyle style, List usedStyleList){ - String basisStyleID = style.getBasisStyleID(); - XWPFStyle basisStyle = getStyle(basisStyleID); - if((basisStyle!=null)&&(!usedStyleList.contains(basisStyle))){ - usedStyleList.add(basisStyle); - getUsedStyleList(basisStyle, usedStyleList); - } - String linkStyleID = style.getLinkStyleID(); - XWPFStyle linkStyle = getStyle(linkStyleID); - if((linkStyle!=null)&&(!usedStyleList.contains(linkStyle))){ - usedStyleList.add(linkStyle); - getUsedStyleList(linkStyle, usedStyleList); - } - - String nextStyleID = style.getNextStyleID(); - XWPFStyle nextStyle = getStyle(nextStyleID); - if((nextStyle!=null)&&(!usedStyleList.contains(nextStyle))){ - usedStyleList.add(linkStyle); - getUsedStyleList(linkStyle, usedStyleList); - } - return usedStyleList; - } - - protected CTLanguage getCTLanguage() { - ensureDocDefaults(); - - CTLanguage lang = null; - if (defaultRunStyle.getRPr().isSetLang()) { - lang = defaultRunStyle.getRPr().getLang(); - } else { - lang = defaultRunStyle.getRPr().addNewLang(); - } - - return lang; - } - - /** - * Sets the default spelling language on ctStyles DocDefaults parameter - * @param strSpellingLanguage - */ - public void setSpellingLanguage(String strSpellingLanguage) { + + /** + * checks whether style with styleID exist + * + * @param styleID styleID of the Style in the style-Document + * @return true if style exist, false if style not exist + */ + public boolean styleExist(String styleID) { + for (XWPFStyle style : listStyle) { + if (style.getStyleId().equals(styleID)) + return true; + } + return false; + } + + /** + * add a style to the document + * + * @param style + * @throws IOException + */ + public void addStyle(XWPFStyle style) { + listStyle.add(style); + ctStyles.addNewStyle(); + int pos = ctStyles.sizeOfStyleArray() - 1; + ctStyles.setStyleArray(pos, style.getCTStyle()); + } + + /** + * Get style by a styleID + * + * @param styleID styleID of the searched style + * @return style + */ + public XWPFStyle getStyle(String styleID) { + for (XWPFStyle style : listStyle) { + if (style.getStyleId().equals(styleID)) + return style; + } + return null; + } + + public int getNumberOfStyles() { + return listStyle.size(); + } + + /** + * get the styles which are related to the parameter style and their relatives + * this method can be used to copy all styles from one document to another document + * + * @param style + * @return a list of all styles which were used by this method + */ + public List getUsedStyleList(XWPFStyle style) { + List usedStyleList = new ArrayList(); + usedStyleList.add(style); + return getUsedStyleList(style, usedStyleList); + } + + /** + * get the styles which are related to parameter style + * + * @param style + * @return all Styles of the parameterList + */ + private List getUsedStyleList(XWPFStyle style, List usedStyleList) { + String basisStyleID = style.getBasisStyleID(); + XWPFStyle basisStyle = getStyle(basisStyleID); + if ((basisStyle != null) && (!usedStyleList.contains(basisStyle))) { + usedStyleList.add(basisStyle); + getUsedStyleList(basisStyle, usedStyleList); + } + String linkStyleID = style.getLinkStyleID(); + XWPFStyle linkStyle = getStyle(linkStyleID); + if ((linkStyle != null) && (!usedStyleList.contains(linkStyle))) { + usedStyleList.add(linkStyle); + getUsedStyleList(linkStyle, usedStyleList); + } + + String nextStyleID = style.getNextStyleID(); + XWPFStyle nextStyle = getStyle(nextStyleID); + if ((nextStyle != null) && (!usedStyleList.contains(nextStyle))) { + usedStyleList.add(linkStyle); + getUsedStyleList(linkStyle, usedStyleList); + } + return usedStyleList; + } + + protected CTLanguage getCTLanguage() { + ensureDocDefaults(); + + CTLanguage lang = null; + if (defaultRunStyle.getRPr().isSetLang()) { + lang = defaultRunStyle.getRPr().getLang(); + } else { + lang = defaultRunStyle.getRPr().addNewLang(); + } + + return lang; + } + + /** + * Sets the default spelling language on ctStyles DocDefaults parameter + * + * @param strSpellingLanguage + */ + public void setSpellingLanguage(String strSpellingLanguage) { CTLanguage lang = getCTLanguage(); - lang.setVal(strSpellingLanguage); - lang.setBidi(strSpellingLanguage); - } - - /** - * Sets the default East Asia spelling language on ctStyles DocDefaults parameter - * @param strEastAsia - */ - public void setEastAsia(String strEastAsia) { + lang.setVal(strSpellingLanguage); + lang.setBidi(strSpellingLanguage); + } + + /** + * Sets the default East Asia spelling language on ctStyles DocDefaults parameter + * + * @param strEastAsia + */ + public void setEastAsia(String strEastAsia) { CTLanguage lang = getCTLanguage(); lang.setEastAsia(strEastAsia); } - /** - * Sets the default font on ctStyles DocDefaults parameter - * TODO Replace this with specific setters for each type, possibly - * on XWPFDefaultRunStyle - */ - public void setDefaultFonts(CTFonts fonts) { - ensureDocDefaults(); - - CTRPr runProps = defaultRunStyle.getRPr(); - runProps.setRFonts(fonts); - } + /** + * Sets the default font on ctStyles DocDefaults parameter + * TODO Replace this with specific setters for each type, possibly + * on XWPFDefaultRunStyle + */ + public void setDefaultFonts(CTFonts fonts) { + ensureDocDefaults(); + + CTRPr runProps = defaultRunStyle.getRPr(); + runProps.setRFonts(fonts); + } /** - * get the style with the same name - * if this style is not existing, return null - */ - public XWPFStyle getStyleWithSameName(XWPFStyle style){ - for (XWPFStyle ownStyle : listStyle) { - if(ownStyle.hasSameName(style)){ - return ownStyle; - } - } - return null; - } + * get the style with the same name + * if this style is not existing, return null + */ + public XWPFStyle getStyleWithSameName(XWPFStyle style) { + for (XWPFStyle ownStyle : listStyle) { + if (ownStyle.hasSameName(style)) { + return ownStyle; + } + } + return null; + } /** * Get the default style which applies text runs in the document diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTable.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTable.java index 643d28ffa..1f4fd2b38 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTable.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTable.java @@ -44,19 +44,10 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth; * of paragraphs (and other block-level content) arranged in rows and columns.

    */ public class XWPFTable implements IBodyElement, ISDTContents { - protected StringBuffer text = new StringBuffer(); - private CTTbl ctTbl; - protected List tableRows; - protected List styleIDs; - - // Create a map from this XWPF-level enum to the STBorder.Enum values - public static enum XWPFBorderType { NIL, NONE, SINGLE, THICK, DOUBLE, DOTTED, DASHED, DOT_DASH }; private static EnumMap xwpfBorderTypeMap; // Create a map from the STBorder.Enum values to the XWPF-level enums private static HashMap stBorderTypeMap; - protected IBody part; - static { // populate enum maps xwpfBorderTypeMap = new EnumMap(XWPFBorderType.class); @@ -77,9 +68,17 @@ public class XWPFTable implements IBodyElement, ISDTContents { stBorderTypeMap.put(STBorder.INT_DOUBLE, XWPFBorderType.DOUBLE); stBorderTypeMap.put(STBorder.INT_DOTTED, XWPFBorderType.DOTTED); stBorderTypeMap.put(STBorder.INT_DASHED, XWPFBorderType.DASHED); - stBorderTypeMap.put(STBorder.INT_DOT_DASH, XWPFBorderType.DOT_DASH); + stBorderTypeMap.put(STBorder.INT_DOT_DASH, XWPFBorderType.DOT_DASH); } - + + protected StringBuffer text = new StringBuffer(); + protected List tableRows; + + ; + protected List styleIDs; + protected IBody part; + private CTTbl ctTbl; + public XWPFTable(CTTbl table, IBody part, int row, int col) { this(table, part); @@ -94,7 +93,7 @@ public class XWPFTable implements IBodyElement, ISDTContents { } @SuppressWarnings("deprecation") - public XWPFTable(CTTbl table, IBody part){ + public XWPFTable(CTTbl table, IBody part) { this.part = part; this.ctTbl = table; @@ -163,9 +162,9 @@ public class XWPFTable implements IBodyElement, ISDTContents { * Convenience method to extract text in cells. This * does not extract text recursively in cells, and it does not * currently include text in SDT (form) components. - *

    + *

    * To get all text within a table, see XWPFWordExtractor's appendTableText - * as an example. + * as an example. * * @return text */ @@ -216,6 +215,13 @@ public class XWPFTable implements IBodyElement, ISDTContents { return null; } + /** + * @return width value + */ + public int getWidth() { + CTTblPr tblPr = getTrPr(); + return tblPr.isSetTblW() ? tblPr.getTblW().getW().intValue() : -1; + } /** * @param width @@ -226,14 +232,6 @@ public class XWPFTable implements IBodyElement, ISDTContents { tblWidth.setW(new BigInteger("" + width)); } - /** - * @return width value - */ - public int getWidth() { - CTTblPr tblPr = getTrPr(); - return tblPr.isSetTblW() ? tblPr.getTblW().getW().intValue() : -1; - } - /** * @return number of rows in table */ @@ -253,12 +251,13 @@ public class XWPFTable implements IBodyElement, ISDTContents { } } } - + /** * get the StyleID of the table - * @return style-ID of the table + * + * @return style-ID of the table */ - public String getStyleID(){ + public String getStyleID() { String styleId = null; CTTblPr tblPr = ctTbl.getTblPr(); if (tblPr != null) { @@ -273,6 +272,7 @@ public class XWPFTable implements IBodyElement, ISDTContents { /** * Set the table style. If the style is not defined in the document, MS Word * will set the table style to "Normal". + * * @param styleName - the style name to apply to this table */ public void setStyleID(String styleName) { @@ -523,24 +523,25 @@ public class XWPFTable implements IBodyElement, ISDTContents { /** * add a new Row to the table - * - * @param row the row which should be added + * + * @param row the row which should be added */ - public void addRow(XWPFTableRow row){ + public void addRow(XWPFTableRow row) { ctTbl.addNewTr(); - ctTbl.setTrArray(getNumberOfRows()-1, row.getCtRow()); + ctTbl.setTrArray(getNumberOfRows() - 1, row.getCtRow()); tableRows.add(row); } /** * add a new Row to the table * at position pos - * @param row the row which should be added + * + * @param row the row which should be added */ - public boolean addRow(XWPFTableRow row, int pos){ - if(pos >= 0 && pos <= tableRows.size()){ + public boolean addRow(XWPFTableRow row, int pos) { + if (pos >= 0 && pos <= tableRows.size()) { ctTbl.insertNewTr(pos); - ctTbl.setTrArray(pos,row.getCtRow()); + ctTbl.setTrArray(pos, row.getCtRow()); tableRows.add(pos, row); return true; } @@ -548,12 +549,13 @@ public class XWPFTable implements IBodyElement, ISDTContents { } /** - * inserts a new tablerow + * inserts a new tablerow + * * @param pos - * @return the inserted row + * @return the inserted row */ - public XWPFTableRow insertNewTableRow(int pos){ - if(pos >= 0 && pos <= tableRows.size()){ + public XWPFTableRow insertNewTableRow(int pos) { + if (pos >= 0 && pos <= tableRows.size()) { CTRow row = ctTbl.insertNewTr(pos); XWPFTableRow tableRow = new XWPFTableRow(row, this); tableRows.add(pos, tableRow); @@ -562,10 +564,10 @@ public class XWPFTable implements IBodyElement, ISDTContents { return null; } - /** * Remove a row at position pos from the table - * @param pos position the Row in the Table + * + * @param pos position the Row in the Table */ public boolean removeRow(int pos) throws IndexOutOfBoundsException { if (pos >= 0 && pos < tableRows.size()) { @@ -582,9 +584,9 @@ public class XWPFTable implements IBodyElement, ISDTContents { return tableRows; } - /** * returns the type of the BodyElement Table + * * @see org.apache.poi.xwpf.usermodel.IBodyElement#getElementType() */ public BodyElementType getElementType() { @@ -597,10 +599,11 @@ public class XWPFTable implements IBodyElement, ISDTContents { /** * returns the part of the bodyElement + * * @see org.apache.poi.xwpf.usermodel.IBody#getPart() */ public POIXMLDocumentPart getPart() { - if(part != null){ + if (part != null) { return part.getPart(); } return null; @@ -608,6 +611,7 @@ public class XWPFTable implements IBodyElement, ISDTContents { /** * returns the partType of the bodyPart which owns the bodyElement + * * @see org.apache.poi.xwpf.usermodel.IBody#getPartType() */ public BodyType getPartType() { @@ -619,9 +623,14 @@ public class XWPFTable implements IBodyElement, ISDTContents { * if this row is not existing in the table null will be returned */ public XWPFTableRow getRow(CTRow row) { - for(int i=0; i paragraphs = null; - protected List tables = null; - protected List bodyElements = null; - protected IBody part; - private XWPFTableRow tableRow = null; - // Create a map from this XWPF-level enum to the STVerticalJc.Enum values - public static enum XWPFVertAlign { TOP, CENTER, BOTH, BOTTOM }; - private static EnumMap alignMap; - // Create a map from the STVerticalJc.Enum values to the XWPF-level enums - private static HashMap stVertAlignTypeMap; + +/** + * Represents a Cell within a {@link XWPFTable}. The + * Cell is the thing that holds the actual content (paragraphs etc) + */ +public class XWPFTableCell implements IBody, ICell { + private static EnumMap alignMap; + // Create a map from the STVerticalJc.Enum values to the XWPF-level enums + private static HashMap stVertAlignTypeMap; static { // populate enum maps @@ -68,337 +60,343 @@ public class XWPFTableCell implements IBody, ICell { stVertAlignTypeMap.put(STVerticalJc.INT_CENTER, XWPFVertAlign.CENTER); stVertAlignTypeMap.put(STVerticalJc.INT_BOTH, XWPFVertAlign.BOTH); stVertAlignTypeMap.put(STVerticalJc.INT_BOTTOM, XWPFVertAlign.BOTTOM); - - } - - /** - * If a table cell does not include at least one block-level element, then this document shall be considered corrupt - */ + + } + + private final CTTc ctTc; + protected List paragraphs = null; + protected List tables = null; + protected List bodyElements = null; + + ; + protected IBody part; + private XWPFTableRow tableRow = null; + + /** + * If a table cell does not include at least one block-level element, then this document shall be considered corrupt + */ public XWPFTableCell(CTTc cell, XWPFTableRow tableRow, IBody part) { this.ctTc = cell; - this.part = part; - this.tableRow = tableRow; - // NB: If a table cell does not include at least one block-level element, then this document shall be considered corrupt. - if(cell.sizeOfPArray()<1) - cell.addNewP(); - bodyElements = new ArrayList(); - paragraphs = new ArrayList(); + this.part = part; + this.tableRow = tableRow; + // NB: If a table cell does not include at least one block-level element, then this document shall be considered corrupt. + if (cell.sizeOfPArray() < 1) + cell.addNewP(); + bodyElements = new ArrayList(); + paragraphs = new ArrayList(); tables = new ArrayList(); XmlCursor cursor = ctTc.newCursor(); cursor.selectPath("./*"); - while (cursor.toNextSelection()) { - XmlObject o = cursor.getObject(); - if (o instanceof CTP) { - XWPFParagraph p = new XWPFParagraph((CTP)o, this); - paragraphs.add(p); - bodyElements.add(p); - } - if (o instanceof CTTbl) { - XWPFTable t = new XWPFTable((CTTbl)o, this); - tables.add(t); - bodyElements.add(t); - } - if (o instanceof CTSdtBlock){ - XWPFSDT c = new XWPFSDT((CTSdtBlock)o, this); - bodyElements.add(c); - } - if (o instanceof CTSdtRun){ - XWPFSDT c = new XWPFSDT((CTSdtRun)o, this); - System.out.println(c.getContent().getText()); - bodyElements.add(c); - } - } - cursor.dispose(); + while (cursor.toNextSelection()) { + XmlObject o = cursor.getObject(); + if (o instanceof CTP) { + XWPFParagraph p = new XWPFParagraph((CTP) o, this); + paragraphs.add(p); + bodyElements.add(p); + } + if (o instanceof CTTbl) { + XWPFTable t = new XWPFTable((CTTbl) o, this); + tables.add(t); + bodyElements.add(t); + } + if (o instanceof CTSdtBlock) { + XWPFSDT c = new XWPFSDT((CTSdtBlock) o, this); + bodyElements.add(c); + } + if (o instanceof CTSdtRun) { + XWPFSDT c = new XWPFSDT((CTSdtRun) o, this); + System.out.println(c.getContent().getText()); + bodyElements.add(c); + } + } + cursor.dispose(); + } + + @Internal + public CTTc getCTTc() { + return ctTc; } - - - @Internal - public CTTc getCTTc() { - return ctTc; - } - - /** - * returns an Iterator with paragraphs and tables - * @see org.apache.poi.xwpf.usermodel.IBody#getBodyElements() - */ - public List getBodyElements(){ - return Collections.unmodifiableList(bodyElements); - } - - public void setParagraph(XWPFParagraph p) { - if (ctTc.sizeOfPArray() == 0) { - ctTc.addNewP(); + + /** + * returns an Iterator with paragraphs and tables + * + * @see org.apache.poi.xwpf.usermodel.IBody#getBodyElements() + */ + public List getBodyElements() { + return Collections.unmodifiableList(bodyElements); + } + + public void setParagraph(XWPFParagraph p) { + if (ctTc.sizeOfPArray() == 0) { + ctTc.addNewP(); } ctTc.setPArray(0, p.getCTP()); } - /** - * returns a list of paragraphs - */ - public List getParagraphs(){ - return paragraphs; - } - - /** - * Add a Paragraph to this Table Cell - * @return The paragraph which was added - */ - public XWPFParagraph addParagraph() { - XWPFParagraph p = new XWPFParagraph(ctTc.addNewP(), this); - addParagraph(p); - return p; - } - - /** - * add a Paragraph to this TableCell - * @param p the paragaph which has to be added - */ - public void addParagraph(XWPFParagraph p){ - paragraphs.add(p); - } - - /** - * removes a paragraph of this tablecell - * @param pos - */ - public void removeParagraph(int pos){ - paragraphs.remove(pos); - ctTc.removeP(pos); - } - - /** - * if there is a corresponding {@link XWPFParagraph} of the parameter ctTable in the paragraphList of this table - * the method will return this paragraph - * if there is no corresponding {@link XWPFParagraph} the method will return null - * @param p is instance of CTP and is searching for an XWPFParagraph - * @return null if there is no XWPFParagraph with an corresponding CTPparagraph in the paragraphList of this table - * XWPFParagraph with the correspondig CTP p - */ - public XWPFParagraph getParagraph(CTP p){ - for (XWPFParagraph paragraph : paragraphs) { - if(p.equals(paragraph.getCTP())){ - return paragraph; - } - } - return null; - } - - public void setText(String text) { - CTP ctP = (ctTc.sizeOfPArray() == 0) ? ctTc.addNewP() : ctTc.getPArray(0); - XWPFParagraph par = new XWPFParagraph(ctP, this); - par.createRun().setText(text); - } - - public XWPFTableRow getTableRow(){ - return tableRow; - } - - /** - * Set cell color. This sets some associated values; for finer control - * you may want to access these elements individually. - * @param rgbStr - the desired cell color, in the hex form "RRGGBB". - */ - public void setColor(String rgbStr) { - CTTcPr tcpr = ctTc.isSetTcPr() ? ctTc.getTcPr() : ctTc.addNewTcPr(); - CTShd ctshd = tcpr.isSetShd() ? tcpr.getShd() : tcpr.addNewShd(); - ctshd.setColor("auto"); - ctshd.setVal(STShd.CLEAR); - ctshd.setFill(rgbStr); - } - - /** - * Get cell color. Note that this method only returns the "fill" value. - * @return RGB string of cell color - */ - public String getColor() { - String color = null; - CTTcPr tcpr = ctTc.getTcPr(); - if (tcpr != null) { - CTShd ctshd = tcpr.getShd(); - if (ctshd != null) { - color = ctshd.xgetFill().getStringValue(); - } - } - return color; - } - - /** - * Set the vertical alignment of the cell. - * @param vAlign - the desired alignment enum value - */ - public void setVerticalAlignment(XWPFVertAlign vAlign) { - CTTcPr tcpr = ctTc.isSetTcPr() ? ctTc.getTcPr() : ctTc.addNewTcPr(); - CTVerticalJc va = tcpr.addNewVAlign(); - va.setVal(alignMap.get(vAlign)); - } - - /** - * Get the vertical alignment of the cell. - * @return the cell alignment enum value - */ - public XWPFVertAlign getVerticalAlignment() { - XWPFVertAlign vAlign = null; - CTTcPr tcpr = ctTc.getTcPr(); - if (ctTc != null) { - CTVerticalJc va = tcpr.getVAlign(); - vAlign = stVertAlignTypeMap.get(va.getVal().intValue()); - } - return vAlign; - } - - /** - * add a new paragraph at position of the cursor - * @param cursor - * @return the inserted paragraph - */ - public XWPFParagraph insertNewParagraph(XmlCursor cursor){ - if(!isCursorInTableCell(cursor)) { - return null; - } - - String uri = CTP.type.getName().getNamespaceURI(); - String localPart = "p"; - cursor.beginElement(localPart,uri); - cursor.toParent(); - CTP p = (CTP)cursor.getObject(); - XWPFParagraph newP = new XWPFParagraph(p, this); - XmlObject o = null; - while(!(o instanceof CTP)&&(cursor.toPrevSibling())){ - o = cursor.getObject(); - } - if((!(o instanceof CTP)) || (CTP)o == p){ - paragraphs.add(0, newP); - } - else{ - int pos = paragraphs.indexOf(getParagraph((CTP)o))+1; - paragraphs.add(pos,newP); - } - int i=0; - cursor.toCursor(p.newCursor()); - while(cursor.toPrevSibling()){ - o =cursor.getObject(); - if(o instanceof CTP || o instanceof CTTbl) - i++; - } - bodyElements.add(i, newP); - cursor.toCursor(p.newCursor()); - cursor.toEndToken(); - return newP; - } - - public XWPFTable insertNewTbl(XmlCursor cursor) { - if(isCursorInTableCell(cursor)){ - String uri = CTTbl.type.getName().getNamespaceURI(); - String localPart = "tbl"; - cursor.beginElement(localPart,uri); - cursor.toParent(); - CTTbl t = (CTTbl)cursor.getObject(); - XWPFTable newT = new XWPFTable(t, this); - cursor.removeXmlContents(); - XmlObject o = null; - while(!(o instanceof CTTbl)&&(cursor.toPrevSibling())){ - o = cursor.getObject(); - } - if(!(o instanceof CTTbl)){ - tables.add(0, newT); - } - else{ - int pos = tables.indexOf(getTable((CTTbl)o))+1; - tables.add(pos,newT); - } - int i=0; - cursor = t.newCursor(); - while(cursor.toPrevSibling()){ - o =cursor.getObject(); - if(o instanceof CTP || o instanceof CTTbl) - i++; - } - bodyElements.add(i, newT); - cursor = t.newCursor(); - cursor.toEndToken(); - return newT; - } - return null; - } - - /** - * verifies that cursor is on the right position - */ - private boolean isCursorInTableCell(XmlCursor cursor) { - XmlCursor verify = cursor.newCursor(); - verify.toParent(); - if(verify.getObject() == this.ctTc){ - return true; - } - return false; - } - - - - /** - * @see org.apache.poi.xwpf.usermodel.IBody#getParagraphArray(int) - */ - public XWPFParagraph getParagraphArray(int pos) { - if(pos > 0 && pos < paragraphs.size()){ - return paragraphs.get(pos); - } - return null; - } - - /** - * get the to which the TableCell belongs - * - * @see org.apache.poi.xwpf.usermodel.IBody#getPart() - */ - public POIXMLDocumentPart getPart() { - return tableRow.getTable().getPart(); - } - - /** - * @see org.apache.poi.xwpf.usermodel.IBody#getPartType() - */ - public BodyType getPartType() { - return BodyType.TABLECELL; - } - - - /** - * get a table by its CTTbl-Object - * @see org.apache.poi.xwpf.usermodel.IBody#getTable(org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl) - */ - public XWPFTable getTable(CTTbl ctTable) { - for(int i=0; i 0 && pos < tables.size()){ - return tables.get(pos); - } - return null; - } - - - /** - * @see org.apache.poi.xwpf.usermodel.IBody#getTables() - */ - public List getTables() { - return Collections.unmodifiableList(tables); - } - - - /** - * inserts an existing XWPFTable to the arrays bodyElements and tables - * @see org.apache.poi.xwpf.usermodel.IBody#insertTable(int, org.apache.poi.xwpf.usermodel.XWPFTable) - */ - @SuppressWarnings("deprecation") + /** + * returns a list of paragraphs + */ + public List getParagraphs() { + return paragraphs; + } + + /** + * Add a Paragraph to this Table Cell + * + * @return The paragraph which was added + */ + public XWPFParagraph addParagraph() { + XWPFParagraph p = new XWPFParagraph(ctTc.addNewP(), this); + addParagraph(p); + return p; + } + + /** + * add a Paragraph to this TableCell + * + * @param p the paragaph which has to be added + */ + public void addParagraph(XWPFParagraph p) { + paragraphs.add(p); + } + + /** + * removes a paragraph of this tablecell + * + * @param pos + */ + public void removeParagraph(int pos) { + paragraphs.remove(pos); + ctTc.removeP(pos); + } + + /** + * if there is a corresponding {@link XWPFParagraph} of the parameter ctTable in the paragraphList of this table + * the method will return this paragraph + * if there is no corresponding {@link XWPFParagraph} the method will return null + * + * @param p is instance of CTP and is searching for an XWPFParagraph + * @return null if there is no XWPFParagraph with an corresponding CTPparagraph in the paragraphList of this table + * XWPFParagraph with the correspondig CTP p + */ + public XWPFParagraph getParagraph(CTP p) { + for (XWPFParagraph paragraph : paragraphs) { + if (p.equals(paragraph.getCTP())) { + return paragraph; + } + } + return null; + } + + public XWPFTableRow getTableRow() { + return tableRow; + } + + /** + * Get cell color. Note that this method only returns the "fill" value. + * + * @return RGB string of cell color + */ + public String getColor() { + String color = null; + CTTcPr tcpr = ctTc.getTcPr(); + if (tcpr != null) { + CTShd ctshd = tcpr.getShd(); + if (ctshd != null) { + color = ctshd.xgetFill().getStringValue(); + } + } + return color; + } + + /** + * Set cell color. This sets some associated values; for finer control + * you may want to access these elements individually. + * + * @param rgbStr - the desired cell color, in the hex form "RRGGBB". + */ + public void setColor(String rgbStr) { + CTTcPr tcpr = ctTc.isSetTcPr() ? ctTc.getTcPr() : ctTc.addNewTcPr(); + CTShd ctshd = tcpr.isSetShd() ? tcpr.getShd() : tcpr.addNewShd(); + ctshd.setColor("auto"); + ctshd.setVal(STShd.CLEAR); + ctshd.setFill(rgbStr); + } + + /** + * Get the vertical alignment of the cell. + * + * @return the cell alignment enum value + */ + public XWPFVertAlign getVerticalAlignment() { + XWPFVertAlign vAlign = null; + CTTcPr tcpr = ctTc.getTcPr(); + if (ctTc != null) { + CTVerticalJc va = tcpr.getVAlign(); + vAlign = stVertAlignTypeMap.get(va.getVal().intValue()); + } + return vAlign; + } + + /** + * Set the vertical alignment of the cell. + * + * @param vAlign - the desired alignment enum value + */ + public void setVerticalAlignment(XWPFVertAlign vAlign) { + CTTcPr tcpr = ctTc.isSetTcPr() ? ctTc.getTcPr() : ctTc.addNewTcPr(); + CTVerticalJc va = tcpr.addNewVAlign(); + va.setVal(alignMap.get(vAlign)); + } + + /** + * add a new paragraph at position of the cursor + * + * @param cursor + * @return the inserted paragraph + */ + public XWPFParagraph insertNewParagraph(XmlCursor cursor) { + if (!isCursorInTableCell(cursor)) { + return null; + } + + String uri = CTP.type.getName().getNamespaceURI(); + String localPart = "p"; + cursor.beginElement(localPart, uri); + cursor.toParent(); + CTP p = (CTP) cursor.getObject(); + XWPFParagraph newP = new XWPFParagraph(p, this); + XmlObject o = null; + while (!(o instanceof CTP) && (cursor.toPrevSibling())) { + o = cursor.getObject(); + } + if ((!(o instanceof CTP)) || (CTP) o == p) { + paragraphs.add(0, newP); + } else { + int pos = paragraphs.indexOf(getParagraph((CTP) o)) + 1; + paragraphs.add(pos, newP); + } + int i = 0; + cursor.toCursor(p.newCursor()); + while (cursor.toPrevSibling()) { + o = cursor.getObject(); + if (o instanceof CTP || o instanceof CTTbl) + i++; + } + bodyElements.add(i, newP); + cursor.toCursor(p.newCursor()); + cursor.toEndToken(); + return newP; + } + + public XWPFTable insertNewTbl(XmlCursor cursor) { + if (isCursorInTableCell(cursor)) { + String uri = CTTbl.type.getName().getNamespaceURI(); + String localPart = "tbl"; + cursor.beginElement(localPart, uri); + cursor.toParent(); + CTTbl t = (CTTbl) cursor.getObject(); + XWPFTable newT = new XWPFTable(t, this); + cursor.removeXmlContents(); + XmlObject o = null; + while (!(o instanceof CTTbl) && (cursor.toPrevSibling())) { + o = cursor.getObject(); + } + if (!(o instanceof CTTbl)) { + tables.add(0, newT); + } else { + int pos = tables.indexOf(getTable((CTTbl) o)) + 1; + tables.add(pos, newT); + } + int i = 0; + cursor = t.newCursor(); + while (cursor.toPrevSibling()) { + o = cursor.getObject(); + if (o instanceof CTP || o instanceof CTTbl) + i++; + } + bodyElements.add(i, newT); + cursor = t.newCursor(); + cursor.toEndToken(); + return newT; + } + return null; + } + + /** + * verifies that cursor is on the right position + */ + private boolean isCursorInTableCell(XmlCursor cursor) { + XmlCursor verify = cursor.newCursor(); + verify.toParent(); + if (verify.getObject() == this.ctTc) { + return true; + } + return false; + } + + /** + * @see org.apache.poi.xwpf.usermodel.IBody#getParagraphArray(int) + */ + public XWPFParagraph getParagraphArray(int pos) { + if (pos > 0 && pos < paragraphs.size()) { + return paragraphs.get(pos); + } + return null; + } + + /** + * get the to which the TableCell belongs + * + * @see org.apache.poi.xwpf.usermodel.IBody#getPart() + */ + public POIXMLDocumentPart getPart() { + return tableRow.getTable().getPart(); + } + + /** + * @see org.apache.poi.xwpf.usermodel.IBody#getPartType() + */ + public BodyType getPartType() { + return BodyType.TABLECELL; + } + + /** + * get a table by its CTTbl-Object + * + * @see org.apache.poi.xwpf.usermodel.IBody#getTable(org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl) + */ + public XWPFTable getTable(CTTbl ctTable) { + for (int i = 0; i < tables.size(); i++) { + if (getTables().get(i).getCTTbl() == ctTable) return getTables().get(i); + } + return null; + } + + /** + * @see org.apache.poi.xwpf.usermodel.IBody#getTableArray(int) + */ + public XWPFTable getTableArray(int pos) { + if (pos > 0 && pos < tables.size()) { + return tables.get(pos); + } + return null; + } + + /** + * @see org.apache.poi.xwpf.usermodel.IBody#getTables() + */ + public List getTables() { + return Collections.unmodifiableList(tables); + } + + /** + * inserts an existing XWPFTable to the arrays bodyElements and tables + * + * @see org.apache.poi.xwpf.usermodel.IBody#insertTable(int, org.apache.poi.xwpf.usermodel.XWPFTable) + */ + @SuppressWarnings("deprecation") public void insertTable(int pos, XWPFTable table) { bodyElements.add(pos, table); int i = 0; @@ -408,90 +406,101 @@ public class XWPFTableCell implements IBody, ICell { } i++; } - tables.add(i, table); - } - - public String getText(){ - StringBuffer text = new StringBuffer(); - for (XWPFParagraph p : paragraphs) { - text.append(p.getText()); - } - return text.toString(); + tables.add(i, table); + } + + public String getText() { + StringBuffer text = new StringBuffer(); + for (XWPFParagraph p : paragraphs) { + text.append(p.getText()); + } + return text.toString(); + } + + public void setText(String text) { + CTP ctP = (ctTc.sizeOfPArray() == 0) ? ctTc.addNewP() : ctTc.getPArray(0); + XWPFParagraph par = new XWPFParagraph(ctP, this); + par.createRun().setText(text); + } + + /** + * extracts all text recursively through embedded tables and embedded SDTs + */ + public String getTextRecursively() { + + StringBuffer text = new StringBuffer(); + for (int i = 0; i < bodyElements.size(); i++) { + boolean isLast = (i == bodyElements.size() - 1) ? true : false; + appendBodyElementText(text, bodyElements.get(i), isLast); + } + + return text.toString(); + } + + private void appendBodyElementText(StringBuffer text, IBodyElement e, boolean isLast) { + if (e instanceof XWPFParagraph) { + text.append(((XWPFParagraph) e).getText()); + if (isLast == false) { + text.append('\t'); + } + } else if (e instanceof XWPFTable) { + XWPFTable eTable = (XWPFTable) e; + for (XWPFTableRow row : eTable.getRows()) { + for (XWPFTableCell cell : row.getTableCells()) { + List localBodyElements = cell.getBodyElements(); + for (int i = 0; i < localBodyElements.size(); i++) { + boolean localIsLast = (i == localBodyElements.size() - 1) ? true : false; + appendBodyElementText(text, localBodyElements.get(i), localIsLast); + } + } + } + + if (isLast == false) { + text.append('\n'); + } + } else if (e instanceof XWPFSDT) { + text.append(((XWPFSDT) e).getContent().getText()); + if (isLast == false) { + text.append('\t'); + } + } } /** - * extracts all text recursively through embedded tables and embedded SDTs - */ - public String getTextRecursively(){ - - StringBuffer text = new StringBuffer(); - for (int i = 0; i < bodyElements.size(); i++){ - boolean isLast = (i== bodyElements.size()-1)? true : false; - appendBodyElementText(text, bodyElements.get(i), isLast); - } - - return text.toString(); - } - - private void appendBodyElementText(StringBuffer text, IBodyElement e, boolean isLast){ - if (e instanceof XWPFParagraph){ - text.append(((XWPFParagraph)e).getText()); - if (isLast == false){ - text.append('\t'); - } - } else if (e instanceof XWPFTable){ - XWPFTable eTable = (XWPFTable)e; - for (XWPFTableRow row : eTable.getRows()){ - for (XWPFTableCell cell : row.getTableCells()){ - List localBodyElements = cell.getBodyElements(); - for (int i = 0; i < localBodyElements.size(); i++){ - boolean localIsLast = (i== localBodyElements.size()-1)? true : false; - appendBodyElementText(text, localBodyElements.get(i), localIsLast); - } - } - } - - if (isLast == false){ - text.append('\n'); - } - } else if (e instanceof XWPFSDT){ - text.append(((XWPFSDT)e).getContent().getText()); - if (isLast == false){ - text.append('\t'); - } - } - } - - /** - * get the TableCell which belongs to the TableCell - */ - public XWPFTableCell getTableCell(CTTc cell) { - XmlCursor cursor = cell.newCursor(); - cursor.toParent(); - XmlObject o = cursor.getObject(); - if(!(o instanceof CTRow)){ - return null; - } - CTRow row = (CTRow)o; - cursor.toParent(); - o = cursor.getObject(); - cursor.dispose(); - if(! (o instanceof CTTbl)){ - return null; - } - CTTbl tbl = (CTTbl) o; - XWPFTable table = getTable(tbl); - if(table == null){ - return null; - } - XWPFTableRow tableRow = table.getRow(row); - if (tableRow == null) { - return null; - } - return tableRow.getTableCell(cell); - } - - public XWPFDocument getXWPFDocument() { - return part.getXWPFDocument(); - } -} + * get the TableCell which belongs to the TableCell + */ + public XWPFTableCell getTableCell(CTTc cell) { + XmlCursor cursor = cell.newCursor(); + cursor.toParent(); + XmlObject o = cursor.getObject(); + if (!(o instanceof CTRow)) { + return null; + } + CTRow row = (CTRow) o; + cursor.toParent(); + o = cursor.getObject(); + cursor.dispose(); + if (!(o instanceof CTTbl)) { + return null; + } + CTTbl tbl = (CTTbl) o; + XWPFTable table = getTable(tbl); + if (table == null) { + return null; + } + XWPFTableRow tableRow = table.getRow(row); + if (tableRow == null) { + return null; + } + return tableRow.getTableCell(cell); + } + + public XWPFDocument getXWPFDocument() { + return part.getXWPFDocument(); + } + + // Create a map from this XWPF-level enum to the STVerticalJc.Enum values + public static enum XWPFVertAlign { + TOP, CENTER, BOTH, BOTTOM + } +} diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java index 627ee3c8d..5a947efc7 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableRow.java @@ -31,14 +31,14 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTrPr; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff; - -/** - * A row within an {@link XWPFTable}. Rows mostly just have - * sizings and stylings, the interesting content lives inside - * the child {@link XWPFTableCell}s - */ -public class XWPFTableRow { - private CTRow ctRow; + +/** + * A row within an {@link XWPFTable}. Rows mostly just have + * sizings and stylings, the interesting content lives inside + * the child {@link XWPFTableCell}s + */ +public class XWPFTableRow { + private CTRow ctRow; private XWPFTable table; private List tableCells; @@ -52,187 +52,195 @@ public class XWPFTableRow { public CTRow getCtRow() { return ctRow; } - - /** - * create a new XWPFTableCell and add it to the tableCell-list of this tableRow - * @return the newly created XWPFTableCell - */ - public XWPFTableCell createCell() { - XWPFTableCell tableCell = new XWPFTableCell(ctRow.addNewTc(), this, table.getBody()); - tableCells.add(tableCell); - return tableCell; - } - - public XWPFTableCell getCell(int pos) { - if (pos >= 0 && pos < ctRow.sizeOfTcArray()) { - return getTableCells().get(pos); - } - return null; - } - - public void removeCell(int pos) { - if (pos >= 0 && pos < ctRow.sizeOfTcArray()) { - tableCells.remove(pos); - } - } - /** - * adds a new TableCell at the end of this tableRow - */ - public XWPFTableCell addNewTableCell(){ - CTTc cell = ctRow.addNewTc(); - XWPFTableCell tableCell = new XWPFTableCell(cell, this, table.getBody()); - tableCells.add(tableCell); - return tableCell; - } - - /** + + /** + * create a new XWPFTableCell and add it to the tableCell-list of this tableRow + * + * @return the newly created XWPFTableCell + */ + public XWPFTableCell createCell() { + XWPFTableCell tableCell = new XWPFTableCell(ctRow.addNewTc(), this, table.getBody()); + tableCells.add(tableCell); + return tableCell; + } + + public XWPFTableCell getCell(int pos) { + if (pos >= 0 && pos < ctRow.sizeOfTcArray()) { + return getTableCells().get(pos); + } + return null; + } + + public void removeCell(int pos) { + if (pos >= 0 && pos < ctRow.sizeOfTcArray()) { + tableCells.remove(pos); + } + } + + /** + * adds a new TableCell at the end of this tableRow + */ + public XWPFTableCell addNewTableCell() { + CTTc cell = ctRow.addNewTc(); + XWPFTableCell tableCell = new XWPFTableCell(cell, this, table.getBody()); + tableCells.add(tableCell); + return tableCell; + } + + /** * This element specifies the height of the current table row within the * current table. This height shall be used to determine the resulting * height of the table row, which may be absolute or relative (depending on * its attribute values). If omitted, then the table row shall automatically - * resize its height to the height required by its contents (the equivalent - * of an hRule value of auto). - * - * @param height - */ - public void setHeight(int height) { - CTTrPr properties = getTrPr(); - CTHeight h = properties.sizeOfTrHeightArray() == 0 ? properties.addNewTrHeight() : properties.getTrHeightArray(0); - h.setVal(new BigInteger("" + height)); - } - - /** + * resize its height to the height required by its contents (the equivalent + * of an hRule value of auto). + * + * @return height + */ + public int getHeight() { + CTTrPr properties = getTrPr(); + return properties.sizeOfTrHeightArray() == 0 ? 0 : properties.getTrHeightArray(0).getVal().intValue(); + } + + /** * This element specifies the height of the current table row within the * current table. This height shall be used to determine the resulting * height of the table row, which may be absolute or relative (depending on * its attribute values). If omitted, then the table row shall automatically - * resize its height to the height required by its contents (the equivalent - * of an hRule value of auto). - * - * @return height - */ - public int getHeight() { - CTTrPr properties = getTrPr(); - return properties.sizeOfTrHeightArray() == 0 ? 0 : properties.getTrHeightArray(0).getVal().intValue(); - } - - private CTTrPr getTrPr() { - return (ctRow.isSetTrPr()) ? ctRow.getTrPr() : ctRow.addNewTrPr(); - } - - public XWPFTable getTable(){ - return table; - } - - /** - * create and return a list of all XWPFTableCell - * who belongs to this row - * @return a list of {@link XWPFTableCell} - */ - public List getTableICells(){ - - List cells = new ArrayList(); - //Can't use ctRow.getTcList because that only gets table cells - //Can't use ctRow.getSdtList because that only gets sdts that are at cell level + * resize its height to the height required by its contents (the equivalent + * of an hRule value of auto). + * + * @param height + */ + public void setHeight(int height) { + CTTrPr properties = getTrPr(); + CTHeight h = properties.sizeOfTrHeightArray() == 0 ? properties.addNewTrHeight() : properties.getTrHeightArray(0); + h.setVal(new BigInteger("" + height)); + } + + private CTTrPr getTrPr() { + return (ctRow.isSetTrPr()) ? ctRow.getTrPr() : ctRow.addNewTrPr(); + } + + public XWPFTable getTable() { + return table; + } + + /** + * create and return a list of all XWPFTableCell + * who belongs to this row + * + * @return a list of {@link XWPFTableCell} + */ + public List getTableICells() { + + List cells = new ArrayList(); + //Can't use ctRow.getTcList because that only gets table cells + //Can't use ctRow.getSdtList because that only gets sdts that are at cell level XmlCursor cursor = ctRow.newCursor(); - cursor.selectPath("./*"); - while (cursor.toNextSelection()) { - XmlObject o = cursor.getObject(); - if (o instanceof CTTc){ - cells.add(new XWPFTableCell((CTTc)o, this, table.getBody())); - } else if (o instanceof CTSdtCell) { - cells.add(new XWPFSDTCell((CTSdtCell)o, this, table.getBody())); - } - } - return cells; + cursor.selectPath("./*"); + while (cursor.toNextSelection()) { + XmlObject o = cursor.getObject(); + if (o instanceof CTTc) { + cells.add(new XWPFTableCell((CTTc) o, this, table.getBody())); + } else if (o instanceof CTSdtCell) { + cells.add(new XWPFSDTCell((CTSdtCell) o, this, table.getBody())); + } + } + return cells; } - /** - * create and return a list of all XWPFTableCell - * who belongs to this row - * @return a list of {@link XWPFTableCell} - */ - @SuppressWarnings("deprecation") - public List getTableCells(){ - if(tableCells == null){ - List cells = new ArrayList(); - for (CTTc tableCell : ctRow.getTcArray()) { - cells.add(new XWPFTableCell(tableCell, this, table.getBody())); - } - //TODO: it is possible to have an SDT that contains a cell in within a row - //need to modify this code so that it pulls out SDT wrappers around cells, too. - - this.tableCells = cells; - } - return tableCells; - } - - /** + /** + * create and return a list of all XWPFTableCell + * who belongs to this row + * + * @return a list of {@link XWPFTableCell} + */ + @SuppressWarnings("deprecation") + public List getTableCells() { + if (tableCells == null) { + List cells = new ArrayList(); + for (CTTc tableCell : ctRow.getTcArray()) { + cells.add(new XWPFTableCell(tableCell, this, table.getBody())); + } + //TODO: it is possible to have an SDT that contains a cell in within a row + //need to modify this code so that it pulls out SDT wrappers around cells, too. + + this.tableCells = cells; + } + return tableCells; + } + + /** * returns the XWPFTableCell which belongs to the CTTC cell - * if there is no XWPFTableCell which belongs to the parameter CTTc cell null will be returned - */ - public XWPFTableCell getTableCell(CTTc cell) { - for(int i=0; i 0) { - CTOnOff onoff = trpr.getCantSplitArray(0); - isCant = onoff.getVal().equals(STOnOff.ON); - } - return isCant; - } - - /** - * This attribute controls whether to repeat a table's header row at the top - * of a table split across pages. - * @param repeat - if TRUE, repeat header row at the top of each page of table; - * if FALSE, don't repeat header row. - */ - public void setRepeatHeader(boolean repeat) { - CTTrPr trpr = getTrPr(); - CTOnOff onoff = trpr.addNewTblHeader(); - onoff.setVal(repeat ? STOnOff.ON : STOnOff.OFF); - } - - /** - * Return true if a table's header row should be repeated at the top of a - * table split across pages. - * @return true if table's header row should be repeated at the top of each - * page of table, false otherwise. - */ - public boolean isRepeatHeader() { - boolean repeat = false; - CTTrPr trpr = getTrPr(); - if (trpr.sizeOfTblHeaderArray() > 0) { - CTOnOff rpt = trpr.getTblHeaderArray(0); - repeat = rpt.getVal().equals(STOnOff.ON); - } - return repeat; - } -} + * if there is no XWPFTableCell which belongs to the parameter CTTc cell null will be returned + */ + public XWPFTableCell getTableCell(CTTc cell) { + for (int i = 0; i < tableCells.size(); i++) { + if (tableCells.get(i).getCTTc() == cell) + return tableCells.get(i); + } + return null; + } + + /** + * Return true if the "can't split row" value is true. The logic for this + * attribute is a little unusual: a TRUE value means DON'T allow rows to + * split, FALSE means allow rows to split. + * + * @return true if rows can't be split, false otherwise. + */ + public boolean isCantSplitRow() { + boolean isCant = false; + CTTrPr trpr = getTrPr(); + if (trpr.sizeOfCantSplitArray() > 0) { + CTOnOff onoff = trpr.getCantSplitArray(0); + isCant = onoff.getVal().equals(STOnOff.ON); + } + return isCant; + } + + /** + * This attribute controls whether to allow table rows to split across pages. + * The logic for this attribute is a little unusual: a true value means + * DON'T allow rows to split, false means allow rows to split. + * + * @param split - if true, don't allow rows to be split. If false, allow + * rows to be split. + */ + public void setCantSplitRow(boolean split) { + CTTrPr trpr = getTrPr(); + CTOnOff onoff = trpr.addNewCantSplit(); + onoff.setVal(split ? STOnOff.ON : STOnOff.OFF); + } + + /** + * Return true if a table's header row should be repeated at the top of a + * table split across pages. + * + * @return true if table's header row should be repeated at the top of each + * page of table, false otherwise. + */ + public boolean isRepeatHeader() { + boolean repeat = false; + CTTrPr trpr = getTrPr(); + if (trpr.sizeOfTblHeaderArray() > 0) { + CTOnOff rpt = trpr.getTblHeaderArray(0); + repeat = rpt.getVal().equals(STOnOff.ON); + } + return repeat; + } + + /** + * This attribute controls whether to repeat a table's header row at the top + * of a table split across pages. + * + * @param repeat - if TRUE, repeat header row at the top of each page of table; + * if FALSE, don't repeat header row. + */ + public void setRepeatHeader(boolean repeat) { + CTTrPr trpr = getTrPr(); + CTOnOff onoff = trpr.addNewTblHeader(); + onoff.setVal(repeat ? STOnOff.ON : STOnOff.OFF); + } +} diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/AllXWPFTests.java b/src/ooxml/testcases/org/apache/poi/xwpf/AllXWPFTests.java index f7ed6df7c..7243f114d 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/AllXWPFTests.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/AllXWPFTests.java @@ -33,24 +33,24 @@ import org.junit.runners.Suite; /** * Collects all tests for org.apache.poi.xwpf and sub-packages. - */ -@RunWith(Suite.class) -@Suite.SuiteClasses({ - TestXWPFBugs.class, - org.apache.poi.xwpf.usermodel.TestXWPFBugs.class, - TestXWPFDocument.class, - TestXWPFWordExtractor.class, - TestXWPFHeaderFooterPolicy.class, - TestXWPFHeader.class, - TestXWPFHeadings.class, - TestXWPFParagraph.class, - TestXWPFRun.class, - TestXWPFTable.class, - TestXWPFStyles.class, - TestXWPFPictureData.class, - TestXWPFNumbering.class, - TestAllExtendedProperties.class, - TestPackageCorePropertiesGetKeywords.class -}) -public final class AllXWPFTests { + */ +@RunWith(Suite.class) +@Suite.SuiteClasses({ + TestXWPFBugs.class, + org.apache.poi.xwpf.usermodel.TestXWPFBugs.class, + TestXWPFDocument.class, + TestXWPFWordExtractor.class, + TestXWPFHeaderFooterPolicy.class, + TestXWPFHeader.class, + TestXWPFHeadings.class, + TestXWPFParagraph.class, + TestXWPFRun.class, + TestXWPFTable.class, + TestXWPFStyles.class, + TestXWPFPictureData.class, + TestXWPFNumbering.class, + TestAllExtendedProperties.class, + TestPackageCorePropertiesGetKeywords.class +}) +public final class AllXWPFTests { } \ No newline at end of file diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/TestAllExtendedProperties.java b/src/ooxml/testcases/org/apache/poi/xwpf/TestAllExtendedProperties.java index c04f73c93..ff955dadb 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/TestAllExtendedProperties.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/TestAllExtendedProperties.java @@ -17,13 +17,12 @@ package org.apache.poi.xwpf; -import java.io.IOException; - -import junit.framework.TestCase; - -import org.apache.poi.POIXMLProperties.CoreProperties; -import org.apache.poi.openxml4j.opc.PackageProperties; -import org.apache.poi.xwpf.usermodel.XWPFDocument; +import java.io.IOException; + +import junit.framework.TestCase; +import org.apache.poi.POIXMLProperties.CoreProperties; +import org.apache.poi.openxml4j.opc.PackageProperties; +import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.openxmlformats.schemas.officeDocument.x2006.extendedProperties.CTDigSigBlob; import org.openxmlformats.schemas.officeDocument.x2006.extendedProperties.CTProperties; import org.openxmlformats.schemas.officeDocument.x2006.extendedProperties.CTVectorLpstr; @@ -31,77 +30,76 @@ import org.openxmlformats.schemas.officeDocument.x2006.extendedProperties.CTVect /** * Tests if the {@link CoreProperties#getKeywords()} method. This test has been - * submitted because even though the - * {@link PackageProperties#getKeywordsProperty()} had been present before, the - * {@link CoreProperties#getKeywords()} had been missing. - * - * The author of this has added {@link CoreProperties#getKeywords()} and - * {@link CoreProperties#setKeywords(String)} and this test is supposed to test - * them. - * - * @author Antoni Mylka - * - */ -public final class TestAllExtendedProperties extends TestCase { - public void testGetAllExtendedProperties() throws IOException { - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestPoiXMLDocumentCorePropertiesGetKeywords.docx"); - CTProperties ctProps = doc.getProperties().getExtendedProperties().getUnderlyingProperties(); - assertEquals("Microsoft Office Word",ctProps.getApplication()); - assertEquals("14.0000",ctProps.getAppVersion()); - assertEquals(57,ctProps.getCharacters()); - assertEquals(66,ctProps.getCharactersWithSpaces()); - assertEquals("",ctProps.getCompany()); - assertNull(ctProps.getDigSig()); - assertEquals(0,ctProps.getDocSecurity()); - assertNotNull(ctProps.getDomNode()); - - CTVectorVariant vec = ctProps.getHeadingPairs(); - assertEquals(2,vec.getVector().sizeOfVariantArray()); - assertEquals("Title",vec.getVector().getVariantArray(0).getLpstr()); - assertEquals(1,vec.getVector().getVariantArray(1).getI4()); - - assertFalse(ctProps.isSetHiddenSlides()); - assertEquals(0,ctProps.getHiddenSlides()); - assertFalse(ctProps.isSetHLinks()); - assertNull(ctProps.getHLinks()); - assertNull(ctProps.getHyperlinkBase()); - assertTrue(ctProps.isSetHyperlinksChanged()); - assertFalse(ctProps.getHyperlinksChanged()); - assertEquals(1,ctProps.getLines()); - assertTrue(ctProps.isSetLinksUpToDate()); - assertFalse(ctProps.getLinksUpToDate()); - assertNull(ctProps.getManager()); - assertFalse(ctProps.isSetMMClips()); - assertEquals(0,ctProps.getMMClips()); - assertFalse(ctProps.isSetNotes()); - assertEquals(0,ctProps.getNotes()); - assertEquals(1,ctProps.getPages()); - assertEquals(1,ctProps.getParagraphs()); - assertNull(ctProps.getPresentationFormat()); - assertTrue(ctProps.isSetScaleCrop()); - assertFalse(ctProps.getScaleCrop()); - assertTrue(ctProps.isSetSharedDoc()); - assertFalse(ctProps.getSharedDoc()); - assertFalse(ctProps.isSetSlides()); - assertEquals(0,ctProps.getSlides()); - assertEquals("Normal.dotm",ctProps.getTemplate()); - - CTVectorLpstr vec2 = ctProps.getTitlesOfParts(); - assertEquals(1,vec2.getVector().sizeOfLpstrArray()); - assertEquals("Example Word 2010 Document",vec2.getVector().getLpstrArray(0)); - - assertEquals(3,ctProps.getTotalTime()); - assertEquals(10,ctProps.getWords()); - - // Check the digital signature part - // Won't be there in this file, but we - // need to do this check so that the - // appropriate parts end up in the - // smaller ooxml schemas file - CTDigSigBlob blob = ctProps.getDigSig(); - assertNull(blob); - - blob = CTDigSigBlob.Factory.newInstance(); - blob.setBlob(new byte [] {2,6,7,2,3,4,5,1,2,3}); - } -} + * submitted because even though the + * {@link PackageProperties#getKeywordsProperty()} had been present before, the + * {@link CoreProperties#getKeywords()} had been missing. + *

    + * The author of this has added {@link CoreProperties#getKeywords()} and + * {@link CoreProperties#setKeywords(String)} and this test is supposed to test + * them. + * + * @author Antoni Mylka + */ +public final class TestAllExtendedProperties extends TestCase { + public void testGetAllExtendedProperties() throws IOException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestPoiXMLDocumentCorePropertiesGetKeywords.docx"); + CTProperties ctProps = doc.getProperties().getExtendedProperties().getUnderlyingProperties(); + assertEquals("Microsoft Office Word", ctProps.getApplication()); + assertEquals("14.0000", ctProps.getAppVersion()); + assertEquals(57, ctProps.getCharacters()); + assertEquals(66, ctProps.getCharactersWithSpaces()); + assertEquals("", ctProps.getCompany()); + assertNull(ctProps.getDigSig()); + assertEquals(0, ctProps.getDocSecurity()); + assertNotNull(ctProps.getDomNode()); + + CTVectorVariant vec = ctProps.getHeadingPairs(); + assertEquals(2, vec.getVector().sizeOfVariantArray()); + assertEquals("Title", vec.getVector().getVariantArray(0).getLpstr()); + assertEquals(1, vec.getVector().getVariantArray(1).getI4()); + + assertFalse(ctProps.isSetHiddenSlides()); + assertEquals(0, ctProps.getHiddenSlides()); + assertFalse(ctProps.isSetHLinks()); + assertNull(ctProps.getHLinks()); + assertNull(ctProps.getHyperlinkBase()); + assertTrue(ctProps.isSetHyperlinksChanged()); + assertFalse(ctProps.getHyperlinksChanged()); + assertEquals(1, ctProps.getLines()); + assertTrue(ctProps.isSetLinksUpToDate()); + assertFalse(ctProps.getLinksUpToDate()); + assertNull(ctProps.getManager()); + assertFalse(ctProps.isSetMMClips()); + assertEquals(0, ctProps.getMMClips()); + assertFalse(ctProps.isSetNotes()); + assertEquals(0, ctProps.getNotes()); + assertEquals(1, ctProps.getPages()); + assertEquals(1, ctProps.getParagraphs()); + assertNull(ctProps.getPresentationFormat()); + assertTrue(ctProps.isSetScaleCrop()); + assertFalse(ctProps.getScaleCrop()); + assertTrue(ctProps.isSetSharedDoc()); + assertFalse(ctProps.getSharedDoc()); + assertFalse(ctProps.isSetSlides()); + assertEquals(0, ctProps.getSlides()); + assertEquals("Normal.dotm", ctProps.getTemplate()); + + CTVectorLpstr vec2 = ctProps.getTitlesOfParts(); + assertEquals(1, vec2.getVector().sizeOfLpstrArray()); + assertEquals("Example Word 2010 Document", vec2.getVector().getLpstrArray(0)); + + assertEquals(3, ctProps.getTotalTime()); + assertEquals(10, ctProps.getWords()); + + // Check the digital signature part + // Won't be there in this file, but we + // need to do this check so that the + // appropriate parts end up in the + // smaller ooxml schemas file + CTDigSigBlob blob = ctProps.getDigSig(); + assertNull(blob); + + blob = CTDigSigBlob.Factory.newInstance(); + blob.setBlob(new byte[]{2, 6, 7, 2, 3, 4, 5, 1, 2, 3}); + } +} diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/TestPackageCorePropertiesGetKeywords.java b/src/ooxml/testcases/org/apache/poi/xwpf/TestPackageCorePropertiesGetKeywords.java index 4b37623df..85a21f12b 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/TestPackageCorePropertiesGetKeywords.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/TestPackageCorePropertiesGetKeywords.java @@ -17,36 +17,34 @@ package org.apache.poi.xwpf; -import java.io.IOException; - -import junit.framework.TestCase; - -import org.apache.poi.POIXMLProperties.CoreProperties; -import org.apache.poi.openxml4j.opc.PackageProperties; -import org.apache.poi.xwpf.usermodel.XWPFDocument; +import java.io.IOException; + +import junit.framework.TestCase; +import org.apache.poi.POIXMLProperties.CoreProperties; +import org.apache.poi.openxml4j.opc.PackageProperties; +import org.apache.poi.xwpf.usermodel.XWPFDocument; /** * Tests if the {@link CoreProperties#getKeywords()} method. This test has been - * submitted because even though the - * {@link PackageProperties#getKeywordsProperty()} had been present before, the - * {@link CoreProperties#getKeywords()} had been missing. - * - * The author of this has added {@link CoreProperties#getKeywords()} and - * {@link CoreProperties#setKeywords(String)} and this test is supposed to test - * them. - * - * @author Antoni Mylka - * - */ -public final class TestPackageCorePropertiesGetKeywords extends TestCase { - public void testGetSetKeywords() throws IOException { - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestPoiXMLDocumentCorePropertiesGetKeywords.docx"); - String keywords = doc.getProperties().getCoreProperties().getKeywords(); - assertEquals("extractor, test, rdf", keywords); - - doc.getProperties().getCoreProperties().setKeywords("test, keywords"); - doc = XWPFTestDataSamples.writeOutAndReadBack(doc); - keywords = doc.getProperties().getCoreProperties().getKeywords(); - assertEquals("test, keywords",keywords); - } -} + * submitted because even though the + * {@link PackageProperties#getKeywordsProperty()} had been present before, the + * {@link CoreProperties#getKeywords()} had been missing. + *

    + * The author of this has added {@link CoreProperties#getKeywords()} and + * {@link CoreProperties#setKeywords(String)} and this test is supposed to test + * them. + * + * @author Antoni Mylka + */ +public final class TestPackageCorePropertiesGetKeywords extends TestCase { + public void testGetSetKeywords() throws IOException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestPoiXMLDocumentCorePropertiesGetKeywords.docx"); + String keywords = doc.getProperties().getCoreProperties().getKeywords(); + assertEquals("extractor, test, rdf", keywords); + + doc.getProperties().getCoreProperties().setKeywords("test, keywords"); + doc = XWPFTestDataSamples.writeOutAndReadBack(doc); + keywords = doc.getProperties().getCoreProperties().getKeywords(); + assertEquals("test, keywords", keywords); + } +} diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/TestXWPFBugs.java b/src/ooxml/testcases/org/apache/poi/xwpf/TestXWPFBugs.java index 055e47076..6f7e4b689 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/TestXWPFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/TestXWPFBugs.java @@ -40,7 +40,7 @@ import org.junit.Test; public class TestXWPFBugs { /** * A word document that's encrypted with non-standard - * Encryption options, and no cspname section. See bug 53475 + * Encryption options, and no cspname section. See bug 53475 */ @Test public void bug53475NoCSPName() throws Exception { @@ -54,7 +54,7 @@ public class TestXWPFBugs { assertEquals(HashAlgorithm.sha1, info.getHeader().getHashAlgorithmEx()); // Check it can be decoded - Decryptor d = Decryptor.getInstance(info); + Decryptor d = Decryptor.getInstance(info); assertTrue("Unable to process: document is encrypted", d.verifyPassword("solrcell")); // Check we can read the word document in that @@ -66,7 +66,7 @@ public class TestXWPFBugs { assertNotNull(text); assertEquals("This is password protected Word document.", text.trim()); ex.close(); - + filesystem.close(); } @@ -90,7 +90,7 @@ public class TestXWPFBugs { assertEquals(HashAlgorithm.sha1, info.getHeader().getHashAlgorithmEx()); // Check it can be decoded - Decryptor d = Decryptor.getInstance(info); + Decryptor d = Decryptor.getInstance(info); assertTrue("Unable to process: document is encrypted", d.verifyPassword("pass")); // Check we can read the word document in that @@ -103,7 +103,7 @@ public class TestXWPFBugs { // I know ... a stupid typo, maybe next time ... assertEquals("The is a password protected document.", text.trim()); ex.close(); - + filesystem.close(); } } diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/extractor/TestExternalEntities.java b/src/ooxml/testcases/org/apache/poi/xwpf/extractor/TestExternalEntities.java index 05d6b2f84..929d43041 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/extractor/TestExternalEntities.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/extractor/TestExternalEntities.java @@ -20,7 +20,6 @@ package org.apache.poi.xwpf.extractor; import java.io.IOException; import junit.framework.TestCase; - import org.apache.poi.xwpf.XWPFTestDataSamples; import org.apache.poi.xwpf.usermodel.XWPFDocument; @@ -28,19 +27,20 @@ public class TestExternalEntities extends TestCase { /** * Get text out of the simple file - * @throws IOException + * + * @throws IOException */ public void testFile() throws IOException { XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("ExternalEntityInText.docx"); XWPFWordExtractor extractor = new XWPFWordExtractor(doc); String text = extractor.getText(); - + assertTrue(text.length() > 0); // Check contents, they should not contain the text from POI web site after colon! assertEquals("Here should not be the POI web site: \"\"", text.trim()); - + extractor.close(); } diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/extractor/TestXWPFWordExtractor.java b/src/ooxml/testcases/org/apache/poi/xwpf/extractor/TestXWPFWordExtractor.java index 00408829d..48330bbee 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/extractor/TestXWPFWordExtractor.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/extractor/TestXWPFWordExtractor.java @@ -22,7 +22,6 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import junit.framework.TestCase; - import org.apache.poi.xwpf.XWPFTestDataSamples; import org.apache.poi.xwpf.usermodel.XWPFDocument; @@ -33,7 +32,8 @@ public class TestXWPFWordExtractor extends TestCase { /** * Get text out of the simple file - * @throws IOException + * + * @throws IOException */ public void testGetSimpleText() throws IOException { XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx"); @@ -59,13 +59,14 @@ public class TestXWPFWordExtractor extends TestCase { } } assertEquals(3, ps); - + extractor.close(); } /** * Tests getting the text out of a complex file - * @throws IOException + * + * @throws IOException */ public void testGetComplexText() throws IOException { XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("IllustrativeCases.docx"); @@ -97,7 +98,7 @@ public class TestXWPFWordExtractor extends TestCase { } } assertEquals(134, ps); - + extractor.close(); } @@ -108,23 +109,23 @@ public class TestXWPFWordExtractor extends TestCase { // Now check contents extractor.setFetchHyperlinks(false); assertEquals( - "This is a test document.\nThis bit is in bold and italic\n" + - "Back to normal\n" + - "This contains BOLD, ITALIC and BOTH, as well as RED and YELLOW text.\n" + - "We have a hyperlink here, and another.\n", + "This is a test document.\nThis bit is in bold and italic\n" + + "Back to normal\n" + + "This contains BOLD, ITALIC and BOTH, as well as RED and YELLOW text.\n" + + "We have a hyperlink here, and another.\n", extractor.getText() ); // One hyperlink is a real one, one is just to the top of page extractor.setFetchHyperlinks(true); assertEquals( - "This is a test document.\nThis bit is in bold and italic\n" + - "Back to normal\n" + - "This contains BOLD, ITALIC and BOTH, as well as RED and YELLOW text.\n" + - "We have a hyperlink here, and another.\n", + "This is a test document.\nThis bit is in bold and italic\n" + + "Back to normal\n" + + "This contains BOLD, ITALIC and BOTH, as well as RED and YELLOW text.\n" + + "We have a hyperlink here, and another.\n", extractor.getText() ); - + extractor.close(); } @@ -173,7 +174,7 @@ public class TestXWPFWordExtractor extends TestCase { "Footer Left\tFooter Middle\tFooter Right\n", extractor.getText() ); - + extractor.close(); } @@ -183,7 +184,7 @@ public class TestXWPFWordExtractor extends TestCase { String text = extractor.getText(); assertTrue(text.contains("snoska")); assertTrue(text.contains("Eto ochen prostoy[footnoteRef:1] text so snoskoy")); - + extractor.close(); } @@ -193,7 +194,7 @@ public class TestXWPFWordExtractor extends TestCase { XWPFWordExtractor extractor = new XWPFWordExtractor(doc); assertTrue(extractor.getText().contains("snoska")); - + extractor.close(); } @@ -204,7 +205,7 @@ public class TestXWPFWordExtractor extends TestCase { String text = extractor.getText(); assertTrue("Unable to find expected word in text\n" + text, text.contains("testdoc")); assertTrue("Unable to find expected word in text\n" + text, text.contains("test phrase")); - + extractor.close(); } @@ -214,7 +215,7 @@ public class TestXWPFWordExtractor extends TestCase { String text = extractor.getText(); assertTrue(text.contains("XXX")); assertTrue(text.contains("tilaka [endnoteRef:2]or 'tika'")); - + extractor.close(); } @@ -224,7 +225,7 @@ public class TestXWPFWordExtractor extends TestCase { assertTrue(extractor.getText().contains("pendant worn")); assertTrue(extractor.getText().contains("extremely well")); - + extractor.close(); } @@ -235,14 +236,15 @@ public class TestXWPFWordExtractor extends TestCase { assertTrue(extractor.getText().contains("Section 1")); assertTrue(extractor.getText().contains("Section 2")); assertTrue(extractor.getText().contains("Section 3")); - + extractor.close(); } /** * Test that we can open and process .docm - * (macro enabled) docx files (bug #45690) - * @throws IOException + * (macro enabled) docx files (bug #45690) + * + * @throws IOException */ public void testDOCMFiles() throws IOException { XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("45690.docm"); @@ -251,35 +253,37 @@ public class TestXWPFWordExtractor extends TestCase { assertTrue(extractor.getText().contains("2004")); assertTrue(extractor.getText().contains("2008")); assertTrue(extractor.getText().contains("(120 ")); - + extractor.close(); } - + /** * Test that we handle things like tabs and - * carriage returns properly in the text that - * we're extracting (bug #49189) - * @throws IOException + * carriage returns properly in the text that + * we're extracting (bug #49189) + * + * @throws IOException */ public void testDocTabs() throws IOException { - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("WithTabs.docx"); - XWPFWordExtractor extractor = new XWPFWordExtractor(doc); - - // Check bits - assertTrue(extractor.getText().contains("a")); - assertTrue(extractor.getText().contains("\t")); - assertTrue(extractor.getText().contains("b")); - - // Now check the first paragraph in total - assertTrue(extractor.getText().contains("a\tb\n")); - - extractor.close(); + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("WithTabs.docx"); + XWPFWordExtractor extractor = new XWPFWordExtractor(doc); + + // Check bits + assertTrue(extractor.getText().contains("a")); + assertTrue(extractor.getText().contains("\t")); + assertTrue(extractor.getText().contains("b")); + + // Now check the first paragraph in total + assertTrue(extractor.getText().contains("a\tb\n")); + + extractor.close(); } - + /** * The output should not contain field codes, e.g. those specified in the * w:instrText tag (spec sec. 17.16.23) - * @throws IOException + * + * @throws IOException */ public void testNoFieldCodes() throws IOException { XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("FieldCodes.docx"); @@ -288,14 +292,15 @@ public class TestXWPFWordExtractor extends TestCase { assertTrue(text.length() > 0); assertFalse(text.contains("AUTHOR")); assertFalse(text.contains("CREATEDATE")); - + extractor.close(); } - + /** * The output should contain the values of simple fields, those specified * with the fldSimple element (spec sec. 17.16.19) - * @throws IOException + * + * @throws IOException */ public void testFldSimpleContent() throws IOException { XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("FldSimple.docx"); @@ -303,7 +308,7 @@ public class TestXWPFWordExtractor extends TestCase { String text = extractor.getText(); assertTrue(text.length() > 0); assertTrue(text.contains("FldSimple.docx")); - + extractor.close(); } @@ -316,12 +321,13 @@ public class TestXWPFWordExtractor extends TestCase { XWPFWordExtractor extractor = new XWPFWordExtractor(doc); String text = extractor.getText(); assertTrue(text.length() > 0); - + extractor.close(); } - + /** * Test for basic extraction of SDT content + * * @throws IOException */ public void testSimpleControlContent() throws IOException { @@ -345,19 +351,19 @@ public class TestXWPFWordExtractor extends TestCase { XWPFWordExtractor ex = new XWPFWordExtractor(doc); String s = ex.getText().toLowerCase(); int hits = 0; - - for (String targ : targs){ + + for (String targ : targs) { boolean hit = false; - if (s.indexOf(targ) > -1){ + if (s.indexOf(targ) > -1) { hit = true; hits++; } - assertEquals("controlled content loading-"+targ, true, hit); + assertEquals("controlled content loading-" + targ, true, hit); } assertEquals("controlled content loading hit count", targs.length, hits); ex.close(); - - + + doc = XWPFTestDataSamples.openSampleDocument("Bug54771a.docx"); targs = new String[]{ "bb", @@ -366,48 +372,50 @@ public class TestXWPFWordExtractor extends TestCase { }; ex = new XWPFWordExtractor(doc); s = ex.getText().toLowerCase(); - + //At one point in development there were three copies of the text. //This ensures that there is only one copy. - for (String targ : targs){ + for (String targ : targs) { Matcher m = Pattern.compile(targ).matcher(s); int hit = 0; while (m.find()) { hit++; } - assertEquals("controlled content loading-"+targ, 1, hit); + assertEquals("controlled content loading-" + targ, 1, hit); } //"test\n" appears twice: once as the "title" and once in the text. //This also happens when you save this document as text from MSWord. Matcher m = Pattern.compile("test\n").matcher(s); int hit = 0; - while (m.find()){ + while (m.find()) { hit++; } assertEquals("test", 2, hit); ex.close(); } - /** No Header or Footer in document */ + /** + * No Header or Footer in document + */ public void testBug55733() throws Exception { XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("55733.docx"); - XWPFWordExtractor extractor = new XWPFWordExtractor(doc); + XWPFWordExtractor extractor = new XWPFWordExtractor(doc); // Check it gives text without error extractor.getText(); extractor.close(); } - - public void testCheckboxes() throws IOException { + + public void testCheckboxes() throws IOException { XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("checkboxes.docx"); System.out.println(doc); XWPFWordExtractor extractor = new XWPFWordExtractor(doc); - + assertEquals("This is a small test for checkboxes \nunchecked: |_| \n" + - "Or checked: |X|\n\n\n\n\n" + - "Test a checkbox within a textbox: |_| -> |X|\n\n\n" + - "In Table:\n|_|\t|X|\n\n\n" + - "In Sequence:\n|X||_||X|\n", extractor.getText()); + "Or checked: |X|\n\n\n\n\n" + + "Test a checkbox within a textbox: |_| -> |X|\n\n\n" + + "In Table:\n|_|\t|X|\n\n\n" + + "In Sequence:\n|X||_||X|\n", extractor.getText()); extractor.close(); } } diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/model/TestXWPFDecorators.java b/src/ooxml/testcases/org/apache/poi/xwpf/model/TestXWPFDecorators.java index 3df111bfa..aa1167dd0 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/model/TestXWPFDecorators.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/model/TestXWPFDecorators.java @@ -17,86 +17,85 @@ package org.apache.poi.xwpf.model; -import java.io.IOException; - -import junit.framework.TestCase; - -import org.apache.poi.xwpf.XWPFTestDataSamples; -import org.apache.poi.xwpf.usermodel.XWPFDocument; -import org.apache.poi.xwpf.usermodel.XWPFHyperlinkRun; +import java.io.IOException; + +import junit.framework.TestCase; +import org.apache.poi.xwpf.XWPFTestDataSamples; +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.apache.poi.xwpf.usermodel.XWPFHyperlinkRun; import org.apache.poi.xwpf.usermodel.XWPFParagraph; /** - * Tests for the various XWPF decorators - */ -public class TestXWPFDecorators extends TestCase { - private XWPFDocument simple; - private XWPFDocument hyperlink; - private XWPFDocument comments; - - protected void setUp() throws IOException { - simple = XWPFTestDataSamples.openSampleDocument("SampleDoc.docx"); - hyperlink = XWPFTestDataSamples.openSampleDocument("TestDocument.docx"); - comments = XWPFTestDataSamples.openSampleDocument("WordWithAttachments.docx"); - } - - @SuppressWarnings("deprecation") - public void testHyperlink() { - XWPFParagraph ps; - XWPFParagraph ph; - assertEquals(7, simple.getParagraphs().size()); - assertEquals(5, hyperlink.getParagraphs().size()); - - // Simple text - ps = simple.getParagraphs().get(0); - assertEquals("I am a test document", ps.getParagraphText()); - assertEquals(1, ps.getRuns().size()); - - ph = hyperlink.getParagraphs().get(4); - assertEquals("We have a hyperlink here, and another.", ph.getParagraphText()); - assertEquals(3, ph.getRuns().size()); - - - // The proper way to do hyperlinks(!) - assertFalse(ps.getRuns().get(0) instanceof XWPFHyperlinkRun); - assertFalse(ph.getRuns().get(0) instanceof XWPFHyperlinkRun); - assertTrue(ph.getRuns().get(1) instanceof XWPFHyperlinkRun); - assertFalse(ph.getRuns().get(2) instanceof XWPFHyperlinkRun); - - XWPFHyperlinkRun link = (XWPFHyperlinkRun)ph.getRuns().get(1); - assertEquals("http://poi.apache.org/", link.getHyperlink(hyperlink).getURL()); - - - // Test the old style decorator - // You probably don't want to still be using it... - assertEquals( - "I am a test document", - (new XWPFHyperlinkDecorator(ps, null, false)).getText() - ); - assertEquals( - "I am a test document", - (new XWPFHyperlinkDecorator(ps, null, true)).getText() - ); - - assertEquals( - "We have a hyperlink here, and another.hyperlink", - (new XWPFHyperlinkDecorator(ph, null, false)).getText() - ); - assertEquals( - "We have a hyperlink here, and another.hyperlink ", - (new XWPFHyperlinkDecorator(ph, null, true)).getText() - ); - } - - public void testComments() { - int numComments = 0; - for(XWPFParagraph p : comments.getParagraphs()) { - XWPFCommentsDecorator d = new XWPFCommentsDecorator(p, null); - if(d.getCommentText().length() > 0) { - numComments++; - assertEquals("\tComment by", d.getCommentText().substring(0, 11)); - } - } - assertEquals(3, numComments); - } -} + * Tests for the various XWPF decorators + */ +public class TestXWPFDecorators extends TestCase { + private XWPFDocument simple; + private XWPFDocument hyperlink; + private XWPFDocument comments; + + protected void setUp() throws IOException { + simple = XWPFTestDataSamples.openSampleDocument("SampleDoc.docx"); + hyperlink = XWPFTestDataSamples.openSampleDocument("TestDocument.docx"); + comments = XWPFTestDataSamples.openSampleDocument("WordWithAttachments.docx"); + } + + @SuppressWarnings("deprecation") + public void testHyperlink() { + XWPFParagraph ps; + XWPFParagraph ph; + assertEquals(7, simple.getParagraphs().size()); + assertEquals(5, hyperlink.getParagraphs().size()); + + // Simple text + ps = simple.getParagraphs().get(0); + assertEquals("I am a test document", ps.getParagraphText()); + assertEquals(1, ps.getRuns().size()); + + ph = hyperlink.getParagraphs().get(4); + assertEquals("We have a hyperlink here, and another.", ph.getParagraphText()); + assertEquals(3, ph.getRuns().size()); + + + // The proper way to do hyperlinks(!) + assertFalse(ps.getRuns().get(0) instanceof XWPFHyperlinkRun); + assertFalse(ph.getRuns().get(0) instanceof XWPFHyperlinkRun); + assertTrue(ph.getRuns().get(1) instanceof XWPFHyperlinkRun); + assertFalse(ph.getRuns().get(2) instanceof XWPFHyperlinkRun); + + XWPFHyperlinkRun link = (XWPFHyperlinkRun) ph.getRuns().get(1); + assertEquals("http://poi.apache.org/", link.getHyperlink(hyperlink).getURL()); + + + // Test the old style decorator + // You probably don't want to still be using it... + assertEquals( + "I am a test document", + (new XWPFHyperlinkDecorator(ps, null, false)).getText() + ); + assertEquals( + "I am a test document", + (new XWPFHyperlinkDecorator(ps, null, true)).getText() + ); + + assertEquals( + "We have a hyperlink here, and another.hyperlink", + (new XWPFHyperlinkDecorator(ph, null, false)).getText() + ); + assertEquals( + "We have a hyperlink here, and another.hyperlink ", + (new XWPFHyperlinkDecorator(ph, null, true)).getText() + ); + } + + public void testComments() { + int numComments = 0; + for (XWPFParagraph p : comments.getParagraphs()) { + XWPFCommentsDecorator d = new XWPFCommentsDecorator(p, null); + if (d.getCommentText().length() > 0) { + numComments++; + assertEquals("\tComment by", d.getCommentText().substring(0, 11)); + } + } + assertEquals(3, numComments); + } +} diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/model/TestXWPFHeaderFooterPolicy.java b/src/ooxml/testcases/org/apache/poi/xwpf/model/TestXWPFHeaderFooterPolicy.java index 7d70866e8..d461265d4 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/model/TestXWPFHeaderFooterPolicy.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/model/TestXWPFHeaderFooterPolicy.java @@ -20,7 +20,6 @@ package org.apache.poi.xwpf.model; import java.io.IOException; import junit.framework.TestCase; - import org.apache.poi.xwpf.XWPFTestDataSamples; import org.apache.poi.xwpf.usermodel.XWPFDocument; @@ -28,130 +27,130 @@ import org.apache.poi.xwpf.usermodel.XWPFDocument; * Tests for XWPF Header Footer Stuff */ public class TestXWPFHeaderFooterPolicy extends TestCase { - private XWPFDocument noHeader; - private XWPFDocument header; - private XWPFDocument headerFooter; - private XWPFDocument footer; - private XWPFDocument oddEven; - private XWPFDocument diffFirst; + private XWPFDocument noHeader; + private XWPFDocument header; + private XWPFDocument headerFooter; + private XWPFDocument footer; + private XWPFDocument oddEven; + private XWPFDocument diffFirst; - protected void setUp() throws IOException { + protected void setUp() throws IOException { - noHeader = XWPFTestDataSamples.openSampleDocument("NoHeadFoot.docx"); - header = XWPFTestDataSamples.openSampleDocument("ThreeColHead.docx"); - headerFooter = XWPFTestDataSamples.openSampleDocument("SimpleHeadThreeColFoot.docx"); - footer = XWPFTestDataSamples.openSampleDocument("FancyFoot.docx"); - oddEven = XWPFTestDataSamples.openSampleDocument("PageSpecificHeadFoot.docx"); - diffFirst = XWPFTestDataSamples.openSampleDocument("DiffFirstPageHeadFoot.docx"); - } + noHeader = XWPFTestDataSamples.openSampleDocument("NoHeadFoot.docx"); + header = XWPFTestDataSamples.openSampleDocument("ThreeColHead.docx"); + headerFooter = XWPFTestDataSamples.openSampleDocument("SimpleHeadThreeColFoot.docx"); + footer = XWPFTestDataSamples.openSampleDocument("FancyFoot.docx"); + oddEven = XWPFTestDataSamples.openSampleDocument("PageSpecificHeadFoot.docx"); + diffFirst = XWPFTestDataSamples.openSampleDocument("DiffFirstPageHeadFoot.docx"); + } - public void testPolicy() { - XWPFHeaderFooterPolicy policy; + public void testPolicy() { + XWPFHeaderFooterPolicy policy; - policy = noHeader.getHeaderFooterPolicy(); - assertNull(policy.getDefaultHeader()); - assertNull(policy.getDefaultFooter()); + policy = noHeader.getHeaderFooterPolicy(); + assertNull(policy.getDefaultHeader()); + assertNull(policy.getDefaultFooter()); - assertNull(policy.getHeader(1)); - assertNull(policy.getHeader(2)); - assertNull(policy.getHeader(3)); - assertNull(policy.getFooter(1)); - assertNull(policy.getFooter(2)); - assertNull(policy.getFooter(3)); + assertNull(policy.getHeader(1)); + assertNull(policy.getHeader(2)); + assertNull(policy.getHeader(3)); + assertNull(policy.getFooter(1)); + assertNull(policy.getFooter(2)); + assertNull(policy.getFooter(3)); - policy = header.getHeaderFooterPolicy(); - assertNotNull(policy.getDefaultHeader()); - assertNull(policy.getDefaultFooter()); + policy = header.getHeaderFooterPolicy(); + assertNotNull(policy.getDefaultHeader()); + assertNull(policy.getDefaultFooter()); - assertEquals(policy.getDefaultHeader(), policy.getHeader(1)); - assertEquals(policy.getDefaultHeader(), policy.getHeader(2)); - assertEquals(policy.getDefaultHeader(), policy.getHeader(3)); - assertNull(policy.getFooter(1)); - assertNull(policy.getFooter(2)); - assertNull(policy.getFooter(3)); + assertEquals(policy.getDefaultHeader(), policy.getHeader(1)); + assertEquals(policy.getDefaultHeader(), policy.getHeader(2)); + assertEquals(policy.getDefaultHeader(), policy.getHeader(3)); + assertNull(policy.getFooter(1)); + assertNull(policy.getFooter(2)); + assertNull(policy.getFooter(3)); - policy = footer.getHeaderFooterPolicy(); - assertNull(policy.getDefaultHeader()); - assertNotNull(policy.getDefaultFooter()); + policy = footer.getHeaderFooterPolicy(); + assertNull(policy.getDefaultHeader()); + assertNotNull(policy.getDefaultFooter()); - assertNull(policy.getHeader(1)); - assertNull(policy.getHeader(2)); - assertNull(policy.getHeader(3)); - assertEquals(policy.getDefaultFooter(), policy.getFooter(1)); - assertEquals(policy.getDefaultFooter(), policy.getFooter(2)); - assertEquals(policy.getDefaultFooter(), policy.getFooter(3)); + assertNull(policy.getHeader(1)); + assertNull(policy.getHeader(2)); + assertNull(policy.getHeader(3)); + assertEquals(policy.getDefaultFooter(), policy.getFooter(1)); + assertEquals(policy.getDefaultFooter(), policy.getFooter(2)); + assertEquals(policy.getDefaultFooter(), policy.getFooter(3)); - policy = headerFooter.getHeaderFooterPolicy(); - assertNotNull(policy.getDefaultHeader()); - assertNotNull(policy.getDefaultFooter()); + policy = headerFooter.getHeaderFooterPolicy(); + assertNotNull(policy.getDefaultHeader()); + assertNotNull(policy.getDefaultFooter()); - assertEquals(policy.getDefaultHeader(), policy.getHeader(1)); - assertEquals(policy.getDefaultHeader(), policy.getHeader(2)); - assertEquals(policy.getDefaultHeader(), policy.getHeader(3)); - assertEquals(policy.getDefaultFooter(), policy.getFooter(1)); - assertEquals(policy.getDefaultFooter(), policy.getFooter(2)); - assertEquals(policy.getDefaultFooter(), policy.getFooter(3)); + assertEquals(policy.getDefaultHeader(), policy.getHeader(1)); + assertEquals(policy.getDefaultHeader(), policy.getHeader(2)); + assertEquals(policy.getDefaultHeader(), policy.getHeader(3)); + assertEquals(policy.getDefaultFooter(), policy.getFooter(1)); + assertEquals(policy.getDefaultFooter(), policy.getFooter(2)); + assertEquals(policy.getDefaultFooter(), policy.getFooter(3)); - policy = oddEven.getHeaderFooterPolicy(); - assertNotNull(policy.getDefaultHeader()); - assertNotNull(policy.getDefaultFooter()); - assertNotNull(policy.getEvenPageHeader()); - assertNotNull(policy.getEvenPageFooter()); + policy = oddEven.getHeaderFooterPolicy(); + assertNotNull(policy.getDefaultHeader()); + assertNotNull(policy.getDefaultFooter()); + assertNotNull(policy.getEvenPageHeader()); + assertNotNull(policy.getEvenPageFooter()); - assertEquals(policy.getDefaultHeader(), policy.getHeader(1)); - assertEquals(policy.getEvenPageHeader(), policy.getHeader(2)); - assertEquals(policy.getDefaultHeader(), policy.getHeader(3)); - assertEquals(policy.getDefaultFooter(), policy.getFooter(1)); - assertEquals(policy.getEvenPageFooter(), policy.getFooter(2)); - assertEquals(policy.getDefaultFooter(), policy.getFooter(3)); + assertEquals(policy.getDefaultHeader(), policy.getHeader(1)); + assertEquals(policy.getEvenPageHeader(), policy.getHeader(2)); + assertEquals(policy.getDefaultHeader(), policy.getHeader(3)); + assertEquals(policy.getDefaultFooter(), policy.getFooter(1)); + assertEquals(policy.getEvenPageFooter(), policy.getFooter(2)); + assertEquals(policy.getDefaultFooter(), policy.getFooter(3)); - policy = diffFirst.getHeaderFooterPolicy(); - assertNotNull(policy.getDefaultHeader()); - assertNotNull(policy.getDefaultFooter()); - assertNotNull(policy.getFirstPageHeader()); - assertNotNull(policy.getFirstPageFooter()); - assertNull(policy.getEvenPageHeader()); - assertNull(policy.getEvenPageFooter()); + policy = diffFirst.getHeaderFooterPolicy(); + assertNotNull(policy.getDefaultHeader()); + assertNotNull(policy.getDefaultFooter()); + assertNotNull(policy.getFirstPageHeader()); + assertNotNull(policy.getFirstPageFooter()); + assertNull(policy.getEvenPageHeader()); + assertNull(policy.getEvenPageFooter()); - assertEquals(policy.getFirstPageHeader(), policy.getHeader(1)); - assertEquals(policy.getDefaultHeader(), policy.getHeader(2)); - assertEquals(policy.getDefaultHeader(), policy.getHeader(3)); - assertEquals(policy.getFirstPageFooter(), policy.getFooter(1)); - assertEquals(policy.getDefaultFooter(), policy.getFooter(2)); - assertEquals(policy.getDefaultFooter(), policy.getFooter(3)); - } + assertEquals(policy.getFirstPageHeader(), policy.getHeader(1)); + assertEquals(policy.getDefaultHeader(), policy.getHeader(2)); + assertEquals(policy.getDefaultHeader(), policy.getHeader(3)); + assertEquals(policy.getFirstPageFooter(), policy.getFooter(1)); + assertEquals(policy.getDefaultFooter(), policy.getFooter(2)); + assertEquals(policy.getDefaultFooter(), policy.getFooter(3)); + } - public void testContents() { - XWPFHeaderFooterPolicy policy; + public void testContents() { + XWPFHeaderFooterPolicy policy; - // Test a few simple bits off a simple header - policy = diffFirst.getHeaderFooterPolicy(); + // Test a few simple bits off a simple header + policy = diffFirst.getHeaderFooterPolicy(); - assertEquals( - "I am the header on the first page, and I" + '\u2019' + "m nice and simple\n", - policy.getFirstPageHeader().getText() - ); - assertEquals( - "First header column!\tMid header\tRight header!\n", - policy.getDefaultHeader().getText() - ); + assertEquals( + "I am the header on the first page, and I" + '\u2019' + "m nice and simple\n", + policy.getFirstPageHeader().getText() + ); + assertEquals( + "First header column!\tMid header\tRight header!\n", + policy.getDefaultHeader().getText() + ); - // And a few bits off a more complex header - policy = oddEven.getHeaderFooterPolicy(); + // And a few bits off a more complex header + policy = oddEven.getHeaderFooterPolicy(); - assertEquals( - "[ODD Page Header text]\n\n", - policy.getDefaultHeader().getText() - ); - assertEquals( - "[This is an Even Page, with a Header]\n\n", - policy.getEvenPageHeader().getText() - ); - } + assertEquals( + "[ODD Page Header text]\n\n", + policy.getDefaultHeader().getText() + ); + assertEquals( + "[This is an Even Page, with a Header]\n\n", + policy.getEvenPageHeader().getText() + ); + } } diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestChangeTracking.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestChangeTracking.java index d3e4758e1..0a309a830 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestChangeTracking.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestChangeTracking.java @@ -44,7 +44,7 @@ public class TestChangeTracking { assertFalse(document.isTrackRevisions()); document.setTrackRevisions(true); - + assertTrue(document.isTrackRevisions()); } diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java index 8fd7f97e0..78df19c00 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java @@ -19,11 +19,9 @@ package org.apache.poi.xwpf.usermodel; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import java.io.FileInputStream; import java.io.IOException; import org.apache.poi.openxml4j.exceptions.OpenXML4JException; -import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.xwpf.XWPFTestDataSamples; import org.apache.poi.xwpf.usermodel.XWPFRun.FontCharRange; import org.junit.Test; @@ -32,14 +30,14 @@ public class TestXWPFBugs { @Test public void bug55802() throws Exception { String blabla = - "Bir, iki, \u00fc\u00e7, d\u00f6rt, be\u015f,\n"+ - "\nalt\u0131, yedi, sekiz, dokuz, on.\n"+ - "\nK\u0131rm\u0131z\u0131 don,\n"+ - "\ngel bizim bah\u00e7eye kon,\n"+ - "\nsar\u0131 limon"; + "Bir, iki, \u00fc\u00e7, d\u00f6rt, be\u015f,\n" + + "\nalt\u0131, yedi, sekiz, dokuz, on.\n" + + "\nK\u0131rm\u0131z\u0131 don,\n" + + "\ngel bizim bah\u00e7eye kon,\n" + + "\nsar\u0131 limon"; XWPFDocument doc = new XWPFDocument(); XWPFRun run = doc.createParagraph().createRun(); - + for (String str : blabla.split("\n")) { run.setText(str); run.addBreak(); @@ -55,40 +53,40 @@ public class TestXWPFBugs { assertEquals(run.getFontFamily(FontCharRange.hAnsi), "Arial"); } - + @Test public void bug57312_NullPointException() throws IOException { XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("57312.docx"); assertNotNull(doc); - - for( IBodyElement bodyElement : doc.getBodyElements()){ + + for (IBodyElement bodyElement : doc.getBodyElements()) { BodyElementType elementType = bodyElement.getElementType(); - - if(elementType == BodyElementType.PARAGRAPH) { + + if (elementType == BodyElementType.PARAGRAPH) { XWPFParagraph paragraph = (XWPFParagraph) bodyElement; - - for (IRunElement iRunElem : paragraph.getIRuns()){ - - if (iRunElem instanceof XWPFRun){ + + for (IRunElement iRunElem : paragraph.getIRuns()) { + + if (iRunElem instanceof XWPFRun) { XWPFRun runElement = (XWPFRun) iRunElem; - + UnderlinePatterns underline = runElement.getUnderline(); assertNotNull(underline); - + //System.out.println("Found: " + underline + ": " + runElement.getText(0)); } } - } + } } } - + @Test public void test56392() throws IOException, OpenXML4JException { XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("56392.docx"); - assertNotNull(doc); + assertNotNull(doc); } - + /** * Removing a run needs to remove it from both Runs and IRuns */ @@ -97,7 +95,7 @@ public class TestXWPFBugs { XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx"); assertNotNull(doc); assertEquals(3, doc.getParagraphs().size()); - + for (XWPFParagraph paragraph : doc.getParagraphs()) { paragraph.removeRun(0); assertNotNull(paragraph.getText()); diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java index 9d8243959..f46fd716b 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java @@ -23,7 +23,6 @@ import java.util.Arrays; import java.util.List; import junit.framework.TestCase; - import org.apache.poi.POIXMLDocumentPart; import org.apache.poi.POIXMLProperties; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; @@ -44,8 +43,8 @@ public final class TestXWPFDocument extends TestCase { OPCPackage pack = doc.getPackage(); boolean found = false; - for(PackagePart part : pack.getParts()) { - if(part.getContentType().equals(XWPFRelation.DOCUMENT.getContentType())) { + for (PackagePart part : pack.getParts()) { + if (part.getContentType().equals(XWPFRelation.DOCUMENT.getContentType())) { found = true; } if (false) { @@ -106,7 +105,7 @@ public final class TestXWPFDocument extends TestCase { assertEquals("Apache POI", props.getExtendedProperties().getUnderlyingProperties().getApplication()); } - public void testAddParagraph() throws IOException{ + public void testAddParagraph() throws IOException { XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx"); assertEquals(3, doc.getParagraphs().size()); @@ -129,15 +128,15 @@ public final class TestXWPFDocument extends TestCase { public void testAddPicture() throws IOException, InvalidFormatException { XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx"); byte[] jpeg = XWPFTestDataSamples.getImage("nature1.jpg"); - String relationId = doc.addPictureData(jpeg,XWPFDocument.PICTURE_TYPE_JPEG); + String relationId = doc.addPictureData(jpeg, XWPFDocument.PICTURE_TYPE_JPEG); byte[] newJpeg = ((XWPFPictureData) doc.getRelationById(relationId)).getData(); - assertEquals(newJpeg.length,jpeg.length); - for (int i = 0 ; i < jpeg.length ; i++) - { - assertEquals(newJpeg[i],jpeg[i]); + assertEquals(newJpeg.length, jpeg.length); + for (int i = 0; i < jpeg.length; i++) { + assertEquals(newJpeg[i], jpeg[i]); } } + public void testAllPictureFormats() throws IOException, InvalidFormatException { XWPFDocument doc = new XWPFDocument(); @@ -235,7 +234,7 @@ public final class TestXWPFDocument extends TestCase { os.close(); XWPFHeader xwpfHeader = doc.getHeaderArray(0); PackageRelationship relationship = xwpfHeader.getPackagePart().addRelationship(partName, TargetMode.INTERNAL, jpgRelation.getRelation()); - XWPFPictureData newPicData = new XWPFPictureData(newImagePart,relationship); + XWPFPictureData newPicData = new XWPFPictureData(newImagePart, relationship); /* new part is now ready to rumble */ assertFalse(xwpfHeader.getAllPictures().contains(newPicData)); @@ -267,7 +266,7 @@ public final class TestXWPFDocument extends TestCase { List allPackagePictures = doc.getAllPackagePictures(); assertNotNull(allPictures); - assertEquals(3,allPictures.size()); + assertEquals(3, allPictures.size()); for (XWPFPictureData xwpfPictureData : allPictures) { assertTrue(allPackagePictures.contains(xwpfPictureData)); } @@ -287,7 +286,7 @@ public final class TestXWPFDocument extends TestCase { List allPackagePictures = doc.getAllPackagePictures(); assertNotNull(allPackagePictures); - assertEquals(5,allPackagePictures.size()); + assertEquals(5, allPackagePictures.size()); try { allPackagePictures.add(allPackagePictures.get(0)); @@ -301,22 +300,22 @@ public final class TestXWPFDocument extends TestCase { public void testPictureHandlingSimpleFile() throws IOException, InvalidFormatException { XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_1.docx"); - assertEquals(1,doc.getAllPackagePictures().size()); + assertEquals(1, doc.getAllPackagePictures().size()); byte[] newPic = XWPFTestDataSamples.getImage("abstract4.jpg"); String id1 = doc.addPictureData(newPic, Document.PICTURE_TYPE_JPEG); - assertEquals(2,doc.getAllPackagePictures().size()); + assertEquals(2, doc.getAllPackagePictures().size()); /* copy data, to avoid instance-equality */ byte[] newPicCopy = Arrays.copyOf(newPic, newPic.length); String id2 = doc.addPictureData(newPicCopy, Document.PICTURE_TYPE_JPEG); - assertEquals(id1,id2); + assertEquals(id1, id2); doc.getPackage().revert(); } public void testPictureHandlingHeaderDocumentImages() throws IOException { XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_2.docx"); - assertEquals(1,doc.getAllPictures().size()); - assertEquals(1,doc.getAllPackagePictures().size()); - assertEquals(1,doc.getHeaderArray(0).getAllPictures().size()); + assertEquals(1, doc.getAllPictures().size()); + assertEquals(1, doc.getAllPackagePictures().size()); + assertEquals(1, doc.getHeaderArray(0).getAllPictures().size()); doc.getPackage().revert(); } @@ -324,18 +323,19 @@ public final class TestXWPFDocument extends TestCase { XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("issue_51265_3.docx"); XWPFHeader xwpfHeader = doc.getHeaderArray(0); - assertEquals(3,doc.getAllPictures().size()); - assertEquals(3,xwpfHeader.getAllPictures().size()); - assertEquals(5,doc.getAllPackagePictures().size()); + assertEquals(3, doc.getAllPictures().size()); + assertEquals(3, xwpfHeader.getAllPictures().size()); + assertEquals(5, doc.getAllPackagePictures().size()); byte[] nature1 = XWPFTestDataSamples.getImage("nature1.jpg"); String id = doc.addPictureData(nature1, Document.PICTURE_TYPE_JPEG); POIXMLDocumentPart part1 = xwpfHeader.getRelationById("rId1"); XWPFPictureData part2 = (XWPFPictureData) doc.getRelationById(id); - assertSame(part1,part2); + assertSame(part1, part2); doc.getPackage().revert(); } + public void testZeroLengthLibreOfficeDocumentWithWaterMarkHeader() throws IOException { XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("zero-length.docx"); POIXMLProperties properties = doc.getProperties(); @@ -352,7 +352,7 @@ public final class TestXWPFDocument extends TestCase { assertEquals(0, extendedProperties.getUnderlyingProperties().getCharacters()); } - public void testSettings(){ + public void testSettings() { XWPFSettings settings = new XWPFSettings(); settings.setZoomPercent(50); assertEquals(50, settings.getZoomPercent()); diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFFootnotes.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFFootnotes.java index fb97bf594..0915de0fe 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFFootnotes.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFFootnotes.java @@ -19,52 +19,50 @@ package org.apache.poi.xwpf.usermodel; import java.io.IOException; import java.math.BigInteger; -import java.util.List; - -import junit.framework.TestCase; - -import org.apache.poi.xwpf.XWPFTestDataSamples; - -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFtnEdn; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.STFtnEdn; - -public class TestXWPFFootnotes extends TestCase { - - public void testAddFootnotesToDocument() throws IOException{ - XWPFDocument docOut = new XWPFDocument(); - - BigInteger noteId = BigInteger.valueOf(1); - - XWPFFootnotes footnotes = docOut.createFootnotes(); - CTFtnEdn ctNote = CTFtnEdn.Factory.newInstance(); - ctNote.setId(noteId); - ctNote.setType(STFtnEdn.NORMAL); - footnotes.addFootnote(ctNote); - - XWPFDocument docIn = XWPFTestDataSamples.writeOutAndReadBack(docOut); - - XWPFFootnote note = docIn.getFootnoteByID(noteId.intValue()); - assertEquals(note.getCTFtnEdn().getType(), STFtnEdn.NORMAL); - } - - /** - * Bug 55066 - avoid double loading the footnotes - */ - public void testLoadFootnotesOnce() throws IOException{ - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Bug54849.docx"); - List footnotes = doc.getFootnotes(); - int hits = 0; - for (XWPFFootnote fn : footnotes){ - for (IBodyElement e : fn.getBodyElements()){ - if (e instanceof XWPFParagraph){ - String txt = ((XWPFParagraph)e).getText(); - if (txt.indexOf("Footnote_sdt") > -1){ - hits++; - } - } - } - } - assertEquals("Load footnotes once", 1, hits); - } -} - +import java.util.List; + +import junit.framework.TestCase; +import org.apache.poi.xwpf.XWPFTestDataSamples; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFtnEdn; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STFtnEdn; + +public class TestXWPFFootnotes extends TestCase { + + public void testAddFootnotesToDocument() throws IOException { + XWPFDocument docOut = new XWPFDocument(); + + BigInteger noteId = BigInteger.valueOf(1); + + XWPFFootnotes footnotes = docOut.createFootnotes(); + CTFtnEdn ctNote = CTFtnEdn.Factory.newInstance(); + ctNote.setId(noteId); + ctNote.setType(STFtnEdn.NORMAL); + footnotes.addFootnote(ctNote); + + XWPFDocument docIn = XWPFTestDataSamples.writeOutAndReadBack(docOut); + + XWPFFootnote note = docIn.getFootnoteByID(noteId.intValue()); + assertEquals(note.getCTFtnEdn().getType(), STFtnEdn.NORMAL); + } + + /** + * Bug 55066 - avoid double loading the footnotes + */ + public void testLoadFootnotesOnce() throws IOException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Bug54849.docx"); + List footnotes = doc.getFootnotes(); + int hits = 0; + for (XWPFFootnote fn : footnotes) { + for (IBodyElement e : fn.getBodyElements()) { + if (e instanceof XWPFParagraph) { + String txt = ((XWPFParagraph) e).getText(); + if (txt.indexOf("Footnote_sdt") > -1) { + hits++; + } + } + } + } + assertEquals("Load footnotes once", 1, hits); + } +} + diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFHeader.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFHeader.java index a607d0e3f..172c0eb16 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFHeader.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFHeader.java @@ -17,13 +17,12 @@ package org.apache.poi.xwpf.usermodel; -import java.io.IOException; - -import junit.framework.TestCase; - -import org.apache.poi.xwpf.XWPFTestDataSamples; -import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP; +import java.io.IOException; + +import junit.framework.TestCase; +import org.apache.poi.xwpf.XWPFTestDataSamples; +import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTText; @@ -159,25 +158,25 @@ public final class TestXWPFHeader extends TestCase { assertEquals("First paragraph for the footer", paras[0].getText()); assertEquals("Second paragraph for the footer", paras[1].getText()); } - - public void testSetWatermark() throws IOException { - XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("SampleDoc.docx"); - - // No header is set (yet) - XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy(); - assertNull(policy.getDefaultHeader()); + + public void testSetWatermark() throws IOException { + XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("SampleDoc.docx"); + + // No header is set (yet) + XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy(); + assertNull(policy.getDefaultHeader()); assertNull(policy.getFirstPageHeader()); assertNull(policy.getDefaultFooter()); policy.createWatermark("DRAFT"); - assertNotNull(policy.getDefaultHeader()); - assertNotNull(policy.getFirstPageHeader()); - assertNotNull(policy.getEvenPageHeader()); - - // Re-open, and check - XWPFDocument reopened = XWPFTestDataSamples.writeOutAndReadBack(sampleDoc); - policy = reopened.getHeaderFooterPolicy(); + assertNotNull(policy.getDefaultHeader()); + assertNotNull(policy.getFirstPageHeader()); + assertNotNull(policy.getEvenPageHeader()); + + // Re-open, and check + XWPFDocument reopened = XWPFTestDataSamples.writeOutAndReadBack(sampleDoc); + policy = reopened.getHeaderFooterPolicy(); assertNotNull(policy.getDefaultHeader()); assertNotNull(policy.getFirstPageHeader()); diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFHeadings.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFHeadings.java index ca74d81e2..b08463482 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFHeadings.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFHeadings.java @@ -16,39 +16,38 @@ ==================================================================== */ package org.apache.poi.xwpf.usermodel; -import java.io.IOException; +import java.io.IOException; + +import junit.framework.TestCase; +import org.apache.poi.xwpf.XWPFTestDataSamples; +import org.apache.xmlbeans.XmlException; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtBlock; -import junit.framework.TestCase; - -import org.apache.poi.xwpf.XWPFTestDataSamples; -import org.apache.xmlbeans.XmlException; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtBlock; - -/** - * @author Paolo Mottadelli - */ -public final class TestXWPFHeadings extends TestCase{ - private static final String HEADING1 = "Heading1"; - - public void testSetParagraphStyle() throws IOException, XmlException { - //new clean instance of paragraph - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("heading123.docx"); - XWPFParagraph p = doc.createParagraph(); - XWPFRun run = p.createRun(); - run.setText("Heading 1"); - - CTSdtBlock block = doc.getDocument().getBody().addNewSdt(); - - assertNull(p.getStyle()); - p.setStyle(HEADING1); - assertEquals(HEADING1, p.getCTP().getPPr().getPStyle().getVal()); - - doc.createTOC(); - /* - // TODO - finish this test - if (false) { - CTStyles styles = doc.getStyle(); - CTStyle style = styles.addNewStyle(); +/** + * @author Paolo Mottadelli + */ +public final class TestXWPFHeadings extends TestCase { + private static final String HEADING1 = "Heading1"; + + public void testSetParagraphStyle() throws IOException, XmlException { + //new clean instance of paragraph + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("heading123.docx"); + XWPFParagraph p = doc.createParagraph(); + XWPFRun run = p.createRun(); + run.setText("Heading 1"); + + CTSdtBlock block = doc.getDocument().getBody().addNewSdt(); + + assertNull(p.getStyle()); + p.setStyle(HEADING1); + assertEquals(HEADING1, p.getCTP().getPPr().getPStyle().getVal()); + + doc.createTOC(); + /* + // TODO - finish this test + if (false) { + CTStyles styles = doc.getStyle(); + CTStyle style = styles.addNewStyle(); style.setType(STStyleType.PARAGRAPH); style.setStyleId("Heading1"); } diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFNumbering.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFNumbering.java index 5f5e9c07b..dfdecc9f3 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFNumbering.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFNumbering.java @@ -18,86 +18,85 @@ package org.apache.poi.xwpf.usermodel; import java.io.IOException; -import java.math.BigInteger; - -import junit.framework.TestCase; - -import org.apache.poi.xwpf.XWPFTestDataSamples; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTNum; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTNumLvl; - -public class TestXWPFNumbering extends TestCase { - - public void testCompareAbstractNum() throws IOException { - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Numbering.docx"); - XWPFNumbering numbering = doc.getNumbering(); - BigInteger numId = BigInteger.valueOf(1); - assertTrue(numbering.numExist(numId)); - XWPFNum num = numbering.getNum(numId); - BigInteger abstrNumId = num.getCTNum().getAbstractNumId().getVal(); - XWPFAbstractNum abstractNum = numbering.getAbstractNum(abstrNumId); - BigInteger compareAbstractNum = numbering.getIdOfAbstractNum(abstractNum); - assertEquals(abstrNumId, compareAbstractNum); - } - - public void testAddNumberingToDoc() throws IOException{ - BigInteger abstractNumId = BigInteger.valueOf(1); - BigInteger numId = BigInteger.valueOf(1); - - XWPFDocument docOut = new XWPFDocument(); - XWPFNumbering numbering = docOut.createNumbering(); - numId = numbering.addNum(abstractNumId); - - XWPFDocument docIn = XWPFTestDataSamples.writeOutAndReadBack(docOut); - - numbering = docIn.getNumbering(); - assertTrue(numbering.numExist(numId)); - XWPFNum num = numbering.getNum(numId); - - BigInteger compareAbstractNum = num.getCTNum().getAbstractNumId().getVal(); - assertEquals(abstractNumId, compareAbstractNum); - } - - public void testGetNumIlvl() throws IOException{ - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Numbering.docx"); - BigInteger numIlvl = BigInteger.valueOf(0); - assertEquals(numIlvl, doc.getParagraphs().get(0).getNumIlvl()); - numIlvl = BigInteger.valueOf(1); - assertEquals(numIlvl, doc.getParagraphs().get(5).getNumIlvl()); - } - - public void testGetNumFmt() throws IOException{ - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Numbering.docx"); - assertEquals("bullet", doc.getParagraphs().get(0).getNumFmt()); - assertEquals("bullet", doc.getParagraphs().get(1).getNumFmt()); - assertEquals("bullet", doc.getParagraphs().get(2).getNumFmt()); - assertEquals("bullet", doc.getParagraphs().get(3).getNumFmt()); - assertEquals("decimal", doc.getParagraphs().get(4).getNumFmt()); - assertEquals("lowerLetter", doc.getParagraphs().get(5).getNumFmt()); - assertEquals("lowerRoman", doc.getParagraphs().get(6).getNumFmt()); - } - - public void testLvlText() throws IOException { - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Numbering.docx"); - - assertEquals("%1.%2.%3.", doc.getParagraphs().get(12).getNumLevelText()); - - assertEquals("NEW-%1-FORMAT", doc.getParagraphs().get(14).getNumLevelText()); - - XWPFParagraph p = doc.getParagraphs().get(18); - assertEquals("%1.", p.getNumLevelText()); - //test that null doesn't throw NPE - assertNull(p.getNumFmt()); - } - - public void testOverrideList() throws IOException { - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("NumberingWOverrides.docx"); - XWPFParagraph p = doc.getParagraphs().get(4); - XWPFNumbering numbering = doc.getNumbering(); - CTNum ctNum = numbering.getNum(p.getNumID()).getCTNum(); - assertEquals(9, ctNum.sizeOfLvlOverrideArray()); - CTNumLvl ctNumLvl = ctNum.getLvlOverrideArray(0); - assertEquals("upperLetter", ctNumLvl.getLvl().getNumFmt().getVal().toString()); - } - -} +import java.math.BigInteger; + +import junit.framework.TestCase; +import org.apache.poi.xwpf.XWPFTestDataSamples; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTNum; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTNumLvl; + +public class TestXWPFNumbering extends TestCase { + + public void testCompareAbstractNum() throws IOException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Numbering.docx"); + XWPFNumbering numbering = doc.getNumbering(); + BigInteger numId = BigInteger.valueOf(1); + assertTrue(numbering.numExist(numId)); + XWPFNum num = numbering.getNum(numId); + BigInteger abstrNumId = num.getCTNum().getAbstractNumId().getVal(); + XWPFAbstractNum abstractNum = numbering.getAbstractNum(abstrNumId); + BigInteger compareAbstractNum = numbering.getIdOfAbstractNum(abstractNum); + assertEquals(abstrNumId, compareAbstractNum); + } + + public void testAddNumberingToDoc() throws IOException { + BigInteger abstractNumId = BigInteger.valueOf(1); + BigInteger numId = BigInteger.valueOf(1); + + XWPFDocument docOut = new XWPFDocument(); + XWPFNumbering numbering = docOut.createNumbering(); + numId = numbering.addNum(abstractNumId); + + XWPFDocument docIn = XWPFTestDataSamples.writeOutAndReadBack(docOut); + + numbering = docIn.getNumbering(); + assertTrue(numbering.numExist(numId)); + XWPFNum num = numbering.getNum(numId); + + BigInteger compareAbstractNum = num.getCTNum().getAbstractNumId().getVal(); + assertEquals(abstractNumId, compareAbstractNum); + } + + public void testGetNumIlvl() throws IOException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Numbering.docx"); + BigInteger numIlvl = BigInteger.valueOf(0); + assertEquals(numIlvl, doc.getParagraphs().get(0).getNumIlvl()); + numIlvl = BigInteger.valueOf(1); + assertEquals(numIlvl, doc.getParagraphs().get(5).getNumIlvl()); + } + + public void testGetNumFmt() throws IOException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Numbering.docx"); + assertEquals("bullet", doc.getParagraphs().get(0).getNumFmt()); + assertEquals("bullet", doc.getParagraphs().get(1).getNumFmt()); + assertEquals("bullet", doc.getParagraphs().get(2).getNumFmt()); + assertEquals("bullet", doc.getParagraphs().get(3).getNumFmt()); + assertEquals("decimal", doc.getParagraphs().get(4).getNumFmt()); + assertEquals("lowerLetter", doc.getParagraphs().get(5).getNumFmt()); + assertEquals("lowerRoman", doc.getParagraphs().get(6).getNumFmt()); + } + + public void testLvlText() throws IOException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Numbering.docx"); + + assertEquals("%1.%2.%3.", doc.getParagraphs().get(12).getNumLevelText()); + + assertEquals("NEW-%1-FORMAT", doc.getParagraphs().get(14).getNumLevelText()); + + XWPFParagraph p = doc.getParagraphs().get(18); + assertEquals("%1.", p.getNumLevelText()); + //test that null doesn't throw NPE + assertNull(p.getNumFmt()); + } + + public void testOverrideList() throws IOException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("NumberingWOverrides.docx"); + XWPFParagraph p = doc.getParagraphs().get(4); + XWPFNumbering numbering = doc.getNumbering(); + CTNum ctNum = numbering.getNum(p.getNumID()).getCTNum(); + assertEquals(9, ctNum.sizeOfLvlOverrideArray()); + CTNumLvl ctNumLvl = ctNum.getLvlOverrideArray(0); + assertEquals("upperLetter", ctNumLvl.getLvl().getNumFmt().getVal().toString()); + } + +} diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java index ec17da408..31be821e0 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java @@ -22,12 +22,26 @@ import java.math.BigInteger; import java.util.List; import junit.framework.TestCase; - import org.apache.poi.xwpf.XWPFTestDataSamples; import org.openxmlformats.schemas.drawingml.x2006.picture.CTPicture; import org.openxmlformats.schemas.drawingml.x2006.picture.PicDocument; import org.openxmlformats.schemas.drawingml.x2006.picture.impl.PicDocumentImpl; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.*; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBookmark; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBorder; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTInd; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTJc; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTOnOff; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPBdr; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPPr; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSpacing; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTextAlignment; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STBorder; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STJc; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STLineSpacingRule; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTextAlignment; /** * Tests for XWPF Paragraphs @@ -36,7 +50,8 @@ public final class TestXWPFParagraph extends TestCase { /** * Check that we get the right paragraph from the header - * @throws IOException + * + * @throws IOException */ public void disabled_testHeaderParagraph() throws IOException { XWPFDocument xml = XWPFTestDataSamples.openSampleDocument("ThreeColHead.docx"); @@ -44,7 +59,7 @@ public final class TestXWPFParagraph extends TestCase { XWPFHeader hdr = xml.getHeaderFooterPolicy().getDefaultHeader(); assertNotNull(hdr); - List ps = hdr.getParagraphs(); + List ps = hdr.getParagraphs(); assertEquals(1, ps.size()); XWPFParagraph p = ps.get(0); @@ -55,7 +70,8 @@ public final class TestXWPFParagraph extends TestCase { /** * Check that we get the right paragraphs from the document - * @throws IOException + * + * @throws IOException */ public void disabled_testDocumentParagraph() throws IOException { XWPFDocument xml = XWPFTestDataSamples.openSampleDocument("ThreeColHead.docx"); @@ -88,7 +104,7 @@ public final class TestXWPFParagraph extends TestCase { assertEquals(STBorder.NONE.intValue(), p.getBorderTop().getValue()); CTP ctp = p.getCTP(); - CTPPr ppr = ctp.getPPr()== null? ctp.addNewPPr() : ctp.getPPr(); + CTPPr ppr = ctp.getPPr() == null ? ctp.addNewPPr() : ctp.getPPr(); //bordi CTPBdr bdr = ppr.addNewPBdr(); @@ -109,7 +125,7 @@ public final class TestXWPFParagraph extends TestCase { assertEquals(STJc.LEFT.intValue(), p.getAlignment().getValue()); CTP ctp = p.getCTP(); - CTPPr ppr = ctp.getPPr()== null? ctp.addNewPPr() : ctp.getPPr(); + CTPPr ppr = ctp.getPPr() == null ? ctp.addNewPPr() : ctp.getPPr(); CTJc align = ppr.addNewJc(); align.setVal(STJc.CENTER); @@ -125,7 +141,7 @@ public final class TestXWPFParagraph extends TestCase { XWPFParagraph p = doc.createParagraph(); CTP ctp = p.getCTP(); - CTPPr ppr = ctp.getPPr()== null? ctp.addNewPPr() : ctp.getPPr(); + CTPPr ppr = ctp.getPPr() == null ? ctp.addNewPPr() : ctp.getPPr(); assertEquals(-1, p.getSpacingAfter()); @@ -142,7 +158,7 @@ public final class TestXWPFParagraph extends TestCase { XWPFParagraph p = doc.createParagraph(); CTP ctp = p.getCTP(); - CTPPr ppr = ctp.getPPr()== null? ctp.addNewPPr() : ctp.getPPr(); + CTPPr ppr = ctp.getPPr() == null ? ctp.addNewPPr() : ctp.getPPr(); assertEquals(STLineSpacingRule.INT_AUTO, p.getSpacingLineRule().getValue()); @@ -161,7 +177,7 @@ public final class TestXWPFParagraph extends TestCase { assertEquals(-1, p.getIndentationLeft()); CTP ctp = p.getCTP(); - CTPPr ppr = ctp.getPPr()== null? ctp.addNewPPr() : ctp.getPPr(); + CTPPr ppr = ctp.getPPr() == null ? ctp.addNewPPr() : ctp.getPPr(); assertEquals(-1, p.getIndentationLeft()); @@ -179,7 +195,7 @@ public final class TestXWPFParagraph extends TestCase { XWPFParagraph p = doc.createParagraph(); CTP ctp = p.getCTP(); - CTPPr ppr = ctp.getPPr()== null? ctp.addNewPPr() : ctp.getPPr(); + CTPPr ppr = ctp.getPPr() == null ? ctp.addNewPPr() : ctp.getPPr(); CTTextAlignment txtAlign = ppr.addNewTextAlignment(); txtAlign.setVal(STTextAlignment.CENTER); @@ -194,7 +210,7 @@ public final class TestXWPFParagraph extends TestCase { XWPFParagraph p = doc.createParagraph(); CTP ctp = p.getCTP(); - CTPPr ppr = ctp.getPPr()== null? ctp.addNewPPr() : ctp.getPPr(); + CTPPr ppr = ctp.getPPr() == null ? ctp.addNewPPr() : ctp.getPPr(); CTOnOff wordWrap = ppr.addNewWordWrap(); wordWrap.setVal(STOnOff.FALSE); @@ -210,7 +226,7 @@ public final class TestXWPFParagraph extends TestCase { XWPFParagraph p = doc.createParagraph(); CTP ctp = p.getCTP(); - CTPPr ppr = ctp.getPPr()== null? ctp.addNewPPr() : ctp.getPPr(); + CTPPr ppr = ctp.getPPr() == null ? ctp.addNewPPr() : ctp.getPPr(); CTOnOff pageBreak = ppr.addNewPageBreakBefore(); pageBreak.setVal(STOnOff.FALSE); @@ -229,8 +245,8 @@ public final class TestXWPFParagraph extends TestCase { assertEquals(0, paragraph.getCTP().sizeOfBookmarkEndArray()); CTBookmark ctBookmark = paragraph.getCTP().getBookmarkStartArray(0); assertEquals("poi", ctBookmark.getName()); - for(CTBookmark bookmark : paragraph.getCTP().getBookmarkStartArray()) { - assertEquals("poi", bookmark.getName()); + for (CTBookmark bookmark : paragraph.getCTP().getBookmarkStartArray()) { + assertEquals("poi", bookmark.getName()); } } @@ -241,108 +257,108 @@ public final class TestXWPFParagraph extends TestCase { p.setNumID(new BigInteger("10")); assertEquals("10", p.getNumID().toString()); } - + public void testAddingRuns() throws Exception { - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx"); - - XWPFParagraph p = doc.getParagraphs().get(0); - assertEquals(2, p.getRuns().size()); - - XWPFRun r = p.createRun(); - assertEquals(3, p.getRuns().size()); - assertEquals(2, p.getRuns().indexOf(r)); - - XWPFRun r2 = p.insertNewRun(1); - assertEquals(4, p.getRuns().size()); - assertEquals(1, p.getRuns().indexOf(r2)); - assertEquals(3, p.getRuns().indexOf(r)); + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx"); + + XWPFParagraph p = doc.getParagraphs().get(0); + assertEquals(2, p.getRuns().size()); + + XWPFRun r = p.createRun(); + assertEquals(3, p.getRuns().size()); + assertEquals(2, p.getRuns().indexOf(r)); + + XWPFRun r2 = p.insertNewRun(1); + assertEquals(4, p.getRuns().size()); + assertEquals(1, p.getRuns().indexOf(r2)); + assertEquals(3, p.getRuns().indexOf(r)); } - + public void testPictures() throws Exception { - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("VariousPictures.docx"); - assertEquals(7, doc.getParagraphs().size()); - - XWPFParagraph p; - XWPFRun r; + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("VariousPictures.docx"); + assertEquals(7, doc.getParagraphs().size()); - // Text paragraphs - assertEquals("Sheet with various pictures", doc.getParagraphs().get(0).getText()); - assertEquals("(jpeg, png, wmf, emf and pict) ", doc.getParagraphs().get(1).getText()); - - // Spacer ones - assertEquals("", doc.getParagraphs().get(2).getText()); - assertEquals("", doc.getParagraphs().get(3).getText()); - assertEquals("", doc.getParagraphs().get(4).getText()); - - // Image one - p = doc.getParagraphs().get(5); - assertEquals(6, p.getRuns().size()); + XWPFParagraph p; + XWPFRun r; - r = p.getRuns().get(0); - assertEquals("", r.toString()); - assertEquals(1, r.getEmbeddedPictures().size()); - assertNotNull(r.getEmbeddedPictures().get(0).getPictureData()); - assertEquals("image1.wmf", r.getEmbeddedPictures().get(0).getPictureData().getFileName()); + // Text paragraphs + assertEquals("Sheet with various pictures", doc.getParagraphs().get(0).getText()); + assertEquals("(jpeg, png, wmf, emf and pict) ", doc.getParagraphs().get(1).getText()); - r = p.getRuns().get(1); - assertEquals("", r.toString()); - assertEquals(1, r.getEmbeddedPictures().size()); - assertNotNull(r.getEmbeddedPictures().get(0).getPictureData()); - assertEquals("image2.png", r.getEmbeddedPictures().get(0).getPictureData().getFileName()); + // Spacer ones + assertEquals("", doc.getParagraphs().get(2).getText()); + assertEquals("", doc.getParagraphs().get(3).getText()); + assertEquals("", doc.getParagraphs().get(4).getText()); - r = p.getRuns().get(2); - assertEquals("", r.toString()); - assertEquals(1, r.getEmbeddedPictures().size()); - assertNotNull(r.getEmbeddedPictures().get(0).getPictureData()); - assertEquals("image3.emf", r.getEmbeddedPictures().get(0).getPictureData().getFileName()); + // Image one + p = doc.getParagraphs().get(5); + assertEquals(6, p.getRuns().size()); - r = p.getRuns().get(3); - assertEquals("", r.toString()); - assertEquals(1, r.getEmbeddedPictures().size()); - assertNotNull(r.getEmbeddedPictures().get(0).getPictureData()); - assertEquals("image4.emf", r.getEmbeddedPictures().get(0).getPictureData().getFileName()); + r = p.getRuns().get(0); + assertEquals("", r.toString()); + assertEquals(1, r.getEmbeddedPictures().size()); + assertNotNull(r.getEmbeddedPictures().get(0).getPictureData()); + assertEquals("image1.wmf", r.getEmbeddedPictures().get(0).getPictureData().getFileName()); - r = p.getRuns().get(4); - assertEquals("", r.toString()); - assertEquals(1, r.getEmbeddedPictures().size()); - assertNotNull(r.getEmbeddedPictures().get(0).getPictureData()); - assertEquals("image5.jpeg", r.getEmbeddedPictures().get(0).getPictureData().getFileName()); - - r = p.getRuns().get(5); - assertEquals(" ", r.toString()); - assertEquals(0, r.getEmbeddedPictures().size()); - - // Final spacer - assertEquals("", doc.getParagraphs().get(6).getText()); - - - // Look in detail at one - r = p.getRuns().get(4); - XWPFPicture pict = r.getEmbeddedPictures().get(0); - CTPicture picture = pict.getCTPicture(); - assertEquals("rId8", picture.getBlipFill().getBlip().getEmbed()); - - // Ensure that the ooxml compiler finds everything we need - r.getCTR().getDrawingArray(0); - r.getCTR().getDrawingArray(0).getInlineArray(0); - r.getCTR().getDrawingArray(0).getInlineArray(0).getGraphic(); - r.getCTR().getDrawingArray(0).getInlineArray(0).getGraphic().getGraphicData(); - PicDocument pd = new PicDocumentImpl(null); - assertTrue(pd.isNil()); + r = p.getRuns().get(1); + assertEquals("", r.toString()); + assertEquals(1, r.getEmbeddedPictures().size()); + assertNotNull(r.getEmbeddedPictures().get(0).getPictureData()); + assertEquals("image2.png", r.getEmbeddedPictures().get(0).getPictureData().getFileName()); + + r = p.getRuns().get(2); + assertEquals("", r.toString()); + assertEquals(1, r.getEmbeddedPictures().size()); + assertNotNull(r.getEmbeddedPictures().get(0).getPictureData()); + assertEquals("image3.emf", r.getEmbeddedPictures().get(0).getPictureData().getFileName()); + + r = p.getRuns().get(3); + assertEquals("", r.toString()); + assertEquals(1, r.getEmbeddedPictures().size()); + assertNotNull(r.getEmbeddedPictures().get(0).getPictureData()); + assertEquals("image4.emf", r.getEmbeddedPictures().get(0).getPictureData().getFileName()); + + r = p.getRuns().get(4); + assertEquals("", r.toString()); + assertEquals(1, r.getEmbeddedPictures().size()); + assertNotNull(r.getEmbeddedPictures().get(0).getPictureData()); + assertEquals("image5.jpeg", r.getEmbeddedPictures().get(0).getPictureData().getFileName()); + + r = p.getRuns().get(5); + assertEquals(" ", r.toString()); + assertEquals(0, r.getEmbeddedPictures().size()); + + // Final spacer + assertEquals("", doc.getParagraphs().get(6).getText()); + + + // Look in detail at one + r = p.getRuns().get(4); + XWPFPicture pict = r.getEmbeddedPictures().get(0); + CTPicture picture = pict.getCTPicture(); + assertEquals("rId8", picture.getBlipFill().getBlip().getEmbed()); + + // Ensure that the ooxml compiler finds everything we need + r.getCTR().getDrawingArray(0); + r.getCTR().getDrawingArray(0).getInlineArray(0); + r.getCTR().getDrawingArray(0).getInlineArray(0).getGraphic(); + r.getCTR().getDrawingArray(0).getInlineArray(0).getGraphic().getGraphicData(); + PicDocument pd = new PicDocumentImpl(null); + assertTrue(pd.isNil()); } - - public void testTika792() throws Exception{ - //This test forces the loading of CTMoveBookmark and - //CTMoveBookmarkImpl into ooxml-lite. - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Tika-792.docx"); - XWPFParagraph paragraph = doc.getParagraphs().get(0); - assertEquals("s", paragraph.getText()); + + public void testTika792() throws Exception { + //This test forces the loading of CTMoveBookmark and + //CTMoveBookmarkImpl into ooxml-lite. + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Tika-792.docx"); + XWPFParagraph paragraph = doc.getParagraphs().get(0); + assertEquals("s", paragraph.getText()); } public void testSettersGetters() { XWPFDocument doc = new XWPFDocument(); XWPFParagraph p = doc.createParagraph(); - + assertTrue(p.isEmpty()); assertFalse(p.removeRun(0)); @@ -355,7 +371,7 @@ public final class TestXWPFParagraph extends TestCase { assertFalse(p.isEmpty()); assertNull(p.getStyleID()); assertNull(p.getStyle()); - + assertNull(p.getNumID()); p.setNumID(BigInteger.valueOf(12)); assertEquals(BigInteger.valueOf(12), p.getNumID()); @@ -363,18 +379,18 @@ public final class TestXWPFParagraph extends TestCase { assertEquals(BigInteger.valueOf(13), p.getNumID()); assertNull(p.getNumFmt()); - + assertNull(p.getNumIlvl()); - + assertEquals("", p.getParagraphText()); assertEquals("", p.getPictureText()); assertEquals("", p.getFootnoteText()); - + p.setBorderBetween(Borders.NONE); assertEquals(Borders.NONE, p.getBorderBetween()); p.setBorderBetween(Borders.BASIC_BLACK_DASHES); assertEquals(Borders.BASIC_BLACK_DASHES, p.getBorderBetween()); - + p.setBorderBottom(Borders.NONE); assertEquals(Borders.NONE, p.getBorderBottom()); p.setBorderBottom(Borders.BABY_RATTLE); @@ -394,37 +410,37 @@ public final class TestXWPFParagraph extends TestCase { assertEquals(Borders.NONE, p.getBorderBottom()); p.setBorderBottom(Borders.BASIC_WHITE_DOTS); assertEquals(Borders.BASIC_WHITE_DOTS, p.getBorderBottom()); - + assertFalse(p.isPageBreak()); p.setPageBreak(true); assertTrue(p.isPageBreak()); p.setPageBreak(false); assertFalse(p.isPageBreak()); - + assertEquals(-1, p.getSpacingAfter()); p.setSpacingAfter(12); assertEquals(12, p.getSpacingAfter()); - + assertEquals(-1, p.getSpacingAfterLines()); p.setSpacingAfterLines(14); assertEquals(14, p.getSpacingAfterLines()); - + assertEquals(-1, p.getSpacingBefore()); p.setSpacingBefore(16); assertEquals(16, p.getSpacingBefore()); - + assertEquals(-1, p.getSpacingBeforeLines()); p.setSpacingBeforeLines(18); assertEquals(18, p.getSpacingBeforeLines()); - + assertEquals(LineSpacingRule.AUTO, p.getSpacingLineRule()); p.setSpacingLineRule(LineSpacingRule.EXACT); assertEquals(LineSpacingRule.EXACT, p.getSpacingLineRule()); - + assertEquals(-1, p.getIndentationLeft()); p.setIndentationLeft(21); assertEquals(21, p.getIndentationLeft()); - + assertEquals(-1, p.getIndentationRight()); p.setIndentationRight(25); assertEquals(25, p.getIndentationRight()); @@ -442,20 +458,20 @@ public final class TestXWPFParagraph extends TestCase { assertTrue(p.isWordWrap()); p.setWordWrap(false); assertFalse(p.isWordWrap()); - + assertNull(p.getStyle()); p.setStyle("teststyle"); assertEquals("teststyle", p.getStyle()); - + p.addRun(CTR.Factory.newInstance()); - + //assertTrue(p.removeRun(0)); - + assertNotNull(p.getBody()); assertEquals(BodyElementType.PARAGRAPH, p.getElementType()); assertEquals(BodyType.DOCUMENT, p.getPartType()); } - + public void testSearchTextNotFound() { XWPFDocument doc = new XWPFDocument(); XWPFParagraph p = doc.createParagraph(); @@ -469,17 +485,17 @@ public final class TestXWPFParagraph extends TestCase { List ps = xml.getParagraphs(); assertEquals(10, ps.size()); - + XWPFParagraph p = ps.get(0); TextSegement segment = p.searchText("sample word document", new PositionInParagraph()); assertNotNull(segment); - + assertEquals("sample word document", p.getText(segment)); - + assertTrue(p.removeRun(0)); } - + @SuppressWarnings("deprecation") public void testRuns() { XWPFDocument doc = new XWPFDocument(); @@ -489,7 +505,7 @@ public final class TestXWPFParagraph extends TestCase { XWPFRun r = new XWPFRun(run, doc.createParagraph()); p.addRun(r); p.addRun(r); - + assertNotNull(p.getRun(run)); assertNull(p.getRun(null)); } diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFPictureData.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFPictureData.java index 34a47fdfb..c9123a3a1 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFPictureData.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFPictureData.java @@ -20,138 +20,129 @@ package org.apache.poi.xwpf.usermodel; import static org.junit.Assert.assertArrayEquals; import java.io.IOException; -import java.util.List; - -import junit.framework.TestCase; - -import org.apache.poi.openxml4j.exceptions.InvalidFormatException; -import org.apache.poi.openxml4j.opc.PackageRelationship; -import org.apache.poi.xssf.usermodel.XSSFRelation; +import java.util.List; + +import junit.framework.TestCase; +import org.apache.poi.openxml4j.exceptions.InvalidFormatException; +import org.apache.poi.openxml4j.opc.PackageRelationship; +import org.apache.poi.xssf.usermodel.XSSFRelation; import org.apache.poi.xwpf.XWPFTestDataSamples; -import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy; - -public class TestXWPFPictureData extends TestCase { - - public void testRead() throws InvalidFormatException, IOException - { - XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("VariousPictures.docx"); - List pictures = sampleDoc.getAllPictures(); - - assertEquals(5,pictures.size()); - String[] ext = {"wmf","png","emf","emf","jpeg"}; - for (int i = 0 ; i < pictures.size() ; i++) - { - assertEquals(ext[i],pictures.get(i).suggestFileExtension()); - } - - int num = pictures.size(); - - byte[] pictureData = XWPFTestDataSamples.getImage("nature1.jpg"); - - String relationId = sampleDoc.addPictureData(pictureData,XWPFDocument.PICTURE_TYPE_JPEG); - // picture list was updated - assertEquals(num + 1,pictures.size()); - XWPFPictureData pict = (XWPFPictureData) sampleDoc.getRelationById(relationId); - assertEquals("jpeg",pict.suggestFileExtension()); - assertArrayEquals(pictureData,pict.getData()); - } - - public void testPictureInHeader() throws IOException - { - XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("headerPic.docx"); - verifyOneHeaderPicture(sampleDoc); - - XWPFDocument readBack = XWPFTestDataSamples.writeOutAndReadBack(sampleDoc); - verifyOneHeaderPicture(readBack); - } +import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy; + +public class TestXWPFPictureData extends TestCase { + + public void testRead() throws InvalidFormatException, IOException { + XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("VariousPictures.docx"); + List pictures = sampleDoc.getAllPictures(); + + assertEquals(5, pictures.size()); + String[] ext = {"wmf", "png", "emf", "emf", "jpeg"}; + for (int i = 0; i < pictures.size(); i++) { + assertEquals(ext[i], pictures.get(i).suggestFileExtension()); + } + + int num = pictures.size(); + + byte[] pictureData = XWPFTestDataSamples.getImage("nature1.jpg"); + + String relationId = sampleDoc.addPictureData(pictureData, XWPFDocument.PICTURE_TYPE_JPEG); + // picture list was updated + assertEquals(num + 1, pictures.size()); + XWPFPictureData pict = (XWPFPictureData) sampleDoc.getRelationById(relationId); + assertEquals("jpeg", pict.suggestFileExtension()); + assertArrayEquals(pictureData, pict.getData()); + } + + public void testPictureInHeader() throws IOException { + XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("headerPic.docx"); + verifyOneHeaderPicture(sampleDoc); + + XWPFDocument readBack = XWPFTestDataSamples.writeOutAndReadBack(sampleDoc); + verifyOneHeaderPicture(readBack); + } private void verifyOneHeaderPicture(XWPFDocument sampleDoc) { XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy(); - XWPFHeader header = policy.getDefaultHeader(); - - List pictures = header.getAllPictures(); - assertEquals(1,pictures.size()); - } - - public void testNew() throws InvalidFormatException, IOException - { - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("EmptyDocumentWithHeaderFooter.docx"); - byte[] jpegData = XWPFTestDataSamples.getImage("nature1.jpg"); - assertNotNull(jpegData); + XWPFHeader header = policy.getDefaultHeader(); + + List pictures = header.getAllPictures(); + assertEquals(1, pictures.size()); + } + + public void testNew() throws InvalidFormatException, IOException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("EmptyDocumentWithHeaderFooter.docx"); + byte[] jpegData = XWPFTestDataSamples.getImage("nature1.jpg"); + assertNotNull(jpegData); byte[] gifData = XWPFTestDataSamples.getImage("nature1.gif"); assertNotNull(gifData); byte[] pngData = XWPFTestDataSamples.getImage("nature1.png"); - assertNotNull(pngData); - - List pictures = doc.getAllPictures(); - assertEquals(0,pictures.size()); - - // Document shouldn't have any image relationships - assertEquals(13,doc.getPackagePart().getRelationships().size()); - for (PackageRelationship rel : doc.getPackagePart().getRelationships()) - { - if (rel.getRelationshipType().equals(XSSFRelation.IMAGE_JPEG.getRelation())) - { - fail("Shouldn't have JPEG yet"); - } - } - - // Add the image - String relationId = doc.addPictureData(jpegData,XWPFDocument.PICTURE_TYPE_JPEG); - assertEquals(1,pictures.size()); - XWPFPictureData jpgPicData = (XWPFPictureData) doc.getRelationById(relationId); - assertEquals("jpeg",jpgPicData.suggestFileExtension()); - assertArrayEquals(jpegData,jpgPicData.getData()); - - // Ensure it now has one - assertEquals(14,doc.getPackagePart().getRelationships().size()); - PackageRelationship jpegRel = null; - for (PackageRelationship rel : doc.getPackagePart().getRelationships()) - { - if (rel.getRelationshipType().equals(XWPFRelation.IMAGE_JPEG.getRelation())) - { - if (jpegRel != null) - fail("Found 2 jpegs!"); - jpegRel = rel; - } - } - assertNotNull("JPEG Relationship not found",jpegRel); - - // Check the details - assertNotNull(jpegRel); - assertEquals(XWPFRelation.IMAGE_JPEG.getRelation(),jpegRel.getRelationshipType()); - assertEquals("/word/document.xml",jpegRel.getSource().getPartName().toString()); - assertEquals("/word/media/image1.jpeg",jpegRel.getTargetURI().getPath()); - - XWPFPictureData pictureDataByID = doc.getPictureDataByID(jpegRel.getId()); - assertArrayEquals(jpegData, pictureDataByID.getData()); - - // Save an re-load, check it appears - doc = XWPFTestDataSamples.writeOutAndReadBack(doc); - assertEquals(1,doc.getAllPictures().size()); - assertEquals(1,doc.getAllPackagePictures().size()); - - // verify the picture that we read back in - pictureDataByID = doc.getPictureDataByID(jpegRel.getId()); - assertArrayEquals(jpegData, pictureDataByID.getData()); - - } - - public void testBug51770() throws InvalidFormatException, IOException { + assertNotNull(pngData); + + List pictures = doc.getAllPictures(); + assertEquals(0, pictures.size()); + + // Document shouldn't have any image relationships + assertEquals(13, doc.getPackagePart().getRelationships().size()); + for (PackageRelationship rel : doc.getPackagePart().getRelationships()) { + if (rel.getRelationshipType().equals(XSSFRelation.IMAGE_JPEG.getRelation())) { + fail("Shouldn't have JPEG yet"); + } + } + + // Add the image + String relationId = doc.addPictureData(jpegData, XWPFDocument.PICTURE_TYPE_JPEG); + assertEquals(1, pictures.size()); + XWPFPictureData jpgPicData = (XWPFPictureData) doc.getRelationById(relationId); + assertEquals("jpeg", jpgPicData.suggestFileExtension()); + assertArrayEquals(jpegData, jpgPicData.getData()); + + // Ensure it now has one + assertEquals(14, doc.getPackagePart().getRelationships().size()); + PackageRelationship jpegRel = null; + for (PackageRelationship rel : doc.getPackagePart().getRelationships()) { + if (rel.getRelationshipType().equals(XWPFRelation.IMAGE_JPEG.getRelation())) { + if (jpegRel != null) + fail("Found 2 jpegs!"); + jpegRel = rel; + } + } + assertNotNull("JPEG Relationship not found", jpegRel); + + // Check the details + assertNotNull(jpegRel); + assertEquals(XWPFRelation.IMAGE_JPEG.getRelation(), jpegRel.getRelationshipType()); + assertEquals("/word/document.xml", jpegRel.getSource().getPartName().toString()); + assertEquals("/word/media/image1.jpeg", jpegRel.getTargetURI().getPath()); + + XWPFPictureData pictureDataByID = doc.getPictureDataByID(jpegRel.getId()); + assertArrayEquals(jpegData, pictureDataByID.getData()); + + // Save an re-load, check it appears + doc = XWPFTestDataSamples.writeOutAndReadBack(doc); + assertEquals(1, doc.getAllPictures().size()); + assertEquals(1, doc.getAllPackagePictures().size()); + + // verify the picture that we read back in + pictureDataByID = doc.getPictureDataByID(jpegRel.getId()); + assertArrayEquals(jpegData, pictureDataByID.getData()); + + } + + public void testBug51770() throws InvalidFormatException, IOException { XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Bug51170.docx"); XWPFHeaderFooterPolicy policy = doc.getHeaderFooterPolicy(); XWPFHeader header = policy.getDefaultHeader(); for (XWPFParagraph paragraph : header.getParagraphs()) { for (XWPFRun run : paragraph.getRuns()) { for (XWPFPicture picture : run.getEmbeddedPictures()) { - if (paragraph.getDocument() != null) { - //System.out.println(picture.getCTPicture()); - XWPFPictureData data = picture.getPictureData(); - if(data != null) System.out.println(data.getFileName()); - } - } - } + if (paragraph.getDocument() != null) { + //System.out.println(picture.getCTPicture()); + XWPFPictureData data = picture.getPictureData(); + if (data != null) System.out.println(data.getFileName()); + } + } + } } } diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFRun.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFRun.java index 618618f92..d9af8c91f 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFRun.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFRun.java @@ -20,13 +20,12 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.math.BigInteger; import java.util.Iterator; -import java.util.List; - -import junit.framework.TestCase; - -import org.apache.poi.xwpf.XWPFTestDataSamples; -import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBr; +import java.util.List; + +import junit.framework.TestCase; +import org.apache.poi.xwpf.XWPFTestDataSamples; +import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBr; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STBrClear; @@ -46,28 +45,28 @@ public class TestXWPFRun extends TestCase { p = doc.createParagraph(); this.ctRun = CTR.Factory.newInstance(); - } - - public void testSetGetText() { - ctRun.addNewT().setStringValue("TEST STRING"); - ctRun.addNewT().setStringValue("TEST2 STRING"); - ctRun.addNewT().setStringValue("TEST3 STRING"); - - assertEquals(3,ctRun.sizeOfTArray()); - XWPFRun run = new XWPFRun(ctRun, p); - - assertEquals("TEST2 STRING",run.getText(1)); - - run.setText("NEW STRING",0); - assertEquals("NEW STRING",run.getText(0)); - - //run.setText("xxx",14); - //fail("Position wrong"); - } - - public void testSetGetBold() { - CTRPr rpr = ctRun.addNewRPr(); - rpr.addNewB().setVal(STOnOff.TRUE); + } + + public void testSetGetText() { + ctRun.addNewT().setStringValue("TEST STRING"); + ctRun.addNewT().setStringValue("TEST2 STRING"); + ctRun.addNewT().setStringValue("TEST3 STRING"); + + assertEquals(3, ctRun.sizeOfTArray()); + XWPFRun run = new XWPFRun(ctRun, p); + + assertEquals("TEST2 STRING", run.getText(1)); + + run.setText("NEW STRING", 0); + assertEquals("NEW STRING", run.getText(0)); + + //run.setText("xxx",14); + //fail("Position wrong"); + } + + public void testSetGetBold() { + CTRPr rpr = ctRun.addNewRPr(); + rpr.addNewB().setVal(STOnOff.TRUE); XWPFRun run = new XWPFRun(ctRun, p); assertEquals(true, run.isBold()); @@ -178,16 +177,16 @@ public class TestXWPFRun extends TestCase { run.setText("T1"); run.addCarriageReturn(); run.addCarriageReturn(); - run.setText("T2"); - run.addCarriageReturn(); - assertEquals(3, run.getCTR().sizeOfCrArray()); - - assertEquals("T1\n\nT2\n", run.toString()); - } - - public void testAddTabsAndLineBreaks() { - ctRun.addNewT().setStringValue("TEST STRING"); - ctRun.addNewCr(); + run.setText("T2"); + run.addCarriageReturn(); + assertEquals(3, run.getCTR().sizeOfCrArray()); + + assertEquals("T1\n\nT2\n", run.toString()); + } + + public void testAddTabsAndLineBreaks() { + ctRun.addNewT().setStringValue("TEST STRING"); + ctRun.addNewCr(); ctRun.addNewT().setStringValue("TEST2 STRING"); ctRun.addNewTab(); ctRun.addNewT().setStringValue("TEST3 STRING"); @@ -199,21 +198,21 @@ public class TestXWPFRun extends TestCase { run.addCarriageReturn(); run.setText("T2"); run.addTab(); - run.setText("T3"); - assertEquals(1, run.getCTR().sizeOfCrArray()); - assertEquals(1, run.getCTR().sizeOfTabArray()); - - assertEquals("T1\nT2\tT3", run.toString()); - } - + run.setText("T3"); + assertEquals(1, run.getCTR().sizeOfCrArray()); + assertEquals(1, run.getCTR().sizeOfTabArray()); + + assertEquals("T1\nT2\tT3", run.toString()); + } + public void testAddPageBreak() { - ctRun.addNewT().setStringValue("TEST STRING"); - ctRun.addNewBr(); - ctRun.addNewT().setStringValue("TEST2 STRING"); - CTBr breac=ctRun.addNewBr(); - breac.setClear(STBrClear.LEFT); - ctRun.addNewT().setStringValue("TEST3 STRING"); - assertEquals(2, ctRun.sizeOfBrArray()); + ctRun.addNewT().setStringValue("TEST STRING"); + ctRun.addNewBr(); + ctRun.addNewT().setStringValue("TEST2 STRING"); + CTBr breac = ctRun.addNewBr(); + breac.setClear(STBrClear.LEFT); + ctRun.addNewT().setStringValue("TEST3 STRING"); + assertEquals(2, ctRun.sizeOfBrArray()); XWPFRun run = new XWPFRun(CTR.Factory.newInstance(), p); run.setText("TEXT1"); @@ -222,144 +221,145 @@ public class TestXWPFRun extends TestCase { run.addBreak(BreakType.TEXT_WRAPPING); assertEquals(2, run.getCTR().sizeOfBrArray()); } - - /** - * Test that on an existing document, we do the - * right thing with it - * @throws IOException - */ - public void testExisting() throws IOException { - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestDocument.docx"); - XWPFParagraph p; - XWPFRun run; - - - // First paragraph is simple - p = doc.getParagraphArray(0); - assertEquals("This is a test document.", p.getText()); - assertEquals(2, p.getRuns().size()); - - run = p.getRuns().get(0); - assertEquals("This is a test document", run.toString()); - assertEquals(false, run.isBold()); - assertEquals(false, run.isItalic()); - assertEquals(false, run.isStrike()); - assertEquals(null, run.getCTR().getRPr()); - - run = p.getRuns().get(1); - assertEquals(".", run.toString()); - assertEquals(false, run.isBold()); - assertEquals(false, run.isItalic()); - assertEquals(false, run.isStrike()); - assertEquals(null, run.getCTR().getRPr()); - - - // Next paragraph is all in one style, but a different one - p = doc.getParagraphArray(1); - assertEquals("This bit is in bold and italic", p.getText()); - assertEquals(1, p.getRuns().size()); - - run = p.getRuns().get(0); - assertEquals("This bit is in bold and italic", run.toString()); - assertEquals(true, run.isBold()); - assertEquals(true, run.isItalic()); - assertEquals(false, run.isStrike()); - assertEquals(true, run.getCTR().getRPr().isSetB()); - assertEquals(false, run.getCTR().getRPr().getB().isSetVal()); - - - // Back to normal - p = doc.getParagraphArray(2); - assertEquals("Back to normal", p.getText()); - assertEquals(1, p.getRuns().size()); - - run = p.getRuns().get(0); - assertEquals("Back to normal", run.toString()); - assertEquals(false, run.isBold()); - assertEquals(false, run.isItalic()); - assertEquals(false, run.isStrike()); - assertEquals(null, run.getCTR().getRPr()); - - - // Different styles in one paragraph - p = doc.getParagraphArray(3); - assertEquals("This contains BOLD, ITALIC and BOTH, as well as RED and YELLOW text.", p.getText()); - assertEquals(11, p.getRuns().size()); - - run = p.getRuns().get(0); - assertEquals("This contains ", run.toString()); - assertEquals(false, run.isBold()); - assertEquals(false, run.isItalic()); - assertEquals(false, run.isStrike()); - assertEquals(null, run.getCTR().getRPr()); - - run = p.getRuns().get(1); - assertEquals("BOLD", run.toString()); - assertEquals(true, run.isBold()); - assertEquals(false, run.isItalic()); - assertEquals(false, run.isStrike()); - - run = p.getRuns().get(2); - assertEquals(", ", run.toString()); - assertEquals(false, run.isBold()); - assertEquals(false, run.isItalic()); - assertEquals(false, run.isStrike()); - assertEquals(null, run.getCTR().getRPr()); - - run = p.getRuns().get(3); - assertEquals("ITALIC", run.toString()); - assertEquals(false, run.isBold()); - assertEquals(true, run.isItalic()); - assertEquals(false, run.isStrike()); - - run = p.getRuns().get(4); - assertEquals(" and ", run.toString()); - assertEquals(false, run.isBold()); - assertEquals(false, run.isItalic()); - assertEquals(false, run.isStrike()); - assertEquals(null, run.getCTR().getRPr()); - - run = p.getRuns().get(5); - assertEquals("BOTH", run.toString()); - assertEquals(true, run.isBold()); - assertEquals(true, run.isItalic()); - assertEquals(false, run.isStrike()); - - run = p.getRuns().get(6); - assertEquals(", as well as ", run.toString()); - assertEquals(false, run.isBold()); - assertEquals(false, run.isItalic()); - assertEquals(false, run.isStrike()); - assertEquals(null, run.getCTR().getRPr()); - - run = p.getRuns().get(7); - assertEquals("RED", run.toString()); - assertEquals(false, run.isBold()); - assertEquals(false, run.isItalic()); - assertEquals(false, run.isStrike()); - - run = p.getRuns().get(8); - assertEquals(" and ", run.toString()); - assertEquals(false, run.isBold()); - assertEquals(false, run.isItalic()); - assertEquals(false, run.isStrike()); - assertEquals(null, run.getCTR().getRPr()); - - run = p.getRuns().get(9); - assertEquals("YELLOW", run.toString()); - assertEquals(false, run.isBold()); - assertEquals(false, run.isItalic()); - assertEquals(false, run.isStrike()); - - run = p.getRuns().get(10); - assertEquals(" text.", run.toString()); - assertEquals(false, run.isBold()); - assertEquals(false, run.isItalic()); - assertEquals(false, run.isStrike()); - assertEquals(null, run.getCTR().getRPr()); - } - - public void testPictureInHeader() throws IOException { + + /** + * Test that on an existing document, we do the + * right thing with it + * + * @throws IOException + */ + public void testExisting() throws IOException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestDocument.docx"); + XWPFParagraph p; + XWPFRun run; + + + // First paragraph is simple + p = doc.getParagraphArray(0); + assertEquals("This is a test document.", p.getText()); + assertEquals(2, p.getRuns().size()); + + run = p.getRuns().get(0); + assertEquals("This is a test document", run.toString()); + assertEquals(false, run.isBold()); + assertEquals(false, run.isItalic()); + assertEquals(false, run.isStrike()); + assertEquals(null, run.getCTR().getRPr()); + + run = p.getRuns().get(1); + assertEquals(".", run.toString()); + assertEquals(false, run.isBold()); + assertEquals(false, run.isItalic()); + assertEquals(false, run.isStrike()); + assertEquals(null, run.getCTR().getRPr()); + + + // Next paragraph is all in one style, but a different one + p = doc.getParagraphArray(1); + assertEquals("This bit is in bold and italic", p.getText()); + assertEquals(1, p.getRuns().size()); + + run = p.getRuns().get(0); + assertEquals("This bit is in bold and italic", run.toString()); + assertEquals(true, run.isBold()); + assertEquals(true, run.isItalic()); + assertEquals(false, run.isStrike()); + assertEquals(true, run.getCTR().getRPr().isSetB()); + assertEquals(false, run.getCTR().getRPr().getB().isSetVal()); + + + // Back to normal + p = doc.getParagraphArray(2); + assertEquals("Back to normal", p.getText()); + assertEquals(1, p.getRuns().size()); + + run = p.getRuns().get(0); + assertEquals("Back to normal", run.toString()); + assertEquals(false, run.isBold()); + assertEquals(false, run.isItalic()); + assertEquals(false, run.isStrike()); + assertEquals(null, run.getCTR().getRPr()); + + + // Different styles in one paragraph + p = doc.getParagraphArray(3); + assertEquals("This contains BOLD, ITALIC and BOTH, as well as RED and YELLOW text.", p.getText()); + assertEquals(11, p.getRuns().size()); + + run = p.getRuns().get(0); + assertEquals("This contains ", run.toString()); + assertEquals(false, run.isBold()); + assertEquals(false, run.isItalic()); + assertEquals(false, run.isStrike()); + assertEquals(null, run.getCTR().getRPr()); + + run = p.getRuns().get(1); + assertEquals("BOLD", run.toString()); + assertEquals(true, run.isBold()); + assertEquals(false, run.isItalic()); + assertEquals(false, run.isStrike()); + + run = p.getRuns().get(2); + assertEquals(", ", run.toString()); + assertEquals(false, run.isBold()); + assertEquals(false, run.isItalic()); + assertEquals(false, run.isStrike()); + assertEquals(null, run.getCTR().getRPr()); + + run = p.getRuns().get(3); + assertEquals("ITALIC", run.toString()); + assertEquals(false, run.isBold()); + assertEquals(true, run.isItalic()); + assertEquals(false, run.isStrike()); + + run = p.getRuns().get(4); + assertEquals(" and ", run.toString()); + assertEquals(false, run.isBold()); + assertEquals(false, run.isItalic()); + assertEquals(false, run.isStrike()); + assertEquals(null, run.getCTR().getRPr()); + + run = p.getRuns().get(5); + assertEquals("BOTH", run.toString()); + assertEquals(true, run.isBold()); + assertEquals(true, run.isItalic()); + assertEquals(false, run.isStrike()); + + run = p.getRuns().get(6); + assertEquals(", as well as ", run.toString()); + assertEquals(false, run.isBold()); + assertEquals(false, run.isItalic()); + assertEquals(false, run.isStrike()); + assertEquals(null, run.getCTR().getRPr()); + + run = p.getRuns().get(7); + assertEquals("RED", run.toString()); + assertEquals(false, run.isBold()); + assertEquals(false, run.isItalic()); + assertEquals(false, run.isStrike()); + + run = p.getRuns().get(8); + assertEquals(" and ", run.toString()); + assertEquals(false, run.isBold()); + assertEquals(false, run.isItalic()); + assertEquals(false, run.isStrike()); + assertEquals(null, run.getCTR().getRPr()); + + run = p.getRuns().get(9); + assertEquals("YELLOW", run.toString()); + assertEquals(false, run.isBold()); + assertEquals(false, run.isItalic()); + assertEquals(false, run.isStrike()); + + run = p.getRuns().get(10); + assertEquals(" text.", run.toString()); + assertEquals(false, run.isBold()); + assertEquals(false, run.isItalic()); + assertEquals(false, run.isStrike()); + assertEquals(null, run.getCTR().getRPr()); + } + + public void testPictureInHeader() throws IOException { XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("headerPic.docx"); XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy(); @@ -373,47 +373,47 @@ public class TestXWPFRun extends TestCase { for (XWPFPicture pic : pictures) { assertNotNull(pic.getPictureData()); - assertEquals("DOZOR", pic.getDescription()); - } - - count+= pictures.size(); - } - } - - assertEquals(1, count); - } - - public void testAddPicture() throws Exception { - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestDocument.docx"); - XWPFParagraph p = doc.getParagraphArray(2); - XWPFRun r = p.getRuns().get(0); - - assertEquals(0, doc.getAllPictures().size()); - assertEquals(0, r.getEmbeddedPictures().size()); - - r.addPicture(new ByteArrayInputStream(new byte[0]), Document.PICTURE_TYPE_JPEG, "test.jpg", 21, 32); - - assertEquals(1, doc.getAllPictures().size()); - assertEquals(1, r.getEmbeddedPictures().size()); - } - - /** - * Bugzilla #52288 - setting the font family on the - * run mustn't NPE - */ - public void testSetFontFamily_52288() throws Exception { - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("52288.docx"); - final Iterator paragraphs = doc.getParagraphsIterator(); - while (paragraphs.hasNext()) { - final XWPFParagraph paragraph = paragraphs.next(); - for (final XWPFRun run : paragraph.getRuns()) { - if (run != null) { - final String text = run.getText(0); - if (text != null) { - run.setFontFamily("Times New Roman"); - } - } - } - } - } -} + assertEquals("DOZOR", pic.getDescription()); + } + + count += pictures.size(); + } + } + + assertEquals(1, count); + } + + public void testAddPicture() throws Exception { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("TestDocument.docx"); + XWPFParagraph p = doc.getParagraphArray(2); + XWPFRun r = p.getRuns().get(0); + + assertEquals(0, doc.getAllPictures().size()); + assertEquals(0, r.getEmbeddedPictures().size()); + + r.addPicture(new ByteArrayInputStream(new byte[0]), Document.PICTURE_TYPE_JPEG, "test.jpg", 21, 32); + + assertEquals(1, doc.getAllPictures().size()); + assertEquals(1, r.getEmbeddedPictures().size()); + } + + /** + * Bugzilla #52288 - setting the font family on the + * run mustn't NPE + */ + public void testSetFontFamily_52288() throws Exception { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("52288.docx"); + final Iterator paragraphs = doc.getParagraphsIterator(); + while (paragraphs.hasNext()) { + final XWPFParagraph paragraph = paragraphs.next(); + for (final XWPFRun run : paragraph.getRuns()) { + if (run != null) { + final String text = run.getText(0); + if (text != null) { + run.setFontFamily("Times New Roman"); + } + } + } + } + } +} diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFSDT.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFSDT.java index f4114c962..92c94052e 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFSDT.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFSDT.java @@ -15,48 +15,46 @@ limitations under the License. ==================================================================== */ -package org.apache.poi.xwpf.usermodel; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import junit.framework.TestCase; - -import org.apache.poi.xwpf.XWPFTestDataSamples; - -public final class TestXWPFSDT extends TestCase { - - /** - * Test simple tag and title extraction from SDT - * @throws Exception - */ - public void testTagTitle() throws Exception { - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Bug54849.docx"); - String tag = null; - String title= null; - List sdts = extractAllSDTs(doc); - for (AbstractXWPFSDT sdt :sdts){ - if (sdt.getContent().toString().equals("Rich_text")){ - tag = "MyTag"; - title = "MyTitle"; - break; - } - - } - assertEquals("controls size", 13, sdts.size()); - +package org.apache.poi.xwpf.usermodel; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import junit.framework.TestCase; +import org.apache.poi.xwpf.XWPFTestDataSamples; + +public final class TestXWPFSDT extends TestCase { + + /** + * Test simple tag and title extraction from SDT + * + * @throws Exception + */ + public void testTagTitle() throws Exception { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Bug54849.docx"); + String tag = null; + String title = null; + List sdts = extractAllSDTs(doc); + for (AbstractXWPFSDT sdt : sdts) { + if (sdt.getContent().toString().equals("Rich_text")) { + tag = "MyTag"; + title = "MyTitle"; + break; + } + + } + assertEquals("controls size", 13, sdts.size()); + assertEquals("tag", "MyTag", tag); assertEquals("title", "MyTitle", title); - } - - - public void testGetSDTs() throws Exception{ - String[] contents = new String[]{ - "header_rich_text", - "Rich_text", + } + + + public void testGetSDTs() throws Exception { + String[] contents = new String[]{ + "header_rich_text", + "Rich_text", "Rich_text_pre_table\nRich_text_cell1\t\t\t\n\t\t\t\n\t\t\t\n\nRich_text_post_table", "Plain_text_no_newlines", "Plain_text_with_newlines1\nplain_text_with_newlines2", @@ -72,125 +70,126 @@ public final class TestXWPFSDT extends TestCase { }; XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Bug54849.docx"); List sdts = extractAllSDTs(doc); - - assertEquals("number of sdts", contents.length, sdts.size()); - - for (int i = 0; i < contents.length; i++){ - AbstractXWPFSDT sdt = sdts.get(i); - assertEquals(i+ ": " + contents[i], contents[i], sdt.getContent().toString()); - } - } - /** - * POI-54771 and TIKA-1317 - */ + + assertEquals("number of sdts", contents.length, sdts.size()); + + for (int i = 0; i < contents.length; i++) { + AbstractXWPFSDT sdt = sdts.get(i); + assertEquals(i + ": " + contents[i], contents[i], sdt.getContent().toString()); + } + } + + /** + * POI-54771 and TIKA-1317 + */ public void testSDTAsCell() throws Exception { //Bug54771a.docx and Bug54771b.docx test slightly //different recursion patterns. Keep both! - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Bug54771a.docx"); - List sdts = extractAllSDTs(doc); - String text = sdts.get(0).getContent().getText(); - assertEquals(2, sdts.size()); - assertTrue(text.indexOf("Test") > -1); - - text = sdts.get(1).getContent().getText(); + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Bug54771a.docx"); + List sdts = extractAllSDTs(doc); + String text = sdts.get(0).getContent().getText(); + assertEquals(2, sdts.size()); + assertTrue(text.indexOf("Test") > -1); + + text = sdts.get(1).getContent().getText(); assertTrue(text.indexOf("Test Subtitle") > -1); assertTrue(text.indexOf("Test User") > -1); assertTrue(text.indexOf("Test") < text.indexOf("Test Subtitle")); - - doc = XWPFTestDataSamples.openSampleDocument("Bug54771b.docx"); - sdts = extractAllSDTs(doc); - assertEquals(3, sdts.size()); - assertTrue(sdts.get(0).getContent().getText().indexOf("Test") > -1); - - assertTrue(sdts.get(1).getContent().getText().indexOf("Test Subtitle") > -1); - assertTrue(sdts.get(2).getContent().getText().indexOf("Test User") > -1); - - } - - /** - * POI-55142 and Tika 1130 - */ - public void testNewLinesBetweenRuns() throws Exception{ - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Bug55142.docx"); - List sdts = extractAllSDTs(doc); - List targs = new ArrayList(); - //these test newlines and tabs in paragraphs/body elements - targs.add("Rich-text1 abcdefghi"); - targs.add("Rich-text2 abcd\t\tefgh"); - targs.add("Rich-text3 abcd\nefg"); - targs.add("Rich-text4 abcdefg"); - targs.add("Rich-text5 abcdefg\nhijk"); - targs.add("Plain-text1 abcdefg"); - targs.add("Plain-text2 abcdefg\nhijk\nlmnop"); - //this tests consecutive runs within a cell (not a paragraph) - //this test case was triggered by Tika-1130 - targs.add("sdt_incell2 abcdefg"); - - for (int i = 0; i < sdts.size(); i++){ - AbstractXWPFSDT sdt = sdts.get(i); - assertEquals(targs.get(i), targs.get(i), sdt.getContent().getText()); - } - } - - private List extractAllSDTs(XWPFDocument doc){ - - List sdts = new ArrayList(); - - List headers = doc.getHeaderList(); - for (XWPFHeader header : headers){ - sdts.addAll(extractSDTsFromBodyElements(header.getBodyElements())); - } - sdts.addAll(extractSDTsFromBodyElements(doc.getBodyElements())); - - List footers = doc.getFooterList(); - for (XWPFFooter footer : footers){ - sdts.addAll(extractSDTsFromBodyElements(footer.getBodyElements())); - } - - for (XWPFFootnote footnote : doc.getFootnotes()){ - sdts.addAll(extractSDTsFromBodyElements(footnote.getBodyElements())); - } - for (Map.Entry e : doc.endnotes.entrySet()){ - sdts.addAll(extractSDTsFromBodyElements(e.getValue().getBodyElements())); - } - return sdts; - } - - private List extractSDTsFromBodyElements(List elements){ - List sdts = new ArrayList(); - for (IBodyElement e : elements){ - if (e instanceof XWPFSDT){ - XWPFSDT sdt = (XWPFSDT)e; - sdts.add(sdt); - } else if (e instanceof XWPFParagraph){ - - XWPFParagraph p = (XWPFParagraph)e; - for (IRunElement e2 : p.getIRuns()){ - if (e2 instanceof XWPFSDT){ - XWPFSDT sdt = (XWPFSDT)e2; - sdts.add(sdt); - } - } - } else if (e instanceof XWPFTable){ - XWPFTable table = (XWPFTable)e; - sdts.addAll(extractSDTsFromTable(table)); - } - } + + doc = XWPFTestDataSamples.openSampleDocument("Bug54771b.docx"); + sdts = extractAllSDTs(doc); + assertEquals(3, sdts.size()); + assertTrue(sdts.get(0).getContent().getText().indexOf("Test") > -1); + + assertTrue(sdts.get(1).getContent().getText().indexOf("Test Subtitle") > -1); + assertTrue(sdts.get(2).getContent().getText().indexOf("Test User") > -1); + + } + + /** + * POI-55142 and Tika 1130 + */ + public void testNewLinesBetweenRuns() throws Exception { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Bug55142.docx"); + List sdts = extractAllSDTs(doc); + List targs = new ArrayList(); + //these test newlines and tabs in paragraphs/body elements + targs.add("Rich-text1 abcdefghi"); + targs.add("Rich-text2 abcd\t\tefgh"); + targs.add("Rich-text3 abcd\nefg"); + targs.add("Rich-text4 abcdefg"); + targs.add("Rich-text5 abcdefg\nhijk"); + targs.add("Plain-text1 abcdefg"); + targs.add("Plain-text2 abcdefg\nhijk\nlmnop"); + //this tests consecutive runs within a cell (not a paragraph) + //this test case was triggered by Tika-1130 + targs.add("sdt_incell2 abcdefg"); + + for (int i = 0; i < sdts.size(); i++) { + AbstractXWPFSDT sdt = sdts.get(i); + assertEquals(targs.get(i), targs.get(i), sdt.getContent().getText()); + } + } + + private List extractAllSDTs(XWPFDocument doc) { + + List sdts = new ArrayList(); + + List headers = doc.getHeaderList(); + for (XWPFHeader header : headers) { + sdts.addAll(extractSDTsFromBodyElements(header.getBodyElements())); + } + sdts.addAll(extractSDTsFromBodyElements(doc.getBodyElements())); + + List footers = doc.getFooterList(); + for (XWPFFooter footer : footers) { + sdts.addAll(extractSDTsFromBodyElements(footer.getBodyElements())); + } + + for (XWPFFootnote footnote : doc.getFootnotes()) { + sdts.addAll(extractSDTsFromBodyElements(footnote.getBodyElements())); + } + for (Map.Entry e : doc.endnotes.entrySet()) { + sdts.addAll(extractSDTsFromBodyElements(e.getValue().getBodyElements())); + } + return sdts; + } + + private List extractSDTsFromBodyElements(List elements) { + List sdts = new ArrayList(); + for (IBodyElement e : elements) { + if (e instanceof XWPFSDT) { + XWPFSDT sdt = (XWPFSDT) e; + sdts.add(sdt); + } else if (e instanceof XWPFParagraph) { + + XWPFParagraph p = (XWPFParagraph) e; + for (IRunElement e2 : p.getIRuns()) { + if (e2 instanceof XWPFSDT) { + XWPFSDT sdt = (XWPFSDT) e2; + sdts.add(sdt); + } + } + } else if (e instanceof XWPFTable) { + XWPFTable table = (XWPFTable) e; + sdts.addAll(extractSDTsFromTable(table)); + } + } return sdts; } private List extractSDTsFromTable(XWPFTable table) { List sdts = new ArrayList(); - for (XWPFTableRow r : table.getRows()) { - for (ICell c : r.getTableICells()) { - if (c instanceof XWPFSDTCell) { - sdts.add((XWPFSDTCell)c); - } else if (c instanceof XWPFTableCell) { - sdts.addAll(extractSDTsFromBodyElements(((XWPFTableCell)c).getBodyElements())); - } - } - } + for (XWPFTableRow r : table.getRows()) { + for (ICell c : r.getTableICells()) { + if (c instanceof XWPFSDTCell) { + sdts.add((XWPFSDTCell) c); + } else if (c instanceof XWPFTableCell) { + sdts.addAll(extractSDTsFromBodyElements(((XWPFTableCell) c).getBodyElements())); + } + } + } return sdts; } } diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFSmartTag.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFSmartTag.java index f12e16805..011092729 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFSmartTag.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFSmartTag.java @@ -19,13 +19,12 @@ package org.apache.poi.xwpf.usermodel; import java.io.IOException; import junit.framework.TestCase; - import org.apache.poi.xwpf.XWPFTestDataSamples; /** * Tests for reading SmartTags from Word docx. * - * @author Fabian Lange + * @author Fabian Lange */ public final class TestXWPFSmartTag extends TestCase { diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java index c297bc4c3..bef00de15 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFStyles.java @@ -19,13 +19,12 @@ package org.apache.poi.xwpf.usermodel; import java.io.IOException; import java.util.ArrayList; -import java.util.List; - -import junit.framework.TestCase; - -import org.apache.poi.xwpf.XWPFTestDataSamples; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFonts; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTLatentStyles; +import java.util.List; + +import junit.framework.TestCase; +import org.apache.poi.xwpf.XWPFTestDataSamples; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFonts; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTLatentStyles; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTLsdException; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTStyle; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTStyles; @@ -33,69 +32,69 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.STStyleType; public class TestXWPFStyles extends TestCase { -// protected void setUp() throws Exception { -// super.setUp(); -// } - - public void testGetUsedStyles() throws IOException{ - XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("Styles.docx"); - List testUsedStyleList = new ArrayList(); - XWPFStyles styles = sampleDoc.getStyles(); - XWPFStyle style = styles.getStyle("berschrift1"); - testUsedStyleList.add(style); - testUsedStyleList.add(styles.getStyle("Standard")); - testUsedStyleList.add(styles.getStyle("berschrift1Zchn")); - testUsedStyleList.add(styles.getStyle("Absatz-Standardschriftart")); - style.hasSameName(style); - - List usedStyleList = styles.getUsedStyleList(style); - assertEquals(usedStyleList, testUsedStyleList); - - - } - - public void testAddStylesToDocument() throws IOException{ - XWPFDocument docOut = new XWPFDocument(); - XWPFStyles styles = docOut.createStyles(); - - String strStyleId = "headline1"; - CTStyle ctStyle = CTStyle.Factory.newInstance(); - - ctStyle.setStyleId(strStyleId); - XWPFStyle s = new XWPFStyle(ctStyle); - styles.addStyle(s); - - assertTrue(styles.styleExist(strStyleId)); - - XWPFDocument docIn = XWPFTestDataSamples.writeOutAndReadBack(docOut); - - styles = docIn.getStyles(); - assertTrue(styles.styleExist(strStyleId)); - } - - /** - * Bug #52449 - We should be able to write a file containing - * both regular and glossary styles without error - */ - public void test52449() throws Exception { - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("52449.docx"); - XWPFStyles styles = doc.getStyles(); - assertNotNull(styles); - - XWPFDocument docIn = XWPFTestDataSamples.writeOutAndReadBack(doc); - styles = docIn.getStyles(); - assertNotNull(styles); - } - - - /** - * YK: tests below don't make much sense, - * they exist only to copy xml beans to pi-ooxml-schemas.jar - */ - public void testLanguages(){ - XWPFDocument docOut = new XWPFDocument(); - XWPFStyles styles = docOut.createStyles(); - styles.setEastAsia("Chinese"); +// protected void setUp() throws Exception { +// super.setUp(); +// } + + public void testGetUsedStyles() throws IOException { + XWPFDocument sampleDoc = XWPFTestDataSamples.openSampleDocument("Styles.docx"); + List testUsedStyleList = new ArrayList(); + XWPFStyles styles = sampleDoc.getStyles(); + XWPFStyle style = styles.getStyle("berschrift1"); + testUsedStyleList.add(style); + testUsedStyleList.add(styles.getStyle("Standard")); + testUsedStyleList.add(styles.getStyle("berschrift1Zchn")); + testUsedStyleList.add(styles.getStyle("Absatz-Standardschriftart")); + style.hasSameName(style); + + List usedStyleList = styles.getUsedStyleList(style); + assertEquals(usedStyleList, testUsedStyleList); + + + } + + public void testAddStylesToDocument() throws IOException { + XWPFDocument docOut = new XWPFDocument(); + XWPFStyles styles = docOut.createStyles(); + + String strStyleId = "headline1"; + CTStyle ctStyle = CTStyle.Factory.newInstance(); + + ctStyle.setStyleId(strStyleId); + XWPFStyle s = new XWPFStyle(ctStyle); + styles.addStyle(s); + + assertTrue(styles.styleExist(strStyleId)); + + XWPFDocument docIn = XWPFTestDataSamples.writeOutAndReadBack(docOut); + + styles = docIn.getStyles(); + assertTrue(styles.styleExist(strStyleId)); + } + + /** + * Bug #52449 - We should be able to write a file containing + * both regular and glossary styles without error + */ + public void test52449() throws Exception { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("52449.docx"); + XWPFStyles styles = doc.getStyles(); + assertNotNull(styles); + + XWPFDocument docIn = XWPFTestDataSamples.writeOutAndReadBack(doc); + styles = docIn.getStyles(); + assertNotNull(styles); + } + + + /** + * YK: tests below don't make much sense, + * they exist only to copy xml beans to pi-ooxml-schemas.jar + */ + public void testLanguages() { + XWPFDocument docOut = new XWPFDocument(); + XWPFStyles styles = docOut.createStyles(); + styles.setEastAsia("Chinese"); styles.setSpellingLanguage("English"); @@ -116,82 +115,82 @@ public class TestXWPFStyles extends TestCase { CTLsdException ex = latentStyles.addNewLsdException(); ex.setName("ex1"); XWPFLatentStyles ls = new XWPFLatentStyles(latentStyles); - assertEquals(true, ls.isLatentStyle("ex1")); - assertEquals(false, ls.isLatentStyle("notex1")); - } - - public void testSetStyles_Bug57254() throws IOException { - XWPFDocument docOut = new XWPFDocument(); - XWPFStyles styles = docOut.createStyles(); + assertEquals(true, ls.isLatentStyle("ex1")); + assertEquals(false, ls.isLatentStyle("notex1")); + } + + public void testSetStyles_Bug57254() throws IOException { + XWPFDocument docOut = new XWPFDocument(); + XWPFStyles styles = docOut.createStyles(); CTStyles ctStyles = CTStyles.Factory.newInstance(); String strStyleId = "headline1"; CTStyle ctStyle = ctStyles.addNewStyle(); + + ctStyle.setStyleId(strStyleId); + styles.setStyles(ctStyles); + + assertTrue(styles.styleExist(strStyleId)); + + XWPFDocument docIn = XWPFTestDataSamples.writeOutAndReadBack(docOut); - ctStyle.setStyleId(strStyleId); - styles.setStyles(ctStyles); - - assertTrue(styles.styleExist(strStyleId)); - - XWPFDocument docIn = XWPFTestDataSamples.writeOutAndReadBack(docOut); - - styles = docIn.getStyles(); - assertTrue(styles.styleExist(strStyleId)); - } - - public void testEasyAccessToStyles() throws IOException { - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("SampleDoc.docx"); - XWPFStyles styles = doc.getStyles(); - assertNotNull(styles); - - // Has 3 paragraphs on page one, a break, and 3 on page 2 - assertEquals(7, doc.getParagraphs().size()); - - // Check the first three have no run styles, just default paragraph style - for (int i=0; i<3; i++) { - XWPFParagraph p = doc.getParagraphs().get(i); - assertEquals(null, p.getStyle()); - assertEquals(null, p.getStyleID()); - assertEquals(1, p.getRuns().size()); - - XWPFRun r = p.getRuns().get(0); - assertEquals(null, r.getColor()); - assertEquals(null, r.getFontFamily()); - assertEquals(null, r.getFontName()); - assertEquals(-1, r.getFontSize()); - } - - // On page two, has explicit styles, but on runs not on - // the paragraph itself - for (int i=4; i<7; i++) { - XWPFParagraph p = doc.getParagraphs().get(i); - assertEquals(null, p.getStyle()); - assertEquals(null, p.getStyleID()); - assertEquals(1, p.getRuns().size()); - - XWPFRun r = p.getRuns().get(0); - assertEquals("Arial Black", r.getFontFamily()); - assertEquals("Arial Black", r.getFontName()); - assertEquals(16, r.getFontSize()); - assertEquals("548DD4", r.getColor()); - } - - // Check the document styles - // Should have a style defined for each type - assertEquals(4, styles.getNumberOfStyles()); + styles = docIn.getStyles(); + assertTrue(styles.styleExist(strStyleId)); + } + + public void testEasyAccessToStyles() throws IOException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("SampleDoc.docx"); + XWPFStyles styles = doc.getStyles(); + assertNotNull(styles); + + // Has 3 paragraphs on page one, a break, and 3 on page 2 + assertEquals(7, doc.getParagraphs().size()); + + // Check the first three have no run styles, just default paragraph style + for (int i = 0; i < 3; i++) { + XWPFParagraph p = doc.getParagraphs().get(i); + assertEquals(null, p.getStyle()); + assertEquals(null, p.getStyleID()); + assertEquals(1, p.getRuns().size()); + + XWPFRun r = p.getRuns().get(0); + assertEquals(null, r.getColor()); + assertEquals(null, r.getFontFamily()); + assertEquals(null, r.getFontName()); + assertEquals(-1, r.getFontSize()); + } + + // On page two, has explicit styles, but on runs not on + // the paragraph itself + for (int i = 4; i < 7; i++) { + XWPFParagraph p = doc.getParagraphs().get(i); + assertEquals(null, p.getStyle()); + assertEquals(null, p.getStyleID()); + assertEquals(1, p.getRuns().size()); + + XWPFRun r = p.getRuns().get(0); + assertEquals("Arial Black", r.getFontFamily()); + assertEquals("Arial Black", r.getFontName()); + assertEquals(16, r.getFontSize()); + assertEquals("548DD4", r.getColor()); + } + + // Check the document styles + // Should have a style defined for each type + assertEquals(4, styles.getNumberOfStyles()); assertNotNull(styles.getStyle("Normal")); - assertNotNull(styles.getStyle("DefaultParagraphFont")); - assertNotNull(styles.getStyle("TableNormal")); - assertNotNull(styles.getStyle("NoList")); - - // We can't do much yet with latent styles - assertEquals(137, styles.getLatentStyles().getNumberOfStyles()); - - // Check the default styles - assertNotNull(styles.getDefaultRunStyle()); - assertNotNull(styles.getDefaultParagraphStyle()); - - assertEquals(11, styles.getDefaultRunStyle().getFontSize()); - assertEquals(200, styles.getDefaultParagraphStyle().getSpacingAfter()); - } + assertNotNull(styles.getStyle("DefaultParagraphFont")); + assertNotNull(styles.getStyle("TableNormal")); + assertNotNull(styles.getStyle("NoList")); + + // We can't do much yet with latent styles + assertEquals(137, styles.getLatentStyles().getNumberOfStyles()); + + // Check the default styles + assertNotNull(styles.getDefaultRunStyle()); + assertNotNull(styles.getDefaultParagraphStyle()); + + assertEquals(11, styles.getDefaultRunStyle().getFontSize()); + assertEquals(200, styles.getDefaultParagraphStyle().getSpacingAfter()); + } } diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTable.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTable.java index 7d185637f..6f85a05cf 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTable.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTable.java @@ -17,13 +17,12 @@ package org.apache.poi.xwpf.usermodel; import java.math.BigInteger; -import java.util.List; - -import junit.framework.TestCase; - -import org.apache.poi.xwpf.XWPFTestDataSamples; -import org.apache.poi.xwpf.usermodel.XWPFTable.XWPFBorderType; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP; +import java.util.List; + +import junit.framework.TestCase; +import org.apache.poi.xwpf.XWPFTestDataSamples; +import org.apache.poi.xwpf.usermodel.XWPFTable.XWPFBorderType; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl; @@ -122,13 +121,13 @@ public class TestXWPFTable extends TestCase { assertEquals(1, xtab.getCTTbl().getTrArray(0).sizeOfTcArray()); } - - public void testSetGetWidth() { - XWPFDocument doc = new XWPFDocument(); - - CTTbl table = CTTbl.Factory.newInstance(); - table.addNewTblPr().addNewTblW().setW(new BigInteger("1000")); - + + public void testSetGetWidth() { + XWPFDocument doc = new XWPFDocument(); + + CTTbl table = CTTbl.Factory.newInstance(); + table.addNewTblPr().addNewTblW().setW(new BigInteger("1000")); + XWPFTable xtab = new XWPFTable(table, doc); assertEquals(1000, xtab.getWidth()); @@ -146,20 +145,20 @@ public class TestXWPFTable extends TestCase { XWPFTableRow row = xtab.createRow(); row.setHeight(20); assertEquals(20, row.getHeight()); - } - - public void testSetGetMargins() { - // instantiate the following class so it'll get picked up by - // the XmlBean process and added to the jar file. it's required - // for the following XWPFTable methods. - CTTblCellMar ctm = CTTblCellMar.Factory.newInstance(); - assertNotNull(ctm); - // create a table - XWPFDocument doc = new XWPFDocument(); - CTTbl ctTable = CTTbl.Factory.newInstance(); - XWPFTable table = new XWPFTable(ctTable, doc); - // set margins - table.setCellMargins(50, 50, 250, 450); + } + + public void testSetGetMargins() { + // instantiate the following class so it'll get picked up by + // the XmlBean process and added to the jar file. it's required + // for the following XWPFTable methods. + CTTblCellMar ctm = CTTblCellMar.Factory.newInstance(); + assertNotNull(ctm); + // create a table + XWPFDocument doc = new XWPFDocument(); + CTTbl ctTable = CTTbl.Factory.newInstance(); + XWPFTable table = new XWPFTable(ctTable, doc); + // set margins + table.setCellMargins(50, 50, 250, 450); // get margin components int t = table.getCellMarginTop(); assertEquals(50, t); @@ -169,22 +168,22 @@ public class TestXWPFTable extends TestCase { assertEquals(250, b); int r = table.getCellMarginRight(); assertEquals(450, r); - } - - public void testSetGetHBorders() { - // instantiate the following classes so they'll get picked up by - // the XmlBean process and added to the jar file. they are required - // for the following XWPFTable methods. - CTTblBorders cttb = CTTblBorders.Factory.newInstance(); - assertNotNull(cttb); - STBorder stb = STBorder.Factory.newInstance(); - assertNotNull(stb); - // create a table - XWPFDocument doc = new XWPFDocument(); - CTTbl ctTable = CTTbl.Factory.newInstance(); - XWPFTable table = new XWPFTable(ctTable, doc); - // set inside horizontal border - table.setInsideHBorder(XWPFBorderType.SINGLE, 4, 0, "FF0000"); + } + + public void testSetGetHBorders() { + // instantiate the following classes so they'll get picked up by + // the XmlBean process and added to the jar file. they are required + // for the following XWPFTable methods. + CTTblBorders cttb = CTTblBorders.Factory.newInstance(); + assertNotNull(cttb); + STBorder stb = STBorder.Factory.newInstance(); + assertNotNull(stb); + // create a table + XWPFDocument doc = new XWPFDocument(); + CTTbl ctTable = CTTbl.Factory.newInstance(); + XWPFTable table = new XWPFTable(ctTable, doc); + // set inside horizontal border + table.setInsideHBorder(XWPFBorderType.SINGLE, 4, 0, "FF0000"); // get inside horizontal border components int s = table.getInsideHBorderSize(); assertEquals(4, s); @@ -194,26 +193,26 @@ public class TestXWPFTable extends TestCase { assertEquals("FF0000", clr); XWPFBorderType bt = table.getInsideHBorderType(); assertEquals(XWPFBorderType.SINGLE, bt); - } - - public void testSetGetVBorders() { - // create a table - XWPFDocument doc = new XWPFDocument(); - CTTbl ctTable = CTTbl.Factory.newInstance(); - XWPFTable table = new XWPFTable(ctTable, doc); + } + + public void testSetGetVBorders() { + // create a table + XWPFDocument doc = new XWPFDocument(); + CTTbl ctTable = CTTbl.Factory.newInstance(); + XWPFTable table = new XWPFTable(ctTable, doc); // set inside vertical border table.setInsideVBorder(XWPFBorderType.DOUBLE, 4, 0, "00FF00"); // get inside vertical border components XWPFBorderType bt = table.getInsideVBorderType(); assertEquals(XWPFBorderType.DOUBLE, bt); int sz = table.getInsideVBorderSize(); - assertEquals(4, sz); - int sp = table.getInsideVBorderSpace(); - assertEquals(0, sp); - String clr = table.getInsideVBorderColor(); - assertEquals("00FF00", clr); - } - + assertEquals(4, sz); + int sp = table.getInsideVBorderSpace(); + assertEquals(0, sp); + String clr = table.getInsideVBorderColor(); + assertEquals("00FF00", clr); + } + public void testSetGetRowBandSize() { XWPFDocument doc = new XWPFDocument(); CTTbl ctTable = CTTbl.Factory.newInstance(); @@ -230,32 +229,30 @@ public class TestXWPFTable extends TestCase { table.setColBandSize(16); int sz = table.getColBandSize(); assertEquals(16, sz); - } - - public void testCreateTable() throws Exception { - // open an empty document - XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx"); - - // create a table with 5 rows and 7 columns - int noRows = 5; - int noCols = 7; - XWPFTable table = doc.createTable(noRows,noCols); - - // assert the table is empty - List rows = table.getRows(); - assertEquals("Table has less rows than requested.", noRows, rows.size()); - for (XWPFTableRow xwpfRow : rows) - { - assertNotNull(xwpfRow); - for (int i = 0 ; i < 7 ; i++) - { - XWPFTableCell xwpfCell = xwpfRow.getCell(i); - assertNotNull(xwpfCell); - assertEquals("Empty cells should not have one paragraph.",1,xwpfCell.getParagraphs().size()); - xwpfCell = xwpfRow.getCell(i); - assertEquals("Calling 'getCell' must not modify cells content.",1,xwpfCell.getParagraphs().size()); - } - } - doc.getPackage().revert(); - } + } + + public void testCreateTable() throws Exception { + // open an empty document + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx"); + + // create a table with 5 rows and 7 columns + int noRows = 5; + int noCols = 7; + XWPFTable table = doc.createTable(noRows, noCols); + + // assert the table is empty + List rows = table.getRows(); + assertEquals("Table has less rows than requested.", noRows, rows.size()); + for (XWPFTableRow xwpfRow : rows) { + assertNotNull(xwpfRow); + for (int i = 0; i < 7; i++) { + XWPFTableCell xwpfCell = xwpfRow.getCell(i); + assertNotNull(xwpfCell); + assertEquals("Empty cells should not have one paragraph.", 1, xwpfCell.getParagraphs().size()); + xwpfCell = xwpfRow.getCell(i); + assertEquals("Calling 'getCell' must not modify cells content.", 1, xwpfCell.getParagraphs().size()); + } + } + doc.getPackage().revert(); + } } \ No newline at end of file diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTableCell.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTableCell.java index 76dfe3822..34d54c041 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTableCell.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTableCell.java @@ -17,71 +17,80 @@ * ==================================================================== */ -package org.apache.poi.xwpf.usermodel; - -import junit.framework.TestCase; - -import org.apache.poi.xwpf.usermodel.XWPFTableCell.XWPFVertAlign; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.*; - -public class TestXWPFTableCell extends TestCase { - - @Override - protected void setUp() throws Exception { - super.setUp(); - } - - public void testSetGetVertAlignment() throws Exception { - // instantiate the following classes so they'll get picked up by - // the XmlBean process and added to the jar file. they are required - // for the following XWPFTableCell methods. - CTShd ctShd = CTShd.Factory.newInstance(); - assertNotNull(ctShd); - CTVerticalJc ctVjc = CTVerticalJc.Factory.newInstance(); - assertNotNull(ctVjc); - STShd stShd = STShd.Factory.newInstance(); - assertNotNull(stShd); - STVerticalJc stVjc = STVerticalJc.Factory.newInstance(); - assertNotNull(stVjc); - - // create a table - XWPFDocument doc = new XWPFDocument(); - CTTbl ctTable = CTTbl.Factory.newInstance(); - XWPFTable table = new XWPFTable(ctTable, doc); - // table has a single row by default; grab it - XWPFTableRow tr = table.getRow(0); +package org.apache.poi.xwpf.usermodel; + +import junit.framework.TestCase; +import org.apache.poi.xwpf.usermodel.XWPFTableCell.XWPFVertAlign; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHMerge; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTShd; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcBorders; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTVMerge; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTVerticalJc; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STShd; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.STVerticalJc; + +public class TestXWPFTableCell extends TestCase { + + @Override + protected void setUp() throws Exception { + super.setUp(); + } + + public void testSetGetVertAlignment() throws Exception { + // instantiate the following classes so they'll get picked up by + // the XmlBean process and added to the jar file. they are required + // for the following XWPFTableCell methods. + CTShd ctShd = CTShd.Factory.newInstance(); + assertNotNull(ctShd); + CTVerticalJc ctVjc = CTVerticalJc.Factory.newInstance(); + assertNotNull(ctVjc); + STShd stShd = STShd.Factory.newInstance(); + assertNotNull(stShd); + STVerticalJc stVjc = STVerticalJc.Factory.newInstance(); + assertNotNull(stVjc); + + // create a table + XWPFDocument doc = new XWPFDocument(); + CTTbl ctTable = CTTbl.Factory.newInstance(); + XWPFTable table = new XWPFTable(ctTable, doc); + // table has a single row by default; grab it + XWPFTableRow tr = table.getRow(0); assertNotNull(tr); // row has a single cell by default; grab it XWPFTableCell cell = tr.getCell(0); - cell.setVerticalAlignment(XWPFVertAlign.BOTH); - XWPFVertAlign al = cell.getVerticalAlignment(); - assertEquals(XWPFVertAlign.BOTH, al); - } - - public void testSetGetColor() throws Exception { - // create a table - XWPFDocument doc = new XWPFDocument(); - CTTbl ctTable = CTTbl.Factory.newInstance(); - XWPFTable table = new XWPFTable(ctTable, doc); - // table has a single row by default; grab it - XWPFTableRow tr = table.getRow(0); + cell.setVerticalAlignment(XWPFVertAlign.BOTH); + XWPFVertAlign al = cell.getVerticalAlignment(); + assertEquals(XWPFVertAlign.BOTH, al); + } + + public void testSetGetColor() throws Exception { + // create a table + XWPFDocument doc = new XWPFDocument(); + CTTbl ctTable = CTTbl.Factory.newInstance(); + XWPFTable table = new XWPFTable(ctTable, doc); + // table has a single row by default; grab it + XWPFTableRow tr = table.getRow(0); assertNotNull(tr); // row has a single cell by default; grab it XWPFTableCell cell = tr.getCell(0); - cell.setColor("F0000F"); - String clr = cell.getColor(); - assertEquals("F0000F", clr); - } - - /** - * ensure that CTHMerge & CTTcBorders go in poi-ooxml.jar - */ - public void test54099(){ - XWPFDocument doc = new XWPFDocument(); - CTTbl ctTable = CTTbl.Factory.newInstance(); - XWPFTable table = new XWPFTable(ctTable, doc); + cell.setColor("F0000F"); + String clr = cell.getColor(); + assertEquals("F0000F", clr); + } + + /** + * ensure that CTHMerge & CTTcBorders go in poi-ooxml.jar + */ + public void test54099() { + XWPFDocument doc = new XWPFDocument(); + CTTbl ctTable = CTTbl.Factory.newInstance(); + XWPFTable table = new XWPFTable(ctTable, doc); XWPFTableRow tr = table.getRow(0); XWPFTableCell cell = tr.getCell(0); diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTableRow.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTableRow.java index abdf1688c..b01f8e9dc 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTableRow.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTableRow.java @@ -15,55 +15,54 @@ limitations under the License. ==================================================================== */ -package org.apache.poi.xwpf.usermodel; - -import junit.framework.TestCase; - -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl; - -public class TestXWPFTableRow extends TestCase { - - @Override - protected void setUp() throws Exception { - super.setUp(); - } - - public void testCreateRow() throws Exception { - CTRow ctRow = CTRow.Factory.newInstance(); - assertNotNull(ctRow); - } - - @Override - protected void tearDown() throws Exception { - super.tearDown(); - } - - public void testSetGetCantSplitRow() { - // create a table - XWPFDocument doc = new XWPFDocument(); - CTTbl ctTable = CTTbl.Factory.newInstance(); - XWPFTable table = new XWPFTable(ctTable, doc); - // table has a single row by default; grab it - XWPFTableRow tr = table.getRow(0); - assertNotNull(tr); - - tr.setCantSplitRow(true); - boolean isCant = tr.isCantSplitRow(); - assert(isCant); - } - - public void testSetGetRepeatHeader() { - // create a table - XWPFDocument doc = new XWPFDocument(); - CTTbl ctTable = CTTbl.Factory.newInstance(); - XWPFTable table = new XWPFTable(ctTable, doc); - // table has a single row by default; grab it - XWPFTableRow tr = table.getRow(0); - assertNotNull(tr); - - tr.setRepeatHeader(true); - boolean isRpt = tr.isRepeatHeader(); - assert(isRpt); - } -} +package org.apache.poi.xwpf.usermodel; + +import junit.framework.TestCase; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow; +import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl; + +public class TestXWPFTableRow extends TestCase { + + @Override + protected void setUp() throws Exception { + super.setUp(); + } + + public void testCreateRow() throws Exception { + CTRow ctRow = CTRow.Factory.newInstance(); + assertNotNull(ctRow); + } + + @Override + protected void tearDown() throws Exception { + super.tearDown(); + } + + public void testSetGetCantSplitRow() { + // create a table + XWPFDocument doc = new XWPFDocument(); + CTTbl ctTable = CTTbl.Factory.newInstance(); + XWPFTable table = new XWPFTable(ctTable, doc); + // table has a single row by default; grab it + XWPFTableRow tr = table.getRow(0); + assertNotNull(tr); + + tr.setCantSplitRow(true); + boolean isCant = tr.isCantSplitRow(); + assert (isCant); + } + + public void testSetGetRepeatHeader() { + // create a table + XWPFDocument doc = new XWPFDocument(); + CTTbl ctTable = CTTbl.Factory.newInstance(); + XWPFTable table = new XWPFTable(ctTable, doc); + // table has a single row by default; grab it + XWPFTableRow tr = table.getRow(0); + assertNotNull(tr); + + tr.setRepeatHeader(true); + boolean isRpt = tr.isRepeatHeader(); + assert (isRpt); + } +} From 82d190758416326e7c72c30f87906e18372f577b Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 31 May 2015 20:10:08 +0000 Subject: [PATCH 176/301] Set version to 3.13-beta1 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1682784 13f79535-47bb-0310-9956-ffa450edef68 --- build.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.xml b/build.xml index 95558d384..9ab8d9ccd 100644 --- a/build.xml +++ b/build.xml @@ -47,8 +47,8 @@ under the License. The Apache POI project Ant build. - - + + From c49278ebaccf769767e155127d56535dd79ae2e6 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 31 May 2015 20:11:20 +0000 Subject: [PATCH 177/301] List more targets in help, make jar-src work standalone git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1682785 13f79535-47bb-0310-9956-ffa450edef68 --- build.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build.xml b/build.xml index 9ab8d9ccd..c1b976776 100644 --- a/build.xml +++ b/build.xml @@ -359,6 +359,8 @@ under the License. - compile Compile all files from main, ooxml and scratchpad - test Run all unit tests from main, ooxml and scratchpad - jar Produce jar files + - jar-src Produce source-jar files + - assemble Produce the zipped distribution files - site Generate all documentation (Requires Apache Forrest) - dist Create a distribution (Requires Apache Forrest) @@ -1408,7 +1410,7 @@ under the License. - + From 493511bbdc0079bab3922666c411f958c2bd877b Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 31 May 2015 20:11:28 +0000 Subject: [PATCH 178/301] Bug 57904: Add full source build from dist-packages to CI builds git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1682786 13f79535-47bb-0310-9956-ffa450edef68 --- src/integrationtest/build.xml | 45 +++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/integrationtest/build.xml diff --git a/src/integrationtest/build.xml b/src/integrationtest/build.xml new file mode 100644 index 000000000..1a5e94047 --- /dev/null +++ b/src/integrationtest/build.xml @@ -0,0 +1,45 @@ + + + + Test-Ant file which verifies that the Apache POI distribution build sources can be compiled successfully. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 44821b1f39ec30c5422669e4e9aebf322cff6558 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 31 May 2015 21:02:39 +0000 Subject: [PATCH 179/301] Add missing license header git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1682794 13f79535-47bb-0310-9956-ffa450edef68 --- src/integrationtest/build.xml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/integrationtest/build.xml b/src/integrationtest/build.xml index 1a5e94047..21d327a12 100644 --- a/src/integrationtest/build.xml +++ b/src/integrationtest/build.xml @@ -1,4 +1,22 @@ + Test-Ant file which verifies that the Apache POI distribution build sources can be compiled successfully. From 7915b3ce38c2979eff4d1ffb163c4897bc288ac7 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Sun, 31 May 2015 21:18:11 +0000 Subject: [PATCH 180/301] =?UTF-8?q?Patch=20from=20Ren=C3=A9=20Scheibe=20fr?= =?UTF-8?q?om=20bug=20#57512=20-=20Fix=20potential=20NPE=20in=20DateUtil?= =?UTF-8?q?=20for=20invalid=20dates?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1682796 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/ss/usermodel/DateUtil.java | 14 +-- .../apache/poi/ss/usermodel/TestDateUtil.java | 92 +++++++++++++++++++ 2 files changed, 99 insertions(+), 7 deletions(-) create mode 100644 src/testcases/org/apache/poi/ss/usermodel/TestDateUtil.java diff --git a/src/java/org/apache/poi/ss/usermodel/DateUtil.java b/src/java/org/apache/poi/ss/usermodel/DateUtil.java index 31dbce424..ca1d7d465 100644 --- a/src/java/org/apache/poi/ss/usermodel/DateUtil.java +++ b/src/java/org/apache/poi/ss/usermodel/DateUtil.java @@ -146,7 +146,7 @@ public class DateUtil { * @return Java representation of the date, or null if date is not a valid Excel date */ public static Date getJavaDate(double date, TimeZone tz) { - return getJavaDate(date, false, tz); + return getJavaDate(date, false, tz, false); } /** * Given an Excel date with using 1900 date windowing, and @@ -166,9 +166,9 @@ public class DateUtil { * @see java.util.TimeZone */ public static Date getJavaDate(double date) { - return getJavaDate(date, (TimeZone)null); + return getJavaDate(date, false, null, false); } - + /** * Given an Excel date with either 1900 or 1904 date windowing, * converts it to a java.util.Date. @@ -185,7 +185,7 @@ public class DateUtil { * @return Java representation of the date, or null if date is not a valid Excel date */ public static Date getJavaDate(double date, boolean use1904windowing, TimeZone tz) { - return getJavaCalendar(date, use1904windowing, tz, false).getTime(); + return getJavaDate(date, use1904windowing, tz, false); } /** @@ -205,7 +205,8 @@ public class DateUtil { * @return Java representation of the date, or null if date is not a valid Excel date */ public static Date getJavaDate(double date, boolean use1904windowing, TimeZone tz, boolean roundSeconds) { - return getJavaCalendar(date, use1904windowing, tz, roundSeconds).getTime(); + Calendar calendar = getJavaCalendar(date, use1904windowing, tz, roundSeconds); + return calendar == null ? null : calendar.getTime(); } /** @@ -228,10 +229,9 @@ public class DateUtil { * @see java.util.TimeZone */ public static Date getJavaDate(double date, boolean use1904windowing) { - return getJavaCalendar(date, use1904windowing, null, false).getTime(); + return getJavaDate(date, use1904windowing, null, false); } - public static void setCalendar(Calendar calendar, int wholeDays, int millisecondsInDay, boolean use1904windowing, boolean roundSeconds) { int startYear = 1900; diff --git a/src/testcases/org/apache/poi/ss/usermodel/TestDateUtil.java b/src/testcases/org/apache/poi/ss/usermodel/TestDateUtil.java new file mode 100644 index 000000000..870cd9cb3 --- /dev/null +++ b/src/testcases/org/apache/poi/ss/usermodel/TestDateUtil.java @@ -0,0 +1,92 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.ss.usermodel; + +import static org.junit.Assert.assertEquals; + +import java.util.Calendar; +import java.util.Date; +import java.util.TimeZone; + +import org.junit.Test; + +public class TestDateUtil { + + @Test + public void getJavaDate_InvalidValue() { + double dateValue = -1; + TimeZone tz = TimeZone.getDefault(); + boolean use1904windowing = false; + boolean roundSeconds = false; + + assertEquals(null, DateUtil.getJavaDate(dateValue)); + assertEquals(null, DateUtil.getJavaDate(dateValue, tz)); + assertEquals(null, DateUtil.getJavaDate(dateValue, use1904windowing)); + assertEquals(null, DateUtil.getJavaDate(dateValue, use1904windowing, tz)); + assertEquals(null, DateUtil.getJavaDate(dateValue, use1904windowing, tz, roundSeconds)); + } + + @Test + public void getJavaDate_ValidValue() { + double dateValue = 0; + TimeZone tz = TimeZone.getDefault(); + boolean use1904windowing = false; + boolean roundSeconds = false; + + Calendar calendar = Calendar.getInstance(tz); + calendar.set(1900, 0, 0, 0, 0, 0); + calendar.set(Calendar.MILLISECOND, 0); + Date date = calendar.getTime(); + + assertEquals(date, DateUtil.getJavaDate(dateValue)); + assertEquals(date, DateUtil.getJavaDate(dateValue, tz)); + assertEquals(date, DateUtil.getJavaDate(dateValue, use1904windowing)); + assertEquals(date, DateUtil.getJavaDate(dateValue, use1904windowing, tz)); + assertEquals(date, DateUtil.getJavaDate(dateValue, use1904windowing, tz, roundSeconds)); + } + + @Test + public void getJavaCalendar_InvalidValue() { + double dateValue = -1; + TimeZone tz = TimeZone.getDefault(); + boolean use1904windowing = false; + boolean roundSeconds = false; + + assertEquals(null, DateUtil.getJavaCalendar(dateValue)); + assertEquals(null, DateUtil.getJavaCalendar(dateValue, use1904windowing)); + assertEquals(null, DateUtil.getJavaCalendar(dateValue, use1904windowing, tz)); + assertEquals(null, DateUtil.getJavaCalendar(dateValue, use1904windowing, tz, roundSeconds)); + } + + @Test + public void getJavaCalendar_ValidValue() { + double dateValue = 0; + TimeZone tz = TimeZone.getDefault(); + boolean use1904windowing = false; + boolean roundSeconds = false; + + Calendar calendar = Calendar.getInstance(tz); + calendar.set(1900, 0, 0, 0, 0, 0); + calendar.set(Calendar.MILLISECOND, 0); + + assertEquals(calendar, DateUtil.getJavaCalendar(dateValue)); + assertEquals(calendar, DateUtil.getJavaCalendar(dateValue, use1904windowing)); + assertEquals(calendar, DateUtil.getJavaCalendar(dateValue, use1904windowing, tz)); + assertEquals(calendar, DateUtil.getJavaCalendar(dateValue, use1904windowing, tz, roundSeconds)); + } +} From d3f93952e9b0c048a402ea9f03688f358598d05e Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 1 Jun 2015 20:49:53 +0000 Subject: [PATCH 181/301] Bug 53109: Correctly handle unicode strings in NameCommentRecord git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1682999 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/hssf/record/NameCommentRecord.java | 36 +++++++++++++----- .../apache/poi/hssf/usermodel/TestBugs.java | 20 ++++++++++ test-data/spreadsheet/53109.xls | Bin 0 -> 19456 bytes ..._SPO_files_maldives%20august%20october.xls | Bin 0 -> 198145 bytes 4 files changed, 46 insertions(+), 10 deletions(-) create mode 100644 test-data/spreadsheet/53109.xls create mode 100644 test-data/spreadsheet/com.aida-tour.www_SPO_files_maldives%20august%20october.xls diff --git a/src/java/org/apache/poi/hssf/record/NameCommentRecord.java b/src/java/org/apache/poi/hssf/record/NameCommentRecord.java index ed33c2d1f..6b3c8d0bd 100644 --- a/src/java/org/apache/poi/hssf/record/NameCommentRecord.java +++ b/src/java/org/apache/poi/hssf/record/NameCommentRecord.java @@ -62,17 +62,27 @@ public final class NameCommentRecord extends StandardRecord { out.writeShort(field_4_name_length); out.writeShort(field_5_comment_length); - out.writeByte(0); - StringUtil.putCompressedUnicode(field_6_name_text, out); - out.writeByte(0); - StringUtil.putCompressedUnicode(field_7_comment_text, out); + boolean isNameMultiByte = StringUtil.hasMultibyte(field_6_name_text); + out.writeByte(isNameMultiByte ? 1 : 0); + if (isNameMultiByte) { + StringUtil.putUnicodeLE(field_6_name_text, out); + } else { + StringUtil.putCompressedUnicode(field_6_name_text, out); + } + boolean isCommentMultiByte = StringUtil.hasMultibyte(field_7_comment_text); + out.writeByte(isCommentMultiByte ? 1 : 0); + if (isCommentMultiByte) { + StringUtil.putUnicodeLE(field_7_comment_text, out); + } else { + StringUtil.putCompressedUnicode(field_7_comment_text, out); + } } @Override protected int getDataSize() { return 18 // 4 shorts + 1 long + 2 spurious 'nul's - + field_6_name_text.length() - + field_7_comment_text.length(); + + (StringUtil.hasMultibyte(field_6_name_text) ? field_6_name_text.length()*2 : field_6_name_text.length()) + + (StringUtil.hasMultibyte(field_7_comment_text) ? field_7_comment_text.length()*2 : field_7_comment_text.length()); } /** @@ -86,10 +96,16 @@ public final class NameCommentRecord extends StandardRecord { final int field_4_name_length = in.readShort(); final int field_5_comment_length = in.readShort(); - in.readByte(); //spurious NUL - field_6_name_text = StringUtil.readCompressedUnicode(in, field_4_name_length); - in.readByte(); //spurious NUL - field_7_comment_text = StringUtil.readCompressedUnicode(in, field_5_comment_length); + if (in.readByte() == 0) { + field_6_name_text = StringUtil.readCompressedUnicode(in, field_4_name_length); + } else { + field_6_name_text = StringUtil.readUnicodeLE(in, field_4_name_length); + } + if (in.readByte() == 0) { + field_7_comment_text = StringUtil.readCompressedUnicode(in, field_5_comment_length); + } else { + field_7_comment_text = StringUtil.readUnicodeLE(in, field_5_comment_length); + } } /** diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java index df470f26c..659bb049b 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java @@ -2738,4 +2738,24 @@ public final class TestBugs extends BaseTestBugzillaIssues { } wb.close(); } + + @Test + public void test53109() throws IOException { + HSSFWorkbook wb = openSample("53109.xls"); + + Workbook wbBack = HSSFTestDataSamples.writeOutAndReadBack(wb); + assertNotNull(wbBack); + + wb.close(); + } + + @Test + public void test53109a() throws IOException { + HSSFWorkbook wb = openSample("com.aida-tour.www_SPO_files_maldives%20august%20october.xls"); + + Workbook wbBack = HSSFTestDataSamples.writeOutAndReadBack(wb); + assertNotNull(wbBack); + + wb.close(); + } } diff --git a/test-data/spreadsheet/53109.xls b/test-data/spreadsheet/53109.xls new file mode 100644 index 0000000000000000000000000000000000000000..08b4dfeeca167ca6bfc33582df33defbba7d44c4 GIT binary patch literal 19456 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

    cfYOTbBe#X=GV=A&( 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�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%0DJL91N6=eIoi(Az&PZjcD+}9 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 FzX2jQn4SOt literal 0 HcmV?d00001 From c580758b2c981397a3f22862ee84af3bae01dcea Mon Sep 17 00:00:00 2001 From: David North Date: Wed, 3 Jun 2015 12:50:10 +0000 Subject: [PATCH 182/301] Use a different arbitrary value for the ID of the comment shape type. This appears to prevent Excel >= 2010 from turning POI-written comments into the wrong shape (giant curved arrow). Fixes https://bz.apache.org/bugzilla/show_bug.cgi?id=55410 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1683315 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/poi/xssf/usermodel/XSSFVMLDrawing.java | 3 ++- .../org/apache/poi/xssf/usermodel/TestXSSFVMLDrawing.java | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFVMLDrawing.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFVMLDrawing.java index a1458662b..75f292fa6 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFVMLDrawing.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFVMLDrawing.java @@ -68,6 +68,7 @@ public final class XSSFVMLDrawing extends POIXMLDocumentPart { private static final QName QNAME_SHAPE_LAYOUT = new QName("urn:schemas-microsoft-com:office:office", "shapelayout"); private static final QName QNAME_SHAPE_TYPE = new QName("urn:schemas-microsoft-com:vml", "shapetype"); private static final QName QNAME_SHAPE = new QName("urn:schemas-microsoft-com:vml", "shape"); + private static final String COMMENT_SHAPE_TYPE_ID = "_x0000_t202"; // this ID value seems to have significance to Excel >= 2010; see https://issues.apache.org/bugzilla/show_bug.cgi?id=55409 /** * regexp to parse shape ids, in VML they have weird form of id="_x0000_s1026" @@ -190,7 +191,7 @@ public final class XSSFVMLDrawing extends POIXMLDocumentPart { _qnames.add(QNAME_SHAPE_LAYOUT); CTShapetype shapetype = CTShapetype.Factory.newInstance(); - _shapeTypeId = "_xssf_cell_comment"; + _shapeTypeId = COMMENT_SHAPE_TYPE_ID; shapetype.setId(_shapeTypeId); shapetype.setCoordsize("21600,21600"); shapetype.setSpt(202); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFVMLDrawing.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFVMLDrawing.java index 346abe079..5bb3acd0f 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFVMLDrawing.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFVMLDrawing.java @@ -54,14 +54,14 @@ public class TestXSSFVMLDrawing extends TestCase { assertEquals("21600,21600", type.getCoordsize()); assertEquals(202.0f, type.getSpt()); assertEquals("m,l,21600r21600,l21600,xe", type.getPath2()); - assertEquals("_xssf_cell_comment", type.getId()); + assertEquals("_x0000_t202", type.getId()); assertEquals(STTrueFalse.T, type.getPathArray(0).getGradientshapeok()); assertEquals(STConnectType.RECT, type.getPathArray(0).getConnecttype()); CTShape shape = vml.newCommentShape(); assertEquals(3, items.size()); assertSame(items.get(2), shape); - assertEquals("#_xssf_cell_comment", shape.getType()); + assertEquals("#_x0000_t202", shape.getType()); assertEquals("position:absolute; visibility:hidden", shape.getStyle()); assertEquals("#ffffe1", shape.getFillcolor()); assertEquals(STInsetMode.AUTO, shape.getInsetmode()); From 3b01cd9b1061d5965567edb7b185041a22d87b9c Mon Sep 17 00:00:00 2001 From: David North Date: Wed, 3 Jun 2015 13:09:20 +0000 Subject: [PATCH 183/301] Add my PGP key to the list. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1683317 13f79535-47bb-0310-9956-ffa450edef68 --- KEYS | 290 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 290 insertions(+) diff --git a/KEYS b/KEYS index 340f8504d..ca2fbd003 100644 --- a/KEYS +++ b/KEYS @@ -1796,3 +1796,293 @@ qoiVaXWfFHwg8u4bSHunrzNja17GyaZHdCEmM9vFzlaqBkoLWCMwIcaKnX9stQJp FZwpzgut7DanaPcCDk7LMBbntaJwRC72M0qcj16SUAdAuGt1yQ== =0DjT -----END PGP PUBLIC KEY BLOCK----- + +pub 4096R/B4812553 2014-02-26 [expires: 2019-02-25] +uid David North +uid David North (Oxford CompSoc) +uid David North (ASF Committer ID) + + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1 + +mQINBFMOLVsBEADW2N1bQ6GFDDSbC+IKggdS/lwhaEo5Av4Z5B2es83A43boyJZ1 +bn9xfd5TriHubI6VBgjbuB0peoCZye3PzEz9cfZYXsPiAqZngWk95or0N+vwrGoI +9gJM6aBYjE06fxHZRTAi4ADPLW5sV0bT230/u1xpqg1lcko5eGV5sAjI9HaVdfvR +68gQdNVK6TciOeM2EQcTHlRd8D9D2/XTp9aCFynNaFoKmBTOsc+VlczmIgd+1jzW +qWcaGTkEtZKzAxUfxlWgO0xHjs3H4CGqtWWCqj8W1alkwIVHBeXIwHDoHlbmkXok +65jfeQd9tWzTHGXETU7bBbxksbwRlrJrutgolLW+/v9F1je2aG/BKMwOLjF7dk8+ +gvSKlu4PwoItGN0qraWsqAGDR4/bWLihqPluW+pUL544li702DUeZiVxFEb22yDb +p2oWdFafEFhQz4FxRCam/4bfVt6bGLGE8GEd1jeahgmpkIAcbAoI9UOFAVaoSWFv +AqYphVfONeZz7MMIcNlyHth5VAvQQF7/uBWCsNtlvBtVirR+nis+eEwoNRDwYx3N +OKu1GTFPMMHUauB0ORD2ywsFQkIjDbnQMNhwQoC49bs46vCusBb42qmOpjP0viVs +qGI3Ae78F4KEBpa5AVbYRbbicOPeV/tRrHFWMyXmH312898j29qO57e+awARAQAB +tB5EYXZpZCBOb3J0aCA8ZGF2aWRAZG5vcnRoLm5ldD6JAkAEEwEIACoCGwMFCQlm +AYAFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AFAlMOL4ECGQEACgkQ+bj6w7SBJVML +Mg//To6EADRjfp11ZGu3cARitfx67276xAkt017sxw76LBzHoF60RtPjcRBBRCYk +0P1URdip6nC2M7Ol151YdTUIfKNWDRzAUVgpWrGfUIRPUgClyO2boTijblS3heZS +gCKz9x3WwRn5elR3Qf6u/wZGIuHBjmh9Jwoa/c6G6ikIoLjoUvXBWR53FlLIpHIF +/q6mzwhXdCwohDsfDI7ckSuSv5yMJsYLZRpEKB3zLgWo4CQP6edaewBd0bVb/Uzy +/5aeolwEfwoNSJ2J4+tQ39U1vxPr1NLEALNl4qW4Gn2fSACnWyEjDHrLltDvolU/ +iLXjgb//9ge93vZUfZmH6vPkrt4TzOfar4wLHTgiEX8nKaOwiMU72wgSL1DLJgry +udf0zSIYDldm/Wy4ggywd/mSyp4oWR3pJFI926CyiQrnA4fSxKrE3yI4Pm5kZNBM +5fhDwtPEtp4F/7kLxGK6MCxyeL94x9QnZdp4FHyRcO3XCCMhfAKT3qLiuHpTiNOt +mOu3Ea1DsEVbSOw+gJzqEZN2ruB8z9DsOxNxlLsdW+sSQRSNgErnLlBLlkXpSawB +imhbwfOHKqZ6eoEqz9ufbrJjIkOEDbIbW93hpyG7zdKSkKsXLR9HbOZ7kgMgzPVi +KNAhc7axmvps55Jx7aXP7G+8c9d8iWhuwD9MemqvhRKyzeeJAj0EEwEIACcFAlMO +LVsCGwMFCQlmAYAFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQ+bj6w7SBJVPR +6A/9Gk3J6BV0IPuybnmxrkKUicPsIoXgRnzU9LF2TIC6mYJBjb3Tllw0kahsTwLa +vfXEEk971zushOUH/z/wLLgrQ8rzJq3RfbvWRMz9BurIJYGWCnkkINr+lURV0Od1 +IzilZlLuCWCh+WS8w4sJuoziF71Ick3Pf0DCpPIte6PMqBWerrbmXlRfYZgP+vrH +JZ6ZHUEkOVawuY91QRW5HKsM/8RDwgLP7zvXtt7BaVey0XW9pRVQM0fzYzW9wufc +B9DMQeampdXv2R3iXVDQRo86zCRo+7UrqEpBGNXBNhWozucw5eidJo28U+76fWng +7rpDrOPSOUWcg/IfWDrm+zrPyjX/9sFuyjP2w+/dsxmerYk4yXYOQaVHJYaBgAO4 +O11WsjhZZ0bvYgxqJjHs9WGfg7ZfuobzIK2Pl1ZwU0lAcePwuHTBTBFlI6wUxmhG +KM2V8vZUMopxUSw3AE4lWZV756ST8Tc9cVVllBg9eRGHdFN2NKullRzTvLMuUwLc +IGkL6h7VrPmQUhgjyHO4mWgE0or4bm7pHRjP+1D+dxTlr/OZUAiCMgxaBo749Mas +zgvDqcxJOtH/9J3dUeTzN8C1RoKPQPv1znmJ3OgpOKs0cNz1qNIQGQkYasl4awq3 +nPz7QUqcKeZgy/6KIInOPJ8ys2+R54hFhOj/NUBBZID8EX+IRgQQEQIABgUCUw4x +bwAKCRA7Ok8Kx55balZeAJ99U3htpjHcxLxLS9lkGT2+YiBIdgCbBLVVwOBCU7qt +mdHezw/Xp2oxxNKIRgQQEQgABgUCUxNB9AAKCRCgJ0huCLbaUCjLAJ9Iht8ctGWu +SiDFxodDIHmyJ2z8wACbBDGyGhDA5TVJphdJm9Qo1LYKgc2JBBwEEAEKAAYFAlMT +McUACgkQsAucyC163ywE0CAAtVzeWwkCwf5ISyWjXosLnbxohXvmq7uh6bdTVoxW +d1V882pi1UAxU/UZFhb7NSvLaz/hr6+WK0wldl27BF74d6j5rE/3r47KVeOEUuAw +g/J/tLEfzhWtficG13qnLWyf/iTyP6fCIaFRNHL5PK6Br8xZHS0YF9zRHaCutwTm +MHV5KinKktgA6Su7YmGwB3f1lirXxUa+RiGAkvg8tIs8Hn+V2x+FDD22QgW4FDh4 +CFYrzz8NsUiIkYawlIHQdnCkQqiFii7MZOG+EsJ86P0lfYbfJfxEY+4nI737YfXH +SCiWjDTiZG0Hkvrx3qbt0L+Ixydn3oGkrfP+ZngPBj6n7QkALAUFBA34+cylobOD +jb1nKGM32iqPx50GpaS3KH3WmqqXaR2+6SbUUdZvmwac6vQvtRRfEhVtWB9irXUS +wn218Ki2EgprAHwrsvLeMJYoR1U9v1UvSrFj5qtiagJYecxDhsM6ozHmcB2PKdE1 +VkIv2vPRzVsfuWeEFnPOSOODsV1Zu00AfceotvAEZd+VdXNkJ3MfWEy7VT52FnG7 +FntzqDXxGkYZLxK6zn0Qh6udvRz65Q3G0nd+USkAmhEBMTr1/La1LfMAibyUyiyL +0bTRHkjXQc8SpibduFzpcWyrMELVqt1PXgaqtujcjVoHwo00NgJIedBosHVuGBXW +PpUQx2DkTnIUn5Qkncf8SpgCCGFs6Z3qwcqrc6Pb1Sg6XQ6GpMTYMZO0yaLdSSrS +vl6wdiJAzvlP1haafInnNFAo6qgaGNgdiSr1r+SpYycFHORCdqimLax5ggOxh1Y+ +V5uZxDDvOSJQUNKO8bDfREke6gIsNRCj7hRutz9F2K566pu5Tn9UAiv1ZfqYxBub ++mkjkctRw61DlqHepJkY1KQTLBphVM9CAADzWPKGRVZtjeYyLNPBap2GbciBQgzr +/2UCCWAGraxpniCizgkFRPRFaOSp4p0p8DozR3/7xftLPXNgudUbRjxNlRX+uPj4 +0jSEJT1Yrc1/hKgOWvmP13WTbT9/8F2tT+Gd8DTLHa2pXMePOX/dPmF7g7IiEUo9 +Pmci3gFMd0MU1+tgjGZlFs771MZUBnq9rrsX6K5PcikE+UV354mTuF/GdL5Qvwbn +7DQ0Z88FQ4jTatPucEghTLnO9ahB+5ZlE9ri5hWTKRMZNkX0KlCcgcNpPTJ9Ya3e +vWUnuhPHmxq7jD0Fc8VLjiKMWSMMiqTrxdgit41ocZinCH54JKtYb41lsH55rx9q +8crmWdsIKC/Dru7h0MXQW0iU92eMOxiCbXuwNqnzYxWkhjjydhUXmOcufgzfh9Ry +S8zBC/rw5AkhmuMEZK9Ksskt7SvDPqdd0209JrHt+SA8G4kCHAQQAQIABgUCUxDx ++gAKCRC9U3Jvvaau2NoJEACzaTZ8rR1F8+pIy+JdUfQxmZ80CI2CMCjUt+WieiRz +3ZH2sgKqwx4T0c53n8938cwXmwdh5xG17sGWDS8VpXUQ3eq8nHPbc12zJFOWM+Ix +fUIT6zapz18m9x4BjfP78QovU5OyqeE0KtvfwXNvp0OjdoEs70WCaGdmAAcpOd1N +Einz71DOtDcvRdS7A6jqUwfohemu2iPGj7gvUoykb5gg3Nql4K1zQg+Ymo9RH8Bu +MA+ebOvwaRaozi9q1Gjg5erXsN+H9TivoMwRiAHdlfeETuGWTFJl0EhtXMHiUjpz +fA6UsR8LgRMehar8rcsWRY2x8oH6L7Wf2JLc+XnZhAe6wKij5BlbJrJBZc7FcoMJ +KqxGlgLnMDXL5nmHfaIxiJUU6qe9DSRvGyMB1rr9xxeHp3s9DVR8G6Zaub6ufa7k +8lfCKbJBru5UD/FrWPMNztiG8fgRg9krmU41ZgvhT5ksZmH5rcFgK7IOowiN9Bxg +tAclbURX6uNc8CYmWVkR1f+zFS2ChPEebyK+R/VZm0WH3Rz6tacWUtzxr1GryLUU +wTmxGnyXflD9ySAkjEO60NdwUpofeX9qMzza/sJPpxZsGmy3PHByS/AhK7wnPSlH +52o9BTVqwY9b6B+oOnswjccgoNyQmtQu84CnGlUKG0y40ho3F1DCHH/l4jrYaxsY +J4kCHAQQAQIABgUCUxHKygAKCRDABX5xTWlPsl7XEADlAVK6EiOs88azKcH6h/uY +luxi8F97MOEcyjKrfliRxc5Wt2Ry417ngVelhrIzZPoUi4iT8znazQ+GQWBHS1SY +51AEqPN0wrbLpMnhM7cHOZ+Yh8za/G8mIpXCInrsFoDsGTm6jBuwhsmD80HJ8ctq +7DTxrxEfklPuKmQ0ZgbH4wwEmTeU8pzzLlBe9yiDOYVXscG6xffPp6Jml+H2buAb +B7zZKD/yXuNKgs7AonMLrA6d297wslMAZd9lZ67jmLvWLUhd7LGaA2xVNO2+5yNx +gMXrdL0wY6NdUY+yy/48b8izD4Hxc0+7wfnZgeND2tgg3av+hbX0sRbIoP7uZgrl +JKuYuHpgmzQ0Y4eoMklWiWl1o7A8d/vVPuGSOztXUhlQF4nKfEAyn9pFyu4UXjfu +NueBTQl8Hqii/wN2nMk9vZz2xFN2bnsqvIhjnMA2yoQl5bs576yj8Rbji9eK4ZUg +WMAkuOkB675DX5rYrXUnDNo3aBS96NQG4CbG/jaM5i0a+ClVg9tVboGksBJZRzUs +lUQxo8AXS+h74iipJrokigsrq20jO2t/WdxRdxduXu5IOs+hB6ae81JjjHjTFNDu +uteDnnLNG1dBfebw/RkH3cjp+lsvnAks/mINStMoPEH7/Obvzuku32UvAxglkY47 +QSCJfS4QpkD4G/NUvNFhVokCHAQTAQIABgUCUx5jgwAKCRCtltamwB49Z5zGD/9G +Is/hfe5iQrSP9NFNChQjaeafjprCMfi30glYsaXM3y2rrXZJh7zKAvOhYcZwbWK2 ++9meRzuMX2P2iG3WZ7iyaoPALb1WpPlSQef34g3SJRV1UDVKwYpkJSZCsqIX1bhB +sr4qjY7pN46B7GX7RrGl79qDy/CUzLciJ1bX/BiB4L3+ls4qrrfomO3+r10ngqzT +MMmn5hjVWE1BDcuViKYwhW0u/HcTulIVkIp3+Vs6nX54d7nG45YHdmBeLPA5fEFv +Xe3Q3Q0YwK4r/bZwEqlg2GVg5npYIB7SB7MbU1znuHJvyUpTeO0z8lNWjYjKFedb +YmO/tQSoJ82GQt9HMaENKxKP4Tk8Wr3SV3y177nD8+6jFWJQZ8lqsQ/GxZukFWPV +0Eo9dRsQx5v+B5h2213hK4YcOhJaiVtBggUodIKiGz8sW89V2L8EATMb3lAJsvPu +FiQkuQDOhDlbqAj0yQfyBxKmKCHOfAJ2Q3aYBhvFFXho+DBnPjS9r3QfL1z3UYNc +Y8tCT9Um+MX6h/2iAodpxtu4xqHd2PavOxLsOA0IFKIcSNOp731VaMPdptgCOoCk +r7JL7PrH+7QwBPQzCr74rQhiTfuDd1vbmgJGm/D/MuPX5+KemVqOiE+o6xotCb6Y +KqAWu9CqW2m2L8QuD4hNR9NV+StJWmmNaCoOOXZQXIkCHAQTAQIABgUCUx5k3gAK +CRAObqOOk0fwLFbMEACNkB4OlOW32GFzalq6uf2vmG9H99+/pBiKyGKvc50obLwK +x4g8RM/dH6zduHUZ/uJJ08Qvx5h53JVYPOdxk7cXvWVnFJXRQNqgRotOLj9r8Hpa +Rijh4GrTDXeVrNY1rw+Okw7v2iyNwWQDVOkAzrg/fZ5cZRp9e2Ti0cN4COcGJVQJ +lHYfa13GuiSUSdc2OisYiQZWXdT8SnjHLb5cL6GRgmDDhOC/FISiu1L+LFIsyXoZ +9pzFY/43sGTmZJjFnudoxEQHuXmbQZ4Z6o0yAncU2bow0QEQQ/949z4GHNcbXduz +eXBWXO0kA6z4Lu8YLBk9ihrka3kw1Y4VtvIuWQDuLV7DR/k3/YHZzUUvzGH3c8Vn ++DTK5f/dp2TrK63Py+x4/7E62V9uk/VB+TVy0E6vic0Tk3+KMGUHsVWGZiYXYnso +ZpVw7/2vMmiPxai35RMe/yi8r7pAYrQc6su9o/WMS1Hxhp3VPa/g4S/mBfk8jse3 +tHof6ZTYAG7t3FhxVGXgHRYa0nnmHf9bLtNOHrAJ4M07z1VB5wMkFJ491nf05oVr +cyBA3swvliwAilskCfJFFy1yttnOlYY1hLVq7fUAoMfjux9BZglXlmCPp5HlaT2t +rF6VThREOAI8/Es/zrYAgntLuPFLJcYvjqPEChttT8I0H5KlzoSMfHZybsyW04hG +BBMRAgAGBQJTHmQGAAoJECKBkcFWfiwXbtEAoNyetrXS29ORsTlasGUPwumYgHaa +AKCv7Ky87jcPLoQHLp5ugFOyMAXKc4kCHAQTAQIABgUCUx5kQwAKCRAo9QGWxDgC +6wDkEADFhTXNCEedftkHSLl6GxWCGEi1qI418U+cn01hRCtIY0nVjzGYJaxHamtD +2cepVSDDdIeXj9C4mcy3na0/mME7+H/tLuZiOv5d5rFIIK6gODmE/69LrCGSLJL/ +1ULCQMqQ8IcKDEkZTmStEKJZPvE/lPmfjn1XGf5gC8zbTg59hN6op/bRuQpQHsIi +LNn7jEW4X65Ygig/HcRK0Xj6iTEjPc0ITMthLPG5XHUjMeRt+syc65Hl+Q18zwsX +i6bjp/DKLgDUdLvmXdBSxmsDZgZjJtfE5C/C0Yom/VpVesXCWCZqe++GT/K95dSq +pZbu0DSVKtrSTqglRJf3gPeVwQUFixjj/tynZHiO/7cZq0pazRrX2qM2ZZB1hkhZ +VkISzBMUFC8YPkbVDKVYisyUJLdUEKdSB18RcX/ZxLUOsYTo3CsUIwoTH6aL4yQB +C8rB0OkbJeaZbU/3dlHnycAas4ze6hzvEdiYyb2jrg37qbJwg0CPDevsNkLu/Ie/ +6BqqXcLszWS52aNcyLMPTpjvQIC2gV1f450chsiw9yeMUtsgVFXADO6+8zM1io9B +1dtEjRXvaiI3jD/jqV+g8TV1i411NHw5sW9c/Jx0UuXDa7gmb6+6VvavIHCF0pLL +FKUCMmoFePtp0dvdqN1Ysv1RBn7GKl4GGImE0dh5T8pPlXc57IhGBBMRAgAGBQJT +HmRrAAoJEFk2rKVTkFoB0E0Aniydu8kZjiaob6/OT9hYtOkLaQRqAKCD+l2caV7i +J/SkLCBgY2relojE2YkCGwQQAQIABgUCVGuZsAAKCRAXscp9ZAiVKMxYD/iZPK6P +qwHxzEuQjquo8f9f0q1RkX4AZa1j5hvXcqAddUa3HpihHDFnW0UDpptlyonryxUE +imhD9a22/eIsCz4sF8gAgrp9b1gRBJmJMvtRgVHaFn1u02/5IEvRj7JsWgVXzWFU +yh9zLaiQtcpfvfFzmdZKtZ3hl0TGl8NFMLxUsownR2tx0iuc8r+NpzzKpxQeXlYS +98DrDLjE3AKVSZcc8DUBTlwhCZLiXEaQjAKXW+Mxfg8C2E4hQIAsqLWhj8PRQEpG +w9F0Wdrh9w4ePsKKnzsIaprkRve3vzEuDLvmHV+9DQd/sh+C5W1LjL4h+vC0eXhd +42lIWrfgOhai2rrwgfSNEFnMAsB1zdWcwMgVSP97sSVfyrqMlDJWXuW8v2KR36ws +zZnqVPsgQk0Uy53mItUnWblgabSb/udVa+ZI6NeOv1bMGMgKaFqXCn6aHD1X1/E3 +0XtCy2dE6reTAU0zNaRc9ZJOLvxJj8ymP+pUqzkvxLMWAuqpCKsM6YNFlCFkzdfO +LHxhqGp68jKPUfuG7z6yRkgDZF84k55SUK7td8lHmJpbeiL1+N8Sm9CujQ+TEAbA +ZFAQjonwnzXWxzI4N+1TWM8BbhLmFpG814JNxyswYdmps6pdKCWHi8zC60dYZ6Mw +IQZfNWpkeLh7W44NuSJ7pIXuSfEaFCKXX+RwtIpEYXZpZCBOb3J0aCAoT3hmb3Jk +IENvbXBTb2MpIChJIGRvbid0IHVzZSB0aGlzIGFkZHJlc3MgbXVjaCwgYW5kIGl0 +IHJvdXRlcyB0byB0aGUgc2FtZSBtYWlsYm94IGFzIG15IG1haW4gdXNlciBJRC4p +IDxub3J0aEBveC5jb21wc29jLm5ldD6JAj0EEwEIACcFAlMOLj4CGwMFCQlmAYAF +CwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQ+bj6w7SBJVMTXw/+PqnnuxB7vBpk +/rSeunEmZ+qhswnAqjazDLe7gBAPZXKYe6fIdBu0cZpPc1dqlKUY7s7OAUB/egF6 +nHZI7Ise3fq1PJgh1ZKXHtJv5tDdIHZ7H68H+1f+JxOBDDAIdhbr2sogoBRkeYxv +qE4H4oZt2Ntp474ThU4RHUjHaIVM8uOo9f2xvy0hCUGUHPs9lM8l293LwAtwTMMq +unUzwXQTnXcZv+4AffBiR438u1FFizRKxiVsFZanAWdzW4Es5XSpeSZYsqofR63i +lYukjYYRUYjqtAOqCh34hHdUCp2edENG0alSjHded+T1H8WtFARTihyb7Dd5oMP1 +wA6pIzhhKXl9eSMXqpmFvPbrFiD0dlOes/guY6smy+z0S3BldUe+vqF18hhIHpIC +NPrPc354Vg0hgnsx3oHKYcD7uMAS/vJrOUfJV+xFSjySHadvX9U10Blv9l18su2b +AT7s7go04eEleKXJwaPVaYZUVaWFmd9WYay0GoNg8aKjke7Fj8cvPhmhn5gHlbj6 +9BBot7eNcHLEAYvhjiO5kBBYRn0skEPRvgxapwddG+9VkpYWi34IX7kC2c1yaQAu +GQCio641oribB9PDwU2gmvr5L70XexkxfT6Jh8L3Qur0gcnKKDRuqq9LHAAen131 +DpL+Bv2qmYuUb21cy1JYVBDpbn7j2AqIRgQQEQIABgUCUw4xbwAKCRA7Ok8Kx55b +amtlAKC3RJdB/Csdw+gnbImjWoVGs+E8yQCgpeMDerQA72Py4Si6qgpDEWFhOhCI +RgQQEQgABgUCUxNB9AAKCRCgJ0huCLbaUJXOAJ4x85jehtQViJV2WmteRuPQm9aK +6QCeLA4NmWELWo1X+Yeyf5iVPH3jp+6JBBwEEAEKAAYFAlMTMcUACgkQsAucyC16 +3yw85B//S1KwKCIKAlpqRP4x/815btZlDMFr1ve4VkFoSiCAiQTtreYlKqt6Ia8s +oApHgvSFmCFo1S0q221ohIlW2At4BVKUVWqkwmEzGP+uImI8JzjfRWkfZukyXwYt +AbDaaKn6nH1mP8gIsaV3Y5jM7mcfcLZVpiXE/+UVvudGjixonN37BsgHV+9lp/AF +IMs0rH+Yl0tRFpYfAWCBwP3ZVOzyPbtN1gVKc3LXMhPOBfNG+7knFzI1b0eor/E+ +0vPXZ4pZEknRtulli/95ME0WkzFbvz0fx8AVAYWkJytqDF/gIsjiCq5FNAYWA/7C +T05Np/3g5IbTSceH+bywHA/BH1PGf+zb8edIRhzKi7GbtcHm0kHSiRTnGEhDqy5F +RDy8WOI43KMw1gDV2EhS67Ns4oMa2g10RZizTDFIhQeiayxM4irYzz0MmWvr4SMC ++jU+H140MxzD+VeZCbpPTBgFoMAZV5RO4bG6BiPFZ4bKGkXaKteWcR2Z6xkyLrcm +rV1OQw6tKDslqUJnIgbr4eQy8PmgKZ+WZi7i30YZU62nOzzK8FRgBcxULbF4QF3L +/T282rBM6YA58pdbBTQZ8RQm5gsl3zhtIC5LVPMYHAtmm9dQpZgrrrRhJYzJOCte +SJuIh11vbK0b6THLX3jzybmgeetcBzI01gXSAhnczQwJnEjvxRA84blk1zAFbZyI +j5h9+XGnCLGmupYX5yKoJ+IQyvPJn6yO1cc1gMT30jCK4yRpGcq9spDETxB9k/oC +tYXu4db0LvqhIsiVYhBzha5x44WxwOysnMCVcSWSo9Xr4HkycbxstwvZVraT9oxy +9AIjJJ6ZS8ntCNGUofxeSPdojyz6B+LXXrgOPxh5yHVH6vDfFQzgDTISTPO4KNWB +vOMw2IXhcSNKZzmk8UQBOHTCQ/Pyu52Sb9MDP8d8nPCfVxZjiO+2PpuJnraL+zge +BlIOm1mLMZelYJXyKF7bkE8yeaBtmCR6bgqpRsIAuw91wxTXG0/B3oiiVW3WXi9O +611ycF4YvjlB5boAC9t7cxS2MXFFE75Zh8az1LuEkgq+/pJBCf4v+IXxrC3kxxLm +OPgu1iPVuDigviWbftdAeLQ9bsQSQv0jR+/jGQzyQllxHq5ar4zKUBhxRlke4jHG +KUOSyYznXQwCGlCgvKWLaY2WMjrPuh5vAWbDKRvORlto9Jgr+pcD7H8Hs1380eE0 +elBcYtlHO0mMSX66ycnjhNRLKzMUHZMw+UO2mhUV0+9fQmfGR5u4996+usiu0kL2 +9x207gBN7RKDZ0/XVuUzXaHuS8rY0fhuSj2C1WIUcCy8sTvR9tWznsCG58GsP99f +ylrvBtKg3vTLjsyBoZFsfDzVmjvVuIkCHAQQAQIABgUCUxDx+gAKCRC9U3Jvvaau +2H8PD/4+g4mVKclHKIcrjjKvmB4Y7iqOcNeI/Nn5HB8p5Vz19AekYDWBbJX+KxPY +x7puto5fNASl7LMAFbNt2PVmNJ2wBO3Duda0weHooIiEKm8aLGNWw2BjQYkwTJKn +rO7E0I1FkXxOByZQdAMshILthfRUZ+jJ2uNyHgCgU28TNoPSUXgpfA5e5KnQF3LF +0YuFFHSmOFsCAmMO5w/VbVwZxvsj/0CMW4mrIBjBvcR7zEhDI/cefhzXcU0JC6lO +auyca7NuYs2ytqWqB83wNXQ0zBZI8X+lB3mstKn1kdC6ajRdM4VPn29Hk4bxqiRW +9IjL+pmnm6BWiTJV3G3givp8tsbtI77lrLfE/RUinEO16QJCs0oUcgY21n0aFaWo +3c8VA7ThrAvINiwHwiS/5C5FfpfIzUBcOJXMaqmRdvQJ6Urxj6R/P92pj4dZRYg4 +iJFl7BJ8VeG2ecHaE/d5VB9r52SRCtCAckeLDUmD69xF4k2kYpwqf9FgwP5N6D+9 +zZkL8eqotrIoEfrc4d5Ja3P59Go3Tw6P715yISyTrN+qvHSCnHw+ciYEDN6cfVeo +mi93qU5202ZYIGDFqWzYoY9AO7rk2CIYkul14jeq5Nm+8EZjtghg+1ADqS00ojoq +LfxIMmNKDoQx+Mb2PRUiJYbA6MzsX5JCDk7+N5gR1zbrqqg1gYkCHAQQAQIABgUC +UxHKygAKCRDABX5xTWlPsoY3D/9sDReRlVGBiZ6FQkhRVjv5Vv16mev09oRHinK1 +HDK6gdfOO9UWvsVNoi7qTillY7dsp4bAnFvuu0/FG58cD0LDqJ4gzFO6ZRqlUtPV +T145SatUYuhXv1x/+pAK7mIoVndMvplcEjP+mJl2R2G/pGVDdJRJ+AS8MGLaO+SR +5ITUwvDllg2rr7HTnxwvT4mMzKozFWlM09cFMU1LYysoh7YJlwMMcyEr7Pc7D+G8 +r6KSQJA2PNVceCICiEvNOd+BsBQuEuAQ3qnBfQ2Hr6GyTtkGKbu96b8CjV+U2chf +BFe9l2ulVhtN2X+RwLVuYHFBipg9oOhLZ2cHjTSPV96+Oiad+UYplTufQphumjHa +1FeH6M1lgB7cANxBdGbY8ZFc0wtbYkCFgsUjSFlYS4AbVcTrdlQvEK36WsQOP1uV +s/pbsCDgH+dKtRAPfUzSre8gslyj9oGuyqnTsIyCpavSbL09UPPBxQEUsAdlvOCs +p8KpXT4/4DRcJvvMVeBtYHHrEyJ1oIdWJd58m4Rls71Cuc6OCJQYkLJqWkbFtegA +rqoVYEXPjXCP0zBkGblsZKK5o5r9m6tDDbzqamSg0AfQgDhbvWGtjPXLj40VB9cI +J8ntBYyuFAO64llK1qWS8BlCSismWx7EcVpXIr3umCPGI/aa4/S9hlfrFqOGmZy+ +1+P1sYkCHAQTAQIABgUCUx5jhQAKCRCtltamwB49Z/KND/4kU2frZUkl2GXF/DO5 +wj8wk+9nM8zkhqC6BMO8quJviNW0Bhl4OY4jwVjiasYwcPppDyZWW9WAAprECCI7 +t89mbvRC/B6KIl9n5w6jCgg/jAITZ+YajBMmZxdD+m8Bc47nDp3iQubsWMzlvA+O +OeJWc0Fnlcv49OzpaU3gAD52evZTyrpjRJ2zkggLxJVmpOQVmqHdg/GGicJHVkSo +YfDyO1IAoAQkzN1OZRBx981xa4hCLIF8DOuBC6Re+SgelVcODYe2dMQnDQuhgfeo +DTO6Raf2UDdfYcV1tbEZwO5+UV1sPbRhfyu2PYpTYWoceDPu8SxKTRFbSGpX8Zx2 +0PMkLsPYr8+iY4VciLOJ28CKwooU6rGm/LNGTtKRymd7oalHiM4DJ//vVEcZ3P5X +666yTbgZ8n8Ui95KERGSmSQbr/VbsTivUaeL00On2IxL87j+31gjAC/8zG/it/5f +8MRozyDl2R2k05wPZtg8v48QuarKbLR4fzI5flV9Jqmcyn6THSXmUJftfY+cGHMk +/SxCtzpL4w/v7T7nnKzD7PuWPVd7KGJ0A70123A5mbw1KvaQfEJotwW8Ym1fBaFv +21A+iz7KrmGkWq8I8yFpiIuvjTF56eJLp6AM6Xe+K7mxvCJnn806HT1qe8iFRryb +GeaGoLj1K4vbJnxFoU1wum5JmIkCHAQTAQIABgUCUx5k3wAKCRAObqOOk0fwLNCT +D/9ivD2rhfPAoQ5KSkaXdAPHug1jdYkZCUyK8XJl7hM1yFKwRDEjpYZOb5IASo2D +uSvB5oys1lfWaYmM0LgSL2ONhvpdsrK21y90dH5o+DM81hhVSxKQyvXOmg24G8XJ +rco+y031iDHdsjNfJH5H/OWITTqKuDKmecQs3Z48zTD9Vr3SkmVlWtyptlc19Jzh +M5FLYIH3Zzo1qmDyFtMW7h+H1RkkgWH+EIQu0oLePEOTkKNcZm8e1+qncgTmcdH0 +LQr9lonWdR1tb0dB00OUa5pmzFaVqmAHYI/GmUOyEIGuiAAb4N5JYTKxEZAxxELk +aTbVhGmzh89mqt9tuFIwjDzY9vgh50EM+7XQPqk6dwm2RufxU3b/ueEUNQyWij3P +oJCBZYE7qCsLL8mxk+KLMSmsmglJB77TJm1XE7C43CBpTXMv7MVnjIibVp6KVfsE +MtL7A/mGISZHWxuEgG8V4CwM9eXU3jnVdg6yXvYu1JN/7+qebNRD5SG9a71nXQU4 +bEsNtYsC+FcF2BhC4JlWME32O7kRueBrG20O7UlbCipPPdAwEAQW4qHPlO7PQic3 +AqUmvp5ovyAxzMwXkkMYDNdo58eh+Srsi0uOFMXP48bBQLcG/b1/PBKXaVNlBEZP +yxzo8kp7Dh3+gVHsNJ08HcSSf5/ExJg111wTqVI9gREje4hGBBMRAgAGBQJTHmQI +AAoJECKBkcFWfiwXw18AnAhNT8OumByLV/egAwlovu4x6B9eAKDDUQa3pWjcH1RD +BQgY56nsRmP3fIkCHAQTAQIABgUCUx5kRAAKCRAo9QGWxDgC669YD/sG/FxpU2rx +8ajhDWRou7S6VkcOc9LqoNjmgklqCDdVzYpb0MyTeYQB6tkkrCrH0SiVPAiV0582 +U1AS5iujoxBEoeqULIQOCOjtDsUFpUSiWBKN75b4SIQGdUjZRSlW2WpEiznOIew9 +zFoWFnUgu2Oa6mCHEX8RJr5hnq541xmwSahnwoLC7O2ZzZjtsnoS0GC3I2PYW3RZ +S5Vb2qhGMur23eGMycqxud6PAVL9sHrdtaFpkXdxRTTcxdicHMYca783ZXm+Ikyg +QTfA850ezt2EeF8DcYT/r3Q0eqTBxgTEaJOUyDoeDAbaZUtSw0dEAcOE5zwfP222 +WYdXTaeGJj6HyZyyW3/BLn9Sp8dzsc0MxIzjSTWihE6D3Kk9FXK+AZEl4nPzah5G +oIA7QSyEIQsQWOjhcU6Q4yy1ACns+2nlZP2IWsbolIMgfPXCpGT0SW0lF7bGIvRy +ZnddnvIoKPi5uvto9woq6a+6CD6rF7kdg8j26mjxVcysX0T+Ajb2DWCEAjYFRBvw +I04HLZT4owpVQLLME0f8GIOuI6fYgGR4nXLb9obrvjU2We3/6ShqvmDyNSH/xJ05 +qIsGemuhisAk7RRrZPMphBwP9BhxvNljjzukIWd6ckkEQe61DixjyYFccD7b4C4z +ThRfbqtwL69fmUPb/wzs4bfqPwU2Vav6yYhGBBMRAgAGBQJTHmRsAAoJEFk2rKVT +kFoBeNUAnRR70AEUF099PtlG6DGtgZnq7AJLAKC8dPOV27zhMZc8J+Kqgdo7H+HE +zYkCHAQQAQIABgUCVGuZsAAKCRAXscp9ZAiVKAktD/4hDcYJoDMQMbq1aApcfl3G +DDohSdqpquAigGNXZ1DjjVcIe09mnER+20fZOCYMwemzcczqjMj7OB961bKyZG4Z +DaQ63vBPWIa4Z1l8u0nmQp1bAxl5BYGnFeguAIgcn5bQGN8EG3guEEOqz3ItDG+R +OX6VUitRjJQcAc/MVYvk3F7flnRt9WlAOlsBMW/xAFaXamlABAH2+IPYfCeZfWEl +pdDl40xuH/MB5YzsaBqROezakDh9R172SnebFgibeqBGtIwaZ1KvnvKbWPuCZZZ/ +DuyTMkghAKgp7U28mtR2xZ0tMsT5sjXgZTMDocnR3zkgMeDw8NACpYD3Q5GES5Z2 +TImXXzNbiRlmkcZUwSEEhaD2sG2n5o28OHidnUq9LrRjfT7qH1y4ChbTvpF83XU5 +7OtyqXEDav8RORA4gMOKoyLeQf5PEc4QhpSObOKYT+acaJlpc8I7BKgjy/muqO/m +WkdKRMkNwmlAEPpI161gE2LbRfd4UqtaikVUdQzFuEjt0sOfq2676k/Dm5ubMx1X +PuF+dS9e6kwPUfLs9bcrIyZHrhHWx0nW7Emg/GVsuMbzaWYSxBWs5PfoMkR/fl/b +g4INzoGKiWl3W6TAQdgYwlzzlOSy47ETXjsk0eRAIzbwN8E4Sj+FHUqWBAVq9tU1 +GOycWaP+95muxZyQSTWKCbQyRGF2aWQgTm9ydGggKEFTRiBDb21taXR0ZXIgSUQp +IDxkbm9ydGhAYXBhY2hlLm9yZz6JAj0EEwEIACcFAlVu+0kCGwMFCQlmAYAFCwkI +BwMFFQoJCAsFFgIDAQACHgECF4AACgkQ+bj6w7SBJVPdNg/8CqkzQThpSx/bWEed +e6es+DWvVzppNiwwM/y0X24EbObQARGOc60Bqh0GcnGO/oAj8Dr5QozutUmF1ZiE +RX/BSBTdQvfGDtWj4I4jf7rbusFoqulF8ECAWjiF58xLg657NpVteVxbmRKTtLgD +H7BRTaCsxgqjt/2jjWf3LhO9QqosDYBZ6i109aSgNfSrQwYHRi0qQA50Yp0tLpIo +7udcr3GNZZS71MhBSwfsmwP0tEBhI5WcDkgRY0IX1VGpgapO6fwRqB2NOeBI53ap +4yZq4Rhc2Q+kZS0v2Uqg/42JfKasrKzhkL2PQI+0d7rFatgsI653viobo9Y/3L08 +Jq+u6st0htNLo3XHxKMwvV6CXVBWA6nylOGjLnzA/sRkpkKxhSJ1xktztPrn0x7e +NtcXSq6tZTW+uHmdjXfLyArlqgIVOxotLpRPjI1JAcYnwkv00KWtVqzpMGKmwyoO +1QOneHE52xbhx/yfPBK7uZHXXtMb44He3CfZM0Jfh7gZwVu+6k5WZTuEysBBTuNL +86wxbSBwNRByIxVL64Fi6UsdvbzE7UJmFohygeo9myZRgKLEYjnWellsaoEkgJ1P +s1RczyOPJbVeU0PQPWWn+pVqqjgQxE6zaRu+JfVuMyHQM3SnmoyuZfciCVrJd4EH +h+Qrcq4frzvFFmkB7sdx0//Jp7u5Ag0EUw4tWwEQAMOW2F/ARC8Qaco29TnCvZtz +q6szMgWoMpxd1vfOi+i6EifFAcHDEdyBIa2CW/QMh9zpRQamO82iIOC9wBmcN4iu +Bi4ZH3wlxAAfuEMSwdsmPVfZQCgODZrlkCGr/4bgHnX5VGFiwlzZUUDemfIzleIo +d7FzHZ2zIPxUQbMmPriS/cxUry635fZ0Y5YRlgq9AJzif0hNnx7PnZimxVx0hVBA +OJmDcc4/st3YwKvCqEuKgaJDJNE82WE5a9KldgPtQdykmyxaKMneht9b8St4lZkB +Sdz90JhSj1GPsDNl88ui+BuIbgGWobAYVW9gY2h/lP95MM1YNtdBAdcyjGe4RhA6 +T+JD5eznikI5EIOyb0zH9CiVDO0CZVH7tuGtJwBVaRSDTtUdNeR4k6xczFjWBmRr +3n9en+JD/LrYPN5b6P5Cf/SC5YhVD6scaCKdQFOBOClEKxa2dr5eu/7JgsyJCayA +dZhsHvph0rMVnbSK5DepiRAjJRryXiJvFOD4PbRAyoaA25cSRbjYVN9TLdMhCnBZ +Nol5z/AxT6ZH2E6CmcvlFfVE6UhvZFfmF7zHTFxvU/eT4kdd9xJZcY1I+y+5bzm3 +LuKIe5W94DpPJ6aebyBX2rr5OXrK3jILjsk+Zof0nxk3SOOKcrLBhs0dtbA8gv7A +YIW5c9iKjl9X8i3CiSjVABEBAAGJAiUEGAEIAA8FAlMOLVsCGwwFCQlmAYAACgkQ ++bj6w7SBJVNe4BAAxmSonXAhNxohcplTKZpZvzqzU0+92PGIj6D17rJDy18N1DI6 +7bU1XDjIsR5OC/JknK2nuJKimhIymDJZv+b2VLKEZF+LW4HzPTsdEdHMyzW7WssA +uQGSnHmELagkUnXLk12zbcieugctN8y2H9efuTL3tl9ARkR/Ns4MhVgzP+2XclOW +V04fa8GLW9dC0MGzZQJvMk2mzs/2vV7/v1ve3IRZqeLDmpkmZSNTpdB3tUmFARKq +SduvInOfNqPIcRheVz2TwhghRnwkzJHoJ9Bk+rCThU6QLKZv8o4bf6YKPMkY5z+l +6S9QXf33vNqwIUDn5qxayT8kRz7/GSChJ9twXVVflb5VTTP5FVNUNjDYxCuHBPlC +UisOlrHjk/jYf8lX3+JFiUMZN+M7wZIakHe4SyRjMEHWUCnC+iObMP0KJ+DoQJK1 +0Hqhah9I+iJZk8n2WkYp4kt6QSwFi+g4QaLQ6byVbBeYA5JPTikQJlpbVgKrKr0C +LaodHywrloaA6lW+e+WMlx9T2t13s1XQNxM3WnnRYYMh/nEcgtcw7mZRL6h55erS +NPfXcVvbo0b+iing/HrOtjK4xU0lypGlQlXcfQcMr0RaNAMv4ExgIzQj38jMzNaw +9a52BMKzZF8059sQF4VfrIVt2eZZyRUa84QI9R3um3tAho1ORUaOtEyOJn8= +=keWk +-----END PGP PUBLIC KEY BLOCK----- \ No newline at end of file From 16a9eca7c86ef1e55aad572aadf461b89c66903b Mon Sep 17 00:00:00 2001 From: David North Date: Fri, 12 Jun 2015 15:20:10 +0000 Subject: [PATCH 184/301] My own patch to fix #56328 Add tests for initial patch applied by Nick in r1582892 Fix and test AreaReference#isWholeColumnReference to take account of the prevailing spreadsheet version. Fixing all users of this is a big undertaking, so for now I've left a fallback on the original behaviour for some cases. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1685101 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/ss/formula/FormulaParser.java | 6 +-- .../poi/ss/formula/ptg/AreaPtgBase.java | 3 +- .../org/apache/poi/ss/util/AreaReference.java | 30 ++++++++--- .../poi/ss/formula/TestFormulaParser.java | 48 ++++++++++++++++++ .../apache/poi/ss/util/TestAreaReference.java | 50 +++++++++++++++++++ 5 files changed, 125 insertions(+), 12 deletions(-) create mode 100644 src/ooxml/testcases/org/apache/poi/ss/formula/TestFormulaParser.java create mode 100644 src/testcases/org/apache/poi/ss/util/TestAreaReference.java diff --git a/src/java/org/apache/poi/ss/formula/FormulaParser.java b/src/java/org/apache/poi/ss/formula/FormulaParser.java index 72ed008cf..5124a4463 100644 --- a/src/java/org/apache/poi/ss/formula/FormulaParser.java +++ b/src/java/org/apache/poi/ss/formula/FormulaParser.java @@ -617,16 +617,16 @@ public final class FormulaParser { return new ParseNode(ptg); } - private static AreaReference createAreaRef(SimpleRangePart part1, SimpleRangePart part2) { + private AreaReference createAreaRef(SimpleRangePart part1, SimpleRangePart part2) { if (!part1.isCompatibleForArea(part2)) { throw new FormulaParseException("has incompatible parts: '" + part1.getRep() + "' and '" + part2.getRep() + "'."); } if (part1.isRow()) { - return AreaReference.getWholeRow(part1.getRep(), part2.getRep()); + return AreaReference.getWholeRow(_ssVersion, part1.getRep(), part2.getRep()); } if (part1.isColumn()) { - return AreaReference.getWholeColumn(part1.getRep(), part2.getRep()); + return AreaReference.getWholeColumn(_ssVersion, part1.getRep(), part2.getRep()); } return new AreaReference(part1.getCellReference(), part2.getCellReference()); } diff --git a/src/java/org/apache/poi/ss/formula/ptg/AreaPtgBase.java b/src/java/org/apache/poi/ss/formula/ptg/AreaPtgBase.java index 5b77b09fe..96eda8757 100644 --- a/src/java/org/apache/poi/ss/formula/ptg/AreaPtgBase.java +++ b/src/java/org/apache/poi/ss/formula/ptg/AreaPtgBase.java @@ -17,6 +17,7 @@ package org.apache.poi.ss.formula.ptg; +import org.apache.poi.ss.SpreadsheetVersion; import org.apache.poi.ss.util.AreaReference; import org.apache.poi.ss.util.CellReference; import org.apache.poi.util.BitField; @@ -256,7 +257,7 @@ public abstract class AreaPtgBase extends OperandPtg implements AreaI { CellReference topLeft = new CellReference(getFirstRow(),getFirstColumn(),!isFirstRowRelative(),!isFirstColRelative()); CellReference botRight = new CellReference(getLastRow(),getLastColumn(),!isLastRowRelative(),!isLastColRelative()); - if(AreaReference.isWholeColumnReference(topLeft, botRight)) { + if(AreaReference.isWholeColumnReference(SpreadsheetVersion.EXCEL97, topLeft, botRight)) { return (new AreaReference(topLeft, botRight)).formatAsString(); } return topLeft.formatAsString() + ":" + botRight.formatAsString(); diff --git a/src/java/org/apache/poi/ss/util/AreaReference.java b/src/java/org/apache/poi/ss/util/AreaReference.java index d59388873..b0a69135a 100644 --- a/src/java/org/apache/poi/ss/util/AreaReference.java +++ b/src/java/org/apache/poi/ss/util/AreaReference.java @@ -35,13 +35,23 @@ public class AreaReference { private final CellReference _firstCell; private final CellReference _lastCell; private final boolean _isSingleCell; + private SpreadsheetVersion _version; + /** + * @deprecated Prefer supplying a version. + */ + @Deprecated + public AreaReference(String reference) { + this(reference, SpreadsheetVersion.EXCEL97); + } + /** * Create an area ref from a string representation. Sheet names containing special characters should be * delimited and escaped as per normal syntax rules for formulas.
    * The area reference must be contiguous (i.e. represent a single rectangle, not a union of rectangles) */ - public AreaReference(String reference) { + public AreaReference(String reference, SpreadsheetVersion version) { + _version = version; if(! isContiguous(reference)) { throw new IllegalArgumentException( "References passed to the AreaReference must be contiguous, " + @@ -169,30 +179,34 @@ public class AreaReference { return false; } - public static AreaReference getWholeRow(String start, String end) { - return new AreaReference("$A" + start + ":$IV" + end); + public static AreaReference getWholeRow(SpreadsheetVersion version, String start, String end) { + return new AreaReference("$A" + start + ":$" + version.getLastColumnName() + end, version); } - public static AreaReference getWholeColumn(String start, String end) { - return new AreaReference(start + "$1:" + end + "$65536"); + public static AreaReference getWholeColumn(SpreadsheetVersion version, String start, String end) { + return new AreaReference(start + "$1:" + end + "$" + version.getMaxRows(), version); } /** * Is the reference for a whole-column reference, * such as C:C or D:G ? */ - public static boolean isWholeColumnReference(CellReference topLeft, CellReference botRight) { + public static boolean isWholeColumnReference(SpreadsheetVersion version, CellReference topLeft, CellReference botRight) { + if (null == version) { + version = SpreadsheetVersion.EXCEL97; // how the code used to behave. + } + // These are represented as something like // C$1:C$65535 or D$1:F$0 // i.e. absolute from 1st row to 0th one if(topLeft.getRow() == 0 && topLeft.isRowAbsolute() && - botRight.getRow() == SpreadsheetVersion.EXCEL97.getLastRowIndex() && botRight.isRowAbsolute()) { + botRight.getRow() == version.getLastRowIndex() && botRight.isRowAbsolute()) { return true; } return false; } public boolean isWholeColumnReference() { - return isWholeColumnReference(_firstCell, _lastCell); + return isWholeColumnReference(_version, _firstCell, _lastCell); } /** diff --git a/src/ooxml/testcases/org/apache/poi/ss/formula/TestFormulaParser.java b/src/ooxml/testcases/org/apache/poi/ss/formula/TestFormulaParser.java new file mode 100644 index 000000000..478ad13bf --- /dev/null +++ b/src/ooxml/testcases/org/apache/poi/ss/formula/TestFormulaParser.java @@ -0,0 +1,48 @@ +package org.apache.poi.ss.formula; + +import org.apache.poi.hssf.usermodel.HSSFEvaluationWorkbook; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.xssf.usermodel.XSSFEvaluationWorkbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +import junit.framework.TestCase; + +/** + * Test {@link FormulaParser}'s handling of row numbers at the edge of the + * HSSF/XSSF ranges. + * + * @author David North + */ +public class TestFormulaParser extends TestCase { + + public void testHSSFFailsForOver65536() { + FormulaParsingWorkbook workbook = HSSFEvaluationWorkbook.create(new HSSFWorkbook()); + try { + FormulaParser.parse("Sheet1!1:65537", workbook, FormulaType.CELL, 0); + fail("Expected exception"); + } + catch (FormulaParseException expected) { + } + } + + public void testHSSFPassCase() { + FormulaParsingWorkbook workbook = HSSFEvaluationWorkbook.create(new HSSFWorkbook()); + FormulaParser.parse("Sheet1!1:65536", workbook, FormulaType.CELL, 0); + } + + public void testXSSFWorksForOver65536() { + FormulaParsingWorkbook workbook = XSSFEvaluationWorkbook.create(new XSSFWorkbook()); + FormulaParser.parse("Sheet1!1:65537", workbook, FormulaType.CELL, 0); + } + + public void testXSSFFailCase() { + FormulaParsingWorkbook workbook = XSSFEvaluationWorkbook.create(new XSSFWorkbook()); + try { + FormulaParser.parse("Sheet1!1:1048577", workbook, FormulaType.CELL, 0); // one more than max rows. + fail("Expected exception"); + } + catch (FormulaParseException expected) { + } + } + +} diff --git a/src/testcases/org/apache/poi/ss/util/TestAreaReference.java b/src/testcases/org/apache/poi/ss/util/TestAreaReference.java new file mode 100644 index 000000000..43158038b --- /dev/null +++ b/src/testcases/org/apache/poi/ss/util/TestAreaReference.java @@ -0,0 +1,50 @@ +package org.apache.poi.ss.util; + +import org.apache.poi.ss.SpreadsheetVersion; + +import junit.framework.TestCase; + +/** + * Test for {@link AreaReference} handling of max rows. + * + * @author David North + */ +public class TestAreaReference extends TestCase { + + public void testWholeColumn() { + AreaReference oldStyle = AreaReference.getWholeColumn(SpreadsheetVersion.EXCEL97, "A", "B"); + assertEquals(0, oldStyle.getFirstCell().getCol()); + assertEquals(0, oldStyle.getFirstCell().getRow()); + assertEquals(1, oldStyle.getLastCell().getCol()); + assertEquals(SpreadsheetVersion.EXCEL97.getLastRowIndex(), oldStyle.getLastCell().getRow()); + assertTrue(oldStyle.isWholeColumnReference()); + + AreaReference oldStyleNonWholeColumn = new AreaReference("A1:B23", SpreadsheetVersion.EXCEL97); + assertFalse(oldStyleNonWholeColumn.isWholeColumnReference()); + + AreaReference newStyle = AreaReference.getWholeColumn(SpreadsheetVersion.EXCEL2007, "A", "B"); + assertEquals(0, newStyle.getFirstCell().getCol()); + assertEquals(0, newStyle.getFirstCell().getRow()); + assertEquals(1, newStyle.getLastCell().getCol()); + assertEquals(SpreadsheetVersion.EXCEL2007.getLastRowIndex(), newStyle.getLastCell().getRow()); + assertTrue(newStyle.isWholeColumnReference()); + + AreaReference newStyleNonWholeColumn = new AreaReference("A1:B23", SpreadsheetVersion.EXCEL2007); + assertFalse(newStyleNonWholeColumn.isWholeColumnReference()); + } + + public void testWholeRow() { + AreaReference oldStyle = AreaReference.getWholeRow(SpreadsheetVersion.EXCEL97, "1", "2"); + assertEquals(0, oldStyle.getFirstCell().getCol()); + assertEquals(0, oldStyle.getFirstCell().getRow()); + assertEquals(SpreadsheetVersion.EXCEL97.getLastColumnIndex(), oldStyle.getLastCell().getCol()); + assertEquals(1, oldStyle.getLastCell().getRow()); + + AreaReference newStyle = AreaReference.getWholeRow(SpreadsheetVersion.EXCEL2007, "1", "2"); + assertEquals(0, newStyle.getFirstCell().getCol()); + assertEquals(0, newStyle.getFirstCell().getRow()); + assertEquals(SpreadsheetVersion.EXCEL2007.getLastColumnIndex(), newStyle.getLastCell().getCol()); + assertEquals(1, newStyle.getLastCell().getRow()); + } + +} From 369c5933800916e03401694baca8018ae2f06371 Mon Sep 17 00:00:00 2001 From: David North Date: Fri, 12 Jun 2015 15:29:20 +0000 Subject: [PATCH 185/301] Add explicit test for NPE only caught by other tests. Test '97 fallback behaviour generally. https://bz.apache.org/bugzilla/show_bug.cgi?id=56328 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1685104 13f79535-47bb-0310-9956-ffa450edef68 --- src/testcases/org/apache/poi/ss/util/TestAreaReference.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/testcases/org/apache/poi/ss/util/TestAreaReference.java b/src/testcases/org/apache/poi/ss/util/TestAreaReference.java index 43158038b..525abc989 100644 --- a/src/testcases/org/apache/poi/ss/util/TestAreaReference.java +++ b/src/testcases/org/apache/poi/ss/util/TestAreaReference.java @@ -47,4 +47,9 @@ public class TestAreaReference extends TestCase { assertEquals(1, newStyle.getLastCell().getRow()); } + @SuppressWarnings("deprecation") // deliberate test for behaviour if deprecated constructor used. + public void testFallbackToExcel97IfVersionNotSupplied() { + assertTrue(new AreaReference("A:B").isWholeColumnReference()); + assertTrue(AreaReference.isWholeColumnReference(null, new CellReference("A$1"), new CellReference("A$" + SpreadsheetVersion.EXCEL97.getMaxRows()))); + } } From f77cdd40b4681ddf9bd70dd7e91bff4fb8f6d71f Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 15 Jun 2015 08:17:08 +0000 Subject: [PATCH 186/301] add missing license header git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1685506 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/ss/formula/TestFormulaParser.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/ooxml/testcases/org/apache/poi/ss/formula/TestFormulaParser.java b/src/ooxml/testcases/org/apache/poi/ss/formula/TestFormulaParser.java index 478ad13bf..f90c653a9 100644 --- a/src/ooxml/testcases/org/apache/poi/ss/formula/TestFormulaParser.java +++ b/src/ooxml/testcases/org/apache/poi/ss/formula/TestFormulaParser.java @@ -1,3 +1,21 @@ +/* + * ==================================================================== + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ==================================================================== + */ package org.apache.poi.ss.formula; import org.apache.poi.hssf.usermodel.HSSFEvaluationWorkbook; From dafeb245649ddbf4bdf93492f95a093cf5d8b058 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 15 Jun 2015 09:38:29 +0000 Subject: [PATCH 187/301] One more file with missing license header git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1685522 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/ss/util/TestAreaReference.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/testcases/org/apache/poi/ss/util/TestAreaReference.java b/src/testcases/org/apache/poi/ss/util/TestAreaReference.java index 525abc989..943fbe8d2 100644 --- a/src/testcases/org/apache/poi/ss/util/TestAreaReference.java +++ b/src/testcases/org/apache/poi/ss/util/TestAreaReference.java @@ -1,3 +1,21 @@ +/* + * ==================================================================== + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ==================================================================== + */ package org.apache.poi.ss.util; import org.apache.poi.ss.SpreadsheetVersion; From 32bf29fba689cd7c23e5e7dd2e5012a2521fa0be Mon Sep 17 00:00:00 2001 From: David North Date: Mon, 15 Jun 2015 09:44:12 +0000 Subject: [PATCH 188/301] Whitespace seems to be confusing the license header check; try pasting one off another file. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1685523 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/ss/util/TestAreaReference.java | 34 +++++++++---------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/src/testcases/org/apache/poi/ss/util/TestAreaReference.java b/src/testcases/org/apache/poi/ss/util/TestAreaReference.java index 943fbe8d2..de2226d6a 100644 --- a/src/testcases/org/apache/poi/ss/util/TestAreaReference.java +++ b/src/testcases/org/apache/poi/ss/util/TestAreaReference.java @@ -1,21 +1,19 @@ -/* - * ==================================================================== - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ==================================================================== - */ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ package org.apache.poi.ss.util; import org.apache.poi.ss.SpreadsheetVersion; From eee8a0742c2f86c737f0fa04ae509068a108dbdb Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Tue, 16 Jun 2015 05:32:22 +0000 Subject: [PATCH 189/301] remove some older jacoco jars from the lib-directories to avoid loading outdated 3rd party code git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1685702 13f79535-47bb-0310-9956-ffa450edef68 --- build.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build.xml b/build.xml index c1b976776..ca705de4b 100644 --- a/build.xml +++ b/build.xml @@ -419,9 +419,12 @@ under the License. + + + From 8473e57b71bb45dc4239ba429afaba8350f7b96a Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Tue, 16 Jun 2015 05:42:36 +0000 Subject: [PATCH 190/301] Bug 57963: Add a task to the integration-test build which verifies that most examples can be built without scratchpad.jar git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1685705 13f79535-47bb-0310-9956-ffa450edef68 --- src/integrationtest/build.xml | 88 +++++++++++++++++++++++++++++++++-- 1 file changed, 85 insertions(+), 3 deletions(-) diff --git a/src/integrationtest/build.xml b/src/integrationtest/build.xml index 21d327a12..795788e44 100644 --- a/src/integrationtest/build.xml +++ b/src/integrationtest/build.xml @@ -19,7 +19,12 @@ under the License. --> - Test-Ant file which verifies that the Apache POI distribution build sources can be compiled successfully. + Test-Ant file which verifies that the Apache POI distribution build sources can be compiled successfully. + + Before running this, you should execute the "assemble" target in the main build.xml to have the packaged files + created correctly. + + @@ -27,12 +32,14 @@ under the License. - + + + - + @@ -60,4 +67,79 @@ under the License. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 854a808a7a2243f63f4a8dd4147e1af773be07dd Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Wed, 17 Jun 2015 08:31:13 +0000 Subject: [PATCH 191/301] Add settings for the Eclipse plugin "moreunit" git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1685939 13f79535-47bb-0310-9956-ffa450edef68 --- .settings/org.moreunit.prefs | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .settings/org.moreunit.prefs diff --git a/.settings/org.moreunit.prefs b/.settings/org.moreunit.prefs new file mode 100644 index 000000000..659afaf8c --- /dev/null +++ b/.settings/org.moreunit.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +org.moreunit.preferences.version=2 +org.moreunit.unitsourcefolder=ApachePOI\:src/java\:ApachePOI\:src/testcases\#ApachePOI\:src/java\:ApachePOI\:src/ooxml/testcases\#ApachePOI\:src/java\:ApachePOI\:src/scratchpad/testcases\#ApachePOI\:src/java\:ApachePOI\:src/excelant/testcases\#ApachePOI\:src/java\:ApachePOI\:src/integrationtest +org.moreunit.useprojectsettings=true From e7d33e4ccbbe9247ca3c3ea93941d62e194188d4 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Wed, 17 Jun 2015 14:26:31 +0000 Subject: [PATCH 192/301] Make setLandscape(false) and setLeftToRight(false) do what one would expect git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1686019 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xssf/usermodel/XSSFPrintSetup.java | 4 ++ .../xssf/usermodel/TestXSSFPrintSetup.java | 46 ++++++++++++++++--- 2 files changed, 44 insertions(+), 6 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPrintSetup.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPrintSetup.java index ecbbe8ecd..43b8c5a21 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPrintSetup.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPrintSetup.java @@ -120,6 +120,8 @@ public class XSSFPrintSetup implements PrintSetup { public void setLeftToRight(boolean ltor) { if (ltor) setPageOrder(PageOrder.OVER_THEN_DOWN); + else + setPageOrder(PageOrder.DOWN_THEN_OVER); } /** @@ -130,6 +132,8 @@ public class XSSFPrintSetup implements PrintSetup { public void setLandscape(boolean ls) { if (ls) setOrientation(PrintOrientation.LANDSCAPE); + else + setOrientation(PrintOrientation.PORTRAIT); } /** diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPrintSetup.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPrintSetup.java index 3001197cd..6cda3aff2 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPrintSetup.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPrintSetup.java @@ -19,12 +19,18 @@ package org.apache.poi.xssf.usermodel; import junit.framework.TestCase; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.*; -import org.apache.poi.ss.usermodel.PaperSize; import org.apache.poi.ss.usermodel.PageOrder; -import org.apache.poi.ss.usermodel.PrintOrientation; +import org.apache.poi.ss.usermodel.PaperSize; import org.apache.poi.ss.usermodel.PrintCellComments; +import org.apache.poi.ss.usermodel.PrintOrientation; import org.apache.poi.xssf.XSSFITestDataProvider; +import org.junit.Test; +import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPageMargins; +import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPageSetup; +import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet; +import org.openxmlformats.schemas.spreadsheetml.x2006.main.STCellComments; +import org.openxmlformats.schemas.spreadsheetml.x2006.main.STOrientation; +import org.openxmlformats.schemas.spreadsheetml.x2006.main.STPageOrder; /** * Tests for {@link XSSFPrintSetup} @@ -226,10 +232,10 @@ public class TestXSSFPrintSetup extends TestCase { assertEquals(true, s2.getCTWorksheet().isSetPageMargins()); // Round trip and check - wb = XSSFITestDataProvider.instance.writeOutAndReadBack(wb); + XSSFWorkbook wbBack = XSSFITestDataProvider.instance.writeOutAndReadBack(wb); - s1 = wb.getSheetAt(0); - s2 = wb.getSheetAt(1); + s1 = wbBack.getSheetAt(0); + s2 = wbBack.getSheetAt(1); assertEquals(true, s1.getCTWorksheet().isSetPageSetup()); assertEquals(true, s1.getCTWorksheet().isSetPageMargins()); @@ -239,6 +245,8 @@ public class TestXSSFPrintSetup extends TestCase { print = s1.getPrintSetup(); assertEquals(3, print.getCopies()); assertEquals(true, print.getLandscape()); + + wb.close(); } /** @@ -248,4 +256,30 @@ public class TestXSSFPrintSetup extends TestCase { public void testRoundTrip() { // TODO } + + @Test + public void testSetLandscapeFalse() throws Exception { + XSSFPrintSetup ps = new XSSFPrintSetup(CTWorksheet.Factory.newInstance()); + + assertFalse(ps.getLandscape()); + + ps.setLandscape(true); + assertTrue(ps.getLandscape()); + + ps.setLandscape(false); + assertFalse(ps.getLandscape()); + } + + @Test + public void testSetLeftToRight() throws Exception { + XSSFPrintSetup ps = new XSSFPrintSetup(CTWorksheet.Factory.newInstance()); + + assertFalse(ps.getLeftToRight()); + + ps.setLeftToRight(true); + assertTrue(ps.getLeftToRight()); + + ps.setLeftToRight(false); + assertFalse(ps.getLeftToRight()); + } } From 13eb52f12f57269b8c31e7005c0b32f1bf0695f5 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Wed, 17 Jun 2015 14:53:38 +0000 Subject: [PATCH 193/301] Move more tests into base class and add a TestSXSSFBugs class to verify some things that are supported against SXSSFWorkbook as well git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1686035 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xssf/usermodel/TestSXSSFBugs.java | 82 +++++++ .../poi/xssf/usermodel/TestXSSFBugs.java | 129 +---------- .../apache/poi/hssf/usermodel/TestBugs.java | 94 ++++++-- .../ss/usermodel/BaseTestBugzillaIssues.java | 207 +++++++++++++++++- 4 files changed, 367 insertions(+), 145 deletions(-) create mode 100644 src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestSXSSFBugs.java diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestSXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestSXSSFBugs.java new file mode 100644 index 000000000..7a2879558 --- /dev/null +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestSXSSFBugs.java @@ -0,0 +1,82 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.xssf.usermodel; + +import static org.junit.Assert.assertEquals; + +import org.apache.poi.ss.usermodel.BaseTestBugzillaIssues; +import org.apache.poi.ss.usermodel.PrintSetup; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.SXSSFITestDataProvider; +import org.apache.poi.xssf.streaming.SXSSFWorkbook; +import org.junit.Ignore; +import org.junit.Test; + +public final class TestSXSSFBugs extends BaseTestBugzillaIssues { + public TestSXSSFBugs() { + super(SXSSFITestDataProvider.instance); + } + + // override some tests which do not work for SXSSF + @Override @Ignore("cloneSheet() not implemented") @Test public void bug18800() { /* cloneSheet() not implemented */ } + @Override @Ignore("cloneSheet() not implemented") @Test public void bug22720() { /* cloneSheet() not implemented */ } + @Override @Ignore("Evaluation is not supported") @Test public void bug43093() { /* Evaluation is not supported */ } + @Override @Ignore("Evaluation is not supported") @Test public void bug51024() { /* Evaluation is not supported */ } + @Override @Ignore("Evaluation is not supported") @Test public void bug46729_testMaxFunctionArguments() { /* Evaluation is not supported */ } + @Override @Ignore("Evaluation is not supported") @Test public void stackoverflow26437323() { /* Evaluation is not supported */ } + @Override @Ignore("Evaluation is not supported") @Test public void bug47815() { /* Evaluation is not supported */ } + + /** + * Setting repeating rows and columns shouldn't break + * any print settings that were there before + */ + @SuppressWarnings("deprecation") + @Test + public void bug49253() throws Exception { + Workbook wb1 = new SXSSFWorkbook(); + Workbook wb2 = new SXSSFWorkbook(); + + // No print settings before repeating + Sheet s1 = wb1.createSheet(); + + wb1.setRepeatingRowsAndColumns(0, 2, 3, 1, 2); + + PrintSetup ps1 = s1.getPrintSetup(); + assertEquals(false, ps1.getValidSettings()); + assertEquals(false, ps1.getLandscape()); + + + // Had valid print settings before repeating + Sheet s2 = wb2.createSheet(); + PrintSetup ps2 = s2.getPrintSetup(); + + ps2.setLandscape(false); + assertEquals(true, ps2.getValidSettings()); + assertEquals(false, ps2.getLandscape()); + + wb2.setRepeatingRowsAndColumns(0, 2, 3, 1, 2); + + ps2 = s2.getPrintSetup(); + assertEquals(true, ps2.getValidSettings()); + assertEquals(false, ps2.getLandscape()); + + wb1.close(); + wb2.close(); + } +} diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index 60f6188a0..3dd7b0f26 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -74,6 +74,7 @@ import org.apache.poi.ss.usermodel.FormulaEvaluator; import org.apache.poi.ss.usermodel.Hyperlink; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.ss.usermodel.Name; +import org.apache.poi.ss.usermodel.PrintSetup; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; @@ -349,42 +350,6 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { assertEquals(null, cs.getFillBackgroundColorColor().getARGBHex()); } - /** - * With HSSF, if you create a font, don't change it, and - * create a 2nd, you really do get two fonts that you - * can alter as and when you want. - * With XSSF, that wasn't the case, but this verfies - * that it now is again - */ - @Test - public void bug48718() throws Exception { - // Verify the HSSF behaviour - // Then ensure the same for XSSF - Workbook[] wbs = new Workbook[] { - new HSSFWorkbook(), - new XSSFWorkbook() - }; - int[] initialFonts = new int[] { 4, 1 }; - for(int i=0; i objects = wb.getAllEmbeddedObjects(); assertEquals(1, objects.size()); - HSSFObjectData obj = (HSSFObjectData)objects.get(0); + HSSFObjectData obj = objects.get(0); assertNotNull(obj); // Peek inside the underlying record @@ -975,9 +977,10 @@ public final class TestBugs extends BaseTestBugzillaIssues { /** * Test that fonts get added properly + * @throws IOException */ @Test - public void bug45338() { + public void bug45338() throws IOException { HSSFWorkbook wb = new HSSFWorkbook(); assertEquals(4, wb.getNumberOfFonts()); @@ -1056,6 +1059,8 @@ public final class TestBugs extends BaseTestBugzillaIssues { "Thingy", false, true, (short)2, (byte)2 ) ); + + wb.close(); } /** @@ -1200,9 +1205,10 @@ public final class TestBugs extends BaseTestBugzillaIssues { /** * People are all getting confused about the last * row and cell number + * @throws IOException */ @Test - public void bug30635() { + public void bug30635() throws IOException { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet s = wb.createSheet(); @@ -1245,6 +1251,8 @@ public final class TestBugs extends BaseTestBugzillaIssues { assertEquals(0, r.getFirstCellNum()); assertEquals(5, r.getLastCellNum()); // last cell # + 1 assertEquals(3, r.getPhysicalNumberOfCells()); + + wb.close(); } /** @@ -1571,7 +1579,7 @@ public final class TestBugs extends BaseTestBugzillaIssues { try { OPOIFSFileSystem fs = new OPOIFSFileSystem( HSSFITestDataProvider.instance.openWorkbookStream("46904.xls")); - new HSSFWorkbook(fs.getRoot(), false); + new HSSFWorkbook(fs.getRoot(), false).close(); fail(); } catch(OldExcelFormatException e) { assertTrue(e.getMessage().startsWith( @@ -1581,8 +1589,12 @@ public final class TestBugs extends BaseTestBugzillaIssues { try { NPOIFSFileSystem fs = new NPOIFSFileSystem( HSSFITestDataProvider.instance.openWorkbookStream("46904.xls")); - new HSSFWorkbook(fs.getRoot(), false); - fail(); + try { + new HSSFWorkbook(fs.getRoot(), false).close(); + fail(); + } finally { + fs.close(); + } } catch(OldExcelFormatException e) { assertTrue(e.getMessage().startsWith( "The supplied spreadsheet seems to be Excel" @@ -2020,9 +2032,10 @@ public final class TestBugs extends BaseTestBugzillaIssues { /** * Last row number when shifting rows + * @throws IOException */ @Test - public void bug50416LastRowNumber() { + public void bug50416LastRowNumber() throws IOException { // Create the workbook with 1 sheet which contains 3 rows HSSFWorkbook workbook = new HSSFWorkbook(); Sheet sheet = workbook.createSheet("Bug50416"); @@ -2071,6 +2084,8 @@ public final class TestBugs extends BaseTestBugzillaIssues { assertEquals("Cell A,2", sheet.getRow(0).getCell(0).getStringCellValue()); assertEquals("Cell A,1", sheet.getRow(1).getCell(0).getStringCellValue()); assertEquals("Cell A,3", sheet.getRow(2).getCell(0).getStringCellValue()); + + workbook.close(); } /** @@ -2376,6 +2391,7 @@ public final class TestBugs extends BaseTestBugzillaIssues { InternalSheet ish = HSSFTestHelper.getSheetForTest(sh); PageSettingsBlock psb = (PageSettingsBlock) ish.getRecords().get(13); psb.visitContainedRecords(new RecordAggregate.RecordVisitor() { + @Override public void visitRecord(Record r) { list.add(r.getSid()); } @@ -2385,7 +2401,7 @@ public final class TestBugs extends BaseTestBugzillaIssues { } @Test - public void bug52272(){ + public void bug52272() throws IOException{ HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sh = wb.createSheet(); HSSFPatriarch p = sh.createDrawingPatriarch(); @@ -2395,14 +2411,17 @@ public final class TestBugs extends BaseTestBugzillaIssues { HSSFSheet sh2 = wb.cloneSheet(0); assertNotNull(sh2.getDrawingPatriarch()); + + wb.close(); } @Test - public void bug53432(){ + public void bug53432() throws IOException{ Workbook wb = new HSSFWorkbook(); //or new HSSFWorkbook(); wb.addPicture(new byte[]{123,22}, Workbook.PICTURE_TYPE_JPEG); assertEquals(wb.getAllPictures().size(), 1); + wb.close(); wb = new HSSFWorkbook(); wb = writeOutAndReadBack((HSSFWorkbook) wb); assertEquals(wb.getAllPictures().size(), 0); @@ -2411,6 +2430,8 @@ public final class TestBugs extends BaseTestBugzillaIssues { wb = writeOutAndReadBack((HSSFWorkbook) wb); assertEquals(wb.getAllPictures().size(), 1); + + wb.close(); } @Test @@ -2560,12 +2581,12 @@ public final class TestBugs extends BaseTestBugzillaIssues { Workbook wbBack = HSSFTestDataSamples.writeOutAndReadBack(wb); assertEquals(4, wbBack.getNumberOfSheets()); -// OutputStream fOut = new FileOutputStream("/tmp/56325a.xls"); -// try { -// wb.write(fOut); -// } finally { -// fOut.close(); -// } + OutputStream fOut = new FileOutputStream("C:\\temp\\56325a.xls"); + try { + wb.write(fOut); + } finally { + fOut.close(); + } } /** @@ -2758,4 +2779,39 @@ public final class TestBugs extends BaseTestBugzillaIssues { wb.close(); } + + @Test + public void test48043() throws IOException { + HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("56325a.xls"); + + wb.removeSheetAt(2); + wb.removeSheetAt(1); + + //Sheet s = wb.createSheet("sheetname"); + Sheet s = wb.getSheetAt(0); + Row row = s.createRow(0); + Cell cell = row.createCell(0); + + cell.setCellFormula( + "IF(AND(ISBLANK(A10)," + + "ISBLANK(B10)),\"\"," + + "CONCATENATE(A10,\"-\",B10))"); + + FormulaEvaluator eval = wb.getCreationHelper().createFormulaEvaluator(); + + eval.evaluateAll(); + + /*OutputStream out = new FileOutputStream("C:\\temp\\48043.xls"); + try { + wb.write(out); + } finally { + out.close(); + }*/ + + Workbook wbBack = HSSFTestDataSamples.writeOutAndReadBack(wb); + assertNotNull(wbBack); + wbBack.close(); + + wb.close(); + } } diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java index 8b6732ca4..0051e82dd 100644 --- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java +++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java @@ -123,7 +123,7 @@ public abstract class BaseTestBugzillaIssues { * Merged regions were being removed from the parent in cloned sheets */ @Test - public final void bug22720() { + public void bug22720() { Workbook workBook = _testDataProvider.createWorkbook(); workBook.createSheet("TEST"); Sheet template = workBook.getSheetAt(0); @@ -247,7 +247,7 @@ public abstract class BaseTestBugzillaIssues { } @Test - public final void bug18800() { + public void bug18800() { Workbook book = _testDataProvider.createWorkbook(); book.createSheet("TEST"); Sheet sheet = book.cloneSheet(0); @@ -276,7 +276,7 @@ public abstract class BaseTestBugzillaIssues { } @Test - public final void bug43093() { + public void bug43093() { Workbook xlw = _testDataProvider.createWorkbook(); addNewSheetWithCellsA1toD4(xlw, 1); @@ -296,7 +296,7 @@ public abstract class BaseTestBugzillaIssues { } @Test - public final void bug46729_testMaxFunctionArguments(){ + public void bug46729_testMaxFunctionArguments(){ String[] func = {"COUNT", "AVERAGE", "MAX", "MIN", "OR", "SUBTOTAL", "SKEW"}; SpreadsheetVersion ssVersion = _testDataProvider.getSpreadsheetVersion(); @@ -534,7 +534,7 @@ public abstract class BaseTestBugzillaIssues { assertAlmostEquals(1950, s.getColumnWidth(10), fontAccuracy); assertAlmostEquals(2225, s.getColumnWidth(11), fontAccuracy); } - + /** * =ISNUMBER(SEARCH("AM",A1)) evaluation */ @@ -806,4 +806,201 @@ public abstract class BaseTestBugzillaIssues { wb.close(); } + + /** + * With HSSF, if you create a font, don't change it, and + * create a 2nd, you really do get two fonts that you + * can alter as and when you want. + * With XSSF, that wasn't the case, but this verfies + * that it now is again + */ + @Test + public void bug48718() throws Exception { + Workbook wb = _testDataProvider.createWorkbook(); + int startingFonts = wb instanceof HSSFWorkbook ? 4 : 1; + + assertEquals(startingFonts, wb.getNumberOfFonts()); + + // Get a font, and slightly change it + Font a = wb.createFont(); + assertEquals(startingFonts+1, wb.getNumberOfFonts()); + a.setFontHeightInPoints((short)23); + assertEquals(startingFonts+1, wb.getNumberOfFonts()); + + // Get two more, unchanged + /*Font b =*/ wb.createFont(); + assertEquals(startingFonts+2, wb.getNumberOfFonts()); + /*Font c =*/ wb.createFont(); + assertEquals(startingFonts+3, wb.getNumberOfFonts()); + } + + @Test + public void bug57430() throws Exception { + Workbook wb = _testDataProvider.createWorkbook(); + try { + wb.createSheet("Sheet1"); + + Name name1 = wb.createName(); + name1.setNameName("FMLA"); + name1.setRefersToFormula("Sheet1!$B$3"); + } finally { + wb.close(); + } + } + + @Test + public void bug56981() throws IOException { + Workbook wb = _testDataProvider.createWorkbook(); + CellStyle vertTop = wb.createCellStyle(); + vertTop.setVerticalAlignment(CellStyle.VERTICAL_TOP); + CellStyle vertBottom = wb.createCellStyle(); + vertBottom.setVerticalAlignment(CellStyle.VERTICAL_BOTTOM); + Sheet sheet = wb.createSheet("Sheet 1"); + Row row = sheet.createRow(0); + Cell top = row.createCell(0); + Cell bottom = row.createCell(1); + top.setCellValue("Top"); + top.setCellStyle(vertTop); // comment this out to get all bottom-aligned + // cells + bottom.setCellValue("Bottom"); + bottom.setCellStyle(vertBottom); + row.setHeightInPoints(85.75f); // make it obvious + + /*FileOutputStream out = new FileOutputStream("c:\\temp\\56981.xlsx"); + try { + wb.write(out); + } finally { + out.close(); + }*/ + + wb.close(); + } + + @Test + public void test57973() throws IOException { + Workbook wb = _testDataProvider.createWorkbook(); + + CreationHelper factory = wb.getCreationHelper(); + + Sheet sheet = wb.createSheet(); + Drawing drawing = sheet.createDrawingPatriarch(); + ClientAnchor anchor = factory.createClientAnchor(); + + Cell cell0 = sheet.createRow(0).createCell(0); + cell0.setCellValue("Cell0"); + + Comment comment0 = drawing.createCellComment(anchor); + RichTextString str0 = factory.createRichTextString("Hello, World1!"); + comment0.setString(str0); + comment0.setAuthor("Apache POI"); + cell0.setCellComment(comment0); + + anchor = factory.createClientAnchor(); + anchor.setCol1(1); + anchor.setCol2(1); + anchor.setRow1(1); + anchor.setRow2(1); + Cell cell1 = sheet.createRow(3).createCell(5); + cell1.setCellValue("F4"); + Comment comment1 = drawing.createCellComment(anchor); + RichTextString str1 = factory.createRichTextString("Hello, World2!"); + comment1.setString(str1); + comment1.setAuthor("Apache POI"); + cell1.setCellComment(comment1); + + Cell cell2 = sheet.createRow(2).createCell(2); + cell2.setCellValue("C3"); + + anchor = factory.createClientAnchor(); + anchor.setCol1(2); + anchor.setCol2(2); + anchor.setRow1(2); + anchor.setRow2(2); + + Comment comment2 = drawing.createCellComment(anchor); + RichTextString str2 = factory.createRichTextString("XSSF can set cell comments"); + //apply custom font to the text in the comment + Font font = wb.createFont(); + font.setFontName("Arial"); + font.setFontHeightInPoints((short)14); + font.setBoldweight(Font.BOLDWEIGHT_BOLD); + font.setColor(IndexedColors.RED.getIndex()); + str2.applyFont(font); + + comment2.setString(str2); + comment2.setAuthor("Apache POI"); + comment2.setColumn(2); + comment2.setRow(2); + + /*OutputStream out = new FileOutputStream("C:\\temp\\57973.xlsx"); + try { + wb.write(out); + } finally { + out.close(); + }*/ + + wb.close(); + } + + /** + * Ensures that XSSF and HSSF agree with each other, + * and with the docs on when fetching the wrong + * kind of value from a Formula cell + */ + @Test + public void bug47815() { + Workbook wb = _testDataProvider.createWorkbook(); + Sheet s = wb.createSheet(); + Row r = s.createRow(0); + + // Setup + Cell cn = r.createCell(0, Cell.CELL_TYPE_NUMERIC); + cn.setCellValue(1.2); + Cell cs = r.createCell(1, Cell.CELL_TYPE_STRING); + cs.setCellValue("Testing"); + + Cell cfn = r.createCell(2, Cell.CELL_TYPE_FORMULA); + cfn.setCellFormula("A1"); + Cell cfs = r.createCell(3, Cell.CELL_TYPE_FORMULA); + cfs.setCellFormula("B1"); + + FormulaEvaluator fe = wb.getCreationHelper().createFormulaEvaluator(); + assertEquals(Cell.CELL_TYPE_NUMERIC, fe.evaluate(cfn).getCellType()); + assertEquals(Cell.CELL_TYPE_STRING, fe.evaluate(cfs).getCellType()); + fe.evaluateFormulaCell(cfn); + fe.evaluateFormulaCell(cfs); + + // Now test + assertEquals(Cell.CELL_TYPE_NUMERIC, cn.getCellType()); + assertEquals(Cell.CELL_TYPE_STRING, cs.getCellType()); + assertEquals(Cell.CELL_TYPE_FORMULA, cfn.getCellType()); + assertEquals(Cell.CELL_TYPE_NUMERIC, cfn.getCachedFormulaResultType()); + assertEquals(Cell.CELL_TYPE_FORMULA, cfs.getCellType()); + assertEquals(Cell.CELL_TYPE_STRING, cfs.getCachedFormulaResultType()); + + // Different ways of retrieving + assertEquals(1.2, cn.getNumericCellValue(), 0); + try { + cn.getRichStringCellValue(); + fail(); + } catch(IllegalStateException e) {} + + assertEquals("Testing", cs.getStringCellValue()); + try { + cs.getNumericCellValue(); + fail(); + } catch(IllegalStateException e) {} + + assertEquals(1.2, cfn.getNumericCellValue(), 0); + try { + cfn.getRichStringCellValue(); + fail(); + } catch(IllegalStateException e) {} + + assertEquals("Testing", cfs.getStringCellValue()); + try { + cfs.getNumericCellValue(); + fail(); + } catch(IllegalStateException e) {} + } } From ebf65abac72475f6100ede9ddb6a318a0d4032fd Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Wed, 17 Jun 2015 20:41:08 +0000 Subject: [PATCH 194/301] Comment out writing to file in c:/temp which breaks the build now git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1686106 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/hssf/usermodel/TestBugs.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java index 0dbd00fa4..3fd83b4cf 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java @@ -2581,12 +2581,12 @@ public final class TestBugs extends BaseTestBugzillaIssues { Workbook wbBack = HSSFTestDataSamples.writeOutAndReadBack(wb); assertEquals(4, wbBack.getNumberOfSheets()); - OutputStream fOut = new FileOutputStream("C:\\temp\\56325a.xls"); - try { - wb.write(fOut); - } finally { - fOut.close(); - } +// OutputStream fOut = new FileOutputStream("C:\\temp\\56325a.xls"); +// try { +// wb.write(fOut); +// } finally { +// fOut.close(); +// } } /** From cb5588c4a1094d6b50a67a36cfc3008d548ac2bc Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sat, 20 Jun 2015 11:29:14 +0000 Subject: [PATCH 195/301] Bug 56420: Fix possible NullPointerException when empty cell is included in Sumif calculation git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1686564 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/poi/ss/formula/functions/Sumif.java | 6 ++++++ .../org/apache/poi/xssf/usermodel/TestXSSFBugs.java | 4 ++-- .../org/apache/poi/ss/formula/functions/TestSumif.java | 9 +++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/java/org/apache/poi/ss/formula/functions/Sumif.java b/src/java/org/apache/poi/ss/formula/functions/Sumif.java index ef381adb0..977647fd2 100644 --- a/src/java/org/apache/poi/ss/formula/functions/Sumif.java +++ b/src/java/org/apache/poi/ss/formula/functions/Sumif.java @@ -69,6 +69,12 @@ public final class Sumif extends Var2or3ArgFunction { AreaEval aeSum) { // TODO - junit to prove last arg must be srcColumnIndex and not srcRowIndex I_MatchPredicate mp = Countif.createCriteriaPredicate(arg1, srcRowIndex, srcColumnIndex); + + // handle empty cells + if(mp == null) { + return NumberEval.ZERO; + } + double result = sumMatchingCells(aeRange, mp, aeSum); return new NumberEval(result); } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index 3dd7b0f26..646fe8e5b 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -1538,7 +1538,6 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { * SUMIF was throwing a NPE on some formulas */ @Test - @Ignore("This bug is still to be fixed") public void testBug56420SumIfNPE() throws Exception { XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("56420.xlsx"); @@ -1548,7 +1547,8 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { Row r = sheet.getRow(2); Cell c = r.getCell(2); assertEquals("SUMIF($A$1:$A$4,A3,$B$1:$B$4)", c.getCellFormula()); - evaluator.evaluateInCell(c); + Cell eval = evaluator.evaluateInCell(c); + assertEquals(0.0, eval.getNumericCellValue(), 0.0001); } private void bug53798Work(Workbook wb, File xlsOutput) throws IOException { diff --git a/src/testcases/org/apache/poi/ss/formula/functions/TestSumif.java b/src/testcases/org/apache/poi/ss/formula/functions/TestSumif.java index 6cee5eab7..c761d22f1 100644 --- a/src/testcases/org/apache/poi/ss/formula/functions/TestSumif.java +++ b/src/testcases/org/apache/poi/ss/formula/functions/TestSumif.java @@ -21,6 +21,8 @@ import junit.framework.AssertionFailedError; import junit.framework.TestCase; import org.apache.poi.ss.formula.eval.AreaEval; +import org.apache.poi.ss.formula.eval.BlankEval; +import org.apache.poi.ss.formula.eval.ErrorEval; import org.apache.poi.ss.formula.eval.NumberEval; import org.apache.poi.ss.formula.eval.NumericValueEval; import org.apache.poi.ss.formula.eval.StringEval; @@ -107,4 +109,11 @@ public final class TestSumif extends TestCase { confirmDouble(60, ve); } + + public void testEvaluateException() { + assertEquals(ErrorEval.VALUE_INVALID, invokeSumif(-1, -1, BlankEval.instance, new NumberEval(30.0))); + assertEquals(ErrorEval.VALUE_INVALID, invokeSumif(-1, -1, BlankEval.instance, new NumberEval(30.0), new NumberEval(30.0))); + assertEquals(ErrorEval.VALUE_INVALID, invokeSumif(-1, -1, new NumberEval(30.0), BlankEval.instance, new NumberEval(30.0))); + assertEquals(ErrorEval.VALUE_INVALID, invokeSumif(-1, -1, new NumberEval(30.0), new NumberEval(30.0), BlankEval.instance)); + } } From e4f5df42f6bffe3d4e78bdc6392bf633db51fc65 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sat, 20 Jun 2015 13:10:28 +0000 Subject: [PATCH 196/301] Bug 56655: Fix Sumifs for cases where the criteria is in error. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1686610 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/ss/formula/functions/Countif.java | 11 +- .../poi/ss/formula/functions/Sumifs.java | 28 ++++- .../poi/xssf/usermodel/TestUnfixedBugs.java | 63 ---------- .../usermodel/TestXSSFFormulaEvaluation.java | 108 ++++++++++++++---- .../poi/ss/formula/functions/TestSumifs.java | 81 +++++++++++++ 5 files changed, 203 insertions(+), 88 deletions(-) diff --git a/src/java/org/apache/poi/ss/formula/functions/Countif.java b/src/java/org/apache/poi/ss/formula/functions/Countif.java index 6f27fdf48..01f608a54 100644 --- a/src/java/org/apache/poi/ss/formula/functions/Countif.java +++ b/src/java/org/apache/poi/ss/formula/functions/Countif.java @@ -30,7 +30,7 @@ import org.apache.poi.ss.formula.eval.RefEval; import org.apache.poi.ss.formula.eval.StringEval; import org.apache.poi.ss.formula.eval.ValueEval; import org.apache.poi.ss.formula.functions.CountUtils.I_MatchPredicate; -import org.apache.poi.ss.usermodel.ErrorConstants; +import org.apache.poi.ss.usermodel.FormulaError; /** * Implementation for the function COUNTIF @@ -254,6 +254,7 @@ public final class Countif extends Fixed2ArgFunction { // boolean values when the target(x) is a string return false; } + @SuppressWarnings("unused") StringEval se = (StringEval)x; Boolean val = parseBoolean(se.getStringValue()); if(val == null) { @@ -286,7 +287,7 @@ public final class Countif extends Fixed2ArgFunction { return evaluate(testValue - _value); } } - private static final class ErrorMatcher extends MatcherBase { + public static final class ErrorMatcher extends MatcherBase { private final int _value; @@ -296,7 +297,7 @@ public final class Countif extends Fixed2ArgFunction { } @Override protected String getValueText() { - return ErrorConstants.getText(_value); + return FormulaError.forInt(_value).getString(); } public boolean matches(ValueEval x) { @@ -306,6 +307,10 @@ public final class Countif extends Fixed2ArgFunction { } return false; } + + public int getValue() { + return _value; + } } public static final class StringMatcher extends MatcherBase { diff --git a/src/java/org/apache/poi/ss/formula/functions/Sumifs.java b/src/java/org/apache/poi/ss/formula/functions/Sumifs.java index 63d35439a..087b72bc1 100644 --- a/src/java/org/apache/poi/ss/formula/functions/Sumifs.java +++ b/src/java/org/apache/poi/ss/formula/functions/Sumifs.java @@ -20,8 +20,14 @@ package org.apache.poi.ss.formula.functions; import org.apache.poi.ss.formula.OperationEvaluationContext; -import org.apache.poi.ss.formula.eval.*; +import org.apache.poi.ss.formula.eval.AreaEval; +import org.apache.poi.ss.formula.eval.ErrorEval; +import org.apache.poi.ss.formula.eval.EvaluationException; +import org.apache.poi.ss.formula.eval.NumberEval; +import org.apache.poi.ss.formula.eval.RefEval; +import org.apache.poi.ss.formula.eval.ValueEval; import org.apache.poi.ss.formula.functions.CountUtils.I_MatchPredicate; +import org.apache.poi.ss.formula.functions.Countif.ErrorMatcher; /** * Implementation for the Excel function SUMIFS

    @@ -60,10 +66,12 @@ public final class Sumifs implements FreeRefFunction { I_MatchPredicate[] mp = new I_MatchPredicate[ae.length]; for(int i = 1, k=0; i < args.length; i += 2, k++){ ae[k] = convertRangeArg(args[i]); + mp[k] = Countif.createCriteriaPredicate(args[i+1], ec.getRowIndex(), ec.getColumnIndex()); } validateCriteriaRanges(ae, sumRange); + validateCriteria(mp); double result = sumMatchingCells(ae, mp, sumRange); return new NumberEval(result); @@ -76,7 +84,7 @@ public final class Sumifs implements FreeRefFunction { * Verify that each criteriaRanges argument contains the same number of rows and columns * as the sumRange argument * - * @throws EvaluationException if + * @throws EvaluationException if the ranges do not match. */ private void validateCriteriaRanges(AreaEval[] criteriaRanges, AreaEval sumRange) throws EvaluationException { for(AreaEval r : criteriaRanges){ @@ -87,6 +95,22 @@ public final class Sumifs implements FreeRefFunction { } } + /** + * Verify that each criteria predicate is valid, i.e. not an error + * + * @throws EvaluationException if there are criteria which resulted in Errors. + */ + private void validateCriteria(I_MatchPredicate[] criteria) throws EvaluationException { + for(I_MatchPredicate predicate : criteria) { + + // check for errors in predicate and return immediately using this error code + if(predicate instanceof ErrorMatcher) { + throw new EvaluationException(ErrorEval.valueOf(((ErrorMatcher)predicate).getValue())); + } + } + } + + /** * * @param ranges criteria ranges, each range must be of the same dimensions as aeSum diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestUnfixedBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestUnfixedBugs.java index b40c4ac1e..83004cb3b 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestUnfixedBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestUnfixedBugs.java @@ -34,7 +34,6 @@ import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.DataFormatter; import org.apache.poi.ss.usermodel.DateUtil; -import org.apache.poi.ss.usermodel.FormulaError; import org.apache.poi.ss.usermodel.RichTextString; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; @@ -219,68 +218,6 @@ public final class TestUnfixedBugs extends TestCase { assertEquals(4, strBack.getIndexOfFormattingRun(2)); } - @Test - public void testBug56655() { - XSSFWorkbook wb = new XSSFWorkbook(); - Sheet sheet = wb.createSheet(); - - setCellFormula(sheet, 0, 0, "#VALUE!"); - setCellFormula(sheet, 0, 1, "SUMIFS(A:A,A:A,#VALUE!)"); - - XSSFFormulaEvaluator.evaluateAllFormulaCells(wb); - - assertEquals(XSSFCell.CELL_TYPE_ERROR, getCell(sheet, 0,0).getCachedFormulaResultType()); - assertEquals(FormulaError.VALUE.getCode(), getCell(sheet, 0,0).getErrorCellValue()); - assertEquals(XSSFCell.CELL_TYPE_ERROR, getCell(sheet, 0,1).getCachedFormulaResultType()); - assertEquals(FormulaError.VALUE.getCode(), getCell(sheet, 0,1).getErrorCellValue()); - } - - @Test - public void testBug56655a() { - XSSFWorkbook wb = new XSSFWorkbook(); - Sheet sheet = wb.createSheet(); - - setCellFormula(sheet, 0, 0, "B1*C1"); - sheet.getRow(0).createCell(1).setCellValue("A"); - setCellFormula(sheet, 1, 0, "B1*C1"); - sheet.getRow(1).createCell(1).setCellValue("A"); - setCellFormula(sheet, 0, 3, "SUMIFS(A:A,A:A,A2)"); - - XSSFFormulaEvaluator.evaluateAllFormulaCells(wb); - - assertEquals(XSSFCell.CELL_TYPE_ERROR, getCell(sheet, 0, 0).getCachedFormulaResultType()); - assertEquals(FormulaError.VALUE.getCode(), getCell(sheet, 0, 0).getErrorCellValue()); - assertEquals(XSSFCell.CELL_TYPE_ERROR, getCell(sheet, 1, 0).getCachedFormulaResultType()); - assertEquals(FormulaError.VALUE.getCode(), getCell(sheet, 1, 0).getErrorCellValue()); - assertEquals(XSSFCell.CELL_TYPE_ERROR, getCell(sheet, 0, 3).getCachedFormulaResultType()); - assertEquals(FormulaError.VALUE.getCode(), getCell(sheet, 0, 3).getErrorCellValue()); - } - - /** - * @param row 0-based - * @param column 0-based - */ - private void setCellFormula(Sheet sheet, int row, int column, String formula) { - Row r = sheet.getRow(row); - if (r == null) { - r = sheet.createRow(row); - } - Cell cell = r.getCell(column); - if (cell == null) { - cell = r.createCell(column); - } - cell.setCellType(XSSFCell.CELL_TYPE_FORMULA); - cell.setCellFormula(formula); - } - - /** - * @param rowNo 0-based - * @param column 0-based - */ - private Cell getCell(Sheet sheet, int rowNo, int column) { - return sheet.getRow(rowNo).getCell(column); - } - @Test public void testBug55752() throws IOException { Workbook wb = new XSSFWorkbook(); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFormulaEvaluation.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFormulaEvaluation.java index c2a7597d3..d56005a57 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFormulaEvaluation.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFormulaEvaluation.java @@ -25,6 +25,7 @@ import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.ss.usermodel.BaseTestFormulaEvaluator; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellValue; +import org.apache.poi.ss.usermodel.FormulaError; import org.apache.poi.ss.usermodel.FormulaEvaluator; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; @@ -186,28 +187,32 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator { // Link and re-try Workbook alt = new XSSFWorkbook(); - alt.createSheet().createRow(0).createCell(0).setCellValue("In another workbook"); - // TODO Implement the rest of this, see bug #57184 -/* - wb.linkExternalWorkbook("alt.xlsx", alt); - - cXSLX_nw_cell.setCellFormula("[alt.xlsx]Sheet1!$A$1"); - // Check it - TODO Is this correct? Or should it become [3]Sheet1!$A$1 ? - assertEquals("[alt.xlsx]Sheet1!$A$1", cXSLX_nw_cell.getCellFormula()); - - // Evaluate it, without a link to that workbook try { + alt.createSheet().createRow(0).createCell(0).setCellValue("In another workbook"); + // TODO Implement the rest of this, see bug #57184 +/* + wb.linkExternalWorkbook("alt.xlsx", alt); + + cXSLX_nw_cell.setCellFormula("[alt.xlsx]Sheet1!$A$1"); + // Check it - TODO Is this correct? Or should it become [3]Sheet1!$A$1 ? + assertEquals("[alt.xlsx]Sheet1!$A$1", cXSLX_nw_cell.getCellFormula()); + + // Evaluate it, without a link to that workbook + try { + evaluator.evaluate(cXSLX_nw_cell); + fail("No cached value and no link to workbook, shouldn't evaluate"); + } catch(Exception e) {} + + // Add a link, check it does + evaluators.put("alt.xlsx", alt.getCreationHelper().createFormulaEvaluator()); + evaluator.setupReferencedWorkbooks(evaluators); + evaluator.evaluate(cXSLX_nw_cell); - fail("No cached value and no link to workbook, shouldn't evaluate"); - } catch(Exception e) {} - - // Add a link, check it does - evaluators.put("alt.xlsx", alt.getCreationHelper().createFormulaEvaluator()); - evaluator.setupReferencedWorkbooks(evaluators); - - evaluator.evaluate(cXSLX_nw_cell); - assertEquals("In another workbook", cXSLX_nw_cell.getStringCellValue()); + assertEquals("In another workbook", cXSLX_nw_cell.getStringCellValue()); */ + } finally { + alt.close(); + } } /** @@ -519,7 +524,6 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator { } } - public void testBug55843f() throws IOException { XSSFWorkbook wb = new XSSFWorkbook(); try { @@ -539,4 +543,68 @@ public final class TestXSSFFormulaEvaluation extends BaseTestFormulaEvaluator { wb.close(); } } + + public void testBug56655() throws IOException { + Workbook wb = new XSSFWorkbook(); + Sheet sheet = wb.createSheet(); + + setCellFormula(sheet, 0, 0, "#VALUE!"); + setCellFormula(sheet, 0, 1, "SUMIFS(A:A,A:A,#VALUE!)"); + + wb.getCreationHelper().createFormulaEvaluator().evaluateAll(); + + assertEquals(XSSFCell.CELL_TYPE_ERROR, getCell(sheet, 0,0).getCachedFormulaResultType()); + assertEquals(FormulaError.VALUE.getCode(), getCell(sheet, 0,0).getErrorCellValue()); + assertEquals(XSSFCell.CELL_TYPE_ERROR, getCell(sheet, 0,1).getCachedFormulaResultType()); + assertEquals(FormulaError.VALUE.getCode(), getCell(sheet, 0,1).getErrorCellValue()); + + wb.close(); + } + + public void testBug56655a() throws IOException { + Workbook wb = new XSSFWorkbook(); + Sheet sheet = wb.createSheet(); + + setCellFormula(sheet, 0, 0, "B1*C1"); + sheet.getRow(0).createCell(1).setCellValue("A"); + setCellFormula(sheet, 1, 0, "B1*C1"); + sheet.getRow(1).createCell(1).setCellValue("A"); + setCellFormula(sheet, 0, 3, "SUMIFS(A:A,A:A,A2)"); + + wb.getCreationHelper().createFormulaEvaluator().evaluateAll(); + + assertEquals(XSSFCell.CELL_TYPE_ERROR, getCell(sheet, 0, 0).getCachedFormulaResultType()); + assertEquals(FormulaError.VALUE.getCode(), getCell(sheet, 0, 0).getErrorCellValue()); + assertEquals(XSSFCell.CELL_TYPE_ERROR, getCell(sheet, 1, 0).getCachedFormulaResultType()); + assertEquals(FormulaError.VALUE.getCode(), getCell(sheet, 1, 0).getErrorCellValue()); + assertEquals(XSSFCell.CELL_TYPE_ERROR, getCell(sheet, 0, 3).getCachedFormulaResultType()); + assertEquals(FormulaError.VALUE.getCode(), getCell(sheet, 0, 3).getErrorCellValue()); + + wb.close(); + } + + /** + * @param row 0-based + * @param column 0-based + */ + private void setCellFormula(Sheet sheet, int row, int column, String formula) { + Row r = sheet.getRow(row); + if (r == null) { + r = sheet.createRow(row); + } + Cell cell = r.getCell(column); + if (cell == null) { + cell = r.createCell(column); + } + cell.setCellType(XSSFCell.CELL_TYPE_FORMULA); + cell.setCellFormula(formula); + } + + /** + * @param rowNo 0-based + * @param column 0-based + */ + private Cell getCell(Sheet sheet, int rowNo, int column) { + return sheet.getRow(rowNo).getCell(column); + } } diff --git a/src/testcases/org/apache/poi/ss/formula/functions/TestSumifs.java b/src/testcases/org/apache/poi/ss/formula/functions/TestSumifs.java index 386b521f2..3f611cb50 100644 --- a/src/testcases/org/apache/poi/ss/formula/functions/TestSumifs.java +++ b/src/testcases/org/apache/poi/ss/formula/functions/TestSumifs.java @@ -21,6 +21,7 @@ package org.apache.poi.ss.formula.functions; import junit.framework.AssertionFailedError; import junit.framework.TestCase; + import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.ss.formula.OperationEvaluationContext; @@ -264,4 +265,84 @@ public final class TestSumifs extends TestCase { assertEquals(625000., ex5cell.getNumericCellValue()); } + + public void testBug56655() { + ValueEval[] a2a9 = new ValueEval[] { + new NumberEval(5), + new NumberEval(4), + new NumberEval(15), + new NumberEval(3), + new NumberEval(22), + new NumberEval(12), + new NumberEval(10), + new NumberEval(33) + }; + + ValueEval[] args = new ValueEval[]{ + EvalFactory.createAreaEval("A2:A9", a2a9), + ErrorEval.VALUE_INVALID, + new StringEval("A*"), + }; + + ValueEval result = invokeSumifs(args, EC); + assertTrue("Expect to have an error when an input is an invalid value, but had: " + result.getClass(), result instanceof ErrorEval); + + args = new ValueEval[]{ + EvalFactory.createAreaEval("A2:A9", a2a9), + EvalFactory.createAreaEval("A2:A9", a2a9), + ErrorEval.VALUE_INVALID, + }; + + result = invokeSumifs(args, EC); + assertTrue("Expect to have an error when an input is an invalid value, but had: " + result.getClass(), result instanceof ErrorEval); + } + + public void testBug56655b() { +/* + setCellFormula(sheet, 0, 0, "B1*C1"); + sheet.getRow(0).createCell(1).setCellValue("A"); + setCellFormula(sheet, 1, 0, "B1*C1"); + sheet.getRow(1).createCell(1).setCellValue("A"); + setCellFormula(sheet, 0, 3, "SUMIFS(A:A,A:A,A2)"); + */ + ValueEval[] a0a1 = new ValueEval[] { + NumberEval.ZERO, + NumberEval.ZERO + }; + + ValueEval[] args = new ValueEval[]{ + EvalFactory.createAreaEval("A0:A1", a0a1), + EvalFactory.createAreaEval("A0:A1", a0a1), + ErrorEval.VALUE_INVALID + }; + + ValueEval result = invokeSumifs(args, EC); + assertTrue("Expect to have an error when an input is an invalid value, but had: " + result.getClass(), result instanceof ErrorEval); + assertEquals(ErrorEval.VALUE_INVALID, result); + } + + + public void testBug56655c() { +/* + setCellFormula(sheet, 0, 0, "B1*C1"); + sheet.getRow(0).createCell(1).setCellValue("A"); + setCellFormula(sheet, 1, 0, "B1*C1"); + sheet.getRow(1).createCell(1).setCellValue("A"); + setCellFormula(sheet, 0, 3, "SUMIFS(A:A,A:A,A2)"); + */ + ValueEval[] a0a1 = new ValueEval[] { + NumberEval.ZERO, + NumberEval.ZERO + }; + + ValueEval[] args = new ValueEval[]{ + EvalFactory.createAreaEval("A0:A1", a0a1), + EvalFactory.createAreaEval("A0:A1", a0a1), + ErrorEval.NAME_INVALID + }; + + ValueEval result = invokeSumifs(args, EC); + assertTrue("Expect to have an error when an input is an invalid value, but had: " + result.getClass(), result instanceof ErrorEval); + assertEquals(ErrorEval.NAME_INVALID, result); + } } From e484eeac43063edd6bedcf0d1f90c56e643d739c Mon Sep 17 00:00:00 2001 From: Andreas Beeker Date: Sat, 20 Jun 2015 15:08:42 +0000 Subject: [PATCH 197/301] fixed javadoc links after imports have been organized git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1686636 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/poi/poifs/property/PropertyTable.java | 2 +- src/java/org/apache/poi/util/CloseIgnoringInputStream.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/java/org/apache/poi/poifs/property/PropertyTable.java b/src/java/org/apache/poi/poifs/property/PropertyTable.java index 28d49cde1..75ca4a03b 100644 --- a/src/java/org/apache/poi/poifs/property/PropertyTable.java +++ b/src/java/org/apache/poi/poifs/property/PropertyTable.java @@ -27,7 +27,7 @@ import org.apache.poi.poifs.storage.PropertyBlock; import org.apache.poi.poifs.storage.RawDataBlockList; /** - * This class embodies the Property Table for the {@link POIFSFileSystem}; + * This class embodies the Property Table for the {@link org.apache.poi.poifs.filesystem.POIFSFileSystem}; * this is basically the directory for all of the documents in the * filesystem. * diff --git a/src/java/org/apache/poi/util/CloseIgnoringInputStream.java b/src/java/org/apache/poi/util/CloseIgnoringInputStream.java index 0ccc24ee9..66e42c258 100644 --- a/src/java/org/apache/poi/util/CloseIgnoringInputStream.java +++ b/src/java/org/apache/poi/util/CloseIgnoringInputStream.java @@ -24,7 +24,7 @@ import java.io.InputStream; * A wrapper around an {@link InputStream}, which * ignores close requests made to it. * - * Useful with {@link POIFSFileSystem}, where you want + * Useful with {@link org.apache.poi.poifs.filesystem.POIFSFileSystem}, where you want * to control the close yourself. */ public class CloseIgnoringInputStream extends FilterInputStream { From f58646196d16a7263654f87141f9d00378549f7d Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 21 Jun 2015 06:56:45 +0000 Subject: [PATCH 198/301] Bug 57923: Fix check for tokens in NameRecord.getExternSheetNumber() to avoid ArrayOutOfBoundsException git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1686689 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/hssf/record/NameRecord.java | 5 ++- .../poi/hssf/record/TestNameRecord.java | 39 ++++++++++++++++--- 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/src/java/org/apache/poi/hssf/record/NameRecord.java b/src/java/org/apache/poi/hssf/record/NameRecord.java index 904133ce6..2f7f81899 100644 --- a/src/java/org/apache/poi/hssf/record/NameRecord.java +++ b/src/java/org/apache/poi/hssf/record/NameRecord.java @@ -411,11 +411,12 @@ public final class NameRecord extends ContinuableRecord { * @return extern sheet index */ public int getExternSheetNumber(){ - if (field_13_name_definition.getEncodedSize() < 1) { + Ptg[] tokens = field_13_name_definition.getTokens(); + if (tokens.length == 0) { return 0; } - Ptg ptg = field_13_name_definition.getTokens()[0]; + Ptg ptg = tokens[0]; if (ptg.getClass() == Area3DPtg.class){ return ((Area3DPtg) ptg).getExternSheetIndex(); diff --git a/src/testcases/org/apache/poi/hssf/record/TestNameRecord.java b/src/testcases/org/apache/poi/hssf/record/TestNameRecord.java index 28bfb3509..231b6c92c 100644 --- a/src/testcases/org/apache/poi/hssf/record/TestNameRecord.java +++ b/src/testcases/org/apache/poi/hssf/record/TestNameRecord.java @@ -17,15 +17,19 @@ package org.apache.poi.hssf.record; +import java.io.IOException; + +import junit.framework.TestCase; + import org.apache.poi.hssf.usermodel.HSSFName; import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.formula.ptg.Area3DPtg; import org.apache.poi.ss.formula.ptg.ArrayPtg; +import org.apache.poi.ss.formula.ptg.NamePtg; import org.apache.poi.ss.formula.ptg.Ptg; +import org.apache.poi.ss.formula.ptg.Ref3DPtg; import org.apache.poi.util.HexRead; -import junit.framework.AssertionFailedError; -import junit.framework.TestCase; - /** * Tests the NameRecord serializes/deserializes correctly * @@ -60,7 +64,8 @@ public final class TestNameRecord extends TestCase { byte[] data2 = nr.serialize(); TestcaseRecordInputStream.confirmRecordEncoding(NameRecord.sid, data, data2); } - public void testFormulaRelAbs_bug46174() { + + public void testFormulaRelAbs_bug46174() throws IOException { // perhaps this testcase belongs on TestHSSFName HSSFWorkbook wb = new HSSFWorkbook(); HSSFName name = wb.createName(); @@ -68,11 +73,13 @@ public final class TestNameRecord extends TestCase { name.setNameName("test"); name.setRefersToFormula("Sheet1!$B$3"); if (name.getRefersToFormula().equals("Sheet1!B3")) { - throw new AssertionFailedError("Identified bug 46174"); + fail("Identified bug 46174"); } assertEquals("Sheet1!$B$3", name.getRefersToFormula()); + wb.close(); } - public void testFormulaGeneral() { + + public void testFormulaGeneral() throws IOException { // perhaps this testcase belongs on TestHSSFName HSSFWorkbook wb = new HSSFWorkbook(); HSSFName name = wb.createName(); @@ -82,6 +89,8 @@ public final class TestNameRecord extends TestCase { assertEquals("Sheet1!A1+Sheet1!A2", name.getRefersToFormula()); name.setRefersToFormula("5*6"); assertEquals("5*6", name.getRefersToFormula()); + + wb.close(); } /** @@ -687,4 +696,22 @@ public final class TestNameRecord extends TestCase { assertEquals("1.T20.001", vals[0][0]); assertEquals("1.T20.010", vals[vals.length - 1][0]); } + + public void testBug57923() { + NameRecord record = new NameRecord(); + assertEquals(0, record.getExternSheetNumber()); + + record.setNameDefinition(new Ptg[] {}); + assertEquals(0, record.getExternSheetNumber()); + + record.setNameDefinition(new Ptg[] {new NamePtg(1)}); + assertEquals(0, record.getExternSheetNumber()); + + record.setNameDefinition(new Ptg[] {new Area3DPtg("area", 1)}); + assertEquals(1, record.getExternSheetNumber()); + + record.setNameDefinition(new Ptg[] {new Ref3DPtg("A1", 1)}); + assertEquals(1, record.getExternSheetNumber()); + } + } From 48208023fb0416ea919cccc19c3a231c90ecf33e Mon Sep 17 00:00:00 2001 From: Andreas Beeker Date: Sun, 21 Jun 2015 19:06:32 +0000 Subject: [PATCH 199/301] Bug 58040 - Log Forging and marked POILogger/POILogFactory internal git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1686748 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/poi/util/NullLogger.java | 432 +---------- .../org/apache/poi/util/POILogFactory.java | 62 +- src/java/org/apache/poi/util/POILogger.java | 672 +++--------------- src/java/org/apache/poi/util/StringUtil.java | 3 +- .../org/apache/poi/util/AllPOIUtilTests.java | 41 +- .../org/apache/poi/util/TestPOILogger.java | 71 +- 6 files changed, 211 insertions(+), 1070 deletions(-) diff --git a/src/java/org/apache/poi/util/NullLogger.java b/src/java/org/apache/poi/util/NullLogger.java index 95c8c5d44..24643c8fd 100644 --- a/src/java/org/apache/poi/util/NullLogger.java +++ b/src/java/org/apache/poi/util/NullLogger.java @@ -27,12 +27,10 @@ package org.apache.poi.util; * @author Glen Stampoultzis (glens at apache.org) * @author Nicola Ken Barozzi (nicolaken at apache.org) */ -public class NullLogger extends POILogger -{ +public class NullLogger extends POILogger { @Override - public void initialize(final String cat) - { - //do nothing + public void initialize(final String cat){ + // do nothing } /** @@ -45,147 +43,7 @@ public class NullLogger extends POILogger @Override public void log(final int level, final Object obj1) { - //do nothing - } - - /** - * Check if a logger is enabled to log at the specified level - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - */ - - @Override - public boolean check(final int level) - { - return false; - } - - /** - * Log a message. Lazily appends Object parameters together. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first object to place in the message - * @param obj2 second object to place in the message - */ - - @Override - public void log(final int level, final Object obj1, final Object obj2) - { - //do nothing - } - - /** - * Log a message. Lazily appends Object parameters together. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first Object to place in the message - * @param obj2 second Object to place in the message - * @param obj3 third Object to place in the message - */ - - @Override - public void log(final int level, final Object obj1, final Object obj2, - final Object obj3) - { - //do nothing - } - - /** - * Log a message. Lazily appends Object parameters together. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first Object to place in the message - * @param obj2 second Object to place in the message - * @param obj3 third Object to place in the message - * @param obj4 fourth Object to place in the message - */ - - @Override - public void log(final int level, final Object obj1, final Object obj2, - final Object obj3, final Object obj4) - { - //do nothing - } - - /** - * Log a message. Lazily appends Object parameters together. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first Object to place in the message - * @param obj2 second Object to place in the message - * @param obj3 third Object to place in the message - * @param obj4 fourth Object to place in the message - * @param obj5 fifth Object to place in the message - */ - - @Override - public void log(final int level, final Object obj1, final Object obj2, - final Object obj3, final Object obj4, final Object obj5) - { - //do nothing - } - - /** - * Log a message. Lazily appends Object parameters together. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first Object to place in the message - * @param obj2 second Object to place in the message - * @param obj3 third Object to place in the message - * @param obj4 fourth Object to place in the message - * @param obj5 fifth Object to place in the message - * @param obj6 sixth Object to place in the message - */ - - @Override - public void log(final int level, final Object obj1, final Object obj2, - final Object obj3, final Object obj4, final Object obj5, - final Object obj6) - { - //do nothing - } - - /** - * Log a message. Lazily appends Object parameters together. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first Object to place in the message - * @param obj2 second Object to place in the message - * @param obj3 third Object to place in the message - * @param obj4 fourth Object to place in the message - * @param obj5 fifth Object to place in the message - * @param obj6 sixth Object to place in the message - * @param obj7 seventh Object to place in the message - */ - - @Override - public void log(final int level, final Object obj1, final Object obj2, - final Object obj3, final Object obj4, final Object obj5, - final Object obj6, final Object obj7) - { - //do nothing - } - - /** - * Log a message. Lazily appends Object parameters together. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first Object to place in the message - * @param obj2 second Object to place in the message - * @param obj3 third Object to place in the message - * @param obj4 fourth Object to place in the message - * @param obj5 fifth Object to place in the message - * @param obj6 sixth Object to place in the message - * @param obj7 seventh Object to place in the message - * @param obj8 eighth Object to place in the message - */ - - @Override - public void log(final int level, final Object obj1, final Object obj2, - final Object obj3, final Object obj4, final Object obj5, - final Object obj6, final Object obj7, final Object obj8) - { - //do nothing + // do nothing } /** @@ -195,289 +53,19 @@ public class NullLogger extends POILogger * @param obj1 The object to log. This is converted to a string. * @param exception An exception to be logged */ - - @Override - public void log(final int level, final Object obj1, - final Throwable exception) - { - //do nothing + public void log(int level, Object obj1, final Throwable exception) { + // do nothing } + /** - * Log a message. Lazily appends Object parameters together. + * Check if a logger is enabled to log at the specified level * * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first Object to place in the message - * @param obj2 second Object to place in the message - * @param exception An exception to be logged */ - @Override - public void log(final int level, final Object obj1, final Object obj2, - final Throwable exception) - { - //do nothing + public boolean check(final int level) { + return false; } - - /** - * Log a message. Lazily appends Object parameters together. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first Object to place in the message - * @param obj2 second Object to place in the message - * @param obj3 third object to place in the message - * @param exception An error message to be logged - */ - - @Override - public void log(final int level, final Object obj1, final Object obj2, - final Object obj3, final Throwable exception) - { - //do nothing - } - - /** - * Log a message. Lazily appends Object parameters together. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first Object to place in the message - * @param obj2 second Object to place in the message - * @param obj3 third object to place in the message - * @param obj4 fourth object to place in the message - * @param exception An exception to be logged - */ - - @Override - public void log(final int level, final Object obj1, final Object obj2, - final Object obj3, final Object obj4, - final Throwable exception) - { - //do nothing - } - - /** - * Log a message. Lazily appends Object parameters together. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first Object to place in the message - * @param obj2 second Object to place in the message - * @param obj3 third object to place in the message - * @param obj4 fourth object to place in the message - * @param obj5 fifth object to place in the message - * @param exception An exception to be logged - */ - - @Override - public void log(final int level, final Object obj1, final Object obj2, - final Object obj3, final Object obj4, final Object obj5, - final Throwable exception) - { - //do nothing - } - - /** - * Log a message. Lazily appends Object parameters together. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first Object to place in the message - * @param obj2 second Object to place in the message - * @param obj3 third object to place in the message - * @param obj4 fourth object to place in the message - * @param obj5 fifth object to place in the message - * @param obj6 sixth object to place in the message - * @param exception An exception to be logged - */ - - @Override - public void log(final int level, final Object obj1, final Object obj2, - final Object obj3, final Object obj4, final Object obj5, - final Object obj6, final Throwable exception) - { - //do nothing - } - - /** - * Log a message. Lazily appends Object parameters together. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first Object to place in the message - * @param obj2 second Object to place in the message - * @param obj3 third object to place in the message - * @param obj4 fourth object to place in the message - * @param obj5 fifth object to place in the message - * @param obj6 sixth object to place in the message - * @param obj7 seventh object to place in the message - * @param exception An exception to be logged - */ - - @Override - public void log(final int level, final Object obj1, final Object obj2, - final Object obj3, final Object obj4, final Object obj5, - final Object obj6, final Object obj7, - final Throwable exception) - { - //do nothing - } - - /** - * Log a message. Lazily appends Object parameters together. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first Object to place in the message - * @param obj2 second Object to place in the message - * @param obj3 third object to place in the message - * @param obj4 fourth object to place in the message - * @param obj5 fifth object to place in the message - * @param obj6 sixth object to place in the message - * @param obj7 seventh object to place in the message - * @param obj8 eighth object to place in the message - * @param exception An exception to be logged - */ - - @Override - public void log(final int level, final Object obj1, final Object obj2, - final Object obj3, final Object obj4, final Object obj5, - final Object obj6, final Object obj7, final Object obj8, - final Throwable exception) - { - //do nothing - } - - /** - * Logs a formated message. The message itself may contain % - * characters as place holders. This routine will attempt to match - * the placeholder by looking at the type of parameter passed to - * obj1.

    - * - * If the parameter is an array, it traverses the array first and - * matches parameters sequentially against the array items. - * Otherwise the parameters after message are matched - * in order.

    - * - * If the place holder matches against a number it is printed as a - * whole number. This can be overridden by specifying a precision - * in the form %n.m where n is the padding for the whole part and - * m is the number of decimal places to display. n can be excluded - * if desired. n and m may not be more than 9.

    - * - * If the last parameter (after flattening) is a Throwable it is - * logged specially. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param message The message to log. - * @param obj1 The first object to match against. - */ - - @Override - public void logFormatted(final int level, final String message, - final Object obj1) - { - //do nothing - } - - /** - * Logs a formated message. The message itself may contain % - * characters as place holders. This routine will attempt to match - * the placeholder by looking at the type of parameter passed to - * obj1.

    - * - * If the parameter is an array, it traverses the array first and - * matches parameters sequentially against the array items. - * Otherwise the parameters after message are matched - * in order.

    - * - * If the place holder matches against a number it is printed as a - * whole number. This can be overridden by specifying a precision - * in the form %n.m where n is the padding for the whole part and - * m is the number of decimal places to display. n can be excluded - * if desired. n and m may not be more than 9.

    - * - * If the last parameter (after flattening) is a Throwable it is - * logged specially. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param message The message to log. - * @param obj1 The first object to match against. - * @param obj2 The second object to match against. - */ - - @Override - public void logFormatted(final int level, final String message, - final Object obj1, final Object obj2) - { - //do nothing - } - - /** - * Logs a formated message. The message itself may contain % - * characters as place holders. This routine will attempt to match - * the placeholder by looking at the type of parameter passed to - * obj1.

    - * - * If the parameter is an array, it traverses the array first and - * matches parameters sequentially against the array items. - * Otherwise the parameters after message are matched - * in order.

    - * - * If the place holder matches against a number it is printed as a - * whole number. This can be overridden by specifying a precision - * in the form %n.m where n is the padding for the whole part and - * m is the number of decimal places to display. n can be excluded - * if desired. n and m may not be more than 9.

    - * - * If the last parameter (after flattening) is a Throwable it is - * logged specially. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param message The message to log. - * @param obj1 The first object to match against. - * @param obj2 The second object to match against. - * @param obj3 The third object to match against. - */ - - @Override - public void logFormatted(final int level, final String message, - final Object obj1, final Object obj2, - final Object obj3) - { - //do nothing - } - - /** - * Logs a formated message. The message itself may contain % - * characters as place holders. This routine will attempt to match - * the placeholder by looking at the type of parameter passed to - * obj1.

    - * - * If the parameter is an array, it traverses the array first and - * matches parameters sequentially against the array items. - * Otherwise the parameters after message are matched - * in order.

    - * - * If the place holder matches against a number it is printed as a - * whole number. This can be overridden by specifying a precision - * in the form %n.m where n is the padding for the whole part and - * m is the number of decimal places to display. n can be excluded - * if desired. n and m may not be more than 9.

    - * - * If the last parameter (after flattening) is a Throwable it is - * logged specially. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param message The message to log. - * @param obj1 The first object to match against. - * @param obj2 The second object to match against. - * @param obj3 The third object to match against. - * @param obj4 The forth object to match against. - */ - - @Override - public void logFormatted(final int level, final String message, - final Object obj1, final Object obj2, - final Object obj3, final Object obj4) - { - //do nothing - } - } diff --git a/src/java/org/apache/poi/util/POILogFactory.java b/src/java/org/apache/poi/util/POILogFactory.java index 641949c39..7af73e3a8 100644 --- a/src/java/org/apache/poi/util/POILogFactory.java +++ b/src/java/org/apache/poi/util/POILogFactory.java @@ -15,7 +15,7 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - + package org.apache.poi.util; @@ -30,20 +30,18 @@ import java.util.Map; * @author Marc Johnson (mjohnson at apache dot org) * @author Nicola Ken Barozzi (nicolaken at apache.org) */ - -public class POILogFactory -{ - +@Internal +public final class POILogFactory { /** * Map of POILogger instances, with classes as keys */ - private static Map _loggers = new HashMap();; + private static Map _loggers = new HashMap(); /** * A common instance of NullLogger, as it does nothing * we only need the one */ - private static POILogger _nullLogger = new NullLogger(); + private static final POILogger _nullLogger = new NullLogger(); /** * The name of the class to use. Initialised the * first time we need it @@ -53,9 +51,7 @@ public class POILogFactory /** * Construct a POILogFactory. */ - private POILogFactory() - { - } + private POILogFactory() {} /** * Get a logger, based on a class name @@ -64,12 +60,10 @@ public class POILogFactory * * @return a POILogger for the specified class */ - - public static POILogger getLogger(final Class theclass) - { + public static POILogger getLogger(final Class theclass) { return getLogger(theclass.getName()); } - + /** * Get a logger, based on a String * @@ -77,11 +71,9 @@ public class POILogFactory * * @return a POILogger for the specified class */ - - public static POILogger getLogger(final String cat) - { + public static POILogger getLogger(final String cat) { POILogger logger = null; - + // If we haven't found out what logger to use yet, // then do so now // Don't look it up until we're first asked, so @@ -91,40 +83,40 @@ public class POILogFactory try { _loggerClassName = System.getProperty("org.apache.poi.util.POILogger"); } catch(Exception e) {} - + // Use the default logger if none specified, // or none could be fetched if(_loggerClassName == null) { - _loggerClassName = _nullLogger.getClass().getName(); + _loggerClassName = _nullLogger.getClass().getName(); } } - + // Short circuit for the null logger, which // ignores all categories if(_loggerClassName.equals(_nullLogger.getClass().getName())) { return _nullLogger; } - + // Fetch the right logger for them, creating - // it if that's required - if (_loggers.containsKey(cat)) { - logger = _loggers.get(cat); - } else { + // it if that's required + logger = _loggers.get(cat); + if (logger == null) { try { - @SuppressWarnings("unchecked") - Class loggerClass = - (Class)Class.forName(_loggerClassName); - logger = loggerClass.newInstance(); - logger.initialize(cat); + @SuppressWarnings("unchecked") + Class loggerClass = + (Class) Class.forName(_loggerClassName); + logger = loggerClass.newInstance(); + logger.initialize(cat); } catch(Exception e) { - // Give up and use the null logger - logger = _nullLogger; + // Give up and use the null logger + logger = _nullLogger; + _loggerClassName = _nullLogger.getClass().getName(); } - + // Save for next time _loggers.put(cat, logger); } return logger; } -} // end public class POILogFactory \ No newline at end of file +} \ No newline at end of file diff --git a/src/java/org/apache/poi/util/POILogger.java b/src/java/org/apache/poi/util/POILogger.java index 4088ec290..bdb37b9a5 100644 --- a/src/java/org/apache/poi/util/POILogger.java +++ b/src/java/org/apache/poi/util/POILogger.java @@ -30,6 +30,7 @@ import java.util.List; * @author Glen Stampoultzis (glens at apache.org) * @author Nicola Ken Barozzi (nicolaken at apache.org) */ +@Internal public abstract class POILogger { public static final int DEBUG = 1; @@ -49,7 +50,7 @@ public abstract class POILogger { * package. You need a POILogger? Go to the POILogFactory for one */ POILogger() { - // no fields to initialise + // no fields to initialize } abstract public void initialize(String cat); @@ -60,7 +61,7 @@ public abstract class POILogger { * @param level One of DEBUG, INFO, WARN, ERROR, FATAL * @param obj1 The object to log. This is converted to a string. */ - abstract public void log(int level, Object obj1); + abstract protected void log(int level, Object obj1); /** * Log a message @@ -69,8 +70,7 @@ public abstract class POILogger { * @param obj1 The object to log. This is converted to a string. * @param exception An exception to be logged */ - abstract public void log(int level, Object obj1, - final Throwable exception); + abstract protected void log(int level, Object obj1, final Throwable exception); /** @@ -82,602 +82,118 @@ public abstract class POILogger { /** * Log a message. Lazily appends Object parameters together. + * If the last parameter is a {@link Throwable} it is logged specially. * * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first object to place in the message - * @param obj2 second object to place in the message + * @param objs the objects to place in the message */ - public void log(int level, Object obj1, Object obj2) - { - if (check(level)) - { - log(level, new StringBuffer(32).append(obj1).append(obj2)); - } - } - - /** - * Log a message. Lazily appends Object parameters together. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first Object to place in the message - * @param obj2 second Object to place in the message - * @param obj3 third Object to place in the message - */ - public void log(int level, Object obj1, Object obj2, - Object obj3) - { - - - if (check(level)) - { - log(level, - new StringBuffer(48).append(obj1).append(obj2) - .append(obj3)); - } - } - - /** - * Log a message. Lazily appends Object parameters together. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first Object to place in the message - * @param obj2 second Object to place in the message - * @param obj3 third Object to place in the message - * @param obj4 fourth Object to place in the message - */ - public void log(int level, Object obj1, Object obj2, - Object obj3, Object obj4) - { - - - if (check(level)) - { - log(level, - new StringBuffer(64).append(obj1).append(obj2) - .append(obj3).append(obj4)); - } - } - - /** - * Log a message. Lazily appends Object parameters together. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first Object to place in the message - * @param obj2 second Object to place in the message - * @param obj3 third Object to place in the message - * @param obj4 fourth Object to place in the message - * @param obj5 fifth Object to place in the message - */ - public void log(int level, Object obj1, Object obj2, - Object obj3, Object obj4, Object obj5) - { - - - if (check(level)) - { - log(level, - new StringBuffer(80).append(obj1).append(obj2) - .append(obj3).append(obj4).append(obj5)); - } - } - - /** - * Log a message. Lazily appends Object parameters together. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first Object to place in the message - * @param obj2 second Object to place in the message - * @param obj3 third Object to place in the message - * @param obj4 fourth Object to place in the message - * @param obj5 fifth Object to place in the message - * @param obj6 sixth Object to place in the message - */ - public void log(int level, Object obj1, Object obj2, - Object obj3, Object obj4, Object obj5, - Object obj6) - { - - - if (check(level)) - { - log(level , - new StringBuffer(96).append(obj1).append(obj2) - .append(obj3).append(obj4).append(obj5).append(obj6)); - } - } - - /** - * Log a message. Lazily appends Object parameters together. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first Object to place in the message - * @param obj2 second Object to place in the message - * @param obj3 third Object to place in the message - * @param obj4 fourth Object to place in the message - * @param obj5 fifth Object to place in the message - * @param obj6 sixth Object to place in the message - * @param obj7 seventh Object to place in the message - */ - public void log(int level, Object obj1, Object obj2, - Object obj3, Object obj4, Object obj5, - Object obj6, Object obj7) - { - - - if (check(level)) - { - log(level, - new StringBuffer(112).append(obj1).append(obj2) - .append(obj3).append(obj4).append(obj5).append(obj6) - .append(obj7)); - } - } - - /** - * Log a message. Lazily appends Object parameters together. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first Object to place in the message - * @param obj2 second Object to place in the message - * @param obj3 third Object to place in the message - * @param obj4 fourth Object to place in the message - * @param obj5 fifth Object to place in the message - * @param obj6 sixth Object to place in the message - * @param obj7 seventh Object to place in the message - * @param obj8 eighth Object to place in the message - */ - public void log(int level, Object obj1, Object obj2, - Object obj3, Object obj4, Object obj5, - Object obj6, Object obj7, Object obj8) - { - - - if (check(level)) - { - log(level, - new StringBuffer(128).append(obj1).append(obj2) - .append(obj3).append(obj4).append(obj5).append(obj6) - .append(obj7).append(obj8)); - } - } - - /** - * Log an exception, without a message - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param exception An exception to be logged - */ - public void log(int level, final Throwable exception) - { - log(level, null, exception); - } - - /** - * Log a message. Lazily appends Object parameters together. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first Object to place in the message - * @param obj2 second Object to place in the message - * @param exception An exception to be logged - */ - public void log(int level, Object obj1, Object obj2, - final Throwable exception) - { - - - if (check(level)) - { - log(level, new StringBuffer(32).append(obj1).append(obj2), - exception); - } - } - - /** - * Log a message. Lazily appends Object parameters together. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first Object to place in the message - * @param obj2 second Object to place in the message - * @param obj3 third object to place in the message - * @param exception An error message to be logged - */ - public void log(int level, Object obj1, Object obj2, - Object obj3, final Throwable exception) - { - - - if (check(level)) - { - log(level, new StringBuffer(48).append(obj1).append(obj2) - .append(obj3), exception); - } - } - - /** - * Log a message. Lazily appends Object parameters together. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first Object to place in the message - * @param obj2 second Object to place in the message - * @param obj3 third object to place in the message - * @param obj4 fourth object to place in the message - * @param exception An exception to be logged - */ - public void log(int level, Object obj1, Object obj2, - Object obj3, Object obj4, - final Throwable exception) - { - - - if (check(level)) - { - log(level, new StringBuffer(64).append(obj1).append(obj2) - .append(obj3).append(obj4), exception); - } - } - - /** - * Log a message. Lazily appends Object parameters together. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first Object to place in the message - * @param obj2 second Object to place in the message - * @param obj3 third object to place in the message - * @param obj4 fourth object to place in the message - * @param obj5 fifth object to place in the message - * @param exception An exception to be logged - */ - public void log(int level, Object obj1, Object obj2, - Object obj3, Object obj4, Object obj5, - final Throwable exception) - { - - - if (check(level)) - { - log(level, new StringBuffer(80).append(obj1).append(obj2) - .append(obj3).append(obj4).append(obj5), exception); - } - } - - /** - * Log a message. Lazily appends Object parameters together. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first Object to place in the message - * @param obj2 second Object to place in the message - * @param obj3 third object to place in the message - * @param obj4 fourth object to place in the message - * @param obj5 fifth object to place in the message - * @param obj6 sixth object to place in the message - * @param exception An exception to be logged - */ - public void log(int level, Object obj1, Object obj2, - Object obj3, Object obj4, Object obj5, - Object obj6, final Throwable exception) - { - - - if (check(level)) - { - log(level , new StringBuffer(96).append(obj1) - .append(obj2).append(obj3).append(obj4).append(obj5) - .append(obj6), exception); - } - } - - /** - * Log a message. Lazily appends Object parameters together. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first Object to place in the message - * @param obj2 second Object to place in the message - * @param obj3 third object to place in the message - * @param obj4 fourth object to place in the message - * @param obj5 fifth object to place in the message - * @param obj6 sixth object to place in the message - * @param obj7 seventh object to place in the message - * @param exception An exception to be logged - */ - public void log(int level, Object obj1, Object obj2, - Object obj3, Object obj4, Object obj5, - Object obj6, Object obj7, - final Throwable exception) - { - - - if (check(level)) - { - log(level, new StringBuffer(112).append(obj1).append(obj2) - .append(obj3).append(obj4).append(obj5).append(obj6) - .append(obj7), exception); - } - } - - /** - * Log a message. Lazily appends Object parameters together. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param obj1 first Object to place in the message - * @param obj2 second Object to place in the message - * @param obj3 third object to place in the message - * @param obj4 fourth object to place in the message - * @param obj5 fifth object to place in the message - * @param obj6 sixth object to place in the message - * @param obj7 seventh object to place in the message - * @param obj8 eighth object to place in the message - * @param exception An exception to be logged - */ - public void log(int level, Object obj1, Object obj2, - Object obj3, Object obj4, Object obj5, - Object obj6, Object obj7, Object obj8, - final Throwable exception) - { - - - if (check(level)) - { - log(level, new StringBuffer(128).append(obj1).append(obj2) - .append(obj3).append(obj4).append(obj5).append(obj6) - .append(obj7).append(obj8), exception); - } - } - - /** - * Logs a formated message. The message itself may contain % - * characters as place holders. This routine will attempt to match - * the placeholder by looking at the type of parameter passed to - * obj1.

    - * - * If the parameter is an array, it traverses the array first and - * matches parameters sequentially against the array items. - * Otherwise the parameters after message are matched - * in order.

    - * - * If the place holder matches against a number it is printed as a - * whole number. This can be overridden by specifying a precision - * in the form %n.m where n is the padding for the whole part and - * m is the number of decimal places to display. n can be excluded - * if desired. n and m may not be more than 9.

    - * - * If the last parameter (after flattening) is a Throwable it is - * logged specially. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param message The message to log. - * @param obj1 The first object to match against. - */ - public void logFormatted(int level, String message, - Object obj1) - { - commonLogFormatted(level, message, new Object[] - { - obj1 - }); - } - - /** - * Logs a formated message. The message itself may contain % - * characters as place holders. This routine will attempt to match - * the placeholder by looking at the type of parameter passed to - * obj1.

    - * - * If the parameter is an array, it traverses the array first and - * matches parameters sequentially against the array items. - * Otherwise the parameters after message are matched - * in order.

    - * - * If the place holder matches against a number it is printed as a - * whole number. This can be overridden by specifying a precision - * in the form %n.m where n is the padding for the whole part and - * m is the number of decimal places to display. n can be excluded - * if desired. n and m may not be more than 9.

    - * - * If the last parameter (after flattening) is a Throwable it is - * logged specially. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param message The message to log. - * @param obj1 The first object to match against. - * @param obj2 The second object to match against. - */ - public void logFormatted(int level, String message, - Object obj1, Object obj2) - { - commonLogFormatted(level, message, new Object[] - { - obj1, obj2 - }); - } - - /** - * Logs a formated message. The message itself may contain % - * characters as place holders. This routine will attempt to match - * the placeholder by looking at the type of parameter passed to - * obj1.

    - * - * If the parameter is an array, it traverses the array first and - * matches parameters sequentially against the array items. - * Otherwise the parameters after message are matched - * in order.

    - * - * If the place holder matches against a number it is printed as a - * whole number. This can be overridden by specifying a precision - * in the form %n.m where n is the padding for the whole part and - * m is the number of decimal places to display. n can be excluded - * if desired. n and m may not be more than 9.

    - * - * If the last parameter (after flattening) is a Throwable it is - * logged specially. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param message The message to log. - * @param obj1 The first object to match against. - * @param obj2 The second object to match against. - * @param obj3 The third object to match against. - */ - public void logFormatted(int level, String message, - Object obj1, Object obj2, - Object obj3) - { - commonLogFormatted(level, message, new Object[] - { - obj1, obj2, obj3 - }); - } - - /** - * Logs a formated message. The message itself may contain % - * characters as place holders. This routine will attempt to match - * the placeholder by looking at the type of parameter passed to - * obj1.

    - * - * If the parameter is an array, it traverses the array first and - * matches parameters sequentially against the array items. - * Otherwise the parameters after message are matched - * in order.

    - * - * If the place holder matches against a number it is printed as a - * whole number. This can be overridden by specifying a precision - * in the form %n.m where n is the padding for the whole part and - * m is the number of decimal places to display. n can be excluded - * if desired. n and m may not be more than 9.

    - * - * If the last parameter (after flattening) is a Throwable it is - * logged specially. - * - * @param level One of DEBUG, INFO, WARN, ERROR, FATAL - * @param message The message to log. - * @param obj1 The first object to match against. - * @param obj2 The second object to match against. - * @param obj3 The third object to match against. - * @param obj4 The forth object to match against. - */ - public void logFormatted(int level, String message, - Object obj1, Object obj2, - Object obj3, Object obj4) - { - commonLogFormatted(level, message, new Object[] - { - obj1, obj2, obj3, obj4 - }); - } - - private void commonLogFormatted(int level, String message, - Object [] unflatParams) - { - - - if (check(level)) - { - Object[] params = flattenArrays(unflatParams); - - if (params[ params.length - 1 ] instanceof Throwable) - { - log(level, StringUtil.format(message, params), - ( Throwable ) params[ params.length - 1 ]); - } - else - { - log(level, StringUtil.format(message, params)); + public void log(int level, Object... objs) { + if (!check(level)) return; + StringBuilder sb = new StringBuilder(32); + Throwable lastEx = null; + for (int i=0; i + * + * If the parameter is an array, it traverses the array first and + * matches parameters sequentially against the array items. + * Otherwise the parameters after message are matched + * in order.

    + * + * If the place holder matches against a number it is printed as a + * whole number. This can be overridden by specifying a precision + * in the form %n.m where n is the padding for the whole part and + * m is the number of decimal places to display. n can be excluded + * if desired. n and m may not be more than 9.

    + * + * If the last parameter (after flattening) is a Throwable it is + * logged specially. + * + * @param level One of DEBUG, INFO, WARN, ERROR, FATAL + * @param message The message to log. + * @param unflatParams... The objects to match against. */ - private Object [] flattenArrays(Object [] objects) - { + public void logFormatted(int level, String message, Object... unflatParams) { + if (!check(level)) return; + Object[] params = flattenArrays(unflatParams); + String msg = StringUtil.format(message, params); + msg = msg.replaceAll("[\r\n]+", " "); // log forging escape + + if (params.length > 0 && params[params.length-1] instanceof Throwable) { + log(level, msg, (Throwable)params[params.length-1]); + } else { + log(level, msg); + } + } + + /** + * Flattens any contained objects. Only traverses one level deep. + */ + private Object[] flattenArrays(Object... unflatParams) { List results = new ArrayList(); - - for (int i = 0; i < objects.length; i++) - { - results.addAll(objectToObjectArray(objects[ i ])); + for (Object obj : unflatParams) { + flattenObject(results, obj); } - return results.toArray(new Object[ results.size() ]); + return results.toArray(new Object[results.size()]); } - private List objectToObjectArray(Object object) - { - List results = new ArrayList(); - - if (object instanceof byte []) - { - byte[] array = ( byte [] ) object; - - for (int j = 0; j < array.length; j++) - { - results.add(Byte.valueOf(array[ j ])); + private void flattenObject(List results, Object object) { + if (object instanceof byte[]) { + for (byte b : (byte[])object) { + results.add(Byte.valueOf(b)); } - } - if (object instanceof char []) - { - char[] array = ( char [] ) object; - - for (int j = 0; j < array.length; j++) - { - results.add(Character.valueOf(array[ j ])); + } else if (object instanceof char[]) { + for (char c : (char[])object) { + results.add(Character.valueOf(c)); } - } - else if (object instanceof short []) - { - short[] array = ( short [] ) object; - - for (int j = 0; j < array.length; j++) - { - results.add(Short.valueOf(array[ j ])); + } else if (object instanceof short[]) { + for (short s : (short[])object) { + results.add(Short.valueOf(s)); } - } - else if (object instanceof int []) - { - int[] array = ( int [] ) object; - - for (int j = 0; j < array.length; j++) - { - results.add(Integer.valueOf(array[ j ])); + } else if (object instanceof int[]) { + for (int i : (int[])object) { + results.add(Integer.valueOf(i)); } - } - else if (object instanceof long []) - { - long[] array = ( long [] ) object; - - for (int j = 0; j < array.length; j++) - { - results.add(Long.valueOf(array[ j ])); + } else if (object instanceof long[]) { + for (long l : (long[])object) { + results.add(Long.valueOf(l)); } - } - else if (object instanceof float []) - { - float[] array = ( float [] ) object; - - for (int j = 0; j < array.length; j++) - { - results.add(new Float(array[ j ])); + } else if (object instanceof float[]) { + for (float f : (float[])object) { + results.add(Float.valueOf(f)); } - } - else if (object instanceof double []) - { - double[] array = ( double [] ) object; - - for (int j = 0; j < array.length; j++) - { - results.add(new Double(array[ j ])); + } else if (object instanceof double[]) { + for (double d : (double[])object) { + results.add(Double.valueOf(d)); } - } - else if (object instanceof Object []) - { - Object[] array = ( Object [] ) object; - - for (int j = 0; j < array.length; j++) - { - results.add(array[ j ]); + } else if (object instanceof Object[]) { + for (Object o : (Object[])object) { + results.add(o); } - } - else - { + } else { results.add(object); } - return results; } } diff --git a/src/java/org/apache/poi/util/StringUtil.java b/src/java/org/apache/poi/util/StringUtil.java index 99880f500..bd417961e 100644 --- a/src/java/org/apache/poi/util/StringUtil.java +++ b/src/java/org/apache/poi/util/StringUtil.java @@ -22,6 +22,7 @@ import java.text.FieldPosition; import java.text.NumberFormat; import java.util.HashMap; import java.util.Iterator; +import java.util.Locale; import java.util.Map; import org.apache.poi.hssf.record.RecordInputStream; @@ -310,7 +311,7 @@ public class StringUtil { Number number, String formatting, StringBuffer outputTo) { - NumberFormat numberFormat = NumberFormat.getInstance(); + NumberFormat numberFormat = NumberFormat.getInstance(Locale.US); if ((0 < formatting.length()) && Character.isDigit(formatting.charAt(0))) { numberFormat.setMinimumIntegerDigits( diff --git a/src/testcases/org/apache/poi/util/AllPOIUtilTests.java b/src/testcases/org/apache/poi/util/AllPOIUtilTests.java index de6739bb7..34ad0f4bd 100644 --- a/src/testcases/org/apache/poi/util/AllPOIUtilTests.java +++ b/src/testcases/org/apache/poi/util/AllPOIUtilTests.java @@ -17,30 +17,29 @@ package org.apache.poi.util; -import junit.framework.Test; -import junit.framework.TestSuite; +import org.junit.runner.RunWith; +import org.junit.runners.Suite; /** * Test suite for all sub-packages of org.apache.poi.util
    */ +@RunWith(Suite.class) +@Suite.SuiteClasses({ + TestArrayUtil.class + , TestBinaryTree.class + , TestBitField.class + , TestByteField.class + , TestHexDump.class + , TestIntegerField.class + , TestIntList.class + , TestLittleEndian.class + , TestLongField.class + , TestPOILogFactory.class + , TestPOILogger.class + , TestShortField.class + , TestShortList.class + , TestStringUtil.class + , TestTempFile.class +}) public final class AllPOIUtilTests { - public static Test suite() { - TestSuite result = new TestSuite(AllPOIUtilTests.class.getName()); - result.addTestSuite(TestArrayUtil.class); - result.addTestSuite(TestBinaryTree.class); - result.addTestSuite(TestBitField.class); - result.addTestSuite(TestByteField.class); - result.addTestSuite(TestHexDump.class); - result.addTestSuite(TestIntegerField.class); - result.addTestSuite(TestIntList.class); - result.addTestSuite(TestLittleEndian.class); - result.addTestSuite(TestLongField.class); - result.addTestSuite(TestPOILogFactory.class); - result.addTestSuite(TestPOILogger.class); - result.addTestSuite(TestShortField.class); - result.addTestSuite(TestShortList.class); - result.addTestSuite(TestStringUtil.class); - result.addTestSuite(TestTempFile.class); - return result; - } } diff --git a/src/testcases/org/apache/poi/util/TestPOILogger.java b/src/testcases/org/apache/poi/util/TestPOILogger.java index a3d34fac1..7fc5824d4 100644 --- a/src/testcases/org/apache/poi/util/TestPOILogger.java +++ b/src/testcases/org/apache/poi/util/TestPOILogger.java @@ -18,7 +18,13 @@ package org.apache.poi.util; -import junit.framework.TestCase; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.lang.reflect.Field; + +import org.junit.Test; /** * Tests the log class. @@ -27,23 +33,62 @@ import junit.framework.TestCase; * @author Marc Johnson (mjohnson at apache dot org) * @author Nicola Ken Barozzi (nicolaken at apache.org) */ -public final class TestPOILogger extends TestCase { - +public final class TestPOILogger extends POILogger { + private String lastLog = ""; + private Throwable lastEx = null; + /** * Test different types of log output. */ - public void testVariousLogTypes() { - //NKB Testing only that logging classes use gives no exception - // Since logging can be disabled, no checking of logging - // output is done. + @Test + public void testVariousLogTypes() throws Exception { + Field f = POILogFactory.class.getDeclaredField("_loggerClassName"); + f.setAccessible(true); + String oldLCN = (String)f.get(null); + try { + f.set(null, TestPOILogger.class.getName()); + POILogger log = POILogFactory.getLogger( "foo" ); + assertTrue(log instanceof TestPOILogger); + + TestPOILogger tlog = (TestPOILogger)log; + + log.log(POILogger.WARN, "Test = ", 1); + assertEquals("Test = 1", tlog.lastLog); + + log.logFormatted(POILogger.ERROR, "Test param 1 = %, param 2 = %d", "2", 3 ); + assertEquals("Test param 1 = 2, param 2 = 3", tlog.lastLog); + + log.logFormatted(POILogger.ERROR, "Test param 1 = %d, param 2 = %", new int[]{4, 5} ); + assertEquals("Test param 1 = 4, param 2 = 5", tlog.lastLog); + + log.logFormatted(POILogger.ERROR, "Test param 1 = %1.1, param 2 = %0.1", new double[]{4, 5.23} ); + assertEquals("Test param 1 = 4, param 2 = 5.2", tlog.lastLog); - POILogger log = POILogFactory.getLogger( "foo" ); + log.log(POILogger.ERROR, "Test ", 1,2,new Exception("bla")); + assertEquals("Test 12", tlog.lastLog); + assertNotNull(tlog.lastEx); + + log.log(POILogger.ERROR, "log\nforging", "\nevil","\nlog"); + assertEquals("log forging evil log", tlog.lastLog); + } finally { + f.set(null, oldLCN); + } + } - log.log( POILogger.WARN, "Test = ", Integer.valueOf( 1 ) ); - log.logFormatted( POILogger.ERROR, "Test param 1 = %, param 2 = %", "2", Integer.valueOf( 3 ) ); - log.logFormatted( POILogger.ERROR, "Test param 1 = %, param 2 = %", new int[]{4, 5} ); - log.logFormatted( POILogger.ERROR, - "Test param 1 = %1.1, param 2 = %0.1", new double[]{4, 5.23} ); + public void initialize(String cat) { + } + public void log(int level, Object obj1) { + lastLog = (obj1 == null) ? "" : obj1.toString(); + lastEx = null; + } + + public void log(int level, Object obj1, Throwable exception) { + lastLog = (obj1 == null) ? "" : obj1.toString(); + lastEx = exception; + } + + public boolean check(int level) { + return true; } } From 6f80ba55163dc8da78117fff22a490b091003808 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 22 Jun 2015 20:28:18 +0000 Subject: [PATCH 200/301] Add public key of Dominik Stadler (centic) git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1686929 13f79535-47bb-0310-9956-ffa450edef68 --- KEYS | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/KEYS b/KEYS index ca2fbd003..6e9b6ca5d 100644 --- a/KEYS +++ b/KEYS @@ -2085,4 +2085,59 @@ LaodHywrloaA6lW+e+WMlx9T2t13s1XQNxM3WnnRYYMh/nEcgtcw7mZRL6h55erS NPfXcVvbo0b+iing/HrOtjK4xU0lypGlQlXcfQcMr0RaNAMv4ExgIzQj38jMzNaw 9a52BMKzZF8059sQF4VfrIVt2eZZyRUa84QI9R3um3tAho1ORUaOtEyOJn8= =keWk ------END PGP PUBLIC KEY BLOCK----- \ No newline at end of file +-----END PGP PUBLIC KEY BLOCK----- +pub 4096R/27B9F635 2015-06-22 +uid Dominik Stadler +sub 4096R/EF9D5EA6 2015-06-22 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1 + +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 +kg== +=rPGm +-----END PGP PUBLIC KEY BLOCK----- From 057768994e9f094202132b7995b41199e06e35d6 Mon Sep 17 00:00:00 2001 From: Andreas Beeker Date: Tue, 23 Jun 2015 23:06:23 +0000 Subject: [PATCH 201/301] Bug 58069 - Biff8RC4 xorShort returns wrong value for unsigned shorts git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1687146 13f79535-47bb-0310-9956-ffa450edef68 --- .../record/crypto/Biff8DecryptingStream.java | 4 +-- .../crypto/TestBiff8DecryptingStream.java | 27 ++++++++++++++++--- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/java/org/apache/poi/hssf/record/crypto/Biff8DecryptingStream.java b/src/java/org/apache/poi/hssf/record/crypto/Biff8DecryptingStream.java index f52a15d81..564174b60 100644 --- a/src/java/org/apache/poi/hssf/record/crypto/Biff8DecryptingStream.java +++ b/src/java/org/apache/poi/hssf/record/crypto/Biff8DecryptingStream.java @@ -95,7 +95,7 @@ public final class Biff8DecryptingStream implements BiffHeaderInput, LittleEndia public int readUByte() { - return _cipher.xorByte(_le.readUByte()); + return readByte() & 0xFF; } public byte readByte() { return (byte) _cipher.xorByte(_le.readUByte()); @@ -103,7 +103,7 @@ public final class Biff8DecryptingStream implements BiffHeaderInput, LittleEndia public int readUShort() { - return _cipher.xorShort(_le.readUShort()); + return readShort() & 0xFFFF; } public short readShort() { return (short) _cipher.xorShort(_le.readUShort()); diff --git a/src/testcases/org/apache/poi/hssf/record/crypto/TestBiff8DecryptingStream.java b/src/testcases/org/apache/poi/hssf/record/crypto/TestBiff8DecryptingStream.java index 9d9c04417..6c8cd0177 100644 --- a/src/testcases/org/apache/poi/hssf/record/crypto/TestBiff8DecryptingStream.java +++ b/src/testcases/org/apache/poi/hssf/record/crypto/TestBiff8DecryptingStream.java @@ -96,9 +96,21 @@ public final class TestBiff8DecryptingStream { } public void confirmShort(int expVal) { - cmp(HexDump.shortToHex(expVal), HexDump.shortToHex(_bds.readUShort())); + cmp(HexDump.shortToHex(expVal), HexDump.shortToHex(_bds.readShort())); } + public void confirmUShort(int expVal) { + cmp(HexDump.shortToHex(expVal), HexDump.shortToHex(_bds.readUShort())); + } + + public short readShort() { + return _bds.readShort(); + } + + public int readUShort() { + return _bds.readUShort(); + } + public void confirmInt(int expVal) { cmp(HexDump.intToHex(expVal), HexDump.intToHex(_bds.readInt())); } @@ -106,7 +118,7 @@ public final class TestBiff8DecryptingStream { public void confirmLong(long expVal) { cmp(HexDump.longToHex(expVal), HexDump.longToHex(_bds.readLong())); } - + private void cmp(char[] exp, char[] act) { if (Arrays.equals(exp, act)) { return; @@ -166,6 +178,15 @@ public final class TestBiff8DecryptingStream { st.rollForward(0x0C04, 0x0FF8); st.confirmLong(0x6AA2D5F6B975D10CL); st.confirmLong(0x34248ADF7ED4F029L); + // check for signed/unsigned shorts #58069 + st.rollForward(0x1008, 0x7213); + st.confirmUShort(0xFFFF); + st.rollForward(0x7215, 0x1B9AD); + st.confirmShort(-1); + st.rollForward(0x1B9AF, 0x37D99); + assertEquals(0xFFFF, st.readUShort()); + st.rollForward(0x37D9B, 0x4A6F2); + assertEquals(-1, st.readShort()); st.assertNoErrors(); } @@ -229,7 +250,7 @@ public final class TestBiff8DecryptingStream { st.confirmData("01 C2 4E 55"); // first 4 bytes in next block st.assertNoErrors(); } - + private static StreamTester createStreamTester(int mockStreamStartVal, String keyDigestHex, int expectedFirstInt) { return new StreamTester(new MockStream(mockStreamStartVal), keyDigestHex, expectedFirstInt); } From c0cb680292bce016aecd44e9923bb59df1eab20f Mon Sep 17 00:00:00 2001 From: Andreas Beeker Date: Tue, 23 Jun 2015 23:39:07 +0000 Subject: [PATCH 202/301] Bug 56865 - Limit number of bytes (by counting them) while opening office docs Bug 50090 - 'zip' bomb prevention git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1687148 13f79535-47bb-0310-9956-ffa450edef68 --- .../xssf/usermodel/examples/BigGridDemo.java | 3 +- .../org/apache/poi/dev/OOXMLPrettyPrint.java | 3 +- .../apache/poi/openxml4j/opc/ZipPackage.java | 8 +- .../poi/openxml4j/opc/internal/ZipHelper.java | 5 +- .../util/ZipInputStreamZipEntrySource.java | 6 +- .../poi/openxml4j/util/ZipSecureFile.java | 227 ++++++++++++++++++ .../org/apache/poi/xssf/dev/XSSFDump.java | 3 +- .../poi/xssf/streaming/SXSSFWorkbook.java | 3 +- .../poi/openxml4j/opc/AllOpenXML4JTests.java | 36 ++- .../apache/poi/openxml4j/opc/TestPackage.java | 180 ++++++++++++-- .../ExcelFileFormatDocFunctionExtractor.java | 1 + 11 files changed, 426 insertions(+), 49 deletions(-) create mode 100644 src/ooxml/java/org/apache/poi/openxml4j/util/ZipSecureFile.java diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/BigGridDemo.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/BigGridDemo.java index 00c534274..2dbfccec4 100644 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/BigGridDemo.java +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/BigGridDemo.java @@ -23,6 +23,7 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import java.util.zip.ZipOutputStream; +import org.apache.poi.openxml4j.opc.internal.ZipHelper; import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.ss.util.CellReference; @@ -165,7 +166,7 @@ public class BigGridDemo { * @param out the stream to write the result to */ private static void substitute(File zipfile, File tmpfile, String entry, OutputStream out) throws IOException { - ZipFile zip = new ZipFile(zipfile); + ZipFile zip = ZipHelper.openZipFile(zipfile); ZipOutputStream zos = new ZipOutputStream(out); diff --git a/src/ooxml/java/org/apache/poi/dev/OOXMLPrettyPrint.java b/src/ooxml/java/org/apache/poi/dev/OOXMLPrettyPrint.java index 48341d0c9..97e16f758 100644 --- a/src/ooxml/java/org/apache/poi/dev/OOXMLPrettyPrint.java +++ b/src/ooxml/java/org/apache/poi/dev/OOXMLPrettyPrint.java @@ -39,6 +39,7 @@ import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; +import org.apache.poi.openxml4j.opc.internal.ZipHelper; import org.apache.poi.util.IOUtils; import org.w3c.dom.Document; import org.xml.sax.InputSource; @@ -82,7 +83,7 @@ public class OOXMLPrettyPrint { IOException, TransformerException, ParserConfigurationException { System.out.println("Reading zip-file " + file + " and writing pretty-printed XML to " + outFile); - ZipFile zipFile = new ZipFile(file); + ZipFile zipFile = ZipHelper.openZipFile(file); try { ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(outFile))); try { diff --git a/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java b/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java index 888f50130..8937f8e53 100644 --- a/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java +++ b/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java @@ -41,6 +41,8 @@ import org.apache.poi.openxml4j.opc.internal.marshallers.ZipPartMarshaller; import org.apache.poi.openxml4j.util.ZipEntrySource; import org.apache.poi.openxml4j.util.ZipFileZipEntrySource; import org.apache.poi.openxml4j.util.ZipInputStreamZipEntrySource; +import org.apache.poi.openxml4j.util.ZipSecureFile; +import org.apache.poi.openxml4j.util.ZipSecureFile.ThresholdInputStream; import org.apache.poi.util.POILogFactory; import org.apache.poi.util.POILogger; import org.apache.poi.util.TempFile; @@ -85,9 +87,9 @@ public final class ZipPackage extends Package { @SuppressWarnings("deprecation") ZipPackage(InputStream in, PackageAccess access) throws IOException { super(access); - this.zipArchive = new ZipInputStreamZipEntrySource( - new ZipInputStream(in) - ); + InputStream zis = new ZipInputStream(in); + ThresholdInputStream tis = ZipSecureFile.addThreshold(zis); + this.zipArchive = new ZipInputStreamZipEntrySource(tis); } /** diff --git a/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/ZipHelper.java b/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/ZipHelper.java index 9598b05cb..408fa416f 100644 --- a/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/ZipHelper.java +++ b/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/ZipHelper.java @@ -29,6 +29,7 @@ import org.apache.poi.openxml4j.exceptions.OpenXML4JException; import org.apache.poi.openxml4j.opc.PackageRelationship; import org.apache.poi.openxml4j.opc.PackageRelationshipTypes; import org.apache.poi.openxml4j.opc.ZipPackage; +import org.apache.poi.openxml4j.util.ZipSecureFile; public final class ZipHelper { @@ -154,7 +155,7 @@ public final class ZipHelper { return null; } - return new ZipFile(file); + return new ZipSecureFile(file); } /** @@ -171,6 +172,6 @@ public final class ZipHelper { return null; } - return new ZipFile(f); + return new ZipSecureFile(f); } } diff --git a/src/ooxml/java/org/apache/poi/openxml4j/util/ZipInputStreamZipEntrySource.java b/src/ooxml/java/org/apache/poi/openxml4j/util/ZipInputStreamZipEntrySource.java index f7f334c75..7d72212cd 100644 --- a/src/ooxml/java/org/apache/poi/openxml4j/util/ZipInputStreamZipEntrySource.java +++ b/src/ooxml/java/org/apache/poi/openxml4j/util/ZipInputStreamZipEntrySource.java @@ -26,6 +26,8 @@ import java.util.Iterator; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; +import org.apache.poi.openxml4j.util.ZipSecureFile.ThresholdInputStream; + /** * Provides a way to get at all the ZipEntries * from a ZipInputStream, as many times as required. @@ -43,7 +45,7 @@ public class ZipInputStreamZipEntrySource implements ZipEntrySource { * We'll then eat lots of memory, but be able to * work with the entries at-will. */ - public ZipInputStreamZipEntrySource(ZipInputStream inp) throws IOException { + public ZipInputStreamZipEntrySource(ThresholdInputStream inp) throws IOException { zipEntries = new ArrayList(); boolean going = true; @@ -105,7 +107,7 @@ public class ZipInputStreamZipEntrySource implements ZipEntrySource { public static class FakeZipEntry extends ZipEntry { private byte[] data; - public FakeZipEntry(ZipEntry entry, ZipInputStream inp) throws IOException { + public FakeZipEntry(ZipEntry entry, InputStream inp) throws IOException { super(entry.getName()); // Grab the de-compressed contents for later diff --git a/src/ooxml/java/org/apache/poi/openxml4j/util/ZipSecureFile.java b/src/ooxml/java/org/apache/poi/openxml4j/util/ZipSecureFile.java new file mode 100644 index 000000000..b2f1d82a8 --- /dev/null +++ b/src/ooxml/java/org/apache/poi/openxml4j/util/ZipSecureFile.java @@ -0,0 +1,227 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.openxml4j.util; + +import java.io.File; +import java.io.FilterInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.PushbackInputStream; +import java.lang.reflect.Field; +import java.nio.charset.Charset; +import java.util.zip.InflaterInputStream; +import java.util.zip.ZipEntry; +import java.util.zip.ZipException; +import java.util.zip.ZipFile; +import java.util.zip.ZipInputStream; + +import org.apache.poi.util.POILogFactory; +import org.apache.poi.util.POILogger; + +/** + * This class wraps a {@link ZipFile} in order to check the + * entries for zip bombs + * while reading the archive. + * If a {@link ZipInputStream} is directly used, the wrapper + * can be applied via {@link #addThreshold(InputStream)}. + * The alert limits can be globally defined via {@link #setMaxEntrySize(long)} + * and {@link #setMinInflateRatio(double)}. + */ +public class ZipSecureFile extends ZipFile { + private static POILogger logger = POILogFactory.getLogger(ZipSecureFile.class); + + private static double MIN_INFLATE_RATIO = 0.01d; + private static long MAX_ENTRY_SIZE = 0xFFFFFFFFl; + + /** + * Sets the ratio between de- and inflated bytes to detect zipbomb. + * It defaults to 1% (= 0.01d), i.e. when the compression is better than + * 1% for any given read package part, the parsing will fail + * + * @param ratio the ratio between de- and inflated bytes to detect zipbomb + */ + public static void setMinInflateRatio(double ratio) { + MIN_INFLATE_RATIO = ratio; + } + + /** + * Sets the maximum file size of a single zip entry. It defaults to 4GB, + * i.e. the 32-bit zip format maximum. + * + * @param maxEntrySize the max. file size of a single zip entry + */ + public static void setMaxEntrySize(long maxEntrySize) { + if (maxEntrySize < 0 || maxEntrySize > 0xFFFFFFFFl) { + throw new IllegalArgumentException("Max entry size is bounded [0-4GB]."); + } + MAX_ENTRY_SIZE = maxEntrySize; + } + + public ZipSecureFile(File file, Charset charset) throws IOException { + super(file, charset); + } + + public ZipSecureFile(File file, int mode, Charset charset) throws IOException { + super(file, mode, charset); + } + + public ZipSecureFile(File file, int mode) throws IOException { + super(file, mode); + } + + public ZipSecureFile(File file) throws ZipException, IOException { + super(file); + } + + public ZipSecureFile(String name, Charset charset) throws IOException { + super(name, charset); + } + + public ZipSecureFile(String name) throws IOException { + super(name); + } + + /** + * Returns an input stream for reading the contents of the specified + * zip file entry. + * + *

    Closing this ZIP file will, in turn, close all input + * streams that have been returned by invocations of this method. + * + * @param entry the zip file entry + * @return the input stream for reading the contents of the specified + * zip file entry. + * @throws ZipException if a ZIP format error has occurred + * @throws IOException if an I/O error has occurred + * @throws IllegalStateException if the zip file has been closed + */ + public InputStream getInputStream(ZipEntry entry) throws IOException { + InputStream zipIS = super.getInputStream(entry); + return addThreshold(zipIS); + } + + public static ThresholdInputStream addThreshold(InputStream zipIS) throws IOException { + ThresholdInputStream newInner; + if (zipIS instanceof InflaterInputStream) { + try { + Field f = FilterInputStream.class.getDeclaredField("in"); + f.setAccessible(true); + InputStream oldInner = (InputStream)f.get(zipIS); + newInner = new ThresholdInputStream(oldInner, null); + f.set(zipIS, newInner); + } catch (Exception ex) { + logger.log(POILogger.WARN, "SecurityManager doesn't allow manipulation via reflection for zipbomb detection - continue with original input stream", ex); + newInner = null; + } + } else { + // the inner stream is a ZipFileInputStream, i.e. the data wasn't compressed + newInner = null; + } + + return new ThresholdInputStream(zipIS, newInner); + } + + public static class ThresholdInputStream extends PushbackInputStream { + long counter = 0; + ThresholdInputStream cis; + + public ThresholdInputStream(InputStream is, ThresholdInputStream cis) { + super(is,1); + this.cis = cis; + } + + public int read() throws IOException { + int b = in.read(); + if (b > -1) advance(1); + return b; + } + + public int read(byte b[], int off, int len) throws IOException { + int cnt = in.read(b, off, len); + if (cnt > -1) advance(cnt); + return cnt; + + } + + public long skip(long n) throws IOException { + counter = 0; + return in.skip(n); + } + + public synchronized void reset() throws IOException { + counter = 0; + in.reset(); + } + + public void advance(int advance) throws IOException { + counter += advance; + // check the file size first, in case we are working on uncompressed streams + if (counter < MAX_ENTRY_SIZE) { + if (cis == null) return; + double ratio = (double)cis.counter/(double)counter; + if (ratio > MIN_INFLATE_RATIO) return; + } + throw new IOException("Zip bomb detected! Exiting."); + } + + public ZipEntry getNextEntry() throws IOException { + if (!(in instanceof ZipInputStream)) { + throw new UnsupportedOperationException("underlying stream is not a ZipInputStream"); + } + counter = 0; + return ((ZipInputStream)in).getNextEntry(); + } + + public void closeEntry() throws IOException { + if (!(in instanceof ZipInputStream)) { + throw new UnsupportedOperationException("underlying stream is not a ZipInputStream"); + } + counter = 0; + ((ZipInputStream)in).closeEntry(); + } + + public void unread(int b) throws IOException { + if (!(in instanceof PushbackInputStream)) { + throw new UnsupportedOperationException("underlying stream is not a PushbackInputStream"); + } + if (--counter < 0) counter = 0; + ((PushbackInputStream)in).unread(b); + } + + public void unread(byte[] b, int off, int len) throws IOException { + if (!(in instanceof PushbackInputStream)) { + throw new UnsupportedOperationException("underlying stream is not a PushbackInputStream"); + } + counter -= len; + if (--counter < 0) counter = 0; + ((PushbackInputStream)in).unread(b, off, len); + } + + public int available() throws IOException { + return in.available(); + } + + public boolean markSupported() { + return in.markSupported(); + } + + public synchronized void mark(int readlimit) { + in.mark(readlimit); + } + } +} diff --git a/src/ooxml/java/org/apache/poi/xssf/dev/XSSFDump.java b/src/ooxml/java/org/apache/poi/xssf/dev/XSSFDump.java index 41fc335af..a3e04eb24 100644 --- a/src/ooxml/java/org/apache/poi/xssf/dev/XSSFDump.java +++ b/src/ooxml/java/org/apache/poi/xssf/dev/XSSFDump.java @@ -24,6 +24,7 @@ import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; +import org.apache.poi.openxml4j.opc.internal.ZipHelper; import org.apache.poi.util.IOUtils; import org.apache.xmlbeans.XmlObject; import org.apache.xmlbeans.XmlOptions; @@ -38,7 +39,7 @@ public final class XSSFDump { public static void main(String[] args) throws Exception { for (int i = 0; i < args.length; i++) { System.out.println("Dumping " + args[i]); - ZipFile zip = new ZipFile(args[i]); + ZipFile zip = ZipHelper.openZipFile(args[i]); try { dump(zip); } finally { diff --git a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java index e3a0363de..bd75179de 100644 --- a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java +++ b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFWorkbook.java @@ -32,6 +32,7 @@ import java.util.zip.ZipFile; import java.util.zip.ZipOutputStream; import org.apache.poi.openxml4j.opc.OPCPackage; +import org.apache.poi.openxml4j.opc.internal.ZipHelper; import org.apache.poi.ss.formula.udf.UDFFinder; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.CreationHelper; @@ -334,7 +335,7 @@ public class SXSSFWorkbook implements Workbook } private void injectData(File zipfile, OutputStream out) throws IOException { - ZipFile zip = new ZipFile(zipfile); + ZipFile zip = ZipHelper.openZipFile(zipfile); try { ZipOutputStream zos = new ZipOutputStream(out); diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/AllOpenXML4JTests.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/AllOpenXML4JTests.java index 1dcf93a32..a1a3ccc88 100644 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/AllOpenXML4JTests.java +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/AllOpenXML4JTests.java @@ -17,28 +17,24 @@ package org.apache.poi.openxml4j.opc; -import junit.framework.Test; -import junit.framework.TestSuite; - import org.apache.poi.openxml4j.opc.compliance.AllOpenXML4JComplianceTests; import org.apache.poi.openxml4j.opc.internal.AllOpenXML4JInternalTests; +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +@RunWith(Suite.class) +@Suite.SuiteClasses({ + TestContentType.class + , TestFileHelper.class + , TestListParts.class + , TestPackage.class + , TestPackageCoreProperties.class + , TestPackagePartName.class + , TestPackageThumbnail.class + , TestPackagingURIHelper.class + , TestRelationships.class + , AllOpenXML4JComplianceTests.class + , AllOpenXML4JInternalTests.class +}) public final class AllOpenXML4JTests { - - public static Test suite() { - - TestSuite suite = new TestSuite(AllOpenXML4JTests.class.getName()); - suite.addTestSuite(TestContentType.class); - suite.addTestSuite(TestFileHelper.class); - suite.addTestSuite(TestListParts.class); - suite.addTestSuite(TestPackage.class); - suite.addTestSuite(TestPackageCoreProperties.class); - suite.addTestSuite(TestPackagePartName.class); - suite.addTestSuite(TestPackageThumbnail.class); - suite.addTestSuite(TestPackagingURIHelper.class); - suite.addTestSuite(TestRelationships.class); - suite.addTest(AllOpenXML4JComplianceTests.suite()); - suite.addTest(AllOpenXML4JInternalTests.suite()); - return suite; - } } diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java index 07a2b333d..01c1b7707 100644 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java @@ -17,6 +17,14 @@ package org.apache.poi.openxml4j.opc; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; @@ -25,35 +33,47 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; import java.net.URI; +import java.util.Enumeration; import java.util.HashMap; import java.util.List; import java.util.TreeMap; import java.util.regex.Pattern; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; +import java.util.zip.ZipOutputStream; -import junit.framework.TestCase; - +import org.apache.poi.POIXMLException; import org.apache.poi.openxml4j.OpenXML4JTestDataSamples; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.openxml4j.exceptions.InvalidOperationException; import org.apache.poi.openxml4j.opc.internal.ContentTypeManager; import org.apache.poi.openxml4j.opc.internal.FileHelper; import org.apache.poi.openxml4j.opc.internal.PackagePropertiesPart; +import org.apache.poi.openxml4j.opc.internal.ZipHelper; +import org.apache.poi.openxml4j.util.ZipSecureFile; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.usermodel.WorkbookFactory; import org.apache.poi.util.DocumentHelper; +import org.apache.poi.util.IOUtils; import org.apache.poi.util.POILogFactory; import org.apache.poi.util.POILogger; import org.apache.poi.util.TempFile; +import org.junit.Ignore; +import org.junit.Test; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; -public final class TestPackage extends TestCase { +public final class TestPackage { private static final POILogger logger = POILogFactory.getLogger(TestPackage.class); /** * Test that just opening and closing the file doesn't alter the document. */ - public void testOpenSave() throws Exception { + @Test + public void openSave() throws Exception { String originalFile = OpenXML4JTestDataSamples.getSampleFileName("TestPackageCommon.docx"); File targetFile = OpenXML4JTestDataSamples.getOutputFile("TestPackageOpenSaveTMP.docx"); @@ -75,7 +95,8 @@ public final class TestPackage extends TestCase { * Test that when we create a new Package, we give it * the correct default content types */ - public void testCreateGetsContentTypes() throws Exception { + @Test + public void createGetsContentTypes() throws Exception { File targetFile = OpenXML4JTestDataSamples.getOutputFile("TestCreatePackageTMP.docx"); // Zap the target file, in case of an earlier run @@ -107,7 +128,8 @@ public final class TestPackage extends TestCase { /** * Test package creation. */ - public void testCreatePackageAddPart() throws Exception { + @Test + public void createPackageAddPart() throws Exception { File targetFile = OpenXML4JTestDataSamples.getOutputFile("TestCreatePackageTMP.docx"); File expectedFile = OpenXML4JTestDataSamples.getSampleFile("TestCreatePackageOUTPUT.docx"); @@ -153,7 +175,8 @@ public final class TestPackage extends TestCase { * document and another part, save and re-load and * have everything setup as expected */ - public void testCreatePackageWithCoreDocument() throws Exception { + @Test + public void createPackageWithCoreDocument() throws Exception { ByteArrayOutputStream baos = new ByteArrayOutputStream(); OPCPackage pkg = OPCPackage.create(baos); @@ -247,7 +270,8 @@ public final class TestPackage extends TestCase { /** * Test package opening. */ - public void testOpenPackage() throws Exception { + @Test + public void openPackage() throws Exception { File targetFile = OpenXML4JTestDataSamples.getOutputFile("TestOpenPackageTMP.docx"); File inputFile = OpenXML4JTestDataSamples.getSampleFile("TestOpenPackageINPUT.docx"); @@ -306,7 +330,8 @@ public final class TestPackage extends TestCase { * OutputStream, in addition to the normal writing * to a file */ - public void testSaveToOutputStream() throws Exception { + @Test + public void saveToOutputStream() throws Exception { String originalFile = OpenXML4JTestDataSamples.getSampleFileName("TestPackageCommon.docx"); File targetFile = OpenXML4JTestDataSamples.getOutputFile("TestPackageOpenSaveTMP.docx"); @@ -334,7 +359,8 @@ public final class TestPackage extends TestCase { * simple InputStream, in addition to the normal * reading from a file */ - public void testOpenFromInputStream() throws Exception { + @Test + public void openFromInputStream() throws Exception { String originalFile = OpenXML4JTestDataSamples.getSampleFileName("TestPackageCommon.docx"); FileInputStream finp = new FileInputStream(originalFile); @@ -353,7 +379,9 @@ public final class TestPackage extends TestCase { /** * TODO: fix and enable */ - public void disabled_testRemovePartRecursive() throws Exception { + @Test + @Ignore + public void removePartRecursive() throws Exception { String originalFile = OpenXML4JTestDataSamples.getSampleFileName("TestPackageCommon.docx"); File targetFile = OpenXML4JTestDataSamples.getOutputFile("TestPackageRemovePartRecursiveOUTPUT.docx"); File tempFile = OpenXML4JTestDataSamples.getOutputFile("TestPackageRemovePartRecursiveTMP.docx"); @@ -369,7 +397,8 @@ public final class TestPackage extends TestCase { assertTrue(targetFile.delete()); } - public void testDeletePart() throws InvalidFormatException { + @Test + public void deletePart() throws InvalidFormatException { TreeMap expectedValues; TreeMap values; @@ -426,7 +455,8 @@ public final class TestPackage extends TestCase { p.revert(); } - public void testDeletePartRecursive() throws InvalidFormatException { + @Test + public void deletePartRecursive() throws InvalidFormatException { TreeMap expectedValues; TreeMap values; @@ -468,7 +498,8 @@ public final class TestPackage extends TestCase { * Test that we can open a file by path, and then * write changes to it. */ - public void testOpenFileThenOverwrite() throws Exception { + @Test + public void openFileThenOverwrite() throws Exception { File tempFile = TempFile.createTempFile("poiTesting","tmp"); File origFile = OpenXML4JTestDataSamples.getSampleFile("TestPackageCommon.docx"); FileHelper.copyFile(origFile, tempFile); @@ -505,7 +536,8 @@ public final class TestPackage extends TestCase { * Test that we can open a file by path, save it * to another file, then delete both */ - public void testOpenFileThenSaveDelete() throws Exception { + @Test + public void openFileThenSaveDelete() throws Exception { File tempFile = TempFile.createTempFile("poiTesting","tmp"); File tempFile2 = TempFile.createTempFile("poiTesting","tmp"); File origFile = OpenXML4JTestDataSamples.getSampleFile("TestPackageCommon.docx"); @@ -529,7 +561,8 @@ public final class TestPackage extends TestCase { return (ContentTypeManager)f.get(pkg); } - public void testGetPartsByName() throws Exception { + @Test + public void getPartsByName() throws Exception { String filepath = OpenXML4JTestDataSamples.getSampleFileName("sample.docx"); OPCPackage pkg = OPCPackage.open(filepath, PackageAccess.READ_WRITE); @@ -553,7 +586,8 @@ public final class TestPackage extends TestCase { } } - public void testGetPartSize() throws Exception { + @Test + public void getPartSize() throws Exception { String filepath = OpenXML4JTestDataSamples.getSampleFileName("sample.docx"); OPCPackage pkg = OPCPackage.open(filepath, PackageAccess.READ); try { @@ -585,7 +619,8 @@ public final class TestPackage extends TestCase { } } - public void testReplaceContentType() throws Exception { + @Test + public void replaceContentType() throws Exception { InputStream is = OpenXML4JTestDataSamples.openSampleStream("sample.xlsx"); OPCPackage p = OPCPackage.open(is); @@ -603,4 +638,113 @@ public final class TestPackage extends TestCase { assertFalse(mgr.isContentTypeRegister("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml")); assertTrue(mgr.isContentTypeRegister("application/vnd.ms-excel.sheet.macroEnabled.main+xml")); } + + @Test(expected=IOException.class) + public void zipBombCreateAndHandle() throws Exception { + // #50090 / #56865 + ZipFile zipFile = ZipHelper.openZipFile(OpenXML4JTestDataSamples.getSampleFile("sample.xlsx")); + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + ZipOutputStream append = new ZipOutputStream(bos); + // first, copy contents from existing war + Enumeration entries = zipFile.entries(); + while (entries.hasMoreElements()) { + ZipEntry e2 = entries.nextElement(); + ZipEntry e = new ZipEntry(e2.getName()); + e.setTime(e2.getTime()); + e.setComment(e2.getComment()); + e.setSize(e2.getSize()); + + append.putNextEntry(e); + if (!e.isDirectory()) { + InputStream is = zipFile.getInputStream(e); + if (e.getName().equals("[Content_Types].xml")) { + ByteArrayOutputStream bos2 = new ByteArrayOutputStream(); + IOUtils.copy(is, bos2); + long size = bos2.size()-"".length(); + append.write(bos2.toByteArray(), 0, (int)size); + byte spam[] = new byte[0x7FFF]; + for (int i=0; i".getBytes()); + size += 8; + e.setSize(size); + } else { + IOUtils.copy(is, append); + } + } + append.closeEntry(); + } + + append.close(); + zipFile.close(); + + byte buf[] = bos.toByteArray(); + bos = null; + + Workbook wb = WorkbookFactory.create(new ByteArrayInputStream(buf)); + wb.getSheetAt(0); + wb.close(); + } + + @Test + public void zipBombCheckSizes() throws Exception { + File file = OpenXML4JTestDataSamples.getSampleFile("sample.xlsx"); + + try { + double min_ratio = Double.MAX_VALUE; + long max_size = 0; + ZipFile zf = ZipHelper.openZipFile(file); + Enumeration entries = zf.entries(); + while (entries.hasMoreElements()) { + ZipEntry ze = entries.nextElement(); + double ratio = (double)ze.getCompressedSize() / (double)ze.getSize(); + min_ratio = Math.min(min_ratio, ratio); + max_size = Math.max(max_size, ze.getSize()); + } + zf.close(); + + // use values close to, but within the limits + ZipSecureFile.setMinInflateRatio(min_ratio-0.002); + ZipSecureFile.setMaxEntrySize(max_size+1); + Workbook wb = WorkbookFactory.create(file); + wb.close(); + + // check ratio ouf of bounds + ZipSecureFile.setMinInflateRatio(min_ratio+0.002); + try { + wb = WorkbookFactory.create(file); + wb.close(); + // this is a bit strange, as there will be different exceptions thrown + // depending if this executed via "ant test" or within eclipse + // maybe a difference in JDK ... + } catch (InvalidFormatException e) { + assertEquals("Zip bomb detected! Exiting.", e.getMessage()); + } catch (POIXMLException e) { + InvocationTargetException t = (InvocationTargetException)e.getCause(); + IOException t2 = (IOException)t.getTargetException(); + assertEquals("Zip bomb detected! Exiting.", t2.getMessage()); + } + + // check max entry size ouf of bounds + ZipSecureFile.setMinInflateRatio(min_ratio-0.002); + ZipSecureFile.setMaxEntrySize(max_size-1); + try { + wb = WorkbookFactory.create(file, null, true); + wb.close(); + } catch (InvalidFormatException e) { + assertEquals("Zip bomb detected! Exiting.", e.getMessage()); + } catch (POIXMLException e) { + InvocationTargetException t = (InvocationTargetException)e.getCause(); + IOException t2 = (IOException)t.getTargetException(); + assertEquals("Zip bomb detected! Exiting.", t2.getMessage()); + } + } finally { + // reset otherwise a lot of ooxml tests will fail + ZipSecureFile.setMinInflateRatio(0.01d); + ZipSecureFile.setMaxEntrySize(0xFFFFFFFFl); + } + } } diff --git a/src/testcases/org/apache/poi/ss/formula/function/ExcelFileFormatDocFunctionExtractor.java b/src/testcases/org/apache/poi/ss/formula/function/ExcelFileFormatDocFunctionExtractor.java index 13581c8a4..617f7b052 100644 --- a/src/testcases/org/apache/poi/ss/formula/function/ExcelFileFormatDocFunctionExtractor.java +++ b/src/testcases/org/apache/poi/ss/formula/function/ExcelFileFormatDocFunctionExtractor.java @@ -516,6 +516,7 @@ public final class ExcelFileFormatDocFunctionExtractor { ps.println("#Columns: (index, name, minParams, maxParams, returnClass, paramClasses, isVolatile, hasFootnote )"); ps.println(""); try { + // can't use ZipHelper here, because its in a different module ZipFile zf = new ZipFile(effDocFile); InputStream is = zf.getInputStream(zf.getEntry("content.xml")); extractFunctionData(new FunctionDataCollector(ps), is); From 7393f122b2694eecc1725d9655bbde471429dbf2 Mon Sep 17 00:00:00 2001 From: Andreas Beeker Date: Wed, 24 Jun 2015 07:06:01 +0000 Subject: [PATCH 203/301] Removed Java7 calls git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1687176 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/openxml4j/util/ZipSecureFile.java | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/openxml4j/util/ZipSecureFile.java b/src/ooxml/java/org/apache/poi/openxml4j/util/ZipSecureFile.java index b2f1d82a8..60b31ee27 100644 --- a/src/ooxml/java/org/apache/poi/openxml4j/util/ZipSecureFile.java +++ b/src/ooxml/java/org/apache/poi/openxml4j/util/ZipSecureFile.java @@ -72,14 +72,6 @@ public class ZipSecureFile extends ZipFile { MAX_ENTRY_SIZE = maxEntrySize; } - public ZipSecureFile(File file, Charset charset) throws IOException { - super(file, charset); - } - - public ZipSecureFile(File file, int mode, Charset charset) throws IOException { - super(file, mode, charset); - } - public ZipSecureFile(File file, int mode) throws IOException { super(file, mode); } @@ -88,10 +80,6 @@ public class ZipSecureFile extends ZipFile { super(file); } - public ZipSecureFile(String name, Charset charset) throws IOException { - super(name, charset); - } - public ZipSecureFile(String name) throws IOException { super(name); } From 5103ea7c0c12251d45556b9c7d93b5e0ddce953f Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Wed, 24 Jun 2015 08:33:06 +0000 Subject: [PATCH 204/301] show full exception stack-trace if zip-bomb detection test fails git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1687197 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/openxml4j/opc/TestPackage.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java index 01c1b7707..2383455fc 100644 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java @@ -712,7 +712,7 @@ public final class TestPackage { Workbook wb = WorkbookFactory.create(file); wb.close(); - // check ratio ouf of bounds + // check ratio out of bounds ZipSecureFile.setMinInflateRatio(min_ratio+0.002); try { wb = WorkbookFactory.create(file); @@ -721,11 +721,15 @@ public final class TestPackage { // depending if this executed via "ant test" or within eclipse // maybe a difference in JDK ... } catch (InvalidFormatException e) { - assertEquals("Zip bomb detected! Exiting.", e.getMessage()); + if(!e.getMessage().equals("Zip bomb detected! Exiting.")) { + throw new IllegalStateException(e); + } } catch (POIXMLException e) { InvocationTargetException t = (InvocationTargetException)e.getCause(); IOException t2 = (IOException)t.getTargetException(); - assertEquals("Zip bomb detected! Exiting.", t2.getMessage()); + if(!t2.getMessage().equals("Zip bomb detected! Exiting.")) { + throw new IllegalStateException(e); + } } // check max entry size ouf of bounds @@ -735,11 +739,15 @@ public final class TestPackage { wb = WorkbookFactory.create(file, null, true); wb.close(); } catch (InvalidFormatException e) { - assertEquals("Zip bomb detected! Exiting.", e.getMessage()); + if(!e.getMessage().equals("Zip bomb detected! Exiting.")) { + throw new IllegalStateException(e); + } } catch (POIXMLException e) { InvocationTargetException t = (InvocationTargetException)e.getCause(); IOException t2 = (IOException)t.getTargetException(); - assertEquals("Zip bomb detected! Exiting.", t2.getMessage()); + if(!t2.getMessage().equals("Zip bomb detected! Exiting.")) { + throw new IllegalStateException(e); + } } } finally { // reset otherwise a lot of ooxml tests will fail From bde247f61a26bc8370c2b896d5258dc15f98c0e6 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Wed, 24 Jun 2015 08:53:25 +0000 Subject: [PATCH 205/301] Fix test to find the exception-text in all cases git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1687212 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/openxml4j/opc/TestPackage.java | 42 ++++++++++++------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java index 2383455fc..2f857933e 100644 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java @@ -721,15 +721,9 @@ public final class TestPackage { // depending if this executed via "ant test" or within eclipse // maybe a difference in JDK ... } catch (InvalidFormatException e) { - if(!e.getMessage().equals("Zip bomb detected! Exiting.")) { - throw new IllegalStateException(e); - } + checkForZipBombException(e); } catch (POIXMLException e) { - InvocationTargetException t = (InvocationTargetException)e.getCause(); - IOException t2 = (IOException)t.getTargetException(); - if(!t2.getMessage().equals("Zip bomb detected! Exiting.")) { - throw new IllegalStateException(e); - } + checkForZipBombException(e); } // check max entry size ouf of bounds @@ -739,15 +733,9 @@ public final class TestPackage { wb = WorkbookFactory.create(file, null, true); wb.close(); } catch (InvalidFormatException e) { - if(!e.getMessage().equals("Zip bomb detected! Exiting.")) { - throw new IllegalStateException(e); - } + checkForZipBombException(e); } catch (POIXMLException e) { - InvocationTargetException t = (InvocationTargetException)e.getCause(); - IOException t2 = (IOException)t.getTargetException(); - if(!t2.getMessage().equals("Zip bomb detected! Exiting.")) { - throw new IllegalStateException(e); - } + checkForZipBombException(e); } } finally { // reset otherwise a lot of ooxml tests will fail @@ -755,4 +743,26 @@ public final class TestPackage { ZipSecureFile.setMaxEntrySize(0xFFFFFFFFl); } } + + private void checkForZipBombException(Throwable e) { + if(e instanceof InvocationTargetException) { + InvocationTargetException t = (InvocationTargetException)e; + IOException t2 = (IOException)t.getTargetException(); + if("Zip bomb detected! Exiting.".equals(t2.getMessage())) { + return; + } + } + + if ("Zip bomb detected! Exiting.".equals(e.getMessage())) { + return; + } + + // recursively check the causes for the message as it can be nested further down in the exception-tree + if(e.getCause() != null && e.getCause() != e) { + checkForZipBombException(e.getCause()); + return; + } + + throw new IllegalStateException("Expected to catch an Exception because of a detected Zip Bomb, but did not find the related error message in the exception", e); + } } From aeb69950955807e14356c681b111941311a6ebba Mon Sep 17 00:00:00 2001 From: Andreas Beeker Date: Wed, 24 Jun 2015 23:34:03 +0000 Subject: [PATCH 206/301] Bug 54332 - WMF extraction failing in Tika for older PowerPoint Files git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1687398 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/hslf/HSLFSlideShow.java | 1 + .../src/org/apache/poi/hslf/blip/Bitmap.java | 11 +++-- .../src/org/apache/poi/hslf/blip/DIB.java | 24 +++++++-- .../src/org/apache/poi/hslf/blip/EMF.java | 24 +++++++-- .../src/org/apache/poi/hslf/blip/JPEG.java | 46 ++++++++++++++++-- .../org/apache/poi/hslf/blip/Metafile.java | 4 +- .../src/org/apache/poi/hslf/blip/PICT.java | 27 +++++++--- .../src/org/apache/poi/hslf/blip/PNG.java | 30 ++++++++---- .../src/org/apache/poi/hslf/blip/WMF.java | 27 ++++++++-- .../poi/hslf/usermodel/PictureData.java | 19 +++++++- .../apache/poi/hslf/model/TestPicture.java | 37 ++++++++++---- test-data/slideshow/54332a.ppt | Bin 0 -> 67584 bytes test-data/slideshow/54332b.ppt | Bin 0 -> 50176 bytes 13 files changed, 199 insertions(+), 51 deletions(-) create mode 100644 test-data/slideshow/54332a.ppt create mode 100644 test-data/slideshow/54332b.ppt diff --git a/src/scratchpad/src/org/apache/poi/hslf/HSLFSlideShow.java b/src/scratchpad/src/org/apache/poi/hslf/HSLFSlideShow.java index c2a5248e7..5ee4f2e64 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/HSLFSlideShow.java +++ b/src/scratchpad/src/org/apache/poi/hslf/HSLFSlideShow.java @@ -401,6 +401,7 @@ public final class HSLFSlideShow extends POIDocument { // Build the PictureData object from the data try { PictureData pict = PictureData.create(type - 0xF018); + pict.setSignature(signature); // Copy the data, ready to pass to PictureData byte[] imgdata = new byte[imgsize]; diff --git a/src/scratchpad/src/org/apache/poi/hslf/blip/Bitmap.java b/src/scratchpad/src/org/apache/poi/hslf/blip/Bitmap.java index 9f59de4a8..4fd09e6fd 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/blip/Bitmap.java +++ b/src/scratchpad/src/org/apache/poi/hslf/blip/Bitmap.java @@ -32,15 +32,18 @@ public abstract class Bitmap extends PictureData { public byte[] getData(){ byte[] rawdata = getRawData(); - byte[] imgdata = new byte[rawdata.length-17]; - System.arraycopy(rawdata, 17, imgdata, 0, imgdata.length); + int prefixLen = 16*uidInstanceCount+1; + byte[] imgdata = new byte[rawdata.length-prefixLen]; + System.arraycopy(rawdata, prefixLen, imgdata, 0, imgdata.length); return imgdata; } public void setData(byte[] data) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); - byte[] checksum = getChecksum(data); - out.write(checksum); + for (int i=0; i0x7A80 + * DIB signature is {@code 0x7A80} or {@code 0x7A90} * - * @return DIB signature (0x7A80) + * @return DIB signature ({@code 0x7A80} or {@code 0x7A90}) */ public int getSignature(){ - return 0x7A80; + return (uidInstanceCount == 1 ? 0x7A80 : 0x7A90); } + + /** + * Sets the DIB signature - either {@code 0x7A80} or {@code 0x7A90} + */ + public void setSignature(int signature) { + switch (signature) { + case 0x7A80: + uidInstanceCount = 1; + break; + case 0x7A90: + uidInstanceCount = 2; + break; + default: + throw new IllegalArgumentException(signature+" is not a valid instance/signature value for DIB"); + } + } public byte[] getData(){ return addBMPHeader ( super.getData() ); diff --git a/src/scratchpad/src/org/apache/poi/hslf/blip/EMF.java b/src/scratchpad/src/org/apache/poi/hslf/blip/EMF.java index 182e96a44..a2c3598fb 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/blip/EMF.java +++ b/src/scratchpad/src/org/apache/poi/hslf/blip/EMF.java @@ -84,11 +84,27 @@ public final class EMF extends Metafile { } /** - * EMF signature is 0x3D40 + * EMF signature is {@code 0x3D40} or {@code 0x3D50} * - * @return EMF signature (0x3D40) + * @return EMF signature ({@code 0x3D40} or {@code 0x3D50}) */ - public int getSignature(){ - return 0x3D40; + public int getSignature() { + return (uidInstanceCount == 1 ? 0x3D40 : 0x3D50); + } + + /** + * Sets the EMF signature - either {@code 0x3D40} or {@code 0x3D50} + */ + public void setSignature(int signature) { + switch (signature) { + case 0x3D40: + uidInstanceCount = 1; + break; + case 0x3D50: + uidInstanceCount = 2; + break; + default: + throw new IllegalArgumentException(signature+" is not a valid instance/signature value for EMF"); + } } } diff --git a/src/scratchpad/src/org/apache/poi/hslf/blip/JPEG.java b/src/scratchpad/src/org/apache/poi/hslf/blip/JPEG.java index 65ade3ee3..836a7b9c8 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/blip/JPEG.java +++ b/src/scratchpad/src/org/apache/poi/hslf/blip/JPEG.java @@ -26,6 +26,10 @@ import org.apache.poi.hslf.model.Picture; */ public final class JPEG extends Bitmap { + public enum ColorSpace { rgb, cymk }; + + private ColorSpace colorSpace = ColorSpace.rgb; + /** * @return type of this picture * @see org.apache.poi.hslf.model.Picture#JPEG @@ -34,12 +38,48 @@ public final class JPEG extends Bitmap { return Picture.JPEG; } + public ColorSpace getColorSpace() { + return colorSpace; + } + + public void setColorSpace(ColorSpace colorSpace) { + this.colorSpace = colorSpace; + } + /** - * JPEG signature is 0x46A0 + * JPEG signature is one of {@code 0x46A0, 0x46B0, 0x6E20, 0x6E30} * - * @return JPEG signature (0x46A0) + * @return JPEG signature ({@code 0x46A0, 0x46B0, 0x6E20, 0x6E30}) */ public int getSignature(){ - return 0x46A0; + return (colorSpace == ColorSpace.rgb) + ? (uidInstanceCount == 1 ? 0x46A0 : 0x46B0) + : (uidInstanceCount == 1 ? 0x6E20 : 0x6E30); } + + /** + * Sets the PICT signature - either {@code 0x5420} or {@code 0x5430} + */ + public void setSignature(int signature) { + switch (signature) { + case 0x46A0: + uidInstanceCount = 1; + colorSpace = ColorSpace.rgb; + break; + case 0x46B0: + uidInstanceCount = 2; + colorSpace = ColorSpace.rgb; + break; + case 0x6E20: + uidInstanceCount = 1; + colorSpace = ColorSpace.cymk; + break; + case 0x6E30: + uidInstanceCount = 2; + colorSpace = ColorSpace.cymk; + break; + default: + throw new IllegalArgumentException(signature+" is not a valid instance/signature value for JPEG"); + } + } } diff --git a/src/scratchpad/src/org/apache/poi/hslf/blip/Metafile.java b/src/scratchpad/src/org/apache/poi/hslf/blip/Metafile.java index c05d19acb..163f6da84 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/blip/Metafile.java +++ b/src/scratchpad/src/org/apache/poi/hslf/blip/Metafile.java @@ -86,8 +86,8 @@ public abstract class Metafile extends PictureData { zipsize = LittleEndian.getInt(data, pos); pos += LittleEndian.INT_SIZE; - compression = LittleEndian.getUnsignedByte(data, pos); pos++; - filter = LittleEndian.getUnsignedByte(data, pos); pos++; + compression = LittleEndian.getUByte(data, pos); pos++; + filter = LittleEndian.getUByte(data, pos); pos++; } public void write(OutputStream out) throws IOException { diff --git a/src/scratchpad/src/org/apache/poi/hslf/blip/PICT.java b/src/scratchpad/src/org/apache/poi/hslf/blip/PICT.java index 0796db855..848d99442 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/blip/PICT.java +++ b/src/scratchpad/src/org/apache/poi/hslf/blip/PICT.java @@ -33,10 +33,6 @@ import org.apache.poi.hslf.model.Shape; */ public final class PICT extends Metafile { - public PICT(){ - super(); - } - /** * Extract compressed PICT data from a ppt */ @@ -46,7 +42,7 @@ public final class PICT extends Metafile { byte[] macheader = new byte[512]; ByteArrayOutputStream out = new ByteArrayOutputStream(); out.write(macheader); - int pos = CHECKSUM_SIZE; + int pos = CHECKSUM_SIZE*uidInstanceCount; byte[] pict; try { pict = read(rawdata, pos); @@ -109,12 +105,27 @@ public final class PICT extends Metafile { } /** - * PICT signature is 0x5430 + * PICT signature is {@code 0x5420} or {@code 0x5430} * - * @return PICT signature (0x5430) + * @return PICT signature ({@code 0x5420} or {@code 0x5430}) */ public int getSignature(){ - return 0x5430; + return (uidInstanceCount == 1 ? 0x5420 : 0x5430); } + /** + * Sets the PICT signature - either {@code 0x5420} or {@code 0x5430} + */ + public void setSignature(int signature) { + switch (signature) { + case 0x5420: + uidInstanceCount = 1; + break; + case 0x5430: + uidInstanceCount = 2; + break; + default: + throw new IllegalArgumentException(signature+" is not a valid instance/signature value for PICT"); + } + } } diff --git a/src/scratchpad/src/org/apache/poi/hslf/blip/PNG.java b/src/scratchpad/src/org/apache/poi/hslf/blip/PNG.java index 12b98f180..b0a08d3a5 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/blip/PNG.java +++ b/src/scratchpad/src/org/apache/poi/hslf/blip/PNG.java @@ -17,14 +17,8 @@ package org.apache.poi.hslf.blip; -import org.apache.poi.util.PngUtils; import org.apache.poi.hslf.model.Picture; -import org.apache.poi.hslf.exceptions.HSLFException; - -import javax.imageio.ImageIO; -import java.awt.image.BufferedImage; -import java.io.ByteArrayInputStream; -import java.io.IOException; +import org.apache.poi.util.PngUtils; /** * Represents a PNG picture data in a PPT file @@ -59,11 +53,27 @@ public final class PNG extends Bitmap { } /** - * PNG signature is 0x6E00 + * PNG signature is {@code 0x6E00} or {@code 0x6E10} * - * @return PNG signature (0x6E00) + * @return PNG signature ({@code 0x6E00} or {@code 0x6E10}) */ public int getSignature(){ - return 0x6E00; + return (uidInstanceCount == 1 ? 0x6E00 : 0x6E10); + } + + /** + * Sets the PNG signature - either {@code 0x6E00} or {@code 0x6E10} + */ + public void setSignature(int signature) { + switch (signature) { + case 0x6E00: + uidInstanceCount = 1; + break; + case 0x6E10: + uidInstanceCount = 2; + break; + default: + throw new IllegalArgumentException(signature+" is not a valid instance/signature value for PNG"); + } } } diff --git a/src/scratchpad/src/org/apache/poi/hslf/blip/WMF.java b/src/scratchpad/src/org/apache/poi/hslf/blip/WMF.java index 4400c9559..0e8c16078 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/blip/WMF.java +++ b/src/scratchpad/src/org/apache/poi/hslf/blip/WMF.java @@ -43,8 +43,8 @@ public final class WMF extends Metafile { ByteArrayOutputStream out = new ByteArrayOutputStream(); InputStream is = new ByteArrayInputStream( rawdata ); Header header = new Header(); - header.read(rawdata, CHECKSUM_SIZE); - is.skip(header.getSize() + CHECKSUM_SIZE); + header.read(rawdata, CHECKSUM_SIZE*uidInstanceCount); + is.skip(header.getSize() + CHECKSUM_SIZE*uidInstanceCount); AldusHeader aldus = new AldusHeader(); aldus.left = header.bounds.x; @@ -84,7 +84,9 @@ public final class WMF extends Metafile { byte[] checksum = getChecksum(data); ByteArrayOutputStream out = new ByteArrayOutputStream(); - out.write(checksum); + for (int i=0; i0x2160 + * WMF signature is either {@code 0x2160} or {@code 0x2170} */ public int getSignature(){ - return 0x2160; + return (uidInstanceCount == 1 ? 0x2160 : 0x2170); } + /** + * Sets the WMF signature - either {@code 0x2160} or {@code 0x2170} + */ + public void setSignature(int signature) { + switch (signature) { + case 0x2160: + uidInstanceCount = 1; + break; + case 0x2170: + uidInstanceCount = 2; + break; + default: + throw new IllegalArgumentException(signature+" is not a valid instance/signature value for WMF"); + } + } /** * Aldus Placeable Metafile header - 22 byte structure before WMF data. diff --git a/src/scratchpad/src/org/apache/poi/hslf/usermodel/PictureData.java b/src/scratchpad/src/org/apache/poi/hslf/usermodel/PictureData.java index 857ad5451..3fa900ca2 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/usermodel/PictureData.java +++ b/src/scratchpad/src/org/apache/poi/hslf/usermodel/PictureData.java @@ -55,11 +55,17 @@ public abstract class PictureData { * Binary data of the picture */ private byte[] rawdata; + /** * The offset to the picture in the stream */ protected int offset; - + + /** + * The instance type/signatures defines if one or two UID instances will be included + */ + protected int uidInstanceCount = 1; + /** * Returns type of this picture. * Must be one of the static constants defined in the Picture class. @@ -82,8 +88,17 @@ public abstract class PictureData { /** * Blip signature. */ - protected abstract int getSignature(); + public abstract int getSignature(); + + public abstract void setSignature(int signature); + /** + * The instance type/signatures defines if one or two UID instances will be included + */ + protected int getUIDInstanceCount() { + return uidInstanceCount; + } + protected static final ImagePainter[] painters = new ImagePainter[8]; static { PictureData.setImagePainter(Picture.PNG, new BitmapPainter()); diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestPicture.java b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestPicture.java index fabf63bee..82614b97e 100644 --- a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestPicture.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestPicture.java @@ -131,18 +131,37 @@ public final class TestPicture { null // EMF }; - for (int i = 0; i < pictures.length; i++) { - BufferedImage image = ImageIO.read(new ByteArrayInputStream(pictures[i].getData())); - - if (pictures[i].getType() != Picture.WMF && pictures[i].getType() != Picture.EMF) { - assertNotNull(image); - - int[] dimensions = expectedSizes[i]; - assertEquals(dimensions[0], image.getWidth()); - assertEquals(dimensions[1], image.getHeight()); + int i=0; + for (PictureData pd : pictures) { + BufferedImage image = ImageIO.read(new ByteArrayInputStream(pd.getData())); + switch (pd.getType()) { + case Picture.WMF: + case Picture.EMF: + break; + default: + assertNotNull(image); + int[] dimensions = expectedSizes[i]; + assertEquals(dimensions[0], image.getWidth()); + assertEquals(dimensions[1], image.getHeight()); + break; } + i++; } } + + @Test + public void bug54332() throws Exception { + HSLFSlideShow hss = new HSLFSlideShow(_slTests.openResourceAsStream("54332a.ppt")); // TIKA-1046 + + PictureData[] pictures = hss.getPictures(); + assertEquals(1, pictures.length); + assertEquals(102352, pictures[0].getData().length); + + hss = new HSLFSlideShow(_slTests.openResourceAsStream("54332b.ppt")); // TIKA-1612 + pictures = hss.getPictures(); + assertEquals(1, pictures.length); + assertEquals(55830, pictures[0].getData().length); + } @Test @Ignore("Just for visual validation - antialiasing is different on various systems") diff --git a/test-data/slideshow/54332a.ppt b/test-data/slideshow/54332a.ppt new file mode 100644 index 0000000000000000000000000000000000000000..ebdedf5e3dc9e9536f5bbb7d1c98ae3b94e90644 GIT binary patch literal 67584 zcmeFWg;QKj&^L+%cMt9%!JXh9LJ02e?(Qs-;1b;3-JL~(yDzSb+v1D!<$2%ws&3u? z;8xwK>8k0T=|1Q5{JPFe_slfTc78p{4$S|niNL_ayuG8qApSq(aR0_W|Ch&xfdTv* z!~UbU_xJbz#NPiX@E`qS|Nr*?5f3;~lV0A~!N6$sF#P`M%D?7DQv25r^F7o5>U~BQ zCxo0%t@zU5cv!C^?!TS>-xi1m1G9hu10#0k1@oy_9j5-DKFpg})V4L&@DVokcna30eR z`pCT1VMQ76ai-vBZfr5RKh0CJRr`Td>3qL43FzdhEBBKKK=qK|eWcMb?)uTBPAKf0 zh*b~SK1OAHXqk!2#XUtYDl$c8)SvmsgN>;-Z%62~#v^Z8p-DlZm ztZK}itQDg3^>`#-n2tTfJQBSSUfZ1*CqGpBiFPE)3(|}zs*aT?coaR9JCI{rR^Q=( z4-tK%(oAGxbG;bSb@=1Kr8xFD`ciujvjc?nyunYUnWE_p(i#H~qae~57YcspGo$d5 z!4&PGciRuj{?wbuDk8RXpHXnBNXnH?6`STbw`+66LFTIM!B6{ke!X$dQ)|x~1)YRu zrB2Es?E%iJgQ~{lGS61fk<5b)kZ`O2>$G|LLDU(&>cQt8e}W}I(aTA9jSeEDgk>Mx zH0amGn>7AaZ`HNgO~i0~&wEwx&yYD8>p55lRTO1I$Byu5`aiZ?hZ<6gP?gFfx;*|L zFMGzGJK@mOpha%W^PKXZfyWspBR(xlEtX4+ROhy)wR+kv;m#G3fs^2Vy`i1CiyF(D zizj{&HPH#KTY~>2Z;c``iZeHl%>J~w)p3WMn5p*~=d!l&Ll4T)cZI9iazi_vo0K;< zcBFi_<}VcYtf^P~O+e>I9UfcIt=CiGT*cwqkVb~!kE@#YMs$AG_GPw}bLu!2Xx+qw zW*68vVw@%wAyP=XWL#*E@e|Q^#o{&J{c~Tn=GtyHalpclnNIH`gHVddPm#j}@&rKq zNqwD;rt3dPa{>ckjfAky_{OvgijLoZHpg1H^jy(~84d|2Qp^3#6=Z;^?xLDZ+)Tbx zre6#*AnLrcXT2AD7)^8rD>*+7jLBDSy5MceIRadqu%r`mg(vp1m)pXx5{neK_5b06 zY5hj_2@MC#AlH-A8Ve&zKTXpYs-2a+8`YFZb(a7Ur1yRU0F*0oHiLau1IhPDbSI;l z;@Tr#IBU*$Q}sd)stOka3Di4s6Ao)a-?W3@*ycRciWsJyH=&b;)q3Z7cO@Pp8RhzQ zp|+v=ikT*!bDsp!nu(2ol6IBzS(DDVcg0gAz~)9BN*jnV@J#Q%@{Z>DZvy|ABe>aX zYu(0kergTev~_m18rBlsUo5P-W;DH|u;#rwZ3JWiJ6TgMiPR}dv=R!UfR_JlnulR^ z{=6aSQCHO+JO&wYn4B-JoZF{HWd*`$#0{>a?6yA1Qdf!H0#LGtCI2`#0CIBdI74O!|GDTs^?$uTIA6hmm?A>^cqA3Tp zL@Ue%IWf2HYA&)YdB`N+H@d^51v$I3TKKvfpp&0{WxjCxS`xeHxzrmrtVvRI8tLzO zG8sBg^=qdBIRpvq7jtvP z$zf8dAZm@TvJ@BJrc6?Nv~VSSnAWB)dmMQiOA9y0J8~;|s%{}KY~79&O#*ch9`N=q z#l9U6-H+)TLGqCwMfuypXhx?gK=T&^_fpZhbikPlT=4*%ogBqEsC0BLv;VIR0k{`E zzpeFMC(x#L(FPKTKlNHY;m{DUWw&cJ;TG9+68pc~Zs@m_g&``>v@tyhoxGpIy#>T; zRL%(}-zv|L$>m;+JVNfqy{Q4;01Tg0UT(qD;R~p5z8`ak6-T?=OwT?XMlDBpsLj-Q zJ0;SBuYnp}Eek?;WLA`z_pU`P(Y3!l+96NQ{^#w^ndjurw&Ga-Is5{j@9zbE>jniu zD}j*pe-X~%{BAxxu)h)mcIlh{4;ny@%Sa$c-PRl9W&5kUQSg80u>4@LN*v^Pz639A zl<}Wni$cq6i{hd0g6u2m!P~$t;$KW*90>@-eY-oGVdC-jja3kf`z72Oup>t;sAYEOG1Ff5ko z7;`%LXDbIV|T-}3?5*7z4gh0t=EJqLNi(;n+_$d1ekr)%!G%5*N3J9V65{573~ zkL>@s16*LqzIZ{rZWD*$0N-!_AMhP6wS67fmp1WV(0|sMlX;t7Q$Ig%Cxw?s>9CKp zq7oY1bZB8fO?bNSnlSG_^!#(iQkxcbvP6F<+-=M~-hC8I7sr$l({@7rb10*Q^n zCQr_av{SRWz{H0!%acM8uSk%;h?fCpY<~E<6NVORkIWw7wMIk_pER~s$8~h1na9Ss zJ<=F3(rCDfre%<1&^=|I@>AQO z@PHt7703J*0y%PQ?8K>{C#dU|3C7H+E|k`j*99OAiS#|hF*T=DB{K3Xm zQ@I_(P~H~px_Z_#z5kZ{Knj>~SI*k1o&-H*?hkM54uhP}Jan>xBgf9QJc$ENztIjS zt(%Xu6}XUsoM?x9(7lKAE`IWv`R%ulzw5&HK}mv%Qj86W?@0p&QzIE8Ln5_OzZw)F zcc`H`&y-!La1Eq>V;OwIcF$8qT6Ir)+pKgjY_KtuG$dWPP3huKxatQF7~rGQ*$(ey50+`#H`ZJXA*C#31;bFIlR;oRHV%)>wN4;4OGAv+UeTGYyZ zL%+FTEYpsuNPoX>WE^`dvqj4|nO*9HdwT71jaJ_Bj`)f1sB^plQ-xuVjIW}Y=(IgV zxjS;yp5V@ov~QSL@`2YB-q5}ZOp8vexzJe6_CE93!j@R%x=wyJ&Jl|v5P}}Rn@};r zF(+}xo#RG)#wk^=&+)TH%!2;PupB{K5mur@LZ z|CzHpmpkd2UU*dMwPv0&{xg+0@-6b1T4k9uGKkeWvYdJ@{Z>mEy3O^1a*t10;qoI+ zk(MIj!MYik7H{;cAdZGsN|g8K?3N@dX~D;%gp!YlTZ8DR@qJ;xKEh7oeoNW;LUi0* zaM5?{MU;)QVYz;&F@zcKU!M8FI_@>BV^{I z75HkdJz&VxpTzm|o_(~xG7^DxPFK3QF`Z|`%H~d)zZgQOA#em{osUVOxKJxfG0qEv zH9vyn*A|$6d1})kvObtoV?k2a5^VIQH05HO`r_X3Xc|t5#zIdzUMC)}7wO&=7M5dv zw7-Kw1}Tm+DGZzZp9iSME^&)2e|CVFYC$T8YV}G&|Cn}g!#@OaqTl{Gp$6h}wx+5L zZev?h6tz~`A4*nax3-=Cj5%ug{VX{CQ%IHb(RoQ`9}uQ9Ok%T8?_n^fIQp3S{M;s} z*1Zd15{12f9s_==4>@o@E7MMXH3L~3PGk}f>%9_gl0d%bYoVU3p`ARB5pl3(4PxF9 zFpsT{km&d>XM@D6rujUQpSrJA-fH|XX%72kI4u1sZ(3RWlATFzH26hR#!U_aS0W8} zs?%EWdp=v#$&Thk!@eW zW)aQz>j%=#J!9VMKb1;BPTuz0(*78>+mWg3H}^akmNO}b4>pu97LI+CzaM$+iTzHz z$hWwJ)Z+uCfa;_5o>L&JdbPM~1)-UEyGoMIjd9#^eX5~y- z4R-^#!>GXtCn8O`^_Rjt&dnwD=A!r~W{1fQ&3rZKFERH$6zp{%@8!JikY_?mh0t#e zr$ySy?-9ugpCC(d(g?kX*lsXl)*sV$oe_sd)h2ty!U-=Pg+=$iq9TU;?GvxidZH$=GwR zt*Eu69-Hu);hD-|P!W_q2TH(l9@5&1a30X=QZ$@>3*9*3!g{=}FNPsOm|^NwMwnsi zB}TYZg>ihmObh$zJ<^t`u~U`&)s}clC%BQ*8Dy8m5!GNVFy(`1DgXPxuwF#A*^E>t zS(0u0<*EsZWlPcY*!BsJyrA^>YfOPEcfynsqJCaq(ewQ1eW`Ml=XBGW-JbVa5 z7UN|!X&drm@)b}d1z`AbEh+|mT2mGT=-NOW<*}Z0m1F>TGk*l0!S!9l>&P`o?)5#q zW#Z&7i{k28crfZtBD4Mhq#qYRl=Aj3rP2lOZB`eepE4ff0woI~-gV=*-%0QzhTh<} zxq72y1;ZRHSxrq`f|~z3;GE@ERe^mlRqE8j(+L1V+SK zj3VF~lBYA?`fHZ!2<3M;G=)rXIUdZU=l#m|o@W3Y(A8vlfrhi=@A%SggjsloiE-WepYvv0 z2iO}-VM=Mu<~{djIB25XMB8Em@?f%yzCOiQnCxj58kQlxhS((dX(SnDPmBvWvTCw; zr`u=?+>5kUJngwgJ?}aLK!K{TmOZ9+*>GV4*0)o#(bCBQc`-Pv=+jwbZa3>dTQ{cg;is5oL!zZJ-Wo-W z7mdyOf4;sArLZ>57Y(FyX&n{4z;b;wXC-!}4t zc++1VJ8{ci@2clAo^L0@IAEUiCsoe7JcnC$VF@f{q7y0dGFmc^U-PkT0a$8znh@u8 zhAppMo;4`UU9bgbbAPivT0-3>$y&m8HA}IvFUdWW!CUX~ywXdtRGLA^eigjB5oYT} znIm<6{JDi34~zC9^n9c4-8f-by{i-e$w--K(=6DWE)94aqcEipz>J_?Pm?U*^lfG(l`30vZMquQ>1k{1CV}_=o){ZrbY8`eO$5ZnY=2 zh6*l(!f11c?OfmjatGu4tvNBILUYo_g@3Ia_@}M$43j}Ll;G8*{m7|$>$d`b;6Lbh zMfiNhpeQv_Q}~PQk8|frW^?@UNy2RAJu>K)-{z6x3VC%AHkl5EF7ItKT3c4Vx9{=Y z^g^%KRcKx)=VYNC^7`+t|3y8;omKsZWIeMa&xu}S%R;`geW-I;m0h&4w*62!CV|>e z{;U;A%#V;cE3yKbV%hS3C0?_{PZ*4n<*Qpz9**;t`Kc)@u*+)~+TR(|UT%a^R>;?NGNDa=P=lgV zNRUw|e6uo`;=&KO>(RaF+E)&x!PERxs!hSUF3(GjNB@2+IO zB6HtAZ0>Q*Y5vmWFg=49gt+dFlJOF@06g$MD~LRG7QR zs&ICJF_)NheHNOAx<*WPuI|ZtQjwL_*)=5|?KVH$gSPX8l4#Bw&fN}K2KSerFMip( zrnfAfH&3#zY&w(LheS0uv;IwK4`>;1Zyc;CWO2b-h4ajv^u(~wdA2MwcGXj_@syy) zURMYpZX@WvKj@UZMA+*meptvnj1?>48$J)&*tBci@Ex_kw`gw#5?{zWcKB{&o@jXQ zT&S~6uv~p=lQt;xUGW7?-i5ZWY~o#D8Hgf#uz8c`5pV|yC}A+hYf}8^Gyj*uu&qf& z(#|*}UmD+}X1T?*if`4F>(bXbp+8l3M4R=bne~Q?_sRM?9Ib!wzRAvvwNeDxG>m1ZvY&z(tdDg^j6O>f=;of(TMn zGXTkRuA|eB^a$0S&ej(0r#lhLT(rCnG1=ebsn3!cn9ha4@}5?lLus$hSL1D%zxc38hH+bPAL*rx(B z2Q^&#C)U9SAD6~1lq*jt>NB!b-SauP!*T^dRXaIFldu}3q$iTJ7o>@x5sX9rU$@xT zVVSk-Yy`Hk#$-cvo1fS<6OA~bJ4NyyK(7lKAJJ>y^xE}FLfcO}5LNE8k_evC0%D6c z*>|z3^d>>U?dN(6x^4)4>wM-hulM{q=|j8vLmU03mEXGRLu<|qtf40gKs~TWAf!j2 zLi18v4yg8`#u>nfLfLF^^-$gll$w9!KERh#`ar@>#zGPsfHn+~ zT2^Q}V!c+p@{1P0{PF>VZ)C3AlkM=70!O%vLhZL$+4m0ES?V`djGok3%Jn!=p}-j8 zhY`t#3Gl--*K$srBCt%c3kJ&3Ei_+wCUR}l_G$nR&0oUZm>DhRP_VWN;&u}!0k>jJ z)@|Ly*vk%QP#nXTnlno zyU3pRHQ>$qRrp6%N5FrhFxvoCz>ZYF4((N8Zg}$>$PbQ$S-f$%x~FSI9k{!6&9rWS|8f9HPJ1}cm}B>92Q zJGW7*TvMDAls~0;@$Igb^G>~hT*gqShQRCIYWP@tF4wvHg>(@leHyZg`6<$OnZRlC zu)UY!(3|}@PSEfz#>O`KZSr>m#kcYp(oy#h)3kTU(|tvvyMB-F?=3a{r-n?7r|(2Hoe)pHm>1?Jm0-Ly92mW%V&+T)Ule~Dk0gm-=TeQDSZ9jS_7NuM*@TTYhB+v72@A-WM zGE!uW#gT>4`wHT39g57?oP2o6Y{QHn*_oR1Jy2@I0z;Rpl}N@;Wp8@L>5+d`D3RMp z*q0&2;Nq z2xO7RLcow%31^F=1?mVbXb z-bZ}+mfl@&7RA3>wPVoS_>uT^%)BysT%A7^>5&nF>eiX-dfhDp_j6v~q2gj7&Wkn6 z=hHD-%~aMaAo_1LYY#i@IsD#G7wM*fya=oW^{)oSn@yulh@67w$>~qvd07wrId=(Aph;K0&@Jp+Mb$TUfFf6% zWZE=?I|%VhoO_1-t9vAm?_VFTcVTU$4Q;Hx0Ve%qi)?M$>?9lVrvB9i2OXvr9qYwq}LBD$$hU#e<*`w zU?5LzW8TicHvs94V4Bj@I0=Oyv@EN`9p=(CZG~TOBZmXyA$kg7WS7~E0C}d==il7& zCGHEb3emZ9TB5DOo)70=@SOgvOqhKVZSq(}6QoK%WLegp<0Xt+VI5*hPQ0_Iw~XSk zjCP>##a#~4y%eCgSG>xwDF~7Xsi3g*wZBusn965ViofYDvhR9hE8hi>fIS@ueM!oJ zBxO)}Q$=~dP{+-Gf-DLZb9W|Z-;9Uzax!*}yA7{JT92y3zf@U=$UJ`!x1u0DSQs;8 zI)6iiTB&O>%vV)fSRhS18&rI;UG+YJr~XAeE`Vys!Il><%6F5s?JkL<sYks*4LrfYv{_FM-#3{b8GyD{`A5Z7_a`7_%rZ= z&tjr>6oKdP;qFMdzL*Q(b*#|R@X9ci1M4Nc4p+*bI-1uVN>kA463E)5!|jd5u_~8c z59OMUnB0Xfjtr8qBen;UG2l;V|Mxi=dY(U) zuAj5Nv~Xwz1OjJW7@6ayUSCeat6q3sv8;xm3zv`k^|G!~$lJWWow+5sn3A9daG-Pz z_TTL2knmmBZ<1N3NApOnF6}e{=CMIvcbw;tlr8E6r|+1jABzs-bLHCg#txrF!yb-# zZe0Ny8YhH?xg{UW@E$GjU=Q=0U1z%6t#DHpJ02SzZyOb5hP4sO(0OL| zMY1>X5paH`KmuDJkswIW1w?UzFWhUIh!lOE#{|SVfD!wUkLoPNvK#U3t<6Np@ zS9>&HimDGk|9JDSLxQ5(Pw(zyK=BW^gph7|VTclA#9XHJss3)xWK*^ji=(L=**#F+ z7Gl!(Oj3ZQME|@PR#q#hY+$)t9~S-@!oXW8v#yz)HjQ(dOf%GJv!DLHmTt%~O`spU zvD2{q>orl(BzZ%8B+zYHZk6>~<#X$XP-_gdMT@_6^hYNh(?0IGElr*%*H|vssExGHIGt&ovRhuiCoAN4i^M2j=mi{U&KIG*d(rb+y= zTMb%4rL*;=)o4(ESyBmuGR#%L=M9VGwyoM@NFjnA{TNGe31f^;RiH^Fa?rouLOmtP zpUouE>IFUf$Ie8ZMka?M-gl37mnG5KpQhPo^eJ-moQgXce_c^Kzb^X3Z%TH*P+pwI zv=*lzR+c=KlW>SpEsY5wHNaOoQ!MPAjQ3o%y!hYfy!6OsHGMW;d>N5THClo{(n2W=qQQtvVkgJ?r)2-c+)@}S-*Kl7-BtYN1F0_zCn1<(zVekW!}p=JV@AVlKMq@bQiF5SSEmr8EGuALr}A;a5}tEbp&V zFMj=BHYbDU|Hx;HxLDB=U0cn|h@2BWJf`s^_N`uB;hc^P2Y}RkaGqaI$6Ke~KwR60 zAf-XeXV`Z>x(Kg@yA+%H6cgL;5iNAOk-?EI?n1-c-kLk!g;!nUpX)zvsLzo&MQ^>O zz-ltX=|h9nm%a*JY1vLUmkxnt4eRPrTfbyDG!l%;w)Pefm~%w7d|i+V-fWWUx+B!k zX?TZLAZhu_q~$XU_A*-(ykd^dE35y0no$Y6vI|=v<>65x&N@Y!@i=~}o>MaLy%jv4 z1AIYnPpy((jSOCk4v>@Tv{woS-QdT4(j6wXEw`_JL+Vzls>xp+Yscv5w^t@;RbAYG z-O%49=}ZLp*&^a=;Xir9nhFh9Na$PTKUy6Og7oF=12s57wfXCyd_B;bl$z4l4j;x& zPekw&ji3v!pd&@6Eo`S1wV-)E>zc_%XbVr013?)^3~@auQiEu4TXJcK3p_hcFN`_( zOqWFLZ_r6ij_{6x`lgEiLX7`%IPoTZ3*~Y1;wQ?Fe1nLWoKo<~y{qirXuUj|QTx0W zsEdP_=s>o}Q0Mo&P9uA{^`W}}QcARNdL3O9<@fQ4_OM5-8sDt8zrLb9&jF2*;oqe& zza&_nr6W#OrAyJ8rU^I7q>W4AMU7B54%Np?9*beF8Ap?md{c*i|LWM^&3+#wXmfJJQ`D7Irj0lS#Ucn>a`NpH4YDD7wp*)7p8C%)wMVx zHN1S@JoNJIgZPBm1^JIm)lmW*bB(9%8M@$+yx+*WQT%(J({M#G{2ME`0R&Iqh%Tqo z9z~si6VR8)fJfYSjDiQ~#L!u;yWA|KviVB6BB@~OaLe4%Uy@c%-q)a5cR>DS~hd5uL%mg5L*69+%|%Z&JUg93xGl6P#{LLXM0fRibt+ut(j zW9&+}TaH~4v(g zZ7$5qRcK?KoDKP-?#M2z{JurmgM4n)LbA5@lq(vPC5?*z8kOQ()$G>tUA7+i*m%dK zXXBH9bvt@P=01)s4Q+M4kjYAdJpl&_W>alJh)5yDS*_U}hLJQ`Gn#iTgnU~b!FSi%Tr+&IL7%))Ao=ga}&=@~D zka^^GXqlEBJ+#-zu?Yi}V-C@a_KeM-7vlB!6O?{5e8QV#bl?+hBl7R#Qa zm^ROsR?dCRyf=7(4PS9fA2hcXKAA%wRqo-;qV`R#Y>0UuyZ$!D-V^q12zp!Y19ux% zLO$0(zy1s%O&AgJNB1W~3Dm zRrb}Wr(GISb-DV;|~!TZ2Io$bmEb$scQOP zpyG=9^wv)Wx53ZuF}I-R>%f{sbbU5|_rlwdw+>l~ITlW(*0KH$c|=>M+RxVdDt?$d zO+?m)KA!cg7tKrQy1GWmsl9%Vj;=u7iBnxUy;8zl-*#OKYu)rJFjaJ`%yAV(L2&mlE$AiXh&0Z2Mh;X5< z^)u#j|7+%E<5MhO<-$bkQ-k*Dc$ALfb#u#}HHLPP<|rJGk)tJg?(@bpP%XK6phb{Mz;8!h` zh+)VvtAA!dX3E&WCe|N$`fiHIwZ^ebhw(08&(8Yz^m}OA!}_>{ogsw>8)ate-^zjI zBx5~PxXya#=Q_vSK4Lrl54=o>z65c=AAdE9jVn2euzl6Pan&oEO3wsp=Dk)FJlhx- zo){Nq7!~RiTwU}k3>w7=n0j`Y8a|oGg`Rj27Ydq@ED70-BHB%44v^DK%Gxa>*sW?` zBi(_Cl1LZQC{6I7h2qdcX=tGw)YKEx3hE;p3YlRb)Vpzn$22Z|302Sqwg(4 zT%UNk0{u(_@eXRNcpegS8Us9yIhRW{JO3^GvoJ=uF1~zuf^~V?%g(y$mvvFo4B^~Q zQe#`&8w2&?dV#iWo&{B_FxpGlvmp6j)z=wTb&dd$DZop6>e4Kq<7|olX7kxA;4k6V zGfD3=Y2vey$KL%TjKp9ub?)yhLoF1h>mTgr;DSvz30HsLjyd0sq5SJZZ}>j@+&;xr z?0;VRi<#d7w~^HPklJGFZGsh0EHMW-10tgR6^9xrNzA@x&}MSvOgtz`@+G}c{3|jR zV+(63=x~&<-2Skx;MxCnf7`Jd4Yj6UvT0hF!91$@P%}D{UFUY-9l9_JJ8>soL^`X- zzcjG+iLyn!@yiB!iKbns01e&8YIjUtby$aL`EY2IG2-)5Yl5?}8u^4{tg5uXG6?4GVlBrA@tWj2Ui*>DMVQB)bWJ`s=vA}qX>DZyFDV(CpHy3|&31RrbaxW>ED;a$?YkZvQ2S#6J2f}wu|7iJ8)QTivM09eeY9HG zQ~B6Smrj-@;!Ul>@ERl(IUJ|PR1N}ia!gsXhlyDFS6Lx0+O#)n>w4;ZVa;4oJlu)R z+^V)6#6IM<-8sG*r$n=P;i12fto5Yu<`AuabW=@!F6G~E&O2j2K`yLuvf3xCDnN^zEGFsi##^`imuPxd?#X57EJ-;D(4T*qwZu=*bCvVp)8<=Rp3|c} zg@5&;IQsEsr{J7>SJE@L5mQ_u46kqhRHj^Rtyp5)>$Rb_d;TRy)qEot1H*$L-^daRnJH?~I4woh`G)TtwPN^ysX13Yx{l5@Otijvp7mrHo9 z1}9=He`~tUED1e+zodk|X)M#oU#dHV9ypOsx8hNV`xW)T1Kfzt4g#=@Yr$(>5so({ zO@S6dTT)(yf8JH+UJd*#cJNlcu`y>3{G0r9o9>~zGLU4g3-GqX%L!&t1Qe@}VIA;o zS$Vg60Q#12Ynbqk4AIuvJZ4yRr$F5y^PBF(pV@?4)fan4E24Fy5sK%QeN#+`R?PjC zyM;h0+E=@`E7=|J2zcn}@yA>&?h<%dXx3{o#H*0xd3mm=$u>mDefzP5gWCp?(86_= zeR!5FQlv2?>Y?Zc_%EUC?l_2Q8CV}fwjoG6*av@KQZ77ten(wq&U;Sk>s}O6r(AA3 zqB`eq5z=@&NP6k+7RnOIKk?>oQNKa?Z)LK5BL;h72YWD2);~5ma{IJlbbLk4CJREu zlHqGbK0eHg&B=Gq7l3N!6^94_(L35oL|Vak47sP zY@dw!fD^@Sf#lW{~x*l9Ri#5a8Op|mAPTX5j1r~~*{;3(JdKC)?@U%+lxggG73V@9=5nBV zATeh6Q$MQQlOtdnZuO6(uEk6@+1j^d2W<<-F_N{YEq83nv$`$|L-2cc%Bu&(R#mW| zP4Wgu<-US8o~F^{x+iFkKXzv^v!+r^mI}@C%hMEPY7e6Z6A?}>Bd;}b?U9U~0x;cT< zeB-p6GOg@466r;@BG(q@W6aKmIAZZWPNV#1n;n|)Taqa}@OyYLuXGa&4T(u)I7a=@ zE^C24&iTekl-6KJcNzg9B!#H{j3z~A7+`|(+y_W>!ikV}W1%_L{QicZA|XUc!!xi8 zm^n9`5gxc9s{iGzgF3F|ILQ1?43wxsj;An5zGE%Gdc~uIf07V=x-fa_a382b3_`}=z+9n>eh=8u*XoEu{St@UocB+mKh z7UnKh3TMcGk_>lK@f4N4m84pD^+bC0MD}D|gg3q!yes2~kCvq|wE?61p@E8ij)!ae zDqeNcMb08RH0jVJCWkqJG)CoYeZYl%&i75GtNRWh+aolpsHUVfjrm_bd- zqwiru^2DZ&Y0bG>8}*Wha@75y9kr%a>ehg$y+2`ZIwg8aPI}Ef)d3_qSDh+k1)Oyx zz7D@joaGh!v`lrohMn%vKWnCK)q>No{%zc6JSDr1NTj*`IwmFoZceW*$fbQthVij{ zH@R)7yK!P`8YtCncYE{w>7iC<5JQF!Ye`~Mf-7#e|2pj=k>TjnQUc)EAZ>B1^W;{{ zJm)vMG$_5b>S~rbl_D&ly7|s_FeM}q$@mQJtGKAhtnoGcSvopWfM=de9)bdEhNmsT ze#S2T!T5zAR~z5h2-_^ih~~NGOzIwo8pn+2mzczIuwAJ7AMyoCDypwrHgniteX{r^ z7yy0>PZ~fUC`k8WZV`c#*i>-EedxJ!U$!Qb6BaDkNAMv>Y)bcs{~oF)Wt)v@mI=GX z`SpvZM7MuKU-NhWeH~0t8OBKIQb$YWVp@N4joseH7WKPGoX`uSP2k$dd$u^5zJ^i* z)7R<4S?H@7{`KAW@d%PQ<ks*5tdu6VVunpqwC27qi?cV;8`We#r*YrB;G*~SZQg-B07OAyHp#NLld~YyW zpJ2hY=Ce9NvkBdc49~)Ewl)LRW_`yBpPE+SG_+txFr(LVpkt`wpzKg5Z`1Z%2VG^` z6BNYlw~1ls*8BW272vTn@H{aUVBmR3tk1K=Hsh?C?5eLyuP?giZE*N3qAHnlF($KB z%UH?ma@+MDuxP0$$b`;6(O;GMcE(l4zGu+m7zcTJzXzr^gEX|wi${MfTr%~#)S)vY z$o0}>>4x*(h&Lo(Y(N{Uf1cgxbM~)>yynp7YCYE-V)cspMG5WI{k(i*1%LgD(&PMX zNXxPh!HHO8N5%<351y}A9y{-wHYRr2P@V#%DMERD+1hX+MQ)&v2kyzr7b8ZS4aHt= zcDxBhS7$$pv^bBbnK!QS>XhBpeItY??T9x}{+4`7ev8*w(^%ijI&4-$vqqhZ2m9tK3h>*qZP9_t-<9!Z&T=?TU!D5;<>-g zmprPmNJUb z*N?EckM_wQz6C2Ap{F621RmG<6Q*G#^a<6$Fn@^Zvo!kRsXi`-`W=Dkfu$L@>UvJP z8u63^la!r;^pU4IVl4=?Z9ak_Zl4t;mU(T%Le$Um+u0xc$t7=#^qSZ(VWms?(-l7P zbfFm;!^lSpD%y6wqffFgSh9NxdBRpm?HE=l8NnZ$tYJ=qGpKOY5Y5G%vjC_VA4<9e8)i=xQb#sjwJ&g+W+1dN$AXz$I(2Y)AyfsL7i zU`&Po0hXc7-uz14X>@hGwA$YfpRDQLHO2i8SGC=y3HeS8NZG(Xdz%3C#lRwapB{ve z1i<}8O+f@tAO9|jHby<9AttOu ztQP-)30G=VsS*alOFMx-^tvzm7f zul~`V36n=gaNzWQj)31!Xt(8@=~{s83K*soB4?cY%hXU!GrO(iBpiDH=GJJhHHF3GY%!(Tsg3otO1NSM=aaWBZ5im^ZB#y z1Mi?I*)BhhYwEwd78UTS9V_>?%uF8i~ib{3Jgg}2R>tX7e3Lg${FXoyRg)rMdQ13`;VuZMB{K*82 zIWWS^q=%_vzW>$aSo_ra5e4cz&PbyWy#ywU^jA~*;e_nhplcKSF@Q|u&iR3%^|trw z?W<$l`RmQuJJdjcw&xfobNA0u)1F})ilKOo3y!N#N+nh4m+|38YmvXd`7<|0?DhQq zkf%NCg0lHrZ;~N>*?#7f*U7JG&mkk44e_;PJIy1SD%Gwp#4bsXAp0EKc6QBtE%?Dd z5Y3^N#ewxJD9*z=}u#J0=j{2)iE;$OwkNK(^p%(%UD znk=PyVpDhIBZ$7#kiR5bp=5T6=EkpI7Gxb3zUP<4M;iHu8fO#A_^T1BNyXs9+5~pw z;e;bpiwVx4+|7&DwfN=-kc8LE4fs&T33HK~rbGklK7f;huXKK2>Es@Q_itnt<8z^A zVCtvg^|uJPfzwKjYN582nhkXAeFAC-r{ zNbCrj<($M2ZN-aNvoG!gDSrUTy-vZ#! zD{8efTT$VKx7)-b z*;t!DQ+#O=I*<}r4qNqRj!_DMef?j09t=t?kz?udd)=P> zZZSu3$Y-|0(UjNX&R@^($lfld!K#Ixt-Irs9?6@vA|;`g`$ilOVxXPTet!_Z-4PqHkGoGTNU$dFk#uNhJet$ zFAiV7ZN$mfE_kBunD87&;W_K&ZiH?sS47tS;WE|yS75Axl%D6u7#*0J zX32T!!l+g4<~d?pT*~w6*?yg;h;S#w6aG(tUzUio|FwIbVrb~?vH026zYdV?mKkb18#OAGw`F7r85YQ!CD=_p>wvD(HsP+_mo#+1zJrF$*EE~P0K zt8z&r4h%hOtJZ$(I@5#NkS<#XvRgUvG0EXUhlPd)B-8%K9Ij zmTnEM{~DcK9xrtwXgJr@sZ}$t)H~ohYpZD7^0k?MWqk*N%hs&s-|cBzTBfo=X)!U! z)Za-`XK`xyZf&A;P5E^XsT)B*-xTi+c;|3(aa#FaKHBE1 zTsH|n+xr%kUcMEgBJTanQ|>~aDwaGY>N-%Sgoe(nvI5biPY|` zjV3WWYnHF*XNZOwTTSQe*p=TA`+|y@12J%PFL@kld2>zwGOy*xVIugVluWY)e>85t z(cTL0Q+!8#xTZ0GUO*3~-hH6=TFV1Er$Igun`i|~pUV$Z-oAY+x$e!DTHbr9KV?&% zZ*%UlJI_3{G#>1AinufNq{2!G3+eO-`d|B3o@7*o+oT=0W)^r6PtNl5)Yp*-J<@I8grejK9^pv)Kc$f1xo2LQ&iZi=?g^XRpLr%xscF*DFUfHx< zuJk=a-zD~p?H@Pm)tPb&s2eZ3wa8@M+?~GW>uB<3yzy4ExmJSZC>>%kex` zRa>8O4TaoITi2C5*P-~X5TC>QZ}97Rj|Z-W8GGUmpXs@5d_6Dw*_#GEmWXWUh?|}! zH+Kfl6=B)1b?>Ds_YAyg-4*7~xa0N??%%l(oChz9)CI*URX=dAI7$#b{~Z znzuZ*yM~n$>ed(U+ctAwl&V)h&)j_xkDnfu(`__Zd6#=H*9Whak2qFne0a#P|IWRA zOHzXa@85p1>BE7-J$&8F%V*AXlb7h>V4b(iS+$=H`}MPLQY3zI6Tc_ z-n%NDgP%^2UMV9j*)E z!;5KDpWSzg3Au@ieAu+;eV(O$lHbDEoq5;%RtDW>GB_=%@M5iF?m@#iC-c&4s|`cU zL|5%dI;1qmDOD*fkyc43xdP|}_>J70bp(uVSEetkHi`UJ z^_?RnTO-#o|6EE7&0iIM&TrExVCB_m14AS+({JG%ZZkp=^Ux&N+%*Y@QExZ}QvPxsJOq)`Z<< z$MutJ&Us2E%R-BIwG@Loj;dug8Lx2J@;K$EtP~&YiPm%h`7cTb3^M%DpJ}==I}kbArXJ zE1eW9Zl!*EA}PPd@BOzMe!WDoYnCi&8N<@F9=GS}9F)w{mF%O^pexJI?O<|}Jr&(; zaCFtK6$ftXXxx7sn6laK!MqRGp6pXvd0OQ2myfrTt5SP6n(kI=FkAFtx!NMRxlX58 zvY)8(*7ZnK&#$k|wCJtu?QJtpqSbbO7k)bNawhNATt+8pcRhi;8D4r;n`YGW44zMn z^?V<#)+=%SlWD}JGP~K=%*E7`_lZenU07y$>_+*zo%-C%MA%M#tk&kPTm5of&rY-U zh3x0o9xJcyzO`)8BDRxnwi}Bty>@YiU#IhY(GC4hKYJu4vli48+C(`5P@u_Clw6z*tyRMvlERkIdy zXkQ%nMa=(7fxqi1C&pbICAZ|NJ}#J5Mi?qZ|I*$Eo#bBPvRLL?mvJL!p<0kxW$?G# zJ7)H*pF6PO!|?na@{GmvE?qk~XU&X3VeL&8D#|{^ z-jL;-S=s!nBjWV;PX`r}C0Q@Frj}VS53-aP-lG$FN5@0+(Qxl)uaCS89?c&*ooZcd z9OgOORO^fQ{y44Pyyv^ksbJ>LxdkazuLk!gtT?^F*wa1l$NfC>RbAUReov(7$W?xjs7m6z8F{Eb3-5vjiU$tjpq`RR!Dh9SWuo?nW0MvN!p8 zdfnilNKb}{dZ5IEnZioDzWO?Z_dX0C5GbcniRK8@O$k)6Pfb5D^q?p^EPej|CCmDY z!~1U@>J0jLKdffxP+OV~$H%Iqa*OxtlK1;|CZ6fCP7dmlD`+j#85Zg-AwG*p?TMQo zC(vc%xX07VDJSr~bI+L;mSYFp`qG|7P-~y?*&w896qx^Rt^K?;#=8%eq#0ixs1L8N zZ}Zc;+@E1x)-;@}>TQA0MtUx%`C^?qIw^?A)zcI3)2VUq@nYs(+iUfQvwA<=4{@+-x!6=uKKJ?gTb)9Vm= zP6)KW7c0NACTEF<+IeT?Z32SZgaltJ3oR*i7M)Y?u|(^+xI=4UCSfgZ4;h_gk8NsI}mIeO;8j#^7KTd>;_hjO!ifA+0_Y) zk6(~WNXTkQkWY?_GrzdBLP<1k=iaydujtpwSFVdo4Uyg;kjt{<1?Q#s1*fwXxRnOU zh6^7)TAs!(uDsYHK<-ofjFc@ue~G0i3_fQ+pfJPiEJ26<=Q0-={oTV%zv#m9nd`T{&+1XB$dnG=WlmdC zYS^P|uFGSxs&eOj^SG??;}xY@rW^e+sbB*0S>3hXDZ)4Wf+Nh?zlB<9K8cTe|ESi^ z+`{O`{o`WY1rM&Cj1vz!&QUZh-yeNpSdeA6c&2w4Co|JeZcXF&?TeLcAK!7aRD5?c zE+LD>{ZzT9R#J7(+4&*KjYli}22TvC3K|5J7<9?x$A7Na*1pYC*17Qs)3ZmtRF7u5 zoZVq1P;W_3rSNfWr*wBh;tv)p4&(ckkMxXb47mTle3-K9Cc;Wy1Hwf5(a zCMR{_aNaO;v3F|!*?plexJ!7x1fGrmSsNN6R&uQQi^*fA-D{K^6Fv4U;67r*eXe0& zL#x{5W7;|iGHbee7ta~2`N(O{>tanS=D&I&y*@dXWDpg=-N=wt6`a?fdf9N#E2W#0_D8|GgCe3^p4LX+AyZs z#C8c3&iA?3GT{GEhGnDb*JZb(tbZnmv^2@Ls$?WTI#9X#*UxH*b zO(v#y^5yk-PwRQ@>Zh$&x#prK+RSz2_WMk+P&?83c&~(;BI?Ztt*&&j6&RU3eerUB z@0nhGzK|eCUBb_MHOUw3?Abe8;u3ka&njhpIC*15;{sPVuh)r-GgG!*O!c%b+;;J` zOue+Fk7MqG*7}CZ!#Q7mF*`5yaaB?+kuiT2{M;o=?TCGSeFb}F*V4gF9x$;3&ZU}xPgZ?jW$tTRDzqhByW%E)wGi8- zfmf0TFQ(+)c>MDvzlvLTm0+!Aw)2B)tY2cDJ=}PA{U^nU7G(vN?0SCRPLAa^a!s1e+ z-}t3F_gH3f=IqJ~tE3mc_{IE!zck0kAk#*vS@N)%P|hNC+DiLXVny%!GM9CRzZci_ zNZn;LyC#2;p`YRv@jJf^o}?=5y#5$XV8S>}&M( zB|;+>%E;^4*@XGvMLXPa@`xKBhJa^6GL|)E_tVd(@t2 zkk>kxyGf;w<9VdGUDvVBXHow5haTH|`9D$6^j?-Eyy4}nch@34J**iwRJ@j3x9(kZ zm)4c4pme%}VT*)LL=BN?inAU30O;fa|k+4pU2o%VnGUJ^M3~OWhOs zL`t0b-F`G-y@6f!T*cW#zFoFW@7|g|SheK&2jjjEncQI)HD%3Wup9Oc!ia{5jfxaO_zQY3TS2T^j#?wkCdn;SjT$6s?*BVkgx4EmS zP{zenJA9*1!4QA$CZF%I%s-0rLX+0oInC&da?w6jS;HY_Lom@ZZs69bVIuP7(G4{= z95vZyreM^&R_x(0aUi*Lk%s-CmVHFCgAUQ*^MHf#oD!yYccK$_zH;K0t981qahIp3 zL&Q__uIUBCh3p+C#WvfNNd_537A@L5xIZpMp8jWB;pY1H%Ytr&T}YExFHQ@o+Mj7M zpv~$y>ucmag$o{W@2;J)uhaS(_4Om`ok*{AC#{D}wQNfk21Q=^&{;IJGRY>A{-o53 z_m?}I6XUfnC|h96A;YKRHcD*fm0q?zoF_|)R^#bq`Cc_#b@jz_S?^GQ#5GblJItm`koi3Y2w%QM+mA#P&^2OVzo(WcC&o0;QMMZ&DlRUG^X|tWz%-oR)*w!vya%4c)qCc8D}khNJyBw z#VOf>irdED>A!hh_15fR%Su|YAu%yLRweji&}Jr?)lBa`baIw`jOVD8QGHnXMdZT^ z!N*t3pEzso`RV_3-^1Xr(DL5T3X1aLJD(DDJgoI4YB!c>4OmuNc1a&L+SuSwIoILG zhOVxo8#Uhhy_ze=SS2-gNQ#H=g)B#9T#=1e-*FnXp;Y-+myF))*BZJR5@ucvk_%6u zJ8qpq*l72tXy8y=vf-EM`d z3$E##eb`*uaHzDN!Cw4$*rJ{$@v)ely?fv7d=W{1>w(GX_)jyD(YcH&tp~-N= zHu3aVFFhNYZO!M>*Ep{5GO=9vuv6b-Zs|9^@a#(>In^8v)#VvtI;}G9QWty-#gw@# z>qDgD??*cCUZhYsbMJ!<@%Opo@2@mXUMZ}%zx4R}ffc+9ThEs8AGo69T()ctvvd=a zbUl-FEt7PO>80iqb1L8QR=)E-5qZ;jk9y^ahKIuOLd>-%;Q-mSOKFtX48$!q?y z!j#iNIpM6s`?wiFz21>#^>dRVSN)RiWbcW6J`i7|mk^ZJDs^RR+Q}EK=Gy}1*2h@f z9=1J}tWcO0`61{`6Y)b$>P`{ob#J2H$VJ*ihE>{-mMn znzb}`ce%nZ=do& z<(-jS%Q5fekq)1XnYp2_xFfZ#5@PAHz#78YX&(nrx^Le0MEQ^pjw*Zk*(;TB?9nCI8eFHP@Sx{dYDW zjW<5?G4f8n#Z~cvXKsBOdilN;1p!5zHe1#GHOvh<;?AvT5f@!L`0(M4n(`anJhx_^ zf)i(%@cu!y@2Aq-AGaJ_zkbMZ=UMHKB|Wcp@ul(J5V0G=f|jPArcdzJW`4OdB&dE% zzsyOt;gdPtNBfOZxrckLio?DeIqn}4jJlMT9rn}Z=l%}+m&c>-rR6jACcGTbqH~#@ zLhq+_Qf6_`tf%u!9lj0j_hMP~nePxY)0fq^>Th<}zvR6|C;G+i7R&n-k>P#Y&&|2@ z^=6Ouxh1#iZgvPbEFEgs!op<=R?YCW4X|fX{&Avp)t%1!>DtE-2c>6xyn_|1G z+oxflWu$WN!yoEe1kIN9#dE9OZnx|&+g~k}lr@kV+1*mq9Y{#Xh_GUsb2>;rqIdBi z7W&y#g5~@d%!zuV&gJl45uImdZNqy-QkHuE$oJh<&C~HhTp`{e>dkSX!_qy=-pp?` z_}F^&nqccv$?vm#EmJtY#fk5;PF=`u=)N7xm0$Xtu!w&qxBuN@>LYoV*_rO-Tm3NH zx_v>XH}kstOWs|%_RcW;iui1O?~_~hIG?%+`joA%5Lnbr$-?-<^)-HG@;H@itj>g+W+U-?GpyVR|JYk77 z{=3ASR;%YF#C&j~57qbY(~9?BpnqPHUM5%BM(emAQ%vRH633nM=e$c@wzJny-8L<8 zKY?3?z;$0veRp|M$Y*qxmq~CizV9Pc+>;xZHhq7@ z**QBar7l|FRL71VTcQF2dta_EOI9j$VC$C}XxJEaGq7ueaeSGQ=gGzE-zt4bt^O*% z!1s)#Q_xUqcbfmk*$pc%g?kF9YE}tVX%3wjy1j*!m5<{r?IJHB-HSXk{4%Z@sM0F1 z%gZyfi_zUs*+;9-c$PNj4CA{is}_HKC&%X{MZ1>T!cF9}fD`{)PFd=JLcdyj%T$Lu z1^y=_l(lZ3C@5^K{9#W_coNoBy+*mi)j8d_V^&rI>wtZ_u!Qu&8nXcR^}&gmw;ydX zUb0d#3tRf`!ohy7)Eg%jt6dben304v-;~z9^5LXrRqL%T)fsNzWor+7W4X1_p0n)L zF%AiPsm$Z|MR*Gc=YwR7Kikdf6&e)g^Qpb6u(pOJSJ;Z6cV);bWkEr+@9c~hvkPh% zWmML+CADRjJXbqPS2sYHOLK6@F~Y6gX{CL4i}(9e>*t3$e@iV%s&V|toM_2YmwLym zvnOYZSH1PZ?0mg#3$s7So*EFS6X)yru=cZX&Ot7(sAUR~x9Jj(M#fxNeR|U~`4u`s zt6qomcDy&uZTe}Rv#V9sLM_Vd4DYkq)+I(}G@Z?|pM+&$fna=UlPl;&l}#8V<(ATpMDsw&da8 z(dRY9)Og+|UHG$QN4Bb{nZ87PcWdlGTCX*4qyKf*y|YTzb9_7a`P4jxQ_EeQqUTt@ zIa12jQk$QoI|;RJF158olgqx>*s494$k1j}#YOiMVuhpM2oJz8_{zk3TWnz51a2 z$}O$;$jelVsGkO93Va{hIeZmgv4-Yq{e_;g>`S2443KEu2;}C73j*hw0+Z+FxIu&SW#7 zR;#jhndQoa45wE5RtcIfT%6Q}FReJEw&|wq(MieD?rxtMxot*@jPr`L*;yyPw+6Oe z2yIC&t=6mQmo8ZxQJs{%;Z+ffOQi83p7lcNZ@X&`tWhwJ^WUKI!MUtrPih{K;OtA3 zSgXCQa&>dfz}v2x0injdL-nrvH&j@dyd6%k{YX@isvwHCJ@JTFui(iibYFd#_d--X zhA3RtWSsm!>P>jDfZsB8i=*iW_{HJANfUkG%+BcisMdJJ`xi^PLnk87)?I+p~Caqr{WbQ6( z+PMDF)$V}mtPM|kpD9yawu`H}&2c}R+WCgv0hfw?#uJB;iA0)arRMb?uF>D}bXRHe zhKhVk<$_`r^`LeBDdp@PU)e4vtrbX)5o=TS(pilq2_qR%YQjJFn{F7$ygl>tv7NCR zVIJkjG>1-piS8&DFU?#Q#Nl~(|4-p2U9lSOjCpE2oE5vQEP2a5m>ld+TAA%6Y<;79 zUiaY@GojP>4L3I}@7t!dN0rAsA@F?J;J#D&K`R%udCoX>7Y#*TjoSS0g+4*;Mme#A zJGTPd1H(;q2ZmQzFK}Tg(n5qCqFW=^8NC(A=Sp8K0wQG$mgTDWG1akmp5(_Fs=w$Tvqo%YOCbte4*PZkK+- zmE)c2ZlyW&P9O3OXNiO_HxR#acyE;4ort$_vE3J(d~XU8;?w~9dZA*${mQY$-x5n{ z)4ksvR~ncV7CY#Eb8+j_hcx1Ez!N1O%V~u_>tE-OGJ_co58rei5jZh#W5&h|%>zqR z*W7O|P5BkOe_@*WoolNi-pif?)&3l&b+yMe4!UUl67=jywF`e!zvZD_vPgA>K>gvM z+_w?Nbj@uw{{6&k=CP7VVm=XV7@gqiq-Nz2-P1y^XR4Rl249)k@`ve>hsFv{oD;hvPtQI zUInq|iutOY*#nsl{$$kJL4QI;;nU6FWBcScYP@hfIZ%9})h^Cwq4SE0FCBcf`FEvK z7pJ!}=WGmHUXfO1|ElIbhmq5k+AC2C5}Yr^*9F>KxSlSV_d}q;lK0D!4bR% zUiqDsFQ+eS8KbSY?8b{tE*~0(uhtDUabIJRl=|4PrAVMZkT#pkt0{UG>svqLt~r@j zF;|WK1)tAi-d;qm&ys95f+P2^XwQtetG*ki-kj1PPELf zZK6M(!j`SRM2=PHLapt$t}nK+Kj_-&FR+2QnGP9t+b#ViisZjGu@P=}XK)IaX7y}* zemsQp;@V+&P36&LJc_i1=S($(c<4e(AMu-~MqNK%eY1|eoFn~3W?}6y*G`rKu2tqo zugKGH32>1$=hAr=Jf~o>!5QlU$%3$e&hAH_g=rtp)d~N?eUPcYvQ)jm`JQ`Wvd8B{ zs|fR@S-eTb<%*s>t?%`+^e-KMUK;OvW%auBc-Huh(^$p$^f7Z06 zZ}7Q1Y#|c3>_lYruv^V~b%PXI8zZ*7FZ*sa9k%torqatzml6@PBG{4lXT&yXrx(%# zS5jDg+`XD~qTRLx9Hq*d7kSE~$MD_mYJC{4Q+fW1+uW|M_WsF#PE`7=ExpOYkPVz~ z6(i{zON1*jmRB2|iwFw6qVG`5@M|+s;3^w2i;+Itd}{@7?WUhP`xrboaMA=F^Ujm} z@;L<4V>&2v?8SF3&-bz}+tS+)NxMXA8oJpeNh@86V=d;pV()dB(8ZT4Qbh2s$Mj6i zWLj&72JbY~|1zu+Pv{lwO}`zJEwT9P^M1!iiq#j_y;1KDYp0cQd61S-B zRhr04oz22(Y*FuS$BA$7;{**d>pH7-E;pj{DuicSL6CA|7 zb*qK8U+P`U>-(OmyJr>gdd*_9=QA=K%IjAzJs*5(qh9#^vXgI5IA1Y$-J`SqN8Spy zIoCYI&ef^WH`6uHn7m!FB!ce{^=xVFZH$?x!;h=xnpDcBaz{EJc3RUb%fd5D^7E4L z%f{lH?72n7@6^!jO$gNtTUi&=xKJi+<;4=tcH?Cx51uXMi}R>k);z=7zx3*+;O@mL z#%s65&FP2~yUANL&nqa7y?BSVQqm9q9Mz#!-cJ^su03cRp{DT8Xm9oc-i;+Z4wS0bXJUkPNob$=^`(uB9U=XT-|P-!K$HVf*L{YIgktH0q4G)?nnkH57s=bL zy%Wk3Quu_l*T~3w`fP174|#iZS-6rAdz_2o ztdgg#^j+&r9-Sims%CycV2gY8&GD($@~Y6n88w^(=Ij+$yZM~#m5LK~xOEXiE;r8J z6Op8vq*NpDCDH12wRULN@u79UqG&yK7@vP@A5iVPtfB1P+m*$>_h9jq>gKIbS|BI% zM3lci{GKuKc+ITVfhES;?`WHwSXtcLW`#x_&v}@3yxb70XGqnw3jMsMK(|0PLn=Ta zK<;y_hg*6X@0G{VLrkR_eqQhQKGUj8OBd)bI9wT z)fE*lizNli)L0jTu(@6AUG9Z+7inDVy1r#rcG8vAbw)4I3hgM&N zMd@l&p&C_U_td{TK*EZ;fNygcchH8>Jvbv$ za5Cc4cY)^p{%Za+3%1a6F3#ePJZ4TaWFG2k6ZGg?SsB|V4p^q1iJgxuK3=>auJ;F{ zxyY7{8m5)<=1jAmu0Go=c3Ezt>{0>Wy{`|i%$Y4%)&raE{Q+~&>_4;UmlNMc6Jeud z9Ue~s4O8_8J__;1_*yrlHt#W7>v~`HVO+8s`tl5UL)DbN{d}glFqv-unH?F*{`+EJ ziG(GPFN=BS*oz!t9^m&~#l zi|M$|?3A0Qv0w?06P;g<-JKifT%+BaxIVG8-n$vBzOX-ei{tIjiCO)GmRT(yw9X{P zGJHR_GOtrGN&RhTkO^JNmLBVw5+7KkW8c*OjM_H8-Zj6N)tXN*K0_iv$Lvd^QB2^L z?1nd=1hS+K6o$Of(c@Y2Y<{hYnp81g$T_cE#cx-J#IvmLU~gEm7}myHb$7=3>}2b@ z$Q}9&&R14yR=F93Zcawir`ON(U77i1H@#kCJB=~De6KAy}5x z(RbP0Ym;;+jo>pyriFK|zvUui%ZVuDe69OXd#vd3eOcG&_3=R&Qq8h5+2Tzv5>wA> z%rf2atkkI|j{e8&AN*2Ijujkzryj@;KYkLjv?j`Ii<6qEbwuguPvM#>4hj*&!9MA| zt9<28ITAWDI4U;1&^Bo_RkU|r%oXV(SKRf=N`s}?qMnO@bkM;Z}6V(kJzfd zExExUMLJ7NcEwXQ)t8CNLNPx=I4W%C*nSQ_tF}>g<5Radwz%(ejtvH|XB?$}uqnQ0 zR!P{G3g6fDG2GUNMCx4MKV5ULs_j#vgH5d4ZiVv=qMN=r9uV6XXq74I>iPN^oA0It zVeda?H&VyTt=4TS5kGvcpK6t=cr-^z{!d1oRHNCex}DPJovhZ6m0Bv89qVe~@GzFS zaH)!W{Ud?*HtE-EKQ{U`_gyx+R?nyMxZb?b;WJ}5Um;VY_9nW<11jen(qomS8b1c# ztA-y%(8S3kaCW`jULBhjpH5T|+E61bY4fv|Ep0f+hB;|lZqKbFJbWL0JTHcx>)bK; zFsS^I=5EmsK33~&i;6BBW)s?+7hZqYQNOK!JKN!8h7W9q^)JuUbT7CiVyAIDGww=b z?2f~S%{C{uR;oCP#dOA{DL;;{o>3{uRIoLE&T6&@-j2=NO5dlh=Xrksrj3sA(^u`!4`^x)7E_V1{%pR!pEJ^AWHQ^gHo<0%0?x`!EyC95cXdFn&xKQhP}EV3t7B z#VnvcJz+K;^I~UXzuwcVZG)5n=qNo^LbDdbXxTCBF#+MAhe(Yvf+|_;J^{6+!-zvN zkS^lKFnvf-prpWsK3WJZ&{qjtQI`C5LQa%Loq-PWQ}L6!1$kL&QVT@aq0s@$K!Cg} ztt;rnFapLz`xH;HwnvD7&1ge*qXi=%21bZT8xn}HqJa8>XsCVxM%5+=sR%~jwggfd z+KFGy39cwlz>4TEL%IMXQg~3eMgnR>!1`&7aLOTO~A0*gGAzU_&g$NX@w2YAoHML1sO^i)yXnp zm<;w2cP|X9AiLL6fY3(Rinkzj1;K#s;wC2@P-W1FJ7U-)Ja46MD1u>6a5sVx#ZABm z4IA-(5U^h~F8~2G)=Gn%10kTIre~y}gCZVuur_*r$Uz72va72ro?>}^n5bwTmX}Aw zVq#)23LkKe@S-L}KfEzeG0exuXM~SP%){jv8j4~_q^KXHhypT+d4^;7NP0y@MNuvM zprZ=-U9nxec43W;jg$B&_>c^Q1rTEC>FK}aLv@%TU`E0LE2SS3`zz{4#QXp=`a}K2 zU^+^}k!sR(r22#Dh^7Qa1AYopoFGe@)Kn8DHFDf?h_bl%qQm$}%?}hbaIP@Cv-wM? z_#sb?@#5u0{6*BL9W};Du5ZJqH#If~FDGNHbgr~W0RLYuEb|cy1SAVdn}`9QFvxiT z13!*{l$XV|lkz%KEG(*^bq}c;qe80)>IfdFM#`u^NGGM9gn?$HOj@pJN6MuB=zwH| ziXsomumTzyEi?~E0ojSdfoz0#52}!TU|{e-jj`i14HZz{bqXn*W2DR(BZYm86xK0P zSYbXh)BXg@6ENzwI!IYDhBh?oW}t}EY1*9dlonrVsW8Siw8V8!2-Mh2yd4sb`bEHK z+rC4}PNq`>9i7Xr!*VJHSrPpOLL zsL~QJHXIFxy<(!Q6;xOaXrI+)3|c0xL};Z{GBeRL)#W#?v*tJKvF6vcwdJp~(6`p* zH?*`i*R|!h`o@1m*VM?`&O+bD+U|(8iKzjc>FyDbMb;yc5J>A7Dv?GF^_B;+l-|;i zd+P?hT?<^4-rj)T{+)h)rbYe42ow8>v{IA%c^~qWev;5UA{+$D-|45V!3kRfi&@Gh z$G`F09{)zpSR0Tsh9|9c$vFdaWC}D5NedvFD`oMjVUtJ!5B^U@&XeHx{}w)) z*l4&Wx@XDXhR@GhG-on=B%a~#!>1kxzkD40?I4n3eY6w9U{R&OKaIu`wq~&IFkGkd z2)c~jpsG$a#?q+Rp$*#VFkrMa$Vp{r(5l1whr0-VEQzojTJ6KP%lxozTjLvP1K2p* z!uHt~w$_%AUjsFkP$FP0G|Rx1D7zT61%)p)Q-UkXAR1b8O92&Ha|hx0><7AHYS;kpo$fRqhVSxAvwv>8O_d9<*QF5V3BGTH_iSz7B_z+^)8 zXd|nzK||Hr(#TrZoPVo{nSqVQE)zX#OB+i=TYeQoLlZp%ja|BCX1dlI`z+1*t*i}f z3@mJQZA~mK)>v7hg%rsdm1|^;$_Rr9X040zb0Ln3RJF7>uvWD+v4B}_V<`)DvY8el zkYFh9wf;2I&#HVXlrQRQl|p&SwAlu17^v(3ygv9U}*L%M_TU+Km~4z zWitq{6-T^iTTBT_&@dOkA=@Gj2Al(-Ww9(i+%Lk4q zps_&hXX0E)a~FP!8kLCgd#>~u&v9YmX^XARNczJoTMT-_;D^{$)_V3@1UqH*t z%VUy~l9;O#5mQwq!lgnfM*NwFWtFyKrS#m)Zu0V+)024bRv|| zT?4q-hFXZ|&k!QqaDYalaH)=~hl40!5CshAMuaF}z##z!QNSPy7(@YsC}6;00tQjQ zAPN{n0Ry_A$DsoTQNSRIZfF1oQNSQd1RCHF1stLX2RJ04!ciE)(Gaj00v1ESf_E9P z7=m&`P-F-~4FL;o2B6A@6iDHSh7mC2fxbMz zmIpZUKp#G|2nX084{+om9MCa*xS>%VV95h4c>p306yh!bSn{A@9x&wr0o`DNe-J?q zj7c6~$wT(Qu^?|iqX0C(Km-g#z(52HM8H4<47fW1hCIMP1PnyLkOvq*3`F1u3`D>{ z1PnyL0HPrR9WW390}(I~0RR#7=YcRHG(#T>{|}5Y#`$HyPC^g*1dnDh`#LK%Rsg*Eh;d(oe1$OP-hqIe14=`rir^ zd*K4Hfl;8yM!0k`bg~wbLK5G9OYxsJCZWLK1H!mjNP|KypaiI-e!Mg3GHB=a|6tU3}GI*vlX@sP@7wG@1K zakA9^0zRaJ5+(}7k&ya}+z+aeelnENWSm7vehLy1BViaZAcicC0$?1E z4`IbAqiRW<s>6huV<3V7=Yhd;L;D6ayD2*7yBxNsyE z>L@j2)hHp=kW$?JMu8w)+~Wg<<98{tTPYe=6cIQS$O)-{ig?|W_$bVjsev~q zt*Mme$ovpM`mOOk_y_(+#HwJ3!E#`|F{mg&$tp&{lX%FSV+-W7G^qhVLDr_Urettq z$C zI*hLwS40I8VbYPzhbLq6WNBp5c-goiCy@SjaU5WzW()+9)-eRUl0+qUgrtv5`rFF? zsKFTFC`&5hM{>>Ysbq9yzCY6TTc$}vJHk0e{0J1BMy?nkPHjFi*NC{$%w%^Ots9?1 zoTFiU9hhuX1?2Doi86YeDu;_1({@BGMbp3lI-ie_{~|MH_l_D*;vAu%3|<&Lj9P7^ zlEi|f;A~^W;m`mVC6KnUV;H8+;>}10d{#{qJ8D7-2AqS$Mj;_EqZC{bsW?XG7)4{V zV>qVF;=Gi_9}0bw1XC=5D)7pY%m}Oz3SN)+D49{6V?jZlv|k&T%s1Ks@w%czf#uynG zZZTxF-$n|)iCv>;!&8JD=EoSxKD5sAa|FuZ?lJ-9qTj1+!~fT_|y z;UTxfS^ot;RKo&+dmYL5esjcEk*Vl1)Q z_CuiXGAYF+O)X?p$(Y>KtYfL@8gxt;TQ!LACZzi!=mySY;bht< z^Y3za)2Spt1$n)k&~&o0ag-76TX1s;AWn5hbCSN19#Arrlp=ak3sMDAhStrofzsqR zDcnOM-_aadW+re>p=$&VB|}L^n@-V+R0-J7dI?EN)o+R5VI0*pHI^7b)ok z0@j<{Uuch{KWA4i=L78qfI2VB*=nBDko(oU>IKh_C6i8f@BYNyN z1=9#=Lgil>=>3E*WC14sL zKT#vMo6JL@OoBdJfR@I@Ubj7{*Pa%M0tB~v`4$CtEEzvk=lKo)*62W>DBB?w7 z;E{rl1)&>RU|?}Z=V};S79v;?2Z->I{12J$KWIOEeIeP8vH+6oCqc3wc_!oF(E5k$ z_n-1VSouin3$owH0toO(=WDPZI(H-c;U_g@H5Om6p077)(Eq`a#YLm#8HO0nA2>R) zQqtgJ;D1^K{QL_D(VZ~z`2*$tGw?{80yL^%zfqlV=0FgM=0_!b=9!U6lCv&Sgs zKW;zD{2)+V4{3xmEjoX|^Z+EtQV8RS|NZCCk+GohouCu}L|%xSjsy^)M*F`BoJht$ z9FV!tIdx1xBs`FJKFEj=5NQG@sp6kKPHhqjCVX_s0LZj|7S7+6J~jToE#}|SV8lZI zn?O-|hA`oC0uB&xha-C+h2?)V1xV;0?s4QJqKw$|e-s=j$1#yW;FiQm|I?tR^-o)1 z+5*!Sn6|*Q1*R?V|F{K6@6to><3sOT?1#7Pp*#w-5LZJ1y^nE_dOVeCig)^q6GkOhAC{!je%jUVzq1gzm0@>%%V8U7y2I!Mv`D1SoafQa4|irz#! z2ocGq1>v(HWrlPfr05-@=xvg`kTOH61}VZ^2g>H7dWiBSX8JZ(24?7e>Nciz*5>dQ zbySCNDeCL;?>%W_YhZ4}FLwm9Mwo5jC7&n-QR7l5j?4hcOhBpdTm~E?s>k1&J4HGl zz$0GNhkYjI1~&Z42KM}WEY0EVrRbfaQ@)NAO=~MFTM>*Injxzp)TsAz7RT!>Z24^s z^x%!~HWntfwj)3h3wn9#R(OTHk;!oj6AL37b9m+HI0j@fWEJvD<*i35;aJ{_hlFl~Wp z3rt&J+5*!Sn6|*Q1*R=9ZGmYEOj}^u0@D`wzuE%mIWKyyi=I)V=k(~&GkW5Tp3$RA zfAm`r^voAM-$u{b(Gz6!KmO1&bo5LcJ#t3h_C!yo(LDt8OdCC)N6+v%A#y?FhR6ev z7b3dXfF4yZfXEMVA;d)x7eibEaVf-Q5CtGEhqwabN{Fi<3PM~BaScQvh-)DVLqs3m zgpb|9^JLQJ(b043Vff__{C@;^qKv_3elct##7z*TAfo5lP7q}wq9@n#5EUS9hPVad zR*2gmZilD{aR)>th&v(ff{31Ut3XtRxEtagh3GP*b^*qMZ;K0s&jhqZ=s$>M8ph16+Vxw z2YT(uAGRh@|NO{~QRDilp$WqAr!5D}NSq3|X7o{Q)O&syKO4wf|EU=8ZR&BqNB@(C zXf7c?M}ZDJ2Yr0n96SNpUJ-B@;vbnt6w2qlNxV}XmqY)la5;b8e;MExL{1Aq6?EC- zJw`bbvK1zN6r035)e-5ZjQ^k7UmOIX-`b!+2eWSc2e|*9JtROsTDK?|aG`&22u2R` zZweIMf7<_lliCq6{~i4Vtbqo7jF$@gL4(#?S6IA1!@`at%F_W2t^bsOd<_B>0qdY? zgNzWCLqO++wOH|(53+xtM{6a9B@ob>x)1!y9DEFYT3s1Zdq~l`gFM^<>NBHeW=NxAh4XJZn)?hyDhAL&MGZO_WU=|} zFmwnD1FA!`URahFU~QyNx?`O*=sb<^j0vtNPr!=kFGIQjBT{&1p<5#XwIN{rH0ay} zXC`I_8^h?97X}Pw892xkaSSS^l)*mY?uB6$WcOMM5ZVan6pfL)f?z;*aU`SzstX!%M+|#}=kZ_EVNY;3LPLSN z!v_r;@qQ4n7Mf*1qQ+WjkaM8HLz^9Pa78Ji5in-jQh-OmsM`u4<;NJ>P!DhvU@Zbh z(`Ja*)8dW+ANFoT12QpCV>9t~Xjg^M5HQ*{7Lw z#77%u8Pe$ubQjR-iqXn}I*cyE0gf~9lZ^swsWc`n+-Q2E39S$5UYO>#`02|6wlX%r zZ3GkE8n0giC%MhA@lu4vU@I&HDv<8O<)J0Q6k1t=A85d~%mgz7X(F)Uvxmh3ZHp+q zJxAq2h0RqXpdM@oD#dD4sEZKYpa-ySV5bpum@;5thU-)wL6@-`RMn}*U`KXngY3wF z(bAwvD?NvkcXi3e^o$$&_tk2BIJrQAR<>s?t@H&)?Kt${CDg{NvrSl z@qdd2(6zxC^7#I5!8DEIKWBmI-~Uhl{vW3Q|HZ%mAOHIm6*$>W|9%CH=%0oE15?bL ArT_o{ literal 0 HcmV?d00001 diff --git a/test-data/slideshow/54332b.ppt b/test-data/slideshow/54332b.ppt new file mode 100644 index 0000000000000000000000000000000000000000..41f20fa5503894f8a39f707bb629f8ae9806c239 GIT binary patch literal 50176 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 Date: Sun, 28 Jun 2015 17:53:24 +0000 Subject: [PATCH 207/301] Refactor the small block reader creation, so that POIFSHeaderDumper can dump the sbat structure too git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1688030 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/poifs/dev/POIFSHeaderDumper.java | 40 ++++++++-- .../poifs/storage/SmallBlockTableReader.java | 74 ++++++++++++++---- test-data/openxml4j/sample.xlsx | Bin 12050 -> 10059 bytes 3 files changed, 93 insertions(+), 21 deletions(-) diff --git a/src/java/org/apache/poi/poifs/dev/POIFSHeaderDumper.java b/src/java/org/apache/poi/poifs/dev/POIFSHeaderDumper.java index 78ed986a4..7856015e7 100644 --- a/src/java/org/apache/poi/poifs/dev/POIFSHeaderDumper.java +++ b/src/java/org/apache/poi/poifs/dev/POIFSHeaderDumper.java @@ -24,9 +24,10 @@ import java.lang.reflect.Method; import org.apache.poi.poifs.common.POIFSBigBlockSize; import org.apache.poi.poifs.common.POIFSConstants; +import org.apache.poi.poifs.property.DirectoryProperty; +import org.apache.poi.poifs.property.Property; import org.apache.poi.poifs.property.PropertyTable; import org.apache.poi.poifs.storage.BlockAllocationTableReader; -import org.apache.poi.poifs.storage.BlockList; import org.apache.poi.poifs.storage.HeaderBlock; import org.apache.poi.poifs.storage.ListManagedBlock; import org.apache.poi.poifs.storage.RawDataBlockList; @@ -59,6 +60,7 @@ public class POIFSHeaderDumper { } public static void viewFile(final String filename) throws Exception { + System.out.println("Dumping headers from: " + filename); InputStream inp = new FileInputStream(filename); // Header @@ -79,18 +81,22 @@ public class POIFSHeaderDumper { header_block.getXBATCount(), header_block.getXBATIndex(), data_blocks); - displayBATReader(batReader); + displayBATReader("Big Blocks", batReader); // Properties Table PropertyTable properties = new PropertyTable(header_block, data_blocks); // Mini Fat - BlockList sbat = - SmallBlockTableReader.getSmallDocumentBlocks( + BlockAllocationTableReader sbatReader = + SmallBlockTableReader._getSmallDocumentBlockReader( bigBlockSize, data_blocks, properties.getRoot(), header_block.getSBATStart() ); + displayBATReader("Small Blocks", sbatReader); + + // Summary of the properties + displayPropertiesSummary(properties); } public static void displayHeader(HeaderBlock header_block) throws Exception { @@ -98,6 +104,8 @@ public class POIFSHeaderDumper { System.out.println(" Block size: " + header_block.getBigBlockSize().getBigBlockSize()); System.out.println(" BAT (FAT) header blocks: " + header_block.getBATArray().length); System.out.println(" BAT (FAT) block count: " + header_block.getBATCount()); + if (header_block.getBATCount() > 0) + System.out.println(" BAT (FAT) block 1 at: " + header_block.getBATArray()[0]); System.out.println(" XBAT (FAT) block count: " + header_block.getXBATCount()); System.out.println(" XBAT (FAT) block 1 at: " + header_block.getXBATIndex()); System.out.println(" SBAT (MiniFAT) block count: " + header_block.getSBATCount()); @@ -125,8 +133,8 @@ public class POIFSHeaderDumper { System.out.println(""); } - public static void displayBATReader(BlockAllocationTableReader batReader) throws Exception { - System.out.println("Sectors, as referenced from the FAT:"); + public static void displayBATReader(String type, BlockAllocationTableReader batReader) throws Exception { + System.out.println("Sectors, as referenced from the "+type+" FAT:"); Field entriesF = batReader.getClass().getDeclaredField("_entries"); entriesF.setAccessible(true); IntList entries = (IntList)entriesF.get(batReader); @@ -149,4 +157,24 @@ public class POIFSHeaderDumper { System.out.println(""); } + + public static void displayPropertiesSummary(PropertyTable properties) { + System.out.println("Properties and their block start:"); + displayProperties(properties.getRoot(), ""); + System.out.println(""); + } + public static void displayProperties(DirectoryProperty prop, String indent) { + indent = indent + " "; + System.out.println(prop.getName()); + for (Property cp : prop) { + if (cp instanceof DirectoryProperty) { + displayProperties((DirectoryProperty)cp, indent); + } else { + // TODO + if (cp.shouldUseSmallBlocks()) { + + } + } + } + } } diff --git a/src/java/org/apache/poi/poifs/storage/SmallBlockTableReader.java b/src/java/org/apache/poi/poifs/storage/SmallBlockTableReader.java index 8b6efd36e..2f9528318 100644 --- a/src/java/org/apache/poi/poifs/storage/SmallBlockTableReader.java +++ b/src/java/org/apache/poi/poifs/storage/SmallBlockTableReader.java @@ -25,13 +25,66 @@ import org.apache.poi.poifs.property.RootProperty; /** * This class implements reading the small document block list from an * existing file - * - * @author Marc Johnson (mjohnson at apache dot org) */ public final class SmallBlockTableReader { + private static BlockList prepareSmallDocumentBlocks( + final POIFSBigBlockSize bigBlockSize, + final RawDataBlockList blockList, final RootProperty root, + final int sbatStart) + throws IOException + { + // Fetch the blocks which hold the Small Blocks stream + ListManagedBlock [] smallBlockBlocks = + blockList.fetchBlocks(root.getStartBlock(), -1); + + // Turn that into a list + BlockList list =new SmallDocumentBlockList( + SmallDocumentBlock.extract(bigBlockSize, smallBlockBlocks)); + + return list; + } + private static BlockAllocationTableReader prepareReader( + final POIFSBigBlockSize bigBlockSize, + final RawDataBlockList blockList, final BlockList list, + final RootProperty root, final int sbatStart) + throws IOException + { + // Process the SBAT and blocks + return new BlockAllocationTableReader(bigBlockSize, + blockList.fetchBlocks(sbatStart, -1), + list); + } + + /** + * Fetch the small document block reader from an existing file, normally + * needed for debugging and low level dumping. You should typically call + * {@link #getSmallDocumentBlocks(POIFSBigBlockSize, RawDataBlockList, RootProperty, int)} + * instead. + * + * @param blockList the raw data from which the small block table + * will be extracted + * @param root the root property (which contains the start block + * and small block table size) + * @param sbatStart the start block of the SBAT + * + * @return the small document block reader + * + * @exception IOException + */ + public static BlockAllocationTableReader _getSmallDocumentBlockReader( + final POIFSBigBlockSize bigBlockSize, + final RawDataBlockList blockList, final RootProperty root, + final int sbatStart) + throws IOException + { + BlockList list = prepareSmallDocumentBlocks( + bigBlockSize, blockList, root, sbatStart); + return prepareReader( + bigBlockSize, blockList, list, root, sbatStart); + } /** - * fetch the small document block list from an existing file + * Fetch the small document block list from an existing file * * @param blockList the raw data from which the small block table * will be extracted @@ -49,18 +102,9 @@ public final class SmallBlockTableReader { final int sbatStart) throws IOException { - // Fetch the blocks which hold the Small Blocks stream - ListManagedBlock [] smallBlockBlocks = - blockList.fetchBlocks(root.getStartBlock(), -1); - - // Turn that into a list - BlockList list =new SmallDocumentBlockList( - SmallDocumentBlock.extract(bigBlockSize, smallBlockBlocks)); - - // Process - new BlockAllocationTableReader(bigBlockSize, - blockList.fetchBlocks(sbatStart, -1), - list); + BlockList list = prepareSmallDocumentBlocks( + bigBlockSize, blockList, root, sbatStart); + prepareReader(bigBlockSize, blockList, list, root, sbatStart); return list; } } diff --git a/test-data/openxml4j/sample.xlsx b/test-data/openxml4j/sample.xlsx index a275cf417e01a78f9562b1b13725a404f234d5d1..328a9e39230a26623197aaf37b96a4f435933a07 100644 GIT binary patch literal 10059 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 literal 12050 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 I{_*Mm0DX*4GXMYp From 7c00beb63eb64853f24a65041c626fd0d1e05057 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Sun, 28 Jun 2015 17:54:20 +0000 Subject: [PATCH 208/301] Fix inconsistent whitespace git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1688031 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/poifs/dev/POIFSHeaderDumper.java | 258 +++++++++--------- 1 file changed, 129 insertions(+), 129 deletions(-) diff --git a/src/java/org/apache/poi/poifs/dev/POIFSHeaderDumper.java b/src/java/org/apache/poi/poifs/dev/POIFSHeaderDumper.java index 7856015e7..98d912d49 100644 --- a/src/java/org/apache/poi/poifs/dev/POIFSHeaderDumper.java +++ b/src/java/org/apache/poi/poifs/dev/POIFSHeaderDumper.java @@ -43,138 +43,138 @@ import org.apache.poi.util.IntList; * down the source of corruption in a file. */ public class POIFSHeaderDumper { - /** - * Display the entries of multiple POIFS files - * - * @param args the names of the files to be displayed - */ - public static void main(final String args[]) throws Exception { - if (args.length == 0) { - System.err.println("Must specify at least one file to view"); - System.exit(1); - } + /** + * Display the entries of multiple POIFS files + * + * @param args the names of the files to be displayed + */ + public static void main(final String args[]) throws Exception { + if (args.length == 0) { + System.err.println("Must specify at least one file to view"); + System.exit(1); + } - for (int j = 0; j < args.length; j++) { - viewFile(args[j]); - } - } + for (int j = 0; j < args.length; j++) { + viewFile(args[j]); + } + } - public static void viewFile(final String filename) throws Exception { - System.out.println("Dumping headers from: " + filename); - InputStream inp = new FileInputStream(filename); - - // Header - HeaderBlock header_block = new HeaderBlock(inp); - displayHeader(header_block); - - // Raw blocks - POIFSBigBlockSize bigBlockSize = header_block.getBigBlockSize(); - RawDataBlockList data_blocks = new RawDataBlockList(inp, bigBlockSize); - displayRawBlocksSummary(data_blocks); - - // Main FAT Table - BlockAllocationTableReader batReader = - new BlockAllocationTableReader( - header_block.getBigBlockSize(), - header_block.getBATCount(), - header_block.getBATArray(), - header_block.getXBATCount(), - header_block.getXBATIndex(), - data_blocks); - displayBATReader("Big Blocks", batReader); + public static void viewFile(final String filename) throws Exception { + System.out.println("Dumping headers from: " + filename); + InputStream inp = new FileInputStream(filename); - // Properties Table - PropertyTable properties = - new PropertyTable(header_block, data_blocks); - - // Mini Fat - BlockAllocationTableReader sbatReader = - SmallBlockTableReader._getSmallDocumentBlockReader( - bigBlockSize, data_blocks, properties.getRoot(), - header_block.getSBATStart() - ); - displayBATReader("Small Blocks", sbatReader); - - // Summary of the properties - displayPropertiesSummary(properties); - } + // Header + HeaderBlock header_block = new HeaderBlock(inp); + displayHeader(header_block); - public static void displayHeader(HeaderBlock header_block) throws Exception { - System.out.println("Header Details:"); - System.out.println(" Block size: " + header_block.getBigBlockSize().getBigBlockSize()); - System.out.println(" BAT (FAT) header blocks: " + header_block.getBATArray().length); - System.out.println(" BAT (FAT) block count: " + header_block.getBATCount()); - if (header_block.getBATCount() > 0) - System.out.println(" BAT (FAT) block 1 at: " + header_block.getBATArray()[0]); - System.out.println(" XBAT (FAT) block count: " + header_block.getXBATCount()); - System.out.println(" XBAT (FAT) block 1 at: " + header_block.getXBATIndex()); - System.out.println(" SBAT (MiniFAT) block count: " + header_block.getSBATCount()); - System.out.println(" SBAT (MiniFAT) block 1 at: " + header_block.getSBATStart()); - System.out.println(" Property table at: " + header_block.getPropertyStart()); - System.out.println(""); - } + // Raw blocks + POIFSBigBlockSize bigBlockSize = header_block.getBigBlockSize(); + RawDataBlockList data_blocks = new RawDataBlockList(inp, bigBlockSize); + displayRawBlocksSummary(data_blocks); - public static void displayRawBlocksSummary(RawDataBlockList data_blocks) throws Exception { - System.out.println("Raw Blocks Details:"); - System.out.println(" Number of blocks: " + data_blocks.blockCount()); - - Method gbm = data_blocks.getClass().getSuperclass().getDeclaredMethod("get", int.class); - gbm.setAccessible(true); - - for(int i=0; i " + bnS); - } - - System.out.println(""); - } - - public static void displayPropertiesSummary(PropertyTable properties) { - System.out.println("Properties and their block start:"); - displayProperties(properties.getRoot(), ""); - System.out.println(""); - } - public static void displayProperties(DirectoryProperty prop, String indent) { - indent = indent + " "; - System.out.println(prop.getName()); - for (Property cp : prop) { - if (cp instanceof DirectoryProperty) { - displayProperties((DirectoryProperty)cp, indent); - } else { - // TODO - if (cp.shouldUseSmallBlocks()) { - - } - } - } - } + // Main FAT Table + BlockAllocationTableReader batReader = + new BlockAllocationTableReader( + header_block.getBigBlockSize(), + header_block.getBATCount(), + header_block.getBATArray(), + header_block.getXBATCount(), + header_block.getXBATIndex(), + data_blocks); + displayBATReader("Big Blocks", batReader); + + // Properties Table + PropertyTable properties = + new PropertyTable(header_block, data_blocks); + + // Mini Fat + BlockAllocationTableReader sbatReader = + SmallBlockTableReader._getSmallDocumentBlockReader( + bigBlockSize, data_blocks, properties.getRoot(), + header_block.getSBATStart() + ); + displayBATReader("Small Blocks", sbatReader); + + // Summary of the properties + displayPropertiesSummary(properties); + } + + public static void displayHeader(HeaderBlock header_block) throws Exception { + System.out.println("Header Details:"); + System.out.println(" Block size: " + header_block.getBigBlockSize().getBigBlockSize()); + System.out.println(" BAT (FAT) header blocks: " + header_block.getBATArray().length); + System.out.println(" BAT (FAT) block count: " + header_block.getBATCount()); + if (header_block.getBATCount() > 0) + System.out.println(" BAT (FAT) block 1 at: " + header_block.getBATArray()[0]); + System.out.println(" XBAT (FAT) block count: " + header_block.getXBATCount()); + System.out.println(" XBAT (FAT) block 1 at: " + header_block.getXBATIndex()); + System.out.println(" SBAT (MiniFAT) block count: " + header_block.getSBATCount()); + System.out.println(" SBAT (MiniFAT) block 1 at: " + header_block.getSBATStart()); + System.out.println(" Property table at: " + header_block.getPropertyStart()); + System.out.println(""); + } + + public static void displayRawBlocksSummary(RawDataBlockList data_blocks) throws Exception { + System.out.println("Raw Blocks Details:"); + System.out.println(" Number of blocks: " + data_blocks.blockCount()); + + Method gbm = data_blocks.getClass().getSuperclass().getDeclaredMethod("get", int.class); + gbm.setAccessible(true); + + for(int i=0; i " + bnS); + } + + System.out.println(""); + } + + public static void displayPropertiesSummary(PropertyTable properties) { + System.out.println("Properties and their block start:"); + displayProperties(properties.getRoot(), ""); + System.out.println(""); + } + public static void displayProperties(DirectoryProperty prop, String indent) { + indent = indent + " "; + System.out.println(prop.getName()); + for (Property cp : prop) { + if (cp instanceof DirectoryProperty) { + displayProperties((DirectoryProperty)cp, indent); + } else { + // TODO + if (cp.shouldUseSmallBlocks()) { + + } + } + } + } } From 41649874b9530d74611cc6bf4a870dfc81929d4d Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Sun, 28 Jun 2015 18:51:50 +0000 Subject: [PATCH 209/301] Print mini stream information, and property entries git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1688037 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/poifs/dev/POIFSHeaderDumper.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/java/org/apache/poi/poifs/dev/POIFSHeaderDumper.java b/src/java/org/apache/poi/poifs/dev/POIFSHeaderDumper.java index 98d912d49..54ab23149 100644 --- a/src/java/org/apache/poi/poifs/dev/POIFSHeaderDumper.java +++ b/src/java/org/apache/poi/poifs/dev/POIFSHeaderDumper.java @@ -159,21 +159,28 @@ public class POIFSHeaderDumper { } public static void displayPropertiesSummary(PropertyTable properties) { + System.out.println("Mini Stream starts at " + properties.getRoot().getStartBlock()); + System.out.println(); + System.out.println("Properties and their block start:"); displayProperties(properties.getRoot(), ""); System.out.println(""); } public static void displayProperties(DirectoryProperty prop, String indent) { - indent = indent + " "; - System.out.println(prop.getName()); + String nextIndent = indent + " "; + System.out.println(indent + "-> " + prop.getName()); for (Property cp : prop) { if (cp instanceof DirectoryProperty) { - displayProperties((DirectoryProperty)cp, indent); + displayProperties((DirectoryProperty)cp, nextIndent); } else { - // TODO + System.out.println(nextIndent + "=> " + cp.getName()); + System.out.print(nextIndent + " " + cp.getSize() + " bytes in "); if (cp.shouldUseSmallBlocks()) { - + System.out.print("mini"); + } else { + System.out.print("main"); } + System.out.println(" stream, starts at " + cp.getStartBlock()); } } } From 069d7db9e065e67bc2b5658b8bc78a4c43518acc Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Sun, 28 Jun 2015 18:53:21 +0000 Subject: [PATCH 210/301] Put the properties table at block 0, with the first BAT at block 1, to hopefully solve #58061 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1688038 13f79535-47bb-0310-9956-ffa450edef68 --- .../poifs/filesystem/NPOIFSFileSystem.java | 13 +- .../filesystem/TestNPOIFSFileSystem.java | 147 +++++++++--------- .../poifs/filesystem/TestNPOIFSMiniStore.java | 38 ++--- .../poifs/filesystem/TestNPOIFSStream.java | 84 +++++----- 4 files changed, 140 insertions(+), 142 deletions(-) diff --git a/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java b/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java index bb5b3a50e..f7e19137a 100644 --- a/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java +++ b/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java @@ -115,17 +115,18 @@ public class NPOIFSFileSystem extends BlockStore { this(true); - // Mark us as having a single empty BAT at offset 0 + // Reserve block 0 for the start of the Properties Table + // Create a single empty BAT, at pop that at offset 1 _header.setBATCount(1); - _header.setBATArray(new int[] { 0 }); + _header.setBATArray(new int[] { 1 }); BATBlock bb = BATBlock.createEmptyBATBlock(bigBlockSize, false); - bb.setOurBlockIndex(0); + bb.setOurBlockIndex(1); _bat_blocks.add(bb); - setNextBlock(0, POIFSConstants.FAT_SECTOR_BLOCK); - setNextBlock(1, POIFSConstants.END_OF_CHAIN); + setNextBlock(0, POIFSConstants.END_OF_CHAIN); + setNextBlock(1, POIFSConstants.FAT_SECTOR_BLOCK); - _property_table.setStartBlock(POIFSConstants.END_OF_CHAIN); + _property_table.setStartBlock(0); } /** diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java b/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java index 13fef7d8b..a476233ec 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java @@ -936,27 +936,27 @@ public final class TestNPOIFSFileSystem { DocumentEntry miniDoc; DocumentEntry normDoc; - // Initially has a BAT but not SBAT - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(0)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(1)); + // Initially has Properties + BAT but not SBAT + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(1)); assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(2)); // Check that the SBAT is empty assertEquals(POIFSConstants.END_OF_CHAIN, fs.getRoot().getProperty().getStartBlock()); - // Check that no properties table has been written yet - assertEquals(POIFSConstants.END_OF_CHAIN, fs._get_property_table().getStartBlock()); + // Check that properties table was given block 0 + assertEquals(0, fs._get_property_table().getStartBlock()); // Write and read it fs = writeOutAndReadBack(fs); - // Property table entries have been added to the blocks - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(0)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(1)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(2)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(3)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getRoot().getProperty().getStartBlock()); - assertEquals(2, fs._get_property_table().getStartBlock()); + // No change, SBAT remains empty + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(1)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(2)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(3)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getRoot().getProperty().getStartBlock()); + assertEquals(0, fs._get_property_table().getStartBlock()); // Put everything within a new directory @@ -968,19 +968,19 @@ public final class TestNPOIFSFileSystem { main4096[4095] = -11; testDir.createDocument("Normal4096", new ByteArrayInputStream(main4096)); - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(0)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(1)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(2)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(1)); + assertEquals(3, fs.getNextBlock(2)); assertEquals(4, fs.getNextBlock(3)); assertEquals(5, fs.getNextBlock(4)); assertEquals(6, fs.getNextBlock(5)); assertEquals(7, fs.getNextBlock(6)); assertEquals(8, fs.getNextBlock(7)); assertEquals(9, fs.getNextBlock(8)); - assertEquals(10, fs.getNextBlock(9)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(10)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(9)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(10)); assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(11)); - + // SBAT still unused assertEquals(POIFSConstants.END_OF_CHAIN, fs.getRoot().getProperty().getStartBlock()); @@ -990,18 +990,18 @@ public final class TestNPOIFSFileSystem { main5124[5123] = -33; testDir.createDocument("Normal5124", new ByteArrayInputStream(main5124)); - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(0)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(1)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(2)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(1)); + assertEquals(3, fs.getNextBlock(2)); assertEquals(4, fs.getNextBlock(3)); assertEquals(5, fs.getNextBlock(4)); assertEquals(6, fs.getNextBlock(5)); assertEquals(7, fs.getNextBlock(6)); assertEquals(8, fs.getNextBlock(7)); assertEquals(9, fs.getNextBlock(8)); - assertEquals(10, fs.getNextBlock(9)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(10)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(9)); + assertEquals(11, fs.getNextBlock(10)); assertEquals(12, fs.getNextBlock(11)); assertEquals(13, fs.getNextBlock(12)); assertEquals(14, fs.getNextBlock(13)); @@ -1011,8 +1011,8 @@ public final class TestNPOIFSFileSystem { assertEquals(18, fs.getNextBlock(17)); assertEquals(19, fs.getNextBlock(18)); assertEquals(20, fs.getNextBlock(19)); - assertEquals(21, fs.getNextBlock(20)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(21)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(20)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(21)); assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(22)); assertEquals(POIFSConstants.END_OF_CHAIN, fs.getRoot().getProperty().getStartBlock()); @@ -1023,18 +1023,18 @@ public final class TestNPOIFSFileSystem { testDir.createDocument("Mini", new ByteArrayInputStream(mini)); // Mini stream will get one block for fat + one block for data - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(0)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(1)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(2)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(1)); + assertEquals(3, fs.getNextBlock(2)); assertEquals(4, fs.getNextBlock(3)); assertEquals(5, fs.getNextBlock(4)); assertEquals(6, fs.getNextBlock(5)); assertEquals(7, fs.getNextBlock(6)); assertEquals(8, fs.getNextBlock(7)); assertEquals(9, fs.getNextBlock(8)); - assertEquals(10, fs.getNextBlock(9)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(10)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(9)); + assertEquals(11, fs.getNextBlock(10)); assertEquals(12, fs.getNextBlock(11)); assertEquals(13, fs.getNextBlock(12)); assertEquals(14, fs.getNextBlock(13)); @@ -1044,15 +1044,14 @@ public final class TestNPOIFSFileSystem { assertEquals(18, fs.getNextBlock(17)); assertEquals(19, fs.getNextBlock(18)); assertEquals(20, fs.getNextBlock(19)); - assertEquals(21, fs.getNextBlock(20)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(20)); assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(21)); assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(22)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(23)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(24)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(23)); // Check the mini stream location was set - // (22 is mini fat, 23 is first mini stream block) - assertEquals(23, fs.getRoot().getProperty().getStartBlock()); + // (21 is mini fat, 22 is first mini stream block) + assertEquals(22, fs.getRoot().getProperty().getStartBlock()); // Write and read back @@ -1061,28 +1060,28 @@ public final class TestNPOIFSFileSystem { // Check the header has the right points in it assertEquals(1, header.getBATCount()); - assertEquals(0, header.getBATArray()[0]); - assertEquals(2, header.getPropertyStart()); + assertEquals(1, header.getBATArray()[0]); + assertEquals(0, header.getPropertyStart()); assertEquals(1, header.getSBATCount()); - assertEquals(22, header.getSBATStart()); - assertEquals(23, fs._get_property_table().getRoot().getStartBlock()); + assertEquals(21, header.getSBATStart()); + assertEquals(22, fs._get_property_table().getRoot().getStartBlock()); // Block use should be almost the same, except the properties // stream will have grown out to cover 2 blocks // Check the block use is all unchanged - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(0)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(1)); - assertEquals(24, fs.getNextBlock(2)); // Properties now extends over 2 blocks + assertEquals(23, fs.getNextBlock(0)); // Properties now extends over 2 blocks + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(1)); + assertEquals(3, fs.getNextBlock(2)); assertEquals(4, fs.getNextBlock(3)); assertEquals(5, fs.getNextBlock(4)); assertEquals(6, fs.getNextBlock(5)); assertEquals(7, fs.getNextBlock(6)); assertEquals(8, fs.getNextBlock(7)); assertEquals(9, fs.getNextBlock(8)); - assertEquals(10, fs.getNextBlock(9)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(10)); // End of normal4096 + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(9)); // End of normal4096 + assertEquals(11, fs.getNextBlock(10)); assertEquals(12, fs.getNextBlock(11)); assertEquals(13, fs.getNextBlock(12)); assertEquals(14, fs.getNextBlock(13)); @@ -1092,13 +1091,12 @@ public final class TestNPOIFSFileSystem { assertEquals(18, fs.getNextBlock(17)); assertEquals(19, fs.getNextBlock(18)); assertEquals(20, fs.getNextBlock(19)); - assertEquals(21, fs.getNextBlock(20)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(21)); // End of normal5124 + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(20)); // End of normal5124 - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(22)); // Mini Stream FAT - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(23)); // Mini Stream data - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(24)); // Properties #2 - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(25)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(21)); // Mini Stream FAT + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(22)); // Mini Stream data + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(23)); // Properties #2 + assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(24)); // Check some data @@ -1124,19 +1122,19 @@ public final class TestNPOIFSFileSystem { // Check - will have un-used sectors now fs = writeOutAndReadBack(fs); - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(0)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(1)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(2)); // Props back in 1 block + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(0)); // Props back in 1 block + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(1)); + assertEquals(3, fs.getNextBlock(2)); assertEquals(4, fs.getNextBlock(3)); assertEquals(5, fs.getNextBlock(4)); assertEquals(6, fs.getNextBlock(5)); assertEquals(7, fs.getNextBlock(6)); assertEquals(8, fs.getNextBlock(7)); assertEquals(9, fs.getNextBlock(8)); - assertEquals(10, fs.getNextBlock(9)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(10)); // End of normal4096 + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(9)); // End of normal4096 + assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(10)); assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(11)); assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(12)); assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(13)); @@ -1147,11 +1145,11 @@ public final class TestNPOIFSFileSystem { assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(18)); assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(19)); assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(20)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(21)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(22)); // Mini Stream FAT - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(23)); // Mini Stream data - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(24)); // Properties gone + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(21)); // Mini Stream FAT + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(22)); // Mini Stream data + assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(23)); // Properties gone + assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(24)); assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(25)); // All done @@ -1165,20 +1163,20 @@ public final class TestNPOIFSFileSystem { DocumentEntry normDoc; HeaderBlock hdr; - // Initially has BAT + Properties but nothing else - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(0)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(1)); + // Initially has Properties + BAT but nothing else + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(1)); assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(2)); hdr = writeOutAndReadHeader(fs); // No mini stream, and no xbats // Will have fat then properties stream assertEquals(1, hdr.getBATCount()); - assertEquals(0, hdr.getBATArray()[0]); - assertEquals(2, hdr.getPropertyStart()); + assertEquals(1, hdr.getBATArray()[0]); + assertEquals(0, hdr.getPropertyStart()); assertEquals(POIFSConstants.END_OF_CHAIN, hdr.getSBATStart()); assertEquals(POIFSConstants.END_OF_CHAIN, hdr.getXBATIndex()); - assertEquals(POIFSConstants.SMALLER_BIG_BLOCK_SIZE*4, fs.size()); + assertEquals(POIFSConstants.SMALLER_BIG_BLOCK_SIZE*3, fs.size()); // Get a clean filesystem to start with @@ -1201,8 +1199,8 @@ public final class TestNPOIFSFileSystem { // Check the mini stream was added, then the main stream - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(0)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(1)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(1)); assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(2)); // Mini Fat assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(3)); // Mini Stream assertEquals(5, fs.getNextBlock(4)); // Main Stream @@ -1232,15 +1230,15 @@ public final class TestNPOIFSFileSystem { // Check the header details - will have the sbat near the start, // then the properties at the end assertEquals(1, hdr.getBATCount()); - assertEquals(0, hdr.getBATArray()[0]); + assertEquals(1, hdr.getBATArray()[0]); assertEquals(2, hdr.getSBATStart()); - assertEquals(12, hdr.getPropertyStart()); + assertEquals(0, hdr.getPropertyStart()); assertEquals(POIFSConstants.END_OF_CHAIN, hdr.getXBATIndex()); // Check the block allocation is unchanged, other than // the properties stream going in at the end - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(0)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(1)); + assertEquals(12, fs.getNextBlock(0)); // Properties + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(1)); assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(2)); assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(3)); assertEquals(5, fs.getNextBlock(4)); @@ -1251,10 +1249,9 @@ public final class TestNPOIFSFileSystem { assertEquals(10, fs.getNextBlock(9)); assertEquals(11, fs.getNextBlock(10)); assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(11)); - assertEquals(13, fs.getNextBlock(12)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(13)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(14)); - assertEquals(POIFSConstants.SMALLER_BIG_BLOCK_SIZE*15, fs.size()); + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(12)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(13)); + assertEquals(POIFSConstants.SMALLER_BIG_BLOCK_SIZE*14, fs.size()); // Check the data diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java b/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java index 044542290..f420683c3 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java @@ -338,10 +338,10 @@ public final class TestNPOIFSMiniStore extends TestCase { NPOIFSFileSystem fs = new NPOIFSFileSystem(); NPOIFSMiniStore ministore = fs.getMiniStore(); - // Initially has BAT + Properties but nothing else - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(0)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(1)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(2)); + // Initially has Properties + BAT but nothing else + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(1)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(2)); // Ministore has no blocks, so can't iterate until used try { ministore.getNextBlock(0); @@ -355,27 +355,27 @@ public final class TestNPOIFSMiniStore extends TestCase { fs.getRoot().createDocument("mini", new ByteArrayInputStream(data)); // Should now have a mini-fat and a mini-stream - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(0)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(1)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(2)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(3)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(4)); - assertEquals(POIFSConstants.END_OF_CHAIN, ministore.getNextBlock(0)); - assertEquals(POIFSConstants.UNUSED_BLOCK, ministore.getNextBlock(1)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK,fs.getNextBlock(1)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(2)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(3)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(4)); + assertEquals(POIFSConstants.END_OF_CHAIN, ministore.getNextBlock(0)); + assertEquals(POIFSConstants.UNUSED_BLOCK, ministore.getNextBlock(1)); // Re-fetch the mini store, and add it a second time ministore = fs.getMiniStore(); fs.getRoot().createDocument("mini2", new ByteArrayInputStream(data)); // Main unchanged, ministore has a second - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(0)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(1)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(2)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(3)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(4)); - assertEquals(POIFSConstants.END_OF_CHAIN, ministore.getNextBlock(0)); - assertEquals(POIFSConstants.END_OF_CHAIN, ministore.getNextBlock(1)); - assertEquals(POIFSConstants.UNUSED_BLOCK, ministore.getNextBlock(2)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK,fs.getNextBlock(1)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(2)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(3)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(4)); + assertEquals(POIFSConstants.END_OF_CHAIN, ministore.getNextBlock(0)); + assertEquals(POIFSConstants.END_OF_CHAIN, ministore.getNextBlock(1)); + assertEquals(POIFSConstants.UNUSED_BLOCK, ministore.getNextBlock(2)); // Done fs.close(); diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSStream.java b/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSStream.java index 1dcdba1ca..f1c8c180a 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSStream.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSStream.java @@ -860,12 +860,12 @@ public final class TestNPOIFSStream extends TestCase { NPOIFSFileSystem fs = new NPOIFSFileSystem(); NPOIFSStream stream = new NPOIFSStream(fs); - // Check our filesystem has a BAT and the Properties + // Check our filesystem has Properties then BAT assertEquals(2, fs.getFreeBlock()); BATBlock bat = fs.getBATBlockAndIndex(0).getBlock(); - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, bat.getValueAt(0)); - assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(1)); - assertEquals(POIFSConstants.UNUSED_BLOCK, bat.getValueAt(2)); + assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK,bat.getValueAt(1)); + assertEquals(POIFSConstants.UNUSED_BLOCK, bat.getValueAt(2)); // Check the stream as-is assertEquals(POIFSConstants.END_OF_CHAIN, stream.getStartBlock()); @@ -887,11 +887,11 @@ public final class TestNPOIFSStream extends TestCase { // Check now assertEquals(4, fs.getFreeBlock()); bat = fs.getBATBlockAndIndex(0).getBlock(); - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, bat.getValueAt(0)); - assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(1)); - assertEquals(3, bat.getValueAt(2)); - assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(3)); - assertEquals(POIFSConstants.UNUSED_BLOCK, bat.getValueAt(4)); + assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK,bat.getValueAt(1)); + assertEquals(3, bat.getValueAt(2)); + assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(3)); + assertEquals(POIFSConstants.UNUSED_BLOCK, bat.getValueAt(4)); Iterator it = stream.getBlockIterator(); @@ -927,11 +927,11 @@ public final class TestNPOIFSStream extends TestCase { public void testWriteThenReplace() throws Exception { NPOIFSFileSystem fs = new NPOIFSFileSystem(); - // Starts empty + // Starts empty, other that Properties and BAT BATBlock bat = fs.getBATBlockAndIndex(0).getBlock(); - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, bat.getValueAt(0)); - assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(1)); - assertEquals(POIFSConstants.UNUSED_BLOCK, bat.getValueAt(2)); + assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK,bat.getValueAt(1)); + assertEquals(POIFSConstants.UNUSED_BLOCK, bat.getValueAt(2)); // Write something that uses a main stream byte[] main4106 = new byte[4106]; @@ -941,8 +941,8 @@ public final class TestNPOIFSStream extends TestCase { "Normal", new ByteArrayInputStream(main4106)); // Should have used 9 blocks - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, bat.getValueAt(0)); - assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(1)); + assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK,bat.getValueAt(1)); assertEquals(3, bat.getValueAt(2)); assertEquals(4, bat.getValueAt(3)); assertEquals(5, bat.getValueAt(4)); @@ -969,8 +969,8 @@ public final class TestNPOIFSStream extends TestCase { nout.close(); // Will have dropped to 8 - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, bat.getValueAt(0)); - assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(1)); + assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK,bat.getValueAt(1)); assertEquals(3, bat.getValueAt(2)); assertEquals(4, bat.getValueAt(3)); assertEquals(5, bat.getValueAt(4)); @@ -991,9 +991,9 @@ public final class TestNPOIFSStream extends TestCase { fs = writeOutAndReadBack(fs); bat = fs.getBATBlockAndIndex(0).getBlock(); - // Will have properties, but otherwise the same - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, bat.getValueAt(0)); - assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(1)); + // No change after write + assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(0)); // Properties + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK,bat.getValueAt(1)); assertEquals(3, bat.getValueAt(2)); assertEquals(4, bat.getValueAt(3)); assertEquals(5, bat.getValueAt(4)); @@ -1002,7 +1002,7 @@ public final class TestNPOIFSStream extends TestCase { assertEquals(8, bat.getValueAt(7)); assertEquals(9, bat.getValueAt(8)); assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(9)); // End of Normal - assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(10)); // Props + assertEquals(POIFSConstants.UNUSED_BLOCK, bat.getValueAt(10)); assertEquals(POIFSConstants.UNUSED_BLOCK, bat.getValueAt(11)); normal = (DocumentEntry)fs.getRoot().getEntry("Normal"); @@ -1010,14 +1010,14 @@ public final class TestNPOIFSStream extends TestCase { assertEquals(4096, ((DocumentNode)normal).getProperty().getSize()); - // Make longer, take 1 block after the properties too + // Make longer, take 1 block at the end normal = (DocumentEntry)fs.getRoot().getEntry("Normal"); nout = new NDocumentOutputStream(normal); nout.write(main4106); nout.close(); - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, bat.getValueAt(0)); - assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(1)); + assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK,bat.getValueAt(1)); assertEquals(3, bat.getValueAt(2)); assertEquals(4, bat.getValueAt(3)); assertEquals(5, bat.getValueAt(4)); @@ -1025,9 +1025,9 @@ public final class TestNPOIFSStream extends TestCase { assertEquals(7, bat.getValueAt(6)); assertEquals(8, bat.getValueAt(7)); assertEquals(9, bat.getValueAt(8)); - assertEquals(11, bat.getValueAt(9)); - assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(10)); // Props - assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(11)); // Normal + assertEquals(10, bat.getValueAt(9)); + assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(10)); // Normal + assertEquals(POIFSConstants.UNUSED_BLOCK, bat.getValueAt(11)); assertEquals(POIFSConstants.UNUSED_BLOCK, bat.getValueAt(12)); normal = (DocumentEntry)fs.getRoot().getEntry("Normal"); @@ -1042,8 +1042,8 @@ public final class TestNPOIFSStream extends TestCase { nout.write(mini); nout.close(); - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, bat.getValueAt(0)); - assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(1)); + assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, bat.getValueAt(1)); assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(2)); // SBAT assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(3)); // Mini Stream assertEquals(POIFSConstants.UNUSED_BLOCK, bat.getValueAt(4)); @@ -1052,7 +1052,7 @@ public final class TestNPOIFSStream extends TestCase { assertEquals(POIFSConstants.UNUSED_BLOCK, bat.getValueAt(7)); assertEquals(POIFSConstants.UNUSED_BLOCK, bat.getValueAt(8)); assertEquals(POIFSConstants.UNUSED_BLOCK, bat.getValueAt(9)); - assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(10)); // Props + assertEquals(POIFSConstants.UNUSED_BLOCK, bat.getValueAt(10)); assertEquals(POIFSConstants.UNUSED_BLOCK, bat.getValueAt(11)); assertEquals(POIFSConstants.UNUSED_BLOCK, bat.getValueAt(12)); @@ -1067,8 +1067,8 @@ public final class TestNPOIFSStream extends TestCase { nout.close(); // Will keep the mini stream, now empty - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, bat.getValueAt(0)); - assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(1)); + assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, bat.getValueAt(1)); assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(2)); // SBAT assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(3)); // Mini Stream assertEquals(5, bat.getValueAt(4)); @@ -1076,10 +1076,10 @@ public final class TestNPOIFSStream extends TestCase { assertEquals(7, bat.getValueAt(6)); assertEquals(8, bat.getValueAt(7)); assertEquals(9, bat.getValueAt(8)); - assertEquals(11, bat.getValueAt(9)); - assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(10)); // Props - assertEquals(12, bat.getValueAt(11)); - assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(12)); + assertEquals(10, bat.getValueAt(9)); + assertEquals(11, bat.getValueAt(10)); + assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(11)); + assertEquals(POIFSConstants.UNUSED_BLOCK, bat.getValueAt(12)); assertEquals(POIFSConstants.UNUSED_BLOCK, bat.getValueAt(13)); normal = (DocumentEntry)fs.getRoot().getEntry("Normal"); @@ -1091,8 +1091,8 @@ public final class TestNPOIFSStream extends TestCase { fs = writeOutAndReadBack(fs); bat = fs.getBATBlockAndIndex(0).getBlock(); - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, bat.getValueAt(0)); - assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(1)); + assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, bat.getValueAt(1)); assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(2)); // SBAT assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(3)); // Mini Stream assertEquals(5, bat.getValueAt(4)); @@ -1100,10 +1100,10 @@ public final class TestNPOIFSStream extends TestCase { assertEquals(7, bat.getValueAt(6)); assertEquals(8, bat.getValueAt(7)); assertEquals(9, bat.getValueAt(8)); - assertEquals(11, bat.getValueAt(9)); - assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(10)); // Props - assertEquals(12, bat.getValueAt(11)); - assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(12)); + assertEquals(10, bat.getValueAt(9)); + assertEquals(11, bat.getValueAt(10)); + assertEquals(POIFSConstants.END_OF_CHAIN, bat.getValueAt(11)); + assertEquals(POIFSConstants.UNUSED_BLOCK, bat.getValueAt(12)); assertEquals(POIFSConstants.UNUSED_BLOCK, bat.getValueAt(13)); normal = (DocumentEntry)fs.getRoot().getEntry("Normal"); From efc96e1d8eeb39fb89ac890348a69c4468437fd6 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 28 Jun 2015 19:55:56 +0000 Subject: [PATCH 211/301] Open file read-only in test to avoid making it dirty during running unit tests git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1688045 13f79535-47bb-0310-9956-ffa450edef68 --- .../testcases/org/apache/poi/openxml4j/opc/TestPackage.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java index 2f857933e..a6955958f 100644 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java @@ -709,13 +709,13 @@ public final class TestPackage { // use values close to, but within the limits ZipSecureFile.setMinInflateRatio(min_ratio-0.002); ZipSecureFile.setMaxEntrySize(max_size+1); - Workbook wb = WorkbookFactory.create(file); + Workbook wb = WorkbookFactory.create(file, null, true); wb.close(); // check ratio out of bounds ZipSecureFile.setMinInflateRatio(min_ratio+0.002); try { - wb = WorkbookFactory.create(file); + wb = WorkbookFactory.create(file, null, true); wb.close(); // this is a bit strange, as there will be different exceptions thrown // depending if this executed via "ant test" or within eclipse From 8eae3df77e371a423e3f1ab1c8c2ba70269c5724 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 29 Jun 2015 06:05:42 +0000 Subject: [PATCH 212/301] Support optionally dumping the properties stream git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1688091 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/poifs/dev/POIFSDump.java | 49 +++++++++++++++++-- 1 file changed, 45 insertions(+), 4 deletions(-) diff --git a/src/java/org/apache/poi/poifs/dev/POIFSDump.java b/src/java/org/apache/poi/poifs/dev/POIFSDump.java index 3af3690fd..4ae01437a 100644 --- a/src/java/org/apache/poi/poifs/dev/POIFSDump.java +++ b/src/java/org/apache/poi/poifs/dev/POIFSDump.java @@ -16,22 +16,43 @@ ==================================================================== */ package org.apache.poi.poifs.dev; -import org.apache.poi.poifs.filesystem.*; - -import java.io.FileInputStream; import java.io.File; -import java.io.IOException; +import java.io.FileInputStream; import java.io.FileOutputStream; +import java.io.IOException; import java.io.OutputStream; +import java.lang.reflect.Field; +import java.nio.ByteBuffer; import java.util.Iterator; +import org.apache.poi.poifs.filesystem.DirectoryEntry; +import org.apache.poi.poifs.filesystem.DocumentInputStream; +import org.apache.poi.poifs.filesystem.DocumentNode; +import org.apache.poi.poifs.filesystem.Entry; +import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; +import org.apache.poi.poifs.filesystem.NPOIFSStream; +import org.apache.poi.poifs.storage.HeaderBlock; + /** * Dump internal structure of a OLE2 file into file system */ public class POIFSDump { public static void main(String[] args) throws Exception { + if (args.length == 0) { + System.err.println("Must specify at least one file to dump"); + System.exit(1); + } + + boolean withProps = false; for (int i = 0; i < args.length; i++) { + if (args[i].equalsIgnoreCase("-dumprops") || + args[i].equalsIgnoreCase("-dump-props") || + args[i].equalsIgnoreCase("-dump-properties")) { + withProps = true; + continue; + } + System.out.println("Dumping " + args[i]); FileInputStream is = new FileInputStream(args[i]); NPOIFSFileSystem fs = new NPOIFSFileSystem(is); @@ -42,6 +63,13 @@ public class POIFSDump { file.mkdir(); dump(root, file); + + if (withProps) { + Field headerF = NPOIFSFileSystem.class.getDeclaredField("_header"); + headerF.setAccessible(true); + HeaderBlock header = (HeaderBlock)headerF.get(fs); + dump(fs, header.getPropertyStart(), file); + } } } @@ -72,4 +100,17 @@ public class POIFSDump { } } } + public static void dump(NPOIFSFileSystem fs, int startBlock, File parent) throws IOException { + File file = new File(parent, "properties"); + FileOutputStream out = new FileOutputStream(file); + NPOIFSStream stream = new NPOIFSStream(fs, startBlock); + + byte[] b = new byte[fs.getBigBlockSize()]; + for (ByteBuffer bb : stream) { + int len = bb.remaining(); + bb.get(b); + out.write(b, 0, len); + } + out.close(); + } } From f5e3e5d64d1514f3ffa45750f34e5b260cdc423c Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 29 Jun 2015 07:12:27 +0000 Subject: [PATCH 213/301] Revert to state before running unit-tests to not have arbitrary test-changes applied to the sample file. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1688095 13f79535-47bb-0310-9956-ffa450edef68 --- test-data/openxml4j/sample.xlsx | Bin 10059 -> 12050 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test-data/openxml4j/sample.xlsx b/test-data/openxml4j/sample.xlsx index 328a9e39230a26623197aaf37b96a4f435933a07..a275cf417e01a78f9562b1b13725a404f234d5d1 100644 GIT binary patch literal 12050 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 I{_*Mm0DX*4GXMYp literal 10059 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 From 51af6e58b46d4fe918d213517ecc3b4d3a89aba5 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Tue, 30 Jun 2015 23:25:41 +0000 Subject: [PATCH 214/301] Allow optional dumping of the raw ministream as well git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1688533 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/poifs/dev/POIFSDump.java | 49 ++++++++++++++----- 1 file changed, 38 insertions(+), 11 deletions(-) diff --git a/src/java/org/apache/poi/poifs/dev/POIFSDump.java b/src/java/org/apache/poi/poifs/dev/POIFSDump.java index 4ae01437a..ce7d9e441 100644 --- a/src/java/org/apache/poi/poifs/dev/POIFSDump.java +++ b/src/java/org/apache/poi/poifs/dev/POIFSDump.java @@ -25,31 +25,39 @@ import java.lang.reflect.Field; import java.nio.ByteBuffer; import java.util.Iterator; +import org.apache.poi.poifs.common.POIFSConstants; import org.apache.poi.poifs.filesystem.DirectoryEntry; import org.apache.poi.poifs.filesystem.DocumentInputStream; import org.apache.poi.poifs.filesystem.DocumentNode; import org.apache.poi.poifs.filesystem.Entry; import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; import org.apache.poi.poifs.filesystem.NPOIFSStream; +import org.apache.poi.poifs.property.NPropertyTable; import org.apache.poi.poifs.storage.HeaderBlock; /** * Dump internal structure of a OLE2 file into file system */ public class POIFSDump { - public static void main(String[] args) throws Exception { if (args.length == 0) { System.err.println("Must specify at least one file to dump"); System.exit(1); } - boolean withProps = false; + boolean dumpProps = false, dumpMini = false; for (int i = 0; i < args.length; i++) { if (args[i].equalsIgnoreCase("-dumprops") || args[i].equalsIgnoreCase("-dump-props") || args[i].equalsIgnoreCase("-dump-properties")) { - withProps = true; + dumpProps = true; + continue; + } + if (args[i].equalsIgnoreCase("-dumpmini") || + args[i].equalsIgnoreCase("-dump-mini") || + args[i].equalsIgnoreCase("-dump-ministream") || + args[i].equalsIgnoreCase("-dump-mini-stream")) { + dumpMini = true; continue; } @@ -64,15 +72,34 @@ public class POIFSDump { dump(root, file); - if (withProps) { - Field headerF = NPOIFSFileSystem.class.getDeclaredField("_header"); - headerF.setAccessible(true); - HeaderBlock header = (HeaderBlock)headerF.get(fs); - dump(fs, header.getPropertyStart(), file); + if (dumpProps) { + HeaderBlock header = getHeaderBlock(fs); + dump(fs, header.getPropertyStart(), "properties", file); + } + if (dumpMini) { + NPropertyTable props = getPropertyTable(fs); + int startBlock = props.getRoot().getStartBlock(); + if (startBlock == POIFSConstants.END_OF_CHAIN) { + System.err.println("No Mini Stream in file"); + } else { + dump(fs, startBlock, "mini-stream", file); + } } } } - + + protected static HeaderBlock getHeaderBlock(NPOIFSFileSystem fs) throws Exception { + Field headerF = NPOIFSFileSystem.class.getDeclaredField("_header"); + headerF.setAccessible(true); + HeaderBlock header = (HeaderBlock)headerF.get(fs); + return header; + } + protected static NPropertyTable getPropertyTable(NPOIFSFileSystem fs) throws Exception { + Field ptF = NPOIFSFileSystem.class.getDeclaredField("_property_table"); + ptF.setAccessible(true); + NPropertyTable table = (NPropertyTable)ptF.get(fs); + return table; + } public static void dump(DirectoryEntry root, File parent) throws IOException { for(Iterator it = root.getEntries(); it.hasNext();){ @@ -100,8 +127,8 @@ public class POIFSDump { } } } - public static void dump(NPOIFSFileSystem fs, int startBlock, File parent) throws IOException { - File file = new File(parent, "properties"); + public static void dump(NPOIFSFileSystem fs, int startBlock, String name, File parent) throws IOException { + File file = new File(parent, name); FileOutputStream out = new FileOutputStream(file); NPOIFSStream stream = new NPOIFSStream(fs, startBlock); From 75af78051745398acc410357ec77f59160f9c66f Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Tue, 30 Jun 2015 23:50:35 +0000 Subject: [PATCH 215/301] More NPOIFS ministream tests git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1688534 13f79535-47bb-0310-9956-ffa450edef68 --- src/testcases/org/apache/poi/POITestCase.java | 15 ++++ .../poifs/filesystem/TestNPOIFSMiniStore.java | 83 ++++++++++++++++++- 2 files changed, 95 insertions(+), 3 deletions(-) diff --git a/src/testcases/org/apache/poi/POITestCase.java b/src/testcases/org/apache/poi/POITestCase.java index 7a1a0274c..e38e46d4f 100644 --- a/src/testcases/org/apache/poi/POITestCase.java +++ b/src/testcases/org/apache/poi/POITestCase.java @@ -34,6 +34,21 @@ public class POITestCase extends TestCase { ); } + public static void assertEquals(T[] expected, T[] actual) + { + assertEquals("Non-matching lengths", expected.length, actual.length); + for (int i=0; i void assertContains(T needle, T[] haystack) { // Check diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java b/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java index f420683c3..44e066a6f 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java @@ -21,15 +21,15 @@ import java.io.ByteArrayInputStream; import java.nio.ByteBuffer; import java.util.Iterator; -import junit.framework.TestCase; - import org.apache.poi.POIDataSamples; +import org.apache.poi.POITestCase; import org.apache.poi.poifs.common.POIFSConstants; +import org.apache.poi.util.IOUtils; /** * Tests for the Mini Store in the NIO POIFS */ -public final class TestNPOIFSMiniStore extends TestCase { +public final class TestNPOIFSMiniStore extends POITestCase { private static final POIDataSamples _inst = POIDataSamples.getPOIFSInstance(); /** @@ -337,6 +337,8 @@ public final class TestNPOIFSMiniStore extends TestCase { public void testCreateMiniStoreFirst() throws Exception { NPOIFSFileSystem fs = new NPOIFSFileSystem(); NPOIFSMiniStore ministore = fs.getMiniStore(); + DocumentInputStream dis; + DocumentEntry entry; // Initially has Properties + BAT but nothing else assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(0)); @@ -376,8 +378,83 @@ public final class TestNPOIFSMiniStore extends TestCase { assertEquals(POIFSConstants.END_OF_CHAIN, ministore.getNextBlock(0)); assertEquals(POIFSConstants.END_OF_CHAIN, ministore.getNextBlock(1)); assertEquals(POIFSConstants.UNUSED_BLOCK, ministore.getNextBlock(2)); + + // Check the data is unchanged and the right length + entry = (DocumentEntry)fs.getRoot().getEntry("mini"); + assertEquals(data.length, entry.getSize()); + byte[] rdata = new byte[data.length]; + dis = new DocumentInputStream(entry); + IOUtils.readFully(dis, rdata); + assertEquals(data, rdata); + dis.close(); + + entry = (DocumentEntry)fs.getRoot().getEntry("mini2"); + assertEquals(data.length, entry.getSize()); + rdata = new byte[data.length]; + dis = new DocumentInputStream(entry); + IOUtils.readFully(dis, rdata); + assertEquals(data, rdata); + dis.close(); // Done fs.close(); } + + public void testMultiBlockStream() throws Exception { + byte[] data1B = new byte[63]; + byte[] data2B = new byte[64+14]; + for (int i=0; i Date: Wed, 1 Jul 2015 00:43:33 +0000 Subject: [PATCH 216/301] To better match OPOIFS, pad to the end of a block with 0xFF/-1 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1688543 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/poifs/filesystem/NPOIFSDocument.java | 10 ++++++++++ .../poi/poifs/filesystem/TestNPOIFSMiniStore.java | 2 ++ 2 files changed, 12 insertions(+) diff --git a/src/java/org/apache/poi/poifs/filesystem/NPOIFSDocument.java b/src/java/org/apache/poi/poifs/filesystem/NPOIFSDocument.java index bdc35cee7..c94e427b9 100644 --- a/src/java/org/apache/poi/poifs/filesystem/NPOIFSDocument.java +++ b/src/java/org/apache/poi/poifs/filesystem/NPOIFSDocument.java @@ -23,6 +23,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.nio.ByteBuffer; +import java.util.Arrays; import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -143,6 +144,15 @@ public final class NPOIFSDocument implements POIFSViewable { os.write(buf, 0, readBytes); } + // Pad to the end of the block with -1s + int usedInBlock = length % _block_size; + if (usedInBlock != 0 && usedInBlock != _block_size) { + int toBlockEnd = _block_size - usedInBlock; + byte[] padding = new byte[toBlockEnd]; + Arrays.fill(padding, (byte)0xFF); + os.write(padding); + } + // Tidy and return the length os.close(); return length; diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java b/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java index 44e066a6f..4f102084d 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java @@ -431,6 +431,7 @@ public final class TestNPOIFSMiniStore extends POITestCase { assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(3)); // Mini assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(4)); + // First 2 Mini blocks will be used assertEquals(2, ministore.getFreeBlock()); // Add one more mini-stream, and check @@ -442,6 +443,7 @@ public final class TestNPOIFSMiniStore extends POITestCase { assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(3)); // Mini assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(4)); + // One more mini-block will be used assertEquals(3, ministore.getFreeBlock()); // Check the contents too From 305d31a9989b3dda1f322b7acf73a268d2687f97 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 2 Jul 2015 22:36:45 +0000 Subject: [PATCH 217/301] Fix OPOIFS generics warnings git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1688920 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/poifs/filesystem/OPOIFSDocument.java | 2 +- .../poifs/filesystem/OPOIFSFileSystem.java | 4 +-- .../poifs/storage/SmallBlockTableWriter.java | 20 +++++------- .../poi/poifs/storage/SmallDocumentBlock.java | 15 +++++---- .../poifs/storage/SmallDocumentBlockList.java | 11 ++----- .../poifs/storage/TestSmallDocumentBlock.java | 31 +++++++++---------- 6 files changed, 36 insertions(+), 47 deletions(-) diff --git a/src/java/org/apache/poi/poifs/filesystem/OPOIFSDocument.java b/src/java/org/apache/poi/poifs/filesystem/OPOIFSDocument.java index 3862b2987..05b21baea 100644 --- a/src/java/org/apache/poi/poifs/filesystem/OPOIFSDocument.java +++ b/src/java/org/apache/poi/poifs/filesystem/OPOIFSDocument.java @@ -209,7 +209,7 @@ public final class OPOIFSDocument implements BATManaged, BlockWritable, POIFSVie /** * @return array of SmallDocumentBlocks; may be empty, cannot be null */ - public BlockWritable[] getSmallBlocks() { + public SmallDocumentBlock[] getSmallBlocks() { return _small_store.getBlocks(); } diff --git a/src/java/org/apache/poi/poifs/filesystem/OPOIFSFileSystem.java b/src/java/org/apache/poi/poifs/filesystem/OPOIFSFileSystem.java index dcd1808a9..19abc48ab 100644 --- a/src/java/org/apache/poi/poifs/filesystem/OPOIFSFileSystem.java +++ b/src/java/org/apache/poi/poifs/filesystem/OPOIFSFileSystem.java @@ -73,7 +73,7 @@ public class OPOIFSFileSystem } private PropertyTable _property_table; - private List _documents; + private List _documents; private DirectoryNode _root; /** @@ -90,7 +90,7 @@ public class OPOIFSFileSystem { HeaderBlock header_block = new HeaderBlock(bigBlockSize); _property_table = new PropertyTable(header_block); - _documents = new ArrayList(); + _documents = new ArrayList(); _root = null; } diff --git a/src/java/org/apache/poi/poifs/storage/SmallBlockTableWriter.java b/src/java/org/apache/poi/poifs/storage/SmallBlockTableWriter.java index 783518f15..9c98bb459 100644 --- a/src/java/org/apache/poi/poifs/storage/SmallBlockTableWriter.java +++ b/src/java/org/apache/poi/poifs/storage/SmallBlockTableWriter.java @@ -40,7 +40,7 @@ public class SmallBlockTableWriter implements BlockWritable, BATManaged { private BlockAllocationTableWriter _sbat; - private List _small_blocks; + private List _small_blocks; private int _big_block_count; private RootProperty _root; @@ -50,20 +50,17 @@ public class SmallBlockTableWriter * @param documents a List of POIFSDocument instances * @param root the Filesystem's root property */ - public SmallBlockTableWriter(final POIFSBigBlockSize bigBlockSize, - final List documents, + final List documents, final RootProperty root) { _sbat = new BlockAllocationTableWriter(bigBlockSize); - _small_blocks = new ArrayList(); + _small_blocks = new ArrayList(); _root = root; - Iterator iter = documents.iterator(); - while (iter.hasNext()) + for (OPOIFSDocument doc : documents) { - OPOIFSDocument doc = ( OPOIFSDocument ) iter.next(); - BlockWritable[] blocks = doc.getSmallBlocks(); + SmallDocumentBlock[] blocks = doc.getSmallBlocks(); if (blocks.length != 0) { @@ -143,11 +140,8 @@ public class SmallBlockTableWriter public void writeBlocks(final OutputStream stream) throws IOException { - Iterator iter = _small_blocks.iterator(); - - while (iter.hasNext()) - { - (( BlockWritable ) iter.next()).writeBlocks(stream); + for (BlockWritable block : _small_blocks) { + block.writeBlocks(stream); } } diff --git a/src/java/org/apache/poi/poifs/storage/SmallDocumentBlock.java b/src/java/org/apache/poi/poifs/storage/SmallDocumentBlock.java index 8c726caa0..d09bf9ecf 100644 --- a/src/java/org/apache/poi/poifs/storage/SmallDocumentBlock.java +++ b/src/java/org/apache/poi/poifs/storage/SmallDocumentBlock.java @@ -29,8 +29,6 @@ import org.apache.poi.poifs.common.POIFSBigBlockSize; /** * Storage for documents that are too small to use regular * DocumentBlocks for their data - * - * @author Marc Johnson (mjohnson at apache dot org) */ public final class SmallDocumentBlock implements BlockWritable, ListManagedBlock { private static final int BLOCK_SHIFT = 6; @@ -49,7 +47,7 @@ public final class SmallDocumentBlock implements BlockWritable, ListManagedBlock System.arraycopy(data, index * _block_size, _data, 0, _block_size); } - private SmallDocumentBlock(final POIFSBigBlockSize bigBlockSize) + protected SmallDocumentBlock(final POIFSBigBlockSize bigBlockSize) { _bigBlockSize = bigBlockSize; _blocks_per_big_block = getBlocksPerBigBlock(bigBlockSize); @@ -110,7 +108,7 @@ public final class SmallDocumentBlock implements BlockWritable, ListManagedBlock * * @return number of big blocks the list encompasses */ - public static int fill(POIFSBigBlockSize bigBlockSize, List blocks) + public static int fill(POIFSBigBlockSize bigBlockSize, List blocks) { int _blocks_per_big_block = getBlocksPerBigBlock(bigBlockSize); @@ -168,12 +166,12 @@ public final class SmallDocumentBlock implements BlockWritable, ListManagedBlock * * @return a List of SmallDocumentBlock's extracted from the input */ - public static List extract(POIFSBigBlockSize bigBlockSize, ListManagedBlock [] blocks) + public static List extract(POIFSBigBlockSize bigBlockSize, ListManagedBlock [] blocks) throws IOException { int _blocks_per_big_block = getBlocksPerBigBlock(bigBlockSize); - List sdbs = new ArrayList(); + List sdbs = new ArrayList(); for (int j = 0; j < blocks.length; j++) { @@ -204,6 +202,11 @@ public final class SmallDocumentBlock implements BlockWritable, ListManagedBlock { return size * _block_size; } + + protected int getSmallBlocksPerBigBlock() + { + return _blocks_per_big_block; + } private static SmallDocumentBlock makeEmptySmallDocumentBlock(POIFSBigBlockSize bigBlockSize) { diff --git a/src/java/org/apache/poi/poifs/storage/SmallDocumentBlockList.java b/src/java/org/apache/poi/poifs/storage/SmallDocumentBlockList.java index a510f8e8f..cc6bb7c17 100644 --- a/src/java/org/apache/poi/poifs/storage/SmallDocumentBlockList.java +++ b/src/java/org/apache/poi/poifs/storage/SmallDocumentBlockList.java @@ -23,24 +23,19 @@ import java.util.*; /** * A list of SmallDocumentBlocks instances, and methods to manage the list - * - * @author Marc Johnson (mjohnson at apache dot org) */ - public class SmallDocumentBlockList extends BlockListImpl { - /** * Constructor SmallDocumentBlockList * * @param blocks a list of SmallDocumentBlock instances */ - public SmallDocumentBlockList(final List blocks) + public SmallDocumentBlockList(final List blocks) { - setBlocks(( SmallDocumentBlock [] ) blocks - .toArray(new SmallDocumentBlock[ blocks.size() ])); + setBlocks(blocks.toArray(new SmallDocumentBlock[blocks.size()])); } -} // end public class SmallDocumentBlockList +} diff --git a/src/testcases/org/apache/poi/poifs/storage/TestSmallDocumentBlock.java b/src/testcases/org/apache/poi/poifs/storage/TestSmallDocumentBlock.java index 24278e207..31c4546a4 100644 --- a/src/testcases/org/apache/poi/poifs/storage/TestSmallDocumentBlock.java +++ b/src/testcases/org/apache/poi/poifs/storage/TestSmallDocumentBlock.java @@ -21,13 +21,12 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.ArrayList; -import java.util.Iterator; import java.util.List; -import org.apache.poi.poifs.common.POIFSConstants; - import junit.framework.TestCase; +import org.apache.poi.poifs.common.POIFSConstants; + /** * Class to test SmallDocumentBlock functionality * @@ -53,7 +52,7 @@ public final class TestSmallDocumentBlock extends TestCase { throws IOException { ByteArrayInputStream stream = new ByteArrayInputStream(_testdata); - List documents = new ArrayList(); + List documents = new ArrayList(); while (true) { @@ -66,9 +65,8 @@ public final class TestSmallDocumentBlock extends TestCase { } } SmallDocumentBlock[] results = - SmallDocumentBlock - .convert(POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS,( BlockWritable [] ) documents - .toArray(new DocumentBlock[ 0 ]), _testdata_size); + SmallDocumentBlock.convert(POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS, + documents.toArray(new DocumentBlock[ 0 ]), _testdata_size); assertEquals("checking correct result size: ", (_testdata_size + 63) / 64, results.length); @@ -142,20 +140,20 @@ public final class TestSmallDocumentBlock extends TestCase { { for (int j = 0; j <= 8; j++) { - List foo = new ArrayList(); + List blocks = new ArrayList(); for (int k = 0; k < j; k++) { - foo.add(new Object()); + blocks.add(new SmallDocumentBlock(POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS)); } - int result = SmallDocumentBlock.fill(POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS,foo); + int result = SmallDocumentBlock.fill(POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS, blocks); assertEquals("correct big block count: ", (j + 7) / 8, result); assertEquals("correct small block count: ", 8 * result, - foo.size()); - for (int m = j; m < foo.size(); m++) + blocks.size()); + for (int m = j; m < blocks.size(); m++) { - BlockWritable block = ( BlockWritable ) foo.get(m); + BlockWritable block = blocks.get(m); ByteArrayOutputStream stream = new ByteArrayOutputStream(); block.writeBlocks(stream); @@ -208,13 +206,12 @@ public final class TestSmallDocumentBlock extends TestCase { { new RawDataBlock(new ByteArrayInputStream(data)) }; - List output = SmallDocumentBlock.extract(POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS,blocks); - Iterator iter = output.iterator(); + List output = SmallDocumentBlock.extract(POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS,blocks); offset = 0; - while (iter.hasNext()) + for (SmallDocumentBlock block : output) { - byte[] out_data = (( SmallDocumentBlock ) iter.next()).getData(); + byte[] out_data = block.getData(); assertEquals("testing block at offset " + offset, 64, out_data.length); From 8942828a8f0b830044cc8d781abc78eadf8efc8b Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Fri, 3 Jul 2015 10:32:53 +0000 Subject: [PATCH 218/301] Bug 57678: Apply patch to better handle years in mail-messages between 1980 and 1999. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1688993 13f79535-47bb-0310-9956-ffa450edef68 --- .../datatypes/MessageSubmissionChunk.java | 6 +- .../org/apache/poi/hsmf/AllHSMFTests.java | 5 +- .../TestMessageSubmissionChunkY2KRead.java | 67 ++++++++++++++++++ test-data/hsmf/message_1979.msg | Bin 0 -> 29696 bytes test-data/hsmf/message_1980.msg | Bin 0 -> 29696 bytes test-data/hsmf/message_1981.msg | Bin 0 -> 29696 bytes 6 files changed, 74 insertions(+), 4 deletions(-) create mode 100644 src/scratchpad/testcases/org/apache/poi/hsmf/TestMessageSubmissionChunkY2KRead.java create mode 100644 test-data/hsmf/message_1979.msg create mode 100644 test-data/hsmf/message_1980.msg create mode 100644 test-data/hsmf/message_1981.msg diff --git a/src/scratchpad/src/org/apache/poi/hsmf/datatypes/MessageSubmissionChunk.java b/src/scratchpad/src/org/apache/poi/hsmf/datatypes/MessageSubmissionChunk.java index c8867a6c7..985e58fce 100644 --- a/src/scratchpad/src/org/apache/poi/hsmf/datatypes/MessageSubmissionChunk.java +++ b/src/scratchpad/src/org/apache/poi/hsmf/datatypes/MessageSubmissionChunk.java @@ -77,7 +77,11 @@ public class MessageSubmissionChunk extends Chunk { Matcher m = datePatern.matcher(dateS); if(m.matches()) { date = Calendar.getInstance(); - date.set(Calendar.YEAR, Integer.parseInt(m.group(1)) + 2000); + + // work around issues with dates like 1989, which appear as "89" here + int year = Integer.parseInt(m.group(1)); + date.set(Calendar.YEAR, year + (year > 80 ? 1900 : 2000)); + date.set(Calendar.MONTH, Integer.parseInt(m.group(2)) - 1); // Java is 0 based date.set(Calendar.DATE, Integer.parseInt(m.group(3))); date.set(Calendar.HOUR_OF_DAY, Integer.parseInt(m.group(4))); diff --git a/src/scratchpad/testcases/org/apache/poi/hsmf/AllHSMFTests.java b/src/scratchpad/testcases/org/apache/poi/hsmf/AllHSMFTests.java index 710d991d9..fe8cb1124 100644 --- a/src/scratchpad/testcases/org/apache/poi/hsmf/AllHSMFTests.java +++ b/src/scratchpad/testcases/org/apache/poi/hsmf/AllHSMFTests.java @@ -27,19 +27,18 @@ import org.apache.poi.hsmf.parsers.*; public final class AllHSMFTests { public static Test suite() { TestSuite suite = new TestSuite(AllHSMFTests.class.getName()); + suite.addTestSuite(TestBasics.class); suite.addTestSuite(TestBlankFileRead.class); suite.addTestSuite(TestSimpleFileRead.class); suite.addTestSuite(TestOutlook30FileRead.class); suite.addTestSuite(TestFileWithAttachmentsRead.class); - suite.addTestSuite(TestChunkData.class); suite.addTestSuite(TestTypes.class); suite.addTestSuite(TestSorters.class); - suite.addTestSuite(TestOutlookTextExtractor.class); - suite.addTestSuite(TestPOIFSChunkParser.class); + suite.addTestSuite(TestMessageSubmissionChunkY2KRead.class); return suite; } diff --git a/src/scratchpad/testcases/org/apache/poi/hsmf/TestMessageSubmissionChunkY2KRead.java b/src/scratchpad/testcases/org/apache/poi/hsmf/TestMessageSubmissionChunkY2KRead.java new file mode 100644 index 000000000..c10ba0b65 --- /dev/null +++ b/src/scratchpad/testcases/org/apache/poi/hsmf/TestMessageSubmissionChunkY2KRead.java @@ -0,0 +1,67 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.hsmf; + +import java.io.IOException; + +import org.apache.poi.hsmf.MAPIMessage; +import org.apache.poi.hsmf.exceptions.ChunkNotFoundException; +import org.apache.poi.POIDataSamples; + +import java.util.Calendar; + +import junit.framework.TestCase; + +public final class TestMessageSubmissionChunkY2KRead extends TestCase { + + private MAPIMessage mapiMessage1979; + private MAPIMessage mapiMessage1980; + private MAPIMessage mapiMessage1981; + + /** + * Initialise this test, load up the three test messages. + * @throws Exception + */ + public TestMessageSubmissionChunkY2KRead() throws IOException { + POIDataSamples samples = POIDataSamples.getHSMFInstance(); + this.mapiMessage1979 = new MAPIMessage(samples.openResourceAsStream("message_1979.msg")); + this.mapiMessage1980 = new MAPIMessage(samples.openResourceAsStream("message_1980.msg")); + this.mapiMessage1981 = new MAPIMessage(samples.openResourceAsStream("message_1981.msg")); + } + + // 1979 is one year before our pivot year (so this is an expected "failure") + public void testReadMessageDate1979() throws ChunkNotFoundException { + final Calendar date = mapiMessage1979.getMessageDate(); + final int year = date.get(Calendar.YEAR); + TestCase.assertEquals(2079, year); + } + + // 1980 is our pivot year (so this is an expected "failure") + public void testReadMessageDate1980() throws ChunkNotFoundException { + final Calendar date = mapiMessage1980.getMessageDate(); + final int year = date.get(Calendar.YEAR); + TestCase.assertEquals(2080, year); + } + + // 1981 is one year after our pivot year (so this starts working) + public void testReadMessageDate1981() throws ChunkNotFoundException { + final Calendar date = mapiMessage1981.getMessageDate(); + final int year = date.get(Calendar.YEAR); + TestCase.assertEquals(1981, year); + } +} diff --git a/test-data/hsmf/message_1979.msg b/test-data/hsmf/message_1979.msg new file mode 100644 index 0000000000000000000000000000000000000000..10083c8e4966ebc4f2515bca2604f5280811b577 GIT binary patch literal 29696 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 literal 0 HcmV?d00001 diff --git a/test-data/hsmf/message_1980.msg b/test-data/hsmf/message_1980.msg new file mode 100644 index 0000000000000000000000000000000000000000..bb295404d048b6c027d406747fc397ae0b829eca GIT binary patch literal 29696 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 Pxq_+w$`WD1@A>}#z(7ju literal 0 HcmV?d00001 diff --git a/test-data/hsmf/message_1981.msg b/test-data/hsmf/message_1981.msg new file mode 100644 index 0000000000000000000000000000000000000000..6833d543472e52382bfcec138e02e2700b6c7694 GIT binary patch literal 29696 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 Date: Fri, 3 Jul 2015 11:04:52 +0000 Subject: [PATCH 219/301] Bug 57744: Fix parsing the email submission data when id contains a hyphen git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1688998 13f79535-47bb-0310-9956-ffa450edef68 --- .../datatypes/MessageSubmissionChunk.java | 17 +++-- .../org/apache/poi/hsmf/AllHSMFTests.java | 1 + .../poi/hsmf/TestMessageSubmissionChunk.java | 58 ++++++++++++++++++ .../message_extra_hyphen_submission_chunk.msg | Bin 0 -> 26112 bytes .../hsmf/message_normal_submission_chunk.msg | Bin 0 -> 31744 bytes 5 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 src/scratchpad/testcases/org/apache/poi/hsmf/TestMessageSubmissionChunk.java create mode 100644 test-data/hsmf/message_extra_hyphen_submission_chunk.msg create mode 100644 test-data/hsmf/message_normal_submission_chunk.msg diff --git a/src/scratchpad/src/org/apache/poi/hsmf/datatypes/MessageSubmissionChunk.java b/src/scratchpad/src/org/apache/poi/hsmf/datatypes/MessageSubmissionChunk.java index 985e58fce..dd9ab9a5f 100644 --- a/src/scratchpad/src/org/apache/poi/hsmf/datatypes/MessageSubmissionChunk.java +++ b/src/scratchpad/src/org/apache/poi/hsmf/datatypes/MessageSubmissionChunk.java @@ -69,10 +69,19 @@ public class MessageSubmissionChunk extends Chunk { for(String part : parts) { if(part.startsWith("l=")) { // Format of this bit appears to be l=-

    1FEDNXeO(u#|a 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%0Aa1~` zb|$*G*y_0bv>o1{=^H%tT@R&D5I1j4b#1{@bf2gFb`3anBpy+Khi8F@0WrNSZS?&Y zOcB*2kn``KWL0+He?BQ7%r~%szxg{Y24Q6euJI|(8?B)jboYG;13at&cjY?zoRp;3 zq-xpW`?d*J#aSuypR`S>xvFl4uK%mU!-g6_M>{=Lc4|qx*;BH|@s;?__Wlgkq00VY z#Po9?P|%@Z<@uFmwD+vVg%o6Fca%?!Ic#WeW>|#^b^@H^7KwYZDJHgcO+~8t;}Zo(BkgEcmEVWW!Sy&UXc8A&E0osW&{80R)Hz) zC4KH?2AUp7DZ1ZrA@t;F|I1nTun>0JvJ5p2XAP-TxKrb^O!+h`fJVpP`j)T*i=Y{k zNBM3w!{J)=_xR3U^}~3EXpBu&l~r_Pbn$u7jjr{S5er-@p>IxYoEf?u+y zKLYIt8N38U#HfHeRUNC{N9CYNQ#3Qjz*w>LV~3F3+8OxLt{syDZ1}K!m~Xtng%|;J z7QgTXJZuJcTMHOr=XRVe8`JHz%4@iHDE3oare&@FGn1J;tbiW9zS;Z@f4EeyR-R;V z@5M!lVS^?ZeOa%+MCRf>zAa=49O)r0D!0$9NoPZoHT22OKKLhTVB_{|A)U&ko6d1u zhLuNvUU2xN`1u|2g{DVLG0nJO|EHCNN6p7YB?$qyYZtmHUb+8qObne{PYE^3vZ)>Mi_D%P__UpWYCZjdp`%_6j z7mM1}qS=I}NnXDy(euU7sXLv1*Fto!v+s?<9Ae}9iql2}HrXMBpvUc5o>x4WW&$eZ zHkyj*mt?HTLpg+6-h5_Siv}-wuJo27yFMou<4a zL(^`PS<(g_gF?TKL-`^2l2RKDCoxgC&Rf`f*0y3!kL*^nmi0HxWE-;uWH@u@D{o)> z(Y$UoK%TU`sb{}G!p_X@-oo1jlyMvo%Ml5dPLTX7YMv%z(8nC;4hPfSo&r~KF4y`}4Pr|LH| z!lTiva~#S~?G|*VoRYWAr__6Aqcp|gbF<7_7pOA$8cr=Fw|l@%17KMD(-R#kU)YjF zM#jXB-v33&pnBxQ8n*GLQ*qi%@)KBGMQ10i@zUD?R#)VhU~xvbs@P;(&o7&PnJjHg zCxaO*u!|~OHkTdwA2sAWl8W$jw?57R$WjKovh@XDHyCZ8Woo-QRN zo%_fB$=qHM^Vq0accP8Hb2kM)znYaEev#e%veN2l8OYIp1tOnDD@>SC<*j>4KF|3m z+nExcJ(HFP$#)Z>nYG{fPFM_2NFt_@Zuw**W75_RMM$>&MT@40RIn}0cS<#?oY#3_qs^;rS}D+ytBwOfl;eymiTCb6j;s=Dl&^Na0(jxzS>XZ zk|W%BDoOC_epJ%6ZZc)}1|qs?f-(Wv%F)7f*_;orzO;=n;CB8@r(bKU+WUJWU7u>8&}C zmF^~VBZxjM5kAb=8c`(tm}w-RrPkzJW?T5dicVnC@R3ZGE`TBF-ng31xXMv%Wx^eI z)RG-0lD1jUQXjLV21{RIw{g^zQTj2?bd3T@ zpSzR~w6Fd&U6YjP=HQG=lsqmdmpDNE#YY{h;{KRC#|kUeI3YK3tXt-db3av)OKex! zNEe=sY_Y}ObaBqc@`gRiX{;Q>{41hZT+NfcHrf;0-vbxROar~KDa$#x3a$eZJz=wA zRVIp{Uqt&mqQLV1s5QP}<1It$%Iyr-wC*0<28VEe-)hrs_?dq7`Rk%C&8m8~wvYF$ z=X!z{K3}Q}uUL9865mSsk+>{?eWo=GrM>hG4(f2k)MxLvppFz0_nHloeo0Q4?W_%c zBP_73Iav4h2qFVmt>4`Y{5W|lR~&rA89Z)m=}k0FKxo;(Sy|s`46s7m8YM{eh&@dP zT{Rz@9?tJ)y_l=28mw#`XzW6s`nAJ`Og_qmkbmFC()Igo<0T~R^u8m0apeV^mYOl} z3Q;sf%&D|a%zUuz1ItCWbEa>W^d=T4TD5s$C%Dw$QrPve8n$eWUP3dm`Kze`Kicl1 z6FYS`ftG@FFEQ%ox`IT({ATDk%X+*MZs3-=esX7Le+{0YhflS+K=hPVRmC#YJe|Nk6_phzk|EI3qDn<2kplJCmzu(&dD7)9%+7; zSiVVFmss9-N$auD1|C;HPj4&d-hAx=wW@FNw`+zU5X+E8I4I(YQiFU-AGFAdfj1YR zpL|~Wiy+25d#5SpSD;WR(_!yCcLWao>~u$-9IX(`OE!`}0@ZsU06atl)q+)PHc|f~ zcm~(z0Hg??SxmLv_LjPznbJr-OdO2TsdoL}FK0aVwT#nOhozIR1BUH(5i!1ON+&sL zNKaGD3$nskMo$+_*_N=Kb{VB(;}|!jz~kISphYFAt#7>oB%JFe!L^BT2rt`~K*;5-=jJ)PYpC|LaE+f#bch;As z5*RRxYwG%{Mb{wpPyyB$u7nJt)y_ucOYtLG?xkBVYNnM*J9DXKK7f>g_= zCKnS~*Uzr5+B83oioZToff-&W%-0S_g**g)e#b}cRf{#3^HZ}09JpLIzvr~A>vecb zJ*pO^R!QW)ghh241HX|9iAEWQ>D$r3I9Yg*?3Kn?~)9oQX9FIVSzu_ zDJP?zrAYlrbw1O=ta6lvtcXFy&Et_&0jo>A*iK!#5w{XTD##$%4wOV)vklTMqU0Q2mv>dUzi}XCg4JX14y+a|F8)|6wH7> z6g}sOi#!4?>L)g1k0~O9j^LeDqsR4W%)z}LF?26JY1tWF8Gr7`C7u`)8LBk<}&Z860U}o*?kyUn`Ma|k(^4?zmbC% zxc@L15X%Jjr6Ry+Ik@i_qFEwKfyCjv|70-C0&V}%^M3+zko$kg!T%QIV9!p)e;9#L zWc~P9lZWnBdPjL_Zy*X>%Oth9ygt;6%eW&!Ud&fr6Rc8{A%gGZTrzd?32Lp4Okd&6 zKnfR0e$#=q0!p_0-9apUN#wiI>t3^+qtri_Bg9kr;ne=4cL#?pGN78jX{<536<2w%FsK@FyqOAjK^%$+k z+}L*OpK~d>0|cc}XYT3VvZUgC+c~4*Y_`rH5lEx_xiY5>51x=qxt{m#@+xYC#N_z| zL#5_MIY$yfzHqlf<`gYf^g4{3)VSA#e>@-5FbgB-?Ea`dPjSZfw|%mvZri!TV`OP} z+CQ)eT3Z#(A`&U8Zpca%{E)iDXsyj`_lcuUF_E26q3K?!N?_XUNAmFWyX~!e zud4uNT>bRy0Huz<`S`vLbY4}@GxWYEk-LcSr?WO@fGNfGuvYKZ9kkVErZ5;%&(+e> z)?)ojdhSc3b<&@%B3i|ZxuHdUTSNS;_PJ$BfD6m13PR0vau>w~t_rg?nUAuqTV#Jjr2hZd zJFBQTyKYNE2*DkKOM(~f?!n!qaEHR(Ex}y_g}b|ZaCZytPC@XXU)SHKug>4M-D8|H z&SmYfFKdr?t-0oUW^O{KIe87JARf;O?PjX>72%y=*pDmiGWliPakpB`2XX!6-cS)= zHNLtL>wOx{t#S_qKXFMRU6awsY9cuP`VCEvtMb$E>Z7?iCYpgT+f?4$vvVNryQS-{ zevc9AK@aFPjz-4f$DYh4#)|~51Qpg~yldwe0!wQRLpv~2NYtA|_-?y7T=P^vpxV^! zWjNj?)j=B}@3FRY>~9obEBEIj|18LMAlHfCyG4>bqw}EHZJ+RVZuzuvaH|0X;)9o)6INM!Z9zjo zfDC0@wLP(1u6}#w8#}Kd7pkF_;5*mTJID7we{JNkh%Rwgpx$usO7l$pz_p@YVl2Jd zQEqjOTXcb*_Xlo_g)BZ87o-tE7y8m~jWSU`llewH{1T^qUyg4}OGDi=AP+;;eN>=L zlH5gY9KIBpbE=p@Y$V!hZ(T=>Dz`%-ufZqJ27iyOk^G36O{(f}pQqZK75=M>O+h{z zX56~rdGiCG+~KM*^jrY}&J+2H^1<)1MTzl#;2jr!%OHO=U&r9ZX0Pzaz&^q4`xel< zer@kN>{?B*xu#${G2qvw))_1>d03!aiZ!>X_zsi{<~5`LvVz?(K{zfz|G-GWW!IGD4E$Q-C?Cyw^*2TD&J$|3X=+|5XwE*8GM!lwE+vGHLA-*1 zftHWbn!Lp(L4#n#Yh z=x9u~p=t(RcC8$BD^0ct{w|}cG59k%ysf@GD5rHnnGRV<85N3OZu8E_*y!Ejqdhn5 zc-CwUZW}cXAzZru`8mb&Mi00scK_LPE;dLdJXB*sO!^JtY#adqJ&|14v&J3_x zRx4JA7tcDQwjOKkzI*KS>-d_dCA-!!H!5k^q;Xk&2tF$n(zJ9)^5bpKFiwJXQh%flB)$4TfoMp9veGx>C=x_ z_&ZMCuUHf>XXD*nx-(AWmMsxfrUI*j1M2j+#5yjzh{5>)KdXBu^pvWf63BNU}MU;0GtP}%ej%OMqbgt zrk0p&NwD}jl{$8iu!`6Hxh7-NxwXPV*Tv*qrIf;#Hq)-1>#Tab8A%@&A`yOF1N<1A zQL@!advBi14tgp{jhhv;>20|ggpmIJTyAW(sI*IZhPTleMZLwdHdCCAlPfnPe~dSJ z!V+dO$+4Tid>hIV3x{vE^mpmW=m&!&1yW_9J*IhC2QN#Ky3<+6~M1qjE^EQkEPO#sw^ip8niiW|5u6OkrNuWXDFka$@mUqn-t15N zCAJ30SN>J{1@Cy)FgocjWJ+N-()51%m z$64FPvzE+ej{O7f&3@uP9FQaxp@(-X<2)6I%@;ebY&DdaIT@LLgEjpHMG`eLXM0ld zM8lOcd>IjHs||$B)vk{C0qEwQb9}S*=Icc=VNFMFwjOHNJ8f-QG5EZ)t*&3p8s+1d zda!Zm(efc)X_1~9%>6R4z38(tKR+T>s2we*E&EhE`Zr5TlOHR)q?nHCAoWgZ?W}6K z0^)fgKB4fninT1=N89FzMm_T?z8JSLehX?U`q9d7dPj=MYgDYGSyn&}cmwoDtqBlJ zooRPHnb59v#Io#+_?{0TDcme*07kkK`#R;Ja$k7zRwkdY(@!c*TzKQ5r|;gkMU%jz4(1lS zKY;z0t0|HgbPtsxB1&(0t613z8QEj@vNC;7OMSE3yXx5{X|+-|=!ck6FQ2JuYMy&0 zpe$VF#V-yK8iAjk_0}wkC)GcvD#Rg-BZysrPwuimAM1B6LKyeas1s2Hak$C(M#clt z@0YE6u;yyNm@#c$EPV5ru#-+3^+zOm=c~%1o3AQ{x9qJZ?cI4IO*vnw{q9uD?A3h- zQe<)idv-5q%Wlh(C^+%UQpIVz?g!5rtAmFxWwpGjEt9C#NR!w_pZ7ZBF>KP()^chw zLpXJqMU{Cz7NmYe%>thpKCdmWURtJmW1-e-^1_`PY_GAo;o1x@doDq{Q*RcAN@Y^M zZ{Do=&}+PWv`WWMn{Fj39*!o?O}%0tP+N~P!1B6EU&g)c}08VAEf&L};rm6QCZP;$WxXVXZTzidP1 z3l912-xVh4mYUJuo;5QIROkXh7#$(An8hdzKEdfI*H)&#FeYX1+-d@uV$-n3`P(n3 zIN2jWXxOY9aBuW{BYmQ4h=C?WvS_|=)BLWT^ope}^QR`UY&&|wUYNlju<;H_x2Pcq z#G=hETJzh843PX!z-o4Ebs6S%;AAg^Vxi?%tBgikq^V;B~(d} zIb?KD{w@qqSZR=Va!0YhX>#6o7V3`|Z!WFfYAMCrjdEfn zCtn8(wUSs9@I$=(MUT8=pUwOcekfNva8UlZv(q3icC7Equt!eT^{~&afni(071ThG zq?@*9#IBzd@a-UeaIb5j->12|rq_WBu~iC)eBz{$7!;6tdiXVb1oJ0iR2uq3^00iI zi+=?zfW4zIK4*cJE;>^s7qs0(0yZ0GO=+mxBNe9+kF(CpQAC$mQsu6JZ_U6zwH> z*FCekx?}5SjoMo&NvT}u7lB1ptA!)&kw5oigT76&sAf!}Y%5(*%fgKMLe`2S8u*ZE z)#DIhoXQXR76aKUj2!LEQ_X;}`s3U_R*lk**SlqFO#rPjjbvDA>)dhRiO6t|Lo*<% zGUltlAyGHE8R24f(`($gyz%$r&vSWHyTdZHwdXpYXV;g3-4>Z%(JVZR*p z-}5_>E)1R)E_~9O`O(aKAOFd~dSxDxc=cqm*D&mfw|a9ITGgsf zH_oEx=#1cNg4fL?eWd=JJK`UR@4F)-ARvR8lZ;W3D5+qv5%rAu26$YuP{u zn>)>h=1_HD+u6DM;Lb;A{q#t=1FToL`CaOgq3+sSHb0^2q^~7=;OMRz`{(DMDiSv6 z6g!=ek0kdSvZJq+xM1)0^pY8_@n_2(NB&VmGc`O)DzKKPcJC{$zmjY&V@KAh98<|< z6~vK6O1@$YXPYmY*oVZED`z-s>n_uGue*y0J}e)Z%~MrN&`;6E6g1tGnw34C9G~S+ zS57kwEp)Pq%l1i;&mY6*bLa|+?etr5nt9y{qA=6<*Rmz?zOgNmrKpO*Df>A3(B+lI zaPH2|Ny=6*C_awNN6}T~K#QdR5Cg@b0v|klF(uIfAuO`=leTM;9UC{)Q9<^95d%L% z&;IS^e+4lx_kYB||1M(SeJ|nw%3pbDGa_uef@ACVlPY-@0-=$Zby*ODiMf>*wn{IX z1^G|Cg+D`Udaoi24g|0DrzZz*pSy-*nr z@|CBpYa-!CzGa_bp23Q!$h#qarEzGC^8+FSr!4HlH|J`aU9=%1v~Z^}YR`);pyDYl z#ZM`P0;SAG=g%8={-z9Qo&)?pxLtuVwK&Xo08!o<+Gf9FXX~#SVM99)wf0?ecT8j} zdLD~J#5N`pOvUZ6g{LtXuCM2l?$tum)jeqZ@;bE59Fj=(Q*{_!{v0uL{PT)55d(*A zmGpA#9zX+NfyZq?PN^`{0y1kaj}m}36z>T|YcF=S8dfnc>(h*$Y{6H7BhskU^w*ymu$ngMy^uT?1EXTm%5tk?}-8Kt|)R`Q0m5rs z9_^jfriEs2e>|iA*Xd_-OH>z+fk~d5j#ZWDU zIzO=`&(PK$>#T)`K{%Pnl{c%2L6x%EJ1LS$haIt5M}^n1%cUTHcX#dvyZty;yK3V= zu+~+VkNZ&taklgz(Q-upp}hl5z18gpE1P3#v8!L@nIT;o?(bbw*6M>?MDu0sddm|H zKK53HP^rrY{OtJyUt<=pv^`5--iS>*zpy_G3tW~RmXs@ZP=;p^oiUNb*{=yHaKIDK)5nplsa zG$YsB0bGdA-yeKR zIN?yk^Fj9b9&erN?K#h^6enlBgM7StRo_7AlD3ii4B=yotLnY=)+7ICd-YU_M7?F- z^Wx42h}o2KsQYLam-URrvHV+}LrKF1pLz`3`NDmT>rg9EaqQupwwCi6nzVWJCkf2T z_4vR;!+S&7YrQqX=1eW-sx2i#*h429K}P#_5Pwznljc=G_rlfTnYVtz*n%UfOVcgx z`l#D)@txyteJpaJ_{lM%7|(MRf?^(6ZwuPi`|{^5v12Zv)xcR8HURMyl5k+iI=R5Lcg>|+^Cl&R3; zug>_OyX-2=Os)YR-=)X6<1tO5LEGI(M$rSa()$XsPly5JHq^oN4_^|`_{s~CrHxXV z97McxKD3(L??)|4wwbnRN!gp|;)U%7kCK8cblAhx5QTNei3P5&K-iDLq8U zKtRRL)*KeVCh2Fkpei;|{L1M78tY{cvhD7JK@w)^>mB)vTZdDTk_Wj6Q^P?L9eW8b?UZp!9YQk^rU1%jho=!!39q}(r+E~ne$7P?Y>sRB_H*SP*D7^q4a z{v-@L_pmQwu5VT9v!t~M-JRMHOM)f1^m@FjG74{i-4UX6HAYdLDW$1VMC(e%`COw? ze}9l8@ZKA1{dMcj%-3@3ckt|St#V*BmVsga%hga57VOyOo2y1Gwh;SL4b>90rA|hw zr_+WR*THk_;o)iGL3i5zk%)g|ye-V#oBSSnbSZW;rT(bEH{RFtoS%CKwj-7qssF&( zLi-i(A43Bsv6|^w*nA_ligg0D*j~>QgG6=-^2HysTuJi#0D;V@!@sUmHujwy3b`a0 zy(w`S>UbgQ&fvV11VP@BVxut49ti>wo>FI>xz1xiDeX$JwT*LHcO+OOog~LA59J0J zvB-=ZW4>%Y4;hyR;?FlNa0qk6!0;na-AH`+ogbXaU=O884&k1+VPuaK;|4uIL;rY< z!k=Z=bo`U^uEzFiB$=wrW#6J%8AeUfVfW$g-vFfp#Vk8av^KCkQ+>kiTut@13dNEa zG#UZo*Tei+dJ$o|`<=3aQ#4wVVnJhLRCnar-X5)1+&_KhQ20LD$U!{&Ch8T(>d!wosur->5Kqs1iZHuP(_jn>Mq_z^po zHp(MsjHlWJs?7+pgEmRk8s&s>B6&?ImEE>ck_&`YIO~2&6~`_C^+2m8pAa3m zsD)dI&LJBtG%0uU34st-Z8Wn5+xccrl&ts9dhQ1sk^9TQJ4yqjIfy|dje_g&Wk!wm z?&h!X-G^LSYe+`@9Zg#&N0nFUz*=jhQfDCiQ0M6E0BWcTJmD~4y^gG{13oDs(8u}g zU@`5PtGY2PX6)B6&mU0CpTI%hTDNTEb@f|fm0tAV{ut~ZF}XDi;(-x*3R>XoiRy8t zAA6r*#n{`aV7gw&nhfAGeqRvF)iYvLyYe50-MuvEP((?*%Aem=c!*$D9lhxD`1s$) zE_HY6N7UfLeTB^`pVH{QF0SgZO!cA69A7NH*(V@G;5`QOB~(qDY5nPjM05PO{VGJr zhc`WCDRyA|tX<({Wze!h(;h}`0n}Ac?j_0nQ@K_edKdji7gzGj6}jtO!Po^tl1*BS zrRT^d!Rxs!HKyWWP7Gi5=^akdQ=-FWmxCdz6GK*yc!T2w8dFd};pdZSww$GDMP$mb zWJXX)r}4v?=sWW9C1(Av*E5~*pZFE#1Sg;9Dpp{s(pA`?K0SR5**|8TUg*PkRG(Xo zg{Bo<18|n@?i^vy_1u>hZJbcYO$FJgomd5K4Xg%YYj;sFSU-HG{0AnVXrgV|kHxhz zlDSI|f|WatACLIkX#1|xSb8@eanrU3ZMJs5i(7knhB0w;tP?Ql6BBhv3#tS%S^t9`8-ll3=l2$xb$_@@e$J!_PJrPd3!ve!HN`Y%uJj|iw=`M-ABa%oMR%sU$kQ}%XjLY@2Yw)I@g&f2k_NwJzVb25gY z2#QXWL}L5E{9559$ddY_UkC>n8t=O&Z_&Qkq|0RK88*4`Q;k*HSm=C$OjE*=^fH^~ zr9SQBx6&GaYde&m-f?p(E`6dy=3Rcq2leMb{7E>RToa9gA1;ttR~c0KvJ^Sk{U`vM zl+#L#m=Ik#-0Uj?$H-2!7uBGWj