svn commit: r1873430 - /poi/trunk/src/scratchpad/testcases/org/apache/poi/hemf/usermodel/TestHemfPicture.java
Author: kiwiwings Date: Fri Jan 31 18:45:39 2020 New Revision: 1873430 URL: http://svn.apache.org/viewvc?rev=1873430=rev Log: Local EMF test changes Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hemf/usermodel/TestHemfPicture.java Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hemf/usermodel/TestHemfPicture.java URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hemf/usermodel/TestHemfPicture.java?rev=1873430=1873429=1873430=diff == --- poi/trunk/src/scratchpad/testcases/org/apache/poi/hemf/usermodel/TestHemfPicture.java (original) +++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hemf/usermodel/TestHemfPicture.java Fri Jan 31 18:45:39 2020 @@ -56,46 +56,42 @@ public class TestHemfPicture { private static final POIDataSamples ss_samples = POIDataSamples.getSpreadSheetInstance(); private static final POIDataSamples sl_samples = POIDataSamples.getSlideShowInstance(); -/* +/* +@Test +@Ignore("Only for manual tests") +public void paintSingle() throws Exception { +File fileIn = new File("tmp/emfs/govdocs1/844/844795.ppt_2.emf"); + +String[] args = { +"-format", "png", // png,gif,jpg or null for test +"-outdir", new File("build/tmp/").getCanonicalPath(), +"-outfile", fileIn.getName().replaceAll("\\.[^.]+?$", ".png"), +"-fixside", "long", +"-scale", "800", +"-ignoreParse", +// "-dump", new File("build/tmp/", fileIn.getName().replaceAll("\\.[^.]+?$",".json")).getCanonicalPath(), +// "-quiet", +// "-extractEmbedded", +fileIn.getPath() +}; +PPTX2PNG.main(args); +} +*/ +/* @Test @Ignore("Only for manual tests - need to add org.tukaani:xz:1.8 for this to work") -public void paint() throws Exception { +public void paintMultiple() throws Exception { final byte buf[] = new byte[50_000_000]; - -// good test samples to validate rendering: -// emfs/commoncrawl2/NB/NBWN2YH5VFCLZRFDQU7PB7IDD4UKY7DN_2.emf -// emfs/govdocs1/777/777525.ppt_0.emf -// emfs/govdocs1/844/844795.ppt_2.emf -// emfs/commoncrawl2/TO/TOYZSTNUSW5OFCFUQ6T5FBLIDLCRF3NH_0.emf - -// ISS3ANIX2PL4PXR7SZSJSPBZI7YQQE3U_6 - map of italy - stroke problem -// 3QKAPISTXYHSFCTV6QTKTYLK6JTWJHQU_2 - text misplaced -// KEEDHN6XES4EKK52E3AJHKCARNTQF7PO_0 - dito -// KWG4VAU5GM3POSA4BPG6RSVQVS44SXOL_1.emf - processing freezes - -// F7GK5XOLERFURVTQALOCX3GJ6FH45LNQ strange colors -// ISS3ANIX2PL4PXR7SZSJSPBZI7YQQE3U stroke wrong -// KWG4VAU5GM3POSA4BPG6RSVQVS44SXOL_1 - try (SevenZFile sevenZFile = new SevenZFile(new File("tmp/plus_emf.7z")) ) { -for (int idx=0;;idx++) { -SevenZArchiveEntry entry = sevenZFile.getNextEntry(); -if (entry == null) break; +SevenZArchiveEntry entry; +while ((entry = sevenZFile.getNextEntry()) != null) { final String etName = entry.getName(); if (entry.isDirectory() || !etName.endsWith(".emf")) continue; -if (!(etName.contains("3QKAPISTXYHSFCTV6QTKTYLK6JTWJHQU_2") -)) continue; - -//|| etName.contains("ISS3ANIX2PL4PXR7SZSJSPBZI7YQQE3U_6") -//|| etName.contains("KWG4VAU5GM3POSA4BPG6RSVQVS44SXOL_1") - - -System.out.println(etName); - int size = sevenZFile.read(buf); + ByteArrayInputStream bis = new ByteArrayInputStream(buf, 0, size); System.setIn(bis); @@ -108,7 +104,7 @@ public class TestHemfPicture { "-fixside", "long", "-scale", "800", "-ignoreParse", - "-dump", new File("build/tmp/", lastName.replace(".emf",".json")).getCanonicalPath(), +// "-dump", new File("build/tmp/", lastName.replace(".emf",".json")).getCanonicalPath(), // "-quiet", // "-extractEmbedded", "stdin" @@ -117,7 +113,8 @@ public class TestHemfPicture { } } } -*/ + */ + @Test public void testBasicWindows() throws Exception { try (InputStream is = ss_samples.openResourceAsStream("SimpleEMF_windows.emf")) { - To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org For additional commands, e-mail: commits-h...@poi.apache.org
svn commit: r1873190 [2/2] - in /poi/trunk/src/ooxml: java/org/apache/poi/ooxml/ java/org/apache/poi/poifs/crypt/dsig/ java/org/apache/poi/xdgf/usermodel/ java/org/apache/poi/xdgf/xml/ java/org/apache
Modified: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java?rev=1873190=1873189=1873190=diff == --- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java (original) +++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java Mon Jan 27 00:31:01 2020 @@ -21,7 +21,6 @@ import java.util.HashMap; import java.util.Map; import org.apache.poi.ooxml.POIXMLDocument; -import org.apache.poi.ooxml.POIXMLDocumentPart; import org.apache.poi.ooxml.POIXMLRelation; import org.apache.poi.openxml4j.opc.PackageRelationshipTypes; import org.apache.poi.xssf.usermodel.XSSFWorkbook; @@ -39,197 +38,213 @@ public final class XWPFRelation extends public static final XWPFRelation DOCUMENT = new XWPFRelation( "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml", PackageRelationshipTypes.CORE_DOCUMENT, -"/word/document.xml", -null +"/word/document.xml" ); + public static final XWPFRelation TEMPLATE = new XWPFRelation( - "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml", -PackageRelationshipTypes.CORE_DOCUMENT, -"/word/document.xml", -null + "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml", +PackageRelationshipTypes.CORE_DOCUMENT, +"/word/document.xml" ); + public static final XWPFRelation MACRO_DOCUMENT = new XWPFRelation( -"application/vnd.ms-word.document.macroEnabled.main+xml", -PackageRelationshipTypes.CORE_DOCUMENT, -"/word/document.xml", -null +"application/vnd.ms-word.document.macroEnabled.main+xml", +PackageRelationshipTypes.CORE_DOCUMENT, +"/word/document.xml" ); + public static final XWPFRelation MACRO_TEMPLATE_DOCUMENT = new XWPFRelation( -"application/vnd.ms-word.template.macroEnabledTemplate.main+xml", -PackageRelationshipTypes.CORE_DOCUMENT, -"/word/document.xml", -null +"application/vnd.ms-word.template.macroEnabledTemplate.main+xml", +PackageRelationshipTypes.CORE_DOCUMENT, +"/word/document.xml" ); + public static final XWPFRelation GLOSSARY_DOCUMENT = new XWPFRelation( - "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml", - "http://schemas.openxmlformats.org/officeDocument/2006/relationships/glossaryDocument;, -"/word/glossary/document.xml", -null + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/glossaryDocument;, +"/word/glossary/document.xml" ); + 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::new, XWPFNumbering::new ); + public static final XWPFRelation FONT_TABLE = new XWPFRelation( "application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable;, -"/word/fontTable.xml", -null +"/word/fontTable.xml" ); + public static final XWPFRelation SETTINGS = new XWPFRelation( - "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml", - "http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings;, -"/word/settings.xml", -XWPFSettings.class + "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml", + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings;, +"/word/settings.xml", +XWPFSettings::new, XWPFSettings::new ); + public static final XWPFRelation STYLES = new XWPFRelation( - "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml", - "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles;, -"/word/styles.xml", -XWPFStyles.class +
svn commit: r1873190 [1/2] - in /poi/trunk/src/ooxml: java/org/apache/poi/ooxml/ java/org/apache/poi/poifs/crypt/dsig/ java/org/apache/poi/xdgf/usermodel/ java/org/apache/poi/xdgf/xml/ java/org/apache
Author: kiwiwings Date: Mon Jan 27 00:31:01 2020 New Revision: 1873190 URL: http://svn.apache.org/viewvc?rev=1873190=rev Log: #64036 - Replace reflection calls in factories for Java 9+ - POIXMLDocument factories Modified: poi/trunk/src/ooxml/java/org/apache/poi/ooxml/POIXMLFactory.java poi/trunk/src/ooxml/java/org/apache/poi/ooxml/POIXMLRelation.java poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/DSigRelation.java poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFBaseContents.java poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFFactory.java poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFMasterContents.java poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFMasters.java poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFPageContents.java poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFPages.java poi/trunk/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFRelation.java poi/trunk/src/ooxml/java/org/apache/poi/xdgf/xml/XDGFXMLDocumentPart.java poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFFactory.java poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTableStyles.java poi/trunk/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBRelation.java poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFactory.java poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRelation.java poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFEndnotes.java poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFactory.java poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFootnotes.java poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHeaderFooter.java poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFNumbering.java poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java poi/trunk/src/ooxml/testcases/org/apache/poi/ooxml/TestPOIXMLDocument.java Modified: poi/trunk/src/ooxml/java/org/apache/poi/ooxml/POIXMLFactory.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/ooxml/POIXMLFactory.java?rev=1873190=1873189=1873190=diff == --- poi/trunk/src/ooxml/java/org/apache/poi/ooxml/POIXMLFactory.java (original) +++ poi/trunk/src/ooxml/java/org/apache/poi/ooxml/POIXMLFactory.java Mon Jan 27 00:31:01 2020 @@ -16,13 +16,16 @@ */ package org.apache.poi.ooxml; -import java.lang.reflect.InvocationTargetException; +import java.io.IOException; +import org.apache.poi.ooxml.POIXMLRelation.PackagePartConstructor; +import org.apache.poi.ooxml.POIXMLRelation.ParentPartConstructor; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.openxml4j.opc.PackagePart; import org.apache.poi.openxml4j.opc.PackageRelationship; import org.apache.poi.util.POILogFactory; import org.apache.poi.util.POILogger; +import org.apache.xmlbeans.XmlException; /** * Defines a factory API that enables sub-classes to create instances of POIXMLDocumentPart @@ -30,9 +33,6 @@ import org.apache.poi.util.POILogger; public abstract class POIXMLFactory { private static final POILogger LOGGER = POILogFactory.getLogger(POIXMLFactory.class); -private static final Class[] PARENT_PART = {POIXMLDocumentPart.class, PackagePart.class}; -private static final Class[] ORPHAN_PART = {PackagePart.class}; - /** * Create a POIXMLDocumentPart from existing package part and relation. This method is called * from {@link POIXMLDocument#load(POIXMLFactory)} when parsing a document @@ -40,7 +40,7 @@ public abstract class POIXMLFactory { * @param parent parent part * @param part the PackagePart representing the created instance * @return A new instance of a POIXMLDocumentPart. - * + * * @since by POI 3.14-Beta1 */ public POIXMLDocumentPart createDocumentPart(POIXMLDocumentPart parent, PackagePart part) { @@ -50,48 +50,31 @@ public abstract class POIXMLFactory { // don't parse the document parts, if its class can't be determined // or if it's a package relation of another embedded resource -if (descriptor == null || descriptor.getRelationClass() == null || POIXMLDocument.PACK_OBJECT_REL_TYPE.equals(relType)) { -LOGGER.log(POILogger.DEBUG, "using default POIXMLDocumentPart for " + rel.getRelationshipType()); -return new POIXMLDocumentPart(parent, part); -} - -Class cls = descriptor.getRelationClass(); try { -try { -return createDocumentPart(cls, PARENT_PART, new Object[]{pa
svn commit: r1873187 - in /poi/trunk/src: java/org/apache/poi/ddf/ java/org/apache/poi/hssf/record/ java/org/apache/poi/hssf/usermodel/ scratchpad/src/org/apache/poi/hslf/record/ testcases/org/apache/
Author: kiwiwings Date: Sun Jan 26 19:50:40 2020 New Revision: 1873187 URL: http://svn.apache.org/viewvc?rev=1873187=rev Log: #64036 - Replace reflection calls in factories for Java 9+ - Escher factories Removed: poi/trunk/src/java/org/apache/poi/ddf/EscherPictBlip.java Modified: poi/trunk/src/java/org/apache/poi/ddf/DefaultEscherRecordFactory.java poi/trunk/src/java/org/apache/poi/ddf/EscherClientDataRecord.java poi/trunk/src/java/org/apache/poi/ddf/EscherRecordTypes.java poi/trunk/src/java/org/apache/poi/hssf/record/ContinueRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/DrawingRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/EscherAggregate.java poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFShapeFactory.java poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/HSLFEscherRecordFactory.java poi/trunk/src/testcases/org/apache/poi/hssf/model/TestDrawingAggregate.java Modified: poi/trunk/src/java/org/apache/poi/ddf/DefaultEscherRecordFactory.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/DefaultEscherRecordFactory.java?rev=1873187=1873186=1873187=diff == --- poi/trunk/src/java/org/apache/poi/ddf/DefaultEscherRecordFactory.java (original) +++ poi/trunk/src/java/org/apache/poi/ddf/DefaultEscherRecordFactory.java Sun Jan 26 19:50:40 2020 @@ -17,11 +17,12 @@ package org.apache.poi.ddf; -import java.lang.reflect.Constructor; -import java.util.HashMap; -import java.util.Map; +import java.util.function.Supplier; +import org.apache.poi.util.BitField; +import org.apache.poi.util.BitFieldFactory; import org.apache.poi.util.LittleEndian; +import org.apache.poi.util.Removal; /** * Generates escher records when provided the byte array containing those records. @@ -29,14 +30,7 @@ import org.apache.poi.util.LittleEndian; * @see EscherRecordFactory */ public class DefaultEscherRecordFactory implements EscherRecordFactory { -private static Class[] escherRecordClasses = { EscherBSERecord.class, -EscherOptRecord.class, EscherTertiaryOptRecord.class, -EscherClientAnchorRecord.class, EscherDgRecord.class, -EscherSpgrRecord.class, EscherSpRecord.class, -EscherClientDataRecord.class, EscherDggRecord.class, -EscherSplitMenuColorsRecord.class, EscherChildAnchorRecord.class, -EscherTextboxRecord.class }; -private static Map> recordsMap = recordsToMap( escherRecordClasses ); +private static final BitField IS_CONTAINER = BitFieldFactory.getInstance(0xF); /** * Creates an instance of the escher record factory @@ -51,86 +45,41 @@ public class DefaultEscherRecordFactory short recordId = LittleEndian.getShort( data, offset + 2 ); // int remainingBytes = LittleEndian.getInt( data, offset + 4 ); +final EscherRecord escherRecord = getConstructor(options, recordId).get(); +escherRecord.setRecordId(recordId); +escherRecord.setOptions(options); +return escherRecord; +} + +protected Supplier getConstructor(short options, short recordId) { +EscherRecordTypes recordTypes = EscherRecordTypes.forTypeID(recordId); + // Options of 0x000F means container record -// However, EscherTextboxRecord are containers of records for the -// host application, not of other Escher records, so treat them -// differently -if (isContainer(options, recordId)) { -EscherContainerRecord r = new EscherContainerRecord(); -r.setRecordId( recordId ); -r.setOptions( options ); -return r; +// However, EscherTextboxRecord are containers of records for the host application, +// not of other Escher records, but those are returned by the above anyway +if (recordTypes == EscherRecordTypes.UNKNOWN && IS_CONTAINER.isAllSet(options)) { +return EscherContainerRecord::new; } -if (recordId >= EscherBlipRecord.RECORD_ID_START -&& recordId <= EscherBlipRecord.RECORD_ID_END) { -EscherBlipRecord r; -if (recordId == EscherBitmapBlip.RECORD_ID_DIB || -recordId == EscherBitmapBlip.RECORD_ID_JPEG || -recordId == EscherBitmapBlip.RECORD_ID_PNG) -{ -r = new EscherBitmapBlip(); -} -else if (recordId == EscherMetafileBlip.RECORD_ID_EMF || -recordId == EscherMetafileBlip.RECORD_ID_WMF || -recordId == EscherMetafileBlip.RECORD_ID_PICT) -{ -r = new EscherMetafileBlip(); -} else { -r = new EscherBlipRecord(); -} -r.setRecordId( recordId ); -r.setOptions( options ); -return r; +if (record
svn commit: r1873078 - in /poi/trunk/src: scratchpad/src/org/apache/poi/hemf/record/emfplus/HemfPlusPen.java testcases/org/apache/poi/hssf/usermodel/TestFormulas.java
Author: kiwiwings Date: Thu Jan 23 22:48:19 2020 New Revision: 1873078 URL: http://svn.apache.org/viewvc?rev=1873078=rev Log: sonar fixes Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hemf/record/emfplus/HemfPlusPen.java poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestFormulas.java Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hemf/record/emfplus/HemfPlusPen.java URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hemf/record/emfplus/HemfPlusPen.java?rev=1873078=1873077=1873078=diff == --- poi/trunk/src/scratchpad/src/org/apache/poi/hemf/record/emfplus/HemfPlusPen.java (original) +++ poi/trunk/src/scratchpad/src/org/apache/poi/hemf/record/emfplus/HemfPlusPen.java Thu Jan 23 22:48:19 2020 @@ -323,7 +323,7 @@ public class HemfPlusPen { private final AffineTransform trans = new AffineTransform(); private EmfPlusLineCapType startCap = EmfPlusLineCapType.FLAT; private EmfPlusLineCapType endCap = startCap; -private EmfPlusLineJoin join = EmfPlusLineJoin.ROUND; +private EmfPlusLineJoin lineJoin = EmfPlusLineJoin.ROUND; private Double miterLimit = 1.; private EmfPlusLineStyle style = EmfPlusLineStyle.SOLID; private EmfPlusDashedLineCapType dashedLineCapType; @@ -381,7 +381,7 @@ public class HemfPlusPen { // An optional 32-bit signed integer that specifies how to join two lines that are drawn by the same pen // and whose ends meet. This field MUST be present if the PenDataJoin flag is set in the PenDataFlags // field of the EmfPlusPenData object, and the value MUST be defined in the LineJoinType enumeration -join = EmfPlusLineJoin.valueOf(leis.readInt()); +lineJoin = EmfPlusLineJoin.valueOf(leis.readInt()); size += LittleEndianConsts.INT_SIZE; } @@ -479,6 +479,7 @@ public class HemfPlusPen { return graphicsVersion; } +@SuppressWarnings("unused") private long initCustomCap(Consumer setter, LittleEndianInputStream leis) throws IOException { int CustomStartCapSize = leis.readInt(); int size = LittleEndianConsts.INT_SIZE; @@ -526,7 +527,7 @@ public class HemfPlusPen { } HwmfLineJoin lineJoin; -switch (join) { +switch (this.lineJoin) { default: case BEVEL: lineJoin = HwmfLineJoin.BEVEL; @@ -565,7 +566,7 @@ public class HemfPlusPen { m.put("trans", () -> trans); m.put("startCap", () -> startCap); m.put("endCap", () -> endCap); -m.put("join", () -> join); +m.put("join", () -> lineJoin); m.put("miterLimit", () -> miterLimit); m.put("style", () -> style); m.put("dashedLineCapType", () -> dashedLineCapType); Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestFormulas.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestFormulas.java?rev=1873078=1873077=1873078=diff == --- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestFormulas.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestFormulas.java Thu Jan 23 22:48:19 2020 @@ -17,6 +17,7 @@ package org.apache.poi.hssf.usermodel; +import static org.apache.poi.hssf.HSSFTestDataSamples.writeOutAndReadBack; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertSame; @@ -25,17 +26,19 @@ import static org.junit.Assert.assertTru import java.io.File; import java.io.FileOutputStream; import java.io.IOException; -import java.util.Date; +import java.util.Calendar; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.model.HSSFFormulaParser; -import org.apache.poi.ss.util.CellReference; import org.apache.poi.ss.formula.FormulaType; import org.apache.poi.ss.formula.ptg.NamePtg; import org.apache.poi.ss.formula.ptg.Ptg; import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.Name; import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.util.CellReference; +import org.apache.poi.util.LocaleUtil; import org.apache.poi.util.TempFile; import org.junit.Test; @@ -50,25 +53,22 @@ public final class TestFormulas { */ @Test public void testBasicAddIntegers() throws IOException { +try (HSSFWorkbook wb1 = new HSSFWorkbook()) { +HSSFSheet s = wb1.createSheet(); -HSSFWorkbook
svn commit: r1873047 - /poi/trunk/src/testcases/org/apache/poi/POITestCase.java
Author: kiwiwings Date: Wed Jan 22 21:43:14 2020 New Revision: 1873047 URL: http://svn.apache.org/viewvc?rev=1873047=rev Log: Deactivate Forbidden apis check again Modified: poi/trunk/src/testcases/org/apache/poi/POITestCase.java Modified: poi/trunk/src/testcases/org/apache/poi/POITestCase.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/POITestCase.java?rev=1873047=1873046=1873047=diff == --- poi/trunk/src/testcases/org/apache/poi/POITestCase.java (original) +++ poi/trunk/src/testcases/org/apache/poi/POITestCase.java Wed Jan 22 21:43:14 2020 @@ -37,6 +37,7 @@ import java.util.Map; import java.util.Set; import org.apache.poi.util.Internal; +import org.apache.poi.util.SuppressForbidden; import org.mockito.internal.matchers.apachecommons.ReflectionEquals; /** @@ -120,6 +121,7 @@ public final class POITestCase { * Only use this method in test cases!!! */ @SuppressWarnings({"unused", "unchecked"}) +@SuppressForbidden("For test usage only") public static R getFieldValue(final Class clazz, final T instance, final Class fieldType, final String fieldName) { assertTrue("Reflection of private fields is only allowed for POI classes.", clazz.getName().startsWith("org.apache.poi.")); try { - To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org For additional commands, e-mail: commits-h...@poi.apache.org
svn commit: r1873015 - in /poi/trunk/src: integrationtest/org/apache/poi/stress/ ooxml/testcases/org/apache/poi/poifs/crypt/ testcases/org/apache/poi/ testcases/org/apache/poi/hssf/dev/ testcases/org/
Author: kiwiwings Date: Tue Jan 21 22:02:10 2020 New Revision: 1873015 URL: http://svn.apache.org/viewvc?rev=1873015=rev Log: Sonar fixes Modified: poi/trunk/src/integrationtest/org/apache/poi/stress/HPSFFileHandler.java poi/trunk/src/integrationtest/org/apache/poi/stress/HSSFFileHandler.java poi/trunk/src/integrationtest/org/apache/poi/stress/HWPFFileHandler.java poi/trunk/src/integrationtest/org/apache/poi/stress/XDGFFileHandler.java poi/trunk/src/integrationtest/org/apache/poi/stress/XWPFFileHandler.java poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java poi/trunk/src/testcases/org/apache/poi/POITestCase.java poi/trunk/src/testcases/org/apache/poi/TestPOITestCase.java poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestBiffViewer.java poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestHSSFEventFactory.java poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFeatRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/TestLabelRecord.java Modified: poi/trunk/src/integrationtest/org/apache/poi/stress/HPSFFileHandler.java URL: http://svn.apache.org/viewvc/poi/trunk/src/integrationtest/org/apache/poi/stress/HPSFFileHandler.java?rev=1873015=1873014=1873015=diff == --- poi/trunk/src/integrationtest/org/apache/poi/stress/HPSFFileHandler.java (original) +++ poi/trunk/src/integrationtest/org/apache/poi/stress/HPSFFileHandler.java Tue Jan 21 22:02:10 2020 @@ -45,9 +45,9 @@ import org.junit.Test; public class HPSFFileHandler extends POIFSFileHandler { private static final String NL = System.getProperty("line.separator"); - + private static File copyOutput; - + static final Set EXCLUDES_HANDLE_ADD = unmodifiableHashSet( "spreadsheet/45290.xls", "spreadsheet/46904.xls", @@ -57,17 +57,17 @@ public class HPSFFileHandler extends POI "hpsf/Test_Humor-Generation.ppt", "document/word2.doc" ); - + static final Set EXCLUDES_HANDLE_FILE = unmodifiableHashSet( "hpsf/Test_Humor-Generation.ppt" ); - - + + private static Set unmodifiableHashSet(String... a) { return Collections.unmodifiableSet(new HashSet<>(Arrays.asList(a))); } - + @Override public void handleFile(InputStream stream, String path) throws Exception { Assume.assumeFalse(EXCLUDES_HANDLE_FILE.contains(path)); @@ -77,10 +77,10 @@ public class HPSFFileHandler extends POI SummaryInformation si = hpsf.getSummaryInformation(); boolean hasDSI = hasPropertyStream(poifs, DocumentSummaryInformation.DEFAULT_STREAM_NAME); boolean hasSI = hasPropertyStream(poifs, SummaryInformation.DEFAULT_STREAM_NAME); - + assertEquals(hasDSI, dsi != null); assertEquals(hasSI, si != null); - + handlePOIDocument(hpsf); } @@ -93,7 +93,7 @@ public class HPSFFileHandler extends POI return PropertySet.isPropertySetStream(dis); } } - + @Override public void handleAdditional(File file) throws Exception { Assume.assumeFalse(EXCLUDES_HANDLE_ADD.contains(file.getParentFile().getName()+"/"+file.getName())); @@ -114,10 +114,11 @@ public class HPSFFileHandler extends POI } } - + // a test-case to test this locally without executing the full TestAllFiles @Override @Test +@SuppressWarnings("java:S2699") public void test() throws Exception { String path = "test-data/hpsf/Test0313rur.adm"; try (InputStream stream = new FileInputStream(path)) { Modified: poi/trunk/src/integrationtest/org/apache/poi/stress/HSSFFileHandler.java URL: http://svn.apache.org/viewvc/poi/trunk/src/integrationtest/org/apache/poi/stress/HSSFFileHandler.java?rev=1873015=1873014=1873015=diff == --- poi/trunk/src/integrationtest/org/apache/poi/stress/HSSFFileHandler.java (original) +++ poi/trunk/src/integrationtest/org/apache/poi/stress/HSSFFileHandler.java Tue Jan 21 22:02:10 2020 @@ -21,7 +21,6 @@ import static org.junit.Assert.assertNot import java.io.File; import java.io.FileInputStream; -import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintStream; @@ -50,7 +49,7 @@ public class HSSFFileHandler extends Spr // So FormulaEvalTestData.xls now contains a few formulas that produce errors here. //HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(wb); //evaluator.evaluateAll(); - + delegate.handlePOIDocument(wb); // also try to see if som
svn commit: r1873001 - in /poi/trunk: jenkins/create_jobs.groovy src/integrationtest/org/apache/poi/stress/HMEFFileHandler.java
Author: kiwiwings Date: Tue Jan 21 00:06:32 2020 New Revision: 1873001 URL: http://svn.apache.org/viewvc?rev=1873001=rev Log: try to fix winmail errors in maven / sonar builds Modified: poi/trunk/jenkins/create_jobs.groovy poi/trunk/src/integrationtest/org/apache/poi/stress/HMEFFileHandler.java Modified: poi/trunk/jenkins/create_jobs.groovy URL: http://svn.apache.org/viewvc/poi/trunk/jenkins/create_jobs.groovy?rev=1873001=1873000=1873001=diff == --- poi/trunk/jenkins/create_jobs.groovy (original) +++ poi/trunk/jenkins/create_jobs.groovy Tue Jan 21 00:06:32 2020 @@ -231,6 +231,7 @@ poijobs.each { poijob -> } preBuildCleanup { includePattern('**/ooxml-lib/ooxml*.jar') +includePattern('sonar/*/target/**') } if(poijob.sonar) { credentialsBinding { Modified: poi/trunk/src/integrationtest/org/apache/poi/stress/HMEFFileHandler.java URL: http://svn.apache.org/viewvc/poi/trunk/src/integrationtest/org/apache/poi/stress/HMEFFileHandler.java?rev=1873001=1873000=1873001=diff == --- poi/trunk/src/integrationtest/org/apache/poi/stress/HMEFFileHandler.java (original) +++ poi/trunk/src/integrationtest/org/apache/poi/stress/HMEFFileHandler.java Tue Jan 21 00:06:32 2020 @@ -25,7 +25,6 @@ import java.util.Arrays; import org.apache.poi.hmef.HMEFMessage; import org.apache.poi.hmef.attribute.MAPIAttribute; -import org.apache.poi.hmef.attribute.MAPIStringAttribute; import org.apache.poi.hmef.attribute.TNEFAttribute; import org.apache.poi.hmef.attribute.TNEFProperty; import org.apache.poi.hsmf.datatypes.MAPIProperty; @@ -47,13 +46,7 @@ public class HMEFFileHandler extends Abs public void handleFile(InputStream stream, String path) throws Exception { HMEFMessage msg = new HMEFMessage(stream); - // list all properties - StringBuilder props = new StringBuilder(); - for(MAPIAttribute att : msg.getMessageMAPIAttributes()) { - props.append(att.getType()).append(": ").append(MAPIStringAttribute.getAsString( att)).append("\n"); - } - - // there are two test-files that have no body... + // there are test-files that have no body... String[] HTML_BODY = { "Testing TNEF Message", "TNEF test message with attachments", "Test" }; - To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org For additional commands, e-mail: commits-h...@poi.apache.org
svn commit: r1872984 [2/2] - in /poi: site/src/documentation/content/xdocs/ trunk/src/java/org/apache/poi/sl/draw/ trunk/src/java/org/apache/poi/sl/usermodel/ trunk/src/ooxml/java/org/apache/poi/xslf/
Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFTextParagraph.java URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFTextParagraph.java?rev=1872984=1872983=1872984=diff == --- poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFTextParagraph.java (original) +++ poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFTextParagraph.java Sun Jan 19 20:44:36 2020 @@ -41,7 +41,25 @@ import org.apache.poi.hslf.model.textpro import org.apache.poi.hslf.model.textproperties.TextProp; import org.apache.poi.hslf.model.textproperties.TextPropCollection; import org.apache.poi.hslf.model.textproperties.TextPropCollection.TextPropType; -import org.apache.poi.hslf.record.*; +import org.apache.poi.hslf.record.ColorSchemeAtom; +import org.apache.poi.hslf.record.EscherTextboxWrapper; +import org.apache.poi.hslf.record.InteractiveInfo; +import org.apache.poi.hslf.record.MasterTextPropAtom; +import org.apache.poi.hslf.record.OutlineTextRefAtom; +import org.apache.poi.hslf.record.PPDrawing; +import org.apache.poi.hslf.record.RecordContainer; +import org.apache.poi.hslf.record.RecordTypes; +import org.apache.poi.hslf.record.RoundTripHFPlaceholder12; +import org.apache.poi.hslf.record.SlideListWithText; +import org.apache.poi.hslf.record.SlidePersistAtom; +import org.apache.poi.hslf.record.StyleTextProp9Atom; +import org.apache.poi.hslf.record.StyleTextPropAtom; +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.hslf.record.TextRulerAtom; +import org.apache.poi.hslf.record.TextSpecInfoAtom; +import org.apache.poi.hslf.record.TxInteractiveInfoAtom; import org.apache.poi.sl.draw.DrawPaint; import org.apache.poi.sl.usermodel.AutoNumberingScheme; import org.apache.poi.sl.usermodel.PaintStyle; @@ -141,7 +159,7 @@ public final class HSLFTextParagraph imp _byteAtom = tba; _charAtom = tca; this.parentList = parentList; -_paragraphStyle = new TextPropCollection(1, TextPropType.paragraph); +setParagraphStyle(new TextPropCollection(1, TextPropType.paragraph)); } /* package */HSLFTextParagraph(HSLFTextParagraph other) { @@ -152,8 +170,8 @@ public final class HSLFTextParagraph imp _sheet = other._sheet; _ruler = other._ruler; shapeId = other.shapeId; -_paragraphStyle = other._paragraphStyle; parentList = other.parentList; +setParagraphStyle(other._paragraphStyle); } public void addTextRun(HSLFTextRun run) { - To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org For additional commands, e-mail: commits-h...@poi.apache.org
svn commit: r1872984 [1/2] - in /poi: site/src/documentation/content/xdocs/ trunk/src/java/org/apache/poi/sl/draw/ trunk/src/java/org/apache/poi/sl/usermodel/ trunk/src/ooxml/java/org/apache/poi/xslf/
Author: kiwiwings Date: Sun Jan 19 20:44:36 2020 New Revision: 1872984 URL: http://svn.apache.org/viewvc?rev=1872984=rev Log: #64088 - SlideShow rendering fixes Modified: poi/site/src/documentation/content/xdocs/changes.xml poi/trunk/src/java/org/apache/poi/sl/draw/BitmapImageRenderer.java poi/trunk/src/java/org/apache/poi/sl/draw/DrawPaint.java poi/trunk/src/java/org/apache/poi/sl/usermodel/PaintStyle.java poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFBackground.java poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFColor.java poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFGradientPaint.java poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotes.java poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotesMaster.java poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShadow.java poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShape.java poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSheet.java poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSimpleShape.java poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlide.java poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlideLayout.java poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlideMaster.java poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTableCell.java poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextParagraph.java poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTextRun.java poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTexturePaint.java poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFTheme.java poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFColor.java poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFTextParagraph.java Modified: poi/site/src/documentation/content/xdocs/changes.xml URL: http://svn.apache.org/viewvc/poi/site/src/documentation/content/xdocs/changes.xml?rev=1872984=1872983=1872984=diff == --- poi/site/src/documentation/content/xdocs/changes.xml (original) +++ poi/site/src/documentation/content/xdocs/changes.xml Sun Jan 19 20:44:36 2020 @@ -111,6 +111,7 @@ Replace Cloneable / clone() with copy constructor Replace reflection calls in factories for Java 9+ Fix issue with setCellValue(LocalDate) not supporting nulls properly +SlideShow rendering fixes Modified: poi/trunk/src/java/org/apache/poi/sl/draw/BitmapImageRenderer.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/draw/BitmapImageRenderer.java?rev=1872984=1872983=1872984=diff == --- poi/trunk/src/java/org/apache/poi/sl/draw/BitmapImageRenderer.java (original) +++ poi/trunk/src/java/org/apache/poi/sl/draw/BitmapImageRenderer.java Sun Jan 19 20:44:36 2020 @@ -75,7 +75,7 @@ public class BitmapImageRenderer impleme public void loadImage(byte[] data, String contentType) throws IOException { img = readImage(new ByteArrayInputStream(data), contentType); } - + /** * Read the image data via ImageIO and optionally try to workaround metadata errors. * The resulting image is of image type {@link BufferedImage#TYPE_INT_ARGB} @@ -117,7 +117,7 @@ public class BitmapImageRenderer impleme } try { - + switch (mode) { case 0: reader.setInput(iis, false, true); @@ -146,7 +146,7 @@ public class BitmapImageRenderer impleme reader.setInput(iis, false, true); int height = reader.getHeight(0); int width = reader.getWidth(0); - + Iterator imageTypes = reader.getImageTypes(0); if (imageTypes.hasNext()) { ImageTypeSpecifier imageTypeSpecifier = imageTypes.next(); @@ -172,11 +172,11 @@ public class BitmapImageRenderer impleme img = argbImg; } } -} +} break; } } - + } catch (IOException e) { if (mode < 2) { lastException = e; @@ -192,7 +192,7 @@ public class BitmapImageRenderer impleme } finally { iis.cl
svn commit: r1872523 - in /poi/trunk/src: integrationtest/org/apache/poi/stress/HMEFFileHandler.java ooxml/java/org/apache/poi/ooxml/extractor/ExtractorFactory.java
Author: kiwiwings Date: Wed Jan 8 23:49:31 2020 New Revision: 1872523 URL: http://svn.apache.org/viewvc?rev=1872523=rev Log: #63955 - HMEFContentsExtractor fails to extract content from winmail.dat fixed integration test Modified: poi/trunk/src/integrationtest/org/apache/poi/stress/HMEFFileHandler.java poi/trunk/src/ooxml/java/org/apache/poi/ooxml/extractor/ExtractorFactory.java Modified: poi/trunk/src/integrationtest/org/apache/poi/stress/HMEFFileHandler.java URL: http://svn.apache.org/viewvc/poi/trunk/src/integrationtest/org/apache/poi/stress/HMEFFileHandler.java?rev=1872523=1872522=1872523=diff == --- poi/trunk/src/integrationtest/org/apache/poi/stress/HMEFFileHandler.java (original) +++ poi/trunk/src/integrationtest/org/apache/poi/stress/HMEFFileHandler.java Wed Jan 8 23:49:31 2020 @@ -18,35 +18,57 @@ package org.apache.poi.stress; import static org.junit.Assert.assertNotNull; +import java.io.File; import java.io.FileInputStream; import java.io.InputStream; +import java.util.Arrays; import org.apache.poi.hmef.HMEFMessage; import org.apache.poi.hmef.attribute.MAPIAttribute; import org.apache.poi.hmef.attribute.MAPIStringAttribute; +import org.apache.poi.hmef.attribute.TNEFAttribute; +import org.apache.poi.hmef.attribute.TNEFProperty; +import org.apache.poi.hsmf.datatypes.MAPIProperty; +import org.apache.poi.poifs.filesystem.FileMagic; +import org.apache.poi.util.LittleEndian; import org.junit.Test; public class HMEFFileHandler extends AbstractFileHandler { @Override + public void handleExtracting(File file) throws Exception { + FileMagic fm = FileMagic.valueOf(file); + if (fm == FileMagic.OLE2) { + super.handleExtracting(file); + } + } + + @Override public void handleFile(InputStream stream, String path) throws Exception { HMEFMessage msg = new HMEFMessage(stream); - + // list all properties StringBuilder props = new StringBuilder(); for(MAPIAttribute att : msg.getMessageMAPIAttributes()) { props.append(att.getType()).append(": ").append(MAPIStringAttribute.getAsString( att)).append("\n"); } - + // there are two test-files that have no body... - if(!msg.getSubject().equals("Testing TNEF Message") && !msg.getSubject().equals("TNEF test message with attachments")) { - assertNotNull("Had: " + msg.getBody() + ", " + msg.getSubject() + ", " + msg.getAttachments() + ": " + props, - msg.getBody()); + String[] HTML_BODY = { + "Testing TNEF Message", "TNEF test message with attachments", "Test" + }; + String bodyStr; + if(Arrays.asList(HTML_BODY).contains(msg.getSubject())) { + MAPIAttribute bodyHtml = msg.getMessageMAPIAttribute(MAPIProperty.BODY_HTML); + assertNotNull(bodyHtml); + bodyStr = new String(bodyHtml.getData(), getEncoding(msg)); + } else { + bodyStr = msg.getBody(); } - assertNotNull("Had: " + msg.getBody() + ", " + msg.getSubject() + ", " + msg.getAttachments() + ": " + props, - msg.getSubject()); + assertNotNull("Body is not set", bodyStr); + assertNotNull("Subject is not set", msg.getSubject()); } - + // a test-case to test this locally without executing the full TestAllFiles @Test public void test() throws Exception { @@ -55,4 +77,22 @@ public class HMEFFileHandler extends Abs handleFile(stream, path); } } + + private String getEncoding(HMEFMessage tnefDat) { + TNEFAttribute oemCP = tnefDat.getMessageAttribute(TNEFProperty.ID_OEMCODEPAGE); + MAPIAttribute cpId = tnefDat.getMessageMAPIAttribute(MAPIProperty.INTERNET_CPID); + int codePage = 1252; + if (oemCP != null) { + codePage = LittleEndian.getInt(oemCP.getData()); + } else if (cpId != null) { + codePage = LittleEndian.getInt(cpId.getData()); + } + switch (codePage) { + // see http://en.wikipedia.org/wiki/Code_page for more + case 1252: return "Windows-1252"; + case 20127: return "US-ASCII"; + default: return "cp"+codePage; +
svn commit: r1872480 - in /poi/trunk: src/scratchpad/testcases/org/apache/poi/hmef/ src/scratchpad/testcases/org/apache/poi/hmef/attribute/ test-data/hmef/
Author: kiwiwings Date: Wed Jan 8 00:49:39 2020 New Revision: 1872480 URL: http://svn.apache.org/viewvc?rev=1872480=rev Log: #63955 - HMEFContentsExtractor fails to extract content from winmail.dat added example file - optimized junit tests Added: poi/trunk/test-data/hmef/bug63955-winmail.dat (with props) Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hmef/TestAttachments.java poi/trunk/src/scratchpad/testcases/org/apache/poi/hmef/TestBugs.java poi/trunk/src/scratchpad/testcases/org/apache/poi/hmef/TestCompressedRTF.java poi/trunk/src/scratchpad/testcases/org/apache/poi/hmef/TestHMEFMessage.java poi/trunk/src/scratchpad/testcases/org/apache/poi/hmef/attribute/TestMAPIAttributes.java Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hmef/TestAttachments.java URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hmef/TestAttachments.java?rev=1872480=1872479=1872480=diff == --- poi/trunk/src/scratchpad/testcases/org/apache/poi/hmef/TestAttachments.java (original) +++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hmef/TestAttachments.java Wed Jan 8 00:49:39 2020 @@ -17,7 +17,9 @@ package org.apache.poi.hmef; +import static org.apache.poi.hmef.TestHMEFMessage.openSample; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import java.io.IOException; import java.text.DateFormat; @@ -25,29 +27,23 @@ import java.text.SimpleDateFormat; import java.util.List; import java.util.Locale; -import org.apache.poi.POIDataSamples; import org.apache.poi.util.LocaleUtil; -import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Test; public final class TestAttachments { -protected static final POIDataSamples _samples = POIDataSamples.getHMEFInstance(); +private static HMEFMessage quick; - -private HMEFMessage quick; - -@Before -public void setUp() throws Exception { -quick = new HMEFMessage( -_samples.openResourceAsStream("quick-winmail.dat") -); +@BeforeClass +public static void setUp() throws IOException { +quick = openSample("quick-winmail.dat"); } /** * Check the file is as we expect */ @Test -public void testCounts() throws Exception { +public void testCounts() { // Should have 5 attachments assertEquals(5, quick.getAttachments().size()); } @@ -56,7 +52,7 @@ public final class TestAttachments { * Check some basic bits about the attachments */ @Test -public void testBasicAttachments() throws Exception { +public void testBasicAttachments() { List attachments = quick.getAttachments(); // Word first @@ -90,26 +86,22 @@ public final class TestAttachments { * the right values for key things */ @Test -public void testAttachmentDetails() throws Exception { +public void testAttachmentDetails() { List attachments = quick.getAttachments(); +assertEquals(5, attachments.size()); // Pick a predictable date format + timezone DateFormat fmt = new SimpleDateFormat("dd-MMM- hh:mm:ss", Locale.UK); fmt.setTimeZone(LocaleUtil.TIMEZONE_UTC); -// They should all have the same date on them -assertEquals("28-Apr-2010 12:40:56", fmt.format(attachments.get(0).getModifiedDate())); -assertEquals("28-Apr-2010 12:40:56", fmt.format(attachments.get(1).getModifiedDate())); -assertEquals("28-Apr-2010 12:40:56", fmt.format(attachments.get(2).getModifiedDate())); -assertEquals("28-Apr-2010 12:40:56", fmt.format(attachments.get(3).getModifiedDate())); -assertEquals("28-Apr-2010 12:40:56", fmt.format(attachments.get(4).getModifiedDate())); - -// They should all have a 3512 byte metafile rendered version -assertEquals(3512, attachments.get(0).getRenderedMetaFile().length); -assertEquals(3512, attachments.get(1).getRenderedMetaFile().length); -assertEquals(3512, attachments.get(2).getRenderedMetaFile().length); -assertEquals(3512, attachments.get(3).getRenderedMetaFile().length); -assertEquals(3512, attachments.get(4).getRenderedMetaFile().length); +for (Attachment attachment : attachments) { +// They should all have the same date on them +assertEquals("28-Apr-2010 12:40:56", fmt.format(attachment.getModifiedDate())); +// They should all have a 3512 byte metafile rendered version +byte[] meta = attachment.getRenderedMetaFile(); +assertNotNull(meta); +assertEquals(3512, meta.length); +} } /** Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hmef/TestBugs.java URL: http://
svn commit: r1872478 - /poi/trunk/sonar/pom.xml
Author: kiwiwings Date: Wed Jan 8 00:30:58 2020 New Revision: 1872478 URL: http://svn.apache.org/viewvc?rev=1872478=rev Log: try sonar module key Modified: poi/trunk/sonar/pom.xml Modified: poi/trunk/sonar/pom.xml URL: http://svn.apache.org/viewvc/poi/trunk/sonar/pom.xml?rev=1872478=1872477=1872478=diff == --- poi/trunk/sonar/pom.xml (original) +++ poi/trunk/sonar/pom.xml Wed Jan 8 00:30:58 2020 @@ -74,6 +74,8 @@ apache poi-parent +${artifactId} + https://sonarcloud.io target/jacoco.exec target/site/jacoco/jacoco.xml - To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org For additional commands, e-mail: commits-h...@poi.apache.org
svn commit: r1872477 - in /poi/trunk/sonar: pom.xml sonar-project.properties
Author: kiwiwings Date: Wed Jan 8 00:01:05 2020 New Revision: 1872477 URL: http://svn.apache.org/viewvc?rev=1872477=rev Log: try to set sonar settings via maven properties Removed: poi/trunk/sonar/sonar-project.properties Modified: poi/trunk/sonar/pom.xml Modified: poi/trunk/sonar/pom.xml URL: http://svn.apache.org/viewvc/poi/trunk/sonar/pom.xml?rev=1872477=1872476=1872477=diff == --- poi/trunk/sonar/pom.xml (original) +++ poi/trunk/sonar/pom.xml Wed Jan 8 00:01:05 2020 @@ -72,6 +72,12 @@ true +apache +poi-parent +https://sonarcloud.io +target/jacoco.exec + target/site/jacoco/jacoco.xml + 3.1.0 4.13 - To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org For additional commands, e-mail: commits-h...@poi.apache.org
svn commit: r1872475 - /poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/PackagePartCollection.java
Author: kiwiwings Date: Tue Jan 7 23:05:47 2020 New Revision: 1872475 URL: http://svn.apache.org/viewvc?rev=1872475=rev Log: use lambda instead of sub class Modified: poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/PackagePartCollection.java Modified: poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/PackagePartCollection.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/PackagePartCollection.java?rev=1872475=1872474=1872475=diff == --- poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/PackagePartCollection.java (original) +++ poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/PackagePartCollection.java Tue Jan 7 23:05:47 2020 @@ -123,7 +123,7 @@ public final class PackagePartCollection * e.g. "/ppt/slides/slide#.xml" * @return the next available part name index * @throws InvalidFormatException if the nameTemplate is null or doesn't contain - * the index char (#) or results in an invalid part name + * the index char (#) or results in an invalid part name */ public int getUnusedPartIndex(final String nameTemplate) throws InvalidFormatException { if (nameTemplate == null || !nameTemplate.contains("#")) { @@ -131,21 +131,14 @@ public final class PackagePartCollection } final Pattern pattern = Pattern.compile(nameTemplate.replace("#", "([0-9]+)")); - + final ToIntFunction indexFromName = name -> { Matcher m = pattern.matcher(name); return m.matches() ? Integer.parseInt(m.group(1)) : 0; }; - + return packagePartLookup.keySet().stream() .mapToInt(indexFromName) -.collect(MySparseBitSet::new, MySparseBitSet::set, MySparseBitSet::myOr).nextClearBit(1); +.collect(SparseBitSet::new, SparseBitSet::set, (s1,s2) -> s1.or(s2)).nextClearBit(1); } - -private class MySparseBitSet extends SparseBitSet { - - public void myOr(MySparseBitSet other) { - this.or(other); - } - } } - To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org For additional commands, e-mail: commits-h...@poi.apache.org
svn commit: r1872473 - in /poi/trunk/src: java/org/apache/poi/hpsf/ java/org/apache/poi/ss/extractor/ scratchpad/src/org/apache/poi/hwmf/record/
Author: kiwiwings Date: Tue Jan 7 22:46:29 2020 New Revision: 1872473 URL: http://svn.apache.org/viewvc?rev=1872473=rev Log: findbugs fixes and refactor some ClassIDs Modified: poi/trunk/src/java/org/apache/poi/hpsf/ClassIDPredefined.java poi/trunk/src/java/org/apache/poi/hpsf/DocumentSummaryInformation.java poi/trunk/src/java/org/apache/poi/hpsf/PropertySet.java poi/trunk/src/java/org/apache/poi/hpsf/SummaryInformation.java poi/trunk/src/java/org/apache/poi/ss/extractor/EmbeddedExtractor.java poi/trunk/src/scratchpad/src/org/apache/poi/hwmf/record/HwmfWindowing.java Modified: poi/trunk/src/java/org/apache/poi/hpsf/ClassIDPredefined.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hpsf/ClassIDPredefined.java?rev=1872473=1872472=1872473=diff == --- poi/trunk/src/java/org/apache/poi/hpsf/ClassIDPredefined.java (original) +++ poi/trunk/src/java/org/apache/poi/hpsf/ClassIDPredefined.java Tue Jan 7 22:46:29 2020 @@ -92,7 +92,13 @@ public enum ClassIDPredefined { /** URL Moniker **/ URL_MONIKER ("{79EAC9E0-BAF9-11CE-8C82-00AA004BA90B}", null, null), /** File Moniker **/ -FILE_MONIKER ("{0303---C000-0046}", null, null) +FILE_MONIKER ("{0303---C000-0046}", null, null), +/** Document summary information first property section **/ +DOC_SUMMARY ("{D5CDD502-2E9C-101B-9397-08002B2CF9AE}", null, null), +/** Document summary information user defined properties section **/ +USER_PROPERTIES ("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}", null, null), +/** Summary information property section **/ +SUMMARY_PROPERTIES ("{F29F85E0-4FF9-1068-AB91-08002B27B3D9}", null, null); ; Modified: poi/trunk/src/java/org/apache/poi/hpsf/DocumentSummaryInformation.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hpsf/DocumentSummaryInformation.java?rev=1872473=1872472=1872473=diff == --- poi/trunk/src/java/org/apache/poi/hpsf/DocumentSummaryInformation.java (original) +++ poi/trunk/src/java/org/apache/poi/hpsf/DocumentSummaryInformation.java Tue Jan 7 22:46:29 2020 @@ -17,9 +17,11 @@ package org.apache.poi.hpsf; +import static org.apache.poi.hpsf.ClassIDPredefined.DOC_SUMMARY; +import static org.apache.poi.hpsf.ClassIDPredefined.USER_PROPERTIES; + import java.io.IOException; import java.io.InputStream; -import java.io.UnsupportedEncodingException; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -32,6 +34,7 @@ import org.apache.poi.hpsf.wellknown.Pro * * @see SummaryInformation */ +@SuppressWarnings("unused") public class DocumentSummaryInformation extends PropertySet { /** @@ -44,15 +47,10 @@ public class DocumentSummaryInformation /** * The DocumentSummaryInformation's first and second sections' format ID. */ -private static final ClassID DOC_SUMMARY_INFORMATION = -new ClassID("{D5CDD502-2E9C-101B-9397-08002B2CF9AE}"); -private static final ClassID USER_DEFINED_PROPERTIES = -new ClassID("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}"); - public static final ClassID[] FORMAT_ID = { -DOC_SUMMARY_INFORMATION, USER_DEFINED_PROPERTIES +DOC_SUMMARY.getClassID(), USER_PROPERTIES.getClassID() }; - + @Override public PropertyIDMap getPropertySetIDMap() { return PropertyIDMap.getDocumentSummaryInformationProperties(); @@ -63,10 +61,10 @@ public class DocumentSummaryInformation * Creates an empty {@link DocumentSummaryInformation}. */ public DocumentSummaryInformation() { -getFirstSection().setFormatID(DOC_SUMMARY_INFORMATION); +getFirstSection().setFormatID(DOC_SUMMARY.getClassID()); } - + /** * Creates a {@link DocumentSummaryInformation} from a given * {@link PropertySet}. @@ -97,20 +95,16 @@ public class DocumentSummaryInformation * * @param stream Holds the data making out the property set * stream. - * @throws MarkUnsupportedException - *if the stream does not support the {@link InputStream#markSupported} method. * @throws IOException *if the {@link InputStream} cannot be accessed as needed. * @exception NoPropertySetStreamException *if the input stream does not contain a property set. - * @exception UnsupportedEncodingException - *if a character encoding is not supported. */ public DocumentSummaryInformation(final InputStream stream) -throws NoPropertySetStreamException, MarkUnsupportedException, IOException, UnsupportedEncodingException { +throws NoPropertySetStreamException, IOException {
svn commit: r1872469 - in /poi/trunk: jenkins/create_jobs.groovy sonar/sonar-project.properties
Author: kiwiwings Date: Tue Jan 7 21:15:33 2020 New Revision: 1872469 URL: http://svn.apache.org/viewvc?rev=1872469=rev Log: test if sonar can be configured via properties file sonarcloud complained about jacoco native report paths Added: poi/trunk/sonar/sonar-project.properties Modified: poi/trunk/jenkins/create_jobs.groovy Modified: poi/trunk/jenkins/create_jobs.groovy URL: http://svn.apache.org/viewvc/poi/trunk/jenkins/create_jobs.groovy?rev=1872469=1872468=1872469=diff == --- poi/trunk/jenkins/create_jobs.groovy (original) +++ poi/trunk/jenkins/create_jobs.groovy Tue Jan 7 21:15:33 2020 @@ -3,7 +3,7 @@ // // See https://github.com/jenkinsci/job-dsl-plugin/wiki for information about the DSL, you can // use http://job-dsl.herokuapp.com/ to validate the code before checkin -// +// def triggerSundays = ''' # only run this once per week on Sundays @@ -294,10 +294,7 @@ poijobs.each { poijob -> maven { if (poijob.sonar) { goals('clean package sonar:sonar') -property('sonar.host.url', 'https://sonarcloud.io') property('sonar.login', '${POI_SONAR_TOKEN}') -property('sonar.projectKey', 'poi-parent') -property('sonar.organization', 'apache') } else { goals('package') } @@ -367,10 +364,7 @@ poijobs.each { poijob -> gradle { switches('-PenableSonar') -switches('-Dsonar.host.url=https://sonarcloud.io') switches('-Dsonar.login=${POI_SONAR_TOKEN}') -switches('-Dsonar.projectKey=poi-parent') -switches('-Dsonar.organization=apache') tasks('sonarqube') useWrapper(false) } Added: poi/trunk/sonar/sonar-project.properties URL: http://svn.apache.org/viewvc/poi/trunk/sonar/sonar-project.properties?rev=1872469=auto == --- poi/trunk/sonar/sonar-project.properties (added) +++ poi/trunk/sonar/sonar-project.properties Tue Jan 7 21:15:33 2020 @@ -0,0 +1,11 @@ +# Sonar configuration file: +# see https://sonarcloud.io/documentation/analysis/scan/sonarscanner/ +# and https://sonarcloud.io/documentation/analysis/analysis-parameters/ + +# Organization and project keys are displayed in the right sidebar of the project homepage +sonar.organization=apache +sonar.projectKey=poi-parent +sonar.host.url=https://sonarcloud.io + +sonar.jacoco.reportPaths=target/jacoco.exec +sonar.coverage.jacoco.xmlReportPaths=target/site/jacoco/jacoco.xml \ No newline at end of file - To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org For additional commands, e-mail: commits-h...@poi.apache.org
svn commit: r1872402 - /poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
Author: kiwiwings Date: Tue Jan 7 00:53:19 2020 New Revision: 1872402 URL: http://svn.apache.org/viewvc?rev=1872402=rev Log: ignore path conversion for URLs Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java?rev=1872402=1872401=1872402=diff == --- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java Tue Jan 7 00:53:19 2020 @@ -134,7 +134,11 @@ public final class TestBugs extends Base for (int i=0; i
svn commit: r1872400 - in /poi/trunk/sonar: integration-test/ integration-test/pom.xml pom.xml
Author: kiwiwings Date: Tue Jan 7 00:44:01 2020 New Revision: 1872400 URL: http://svn.apache.org/viewvc?rev=1872400=rev Log: add integration-test to sonar to update test coverage Added: poi/trunk/sonar/integration-test/ poi/trunk/sonar/integration-test/pom.xml - copied, changed from r1872397, poi/trunk/sonar/ooxml/pom.xml Modified: poi/trunk/sonar/pom.xml Copied: poi/trunk/sonar/integration-test/pom.xml (from r1872397, poi/trunk/sonar/ooxml/pom.xml) URL: http://svn.apache.org/viewvc/poi/trunk/sonar/integration-test/pom.xml?p2=poi/trunk/sonar/integration-test/pom.xml=poi/trunk/sonar/ooxml/pom.xml=1872397=1872400=1872400=diff == --- poi/trunk/sonar/ooxml/pom.xml (original) +++ poi/trunk/sonar/integration-test/pom.xml Tue Jan 7 00:44:01 2020 @@ -8,10 +8,10 @@ poi-parent 4.1.2-SNAPSHOT -poi-ooxml +integration-test jar -Apache POI OOXML package +Apache POI integration test @@ -21,36 +21,6 @@ ${maven.plugin.resources.version} -copy-sources -generate-sources - -copy-resources - - - ${basedir}/src/main/java - - -../../src/ooxml/java - - - - - -copy-resources -generate-resources - -copy-resources - - - ${basedir}/src/main/resources - - - ../../src/resources/ooxml - - - - - copy-tests generate-test-sources @@ -60,7 +30,7 @@ ${basedir}/src/test/java - ../../src/ooxml/testcases + ../../src/integrationtest @@ -84,7 +54,7 @@ - + @@ -94,6 +64,7 @@ ${maven.plugin.surefire.version} @{argLine} -Duser.language=en -Duser.country=US -Xmx1024m -Djava.io.tmpdir=${basedir}/target/tmp -XX:-OmitStackTraceInFastThrow +../.. @@ -102,65 +73,21 @@ ${project.groupId} -poi-ooxml-schema -${project.version} - - -${project.groupId} -poi-ooxml-schema-encryption +poi-ooxml ${project.version} ${project.groupId} -poi-ooxml-schema-security +poi-scratchpad ${project.version} ${project.groupId} -poi-main +poi-examples ${project.version} - -${project.groupId} -poi-main -${project.version} -test-jar -test - - org.apache.xmlbeans - xmlbeans - ${xmlbeans.version} - - - -org.bouncycastle -bcpkix-jdk15on -1.62 - - -org.bouncycastle -bcprov-jdk15on -1.62 - - -org.apache.santuario -xmlsec -2.1.2 - - -org.apache.commons -commons-compress -1.19 - - -com.github.virtuald -curvesapi -1.06 - - - junit junit ${junit.version} @@ -180,17 +107,13 @@ test -org.openjdk.jmh -jmh-generator-annprocess -1.19 +org.apache.ant +ant +1.10.7 test - - -org.apache.xmlgraphics -batik-all -1.11 - + + Modified: poi/trunk/sonar/pom.xml URL: http://svn.apache.org/viewvc/poi/trunk/sonar/pom.xml?rev=1872400=1872399=1872400=diff
svn commit: r1872397 [1/3] - in /poi/trunk/src/testcases/org/apache/poi: hssf/usermodel/TestBugs.java ss/usermodel/BaseTestBugzillaIssues.java
Author: kiwiwings Date: Mon Jan 6 21:48:00 2020 New Revision: 1872397 URL: http://svn.apache.org/viewvc?rev=1872397=rev Log: sonar fixes - use assert in junit tests use try-with-resources remove obsolete and renamed OPOIFS references add logic to unit tests which just opened a file, by rewriting it and some formula evaluation logic Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java - To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org For additional commands, e-mail: commits-h...@poi.apache.org
svn commit: r1872397 [3/3] - in /poi/trunk/src/testcases/org/apache/poi: hssf/usermodel/TestBugs.java ss/usermodel/BaseTestBugzillaIssues.java
Modified: poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java?rev=1872397=1872396=1872397=diff == --- poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java (original) +++ poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java Mon Jan 6 21:48:00 2020 @@ -50,8 +50,6 @@ import org.junit.Test; /** * A base class for bugzilla issues that can be described in terms of common ss interfaces. - * - * @author Yegor Kozlov */ public abstract class BaseTestBugzillaIssues { private static final POILogger logger = POILogFactory.getLogger(BaseTestBugzillaIssues.class); @@ -73,7 +71,7 @@ public abstract class BaseTestBugzillaIs * where delta is an absolute error value, this function's factor is a relative error, * so it's easier to express "actual is within 5% of expected". */ -public static void assertAlmostEquals(double expected, double actual, float factor) { +private static void assertAlmostEquals(double expected, double actual, float factor) { double diff = Math.abs(expected - actual); double fuzz = expected * factor; if (diff > fuzz) { @@ -89,22 +87,21 @@ public abstract class BaseTestBugzillaIs */ @Test public final void bug23094() throws IOException { -Workbook wb1 = _testDataProvider.createWorkbook(); -Sheet s = wb1.createSheet(); -Row r = s.createRow(0); - r.createCell(0).setCellFormula("HYPERLINK(\"http://jakarta.apache.org\",\"Jakarta\;)"); - r.createCell(1).setCellFormula("HYPERLINK(\"http://google.com\",\"Google\;)"); - -Workbook wb2 = _testDataProvider.writeOutAndReadBack(wb1); -wb1.close(); -r = wb2.getSheetAt(0).getRow(0); - -Cell cell_0 = r.getCell(0); -assertEquals("HYPERLINK(\"http://jakarta.apache.org\",\"Jakarta\;)", cell_0.getCellFormula()); -Cell cell_1 = r.getCell(1); -assertEquals("HYPERLINK(\"http://google.com\",\"Google\;)", cell_1.getCellFormula()); - -wb2.close(); +try (Workbook wb1 = _testDataProvider.createWorkbook()) { +Sheet s = wb1.createSheet(); +Row r = s.createRow(0); + r.createCell(0).setCellFormula("HYPERLINK(\"http://jakarta.apache.org\",\"Jakarta\;)"); + r.createCell(1).setCellFormula("HYPERLINK(\"http://google.com\",\"Google\;)"); + +try (Workbook wb2 = _testDataProvider.writeOutAndReadBack(wb1)) { +r = wb2.getSheetAt(0).getRow(0); + +Cell cell_0 = r.getCell(0); + assertEquals("HYPERLINK(\"http://jakarta.apache.org\",\"Jakarta\;)", cell_0.getCellFormula()); +Cell cell_1 = r.getCell(1); +assertEquals("HYPERLINK(\"http://google.com\",\"Google\;)", cell_1.getCellFormula()); +} +} } /** @@ -113,40 +110,40 @@ public abstract class BaseTestBugzillaIs * @param num the number of strings to generate */ public final void bug15375(int num) throws IOException { -Workbook wb1 = _testDataProvider.createWorkbook(); -Sheet sheet = wb1.createSheet(); -CreationHelper factory = wb1.getCreationHelper(); - -for (int i = 0; i < num; i++) { -String tmp1 = "Test1" + i; -String tmp2 = "Test2" + i; -String tmp3 = "Test3" + i; - -Row row = sheet.createRow(i); - -Cell cell = row.createCell(0); -cell.setCellValue(factory.createRichTextString(tmp1)); -cell = row.createCell(1); -cell.setCellValue(factory.createRichTextString(tmp2)); -cell = row.createCell(2); -cell.setCellValue(factory.createRichTextString(tmp3)); -} -Workbook wb2 = _testDataProvider.writeOutAndReadBack(wb1); -wb1.close(); +try (Workbook wb1 = _testDataProvider.createWorkbook()) { +Sheet sheet = wb1.createSheet(); +CreationHelper factory = wb1.getCreationHelper(); + +for (int i = 0; i < num; i++) { +String tmp1 = "Test1" + i; +String tmp2 = "Test2" + i; +String tmp3 = "Test3" + i; + +Row row = sheet.createRow(i); + +Cell cell = row.createCell(0); +cell.setCellValue(factory.createRichTextString(tmp1)); +cell = row.createCell(1); +cell.setCellValue(factory.createRichTextString(tmp2)); +cell = row.createCell(2); +cell.setCellValue(factory.createRichTextString(tmp3)); +} -sheet = wb2.getSheetAt(0); -for (int i = 0; i < num; i++) { -String tmp1 = "Test1" + i; -String
svn commit: r1872397 [2/3] - in /poi/trunk/src/testcases/org/apache/poi: hssf/usermodel/TestBugs.java ss/usermodel/BaseTestBugzillaIssues.java
Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java?rev=1872397=1872396=1872397=diff == --- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java Mon Jan 6 21:48:00 2020 @@ -18,31 +18,33 @@ package org.apache.poi.hssf.usermodel; import static org.apache.poi.POITestCase.assertContains; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNotSame; -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 org.apache.poi.hssf.HSSFTestDataSamples.openSampleWorkbook; +import static org.apache.poi.hssf.HSSFTestDataSamples.writeOutAndReadBack; +import static org.junit.Assert.*; -import javax.imageio.ImageIO; 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 java.net.URL; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; +import java.util.HashSet; import java.util.Iterator; +import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; +import java.util.Map; +import java.util.Objects; +import java.util.Set; import java.util.TimeZone; +import java.util.function.Consumer; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +import javax.imageio.ImageIO; import org.apache.poi.EncryptedDocumentException; import org.apache.poi.hpsf.PropertySet; @@ -87,9 +89,13 @@ 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.LocaleUtil; +import org.junit.AfterClass; import org.junit.Assume; +import org.junit.BeforeClass; import org.junit.Ignore; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; /** * Testcases for bugs entered in bugzilla @@ -99,42 +105,57 @@ import org.junit.Test; * define the test in the base class {@link BaseTestBugzillaIssues} */ public final class TestBugs extends BaseTestBugzillaIssues { + +@Rule +public ExpectedException thrown = ExpectedException.none(); + public TestBugs() { super(HSSFITestDataProvider.instance); } -private static HSSFWorkbook openSample(String sampleFileName) { -return HSSFITestDataProvider.instance.openSampleWorkbook(sampleFileName); +private static final Map SIMPLE_REFS = new LinkedHashMap<>(); + +// References used for the simpleTest convenience method +@BeforeClass +public static void initSimpleRefs() { +String[] refs = { +"Calculations", +"/Documents and Settings/crawformk.EUU/Local Settings/Temporary Internet Files/OLK64/Daily Status Report Generation Files/DST - Daily Data Transfer Sheet - 2002.xls", +"Sheet1", +"/Documents and Settings/donnag/Local Settings/Temporary Internet Files/OLK7/0231324V1-1.xls", +"Sheet1", +"refs/airport.xls", +"Sheet1", +"9http://www.principlesofeconometrics.com/excel/airline.xls;, +"Sheet1", +"C:Documents and Settings/Yegor/My Documents/csco.xls", +}; + +for (int i=0; i assertNotNull(wb.getSheetAt(0).getRow(45))); } /** * Double byte strings */ @Test -public void bug22742() { -openSample("22742.xls"); +public void bug22742() throws IOException { +simpleTest("22742.xls"); } /** * Double byte strings */ @Test -public void bug12561_1() { -openSample("12561-1.xls"); +public void bug12561_1() throws IOException { +simpleTest("12561-1.xls"); } /** * Double byte strings */ @Test -public void bug12561_2() { -openSample("12561-2.xls"); +public void bug12561_2() throws IOException { +simpleTest("12561-2.xls"); } /** @@ -241,8 +252,8 @@ public final class TestBugs extends Base * File supplied by jubeson */ @Test -public void bug12843_1() { -openSample("12843-1.xls"); +public void bug12843_1() throws IOException { +simpleTest("12843-1.xls"); } /** @@ -250,45 +261,45 @@ public final class TestBugs extends Base * File supplied by Paul Chung */ @Test -public void bug12843_2() { -openSample("12843-2.xls"); +public void bug12843_2()
svn commit: r1872302 [1/2] - in /poi/trunk/src: java/org/apache/poi/hssf/record/ testcases/org/apache/poi/hssf/extractor/ testcases/org/apache/poi/hssf/model/ testcases/org/apache/poi/hssf/record/ tes
Author: kiwiwings Date: Fri Jan 3 23:30:36 2020 New Revision: 1872302 URL: http://svn.apache.org/viewvc?rev=1872302=rev Log: Sonar fixes - Tests should include assertions Modified: poi/trunk/src/java/org/apache/poi/hssf/record/OldSheetRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/extractor/TestOldExcelExtractor.java poi/trunk/src/testcases/org/apache/poi/hssf/model/TestDrawingAggregate.java poi/trunk/src/testcases/org/apache/poi/hssf/model/TestFormulaParser.java poi/trunk/src/testcases/org/apache/poi/hssf/model/TestSheet.java poi/trunk/src/testcases/org/apache/poi/hssf/record/TestBOFRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/TestCFRuleRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/TestCommonObjectDataSubRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/TestEmbeddedObjectRefSubRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/TestExtendedFormatRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/TestExternalNameRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFontRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/TestHyperlinkRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/TestLbsDataSubRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNameCommentRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNameRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNoteRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/TestObjRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/TestPaneRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/TestRecalcIdRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSCLRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/TestStyleRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSubRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSupBookRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/TestTableRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/TestWriteAccessRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestAreaFormatRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestAreaRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestAxisLineFormatRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestAxisOptionsRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestAxisParentRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestAxisRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestAxisUsedRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestBarRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestCategorySeriesAxisRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestChartRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestDatRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestDataFormatRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestDefaultDataLabelTextPropertiesRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestFontBasisRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestFontIndexRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestFrameRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestLegendRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestLineFormatRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestLinkedDataRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestNumberFormatIndexRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestObjectLinkRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestPlotGrowthRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestSeriesChartGroupIndexRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestSeriesIndexRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestSeriesLabelsRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestSeriesListRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestSeriesRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestSeriesTextRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestSeriesToChartGroupRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestSheetPropertiesRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestTextRecord.java poi/trunk/src/testcases/org
svn commit: r1872302 [2/2] - in /poi/trunk/src: java/org/apache/poi/hssf/record/ testcases/org/apache/poi/hssf/extractor/ testcases/org/apache/poi/hssf/model/ testcases/org/apache/poi/hssf/record/ tes
Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestExternalNameRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestExternalNameRecord.java?rev=1872302=1872301=1872302=diff == --- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestExternalNameRecord.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestExternalNameRecord.java Fri Jan 3 23:30:36 2020 @@ -17,6 +17,7 @@ package org.apache.poi.hssf.record; +import static org.apache.poi.hssf.record.TestcaseRecordInputStream.confirmRecordEncoding; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; @@ -57,7 +58,7 @@ public final class TestExternalNameRecor assertEquals("FDS", enr.getText()); // bug 44695 - TestcaseRecordInputStream.confirmRecordEncoding(0x0023, dataFDS, enr.serialize()); + confirmRecordEncoding(0x0023, dataFDS, enr.serialize()); } @Test @@ -81,7 +82,7 @@ public final class TestExternalNameRecor assertFalse(enr.isPicureLink()); assertTrue(enr.isStdDocumentNameIdentifier()); - TestcaseRecordInputStream.confirmRecordEncoding(0x0023, dataAutoDocName, enr.serialize()); + confirmRecordEncoding(0x0023, dataAutoDocName, enr.serialize()); } @Test @@ -96,7 +97,7 @@ public final class TestExternalNameRecor assertFalse(enr.isPicureLink()); assertFalse(enr.isStdDocumentNameIdentifier()); - TestcaseRecordInputStream.confirmRecordEncoding(0x0023, dataPlainName, enr.serialize()); + confirmRecordEncoding(0x0023, dataPlainName, enr.serialize()); } @Test @@ -121,7 +122,7 @@ public final class TestExternalNameRecor ExternalNameRecord enr = createSimpleENR(dataDDE); assertEquals("010672AT0 MUNI,[RTG_MOODY_UNDERLYING,RTG_SP_UNDERLYING]", enr.getText()); - TestcaseRecordInputStream.confirmRecordEncoding(0x0023, dataDDE, enr.serialize()); + confirmRecordEncoding(0x0023, dataDDE, enr.serialize()); } @Test Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFontRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFontRecord.java?rev=1872302=1872301=1872302=diff == --- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFontRecord.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFontRecord.java Fri Jan 3 23:30:36 2020 @@ -18,6 +18,7 @@ package org.apache.poi.hssf.record; +import static org.apache.poi.hssf.record.TestcaseRecordInputStream.confirmRecordEncoding; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; @@ -67,6 +68,7 @@ public final class TestFontRecord { assertEquals(21 + 4, record.getRecordSize()); } +@SuppressWarnings("squid:S2699") @Test public void testStore() { // .fontheight = c8 @@ -96,7 +98,7 @@ public final class TestFontRecord { record.setFontName("Arial"); byte [] recordBytes = record.serialize(); -TestcaseRecordInputStream.confirmRecordEncoding(0x31, data, recordBytes); +confirmRecordEncoding(0x31, data, recordBytes); } @Test @@ -150,6 +152,6 @@ public final class TestFontRecord { assertEquals(0, fr.getFontName().length()); byte[] recordBytes = fr.serialize(); -TestcaseRecordInputStream.confirmRecordEncoding(SID, emptyNameData, recordBytes); +confirmRecordEncoding(SID, emptyNameData, recordBytes); } } Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestHyperlinkRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestHyperlinkRecord.java?rev=1872302=1872301=1872302=diff == --- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestHyperlinkRecord.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestHyperlinkRecord.java Fri Jan 3 23:30:36 2020 @@ -16,6 +16,7 @@ */ package org.apache.poi.hssf.record; +import static org.apache.poi.hssf.record.TestcaseRecordInputStream.confirmRecordEncoding; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; @@ -453,12 +454,13 @@ public final class TestHyperlinkRecord { } +@SuppressWarnings("squid:S2699") @Test
svn commit: r1872223 - in /poi/trunk/src: java/org/apache/poi/util/LZWDecompresser.java scratchpad/src/org/apache/poi/hdgf/HDGFLZW.java scratchpad/src/org/apache/poi/hdgf/HDGFLZWCompressor.java scratc
Author: kiwiwings Date: Wed Jan 1 22:44:42 2020 New Revision: 1872223 URL: http://svn.apache.org/viewvc?rev=1872223=rev Log: Fix Visio compression Modified: poi/trunk/src/java/org/apache/poi/util/LZWDecompresser.java poi/trunk/src/scratchpad/src/org/apache/poi/hdgf/HDGFLZW.java poi/trunk/src/scratchpad/src/org/apache/poi/hdgf/HDGFLZWCompressor.java poi/trunk/src/scratchpad/testcases/org/apache/poi/hdgf/TestHDGFLZW.java Modified: poi/trunk/src/java/org/apache/poi/util/LZWDecompresser.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/util/LZWDecompresser.java?rev=1872223=187=1872223=diff == --- poi/trunk/src/java/org/apache/poi/util/LZWDecompresser.java (original) +++ poi/trunk/src/java/org/apache/poi/util/LZWDecompresser.java Wed Jan 1 22:44:42 2020 @@ -23,184 +23,167 @@ import java.io.OutputStream; /** * This class provides common functionality for the - * various LZW implementations in the different file - * formats. + * various LZW implementations in the different file + * formats. * It's currently used by HDGF and HMEF. - * + * * Two good resources on LZW are: - * http://en.wikipedia.org/wiki/LZW - * http://marknelson.us/1989/10/01/lzw-data-compression/ + * http://en.wikipedia.org/wiki/LZW + * http://marknelson.us/1989/10/01/lzw-data-compression/ */ public abstract class LZWDecompresser { - //arbitrarily selected; may need to increase - private static final int MAX_RECORD_LENGTH = 1_000_000; - - /** -* Does the mask bit mean it's compressed or uncompressed? -*/ - private final boolean maskMeansCompressed; - /** -* How much to append to the code length in the stream -* to get the real code length? Normally 2 or 3 -*/ - private final int codeLengthIncrease; - /** -* Does the 12 bits of the position get stored in -* Little Endian or Big Endian form? -* This controls whether a pos+length of 0x12 0x34 -* becomes a position of 0x123 or 0x312 -*/ - private final boolean positionIsBigEndian; - - protected LZWDecompresser(boolean maskMeansCompressed, -int codeLengthIncrease, boolean positionIsBigEndian) { - this.maskMeansCompressed = maskMeansCompressed; - this.codeLengthIncrease = codeLengthIncrease; - this.positionIsBigEndian = positionIsBigEndian; - } - - /** -* Populates the dictionary, and returns where in it -* to begin writing new codes. -* Generally, if the dictionary is pre-populated, then new -* codes should be placed at the end of that block. -* Equally, if the dictionary is left with all zeros, then -* usually the new codes can go in at the start. -*/ - protected abstract int populateDictionary(byte[] dict); - - /** -* Adjusts the position offset if needed when looking -* something up in the dictionary. -*/ - protected abstract int adjustDictionaryOffset(int offset); - - /** -* Decompresses the given input stream, returning the array of bytes -* of the decompressed input. -*/ - public byte[] decompress(InputStream src) throws IOException { - ByteArrayOutputStream res = new ByteArrayOutputStream(); - decompress(src,res); - return res.toByteArray(); - } - - /** -* Perform a streaming decompression of the input. -* Works by: -* 1) Reading a flag byte, the 8 bits of which tell you if the -* following 8 codes are compressed our un-compressed -* 2) Consider the 8 bits in turn -* 3) If the bit is set, the next code is un-compressed, so -* add it to the dictionary and output it -* 4) If the bit isn't set, then read in the length and start -* position in the dictionary, and output the bytes there -* 5) Loop until we've done all 8 bits, then read in the next -* flag byte -*/ - public void decompress(InputStream src, OutputStream res) throws IOException { - // How far through the output we've got - // (This is normally used &4095, so it nicely wraps) - // The initial value is set when populating the dictionary - int pos; - // The flag byte is treated as its 8 individual - // bits, which tell us if the following 8 codes - // are compressed or un-compressed - int flag; - // The mask, between 1 and 255, which is used when - // processing each bit of the flag byte in turn - int mask; - - // We use 12 bit codes: - // * 0-255 are real bytes - // * 256-4095 are the substring codes - // Java handily initialises our buffer / dictionary - // to all zeros - byte[] buffer = new byte[4096]; - pos = populateDictionary(buffer); - - // These are bytes as looked up in the dictionary - // It needs to be signed, as it'll get passed on to - // the output stream - byte[] dataB = IOUtils.safelyAllocat
svn commit: r1872092 - in /poi/trunk/src: excelant/testcases/org/apache/poi/ss/excelant/ testcases/org/apache/poi/ testcases/org/apache/poi/ddf/ testcases/org/apache/poi/hpsf/basic/
Author: kiwiwings Date: Mon Dec 30 00:08:24 2019 New Revision: 1872092 URL: http://svn.apache.org/viewvc?rev=1872092=rev Log: Sonar fixes Modified: poi/trunk/src/excelant/testcases/org/apache/poi/ss/excelant/TestBuildFile.java poi/trunk/src/testcases/org/apache/poi/POITestCase.java poi/trunk/src/testcases/org/apache/poi/TestPOITestCase.java poi/trunk/src/testcases/org/apache/poi/ddf/TestEscherContainerRecord.java poi/trunk/src/testcases/org/apache/poi/ddf/TestEscherDump.java poi/trunk/src/testcases/org/apache/poi/hpsf/basic/TestReadAllFiles.java poi/trunk/src/testcases/org/apache/poi/hpsf/basic/TestWrite.java Modified: poi/trunk/src/excelant/testcases/org/apache/poi/ss/excelant/TestBuildFile.java URL: http://svn.apache.org/viewvc/poi/trunk/src/excelant/testcases/org/apache/poi/ss/excelant/TestBuildFile.java?rev=1872092=1872091=1872092=diff == --- poi/trunk/src/excelant/testcases/org/apache/poi/ss/excelant/TestBuildFile.java (original) +++ poi/trunk/src/excelant/testcases/org/apache/poi/ss/excelant/TestBuildFile.java Mon Dec 30 00:08:24 2019 @@ -345,6 +345,8 @@ public class TestBuildFile { @Test public void testPassOnError() { executeTarget("test-passonerror"); +assertLogContaining("Using input file: " + TestBuildFile.getDataDir() + "/spreadsheet/excelant.xls"); +assertLogContaining("Test named failonerror failed because 1 of 0 evaluations failed to evaluate correctly."); } @Test Modified: poi/trunk/src/testcases/org/apache/poi/POITestCase.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/POITestCase.java?rev=1872092=1872091=1872092=diff == --- poi/trunk/src/testcases/org/apache/poi/POITestCase.java (original) +++ poi/trunk/src/testcases/org/apache/poi/POITestCase.java Mon Dec 30 00:08:24 2019 @@ -17,37 +17,32 @@ package org.apache.poi; -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertEquals; +import static org.hamcrest.CoreMatchers.containsString; +import static org.hamcrest.CoreMatchers.endsWith; +import static org.hamcrest.CoreMatchers.hasItem; +import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.CoreMatchers.startsWith; import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.junit.Assume.assumeTrue; -import static org.hamcrest.CoreMatchers.containsString; -import static org.hamcrest.CoreMatchers.startsWith; -import static org.hamcrest.CoreMatchers.endsWith; -import static org.hamcrest.CoreMatchers.not; -import static org.hamcrest.CoreMatchers.hasItem; - -import java.lang.reflect.AccessibleObject; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.security.AccessController; import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; -import java.util.ArrayList; -import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; -import org.apache.poi.util.SuppressForbidden; import org.apache.poi.util.Internal; +import org.apache.poi.util.SuppressForbidden; +import org.mockito.internal.matchers.apachecommons.ReflectionEquals; /** - * Util class for POI JUnit TestCases, which provide additional features + * Util class for POI JUnit TestCases, which provide additional features */ @Internal public final class POITestCase { @@ -69,7 +64,7 @@ public final class POITestCase { assertNotNull(suffix); assertThat(string, endsWith(suffix)); } - + public static void assertContains(String haystack, String needle) { assertNotNull(haystack); assertNotNull(needle); @@ -94,13 +89,13 @@ public final class POITestCase { public static void assertContainsIgnoreCase(String haystack, String needle) { assertContainsIgnoreCase(haystack, needle, Locale.ROOT); } - + public static void assertNotContained(String haystack, String needle) { assertNotNull(haystack); assertNotNull(needle); assertThat(haystack, not(containsString(needle))); } - + /** * @param map haystack * @param key needle @@ -118,7 +113,7 @@ public final class POITestCase { fail("Set should not contain " + element); }*/ } - + /** * Utility method to get the value of a private/protected field. * Only use this method in test cases!!! @@ -140,7 +135,7 @@ public final class POITestCase { throw new RuntimeException("Cannot access field '" + fieldName + "' of class " + clazz, pae.getException(
svn commit: r1872091 - /poi/site/src/documentation/content/xdocs/changes.xml
Author: kiwiwings Date: Mon Dec 30 00:04:46 2019 New Revision: 1872091 URL: http://svn.apache.org/viewvc?rev=1872091=rev Log: #64036 - add changes info Modified: poi/site/src/documentation/content/xdocs/changes.xml Modified: poi/site/src/documentation/content/xdocs/changes.xml URL: http://svn.apache.org/viewvc/poi/site/src/documentation/content/xdocs/changes.xml?rev=1872091=1872090=1872091=diff == --- poi/site/src/documentation/content/xdocs/changes.xml (original) +++ poi/site/src/documentation/content/xdocs/changes.xml Mon Dec 30 00:04:46 2019 @@ -96,7 +96,8 @@ Inconsistent mapping of Norwegian locales for date formats Fix Bug in XSSFTable.setCellReferences when table is single cell Replace Cloneable / clone() with copy constructor - +Replace reflection calls in factories for Java 9+ +cd @@ -157,7 +158,6 @@ Conditional Format rule evaluation calculates relative references incorrectly Fix NPE in EDATE function when date evaluates to an invalid value Work around illegal reflective access in Java 9+ when freeing buffers -Work around illegal reflective access in Java 9+ when freeing buffers OPCPackage Potentially clobbers files on close() Make D* functions ignore case in headings Adding custom properties creates invalid .xlsx file on second write - To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org For additional commands, e-mail: commits-h...@poi.apache.org
svn commit: r1872066 - in /poi/trunk/src: java/org/apache/poi/hssf/usermodel/ java/org/apache/poi/sl/usermodel/ java/org/apache/poi/ss/usermodel/ ooxml/java/org/apache/poi/xslf/usermodel/ ooxml/java/o
Author: kiwiwings Date: Sat Dec 28 22:39:26 2019 New Revision: 1872066 URL: http://svn.apache.org/viewvc?rev=1872066=rev Log: #64036 - remove reflective calls in Workbook- and SlideShowFactory Modified: poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbookFactory.java poi/trunk/src/java/org/apache/poi/sl/usermodel/SlideShowFactory.java poi/trunk/src/java/org/apache/poi/ss/usermodel/WorkbookFactory.java poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSlideShowFactory.java poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbookFactory.java poi/trunk/src/ooxml/testcases/org/apache/poi/ss/TestWorkbookFactory.java poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlideShowFactory.java Modified: poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbookFactory.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbookFactory.java?rev=1872066=1872065=1872066=diff == --- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbookFactory.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbookFactory.java Sat Dec 28 22:39:26 2019 @@ -31,6 +31,12 @@ import org.apache.poi.util.Internal; @SuppressWarnings("unused") @Internal public class HSSFWorkbookFactory extends WorkbookFactory { + +static { +WorkbookFactory.createHssfFromScratch = HSSFWorkbookFactory::createWorkbook; +WorkbookFactory.createHssfByNode = HSSFWorkbookFactory::createWorkbook; +} + /** * Create a new empty Workbook * Modified: poi/trunk/src/java/org/apache/poi/sl/usermodel/SlideShowFactory.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/usermodel/SlideShowFactory.java?rev=1872066=1872065=1872066=diff == --- poi/trunk/src/java/org/apache/poi/sl/usermodel/SlideShowFactory.java (original) +++ poi/trunk/src/java/org/apache/poi/sl/usermodel/SlideShowFactory.java Sat Dec 28 22:39:26 2019 @@ -20,21 +20,40 @@ import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; import org.apache.poi.EncryptedDocumentException; -import org.apache.poi.OldFileFormatException; import org.apache.poi.hssf.record.crypto.Biff8EncryptionKey; import org.apache.poi.poifs.crypt.Decryptor; import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.poifs.filesystem.DocumentFactoryHelper; import org.apache.poi.poifs.filesystem.FileMagic; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.poifs.filesystem.OfficeXmlFileException; +import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.util.IOUtils; -public class SlideShowFactory { +@SuppressWarnings("unchecked") +public abstract class SlideShowFactory { + +protected interface CreateSlideShow1 { +SlideShow apply(T t) throws IOException; +} + +protected interface CreateSlideShow2 { +SlideShow apply(T t, U u) throws IOException; +} + +// XMLSlideShow createSlideShow(InputStream stream) +protected static CreateSlideShow1 createXslfByStream; + +// XMLSlideShow createSlideShow(File file, boolean readOnly) +protected static CreateSlideShow2 createXslfByFile; + +// HSLFSlideShow createSlideShow(final POIFSFileSystem fs) +protected static CreateSlideShow1 createHslfByPoifs; + +// HSLFSlideShow createSlideShow(final DirectoryNode root) +protected static CreateSlideShow1 createHslfByNode; + /** * Creates a SlideShow from the given POIFSFileSystem. * @@ -106,8 +125,8 @@ public class SlideShowFactory { InputStream stream = null; try { stream = DocumentFactoryHelper.getDecryptedStream(root, password); - -return createXSLFSlideShow(stream); +initXslf(); +return (SlideShow) createXslfByStream.apply(stream); } finally { IOUtils.closeQuietly(stream); @@ -125,7 +144,8 @@ public class SlideShowFactory { passwordSet = true; } try { -return createHSLFSlideShow(root); +initHslf(); +return (SlideShow) createHslfByNode.apply(root); } finally { if (passwordSet) { Biff8EncryptionKey.setCurrentUserPassword(null); @@ -162,7 +182,7 @@ public class SlideShowFactory { /** * Creates the appropriate HSLFSlideShow / XMLSlideShow from * the given InputStream, which may be password protected. - * + * * Note that using an {@link InputStream} has a higher memory footprint * than using a {@link File}.
svn commit: r1872041 [7/23] - in /poi/trunk/src: excelant/testcases/org/apache/poi/ss/examples/formula/ excelant/testcases/org/apache/poi/ss/excelant/ excelant/testcases/org/apache/poi/ss/excelant/uti
Modified: poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestMissingRecordAwareHSSFListener.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestMissingRecordAwareHSSFListener.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestMissingRecordAwareHSSFListener.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestMissingRecordAwareHSSFListener.java Fri Dec 27 23:00:13 2019 @@ -16,343 +16,95 @@ */ package org.apache.poi.hssf.eventusermodel; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; - -import junit.framework.AssertionFailedError; -import junit.framework.TestCase; +import java.util.function.Predicate; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.eventusermodel.dummyrecord.LastCellOfRowDummyRecord; import org.apache.poi.hssf.eventusermodel.dummyrecord.MissingCellDummyRecord; import org.apache.poi.hssf.eventusermodel.dummyrecord.MissingRowDummyRecord; -import org.apache.poi.hssf.record.BOFRecord; import org.apache.poi.hssf.record.BlankRecord; import org.apache.poi.hssf.record.CellValueRecordInterface; import org.apache.poi.hssf.record.DimensionsRecord; -import org.apache.poi.hssf.record.FormulaRecord; import org.apache.poi.hssf.record.LabelSSTRecord; import org.apache.poi.hssf.record.MulBlankRecord; import org.apache.poi.hssf.record.NumberRecord; import org.apache.poi.hssf.record.Record; import org.apache.poi.hssf.record.RowRecord; import org.apache.poi.hssf.record.SharedFormulaRecord; -import org.apache.poi.hssf.record.StringRecord; import org.apache.poi.hssf.record.WindowTwoRecord; import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.junit.Test; + /** * Tests for MissingRecordAwareHSSFListener */ -public final class TestMissingRecordAwareHSSFListener extends TestCase { - - private Record[] r; +public final class TestMissingRecordAwareHSSFListener { - private void readRecords(String sampleFileName) { + private final List _records = new ArrayList<>(); + + private void readRecords(String sampleFileName) throws IOException { + _records.clear(); HSSFRequest req = new HSSFRequest(); - MockHSSFListener mockListen = new MockHSSFListener(); - MissingRecordAwareHSSFListener listener = new MissingRecordAwareHSSFListener(mockListen); - req.addListenerForAllRecords(listener); - + req.addListenerForAllRecords(new MissingRecordAwareHSSFListener(_records::add)); + HSSFEventFactory factory = new HSSFEventFactory(); - try { - InputStream is = HSSFTestDataSamples.openSampleFileStream(sampleFileName); - POIFSFileSystem fs = new POIFSFileSystem(is); + try (InputStream is = HSSFTestDataSamples.openSampleFileStream(sampleFileName); +POIFSFileSystem fs = new POIFSFileSystem(is)) { factory.processWorkbookEvents(req, fs); - } catch (IOException e) { - throw new RuntimeException(e); } - - r = mockListen.getRecords(); - assertTrue(r.length > 100); - } - public void openNormal() { - readRecords("MissingBits.xls"); + + assertTrue(_records.size() > 100); } - - public void testMissingRowRecords() { - openNormal(); - + + @Test + public void testMissingRowRecords() throws IOException { + readRecords("MissingBits.xls"); + // We have rows 0, 1, 2, 20 and 21 - int row0 = -1; - for(int i=0; i r instanceof RowRecord && ((RowRecord)r).getRowNumber() == 0); assertTrue(row0 > -1); - - // Following row 0, we should have 1, 2, then dummy, then 20+21+22 - assertTrue(r[row0] instanceof RowRecord); - assertTrue(r[row0+1] instanceof RowRecord); - assertTrue(r[row0+2] instanceof RowRecord); - assertTrue(r[row0+3] instanceof MissingRowDummyRecord); - assertTrue(r[row0+4] instanceof MissingRowDummyRecord); - assertTrue(r[row0+5] instanceof MissingRowDummyRecord); - assertTrue(r[row0+6] instanceof MissingRowDummyRecord); - // ... - assertTrue(r[row0+18] instanceof MissingRowDummyRecord); - assertTrue(r[row0+19] instanceof
svn commit: r1872041 [17/23] - in /poi/trunk/src: excelant/testcases/org/apache/poi/ss/examples/formula/ excelant/testcases/org/apache/poi/ss/excelant/ excelant/testcases/org/apache/poi/ss/excelant/ut
Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheetUpdateArrayFormulas.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheetUpdateArrayFormulas.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheetUpdateArrayFormulas.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheetUpdateArrayFormulas.java Fri Dec 27 23:00:13 2019 @@ -17,13 +17,19 @@ package org.apache.poi.hssf.usermodel; +import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotEquals; 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.ArrayList; +import java.util.List; +import org.apache.poi.POITestCase; import org.apache.poi.hssf.HSSFITestDataProvider; import org.apache.poi.hssf.record.ArrayRecord; import org.apache.poi.hssf.record.FormulaRecord; @@ -31,7 +37,6 @@ import org.apache.poi.hssf.record.Record import org.apache.poi.hssf.record.aggregates.FormulaRecordAggregate; import org.apache.poi.hssf.record.aggregates.RowRecordsAggregate; import org.apache.poi.hssf.record.aggregates.SharedValueManager; -import org.apache.poi.hssf.record.aggregates.TestSharedValueManager; import org.apache.poi.ss.usermodel.BaseTestSheetUpdateArrayFormulas; import org.apache.poi.ss.usermodel.CellRange; import org.apache.poi.ss.util.CellRangeAddress; @@ -39,9 +44,6 @@ import org.junit.Test; /** * Test array formulas in HSSF - * - * @author Yegor Kozlov - * @author Josh Micich */ public final class TestHSSFSheetUpdateArrayFormulas extends BaseTestSheetUpdateArrayFormulas { @@ -53,27 +55,26 @@ public final class TestHSSFSheetUpdateAr // Local methods here test HSSF-specific details of updating array formulas @Test public void testHSSFSetArrayFormula_singleCell() throws IOException { -HSSFWorkbook workbook = new HSSFWorkbook(); -HSSFSheet sheet = workbook.createSheet("Sheet1"); +try (HSSFWorkbook workbook = new HSSFWorkbook()) { +HSSFSheet sheet = workbook.createSheet("Sheet1"); -CellRangeAddress range = new CellRangeAddress(2, 2, 2, 2); -HSSFCell[] cells = sheet.setArrayFormula("SUM(C11:C12*D11:D12)", range).getFlattenedCells(); -assertEquals(1, cells.length); - -// sheet.setArrayFormula creates rows and cells for the designated range -assertNotNull(sheet.getRow(2)); -HSSFCell cell = sheet.getRow(2).getCell(2); -assertNotNull(cell); - -assertTrue(cell.isPartOfArrayFormulaGroup()); -//retrieve the range and check it is the same -assertEquals(range.formatAsString(), cell.getArrayFormulaRange().formatAsString()); - -FormulaRecordAggregate agg = (FormulaRecordAggregate)cell.getCellValueRecord(); -assertEquals(range.formatAsString(), agg.getArrayFormulaRange().formatAsString()); -assertTrue(agg.isPartOfArrayFormula()); - -workbook.close(); +CellRangeAddress range = new CellRangeAddress(2, 2, 2, 2); +HSSFCell[] cells = sheet.setArrayFormula("SUM(C11:C12*D11:D12)", range).getFlattenedCells(); +assertEquals(1, cells.length); + +// sheet.setArrayFormula creates rows and cells for the designated range +assertNotNull(sheet.getRow(2)); +HSSFCell cell = sheet.getRow(2).getCell(2); +assertNotNull(cell); + +assertTrue(cell.isPartOfArrayFormulaGroup()); +//retrieve the range and check it is the same +assertEquals(range.formatAsString(), cell.getArrayFormulaRange().formatAsString()); + +FormulaRecordAggregate agg = (FormulaRecordAggregate) cell.getCellValueRecord(); +assertEquals(range.formatAsString(), agg.getArrayFormulaRange().formatAsString()); +assertTrue(agg.isPartOfArrayFormula()); +} } /** @@ -81,53 +82,38 @@ public final class TestHSSFSheetUpdateAr */ @Test public void testAddRemoveArrayFormulas_recordUpdates() throws IOException { -HSSFWorkbook wb = new HSSFWorkbook(); -HSSFSheet s = wb.createSheet("Sheet1"); - -CellRange cr = s.setArrayFormula("123", CellRangeAddress.valueOf("B5:C6")); -Record[] recs; -int ix; -recs = RecordInspector.getRecords(s, 0); -ix = findRecordOfType(recs, ArrayRecord.class, 0); -confirmRecordClass(recs, ix-1, FormulaRecord.class); -confirmRecordClass(recs, ix+1, FormulaRecord.class); -confirmRecordClass(recs, ix+2, FormulaRecord.class); -
svn commit: r1872041 [11/23] - in /poi/trunk/src: excelant/testcases/org/apache/poi/ss/examples/formula/ excelant/testcases/org/apache/poi/ss/excelant/ excelant/testcases/org/apache/poi/ss/excelant/ut
Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSSTRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSSTRecord.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSSTRecord.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSSTRecord.java Fri Dec 27 23:00:13 2019 @@ -20,7 +20,6 @@ package org.apache.poi.hssf.record; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.BufferedReader; @@ -36,40 +35,33 @@ import org.apache.poi.hssf.HSSFTestDataS import org.apache.poi.hssf.record.common.UnicodeString; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.poifs.storage.RawDataUtil; import org.apache.poi.util.HexRead; import org.apache.poi.util.LittleEndian; import org.apache.poi.util.LocaleUtil; import org.junit.Test; -import junit.framework.AssertionFailedError; - -/** - * @author Marc Johnson (mjohnson at apache dot org) - * @author Glen Stampoultzis (glens at apache.org) - */ public final class TestSSTRecord { /** * decodes hexdump files and concatenates the results * @param hexDumpFileNames names of sample files in the hssf test data directory - * @throws IOException */ private static byte[] concatHexDumps(String... hexDumpFileNames) throws IOException { int nFiles = hexDumpFileNames.length; ByteArrayOutputStream baos = new ByteArrayOutputStream(nFiles * 8228); -for (int i = 0; i < nFiles; i++) { -String sampleFileName = hexDumpFileNames[i]; -InputStream is = HSSFTestDataSamples.openSampleFileStream(sampleFileName); -BufferedReader br = new BufferedReader(new InputStreamReader(is, LocaleUtil.CHARSET_1252)); - -while (true) { -String line = br.readLine(); -if (line == null) { -break; +for (String sampleFileName : hexDumpFileNames) { +try (InputStream is = HSSFTestDataSamples.openSampleFileStream(sampleFileName)) { +BufferedReader br = new BufferedReader(new InputStreamReader(is, LocaleUtil.CHARSET_1252)); + +while (true) { +String line = br.readLine(); +if (line == null) { +break; +} +baos.write(HexRead.readFromString(line)); } -baos.write(HexRead.readFromString(line)); } -is.close(); } return baos.toByteArray(); @@ -89,7 +81,6 @@ public final class TestSSTRecord { /** * SST is often split over several {@link ContinueRecord}s - * @throws IOException */ @Test public void testContinuedRecord() throws IOException { @@ -120,9 +111,8 @@ public final class TestSSTRecord { //} SSTRecord rec2 = createSSTFromRawData(ser_output); -if (!areSameSSTs(record, rec2)) { -throw new AssertionFailedError("large SST re-serialized incorrectly"); -} +assertRecordEquals(record, rec2); + //if (false) { //// TODO - trivial differences in ContinueRecord break locations //// Sample data should be checked against what most recent Excel version produces. @@ -131,27 +121,8 @@ public final class TestSSTRecord { //} } -private boolean areSameSSTs(SSTRecord a, SSTRecord b) { - -if (a.getNumStrings() != b.getNumStrings()) { -return false; -} -int nElems = a.getNumUniqueStrings(); -if (nElems != b.getNumUniqueStrings()) { -return false; -} -for(int i=0; i> 8 ), -(byte) 8, (byte) 0, (byte) 0, (byte) 0, (byte) 0, -(byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 -}; +byte[] expected = { +(byte) record.getSid(), (byte) ( record.getSid() >> 8 ), +(byte) 8, (byte) 0, (byte) 0, (byte) 0, (byte) 0, +(byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 +}; -assertEquals( expected.length, output.length ); -for ( int k = 0; k < expected.length; k++ ) -{ -assertEquals( String.valueOf( k ), expected[k], output[k] ); -} +assertArrayEquals(expected, output); } /** @@ -345,1117 +311,28 @@ public final class TestSSTRecord { */ @Test public void testReadWriteDuplicatedRichText1() throws Exception { -HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("duprich1.xls"); -
svn commit: r1872041 [14/23] - in /poi/trunk/src: excelant/testcases/org/apache/poi/ss/examples/formula/ excelant/testcases/org/apache/poi/ss/excelant/ excelant/testcases/org/apache/poi/ss/excelant/ut
Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/pivot/TestExtendedPivotTableViewFieldsRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/pivot/TestExtendedPivotTableViewFieldsRecord.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/testcases/org/apache/poi/hssf/record/pivot/TestExtendedPivotTableViewFieldsRecord.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/record/pivot/TestExtendedPivotTableViewFieldsRecord.java Fri Dec 27 23:00:13 2019 @@ -17,60 +17,46 @@ package org.apache.poi.hssf.record.pivot; +import static org.apache.poi.hssf.record.TestcaseRecordInputStream.confirmRecordEncoding; +import static org.junit.Assert.assertEquals; + import org.apache.poi.hssf.record.RecordInputStream; import org.apache.poi.hssf.record.TestcaseRecordInputStream; import org.apache.poi.hssf.record.pivottable.ExtendedPivotTableViewFieldsRecord; import org.apache.poi.util.HexRead; -import org.apache.poi.util.RecordFormatException; - -import junit.framework.AssertionFailedError; -import junit.framework.TestCase; +import org.junit.Test; /** * Tests for {@link ExtendedPivotTableViewFieldsRecord} - * - * @author Josh Micich */ -public final class TestExtendedPivotTableViewFieldsRecord extends TestCase { - +public final class TestExtendedPivotTableViewFieldsRecord { + + @Test public void testSubNameNotPresent_bug46693() { // This data came from attachment 23347 of bug 46693 at offset 0xAA43 byte[] data = HexRead.readFromString( "00 01 14 00" + // BIFF header "1E 14 00 0A FF FF FF FF 00 00 FF FF 00 00 00 00 00 00 00 00"); RecordInputStream in = TestcaseRecordInputStream.create(data); - ExtendedPivotTableViewFieldsRecord rec; - try { - rec = new ExtendedPivotTableViewFieldsRecord(in); - } catch (RecordFormatException e) { - if (e.getMessage().equals("Expected to find a ContinueRecord in order to read remaining 65535 of 65535 chars")) { - throw new AssertionFailedError("Identified bug 46693a"); - } - throw e; - } - + // bug 46693a - Expected to find a ContinueRecord in order to read remaining 65535 of 65535 chars + ExtendedPivotTableViewFieldsRecord rec = new ExtendedPivotTableViewFieldsRecord(in); + assertEquals(data.length, rec.getRecordSize()); } - + + @Test public void testOlderFormat_bug46918() { // There are 10 SXVDEX records in the file (not uploaded) that originated bugzilla 46918 // They all had the following hex encoding: byte[] data = HexRead.readFromString("00 01 0A 00 1E 14 00 0A FF FF FF FF 00 00"); RecordInputStream in = TestcaseRecordInputStream.create(data); - ExtendedPivotTableViewFieldsRecord rec; - try { - rec = new ExtendedPivotTableViewFieldsRecord(in); - } catch (RecordFormatException e) { - if (e.getMessage().equals("Not enough data (0) to read requested (2) bytes")) { - throw new AssertionFailedError("Identified bug 46918"); - } - throw e; - } + // bug 46918 - Not enough data (0) to read requested (2) bytes + ExtendedPivotTableViewFieldsRecord rec = new ExtendedPivotTableViewFieldsRecord(in); byte[] expReserData = HexRead.readFromString("1E 14 00 0A FF FF FF FF 00 00" + "FF FF 00 00 00 00 00 00 00 00"); - - TestcaseRecordInputStream.confirmRecordEncoding(ExtendedPivotTableViewFieldsRecord.sid, expReserData, rec.serialize()); + + confirmRecordEncoding(ExtendedPivotTableViewFieldsRecord.sid, expReserData, rec.serialize()); } } Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/pivot/TestPageItemRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/pivot/TestPageItemRecord.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/testcases/org/apache/poi/hssf/record/pivot/TestPageItemRecord.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/record/pivot/TestPageItemRecord.java Fri Dec 27 23:00:13 2019 @@ -17,47 +17,45 @@ package org.apache.poi.hssf.record.pivot; -import junit.framework.AssertionFailedError; -import junit.framework.TestCase; +import static org.apache.poi.hssf.record.TestcaseRecordInputStream.confirmRecordEncoding; +import
svn commit: r1872041 [1/23] - in /poi/trunk/src: excelant/testcases/org/apache/poi/ss/examples/formula/ excelant/testcases/org/apache/poi/ss/excelant/ excelant/testcases/org/apache/poi/ss/excelant/uti
Author: kiwiwings Date: Fri Dec 27 23:00:13 2019 New Revision: 1872041 URL: http://svn.apache.org/viewvc?rev=1872041=rev Log: Migrate all junit tests to Junit 4 get rid of references to junit.framework don't throw AssertionFailedErrors, but use Assert.fail instead add try-with-resources where it was missing Added: poi/trunk/src/excelant/testcases/org/apache/poi/ss/excelant/TestBuildFile.java - copied, changed from r1872040, poi/trunk/src/excelant/testcases/org/apache/poi/ss/excelant/BuildFileTest.java Removed: poi/trunk/src/excelant/testcases/org/apache/poi/ss/excelant/BuildFileTest.java poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/extensions/TestXSSFSheetComments.java poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/RecordInspector.java Modified: poi/trunk/src/excelant/testcases/org/apache/poi/ss/examples/formula/TestExcelAntUserDefinedFunction.java poi/trunk/src/excelant/testcases/org/apache/poi/ss/excelant/TestExcelAntPrecision.java poi/trunk/src/excelant/testcases/org/apache/poi/ss/excelant/TestExcelAntSet.java poi/trunk/src/excelant/testcases/org/apache/poi/ss/excelant/TestExcelAntSetDoubleCell.java poi/trunk/src/excelant/testcases/org/apache/poi/ss/excelant/util/TestExcelAntWorkbookUtil.java poi/trunk/src/excelant/testcases/org/apache/poi/ss/excelant/util/TestExcelAntWorkbookUtilFactory.java poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/ValueRecordsAggregate.java poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java poi/trunk/src/ooxml/testcases/org/apache/poi/TestEmbedded.java poi/trunk/src/ooxml/testcases/org/apache/poi/TestXMLPropertiesTextExtractor.java poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestListParts.java poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackagePartName.java poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackageThumbnail.java poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackagingURIHelper.java poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestRelationships.java poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/ZipFileAssert.java poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCComplianceCoreProperties.java poi/trunk/src/ooxml/testcases/org/apache/poi/ss/formula/functions/TestProper.java poi/trunk/src/ooxml/testcases/org/apache/poi/util/TestIdentifierManager.java poi/trunk/src/ooxml/testcases/org/apache/poi/xddf/usermodel/chart/TestXDDFDataSourcesFactory.java poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/eventusermodel/TestReadOnlySharedStringsTable.java poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/extractor/TestXSSFExcelExtractor.java poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/extractor/TestXSSFExcelExtractorUsingFactory.java poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/io/TestLoadSaveXSSF.java poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/model/TestCalculationChain.java poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/model/TestSharedStringsTable.java poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/AllXSSFUsermodelTests.java poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/BaseTestXSSFPivotTable.java poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestMatrixFormulasFromXMLSpreadsheet.java poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFChart.java poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheetRowGrouping.java poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheetUpdateArrayFormulas.java poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/charts/TestXSSFCategoryAxis.java poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/charts/TestXSSFChartAxis.java poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/charts/TestXSSFDateAxis.java poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/charts/TestXSSFValueAxis.java poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/extensions/TestXSSFBorder.java poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/helpers/TestHeaderFooterHelper.java poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/util/MemoryUsage.java poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/util/TestCTColComparator.java poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/util/TestNumericRanges.java poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/TestPackageCorePropertiesGetKeywords.java poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/extractor/TestExternalEntities.java poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/extractor/TestXWPFWordExtractor.java poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf
svn commit: r1872041 [19/23] - in /poi/trunk/src: excelant/testcases/org/apache/poi/ss/examples/formula/ excelant/testcases/org/apache/poi/ss/excelant/ excelant/testcases/org/apache/poi/ss/excelant/ut
Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/atp/TestNetworkdaysFunction.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/atp/TestNetworkdaysFunction.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/testcases/org/apache/poi/ss/formula/atp/TestNetworkdaysFunction.java (original) +++ poi/trunk/src/testcases/org/apache/poi/ss/formula/atp/TestNetworkdaysFunction.java Fri Dec 27 23:00:13 2019 @@ -19,6 +19,7 @@ package org.apache.poi.ss.formula.atp; import static org.apache.poi.ss.formula.eval.ErrorEval.NAME_INVALID; import static org.apache.poi.ss.formula.eval.ErrorEval.VALUE_INVALID; +import static org.junit.Assert.assertEquals; import java.util.ArrayList; import java.util.List; @@ -30,10 +31,9 @@ import org.apache.poi.ss.formula.eval.Ar import org.apache.poi.ss.formula.eval.NumericValueEval; import org.apache.poi.ss.formula.eval.StringEval; import org.apache.poi.ss.formula.eval.ValueEval; +import org.junit.Test; -import junit.framework.TestCase; - -public class TestNetworkdaysFunction extends TestCase { +public class TestNetworkdaysFunction { private static final String STARTING_DATE = "2008/10/01"; private static final String END_DATE = "2009/03/01"; @@ -43,46 +43,54 @@ public class TestNetworkdaysFunction ext private static final OperationEvaluationContext EC = new OperationEvaluationContext(null, null, 1, 1, 1, null); +@Test public void testFailWhenNoArguments() { assertEquals(VALUE_INVALID, NetworkdaysFunction.instance.evaluate(new ValueEval[0], null)); } +@Test public void testFailWhenLessThan2Arguments() { assertEquals(VALUE_INVALID, NetworkdaysFunction.instance.evaluate(new ValueEval[1], null)); } +@Test public void testFailWhenMoreThan3Arguments() { assertEquals(VALUE_INVALID, NetworkdaysFunction.instance.evaluate(new ValueEval[4], null)); } +@Test public void testFailWhenArgumentsAreNotDates() { assertEquals(VALUE_INVALID, NetworkdaysFunction.instance.evaluate(new ValueEval[]{ new StringEval("Potato"), new StringEval("Cucumber") }, EC)); } +@Test public void testFailWhenStartDateAfterEndDate() { assertEquals(NAME_INVALID, NetworkdaysFunction.instance.evaluate(new ValueEval[]{ new StringEval(END_DATE), new StringEval(STARTING_DATE) }, EC)); } +@Test public void testReturnNetworkdays() { assertEquals(108, (int) ((NumericValueEval) NetworkdaysFunction.instance.evaluate(new ValueEval[]{ new StringEval(STARTING_DATE), new StringEval(END_DATE) }, EC)).getNumberValue()); } +@Test public void testReturnNetworkdaysWithAHoliday() { assertEquals(107, (int) ((NumericValueEval) NetworkdaysFunction.instance.evaluate(new ValueEval[]{ new StringEval(STARTING_DATE), new StringEval(END_DATE), new StringEval(FIRST_HOLIDAY) }, EC)).getNumberValue()); } +@Test public void testReturnNetworkdaysWithManyHolidays() { assertEquals(105, (int) ((NumericValueEval) NetworkdaysFunction.instance.evaluate(new ValueEval[]{ new StringEval(STARTING_DATE), new StringEval(END_DATE), -new MockAreaEval(FIRST_HOLIDAY, SECOND_HOLIDAY, THIRD_HOLIDAY) }, EC)).getNumberValue()); +new MockAreaEval(FIRST_HOLIDAY, SECOND_HOLIDAY, THIRD_HOLIDAY)}, EC)).getNumberValue()); } -private class MockAreaEval extends AreaEvalBase { +private static class MockAreaEval extends AreaEvalBase { private List holidays; Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/atp/TestPercentile.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/atp/TestPercentile.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/testcases/org/apache/poi/ss/formula/atp/TestPercentile.java (original) +++ poi/trunk/src/testcases/org/apache/poi/ss/formula/atp/TestPercentile.java Fri Dec 27 23:00:13 2019 @@ -16,6 +16,8 @@ */ package org.apache.poi.ss.formula.atp; +import static org.junit.Assert.assertEquals; + import org.apache.poi.ss.formula.eval.AreaEval; import org.apache.poi.ss.formula.eval.BlankEval; import org.apache.poi.ss.formula.eval.BoolEval; @@ -24,24 +26,12 @@ import org.apache.poi.ss.formula.eval.Nu import org.apache.poi.ss.formula.eval.ValueEval; import org.apache.poi.ss.formula.functions.AggregateFunction; import org.apache.poi.ss.formula.functions.EvalFactory; - -import junit.framework.TestCase; +import org.junit.Test; /** * Testcase for Excel function PERCENTILE() - * - * @author T. Gordon */ -public class
svn commit: r1872041 [6/23] - in /poi/trunk/src: excelant/testcases/org/apache/poi/ss/examples/formula/ excelant/testcases/org/apache/poi/ss/excelant/ excelant/testcases/org/apache/poi/ss/excelant/uti
Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestHeaderStories.java URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestHeaderStories.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestHeaderStories.java (original) +++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestHeaderStories.java Fri Dec 27 23:00:13 2019 @@ -17,15 +17,20 @@ package org.apache.poi.hwpf.usermodel; -import junit.framework.TestCase; +import static org.apache.poi.hwpf.HWPFTestDataSamples.openSampleFile; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; import org.apache.poi.hwpf.HWPFDocument; -import org.apache.poi.hwpf.HWPFTestDataSamples; +import org.junit.Before; +import org.junit.Test; /** * Tests for the handling of header stories into headers, footers etc */ -public final class TestHeaderStories extends TestCase { +@SuppressWarnings("deprecation") +public final class TestHeaderStories { private HWPFDocument none; private HWPFDocument header; private HWPFDocument footer; @@ -35,19 +40,20 @@ public final class TestHeaderStories ext private HWPFDocument unicode; private HWPFDocument withFields; - @Override -protected void setUp() { + @Before +public void setUp() { - none = HWPFTestDataSamples.openSampleFile("NoHeadFoot.doc"); - header = HWPFTestDataSamples.openSampleFile("ThreeColHead.doc"); - footer = HWPFTestDataSamples.openSampleFile("ThreeColFoot.doc"); - headerFooter = HWPFTestDataSamples.openSampleFile("SimpleHeadThreeColFoot.doc"); - oddEven = HWPFTestDataSamples.openSampleFile("PageSpecificHeadFoot.doc"); - diffFirst = HWPFTestDataSamples.openSampleFile("DiffFirstPageHeadFoot.doc"); - unicode = HWPFTestDataSamples.openSampleFile("HeaderFooterUnicode.doc"); - withFields = HWPFTestDataSamples.openSampleFile("HeaderWithMacros.doc"); + none = openSampleFile("NoHeadFoot.doc"); + header = openSampleFile("ThreeColHead.doc"); + footer = openSampleFile("ThreeColFoot.doc"); + headerFooter = openSampleFile("SimpleHeadThreeColFoot.doc"); + oddEven = openSampleFile("PageSpecificHeadFoot.doc"); + diffFirst = openSampleFile("DiffFirstPageHeadFoot.doc"); + unicode = openSampleFile("HeaderFooterUnicode.doc"); + withFields = openSampleFile("HeaderWithMacros.doc"); } + @Test public void testNone() { HeaderStories hs = new HeaderStories(none); @@ -55,6 +61,7 @@ public final class TestHeaderStories ext assertEquals(0, hs.getRange().text().length()); } + @Test public void testHeader() { HeaderStories hs = new HeaderStories(header); @@ -99,6 +106,7 @@ public final class TestHeaderStories ext assertEquals("", hs.getOddFooter()); } + @Test public void testFooter() { HeaderStories hs = new HeaderStories(footer); @@ -111,6 +119,7 @@ public final class TestHeaderStories ext assertEquals("Footer Left\tFooter Middle Footer Right\r\r", hs.getOddFooter()); } + @Test public void testHeaderFooter() { HeaderStories hs = new HeaderStories(headerFooter); @@ -123,6 +132,7 @@ public final class TestHeaderStories ext assertEquals("Footer Left\tFooter Middle Footer Right\r\r", hs.getOddFooter()); } + @Test public void testOddEven() { HeaderStories hs = new HeaderStories(oddEven); @@ -145,6 +155,7 @@ public final class TestHeaderStories ext assertEquals("Footer Left\tFooter Middle Footer Right\r\r", hs.getFooter(3)); } + @Test public void testFirst() { HeaderStories hs = new HeaderStories(diffFirst); @@ -162,6 +173,7 @@ public final class TestHeaderStories ext assertEquals("Footer Left\tFooter Middle Footer Right\r\r", hs.getFooter(3)); } + @Test public void testUnicode() { HeaderStories hs = new HeaderStories(unicode); @@ -175,6 +187,7 @@ public final class TestHeaderStories ext assertEquals("The footer, with Moli\u00e8re, has Unicode in it.\r\r", hs.getOddFooter()); } + @Test public void testWithFields() { HeaderStories hs = new HeaderStories(withFields); assertFalse(hs.areFieldsStripped()); Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestLists.java
svn commit: r1872041 [2/23] - in /poi/trunk/src: excelant/testcases/org/apache/poi/ss/examples/formula/ excelant/testcases/org/apache/poi/ss/excelant/ excelant/testcases/org/apache/poi/ss/excelant/uti
Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/TestEmbedded.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/TestEmbedded.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/ooxml/testcases/org/apache/poi/TestEmbedded.java (original) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/TestEmbedded.java Fri Dec 27 23:00:13 2019 @@ -15,26 +15,28 @@ See the License for the specific language governing permissions and limitations under the License. */ - + package org.apache.poi; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + import org.apache.poi.ooxml.POIXMLDocument; +import org.apache.poi.openxml4j.opc.OPCPackage; +import org.apache.poi.openxml4j.opc.PackagePart; import org.apache.poi.util.IOUtils; import org.apache.poi.xslf.usermodel.XSLFSlideShow; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xwpf.usermodel.XWPFDocument; -import org.apache.poi.openxml4j.opc.OPCPackage; -import org.apache.poi.openxml4j.opc.PackagePart; - -import junit.framework.TestCase; +import org.junit.Test; /** - * Class to test that we handle embeded bits in - * OOXML files properly + * Class to test that we handle embeded bits in OOXML files properly */ -public class TestEmbedded extends TestCase -{ +public class TestEmbedded { + @Test public void testExcel() throws Exception { POIXMLDocument doc = new XSSFWorkbook( POIDataSamples.getSpreadSheetInstance().openResourceAsStream("ExcelWithAttachments.xlsm") @@ -42,6 +44,7 @@ public class TestEmbedded extends TestCa test(doc, 4); } + @Test public void testWord() throws Exception { POIXMLDocument doc = new XWPFDocument( POIDataSamples.getDocumentInstance().openResourceAsStream("WordWithAttachments.docx") @@ -49,13 +52,14 @@ public class TestEmbedded extends TestCa test(doc, 5); } + @Test public void testPowerPoint() throws Exception { POIXMLDocument doc = new XSLFSlideShow(OPCPackage.open( POIDataSamples.getSlideShowInstance().openResourceAsStream("PPTWithAttachments.pptm")) ); test(doc, 4); } - + private void test(POIXMLDocument doc, int expectedCount) throws Exception { assertNotNull(doc.getAllEmbeddedParts()); assertEquals(expectedCount, doc.getAllEmbeddedParts().size()); @@ -63,7 +67,7 @@ public class TestEmbedded extends TestCa for(int i=0; i 0); } Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/TestXMLPropertiesTextExtractor.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/TestXMLPropertiesTextExtractor.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/ooxml/testcases/org/apache/poi/TestXMLPropertiesTextExtractor.java (original) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/TestXMLPropertiesTextExtractor.java Fri Dec 27 23:00:13 2019 @@ -17,20 +17,23 @@ package org.apache.poi; import static org.apache.poi.POITestCase.assertContains; - -import junit.framework.TestCase; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; import org.apache.poi.ooxml.extractor.POIXMLPropertiesTextExtractor; -import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.ooxml.util.PackageHelper; +import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.xslf.usermodel.XSLFSlideShow; import org.apache.poi.xssf.extractor.XSSFExcelExtractor; import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.junit.Test; -public final class TestXMLPropertiesTextExtractor extends TestCase { +public final class TestXMLPropertiesTextExtractor { private static final POIDataSamples _ssSamples = POIDataSamples.getSpreadSheetInstance(); private static final POIDataSamples _slSamples = POIDataSamples.getSlideShowInstance(); + @Test public void testGetFromMainExtractor() throws Exception { OPCPackage pkg = PackageHelper.open(_ssSamples.openResourceAsStream("ExcelWithAttachments.xlsm")); @@ -49,11 +52,12 @@ public final class TestXMLPropertiesText assertContains(text, "LastModifiedBy = Yury Batrakov"); assertContains(cText, "LastModifiedBy = Yury Batrakov"); - + textExt.close(); ext.close(); } + @Test public void testCore() throws Exception { OPCPackage pkg =
svn commit: r1872041 [8/23] - in /poi/trunk/src: excelant/testcases/org/apache/poi/ss/examples/formula/ excelant/testcases/org/apache/poi/ss/excelant/ excelant/testcases/org/apache/poi/ss/excelant/uti
Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAutoFilterInfoRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAutoFilterInfoRecord.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAutoFilterInfoRecord.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestAutoFilterInfoRecord.java Fri Dec 27 23:00:13 2019 @@ -18,19 +18,19 @@ package org.apache.poi.hssf.record; import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; -import junit.framework.TestCase; +import org.junit.Test; /** * Tests the AutoFilterInfoRecord class. - * - * @author Yegor Kozlov */ -public final class TestAutoFilterInfoRecord extends TestCase { +public final class TestAutoFilterInfoRecord { private final byte[] data = new byte[] { 0x05, 0x00 }; +@Test public void testRead() { AutoFilterInfoRecord record = new AutoFilterInfoRecord(TestcaseRecordInputStream.create(AutoFilterInfoRecord.sid, data)); @@ -42,6 +42,7 @@ public final class TestAutoFilterInfoRec assertEquals(3, record.getNumEntries()); } +@Test public void testWrite() { AutoFilterInfoRecord record = new AutoFilterInfoRecord(); record.setNumEntries((short)3); @@ -52,6 +53,7 @@ public final class TestAutoFilterInfoRec assertEquals(3, record.getNumEntries()); } +@Test public void testClone() { AutoFilterInfoRecord record = new AutoFilterInfoRecord(); Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestBoolErrRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestBoolErrRecord.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestBoolErrRecord.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestBoolErrRecord.java Fri Dec 27 23:00:13 2019 @@ -18,16 +18,19 @@ package org.apache.poi.hssf.record; import static org.junit.Assert.assertArrayEquals; -import junit.framework.AssertionFailedError; -import junit.framework.TestCase; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; -import org.apache.poi.hssf.record.RecordInputStream.LeftoverDataException; import org.apache.poi.util.HexRead; +import org.junit.Test; + /** * Tests for {@link BoolErrRecord} */ -public final class TestBoolErrRecord extends TestCase { +public final class TestBoolErrRecord { + @Test public void testError() { byte[] data = HexRead.readFromString( "00 00 00 00 0F 00 " + // row, col, xfIndex @@ -38,18 +41,19 @@ public final class TestBoolErrRecord ext BoolErrRecord ber = new BoolErrRecord(in); assertTrue(ber.isError()); assertEquals(7, ber.getErrorValue()); - + TestcaseRecordInputStream.confirmRecordEncoding(BoolErrRecord.sid, data, ber.serialize()); } /** -* Bugzilla 47479 was due to an apparent error in OOO which (as of version 3.0.1) +* Bugzilla 47479 was due to an apparent error in OOO which (as of version 3.0.1) * writes the value field of BOOLERR records as 2 bytes instead of 1. -* Coincidentally, the extra byte written is zero, which is exactly the value +* Coincidentally, the extra byte written is zero, which is exactly the value * required by the isError field. This probably why Excel seems to have * no problem. OOO does not have the same bug for error values (which wouldn't -* work by the same coincidence). +* work by the same coincidence). */ + @Test public void testOooBadFormat_bug47479() { byte[] data = HexRead.readFromString( "05 02 09 00 " + // sid, size @@ -59,19 +63,11 @@ public final class TestBoolErrRecord ext RecordInputStream in = TestcaseRecordInputStream.create(data); BoolErrRecord ber = new BoolErrRecord(in); - boolean hasMore; - try { - hasMore = in.hasNextRecord(); - } catch (LeftoverDataException e) { - if ("Initialisation of record 0x205 left 1 bytes remaining still to be read.".equals(e.getMessage())) { - throw new AssertionFailedError("Identified bug 47479"); - } - throw e; - } + boolean hasMore = in.hasNextRecord(); assertFalse(hasMore);
svn commit: r1872041 [21/23] - in /poi/trunk/src: excelant/testcases/org/apache/poi/ss/examples/formula/ excelant/testcases/org/apache/poi/ss/excelant/ excelant/testcases/org/apache/poi/ss/excelant/ut
Modified: poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java (original) +++ poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestCell.java Fri Dec 27 23:00:13 2019 @@ -32,11 +32,9 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; import java.time.LocalDate; import java.time.LocalDateTime; -import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; -import java.util.List; import java.util.Locale; import java.util.TimeZone; @@ -46,13 +44,13 @@ import org.apache.poi.ss.ITestDataProvid import org.apache.poi.ss.SpreadsheetVersion; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.util.LocaleUtil; -import org.junit.After; import org.junit.Test; /** * Common superclass for testing implementations of * {@link org.apache.poi.ss.usermodel.Cell} */ +@SuppressWarnings("deprecation") public abstract class BaseTestCell { protected final ITestDataProvider _testDataProvider; @@ -66,82 +64,81 @@ public abstract class BaseTestCell { @Test public void testSetValues() throws Exception { -Workbook book = _testDataProvider.createWorkbook(); -Sheet sheet = book.createSheet("test"); -Row row = sheet.createRow(0); - -CreationHelper factory = book.getCreationHelper(); -Cell cell = row.createCell(0); - -cell.setCellValue(1.2); -assertEquals(1.2, cell.getNumericCellValue(), 0.0001); -assertEquals(CellType.NUMERIC, cell.getCellType()); -assertProhibitedValueAccess(cell, CellType.BOOLEAN, CellType.STRING, -CellType.FORMULA, CellType.ERROR); - -cell.setCellValue(false); -assertFalse(cell.getBooleanCellValue()); -assertEquals(CellType.BOOLEAN, cell.getCellType()); -cell.setCellValue(true); -assertTrue(cell.getBooleanCellValue()); -assertProhibitedValueAccess(cell, CellType.NUMERIC, CellType.STRING, CellType.BOOLEAN, -CellType.FORMULA, CellType.ERROR); +try (Workbook book = _testDataProvider.createWorkbook()) { +Sheet sheet = book.createSheet("test"); +Row row = sheet.createRow(0); + +CreationHelper factory = book.getCreationHelper(); +Cell cell = row.createCell(0); + +cell.setCellValue(1.2); +assertEquals(1.2, cell.getNumericCellValue(), 0.0001); +assertEquals(CellType.NUMERIC, cell.getCellType()); +assertProhibitedValueAccess(cell, CellType.BOOLEAN, CellType.STRING, +CellType.FORMULA, CellType.ERROR); -cell.setCellValue(factory.createRichTextString("Foo")); -assertEquals("Foo", cell.getRichStringCellValue().getString()); -assertEquals("Foo", cell.getStringCellValue()); -assertEquals(CellType.STRING, cell.getCellType()); -assertProhibitedValueAccess(cell, CellType.NUMERIC, CellType.BOOLEAN, -CellType.FORMULA, CellType.ERROR); - -cell.setCellValue("345"); -assertEquals("345", cell.getRichStringCellValue().getString()); -assertEquals("345", cell.getStringCellValue()); -assertEquals(CellType.STRING, cell.getCellType()); -assertProhibitedValueAccess(cell, CellType.NUMERIC, CellType.BOOLEAN, -CellType.FORMULA, CellType.ERROR); - -Calendar c = LocaleUtil.getLocaleCalendar(); -c.setTimeInMillis(123456789); -cell.setCellValue(c.getTime()); -assertEquals(c.getTime().getTime(), cell.getDateCellValue().getTime()); -assertEquals(CellType.NUMERIC, cell.getCellType()); -assertProhibitedValueAccess(cell, CellType.BOOLEAN, CellType.STRING, -CellType.FORMULA, CellType.ERROR); - -cell.setCellValue(c); -assertEquals(c.getTime().getTime(), cell.getDateCellValue().getTime()); -assertEquals(CellType.NUMERIC, cell.getCellType()); -assertProhibitedValueAccess(cell, CellType.BOOLEAN, CellType.STRING, -CellType.FORMULA, CellType.ERROR); - -cell.setCellErrorValue(FormulaError.NA.getCode()); -assertEquals(FormulaError.NA.getCode(), cell.getErrorCellValue()); -assertEquals(CellType.ERROR, cell.getCellType()); -assertProhibitedValueAccess(cell, CellType.NUMERIC, CellType.BOOLEAN, -CellType.FORMULA, CellType.STRING); - -LocalDateTime ldt = DateUtil.toLocalDateTime(c); -cell.setCellValue(ldt); -assertEquals(ldt, cell.getLocalDateTimeCellValue()); -assertEquals(CellType.NUMERIC, cell.getCellType()); -
svn commit: r1872041 [20/23] - in /poi/trunk/src: excelant/testcases/org/apache/poi/ss/examples/formula/ excelant/testcases/org/apache/poi/ss/excelant/ excelant/testcases/org/apache/poi/ss/excelant/ut
Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestCalendarFieldFunction.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestCalendarFieldFunction.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestCalendarFieldFunction.java (original) +++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestCalendarFieldFunction.java Fri Dec 27 23:00:13 2019 @@ -19,7 +19,6 @@ package org.apache.poi.ss.formula.functi import static org.junit.Assert.assertEquals; -import junit.framework.AssertionFailedError; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator; import org.apache.poi.hssf.usermodel.HSSFSheet; @@ -109,9 +108,7 @@ public final class TestCalendarFieldFunc cell11.setCellFormula(formulaText); evaluator.clearAllCachedResultValues(); CellValue cv = evaluator.evaluate(cell11); -if (cv.getCellType() != CellType.NUMERIC) { -throw new AssertionFailedError("Wrong result type: " + cv.formatAsString()); -} +assertEquals("Wrong result type", CellType.NUMERIC, cv.getCellType()); double actualValue = cv.getNumberValue(); assertEquals(expectedResult, actualValue, 0); } Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestCountFuncs.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestCountFuncs.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestCountFuncs.java (original) +++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestCountFuncs.java Fri Dec 27 23:00:13 2019 @@ -22,7 +22,6 @@ import static org.junit.Assert.assertFal import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import junit.framework.AssertionFailedError; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator; @@ -152,9 +151,7 @@ public final class TestCountFuncs { assertNotNull(mp); StringEval seA = new StringEval("aa"); // this should not match the criteria '<>aa' StringEval seB = new StringEval("bb"); // this should match - if (mp.matches(seA) && !mp.matches(seB)) { - throw new AssertionFailedError("Identified bug 46647"); - } + assertFalse("Identified bug 46647", mp.matches(seA) && !mp.matches(seB)); assertFalse(mp.matches(seA)); assertTrue(mp.matches(seB)); @@ -280,16 +277,19 @@ public final class TestCountFuncs { I_MatchPredicate mp; mp = Countif.createCriteriaPredicate(ev, 9, srcColIx); + assertNotNull(mp); confirmPredicate(true, mp, srcColIx); confirmPredicate(false, mp, "abc"); confirmPredicate(false, mp, ErrorEval.DIV_ZERO); mp = Countif.createCriteriaPredicate(ev, 10, srcColIx); + assertNotNull(mp); confirmPredicate(false, mp, srcColIx); confirmPredicate(true, mp, "abc"); confirmPredicate(false, mp, ErrorEval.DIV_ZERO); mp = Countif.createCriteriaPredicate(ev, 11, srcColIx); + assertNotNull(mp); confirmPredicate(false, mp, srcColIx); confirmPredicate(false, mp, "abc"); confirmPredicate(true, mp, ErrorEval.DIV_ZERO); @@ -298,6 +298,7 @@ public final class TestCountFuncs { // tricky: indexing outside of A10:A12 // even this #VALUE! error gets used by COUNTIF as valid criteria mp = Countif.createCriteriaPredicate(ev, 12, srcColIx); + assertNotNull(mp); confirmPredicate(false, mp, srcColIx); confirmPredicate(false, mp, "abc"); confirmPredicate(false, mp, ErrorEval.DIV_ZERO); @@ -396,7 +397,7 @@ public final class TestCountFuncs { * and NEQ cases */ @Test - public void testCountifBug51498() throws Exception { + public void testCountifBug51498() { final int REF_COL = 4; final int EVAL_COL = 3; @@ -588,9 +589,6 @@ public final class TestCountFuncs { } } - if (failureCount > 0) { - throw new AssertionFailedError(failureCount + " " + functionName - + " evaluations failed. See stderr for more details"); - } +
svn commit: r1872041 [15/23] - in /poi/trunk/src: excelant/testcases/org/apache/poi/ss/examples/formula/ excelant/testcases/org/apache/poi/ss/excelant/ excelant/testcases/org/apache/poi/ss/excelant/ut
Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFClientAnchor.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFClientAnchor.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFClientAnchor.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFClientAnchor.java Fri Dec 27 23:00:13 2019 @@ -17,46 +17,48 @@ package org.apache.poi.hssf.usermodel; -import junit.framework.TestCase; +import static org.junit.Assert.assertEquals; + +import java.io.IOException; + import org.apache.poi.ddf.EscherClientAnchorRecord; import org.apache.poi.hssf.model.ConvertAnchor; +import org.junit.Test; /** * Various tests for HSSFClientAnchor. - * - * @author Glen Stampoultzis (glens at apache.org) - * @author Yegor Kozlov (yegor at apache.org) */ -public final class TestHSSFClientAnchor extends TestCase { -public void testGetAnchorHeightInPoints() { -HSSFWorkbook wb = new HSSFWorkbook(); -HSSFSheet sheet = wb.createSheet("test"); -HSSFClientAnchor a = new HSSFClientAnchor(0,0,1023,255,(short)0,0,(short)0,0); -float p = a.getAnchorHeightInPoints(sheet); -assertEquals(12.7,p,0.001); - -sheet.createRow(0).setHeightInPoints(14); -a = new HSSFClientAnchor(0,0,1023,255,(short)0,0,(short)0,0); -p = a.getAnchorHeightInPoints(sheet); -assertEquals(13.945,p,0.001); - -a = new HSSFClientAnchor(0,0,1023,127,(short)0,0,(short)0,0); -p = a.getAnchorHeightInPoints(sheet); -assertEquals(6.945,p,0.001); - -a = new HSSFClientAnchor(0,126,1023,127,(short)0,0,(short)0,0); -p = a.getAnchorHeightInPoints(sheet); -assertEquals(0.054,p,0.001); - -a = new HSSFClientAnchor(0,0,1023,0,(short)0,0,(short)0,1); -p = a.getAnchorHeightInPoints(sheet); -assertEquals(14.0,p,0.001); - -sheet.createRow(0).setHeightInPoints(12); -a = new HSSFClientAnchor(0,127,1023,127,(short)0,0,(short)0,1); -p = a.getAnchorHeightInPoints(sheet); -assertEquals(12.372,p,0.001); - +public final class TestHSSFClientAnchor { +@Test +public void testGetAnchorHeightInPoints() throws IOException { +try (HSSFWorkbook wb = new HSSFWorkbook()) { +HSSFSheet sheet = wb.createSheet("test"); +HSSFClientAnchor a = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 0, 0); +float p = a.getAnchorHeightInPoints(sheet); +assertEquals(12.7, p, 0.001); + +sheet.createRow(0).setHeightInPoints(14); +a = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 0, 0); +p = a.getAnchorHeightInPoints(sheet); +assertEquals(13.945, p, 0.001); + +a = new HSSFClientAnchor(0, 0, 1023, 127, (short) 0, 0, (short) 0, 0); +p = a.getAnchorHeightInPoints(sheet); +assertEquals(6.945, p, 0.001); + +a = new HSSFClientAnchor(0, 126, 1023, 127, (short) 0, 0, (short) 0, 0); +p = a.getAnchorHeightInPoints(sheet); +assertEquals(0.054, p, 0.001); + +a = new HSSFClientAnchor(0, 0, 1023, 0, (short) 0, 0, (short) 0, 1); +p = a.getAnchorHeightInPoints(sheet); +assertEquals(14.0, p, 0.001); + +sheet.createRow(0).setHeightInPoints(12); +a = new HSSFClientAnchor(0, 127, 1023, 127, (short) 0, 0, (short) 0, 1); +p = a.getAnchorHeightInPoints(sheet); +assertEquals(12.372, p, 0.001); +} } /** @@ -64,6 +66,7 @@ public final class TestHSSFClientAnchor * check that dx1, dx2, dy1 and dy2 are written "as is". * (Bug 42999 reported that dx1 and dx2 are swapped if dx1>dx2. It doesn't make sense for client anchors.) */ +@Test public void testConvertAnchor() { HSSFClientAnchor[] anchors = { new HSSFClientAnchor( 0 , 0 , 0 , 0 ,(short)0, 1,(short)1,3), @@ -83,26 +86,29 @@ public final class TestHSSFClientAnchor } } -public void testAnchorHeightInPoints(){ -HSSFWorkbook wb = new HSSFWorkbook(); -HSSFSheet sheet = wb.createSheet(); - -HSSFClientAnchor[] anchor = { -new HSSFClientAnchor( 0 , 0,0 , 0 ,(short)0, 1,(short)1, 3), -new HSSFClientAnchor( 0 , 254 , 0 , 126 ,(short)0, 1,(short)1, 3), -new HSSFClientAnchor( 0 , 128 , 0 , 128 ,(short)0, 1,(short)1, 3), -new HSSFClientAnchor( 0 , 0 , 0 , 128 ,(short)0, 1,(short)1, 3), -}; -float[] ref = {25.5f, 19.125f, 25.5f, 31.875f}; -for (int i = 0; i < anchor.length; i++) { -float height = anchor[i].getAnchorHeightInPoints(sheet); -assertEquals(ref[i], height, 0); +@Test +public void
svn commit: r1872041 [23/23] - in /poi/trunk/src: excelant/testcases/org/apache/poi/ss/examples/formula/ excelant/testcases/org/apache/poi/ss/excelant/ excelant/testcases/org/apache/poi/ss/excelant/ut
Modified: poi/trunk/src/testcases/org/apache/poi/util/TestBitField.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/util/TestBitField.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/testcases/org/apache/poi/util/TestBitField.java (original) +++ poi/trunk/src/testcases/org/apache/poi/util/TestBitField.java Fri Dec 27 23:00:13 2019 @@ -17,18 +17,20 @@ package org.apache.poi.util; -import junit.framework.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; /** * Class to test BitField functionality - * - * @author Marc Johnson - * @author Glen Stampoultzis (gst...@iprimus.com.au) */ -public final class TestBitField extends TestCase { +public final class TestBitField { private static BitField bf_multi = BitFieldFactory.getInstance(0x3F80); private static BitField bf_single = BitFieldFactory.getInstance(0x4000); +@Test public void testGetValue() { assertEquals(bf_multi.getValue(-1), 127); assertEquals(bf_multi.getValue(0), 0); @@ -36,6 +38,7 @@ public final class TestBitField extends assertEquals(bf_single.getValue(0), 0); } +@Test public void testGetShortValue() { assertEquals(bf_multi.getShortValue(( short ) -1), ( short ) 127); assertEquals(bf_multi.getShortValue(( short ) 0), ( short ) 0); @@ -43,6 +46,7 @@ public final class TestBitField extends assertEquals(bf_single.getShortValue(( short ) 0), ( short ) 0); } +@Test public void testGetRawValue() { assertEquals(bf_multi.getRawValue(-1), 0x3F80); assertEquals(bf_multi.getRawValue(0), 0); @@ -50,6 +54,7 @@ public final class TestBitField extends assertEquals(bf_single.getRawValue(0), 0); } +@Test public void testGetShortRawValue() { assertEquals(bf_multi.getShortRawValue(( short ) -1), ( short ) 0x3F80); @@ -59,6 +64,7 @@ public final class TestBitField extends assertEquals(bf_single.getShortRawValue(( short ) 0), ( short ) 0); } +@Test public void testIsSet() { assertFalse(bf_multi.isSet(0)); for (int j = 0x80; j <= 0x3F80; j += 0x80) @@ -69,6 +75,7 @@ public final class TestBitField extends assertTrue(bf_single.isSet(0x4000)); } +@Test public void testIsAllSet() { for (int j = 0; j < 0x3F80; j += 0x80) { @@ -79,6 +86,7 @@ public final class TestBitField extends assertTrue(bf_single.isAllSet(0x4000)); } +@Test public void testSetValue() { for (int j = 0; j < 128; j++) { @@ -98,6 +106,7 @@ public final class TestBitField extends assertEquals(bf_single.setValue(0x4000, 2), 0); } +@Test public void testSetShortValue() { for (int j = 0; j < 128; j++) { @@ -125,6 +134,7 @@ public final class TestBitField extends ( short ) 0); } +@Test public void testByte() { assertEquals(1, BitFieldFactory.getInstance(1).setByteBoolean(( byte ) 0, true)); assertEquals(2, BitFieldFactory.getInstance(2).setByteBoolean(( byte ) 0, true)); @@ -151,26 +161,31 @@ public final class TestBitField extends assertFalse(BitFieldFactory.getInstance(0x40).isSet(clearedBit)); } +@Test public void testClear() { assertEquals(bf_multi.clear(-1), 0xC07F); assertEquals(bf_single.clear(-1), 0xBFFF); } +@Test public void testClearShort() { assertEquals(bf_multi.clearShort(( short ) -1), ( short ) 0xC07F); assertEquals(bf_single.clearShort(( short ) -1), ( short ) 0xBFFF); } +@Test public void testSet() { assertEquals(bf_multi.set(0), 0x3F80); assertEquals(bf_single.set(0), 0x4000); } +@Test public void testSetShort() { assertEquals(bf_multi.setShort(( short ) 0), ( short ) 0x3F80); assertEquals(bf_single.setShort(( short ) 0), ( short ) 0x4000); } +@Test public void testSetBoolean() { assertEquals(bf_multi.set(0), bf_multi.setBoolean(0, true)); assertEquals(bf_single.set(0), bf_single.setBoolean(0, true)); @@ -178,6 +193,7 @@ public final class TestBitField extends assertEquals(bf_single.clear(-1), bf_single.setBoolean(-1, false)); } +@Test public void testSetShortBoolean() { assertEquals(bf_multi.setShort(( short ) 0), bf_multi.setShortBoolean(( short ) 0, true)); @@ -188,7 +204,8 @@ public final class TestBitField extends assertEquals(bf_single.clearShort(( short ) -1), bf_single.setShortBoolean(( short ) -1, false)); } - + +@Test public void testSetLargeValues() {
svn commit: r1872041 [12/23] - in /poi/trunk/src: excelant/testcases/org/apache/poi/ss/examples/formula/ excelant/testcases/org/apache/poi/ss/excelant/ excelant/testcases/org/apache/poi/ss/excelant/ut
Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSharedFormulaRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSharedFormulaRecord.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSharedFormulaRecord.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSharedFormulaRecord.java Fri Dec 27 23:00:13 2019 @@ -17,27 +17,31 @@ package org.apache.poi.hssf.record; -import junit.framework.AssertionFailedError; -import junit.framework.ComparisonFailure; -import junit.framework.TestCase; +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; + +import java.util.stream.Stream; import org.apache.poi.hssf.HSSFTestDataSamples; +import org.apache.poi.hssf.usermodel.HSSFCell; +import org.apache.poi.hssf.usermodel.HSSFEvaluationWorkbook; +import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.SpreadsheetVersion; +import org.apache.poi.ss.formula.FormulaParser; +import org.apache.poi.ss.formula.FormulaRenderer; +import org.apache.poi.ss.formula.FormulaType; +import org.apache.poi.ss.formula.SharedFormula; import org.apache.poi.ss.formula.ptg.Ptg; import org.apache.poi.ss.formula.ptg.RefPtg; -import org.apache.poi.ss.formula.SharedFormula; -import org.apache.poi.hssf.usermodel.*; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.CellValue; -import org.apache.poi.ss.formula.FormulaParser; -import org.apache.poi.ss.formula.FormulaRenderer; -import org.apache.poi.ss.formula.FormulaType; -import org.apache.poi.ss.SpreadsheetVersion; import org.apache.poi.util.LittleEndianInput; +import org.junit.Test; -/** - * @author Josh Micich - */ -public final class TestSharedFormulaRecord extends TestCase { +public final class TestSharedFormulaRecord { /** * A sample spreadsheet known to have one sheet with 4 shared formula ranges @@ -71,6 +75,7 @@ public final class TestSharedFormulaReco * classes are preserved during this transformation, because Excel may not tolerate the * incorrect encoding. The formula here is one such example (Excel displays #VALUE!). */ +@Test public void testConvertSharedFormulasOperandClasses_bug45123() { LittleEndianInput in = TestcaseRecordInputStream.createLittleEndian(SHARED_FORMULA_WITH_REF_ARRAYS_DATA); @@ -82,25 +87,17 @@ public final class TestSharedFormulaReco RefPtg refPtg = (RefPtg) convertedFormula[1]; assertEquals("$C101", refPtg.toFormulaString()); -if (refPtg.getPtgClass() == Ptg.CLASS_REF) { -throw new AssertionFailedError("Identified bug 45123"); -} - +assertNotEquals("Identified bug 45123", Ptg.CLASS_REF, refPtg.getPtgClass()); confirmOperandClasses(sharedFormula, convertedFormula); } private static void confirmOperandClasses(Ptg[] originalPtgs, Ptg[] convertedPtgs) { -assertEquals(originalPtgs.length, convertedPtgs.length); -for (int i = 0; i < convertedPtgs.length; i++) { -Ptg originalPtg = originalPtgs[i]; -Ptg convertedPtg = convertedPtgs[i]; -if (originalPtg.getPtgClass() != convertedPtg.getPtgClass()) { -throw new ComparisonFailure("Different operand class for token[" + i + "]", -String.valueOf(originalPtg.getPtgClass()), String.valueOf(convertedPtg.getPtgClass())); -} -} +int[] exp = Stream.of(originalPtgs).map(Ptg::getPtgClass).mapToInt(Byte::intValue).toArray(); +int[] act = Stream.of(convertedPtgs).map(Ptg::getPtgClass).mapToInt(Byte::intValue).toArray(); +assertArrayEquals("Different operand class", exp, act); } +@Test public void testConvertSharedFormulas() { HSSFWorkbook wb = new HSSFWorkbook(); HSSFEvaluationWorkbook fpb = HSSFEvaluationWorkbook.create(wb); @@ -141,6 +138,7 @@ public final class TestSharedFormulaReco /** * Make sure that POI preserves {@link SharedFormulaRecord}s */ +@Test public void testPreserveOnReserialize() { HSSFWorkbook wb; HSSFSheet sheet; @@ -168,10 +166,12 @@ public final class TestSharedFormulaReco cellB32769 = sheet.getRow(32768).getCell(1); cellC32769 = sheet.getRow(32768).getCell(2); assertEquals("B32770*2", cellB32769.getCellFormula()); +assertEquals("C32770*2", cellC32769.getCellFormula()); confirmCellEvaluation(wb, cellB32769, 4); assertEquals(4, countSharedFormulas(sheet)); } +@Test public void testUnshareFormulaDueToChangeFormula() {
svn commit: r1872041 [9/23] - in /poi/trunk/src: excelant/testcases/org/apache/poi/ss/examples/formula/ excelant/testcases/org/apache/poi/ss/excelant/ excelant/testcases/org/apache/poi/ss/excelant/uti
Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestExtSSTRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestExtSSTRecord.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestExtSSTRecord.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestExtSSTRecord.java Fri Dec 27 23:00:13 2019 @@ -19,822 +19,134 @@ package org.apache.poi.hssf.record; -import junit.framework.TestCase; -import org.apache.poi.hssf.record.common.UnicodeString; -import org.apache.poi.util.HexRead; +import static org.junit.Assert.assertEquals; -/** - * @author Yegor Kozlov - */ -public final class TestExtSSTRecord extends TestCase { +import java.io.IOException; +import org.apache.poi.poifs.storage.RawDataUtil; +import org.junit.Test; -/** - * hex dump from ISBN_UPD_PL_20100104_1525.xls atatched to Bugzilla 50867 - */ -private static final String data_50967 = -// "Offset=0x0008BB19(572185) recno=159 sid=0x00FF size=0x201A(8218)\n" + -" FF 00 1A 20 08 00 1A" + -"09 00 00 0C 00 00 00 6D 09 00 00 5F 00 00 00 B8" + -"09 00 00 AA 00 00 00 BC 0A 00 00 AE 01 00 00 FA" + -"0B 00 00 EC 02 00 00 C6 0D 00 00 B8 04 00 00 2E" + -"0F 00 00 20 06 00 00 5C 11 00 00 4E 08 00 00 B0" + -"12 00 00 A2 09 00 00 A4 13 00 00 96 0A 00 00 92" + -"15 00 00 84 0C 00 00 0A 17 00 00 FC 0D 00 00 32" + -"18 00 00 24 0F 00 00 84 19 00 00 76 10 00 00 9A" + -"1A 00 00 8C 11 00 00 5E 1C 00 00 50 13 00 00 24" + -"1D 00 00 16 14 00 00 56 1E 00 00 48 15 00 00 1C" + -"1F 00 00 0E 16 00 00 DA 1F 00 00 CC 16 00 00 76" + -"21 00 00 68 18 00 00 2E 23 00 00 20 1A 00 00 A0" + -"24 00 00 92 1B 00 00 FA 25 00 00 EC 1C 00 00 BA" + -"27 00 00 AC 1E 00 00 12 29 00 00 04 00 00 00 4E" + -"2A 00 00 40 01 00 00 A0 2B 00 00 92 02 00 00 C8" + -"2C 00 00 BA 03 00 00 62 2E 00 00 54 05 00 00 58" + -"2F 00 00 4A 06 00 00 9A 30 00 00 8C 07 00 00 02" + -"32 00 00 F4 08 00 00 36 33 00 00 28 0A 00 00 30" + -"34 00 00 22 0B 00 00 FC 34 00 00 EE 0B 00 00 FE" + -"35 00 00 F0 0C 00 00 26 37 00 00 18 0E 00 00 C6" + -"38 00 00 B8 0F 00 00 FA 39 00 00 EC 10 00 00 8E" + -"3B 00 00 80 12 00 00 2C 3D 00 00 1E 14 00 00 3C" + -"3E 00 00 2E 15 00 00 80 3F 00 00 72 16 00 00 74" + -"40 00 00 66 17 00 00 8A 41 00 00 7C 18 00 00 64" + -"42 00 00 56 19 00 00 96 43 00 00 88 1A 00 00 82" + -"44 00 00 74 1B 00 00 76 45 00 00 68 1C 00 00 80" + -"46 00 00 72 1D 00 00 88 47 00 00 7A 1E 00 00 80" + -"48 00 00 72 1F 00 00 66 49 00 00 34 00 00 00 76" + -"4A 00 00 44 01 00 00 D0 4B 00 00 9E 02 00 00 F2" + -"4C 00 00 C0 03 00 00 DA 4D 00 00 A8 04 00 00 B4" + -"4F 00 00 82 06 00 00 12 51 00 00 E0 07 00 00 2A" + -"52 00 00 F8 08 00 00 3C 53 00 00 0A 0A 00 00 6E" + -"54 00 00 3C 0B 00 00 BC 55 00 00 8A 0C 00 00 14" + -"57 00 00 E2 0D 00 00 3C 58 00 00 0A 0F 00 00 36" + -"59 00 00 04 10 00 00 4A 5A 00 00 18 11 00 00 4A" + -"5B 00 00 18 12 00 00 AC 5C 00 00 7A 13 00 00 C2" + -"5D 00 00 90 14 00 00 2C 5F 00 00 FA 15 00 00 74" + -"60 00 00 42 17 00 00 56 62 00 00 24 19 00 00 12" + -"64 00 00 E0 1A 00 00 E8 65 00 00 B6 1C 00 00 CA" + -"66 00 00 98 1D 00 00 14 68 00 00 E2 1E 00 00 56" + -"69 00 00 04 00 00 00 EC 6A 00 00 9A 01 00 00 DC" + -"6B 00 00 8A 02 00 00 EE 6C 00 00 9C 03 00 00 66" + -"6E 00 00 14 05 00 00 A6 6F 00 00 54 06 00 00 92" + -"70 00 00 40 07 00 00 E6 71 00 00 94 08 00 00 48" + -"73 00 00 F6 09 00 00 AC 74 00 00 5A 0B 00 00 A2" + -"75 00 00 50 0C 00 00 C4 76 00 00 72 0D 00 00 4E" + -"78 00 00 FC 0E 00 00 14 7A 00 00 C2 10 00 00 0C" + -"7B 00 00 BA 11 00 00 4E 7C 00 00 FC 12 00 00 5A" + -"7D 00 00 08 14 00 00 C4 7E 00 00 72 15 00 00 BA" + -"80 00 00 68 17 00 00 1C 82 00 00 CA 18 00 00 5E" + -"83 00 00 0C 1A 00 00 BA 84 00 00 68 1B 00 00 E6" + -"85 00 00 94 1C 00 00 46 87 00 00 F4 1D 00 00 94" + -"88 00 00
svn commit: r1872041 [3/23] - in /poi/trunk/src: excelant/testcases/org/apache/poi/ss/examples/formula/ excelant/testcases/org/apache/poi/ss/excelant/ excelant/testcases/org/apache/poi/ss/excelant/uti
Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java (original) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java Fri Dec 27 23:00:13 2019 @@ -17,27 +17,34 @@ package org.apache.poi.xssf.usermodel; -import junit.framework.TestCase; +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 java.io.IOException; +import java.util.TreeMap; + import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.XSSFTestDataSamples; import org.apache.poi.xssf.model.StylesTable; +import org.junit.Test; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFont; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRPrElt; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRst; import org.openxmlformats.schemas.spreadsheetml.x2006.main.STXstring; -import java.io.IOException; -import java.util.TreeMap; - /** * Tests functionality of the XSSFRichTextRun object - * - * @author Yegor Kozlov */ -public final class TestXSSFRichTextString extends TestCase { +public final class TestXSSFRichTextString { +@Test public void testCreate() { XSSFRichTextString rt = new XSSFRichTextString("Apache POI"); assertEquals("Apache POI", rt.getString()); @@ -56,6 +63,7 @@ public final class TestXSSFRichTextStrin assertFalse(rt.hasFormatting()); } +@Test public void testEmpty() { XSSFRichTextString rt = new XSSFRichTextString(); assertEquals(0, rt.getIndexOfFormattingRun()); @@ -63,6 +71,7 @@ public final class TestXSSFRichTextStrin assertNull(rt.getFontAtIndex()); } +@Test public void testApplyFont() { XSSFRichTextString rt = new XSSFRichTextString(); rt.append("123"); @@ -92,43 +101,46 @@ public final class TestXSSFRichTextStrin assertEquals(7, rt.getIndexOfFormattingRun(3)); assertEquals(2, rt.getLengthOfFormattingRun(3)); assertEquals("89", rt.getCTRst().getRArray(3).getT()); - - + + assertEquals(-1, rt.getIndexOfFormattingRun()); assertEquals(-1, rt.getLengthOfFormattingRun()); assertNull(rt.getFontAtIndex()); } +@Test public void testApplyFontIndex() { XSSFRichTextString rt = new XSSFRichTextString("Apache POI"); rt.applyFont(0, 10, (short)1); - + rt.applyFont((short)1); - + assertNotNull(rt.getFontAtIndex(0)); } +@Test public void testApplyFontWithStyles() { XSSFRichTextString rt = new XSSFRichTextString("Apache POI"); - + StylesTable tbl = new StylesTable(); rt.setStylesTableReference(tbl); - + try { rt.applyFont(0, 10, (short)1); fail("Fails without styles in the table"); } catch (IndexOutOfBoundsException e) { // expected } - + tbl.putFont(new XSSFFont()); rt.applyFont(0, 10, (short)1); rt.applyFont((short)1); } +@Test public void testApplyFontException() { XSSFRichTextString rt = new XSSFRichTextString("Apache POI"); - + rt.applyFont(0, 0, (short)1); try { @@ -153,6 +165,7 @@ public final class TestXSSFRichTextStrin } } +@Test public void testClearFormatting() { XSSFRichTextString rt = new XSSFRichTextString("Apache POI"); @@ -173,14 +186,15 @@ public final class TestXSSFRichTextStrin rt.applyFont(7, 10, font); assertEquals(2, rt.numFormattingRuns()); assertTrue(rt.hasFormatting()); - + rt.clearFormatting(); - + assertEquals("Apache POI", rt.getString()); assertEquals(0, rt.numFormattingRuns()); assertFalse(rt.hasFormatting()); } +@Test public void testGetFonts() { XSSFRichTextString rt = new XSSFRichTextString(); @@ -208,6 +222,7 @@ public final class TestXSSFRichTextStrin * make sure we insert xml:space="preserve" attribute * if a string has leading or trailing white spaces */ +@Test public void testPreserveSpaces() { XSSFRichTextString rt = new XSSFRichTextString("Apache");
svn commit: r1872041 [13/23] - in /poi/trunk/src: excelant/testcases/org/apache/poi/ss/examples/formula/ excelant/testcases/org/apache/poi/ss/excelant/ excelant/testcases/org/apache/poi/ss/excelant/ut
Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestAreaFormatRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestAreaFormatRecord.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestAreaFormatRecord.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestAreaFormatRecord.java Fri Dec 27 23:00:13 2019 @@ -18,19 +18,20 @@ package org.apache.poi.hssf.record.chart; -import org.apache.poi.hssf.record.TestcaseRecordInputStream; +import static org.apache.poi.hssf.record.TestcaseRecordInputStream.confirmRecordEncoding; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; -import junit.framework.TestCase; +import org.apache.poi.hssf.record.TestcaseRecordInputStream; +import org.junit.Test; /** * Tests the serialization and deserialization of the AreaFormatRecord * class works correctly. Test data taken directly from a real * Excel file. - * - - * @author Glen Stampoultzis (glens at apache.org) */ -public final class TestAreaFormatRecord extends TestCase { +public final class TestAreaFormatRecord { byte[] data = new byte[] { (byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0x00,// forecolor (byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,// backcolor @@ -41,8 +42,8 @@ public final class TestAreaFormatRecord }; +@Test public void testLoad() { - AreaFormatRecord record = new AreaFormatRecord(TestcaseRecordInputStream.create(0x100a, data)); assertEquals( 0xFF, record.getForegroundColor()); assertEquals( 0x00, record.getBackgroundColor()); @@ -57,8 +58,8 @@ public final class TestAreaFormatRecord assertEquals( 20, record.getRecordSize() ); } -public void testStore() -{ +@Test +public void testStore() { AreaFormatRecord record = new AreaFormatRecord(); record.setForegroundColor( 0xFF ); record.setBackgroundColor( 0x00 ); @@ -70,8 +71,6 @@ public final class TestAreaFormatRecord byte [] recordBytes = record.serialize(); -assertEquals(recordBytes.length - 4, data.length); -for (int i = 0; i < data.length; i++) -assertEquals("At offset " + i, data[i], recordBytes[i+4]); +confirmRecordEncoding(AreaFormatRecord.sid, data, recordBytes); } } Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestAreaRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestAreaRecord.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestAreaRecord.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestAreaRecord.java Fri Dec 27 23:00:13 2019 @@ -18,23 +18,25 @@ package org.apache.poi.hssf.record.chart; -import org.apache.poi.hssf.record.TestcaseRecordInputStream; +import static org.apache.poi.hssf.record.TestcaseRecordInputStream.confirmRecordEncoding; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; -import junit.framework.TestCase; +import org.apache.poi.hssf.record.TestcaseRecordInputStream; +import org.junit.Test; /** * Tests the serialization and deserialization of the AreaRecord * class works correctly. Test data taken directly from a real * Excel file. - * - * - * @author Glen Stampoultzis (glens at apache.org) */ -public final class TestAreaRecord extends TestCase { +public final class TestAreaRecord { byte[] data = new byte[] { (byte)0x02,(byte)0x00 // format flags }; +@Test public void testLoad() { AreaRecord record = new AreaRecord(TestcaseRecordInputStream.create(0x101A, data)); @@ -43,21 +45,17 @@ public final class TestAreaRecord extend assertTrue(record.isDisplayAsPercentage()); assertFalse(record.isShadow()); - assertEquals( 6, record.getRecordSize() ); } -public void testStore() -{ +@Test +public void testStore() { AreaRecord record = new AreaRecord(); record.setStacked( false ); record.setDisplayAsPercentage( true ); record.setShadow( false ); - byte [] recordBytes = record.serialize(); -assertEquals(recordBytes.length - 4, data.length); -for (int i = 0; i < data.length; i++) -assertEquals("At offset " + i, data[i], recordBytes[i+4]); +confirmRecordEncoding(AreaRecord.sid, data, recordBytes); } } Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/chart/TestAxisLineFormatRecord.java
svn commit: r1872041 [10/23] - in /poi/trunk/src: excelant/testcases/org/apache/poi/ss/examples/formula/ excelant/testcases/org/apache/poi/ss/excelant/ excelant/testcases/org/apache/poi/ss/excelant/ut
Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFontRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFontRecord.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFontRecord.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFontRecord.java Fri Dec 27 23:00:13 2019 @@ -18,31 +18,35 @@ package org.apache.poi.hssf.record; -import junit.framework.AssertionFailedError; -import junit.framework.TestCase; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertTrue; import org.apache.poi.util.HexRead; +import org.junit.Test; /** * Tests the serialization and deserialization of the {@link FontRecord} * class works correctly. Test data taken directly from a real Excel file. */ -public final class TestFontRecord extends TestCase { +public final class TestFontRecord { private static final int SID = 0x31; private static final byte[] data = { -0xC8-256, 00, // font height = xc8 -00, 00, // attrs = 0 +0xC8-256, 0, // font height = xc8 +0, 0, // attrs = 0 0xFF-256, 0x7F, // colour palette = x7fff 0x90-256, 0x01, // bold weight = x190 -00, 00, // supersubscript -00, 00, // underline, family -00, 00, // charset, padding -05, 00, // name length, unicode flag +0, 0, // supersubscript +0, 0, // underline, family +0, 0, // charset, padding +5, 0, // name length, unicode flag 0x41, 0x72, 0x69, 0x61, 0x6C, // Arial, as unicode }; +@Test public void testLoad() { FontRecord record = new FontRecord(TestcaseRecordInputStream.create(0x31, data)); @@ -63,6 +67,7 @@ public final class TestFontRecord extend assertEquals(21 + 4, record.getRecordSize()); } +@Test public void testStore() { // .fontheight = c8 // .attributes = 0 @@ -94,6 +99,7 @@ public final class TestFontRecord extend TestcaseRecordInputStream.confirmRecordEncoding(0x31, data, recordBytes); } +@Test public void testCloneOnto() { FontRecord base = new FontRecord(TestcaseRecordInputStream.create(0x31, data)); @@ -106,6 +112,7 @@ public final class TestFontRecord extend assertEquals("At offset " + i, data[i], recordBytes[i+4]); } +@Test public void testSameProperties() { FontRecord f1 = new FontRecord(TestcaseRecordInputStream.create(0x31, data)); FontRecord f2 = new FontRecord(TestcaseRecordInputStream.create(0x31, data)); @@ -128,6 +135,7 @@ public final class TestFontRecord extend * length is zero. The OOO documentation seems to agree with this and POI had no test data * samples to say otherwise. */ +@Test public void testEmptyName_bug47250() { byte[] emptyNameData = HexRead.readFromString( "C8 00 00 00 FF 7F 90 01 00 00 00 00 00 00 " @@ -137,9 +145,7 @@ public final class TestFontRecord extend RecordInputStream in = TestcaseRecordInputStream.create(SID, emptyNameData); FontRecord fr = new FontRecord(in); -if (in.available() == 1) { -throw new AssertionFailedError("Identified bug 47250"); -} +assertNotEquals(1, in.available()); assertEquals(0, in.available()); assertEquals(0, fr.getFontName().length()); Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFormulaRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFormulaRecord.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFormulaRecord.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestFormulaRecord.java Fri Dec 27 23:00:13 2019 @@ -17,6 +17,10 @@ package org.apache.poi.hssf.record; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + import org.apache.poi.ss.formula.ptg.AttrPtg; import org.apache.poi.ss.formula.ptg.FuncVarPtg; import org.apache.poi.ss.formula.ptg.IntPtg; @@ -24,17 +28,14 @@ import org.apache.poi.ss.formula.ptg.Ptg import org.apache.poi.ss.formula.ptg.RefPtg; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.FormulaError; - -import junit.framework.AssertionFailedError; -import junit.framework.TestCase; +import org.junit.Test; /** * Tests for {@link FormulaRecord} - * - *
svn commit: r1872041 [22/23] - in /poi/trunk/src: excelant/testcases/org/apache/poi/ss/examples/formula/ excelant/testcases/org/apache/poi/ss/excelant/ excelant/testcases/org/apache/poi/ss/excelant/ut
Modified: poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetUpdateArrayFormulas.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetUpdateArrayFormulas.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetUpdateArrayFormulas.java (original) +++ poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetUpdateArrayFormulas.java Fri Dec 27 23:00:13 2019 @@ -24,8 +24,8 @@ import static org.junit.Assert.assertNot import static org.junit.Assert.assertNull; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; -import static org.junit.Assume.assumeTrue; import static org.junit.Assert.fail; +import static org.junit.Assume.assumeTrue; import java.io.IOException; import java.util.Arrays; @@ -40,9 +40,6 @@ import org.junit.Test; /** * Common superclass for testing usermodel API for array formulas. * Formula evaluation is not tested here. - * - * @author Yegor Kozlov - * @author Josh Micich */ public abstract class BaseTestSheetUpdateArrayFormulas { protected final ITestDataProvider _testDataProvider; @@ -53,23 +50,22 @@ public abstract class BaseTestSheetUpdat @Test public final void testAutoCreateOtherCells() throws IOException { -Workbook workbook = _testDataProvider.createWorkbook(); -Sheet sheet = workbook.createSheet("Sheet1"); +try (Workbook workbook = _testDataProvider.createWorkbook()) { +Sheet sheet = workbook.createSheet("Sheet1"); -Row row1 = sheet.createRow(0); -Cell cellA1 = row1.createCell(0); -Cell cellB1 = row1.createCell(1); -String formula = "42"; -sheet.setArrayFormula(formula, CellRangeAddress.valueOf("A1:B2")); - -assertEquals(formula, cellA1.getCellFormula()); -assertEquals(formula, cellB1.getCellFormula()); -Row row2 = sheet.getRow(1); -assertNotNull(row2); -assertEquals(formula, row2.getCell(0).getCellFormula()); -assertEquals(formula, row2.getCell(1).getCellFormula()); - -workbook.close(); +Row row1 = sheet.createRow(0); +Cell cellA1 = row1.createCell(0); +Cell cellB1 = row1.createCell(1); +String formula = "42"; +sheet.setArrayFormula(formula, CellRangeAddress.valueOf("A1:B2")); + +assertEquals(formula, cellA1.getCellFormula()); +assertEquals(formula, cellB1.getCellFormula()); +Row row2 = sheet.getRow(1); +assertNotNull(row2); +assertEquals(formula, row2.getCell(0).getCellFormula()); +assertEquals(formula, row2.getCell(1).getCellFormula()); +} } /** @@ -77,36 +73,33 @@ public abstract class BaseTestSheetUpdat */ @Test public final void testSetArrayFormula_singleCell() throws IOException { -Cell[] cells; +try (Workbook workbook = _testDataProvider.createWorkbook()) { +Sheet sheet = workbook.createSheet(); +Cell cell = sheet.createRow(0).createCell(0); +assertFalse(cell.isPartOfArrayFormulaGroup()); +try { +cell.getArrayFormulaRange(); +fail("expected exception"); +} catch (IllegalStateException e) { +assertEquals("Cell Sheet0!A1 is not part of an array formula.", e.getMessage()); +} + +// row 3 does not yet exist +assertNull(sheet.getRow(2)); +CellRangeAddress range = new CellRangeAddress(2, 2, 2, 2); +Cell[] cells = sheet.setArrayFormula("SUM(C11:C12*D11:D12)", range).getFlattenedCells(); +assertEquals(1, cells.length); +// sheet.setArrayFormula creates rows and cells for the designated range +assertNotNull(sheet.getRow(2)); +cell = sheet.getRow(2).getCell(2); +assertNotNull(cell); -Workbook workbook = _testDataProvider.createWorkbook(); -Sheet sheet = workbook.createSheet(); -Cell cell = sheet.createRow(0).createCell(0); -assertFalse(cell.isPartOfArrayFormulaGroup()); -try { -cell.getArrayFormulaRange(); -fail("expected exception"); -} catch (IllegalStateException e){ -assertEquals("Cell Sheet0!A1 is not part of an array formula.", e.getMessage()); -} - -// row 3 does not yet exist -assertNull(sheet.getRow(2)); -CellRangeAddress range = new CellRangeAddress(2, 2, 2, 2); -cells = sheet.setArrayFormula("SUM(C11:C12*D11:D12)", range).getFlattenedCells(); -assertEquals(1, cells.length); -// sheet.setArrayFormula creates rows and cells for the designated range -assertNotNull(sheet.getRow(2)); -cell =
svn commit: r1872041 [18/23] - in /poi/trunk/src: excelant/testcases/org/apache/poi/ss/examples/formula/ excelant/testcases/org/apache/poi/ss/excelant/ excelant/testcases/org/apache/poi/ss/excelant/ut
Modified: poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestPOIFSDocumentPath.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestPOIFSDocumentPath.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestPOIFSDocumentPath.java (original) +++ poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestPOIFSDocumentPath.java Fri Dec 27 23:00:13 2019 @@ -17,19 +17,24 @@ package org.apache.poi.poifs.filesystem; -import junit.framework.TestCase; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.fail; + +import org.junit.Test; /** * Class to test POIFSDocumentPath functionality - * - * @author Marc Johnson */ -public final class TestPOIFSDocumentPath extends TestCase { +public final class TestPOIFSDocumentPath { /** * Test default constructor */ +@Test public void testDefaultConstructor() { POIFSDocumentPath path = new POIFSDocumentPath(); @@ -39,36 +44,28 @@ public final class TestPOIFSDocumentPath /** * Test full path constructor */ +@Test public void testFullPathConstructor() { -String[] components = -{ -"foo", "bar", "foobar", "fubar" -}; +String[] components = {"foo", "bar", "foobar", "fubar"}; -for (int j = 0; j < components.length; j++) -{ +for (int j = 0; j < components.length; j++) { String[] params = new String[ j ]; System.arraycopy(components, 0, params, 0, j); POIFSDocumentPath path = new POIFSDocumentPath(params); assertEquals(j, path.length()); -for (int k = 0; k < j; k++) -{ +for (int k = 0; k < j; k++) { assertEquals(components[ k ], path.getComponent(k)); } -if (j == 0) -{ +if (j == 0) { assertNull(path.getParent()); -} -else -{ +} else { POIFSDocumentPath parent = path.getParent(); assertNotNull(parent); assertEquals(j - 1, parent.length()); -for (int k = 0; k < j - 1; k++) -{ +for (int k = 0; k < j - 1; k++) { assertEquals(components[ k ], parent.getComponent(k)); } } @@ -76,227 +73,132 @@ public final class TestPOIFSDocumentPath // test weird variants assertEquals(0, new POIFSDocumentPath(null).length()); -try -{ -new POIFSDocumentPath(new String[] -{ -"fu", "" -}); +try { +new POIFSDocumentPath(new String[]{"fu", ""}); fail("should have caught IllegalArgumentException"); -} -catch (IllegalArgumentException ignored) -{ -} -try -{ -new POIFSDocumentPath(new String[] -{ -"fu", null -}); +} catch (IllegalArgumentException ignored) { } +try { +new POIFSDocumentPath(new String[]{"fu", null}); fail("should have caught IllegalArgumentException"); -} -catch (IllegalArgumentException ignored) -{ -} +} catch (IllegalArgumentException ignored) { } } /** * Test relative path constructor */ +@Test public void testRelativePathConstructor() { -String[] initialComponents = -{ -"a", "b", "c" -}; +String[] initialComponents = {"a", "b", "c"}; -for (int n = 0; n < initialComponents.length; n++) -{ +for (int n = 0; n < initialComponents.length; n++) { String[] initialParams = new String[ n ]; System.arraycopy(initialComponents, 0, initialParams, 0, n); -POIFSDocumentPath base = -new POIFSDocumentPath(initialParams); -String[] components = -{ -"foo", "bar", "foobar", "fubar" -}; +POIFSDocumentPath base = new POIFSDocumentPath(initialParams); +String[] components = {"foo", "bar", "foobar", "fubar"}; -for (int j = 0; j < components.length; j++) -{ +for (int j = 0; j < components.length; j++) { String[] params = new String[ j ]; System.arraycopy(components, 0, params, 0, j); POIFSDocumentPath path = new POIFSDocumentPath(base, params); assertEquals(j + n, path.length()); -for (int k =
svn commit: r1872041 [16/23] - in /poi/trunk/src: excelant/testcases/org/apache/poi/ss/examples/formula/ excelant/testcases/org/apache/poi/ss/excelant/ excelant/testcases/org/apache/poi/ss/excelant/ut
Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java Fri Dec 27 23:00:13 2019 @@ -17,6 +17,8 @@ package org.apache.poi.hssf.usermodel; +import static org.apache.poi.hssf.HSSFTestDataSamples.writeOutAndReadBack; +import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; @@ -27,6 +29,7 @@ import static org.junit.Assert.assertTru import static org.junit.Assert.fail; import java.io.IOException; +import java.util.ArrayList; import java.util.List; import org.apache.poi.ddf.EscherDgRecord; @@ -35,27 +38,8 @@ import org.apache.poi.hssf.HSSFTestDataS import org.apache.poi.hssf.model.DrawingManager2; import org.apache.poi.hssf.model.InternalSheet; import org.apache.poi.hssf.model.InternalWorkbook; -import org.apache.poi.hssf.record.AutoFilterInfoRecord; -import org.apache.poi.hssf.record.CommonObjectDataSubRecord; -import org.apache.poi.hssf.record.DimensionsRecord; -import org.apache.poi.hssf.record.FtCblsSubRecord; -import org.apache.poi.hssf.record.GridsetRecord; -import org.apache.poi.hssf.record.HCenterRecord; -import org.apache.poi.hssf.record.LbsDataSubRecord; -import org.apache.poi.hssf.record.NameRecord; -import org.apache.poi.hssf.record.ObjRecord; -import org.apache.poi.hssf.record.ObjectProtectRecord; -import org.apache.poi.hssf.record.PasswordRecord; -import org.apache.poi.hssf.record.ProtectRecord; -import org.apache.poi.hssf.record.Record; -import org.apache.poi.hssf.record.SCLRecord; -import org.apache.poi.hssf.record.ScenarioProtectRecord; -import org.apache.poi.hssf.record.SubRecord; -import org.apache.poi.hssf.record.VCenterRecord; -import org.apache.poi.hssf.record.WSBoolRecord; -import org.apache.poi.hssf.record.WindowTwoRecord; +import org.apache.poi.hssf.record.*; import org.apache.poi.hssf.record.aggregates.WorksheetProtectionBlock; -import org.apache.poi.hssf.usermodel.RecordInspector.RecordCollector; import org.apache.poi.ss.formula.ptg.Area3DPtg; import org.apache.poi.ss.formula.ptg.Ptg; import org.apache.poi.ss.usermodel.AutoFilter; @@ -71,10 +55,6 @@ import org.junit.Test; /** * Tests HSSFSheet. This test case is very incomplete at the moment. - * - * - * @author Glen Stampoultzis (glens at apache.org) - * @author Andrew C. Oliver (acoliver apache org) */ public final class TestHSSFSheet extends BaseTestSheet { @@ -88,14 +68,14 @@ public final class TestHSSFSheet extends */ @Test public void setRepeatingRowsAndColumnsBug29747() throws IOException { -HSSFWorkbook wb = new HSSFWorkbook(); -wb.createSheet(); -wb.createSheet(); -HSSFSheet sheet2 = wb.createSheet(); -sheet2.setRepeatingRows(CellRangeAddress.valueOf("1:2")); -NameRecord nameRecord = wb.getWorkbook().getNameRecord(0); -assertEquals(3, nameRecord.getSheetNumber()); -wb.close(); +try (HSSFWorkbook wb = new HSSFWorkbook()) { +wb.createSheet(); +wb.createSheet(); +HSSFSheet sheet2 = wb.createSheet(); +sheet2.setRepeatingRows(CellRangeAddress.valueOf("1:2")); +NameRecord nameRecord = wb.getWorkbook().getNameRecord(0); +assertEquals(3, nameRecord.getSheetNumber()); +} } @Test @@ -108,13 +88,13 @@ public final class TestHSSFSheet extends */ @Test public void backupRecord() throws IOException { -HSSFWorkbook wb = new HSSFWorkbook(); -HSSFSheet s = wb.createSheet(); -GridsetRecord gridsetRec = s.getSheet().getGridsetRecord(); -assertTrue(gridsetRec.getGridset()); -s.setGridsPrinted(true); -assertFalse(gridsetRec.getGridset()); -wb.close(); +try (HSSFWorkbook wb = new HSSFWorkbook()) { +HSSFSheet s = wb.createSheet(); +GridsetRecord gridsetRec = s.getSheet().getGridsetRecord(); +assertTrue(gridsetRec.getGridset()); +s.setGridsPrinted(true); +assertFalse(gridsetRec.getGridset()); +} } /** @@ -122,17 +102,16 @@ public final class TestHSSFSheet extends */ @Test public void verticallyCenter() throws IOException { -HSSFWorkbook wb = new HSSFWorkbook(); -HSSFSheet s = wb.createSheet(); -VCenterRecord record = s.getSheet().getPageSettings().getVCenter(); - -assertFalse(record.getVCenter()); -assertFalse(s.getVerticallyCenter()); -s.setVerticallyCenter(true); -
svn commit: r1872041 [4/23] - in /poi/trunk/src: excelant/testcases/org/apache/poi/ss/examples/formula/ excelant/testcases/org/apache/poi/ss/excelant/ excelant/testcases/org/apache/poi/ss/excelant/uti
Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hdgf/TestHDGFLZW.java URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hdgf/TestHDGFLZW.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/scratchpad/testcases/org/apache/poi/hdgf/TestHDGFLZW.java (original) +++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hdgf/TestHDGFLZW.java Fri Dec 27 23:00:13 2019 @@ -17,12 +17,15 @@ package org.apache.poi.hdgf; +import static org.junit.Assert.assertEquals; + import java.io.ByteArrayInputStream; -import junit.framework.TestCase; +import org.junit.Ignore; +import org.junit.Test; -public final class TestHDGFLZW extends TestCase { - public static final byte[] testTrailerComp = new byte[] { +public final class TestHDGFLZW { + public static final byte[] testTrailerComp = { 123, // *mask bit* -60, 2, -21, -16, // 3 @ 4093 @@ -38,7 +41,7 @@ public final class TestHDGFLZW extends T 21, // *mask bit* 1,3,5 9, -21, -16, // 3 @ 4093 - 103, + 103, -21, -16, // 3 @ 4093 34, -36, -1, // 18 @ 4078 @@ -72,7 +75,7 @@ public final class TestHDGFLZW extends T 1, 67, 85, 1, 81, -127, 0, -41, 0, 14, 6, 4, 17, 63, -63, 17, 68, 85, -65, 1, 30, -120, 0, 0, 42, 79, 18, 68, 126, -21, -16, -76, 69, 85, 1, 102, -119, 72, 37, 0, 97, 33 }; - public static final byte[] testTrailerDecomp = new byte[] { + public static final byte[] testTrailerDecomp = { -60, 2, 0, 0, 0, 1, 0, 0, -72, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 9, 0, 0, 0, 103, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -108,6 +111,7 @@ public final class TestHDGFLZW extends T 0, 0, 42, 1, 0, 0, 84, 0, 0, 0, 0, 0 }; + @Test public void testFromToInt() { byte b255 = -1; assertEquals(255, HDGFLZW.fromByte(b255)); @@ -135,6 +139,7 @@ public final class TestHDGFLZW extends T assertEquals(-128, HDGFLZW.fromInt( 128 )); } + @Test public void testCounts() throws Exception { assertEquals(339, testTrailerComp.length); assertEquals(632, testTrailerDecomp.length); @@ -155,6 +160,7 @@ public final class TestHDGFLZW extends T */ } + @Test public void testDecompress() throws Exception { assertEquals(339, testTrailerComp.length); assertEquals(632, testTrailerDecomp.length); @@ -176,6 +182,7 @@ public final class TestHDGFLZW extends T * Uses a part short enough that we agree with visio * on the best way to compress it */ + @Test public void testCompressMini() throws Exception { // first 11 bytes compressed = 12 bytes uncompressed byte[] sourceComp = new byte[11]; @@ -186,7 +193,7 @@ public final class TestHDGFLZW extends T // Compress it using our engine HDGFLZW lzw = new HDGFLZW(); byte[] comp = lzw.compress(new ByteArrayInputStream(sourceDecomp)); - + // Now decompress it again byte[] decomp = lzw.decompress(new ByteArrayInputStream(comp)); @@ -206,6 +213,7 @@ public final class TestHDGFLZW extends T /** * Tests that we can do several mask pages */ + @Test public void testCompressMidi() throws Exception { // First 12 -> 11 // Next 32 -> 13 @@ -217,11 +225,11 @@ public final class TestHDGFLZW extends T // Compress it using our engine HDGFLZW lzw = new HDGFLZW(); byte[] comp = lzw.compress(new ByteArrayInputStream(sourceDecomp)); - + // We should be 3 characters bigger, as // we split one compressed bit into two assertEquals(27, comp.length); - + // Now decompress it again byte[] decomp = lzw.decompress(new ByteArrayInputStream(comp)); @@ -237,28 +245,30 @@ public final class TestHDGFLZW extends T * Gets 160 bytes through then starts going wrong... * TODO Fix this */ - public void DISABLEDtestCompressFull() throws Exception { + @Test + @Ignore + public void testCompressFull() throws Exception { assertEquals(339, testTrailerComp.length); assertEquals(632, testTrailerDecomp.length); // Compress it using our engine HDGFLZW lzw = new HDGFLZW(); byte[] comp = lzw.compress(new ByteArrayInputStream(testTrailerDecomp)); - + // Now decompress it again byte[] decomp = lzw.decompress(new ByteArrayInputStream(comp)); // for(int i=0;
svn commit: r1872041 [5/23] - in /poi/trunk/src: excelant/testcases/org/apache/poi/ss/examples/formula/ excelant/testcases/org/apache/poi/ss/excelant/ excelant/testcases/org/apache/poi/ss/excelant/uti
Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/Test7BitCodepage.java URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/Test7BitCodepage.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/Test7BitCodepage.java (original) +++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/Test7BitCodepage.java Fri Dec 27 23:00:13 2019 @@ -17,28 +17,31 @@ package org.apache.poi.hsmf; -import java.io.IOException; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; -import junit.framework.TestCase; +import java.io.IOException; import org.apache.poi.POIDataSamples; +import org.junit.Before; +import org.junit.Test; /** * Tests to verify if code page for general properties like subject, * text body and html body is evaluated correctly. */ -public final class Test7BitCodepage extends TestCase { - private final MAPIMessage ascii_cp1251_lcid1049; - private final MAPIMessage ascii_utf_8_cp1252_lcid1031; - private final MAPIMessage ascii_utf_8_cp1252_lcid1031_html; - private final MAPIMessage htmlbodybinary_cp1251; - private final MAPIMessage htmlbodybinary_utf_8; +public final class Test7BitCodepage { + private MAPIMessage ascii_cp1251_lcid1049; + private MAPIMessage ascii_utf_8_cp1252_lcid1031; + private MAPIMessage ascii_utf_8_cp1252_lcid1031_html; + private MAPIMessage htmlbodybinary_cp1251; + private MAPIMessage htmlbodybinary_utf_8; /** * Initialize this test, load up the messages. -* @throws Exception */ - public Test7BitCodepage() throws IOException { + @Before + public void setup() throws IOException { POIDataSamples samples = POIDataSamples.getHSMFInstance(); ascii_cp1251_lcid1049 = new MAPIMessage(samples.openResourceAsStream("ASCII_CP1251_LCID1049.msg")); ascii_utf_8_cp1252_lcid1031 = new MAPIMessage(samples.openResourceAsStream("ASCII_UTF-8_CP1252_LCID1031.msg")); @@ -50,6 +53,7 @@ public final class Test7BitCodepage exte /** * Evaluate encoding and check if the subject, text body and html body is decoded correctly. */ + @Test public void test7BitEncoding() throws Exception { ascii_cp1251_lcid1049.guess7BitEncoding(); ascii_cp1251_lcid1049.setReturnNullOnMissingChunk(true); @@ -61,23 +65,23 @@ public final class Test7BitCodepage exte htmlbodybinary_cp1251.setReturnNullOnMissingChunk(true); htmlbodybinary_utf_8.guess7BitEncoding(); htmlbodybinary_utf_8.setReturnNullOnMissingChunk(true); - + assertEquals("Subject авÑомаÑиÑеÑки Subject", ascii_cp1251_lcid1049.getSubject()); assertEquals("Body авÑомаÑиÑеÑки Body", ascii_cp1251_lcid1049.getTextBody()); assertEquals("HTML авÑомаÑиÑеÑки", ascii_cp1251_lcid1049.getHtmlBody()); - + assertEquals("Subject öäü Subject", ascii_utf_8_cp1252_lcid1031.getSubject()); assertEquals("Body öäü Body", ascii_utf_8_cp1252_lcid1031.getTextBody()); assertNull(ascii_utf_8_cp1252_lcid1031.getHtmlBody()); - + assertEquals("Subject öäü Subject", ascii_utf_8_cp1252_lcid1031_html.getSubject()); assertEquals("Body öäü Body", ascii_utf_8_cp1252_lcid1031_html.getTextBody()); assertEquals("HTML öäü", ascii_utf_8_cp1252_lcid1031_html.getHtmlBody()); - + assertEquals("Subject öäü Subject", htmlbodybinary_cp1251.getSubject()); assertNull(htmlbodybinary_cp1251.getTextBody()); assertEquals("HTML авÑомаÑиÑеÑки", htmlbodybinary_cp1251.getHtmlBody()); - + assertEquals("Subject öäü Subject", htmlbodybinary_utf_8.getSubject()); assertNull(htmlbodybinary_utf_8.getTextBody()); assertEquals("HTML öäü", htmlbodybinary_utf_8.getHtmlBody()); Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/TestBasics.java URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/TestBasics.java?rev=1872041=1872040=1872041=diff == --- poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/TestBasics.java (original) +++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/TestBasics.java Fri Dec 27 23:00:13 2019 @@ -19,34 +19,38 @@ package org.apache.poi.hsmf; import static org.apache.poi.POITestCase.assertContains; import static org.apache.poi.POITestCase.assertStartsWith; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.IOException; -import junit.framework.TestCase; - import org.apache.poi.POIDataSamples;
svn commit: r1871944 - in /poi/trunk/src: java/org/apache/poi/hpsf/ClassID.java java/org/apache/poi/hpsf/ClassIDPredefined.java java/org/apache/poi/hssf/record/HyperlinkRecord.java testcases/org/apach
Author: kiwiwings Date: Tue Dec 24 19:48:22 2019 New Revision: 1871944 URL: http://svn.apache.org/viewvc?rev=1871944=rev Log: Replace internal GUID class with ClassID Modified: poi/trunk/src/java/org/apache/poi/hpsf/ClassID.java poi/trunk/src/java/org/apache/poi/hpsf/ClassIDPredefined.java poi/trunk/src/java/org/apache/poi/hssf/record/HyperlinkRecord.java poi/trunk/src/testcases/org/apache/poi/hssf/record/TestHyperlinkRecord.java Modified: poi/trunk/src/java/org/apache/poi/hpsf/ClassID.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hpsf/ClassID.java?rev=1871944=1871943=1871944=diff == --- poi/trunk/src/java/org/apache/poi/hpsf/ClassID.java (original) +++ poi/trunk/src/java/org/apache/poi/hpsf/ClassID.java Tue Dec 24 19:48:22 2019 @@ -19,17 +19,20 @@ package org.apache.poi.hpsf; import java.util.Arrays; -import org.apache.poi.util.HexDump; +import org.apache.commons.codec.binary.Hex; +import org.apache.poi.common.Duplicatable; +import org.apache.poi.util.LittleEndianInput; +import org.apache.poi.util.LittleEndianOutput; /** * Represents a class ID (16 bytes). Unlike other little-endian * type the {@link ClassID} is not just 16 bytes stored in the wrong * order. Instead, it is a double word (4 bytes) followed by two * words (2 bytes each) followed by 8 bytes. - * - * The ClassID (or CLSID) is a UUID - see RFC 4122 + * + * The ClassID (or CLSID) is a UUID - see RFC 4122 */ -public class ClassID { +public class ClassID implements Duplicatable { /** @deprecated use enum {@link ClassIDPredefined} */ @Deprecated public static final ClassID OLE10_PACKAGE = ClassIDPredefined.OLE_V1_PACKAGE.getClassID(); /** @deprecated use enum {@link ClassIDPredefined} */ @Deprecated @@ -84,10 +87,10 @@ public class ClassID { public static final ClassID POWERPOINT2007_MACRO = ClassIDPredefined.POWERPOINT_V12_MACRO.getClassID(); /** @deprecated use enum {@link ClassIDPredefined} */ @Deprecated public static final ClassID EQUATION30 = ClassIDPredefined.EQUATION_V3.getClassID(); - + /** The number of bytes occupied by this object in the byte stream. */ public static final int LENGTH = 16; - + /** * The bytes making out the class ID in correct order, i.e. big-endian. */ @@ -111,11 +114,18 @@ public class ClassID { Arrays.fill(bytes, (byte)0); } +/** + * Clones the given ClassID + */ +public ClassID(ClassID other) { +System.arraycopy(other.bytes, 0, bytes, 0, bytes.length); +} + /** - * Creates a {@link ClassID} from a human-readable representation of the Class ID in standard + * Creates a {@link ClassID} from a human-readable representation of the Class ID in standard * format {@code "{----}"}. - * + * * @param externalForm representation of the Class ID represented by this object. */ public ClassID(String externalForm) { @@ -124,7 +134,16 @@ public class ClassID { bytes[i/2] = (byte)Integer.parseInt(clsStr.substring(i, i+2), 16); } } - + +/** + * Reads the ClassID from the input + * @param lei the input (stream) + */ +public ClassID(LittleEndianInput lei) { +byte[] buf = bytes.clone(); +lei.readFully(buf); +read(buf, 0); +} /** * @return The number of bytes occupied by this object in the byte stream. @@ -204,7 +223,7 @@ public class ClassID { ("Destination byte[] must have room for at least 16 bytes, " + "but has a length of only " + dst.length + "."); } - + /* Write double word. */ dst[0 + offset] = bytes[3]; dst[1 + offset] = bytes[2]; @@ -223,7 +242,16 @@ public class ClassID { System.arraycopy(bytes, 8, dst, 8 + offset, 8); } - +/** + * Write the class ID to a LittleEndianOutput (stream) + * + * @param leo the output + */ +public void write(LittleEndianOutput leo) { +byte[] buf = bytes.clone(); +write(buf, 0); +leo.write(buf); +} /** * Checks whether this {@code ClassID} is equal to another object. @@ -275,22 +303,23 @@ public class ClassID { } /** - * Returns a human-readable representation of the Class ID in standard + * Returns a human-readable representation of the Class ID in standard * format {@code "{----}"}. - * + * * @return String representation of the Class ID represented by this object. */ @Override public String toString() { -StringBuilder sbClassId = new StringBuilder(38); -sbClassId.append('{'); -for (int i = 0; i < LENGTH; i++) { -sbClassI
svn commit: r1871938 [3/3] - in /poi: site/src/documentation/content/xdocs/ trunk/src/scratchpad/src/org/apache/poi/hwpf/model/ trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/ trunk/src/scra
Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/DropCapSpecifier.java URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/DropCapSpecifier.java?rev=1871938=1871937=1871938=diff == --- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/DropCapSpecifier.java (original) +++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/DropCapSpecifier.java Tue Dec 24 11:56:42 2019 @@ -17,42 +17,50 @@ package org.apache.poi.hwpf.usermodel; +import org.apache.poi.common.Duplicatable; import org.apache.poi.util.BitField; import org.apache.poi.util.BitFieldFactory; import org.apache.poi.util.LittleEndian; +import org.apache.poi.util.Removal; /** * This data structure is used by a paragraph to determine how it should drop * its first letter. I think its the visual effect that will show a giant first * letter to a paragraph. I've seen this used in the first paragraph of a book - * - * @author Ryan Ackley */ -public final class DropCapSpecifier implements Cloneable -{ +public final class DropCapSpecifier implements Duplicatable { +private static final BitField _lines = BitFieldFactory.getInstance( 0xf8 ); +private static final BitField _type = BitFieldFactory.getInstance( 0x07 ); + private short _fdct; -private static BitField _lines = BitFieldFactory.getInstance( 0xf8 ); -private static BitField _type = BitFieldFactory.getInstance( 0x07 ); -public DropCapSpecifier() -{ -this._fdct = 0; +public DropCapSpecifier() { +_fdct = 0; +} + +public DropCapSpecifier(DropCapSpecifier other) { +_fdct = other._fdct; } -public DropCapSpecifier( byte[] buf, int offset ) -{ +public DropCapSpecifier( byte[] buf, int offset ) { this( LittleEndian.getShort( buf, offset ) ); } -public DropCapSpecifier( short fdct ) -{ +public DropCapSpecifier( short fdct ) { this._fdct = fdct; } @Override -public DropCapSpecifier clone() -{ -return new DropCapSpecifier( _fdct ); +@SuppressWarnings("squid:S2975") +@Deprecated +@Removal(version = "5.0.0") +public DropCapSpecifier clone() { +return copy(); +} + +@Override +public DropCapSpecifier copy() { +return new DropCapSpecifier(this); } @Override Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/LineSpacingDescriptor.java URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/LineSpacingDescriptor.java?rev=1871938=1871937=1871938=diff == --- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/LineSpacingDescriptor.java (original) +++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/LineSpacingDescriptor.java Tue Dec 24 11:56:42 2019 @@ -17,36 +17,44 @@ package org.apache.poi.hwpf.usermodel; +import org.apache.poi.common.Duplicatable; import org.apache.poi.util.LittleEndian; +import org.apache.poi.util.Removal; /** * This class is used to determine line spacing for a paragraph. - * - * @author Ryan Ackley */ -public final class LineSpacingDescriptor - implements Cloneable -{ +public final class LineSpacingDescriptor implements Duplicatable { short _dyaLine; short _fMultiLinespace; - public LineSpacingDescriptor() - { - //see page 181 + public LineSpacingDescriptor() { _dyaLine = 240; _fMultiLinespace = 1; } - public LineSpacingDescriptor(byte[] buf, int offset) - { + public LineSpacingDescriptor(LineSpacingDescriptor other) { + _dyaLine = other._dyaLine; + _fMultiLinespace = other._fMultiLinespace; + } + + + public LineSpacingDescriptor(byte[] buf, int offset) { _dyaLine = LittleEndian.getShort(buf, offset); _fMultiLinespace = LittleEndian.getShort(buf, offset + LittleEndian.SHORT_SIZE); } - public Object clone() -throws CloneNotSupportedException - { -return super.clone(); + @Override + @SuppressWarnings("squid:S2975") + @Deprecated + @Removal(version = "5.0.0") + public LineSpacingDescriptor clone() { +return copy(); + } + + @Override + public LineSpacingDescriptor copy() { +return new LineSpacingDescriptor(this); } public void setMultiLinespace(short fMultiLinespace) @@ -71,7 +79,7 @@ public final class LineSpacingDescriptor { _dyaLine = dyaLine; } - + @Override public boolean equals(Object o) { @@ -86,7 +94,7 @@ public final class LineSpacingDescriptor assert false : "hashCode not designed"; return 42; // any arbitrary constant will do } - + public boolean isEmpty() { return _dyaLine == 0 && _fMultiLinespace == 0; Modified:
svn commit: r1871938 [1/3] - in /poi: site/src/documentation/content/xdocs/ trunk/src/scratchpad/src/org/apache/poi/hwpf/model/ trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/ trunk/src/scra
Author: kiwiwings Date: Tue Dec 24 11:56:42 2019 New Revision: 1871938 URL: http://svn.apache.org/viewvc?rev=1871938=rev Log: #64004 - Replace clone() with copy constructor - mainly HWPF classes Modified: poi/site/src/documentation/content/xdocs/changes.xml poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/BookmarkFirstDescriptor.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/BytePropertyNode.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/CHPBinTable.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/CHPX.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/Colorref.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/FootnoteReferenceDescriptor.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/GenericPropertyNode.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/Hyphenation.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/OldCHPBinTable.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/OldSectionTable.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/OldTextPiece.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/PAPBinTable.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/PAPX.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/ParagraphHeight.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/PieceDescriptor.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/PropertyModifier.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/PropertyNode.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/SEPX.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/SectionDescriptor.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/SectionTable.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/SinglentonTextPiece.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/TabDescriptor.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/TextPiece.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/BKFAbstractType.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/CHPAbstractType.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/FRDAbstractType.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/HRESIAbstractType.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/PAPAbstractType.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/SEPAbstractType.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/SHD80AbstractType.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/SHDAbstractType.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/TAPAbstractType.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/TBDAbstractType.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/TCAbstractType.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/TLPAbstractType.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/sprm/ParagraphSprmUncompressor.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/sprm/SprmBuffer.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/BookmarksImpl.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/BorderCode.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/CharacterProperties.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/CharacterRun.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/DateAndTime.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/DropCapSpecifier.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/LineSpacingDescriptor.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/Paragraph.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/ParagraphProperties.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/Range.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/Section.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/SectionProperties.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/ShadingDescriptor.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/ShadingDescriptor80.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/TableAutoformatLookSpecifier.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/TableCellDescriptor.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/TableProperties.java Modified: poi/site/src/documentation/content/xdocs/changes.xml URL: http://svn.apache.org/viewvc/poi/site/src/documentation/content/xdocs/changes.xml?rev=1871938=1871937=1871938=diff == --- poi
svn commit: r1871938 [2/3] - in /poi: site/src/documentation/content/xdocs/ trunk/src/scratchpad/src/org/apache/poi/hwpf/model/ trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/ trunk/src/scra
Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/PAPAbstractType.java URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/PAPAbstractType.java?rev=1871938=1871937=1871938=diff == --- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/PAPAbstractType.java (original) +++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/PAPAbstractType.java Tue Dec 24 11:56:42 2019 @@ -19,6 +19,7 @@ package org.apache.poi.hwpf.model.types; import java.util.Arrays; +import java.util.stream.Stream; import org.apache.poi.hwpf.model.TabDescriptor; import org.apache.poi.hwpf.usermodel.BorderCode; @@ -31,18 +32,34 @@ import org.apache.poi.util.Internal; /** * Paragraph Properties. - * - * NOTE: This source is automatically generated please do not modify this file. Either subclass or - * remove the record in src/types/definitions. - * - * This class is internal. It content or properties may change without notice - * due to changes in our knowledge of internal Microsoft Word binary structures. - - * @author S. Ryan Ackley */ +@SuppressWarnings("unused") @Internal -public abstract class PAPAbstractType -{ +public abstract class PAPAbstractType { + +protected static final byte BRCL_SINGLE = 0; +protected static final byte BRCL_THICK = 1; +protected static final byte BRCL_DOUBLE = 2; +protected static final byte BRCL_SHADOW = 3; + +protected static final byte BRCP_NONE = 0; +protected static final byte BRCP_BORDER_ABOVE = 1; +protected static final byte BRCP_BORDER_BELOW = 2; +protected static final byte BRCP_BOX_AROUND = 15; +protected static final byte BRCP_BAR_TO_LEFT_OF_PARAGRAPH = 16; + +protected static final boolean FMINHEIGHT_EXACT = false; +protected static final boolean FMINHEIGHT_AT_LEAST = true; + +protected static final byte WALIGNFONT_HANGING = 0; +protected static final byte WALIGNFONT_CENTERED = 1; +protected static final byte WALIGNFONT_ROMAN = 2; +protected static final byte WALIGNFONT_VARIABLE = 3; +protected static final byte WALIGNFONT_AUTO = 4; + +private static final BitField fVertical = new BitField(0x0001); +private static final BitField fBackward = new BitField(0x0002); +private static final BitField fRotateFont = new BitField(0x0004); protected int field_1_istd; protected boolean field_2_fSideBySide; @@ -50,16 +67,7 @@ public abstract class PAPAbstractType protected boolean field_4_fKeepFollow; protected boolean field_5_fPageBreakBefore; protected byte field_6_brcl; -/**/protected final static byte BRCL_SINGLE = 0; -/**/protected final static byte BRCL_THICK = 1; -/**/protected final static byte BRCL_DOUBLE = 2; -/**/protected final static byte BRCL_SHADOW = 3; protected byte field_7_brcp; -/**/protected final static byte BRCP_NONE = 0; -/**/protected final static byte BRCP_BORDER_ABOVE = 1; -/**/protected final static byte BRCP_BORDER_BELOW = 2; -/**/protected final static byte BRCP_BOX_AROUND = 15; -/**/protected final static byte BRCP_BAR_TO_LEFT_OF_PARAGRAPH = 16; protected byte field_8_ilvl; protected int field_9_ilfo; protected boolean field_10_fNoLnn; @@ -80,8 +88,6 @@ public abstract class PAPAbstractType protected boolean field_25_fNoAutoHyph; protected int field_26_dyaHeight; protected boolean field_27_fMinHeight; -/**/protected final static boolean FMINHEIGHT_EXACT = false; -/**/protected final static boolean FMINHEIGHT_AT_LEAST = true; protected DropCapSpecifier field_28_dcs; protected int field_29_dyaFromText; protected int field_30_dxaFromText; @@ -94,15 +100,7 @@ public abstract class PAPAbstractType protected boolean field_37_fAutoSpaceDE; protected boolean field_38_fAutoSpaceDN; protected int field_39_wAlignFont; -/**/protected final static byte WALIGNFONT_HANGING = 0; -/**/protected final static byte WALIGNFONT_CENTERED = 1; -/**/protected final static byte WALIGNFONT_ROMAN = 2; -/**/protected final static byte WALIGNFONT_VARIABLE = 3; -/**/protected final static byte WALIGNFONT_AUTO = 4; protected short field_40_fontAlign; -/**/private static BitField fVertical = new BitField(0x0001); -/**/private static BitField fBackward = new BitField(0x0002); -/**/private static BitField fRotateFont = new BitField(0x0004); protected byte field_41_lvl; protected boolean field_42_fBiDi; protected boolean field_43_fNumRMIns; @@ -143,29 +141,111 @@ public abstract class PAPAbstractType protected long field_78_ipgp; protected long field_79_rsid; -protected PAPAbstractType() -{ -this.field_11_lspd = new LineSpacingDescriptor(); -this.field_11_lspd = new LineSpacingDescriptor(); -this.field_28_dcs = new
svn commit: r1871913 [2/2] - in /poi/trunk/src: java/org/apache/poi/ddf/ java/org/apache/poi/hpsf/ java/org/apache/poi/hssf/record/ java/org/apache/poi/hssf/record/common/ java/org/apache/poi/hssf/use
Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/Xst.java URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/Xst.java?rev=1871913=1871912=1871913=diff == --- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/Xst.java (original) +++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/Xst.java Mon Dec 23 00:15:55 2019 @@ -28,7 +28,7 @@ import org.apache.poi.util.LittleEndian; * * Documentation quoted from Page 424 of 621. [MS-DOC] -- v20110315 Word (.doc) * Binary File Format - * + * * @author Sergey Vladimirov (vlsergey {at} gmail {dot} com) */ public class Xst @@ -118,13 +118,8 @@ public class Xst } @Override -public int hashCode() -{ -final int prime = 31; -int result = 1; -result = prime * result + _cch; -result = prime * result + Arrays.hashCode( _rgtchar ); -return result; +public int hashCode() { +return Arrays.deepHashCode(new Object[]{_cch,_rgtchar}); } public void serialize( byte[] data, int startOffset ) Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/CHPAbstractType.java URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/CHPAbstractType.java?rev=1871913=1871912=1871913=diff == --- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/CHPAbstractType.java (original) +++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/CHPAbstractType.java Mon Dec 23 00:15:55 2019 @@ -34,7 +34,7 @@ import org.apache.poi.util.Internal; * NOTE: This source is automatically generated please do not modify this file. Either subclass or * remove the record in src/types/definitions. * - * This class is internal. It content or properties may change without notice + * This class is internal. It content or properties may change without notice * due to changes in our knowledge of internal Microsoft Word binary structures. * @author S. Ryan Ackley @@ -423,89 +423,20 @@ public abstract class CHPAbstractType } @Override -public int hashCode() -{ -final int prime = 31; -int result = 1; -result = prime * result + field_1_grpfChp; -result = prime * result + field_2_hps; -result = prime * result + field_3_ftcAscii; -result = prime * result + field_4_ftcFE; -result = prime * result + field_5_ftcOther; -result = prime * result + field_6_ftcBi; -result = prime * result + field_7_dxaSpace; -result = prime * result -+ ((field_8_cv == null) ? 0 : field_8_cv.hashCode()); -result = prime * result + field_9_ico; -result = prime * result + field_10_pctCharWidth; -result = prime * result + field_11_lidDefault; -result = prime * result + field_12_lidFE; -result = prime * result + field_13_kcd; -result = prime * result + ( field_14_fUndetermine? 1231 : 1237 ); -result = prime * result + field_15_iss; -result = prime * result + ( field_16_fSpecSymbol? 1231 : 1237 ); -result = prime * result + field_17_idct; -result = prime * result + field_18_idctHint; -result = prime * result + field_19_kul; -result = prime * result -+ ((field_20_hresi == null) ? 0 : field_20_hresi.hashCode()); -result = prime * result + field_21_hpsKern; -result = prime * result + field_22_hpsPos; -result = prime * result -+ ((field_23_shd == null) ? 0 : field_23_shd.hashCode()); -result = prime * result -+ ((field_24_brc == null) ? 0 : field_24_brc.hashCode()); -result = prime * result + field_25_ibstRMark; -result = prime * result + field_26_sfxtText; -result = prime * result + ( field_27_fDblBdr? 1231 : 1237 ); -result = prime * result + ( field_28_fBorderWS? 1231 : 1237 ); -result = prime * result + field_29_ufel; -result = prime * result + field_30_copt; -result = prime * result + field_31_hpsAsci; -result = prime * result + field_32_hpsFE; -result = prime * result + field_33_hpsBi; -result = prime * result + field_34_ftcSym; -result = prime * result + field_35_xchSym; -result = prime * result + field_36_fcPic; -result = prime * result + field_37_fcObj; -result = prime * result + field_38_lTagObj; -result = prime * result + field_39_fcData; -result = prime * result -+ ((field_40_hresiOld == null) ? 0 : field_40_hresiOld.hashCode()); -result = prime * result + field_41_ibstRMarkDel; -result = prime * result -+ ((field_42_dttmRMark == null) ? 0 : field_42_dttmRMark.hashCode()); -
svn commit: r1871913 [1/2] - in /poi/trunk/src: java/org/apache/poi/ddf/ java/org/apache/poi/hpsf/ java/org/apache/poi/hssf/record/ java/org/apache/poi/hssf/record/common/ java/org/apache/poi/hssf/use
Author: kiwiwings Date: Mon Dec 23 00:15:55 2019 New Revision: 1871913 URL: http://svn.apache.org/viewvc?rev=1871913=rev Log: Replace custom hashCode code with Objects.hash() / Arrays.deepHashCode() Modified: poi/trunk/src/java/org/apache/poi/ddf/EscherComplexProperty.java poi/trunk/src/java/org/apache/poi/ddf/EscherSimpleProperty.java poi/trunk/src/java/org/apache/poi/hpsf/CustomProperty.java poi/trunk/src/java/org/apache/poi/hpsf/Property.java poi/trunk/src/java/org/apache/poi/hpsf/Section.java poi/trunk/src/java/org/apache/poi/hssf/record/ExtendedFormatRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/FontRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/common/ExtRst.java poi/trunk/src/java/org/apache/poi/hssf/record/common/PhRun.java poi/trunk/src/java/org/apache/poi/hssf/record/common/UnicodeString.java poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFComment.java poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFFont.java poi/trunk/src/java/org/apache/poi/hssf/util/HSSFColor.java poi/trunk/src/java/org/apache/poi/ss/formula/EvaluationConditionalFormatRule.java poi/trunk/src/java/org/apache/poi/ss/util/CellReference.java poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/PackageRelationship.java poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/ContentType.java poi/trunk/src/ooxml/java/org/apache/poi/xssf/binary/XSSFHyperlinkRecord.java poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/textproperties/HSLFTabStop.java poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/textproperties/HSLFTabStopPropCollection.java poi/trunk/src/scratchpad/src/org/apache/poi/hslf/model/textproperties/TextPropCollection.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/BookmarkFirstDescriptor.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/FibBase.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/FibRgW97.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/FootnoteReferenceDescriptor.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/Hyphenation.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/LFOData.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/ListData.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/ListFormatOverrideLevel.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/ListTables.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/PICF.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/PieceDescriptor.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/PlfLfo.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/PropertyModifier.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/PropertyNode.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/SavedByEntry.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/StdfBase.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/StdfPost2000.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/Stshif.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/StyleDescription.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/TextPieceTable.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/Xst.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/CHPAbstractType.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/FFDataBaseAbstractType.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/FibRgLw95AbstractType.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/FibRgLw97AbstractType.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/GrfhicAbstractType.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/LFOAbstractType.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/LFOLVLBaseAbstractType.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/LSTFAbstractType.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/LVLFAbstractType.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/SHD80AbstractType.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/SHDAbstractType.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/BookmarksImpl.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/DropCapSpecifier.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/TableAutoformatLookSpecifier.java Modified: poi/trunk/src/java/org/apache/poi/ddf/EscherComplexProperty.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/EscherComplexProperty.java?rev=1871913=1871912=1871913=diff == --- poi/trunk/src/java/org/apache/poi/ddf
svn commit: r1871911 [14/15] - in /poi/trunk/src: integrationtest/org/apache/poi/ integrationtest/org/apache/poi/hssf/usermodel/ java/org/apache/poi/common/ java/org/apache/poi/ddf/ java/org/apache/po
Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hemf/record/emf/HemfPenStyle.java URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hemf/record/emf/HemfPenStyle.java?rev=1871911=1871910=1871911=diff == --- poi/trunk/src/scratchpad/src/org/apache/poi/hemf/record/emf/HemfPenStyle.java (original) +++ poi/trunk/src/scratchpad/src/org/apache/poi/hemf/record/emf/HemfPenStyle.java Sun Dec 22 21:44:45 2019 @@ -23,10 +23,28 @@ public class HemfPenStyle extends HwmfPe private float[] dashPattern; +public HemfPenStyle(int flag) { +super(flag); +} + +public HemfPenStyle(HemfPenStyle other) { +super(other); +dashPattern = (other.dashPattern == null) ? null : other.dashPattern.clone(); +} + +public static HemfPenStyle valueOf( +HwmfLineCap cap, HwmfLineJoin join, HwmfLineDash dash, boolean isAlternateDash, boolean isGeometric) { +int flag = 0; +flag = SUBSECTION_DASH.setValue(flag, dash.wmfFlag); +flag = SUBSECTION_ENDCAP.setValue(flag, cap.wmfFlag); +flag = SUBSECTION_JOIN.setValue(flag, join.wmfFlag); +flag = SUBSECTION_ALTERNATE.setBoolean(flag, isAlternateDash); +flag = SUBSECTION_GEOMETRIC.setBoolean(flag, isGeometric); +return new HemfPenStyle(flag); +} + public static HemfPenStyle valueOf(int flag) { -HemfPenStyle ps = new HemfPenStyle(); -ps.flag = flag; -return ps; +return new HemfPenStyle(flag); } @Override @@ -39,7 +57,7 @@ public class HemfPenStyle extends HwmfPe } @Override -public HemfPenStyle clone() { -return (HemfPenStyle)super.clone(); +public HemfPenStyle copy() { +return new HemfPenStyle(this); } } Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hemf/record/emfplus/HemfPlusPen.java URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hemf/record/emfplus/HemfPlusPen.java?rev=1871911=1871910=1871911=diff == --- poi/trunk/src/scratchpad/src/org/apache/poi/hemf/record/emfplus/HemfPlusPen.java (original) +++ poi/trunk/src/scratchpad/src/org/apache/poi/hemf/record/emfplus/HemfPlusPen.java Sun Dec 22 21:44:45 2019 @@ -34,13 +34,16 @@ import java.util.function.Supplier; import org.apache.poi.common.usermodel.GenericRecord; import org.apache.poi.hemf.draw.HemfDrawProperties; import org.apache.poi.hemf.draw.HemfGraphics; +import org.apache.poi.hemf.record.emf.HemfPenStyle; import org.apache.poi.hemf.record.emfplus.HemfPlusBrush.EmfPlusBrush; import org.apache.poi.hemf.record.emfplus.HemfPlusDraw.EmfPlusUnitType; import org.apache.poi.hemf.record.emfplus.HemfPlusHeader.EmfPlusGraphicsVersion; import org.apache.poi.hemf.record.emfplus.HemfPlusObject.EmfPlusObjectData; import org.apache.poi.hemf.record.emfplus.HemfPlusObject.EmfPlusObjectType; import org.apache.poi.hemf.record.emfplus.HemfPlusPath.EmfPlusPath; -import org.apache.poi.hwmf.record.HwmfPenStyle; +import org.apache.poi.hwmf.record.HwmfPenStyle.HwmfLineCap; +import org.apache.poi.hwmf.record.HwmfPenStyle.HwmfLineDash; +import org.apache.poi.hwmf.record.HwmfPenStyle.HwmfLineJoin; import org.apache.poi.util.BitField; import org.apache.poi.util.BitFieldFactory; import org.apache.poi.util.Internal; @@ -506,55 +509,45 @@ public class HemfPlusPen { brush.applyPen(ctx, continuedObjectData); prop.setPenWidth(penWidth); -prop.setPenStyle(new HwmfPenStyle(){ -@Override -public HwmfLineCap getLineCap() { -// ignore endCap for now -switch(startCap) { -default: -case FLAT: -return HwmfLineCap.FLAT; -case ROUND: -return HwmfLineCap.ROUND; -case SQUARE: -return HwmfLineCap.SQUARE; -} -} -@Override -public HwmfLineJoin getLineJoin() { -switch (join) { -default: -case BEVEL: -return HwmfLineJoin.BEVEL; -case ROUND: -return HwmfLineJoin.ROUND; -case MITER_CLIPPED: -case MITER: -return HwmfLineJoin.MITER; -} -} +HwmfLineCap cap; +// ignore endCap for now +switch(startCap) { +default: +case FLAT: +cap = HwmfLineCap.FLAT; +break; +case ROUND: +cap = HwmfLineCap.ROUND;
svn commit: r1871911 [12/15] - in /poi/trunk/src: integrationtest/org/apache/poi/ integrationtest/org/apache/poi/hssf/usermodel/ java/org/apache/poi/common/ java/org/apache/poi/ddf/ java/org/apache/po
Modified: poi/trunk/src/java/org/apache/poi/poifs/crypt/cryptoapi/CryptoAPIEncryptor.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/poifs/crypt/cryptoapi/CryptoAPIEncryptor.java?rev=1871911=1871910=1871911=diff == --- poi/trunk/src/java/org/apache/poi/poifs/crypt/cryptoapi/CryptoAPIEncryptor.java (original) +++ poi/trunk/src/java/org/apache/poi/poifs/crypt/cryptoapi/CryptoAPIEncryptor.java Sun Dec 22 21:44:45 2019 @@ -46,11 +46,15 @@ import org.apache.poi.util.IOUtils; import org.apache.poi.util.LittleEndian; import org.apache.poi.util.StringUtil; -public class CryptoAPIEncryptor extends Encryptor implements Cloneable { - +public class CryptoAPIEncryptor extends Encryptor { + private int chunkSize = 512; - -CryptoAPIEncryptor() { + +CryptoAPIEncryptor() {} + +CryptoAPIEncryptor(CryptoAPIEncryptor other) { +super(other); +chunkSize = other.chunkSize; } @Override @@ -98,31 +102,31 @@ public class CryptoAPIEncryptor extends public Cipher initCipherForBlock(Cipher cipher, int block) throws GeneralSecurityException { return CryptoAPIDecryptor.initCipherForBlock(cipher, block, getEncryptionInfo(), getSecretKey(), Cipher.ENCRYPT_MODE); -} +} @Override public ChunkedCipherOutputStream getDataStream(DirectoryNode dir) throws IOException { throw new IOException("not supported"); } - + @Override public CryptoAPICipherOutputStream getDataStream(OutputStream stream, int initialOffset) throws IOException, GeneralSecurityException { return new CryptoAPICipherOutputStream(stream); } - + /** * Encrypt the Document-/SummaryInformation and other optionally streams. * Opposed to other crypto modes, cryptoapi is record based and can't be used * to stream-encrypt a whole file - * + * * @see http://msdn.microsoft.com/en-us/library/dd943321(v=office.12).aspx">2.3.5.4 RC4 CryptoAPI Encrypted Summary Stream */ public void setSummaryEntries(DirectoryNode dir, String encryptedStream, POIFSFileSystem entries) throws IOException, GeneralSecurityException { CryptoAPIDocumentOutputStream bos = new CryptoAPIDocumentOutputStream(this); // NOSONAR byte[] buf = new byte[8]; - + bos.write(buf, 0, 8); // skip header List descList = new ArrayList<>(); @@ -137,24 +141,24 @@ public class CryptoAPIEncryptor extends descEntry.streamName = entry.getName(); descEntry.flags = StreamDescriptorEntry.flagStream.setValue(0, 1); descEntry.reserved2 = 0; - + bos.setBlock(block); DocumentInputStream dis = dir.createDocumentInputStream(entry); IOUtils.copy(dis, bos); dis.close(); - + descEntry.streamSize = bos.size() - descEntry.streamOffset; descList.add(descEntry); - + block++; } - + int streamDescriptorArrayOffset = bos.size(); - + bos.setBlock(0); LittleEndian.putUInt(buf, 0, descList.size()); bos.write(buf, 0, 4); - + for (StreamDescriptorEntry sde : descList) { LittleEndian.putUInt(buf, 0, sde.streamOffset); bos.write(buf, 0, 4); @@ -173,7 +177,7 @@ public class CryptoAPIEncryptor extends LittleEndian.putShort(buf, 0, (short)0); // null-termination bos.write(buf, 0, 2); } - + int savedSize = bos.size(); int streamDescriptorArraySize = savedSize - streamDescriptorArrayOffset; LittleEndian.putUInt(buf, 0, streamDescriptorArrayOffset); @@ -183,7 +187,7 @@ public class CryptoAPIEncryptor extends bos.setBlock(0); bos.write(buf, 0, 8); bos.setSize(savedSize); - + dir.createDocument(encryptedStream, new ByteArrayInputStream(bos.getBuf(), 0, savedSize)); } @@ -195,10 +199,10 @@ public class CryptoAPIEncryptor extends public void setChunkSize(int chunkSize) { this.chunkSize = chunkSize; } - + @Override -public CryptoAPIEncryptor clone() throws CloneNotSupportedException { -return (CryptoAPIEncryptor)super.clone(); +public CryptoAPIEncryptor copy() { +return new CryptoAPIEncryptor(this); } protected class CryptoAPICipherOutputStream extends ChunkedCipherOutputStream { Modified: poi/trunk/src/java/org/apache/poi/poifs/crypt/standard/StandardDecryptor.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/poifs/crypt/standard/StandardDecryptor.java?rev=1871911=1871910=1871911=diff == ---
svn commit: r1871911 [10/15] - in /poi/trunk/src: integrationtest/org/apache/poi/ integrationtest/org/apache/poi/hssf/usermodel/ java/org/apache/poi/common/ java/org/apache/poi/ddf/ java/org/apache/po
Modified: poi/trunk/src/java/org/apache/poi/hssf/record/chart/TextRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/chart/TextRecord.java?rev=1871911=1871910=1871911=diff == --- poi/trunk/src/java/org/apache/poi/hssf/record/chart/TextRecord.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/record/chart/TextRecord.java Sun Dec 22 21:44:45 2019 @@ -23,13 +23,14 @@ import org.apache.poi.util.BitField; import org.apache.poi.util.BitFieldFactory; import org.apache.poi.util.HexDump; import org.apache.poi.util.LittleEndianOutput; +import org.apache.poi.util.Removal; /** * The text record is used to define text stored on a chart. */ public final class TextRecord extends StandardRecord { -public final static short sid = 0x1025; - +public static final short sid = 0x1025; + private static final BitField dataLabelPlacement= BitFieldFactory.getInstance(0x000F); private static final BitField autoColor = BitFieldFactory.getInstance(0x0001); private static final BitField showKey = BitFieldFactory.getInstance(0x0002); @@ -45,66 +46,82 @@ public final class TextRecord extends St private static final BitField showValueAsPercentage = BitFieldFactory.getInstance(0x1000); private static final BitField showBubbleSizes = BitFieldFactory.getInstance(0x2000); private static final BitField showLabel = BitFieldFactory.getInstance(0x4000); - - -private byte field_1_horizontalAlignment; -public final static byteHORIZONTAL_ALIGNMENT_LEFT = 1; -public final static byteHORIZONTAL_ALIGNMENT_CENTER= 2; -public final static byteHORIZONTAL_ALIGNMENT_BOTTOM= 3; -public final static byteHORIZONTAL_ALIGNMENT_JUSTIFY = 4; -private byte field_2_verticalAlignment; -public final static byteVERTICAL_ALIGNMENT_TOP = 1; -public final static byteVERTICAL_ALIGNMENT_CENTER = 2; -public final static byteVERTICAL_ALIGNMENT_BOTTOM = 3; -public final static byteVERTICAL_ALIGNMENT_JUSTIFY = 4; -private short field_3_displayMode; -public final static short DISPLAY_MODE_TRANSPARENT = 1; -public final static short DISPLAY_MODE_OPAQUE= 2; -private intfield_4_rgbColor; -private intfield_5_x; -private intfield_6_y; -private intfield_7_width; -private intfield_8_height; -private short field_9_options1; -public final static short ROTATION_NONE = 0; -public final static short ROTATION_TOP_TO_BOTTOM = 1; -public final static short ROTATION_ROTATED_90_DEGREES= 2; -public final static short ROTATION_ROTATED_90_DEGREES_CLOCKWISE = 3; -private short field_10_indexOfColorValue; -private short field_11_options2; -public final static short DATA_LABEL_PLACEMENT_CHART_DEPENDENT = 0; -public final static short DATA_LABEL_PLACEMENT_OUTSIDE = 1; -public final static short DATA_LABEL_PLACEMENT_INSIDE= 2; -public final static short DATA_LABEL_PLACEMENT_CENTER= 3; -public final static short DATA_LABEL_PLACEMENT_AXIS = 4; -public final static short DATA_LABEL_PLACEMENT_ABOVE = 5; -public final static short DATA_LABEL_PLACEMENT_BELOW = 6; -public final static short DATA_LABEL_PLACEMENT_LEFT = 7; -public final static short DATA_LABEL_PLACEMENT_RIGHT = 8; -public final static short DATA_LABEL_PLACEMENT_AUTO = 9; -public final static short DATA_LABEL_PLACEMENT_USER_MOVED = 10; -private short field_12_textRotation; - - -public TextRecord() -{ -} -public TextRecord(RecordInputStream in) -{ -field_1_horizontalAlignment= in.readByte(); -field_2_verticalAlignment = in.readByte(); -field_3_displayMode= in.readShort(); -field_4_rgbColor = in.readInt(); -field_5_x = in.readInt(); -field_6_y = in.readInt(); -field_7_width = in.readInt(); -field_8_height = in.readInt(); -field_9_options1 = in.readShort(); -field_10_indexOfColorValue = in.readShort(); -field_11_options2 = in.readShort(); -field_12_textRotation = in.readShort(); +public static final byte HORIZONTAL_ALIGNMENT_LEFT = 1; +public static final byte HORIZONTAL_ALIGNMENT_CENTER= 2; +public static final byte HORIZONTAL_ALIGNMENT_BOTTOM= 3; +public static final byte
svn commit: r1871911 [8/15] - in /poi/trunk/src: integrationtest/org/apache/poi/ integrationtest/org/apache/poi/hssf/usermodel/ java/org/apache/poi/common/ java/org/apache/poi/ddf/ java/org/apache/poi
Modified: poi/trunk/src/java/org/apache/poi/hssf/record/chart/AreaRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/chart/AreaRecord.java?rev=1871911=1871910=1871911=diff == --- poi/trunk/src/java/org/apache/poi/hssf/record/chart/AreaRecord.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/record/chart/AreaRecord.java Sun Dec 22 21:44:45 2019 @@ -23,28 +23,28 @@ import org.apache.poi.util.BitField; import org.apache.poi.util.BitFieldFactory; import org.apache.poi.util.HexDump; import org.apache.poi.util.LittleEndianOutput; +import org.apache.poi.util.Removal; /** - * The area record is used to define a area chart. - * - * @author Glen Stampoultzis (glens at apache.org) + * The area record is used to define a area chart. */ -public final class AreaRecord extends StandardRecord implements Cloneable { -public final static short sid = 0x101A; -private short field_1_formatFlags; +public final class AreaRecord extends StandardRecord { +public static final short sid = 0x101A; private static final BitField stacked = BitFieldFactory.getInstance(0x1); private static final BitField displayAsPercentage = BitFieldFactory.getInstance(0x2); private static final BitField shadow = BitFieldFactory.getInstance(0x4); +private short field_1_formatFlags; -public AreaRecord() -{ -} +public AreaRecord() {} -public AreaRecord(RecordInputStream in) -{ +public AreaRecord(AreaRecord other) { +super(other); +field_1_formatFlags = other.field_1_formatFlags; +} +public AreaRecord(RecordInputStream in) { field_1_formatFlags= in.readShort(); } @@ -56,10 +56,10 @@ public final class AreaRecord extends St buffer.append(".formatFlags = ") .append("0x").append(HexDump.toHex( getFormatFlags ())) .append(" (").append( getFormatFlags() ).append(" )"); -buffer.append(System.getProperty("line.separator")); -buffer.append(" .stacked = ").append(isStacked()).append('\n'); -buffer.append(" .displayAsPercentage = ").append(isDisplayAsPercentage()).append('\n'); -buffer.append(" .shadow = ").append(isShadow()).append('\n'); +buffer.append(System.getProperty("line.separator")); +buffer.append(" .stacked = ").append(isStacked()).append('\n'); +buffer.append(" .displayAsPercentage = ").append(isDisplayAsPercentage()).append('\n'); +buffer.append(" .shadow = ").append(isShadow()).append('\n'); buffer.append("[/AREA]\n"); return buffer.toString(); @@ -79,16 +79,13 @@ public final class AreaRecord extends St } @Override +@SuppressWarnings("squid:S2975") +@Deprecated +@Removal(version = "5.0.0") public AreaRecord clone() { -AreaRecord rec = new AreaRecord(); - -rec.field_1_formatFlags = field_1_formatFlags; -return rec; +return copy(); } - - - /** * Get the format flags field for the Area record. */ @@ -158,4 +155,9 @@ public final class AreaRecord extends St { return shadow.isSet(field_1_formatFlags); } + +@Override +public AreaRecord copy() { +return new AreaRecord(this); +} } Modified: poi/trunk/src/java/org/apache/poi/hssf/record/chart/AxisLineFormatRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/chart/AxisLineFormatRecord.java?rev=1871911=1871910=1871911=diff == --- poi/trunk/src/java/org/apache/poi/hssf/record/chart/AxisLineFormatRecord.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/record/chart/AxisLineFormatRecord.java Sun Dec 22 21:44:45 2019 @@ -21,29 +21,29 @@ import org.apache.poi.hssf.record.Record import org.apache.poi.hssf.record.StandardRecord; import org.apache.poi.util.HexDump; import org.apache.poi.util.LittleEndianOutput; +import org.apache.poi.util.Removal; /** - * The axis line format record defines the axis type details. - * - * @author Glen Stampoultzis (glens at apache.org) + * The axis line format record defines the axis type details. */ -public final class AxisLineFormatRecord extends StandardRecord implements Cloneable { -public final static short sid = 0x1021; -private short field_1_axisType; -public final static short AXIS_TYPE_AXIS_LINE= 0; -public final static short AXIS_TYPE_MAJOR_GRID_LINE = 1; -public final static short AXIS_TYPE_MINOR_GRID_LINE = 2; -public final
svn commit: r1871911 [15/15] - in /poi/trunk/src: integrationtest/org/apache/poi/ integrationtest/org/apache/poi/hssf/usermodel/ java/org/apache/poi/common/ java/org/apache/poi/ddf/ java/org/apache/po
Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSSTRecordSizeCalculator.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSSTRecordSizeCalculator.java?rev=1871911=1871910=1871911=diff == --- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSSTRecordSizeCalculator.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestSSTRecordSizeCalculator.java Sun Dec 22 21:44:45 2019 @@ -18,23 +18,34 @@ package org.apache.poi.hssf.record; import junit.framework.TestCase; - import org.apache.poi.hssf.record.common.UnicodeString; import org.apache.poi.hssf.record.cont.ContinuableRecordOutput; import org.apache.poi.util.IntMapper; +import org.apache.poi.util.LittleEndianConsts; /** * Tests that records size calculates correctly. - * + * * @author Glen Stampoultzis (glens at apache.org) */ public final class TestSSTRecordSizeCalculator extends TestCase { private static final String SMALL_STRING = "Small string"; private static final int COMPRESSED_PLAIN_STRING_OVERHEAD = 3; private static final int OPTION_FIELD_SIZE = 1; - + private final IntMapper strings = new IntMapper<>(); + + /** standard record overhead: two shorts (record id plus data space size)*/ + private static final int STD_RECORD_OVERHEAD = 2 * LittleEndianConsts.SHORT_SIZE; + + /** SST overhead: the standard record overhead, plus the number of strings and the number of unique strings -- two ints */ + private static final int SST_RECORD_OVERHEAD = STD_RECORD_OVERHEAD + 2 * LittleEndianConsts.INT_SIZE; + + /** how much data can we stuff into an SST record? That would be _max minus the standard SST record overhead */ + private static final int MAX_DATA_SPACE = RecordInputStream.MAX_RECORD_DATA_SIZE - 8; + + private void confirmSize(int expectedSize) { ContinuableRecordOutput cro = ContinuableRecordOutput.createForCountingOnly(); SSTSerializer ss = new SSTSerializer(strings, 0, 0); @@ -44,64 +55,64 @@ public final class TestSSTRecordSizeCalc public void testBasic() { strings.add(makeUnicodeString(SMALL_STRING)); - confirmSize(SSTRecord.SST_RECORD_OVERHEAD + confirmSize(SST_RECORD_OVERHEAD + COMPRESSED_PLAIN_STRING_OVERHEAD + SMALL_STRING.length()); } public void testBigStringAcrossUnicode() { - int bigString = SSTRecord.MAX_DATA_SPACE + 100; + int bigString = MAX_DATA_SPACE + 100; strings.add(makeUnicodeString(bigString)); - confirmSize(SSTRecord.SST_RECORD_OVERHEAD + confirmSize(SST_RECORD_OVERHEAD + COMPRESSED_PLAIN_STRING_OVERHEAD - + SSTRecord.MAX_DATA_SPACE - + SSTRecord.STD_RECORD_OVERHEAD + + MAX_DATA_SPACE + + STD_RECORD_OVERHEAD + OPTION_FIELD_SIZE + 100); } public void testPerfectFit() { - int perfectFit = SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD; + int perfectFit = MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD; strings.add(makeUnicodeString(perfectFit)); - confirmSize(SSTRecord.SST_RECORD_OVERHEAD + confirmSize(SST_RECORD_OVERHEAD + COMPRESSED_PLAIN_STRING_OVERHEAD + perfectFit); } public void testJustOversized() { - int tooBig = SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD + 1; + int tooBig = MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD + 1; strings.add(makeUnicodeString(tooBig)); - confirmSize(SSTRecord.SST_RECORD_OVERHEAD + confirmSize(SST_RECORD_OVERHEAD + COMPRESSED_PLAIN_STRING_OVERHEAD + tooBig - 1 // continue record - + SSTRecord.STD_RECORD_OVERHEAD + + STD_RECORD_OVERHEAD + OPTION_FIELD_SIZE + 1); } public void testSecondStringStartsOnNewContinuation() { - int perfectFit = SSTRecord.MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD; + int perfectFit = MAX_DATA_SPACE - COMPRESSED_PLAIN_STRING_OVERHEAD; strings.add(makeUnicodeString(perfectFit)); strings.add(makeUnicodeString(SMALL_STRING)); - confirmSize(SSTRecord.SST_RECORD_OVERHEAD -
svn commit: r1871911 [11/15] - in /poi/trunk/src: integrationtest/org/apache/poi/ integrationtest/org/apache/poi/hssf/usermodel/ java/org/apache/poi/common/ java/org/apache/poi/ddf/ java/org/apache/po
Modified: poi/trunk/src/java/org/apache/poi/hssf/record/common/UnicodeString.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/common/UnicodeString.java?rev=1871911=1871910=1871911=diff == --- poi/trunk/src/java/org/apache/poi/hssf/record/common/UnicodeString.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/record/common/UnicodeString.java Sun Dec 22 21:44:45 2019 @@ -18,368 +18,91 @@ package org.apache.poi.hssf.record.common; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.Iterator; import java.util.List; +import java.util.stream.Collectors; +import org.apache.poi.common.Duplicatable; import org.apache.poi.hssf.record.RecordInputStream; import org.apache.poi.hssf.record.cont.ContinuableRecordInput; import org.apache.poi.hssf.record.cont.ContinuableRecordOutput; import org.apache.poi.util.BitField; import org.apache.poi.util.BitFieldFactory; -import org.apache.poi.util.IOUtils; -import org.apache.poi.util.LittleEndianInput; -import org.apache.poi.util.LittleEndianOutput; import org.apache.poi.util.POILogFactory; import org.apache.poi.util.POILogger; -import org.apache.poi.util.StringUtil; +import org.apache.poi.util.Removal; /** - * Title: Unicode String - * Description: Unicode String - just standard fields that are in several records. - * It is considered more desirable then repeating it in all of them. - * This is often called a XLUnicodeRichExtendedString in MS documentation. - * REFERENCE: PG 264 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2) - * REFERENCE: PG 951 Excel Binary File Format (.xls) Structure Specification v20091214 + * Unicode String - just standard fields that are in several records. + * It is considered more desirable then repeating it in all of them. + * This is often called a XLUnicodeRichExtendedString in MS documentation. */ -public class UnicodeString implements Comparable { +public class UnicodeString implements Comparable, Duplicatable { private static final POILogger _logger = POILogFactory.getLogger(UnicodeString.class); -//arbitrarily selected; may need to increase -private static final int MAX_RECORD_LENGTH = 100_000; - +private static final BitField highByte = BitFieldFactory.getInstance(0x1); +// 0x2 is reserved +private static final BitField extBit= BitFieldFactory.getInstance(0x4); +private static final BitField richText = BitFieldFactory.getInstance(0x8); private short field_1_charCount; private byte field_2_optionflags; private Stringfield_3_string; private List field_4_format_runs; private ExtRstfield_5_ext_rst; -private static final BitField highByte = BitFieldFactory.getInstance(0x1); -// 0x2 is reserved -private static final BitField extBit= BitFieldFactory.getInstance(0x4); -private static final BitField richText = BitFieldFactory.getInstance(0x8); - -public static class FormatRun implements Comparable { -final short _character; -short _fontIndex; - -public FormatRun(short character, short fontIndex) { -this._character = character; -this._fontIndex = fontIndex; -} - -public FormatRun(LittleEndianInput in) { -this(in.readShort(), in.readShort()); -} -public short getCharacterPos() { -return _character; -} +private UnicodeString(UnicodeString other) { +field_1_charCount = other.field_1_charCount; +field_2_optionflags = other.field_2_optionflags; +field_3_string = other.field_3_string; +field_4_format_runs = (other.field_4_format_runs == null) ? null : + other.field_4_format_runs.stream().map(FormatRun::new).collect(Collectors.toList()); +field_5_ext_rst = (other.field_5_ext_rst == null) ? null : other.field_5_ext_rst.copy(); +} -public short getFontIndex() { -return _fontIndex; -} +public UnicodeString(String str) { + setString(str); +} -public boolean equals(Object o) { -if (!(o instanceof FormatRun)) { -return false; -} -FormatRun other = ( FormatRun ) o; +/** + * construct a unicode string record and fill its fields, ID is ignored + * @param in the RecordInputstream to read the record from + */ +public UnicodeString(RecordInputStream in) { +field_1_charCount = in.readShort(); +field_2_optionflags = in.readByte(); -return _character == other._character && _fontIndex == other._fontIndex; +int runCount = 0; +int extensionLength = 0; +//Read the number of rich runs if rich text. +if (isRichText()) { +
svn commit: r1871911 [5/15] - in /poi/trunk/src: integrationtest/org/apache/poi/ integrationtest/org/apache/poi/hssf/usermodel/ java/org/apache/poi/common/ java/org/apache/poi/ddf/ java/org/apache/poi
Modified: poi/trunk/src/java/org/apache/poi/hssf/record/LeftMarginRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/LeftMarginRecord.java?rev=1871911=1871910=1871911=diff == --- poi/trunk/src/java/org/apache/poi/hssf/record/LeftMarginRecord.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/record/LeftMarginRecord.java Sun Dec 22 21:44:45 2019 @@ -18,18 +18,23 @@ package org.apache.poi.hssf.record; import org.apache.poi.util.LittleEndianOutput; +import org.apache.poi.util.Removal; /** * Record for the left margin. */ -public final class LeftMarginRecord extends StandardRecord implements Margin, Cloneable { -public final static short sid = 0x0026; +public final class LeftMarginRecord extends StandardRecord implements Margin { +public static final short sid = 0x0026; private double field_1_margin; -public LeftMarginRecord(){} +public LeftMarginRecord() {} -public LeftMarginRecord(RecordInputStream in) -{ +public LeftMarginRecord(LeftMarginRecord other) { +super(other); +field_1_margin = other.field_1_margin; +} + +public LeftMarginRecord(RecordInputStream in) { field_1_margin = in.readDouble(); } @@ -70,9 +75,15 @@ public final class LeftMarginRecord exte } @Override +@SuppressWarnings("squid:S2975") +@Deprecated +@Removal(version = "5.0.0") public LeftMarginRecord clone() { -LeftMarginRecord rec = new LeftMarginRecord(); -rec.field_1_margin = this.field_1_margin; -return rec; +return copy(); +} + +@Override +public LeftMarginRecord copy() { +return new LeftMarginRecord(this); } -} \ No newline at end of file +} \ No newline at end of file Modified: poi/trunk/src/java/org/apache/poi/hssf/record/MMSRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/MMSRecord.java?rev=1871911=1871910=1871911=diff == --- poi/trunk/src/java/org/apache/poi/hssf/record/MMSRecord.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/record/MMSRecord.java Sun Dec 22 21:44:45 2019 @@ -15,38 +15,36 @@ See the License for the specific language governing permissions and limitations under the License. */ - + package org.apache.poi.hssf.record; import org.apache.poi.util.LittleEndianOutput; /** - * Title: MMS Record - * Description: defines how many add menu and del menu options are stored - *in the file. Should always be set to 0 for HSSF workbooks - * REFERENCE: PG 328 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2) - * @author Andrew C. Oliver (acoliver at apache dot org) + * defines how many add menu and del menu options are stored in the file. + * Should always be set to 0 for HSSF workbooks. + * * @version 2.0-pre */ -public final class MMSRecord -extends StandardRecord -{ -public final static short sid = 0xC1; -private byte field_1_addMenuCount; // = 0; -private byte field_2_delMenuCount; // = 0; +public final class MMSRecord extends StandardRecord { +public static final short sid = 0xC1; +private byte field_1_addMenuCount; +private byte field_2_delMenuCount; -public MMSRecord() -{ +public MMSRecord() {} + +public MMSRecord(MMSRecord other) { +field_1_addMenuCount = other.field_1_addMenuCount; +field_2_delMenuCount = other.field_2_delMenuCount; } -public MMSRecord(RecordInputStream in) -{ +public MMSRecord(RecordInputStream in) { if (in.remaining()==0) { return; } - + field_1_addMenuCount = in.readByte(); field_2_delMenuCount = in.readByte(); } @@ -117,4 +115,9 @@ public final class MMSRecord { return sid; } + +@Override +public MMSRecord copy() { +return new MMSRecord(this); +} } Modified: poi/trunk/src/java/org/apache/poi/hssf/record/MergeCellsRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/MergeCellsRecord.java?rev=1871911=1871910=1871911=diff == --- poi/trunk/src/java/org/apache/poi/hssf/record/MergeCellsRecord.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/record/MergeCellsRecord.java Sun Dec 22 21:44:45 2019 @@ -17,22 +17,33 @@ package org.apache.poi.hssf.record; +import java.util.stream.Stream; + import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellRangeAddressList; import org.apache.poi.util.LittleEndianOutput; +import org.apache.poi.util.Removal; /** - * Title: Merged Cells Record
svn commit: r1871911 [13/15] - in /poi/trunk/src: integrationtest/org/apache/poi/ integrationtest/org/apache/poi/hssf/usermodel/ java/org/apache/poi/common/ java/org/apache/poi/ddf/ java/org/apache/po
Modified: poi/trunk/src/java/org/apache/poi/ss/formula/ptg/NumberPtg.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/formula/ptg/NumberPtg.java?rev=1871911=1871910=1871911=diff == --- poi/trunk/src/java/org/apache/poi/ss/formula/ptg/NumberPtg.java (original) +++ poi/trunk/src/java/org/apache/poi/ss/formula/ptg/NumberPtg.java Sun Dec 22 21:44:45 2019 @@ -24,9 +24,6 @@ import org.apache.poi.util.LittleEndianO /** * Number Stores a floating point value in a formula value stored in a 8 byte * field using IEEE notation - * - * @author Avik Sengupta - * @author Jason Height (jheight at chariot dot net dot au) */ public final class NumberPtg extends ScalarConstantPtg { public final static int SIZE = 9; @@ -41,7 +38,7 @@ public final class NumberPtg extends Sca * Create a NumberPtg from a string representation of the number Number * format is not checked, it is expected to be validated in the parser that * calls this method. -* +* * @param value String representation of a floating point number */ public NumberPtg(String value) { @@ -68,4 +65,9 @@ public final class NumberPtg extends Sca public String toFormulaString() { return NumberToTextConverter.toText(field_1_value); } + + @Override + public NumberPtg copy() { + return this; + } } Modified: poi/trunk/src/java/org/apache/poi/ss/formula/ptg/OperandPtg.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/formula/ptg/OperandPtg.java?rev=1871911=1871910=1871911=diff == --- poi/trunk/src/java/org/apache/poi/ss/formula/ptg/OperandPtg.java (original) +++ poi/trunk/src/java/org/apache/poi/ss/formula/ptg/OperandPtg.java Sun Dec 22 21:44:45 2019 @@ -17,10 +17,13 @@ package org.apache.poi.ss.formula.ptg; -/** - * @author Josh Micich - */ -public abstract class OperandPtg extends Ptg implements Cloneable { +public abstract class OperandPtg extends Ptg { + + protected OperandPtg() {} + + protected OperandPtg(OperandPtg other) { + super(other); + } /** * All Operand {@link Ptg}s are classified ('relative', 'value', 'array') @@ -28,11 +31,7 @@ public abstract class OperandPtg extends public final boolean isBaseToken() { return false; } - public final OperandPtg copy() { - try { - return (OperandPtg) clone(); - } catch (CloneNotSupportedException e) { - throw new RuntimeException(e); - } - } + + @Override + public abstract OperandPtg copy(); } Modified: poi/trunk/src/java/org/apache/poi/ss/formula/ptg/OperationPtg.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/formula/ptg/OperationPtg.java?rev=1871911=1871910=1871911=diff == --- poi/trunk/src/java/org/apache/poi/ss/formula/ptg/OperationPtg.java (original) +++ poi/trunk/src/java/org/apache/poi/ss/formula/ptg/OperationPtg.java Sun Dec 22 21:44:45 2019 @@ -26,19 +26,21 @@ public abstract class OperationPtg exten public final static int TYPE_BINARY = 1; public final static int TYPE_FUNCTION = 2; +protected OperationPtg() {} + /** * returns a string representation of the operations - * the length of the input array should equal the number returned by + * the length of the input array should equal the number returned by * @see #getNumberOfOperands - * + * */ public abstract String toFormulaString(String[] operands); - + /** * The number of operands expected by the operations */ public abstract int getNumberOfOperands(); - + public byte getDefaultOperandClass() { return Ptg.CLASS_VALUE; } Modified: poi/trunk/src/java/org/apache/poi/ss/formula/ptg/ParenthesisPtg.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/formula/ptg/ParenthesisPtg.java?rev=1871911=1871910=1871911=diff == --- poi/trunk/src/java/org/apache/poi/ss/formula/ptg/ParenthesisPtg.java (original) +++ poi/trunk/src/java/org/apache/poi/ss/formula/ptg/ParenthesisPtg.java Sun Dec 22 21:44:45 2019 @@ -23,18 +23,13 @@ import org.apache.poi.util.LittleEndianO * While formula tokens are stored in RPN order and thus do not need parenthesis * for precedence reasons, Parenthesis tokens ARE written to ensure that user * entered parenthesis are displayed as-is on reading back - * - * Avik Sengupta li...@aviksengupta.com Andrew C. Oliver (acoliver at - * apache dot org) - * - * @author Jason Height
svn commit: r1871911 [1/15] - in /poi/trunk/src: integrationtest/org/apache/poi/ integrationtest/org/apache/poi/hssf/usermodel/ java/org/apache/poi/common/ java/org/apache/poi/ddf/ java/org/apache/poi
Author: kiwiwings Date: Sun Dec 22 21:44:45 2019 New Revision: 1871911 URL: http://svn.apache.org/viewvc?rev=1871911=rev Log: #64004 - Replace clone() with copy constructor - mainly HSSF classes Added: poi/trunk/src/java/org/apache/poi/common/Duplicatable.java (with props) poi/trunk/src/java/org/apache/poi/hssf/record/FormulaSpecialCachedValue.java (with props) poi/trunk/src/java/org/apache/poi/hssf/record/common/ExtRst.java (with props) poi/trunk/src/java/org/apache/poi/hssf/record/common/FormatRun.java (with props) poi/trunk/src/java/org/apache/poi/hssf/record/common/PhRun.java (with props) Modified: poi/trunk/src/integrationtest/org/apache/poi/TestAllFiles.java poi/trunk/src/integrationtest/org/apache/poi/hssf/usermodel/RecordsStresser.java poi/trunk/src/java/org/apache/poi/ddf/AbstractEscherOptRecord.java poi/trunk/src/java/org/apache/poi/ddf/EscherContainerRecord.java poi/trunk/src/java/org/apache/poi/ddf/EscherRecord.java poi/trunk/src/java/org/apache/poi/ddf/EscherTextboxRecord.java poi/trunk/src/java/org/apache/poi/ddf/UnknownEscherRecord.java poi/trunk/src/java/org/apache/poi/hssf/eventusermodel/dummyrecord/DummyRecordBase.java poi/trunk/src/java/org/apache/poi/hssf/eventusermodel/dummyrecord/LastCellOfRowDummyRecord.java poi/trunk/src/java/org/apache/poi/hssf/eventusermodel/dummyrecord/MissingCellDummyRecord.java poi/trunk/src/java/org/apache/poi/hssf/eventusermodel/dummyrecord/MissingRowDummyRecord.java poi/trunk/src/java/org/apache/poi/hssf/model/InternalSheet.java poi/trunk/src/java/org/apache/poi/hssf/model/RecordStream.java poi/trunk/src/java/org/apache/poi/hssf/record/AbstractEscherHolderRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/ArrayRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/AutoFilterInfoRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/BOFRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/BackupRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/BlankRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/BookBoolRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/BoolErrRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/BottomMarginRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/BoundSheetRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/CFHeader12Record.java poi/trunk/src/java/org/apache/poi/hssf/record/CFHeaderBase.java poi/trunk/src/java/org/apache/poi/hssf/record/CFHeaderRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/CFRule12Record.java poi/trunk/src/java/org/apache/poi/hssf/record/CFRuleBase.java poi/trunk/src/java/org/apache/poi/hssf/record/CFRuleRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/CRNCountRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/CRNRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/CalcCountRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/CalcModeRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/CellRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/CodepageRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/ColumnInfoRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/CommonObjectDataSubRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/ContinueRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/CountryRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/DBCellRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/DConRefRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/DSFRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/DVALRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/DVRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/DateWindow1904Record.java poi/trunk/src/java/org/apache/poi/hssf/record/DefaultColWidthRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/DefaultRowHeightRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/DeltaRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/DimensionsRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/DrawingGroupRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/DrawingRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/DrawingRecordForBiffViewer.java poi/trunk/src/java/org/apache/poi/hssf/record/DrawingSelectionRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/EOFRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/EmbeddedObjectRefSubRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/EndSubRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/EscherAggregate.java poi/trunk/src/java/org/apache/poi/hssf/record/ExtSSTRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/ExtendedFormatRecord.java poi/trunk/src/java/org/apache/poi/hssf/record/ExternSheetRecord.java
svn commit: r1871911 [9/15] - in /poi/trunk/src: integrationtest/org/apache/poi/ integrationtest/org/apache/poi/hssf/usermodel/ java/org/apache/poi/common/ java/org/apache/poi/ddf/ java/org/apache/poi
Modified: poi/trunk/src/java/org/apache/poi/hssf/record/chart/FrameRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/chart/FrameRecord.java?rev=1871911=1871910=1871911=diff == --- poi/trunk/src/java/org/apache/poi/hssf/record/chart/FrameRecord.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/record/chart/FrameRecord.java Sun Dec 22 21:44:45 2019 @@ -23,31 +23,34 @@ import org.apache.poi.util.BitField; import org.apache.poi.util.BitFieldFactory; import org.apache.poi.util.HexDump; import org.apache.poi.util.LittleEndianOutput; +import org.apache.poi.util.Removal; /** * The frame record indicates whether there is a border around the displayed text of a chart. */ -public final class FrameRecord extends StandardRecord implements Cloneable { -public final static short sid = 0x1032; +public final class FrameRecord extends StandardRecord { +public static final short sid = 0x1032; +public static final short BORDER_TYPE_REGULAR= 0; +public static final short BORDER_TYPE_SHADOW = 1; private static final BitField autoSize = BitFieldFactory.getInstance(0x1); private static final BitField autoPosition = BitFieldFactory.getInstance(0x2); -private short field_1_borderType; -public final static short BORDER_TYPE_REGULAR= 0; -public final static short BORDER_TYPE_SHADOW = 1; -private short field_2_options; +private short field_1_borderType; +private short field_2_options; -public FrameRecord() -{ +public FrameRecord() {} +public FrameRecord(FrameRecord other) { +super(other); +field_1_borderType = other.field_1_borderType; +field_2_options = other.field_2_options; } -public FrameRecord(RecordInputStream in) -{ -field_1_borderType = in.readShort(); -field_2_options= in.readShort(); +public FrameRecord(RecordInputStream in) { +field_1_borderType = in.readShort(); +field_2_options = in.readShort(); } public String toString() @@ -58,13 +61,13 @@ public final class FrameRecord extends S buffer.append(".borderType = ") .append("0x").append(HexDump.toHex( getBorderType ())) .append(" (").append( getBorderType() ).append(" )"); -buffer.append(System.getProperty("line.separator")); +buffer.append(System.getProperty("line.separator")); buffer.append(".options = ") .append("0x").append(HexDump.toHex( getOptions ())) .append(" (").append( getOptions() ).append(" )"); -buffer.append(System.getProperty("line.separator")); -buffer.append(" .autoSize = ").append(isAutoSize()).append('\n'); -buffer.append(" .autoPosition = ").append(isAutoPosition()).append('\n'); +buffer.append(System.getProperty("line.separator")); +buffer.append(" .autoSize = ").append(isAutoSize()).append('\n'); +buffer.append(" .autoPosition = ").append(isAutoPosition()).append('\n'); buffer.append("[/FRAME]\n"); return buffer.toString(); @@ -85,21 +88,22 @@ public final class FrameRecord extends S } @Override +@SuppressWarnings("squid:S2975") +@Deprecated +@Removal(version = "5.0.0") public FrameRecord clone() { -FrameRecord rec = new FrameRecord(); - -rec.field_1_borderType = field_1_borderType; -rec.field_2_options = field_2_options; -return rec; +return copy(); } - - +@Override +public FrameRecord copy() { +return new FrameRecord(this); +} /** * Get the border type field for the Frame record. * - * @return One of + * @return One of *BORDER_TYPE_REGULAR *BORDER_TYPE_SHADOW */ @@ -112,7 +116,7 @@ public final class FrameRecord extends S * Set the border type field for the Frame record. * * @param field_1_borderType - *One of + *One of *BORDER_TYPE_REGULAR *BORDER_TYPE_SHADOW */ Modified: poi/trunk/src/java/org/apache/poi/hssf/record/chart/LegendRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/chart/LegendRecord.java?rev=1871911=1871910=1871911=diff == --- poi/trunk/src/java/org/apache/poi/hssf/record/chart/LegendRecord.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/record/chart/LegendRecord.java Sun Dec 22 21:44:45 2019 @@ -23,12 +23,13 @@ import org.apache.poi.util.BitField; import
svn commit: r1871911 [7/15] - in /poi/trunk/src: integrationtest/org/apache/poi/ integrationtest/org/apache/poi/hssf/usermodel/ java/org/apache/poi/common/ java/org/apache/poi/ddf/ java/org/apache/poi
Modified: poi/trunk/src/java/org/apache/poi/hssf/record/WSBoolRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/WSBoolRecord.java?rev=1871911=1871910=1871911=diff == --- poi/trunk/src/java/org/apache/poi/hssf/record/WSBoolRecord.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/record/WSBoolRecord.java Sun Dec 22 21:44:45 2019 @@ -20,36 +20,50 @@ package org.apache.poi.hssf.record; import org.apache.poi.util.BitField; import org.apache.poi.util.BitFieldFactory; import org.apache.poi.util.LittleEndianOutput; +import org.apache.poi.util.Removal; /** - * Title:WSBOOL (0x0081) (called SHEETPR in OOO doc) - * Description: stores workbook settings (aka its a big "everything we didn't - * put somewhere else") - * REFERENCE: PG 425 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2) + * Stores workbook settings (aka its a big "everything we didn't put somewhere else") */ public final class WSBoolRecord extends StandardRecord { -public final static short sid = 0x0081; -private byte field_1_wsbool; // crappy names are because this is really one big short field (2byte) -private byte field_2_wsbool; // but the docs inconsistently use it as 2 separate bytes - -// I decided to be consistent in this way. -private static final BitField autobreaks= BitFieldFactory.getInstance(0x01); // are automatic page breaks visible +public static final short sid = 0x0081; +// are automatic page breaks visible +private static final BitField autobreaks= BitFieldFactory.getInstance(0x01); // bits 1 to 3 unused -private static final BitField dialog= BitFieldFactory.getInstance(0x10); // is sheet dialog sheet -private static final BitField applystyles = BitFieldFactory.getInstance(0x20); // whether to apply automatic styles to outlines -private static final BitField rowsumsbelow = BitFieldFactory.getInstance(0x40); // whether summary rows will appear below detail in outlines -private static final BitField rowsumsright = BitFieldFactory.getInstance(0x80); // whether summary rows will appear right of the detail in outlines -private static final BitField fittopage = BitFieldFactory.getInstance(0x01); // whether to fit stuff to the page +// is sheet dialog sheet +private static final BitField dialog= BitFieldFactory.getInstance(0x10); +// whether to apply automatic styles to outlines +private static final BitField applystyles = BitFieldFactory.getInstance(0x20); +// whether summary rows will appear below detail in outlines +private static final BitField rowsumsbelow = BitFieldFactory.getInstance(0x40); +// whether summary rows will appear right of the detail in outlines +private static final BitField rowsumsright = BitFieldFactory.getInstance(0x80); +// whether to fit stuff to the page +private static final BitField fittopage = BitFieldFactory.getInstance(0x01); // bit 2 reserved -private static final BitField displayguts = BitFieldFactory.getInstance(0x06); // whether to display outline symbols (in the gutters) +// whether to display outline symbols (in the gutters) +private static final BitField displayguts = BitFieldFactory.getInstance(0x06); // bits 4-5 reserved -private static final BitField alternateexpression = BitFieldFactory.getInstance(0x40); // whether to use alternate expression eval -private static final BitField alternateformula= BitFieldFactory.getInstance(0x80); // whether to use alternate formula entry - -public WSBoolRecord() { +// whether to use alternate expression eval +private static final BitField alternateexpression = BitFieldFactory.getInstance(0x40); +// whether to use alternate formula entry +private static final BitField alternateformula= BitFieldFactory.getInstance(0x80); + +// crappy names are because this is really one big short field (2byte) +private byte field_1_wsbool; +// but the docs inconsistently use it as 2 separate bytes +private byte field_2_wsbool; + + +public WSBoolRecord() {} + +public WSBoolRecord(WSBoolRecord other) { +super(other); +field_1_wsbool = other.field_1_wsbool; +field_2_wsbool = other.field_2_wsbool; } public WSBoolRecord(RecordInputStream in) { @@ -292,10 +306,16 @@ public final class WSBoolRecord extends return sid; } -public Object clone() { - WSBoolRecord rec = new WSBoolRecord(); - rec.field_1_wsbool = field_1_wsbool; - rec.field_2_wsbool = field_2_wsbool; - return rec; +@Override +@SuppressWarnings("squid:S2975") +@Deprecated +@Removal(version = "5.0.0") +public WSBoolRecord clone() { +return copy(); +} +
svn commit: r1871911 [6/15] - in /poi/trunk/src: integrationtest/org/apache/poi/ integrationtest/org/apache/poi/hssf/usermodel/ java/org/apache/poi/common/ java/org/apache/poi/ddf/ java/org/apache/poi
Modified: poi/trunk/src/java/org/apache/poi/hssf/record/RKRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/RKRecord.java?rev=1871911=1871910=1871911=diff == --- poi/trunk/src/java/org/apache/poi/hssf/record/RKRecord.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/record/RKRecord.java Sun Dec 22 21:44:45 2019 @@ -19,30 +19,31 @@ package org.apache.poi.hssf.record; import org.apache.poi.hssf.util.RKUtil; import org.apache.poi.util.LittleEndianOutput; +import org.apache.poi.util.Removal; /** - * Title:RK Record (0x027E) - * Description: An internal 32 bit number with the two most significant bits - * storing the type. This is part of a bizarre scheme to save disk - * space and memory (gee look at all the other whole records that - * are in the file just "cause"..,far better to waste processor - * cycles on this then leave on of those "valuable" records out). + * An internal 32 bit number with the two most significant bits storing the type. + * This is part of a bizarre scheme to save disk space and memory (gee look at all the other whole + * records that are in the file just "cause".., far better to waste processor cycles on this then + * leave on of those "valuable" records out). * We support this in READ-ONLY mode. HSSF converts these to NUMBER records * - * REFERENCE: PG 376 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2) - * * @see org.apache.poi.hssf.record.NumberRecord */ public final class RKRecord extends CellRecord { -public final static short sid = 0x027E; -public final static short RK_IEEE_NUMBER = 0; -public final static short RK_IEEE_NUMBER_TIMES_100 = 1; -public final static short RK_INTEGER = 2; -public final static short RK_INTEGER_TIMES_100 = 3; +public static final short sid = 0x027E; +public static final short RK_IEEE_NUMBER = 0; +public static final short RK_IEEE_NUMBER_TIMES_100 = 1; +public static final short RK_INTEGER = 2; +public static final short RK_INTEGER_TIMES_100 = 3; + private int field_4_rk_number; -private RKRecord() { - // fields uninitialised +private RKRecord() {} + +public RKRecord(RKRecord other) { +super(other); +field_4_rk_number = other.field_4_rk_number; } public RKRecord(RecordInputStream in) { @@ -97,10 +98,15 @@ public final class RKRecord extends Cell } @Override -public Object clone() { - RKRecord rec = new RKRecord(); - copyBaseFields(rec); - rec.field_4_rk_number = field_4_rk_number; - return rec; +@SuppressWarnings("squid:S2975") +@Deprecated +@Removal(version = "5.0.0") +public RKRecord clone() { +return copy(); +} + +@Override +public RKRecord copy() { +return new RKRecord(this); } } Modified: poi/trunk/src/java/org/apache/poi/hssf/record/RecalcIdRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/RecalcIdRecord.java?rev=1871911=1871910=1871911=diff == --- poi/trunk/src/java/org/apache/poi/hssf/record/RecalcIdRecord.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/record/RecalcIdRecord.java Sun Dec 22 21:44:45 2019 @@ -21,18 +21,16 @@ import org.apache.poi.util.HexDump; import org.apache.poi.util.LittleEndianOutput; /** - * Title: Recalc Id Record (0x01C1) - * Description: This record contains an ID that marks when a worksheet was last - * recalculated. It's an optimization Excel uses to determine if it - * needs to recalculate the spreadsheet when it's opened. So far, only - * the two engine ids {@code 0x80 0x38 0x01 0x00} - * and {@code 0x60 0x69 0x01 0x00} have been seen. - * A value of {@code 0x00} will cause Excel to recalculate - * all formulas on the next load. - * REFERENCE: http://chicago.sourceforge.net/devel/docs/excel/biff8.html + * This record contains an ID that marks when a worksheet was last recalculated. + * It's an optimization Excel uses to determine if it needs to recalculate the spreadsheet + * when it's opened. So far, only the two engine ids {@code 0x80 0x38 0x01 0x00} and + * {@code 0x60 0x69 0x01 0x00} have been seen. A value of {@code 0x00} will cause Excel + * to recalculate all formulas on the next load. + * + * @see http://chicago.sourceforge.net/devel/docs/excel/biff8.html;>Chicago biff8 docs */ public final class RecalcIdRecord extends StandardRecord { -public final static short sid = 0x01C1; +public static final short sid = 0x01C1; private final int _reserved0; /** @@ -49,6
svn commit: r1871911 [3/15] - in /poi/trunk/src: integrationtest/org/apache/poi/ integrationtest/org/apache/poi/hssf/usermodel/ java/org/apache/poi/common/ java/org/apache/poi/ddf/ java/org/apache/poi
Modified: poi/trunk/src/java/org/apache/poi/hssf/record/DVRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/DVRecord.java?rev=1871911=1871910=1871911=diff == --- poi/trunk/src/java/org/apache/poi/hssf/record/DVRecord.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/record/DVRecord.java Sun Dec 22 21:44:45 2019 @@ -25,64 +25,77 @@ import org.apache.poi.ss.util.CellRangeA import org.apache.poi.ss.util.CellRangeAddressList; import org.apache.poi.util.BitField; import org.apache.poi.util.LittleEndianOutput; +import org.apache.poi.util.Removal; import org.apache.poi.util.StringUtil; /** - * Title:DATAVALIDATION Record (0x01BE) - * Description: This record stores data validation settings and a list of cell ranges - * which contain these settings. The data validation settings of a sheet - * are stored in a sequential list of DV records. This list is followed by - * DVAL record(s) + * This record stores data validation settings and a list of cell ranges which contain these settings. + * The data validation settings of a sheet are stored in a sequential list of DV records. + * This list is followed by DVAL record(s) */ -public final class DVRecord extends StandardRecord implements Cloneable { - public final static short sid = 0x01BE; - +public final class DVRecord extends StandardRecord { + public static final short sid = 0x01BE; + /** the unicode string used for error/prompt title/text when not present */ private static final UnicodeString NULL_TEXT_STRING = new UnicodeString("\0"); + /** +* Option flags field +* +* @see HSSFDataValidation utility class +*/ + private static final BitField opt_data_type= new BitField(0x000F); + private static final BitField opt_error_style = new BitField(0x0070); + private static final BitField opt_string_list_formula = new BitField(0x0080); + private static final BitField opt_empty_cell_allowed = new BitField(0x0100); + private static final BitField opt_suppress_dropdown_arrow = new BitField(0x0200); + private static final BitField opt_show_prompt_on_cell_selected = new BitField(0x0004); + private static final BitField opt_show_error_on_invalid_value = new BitField(0x0008); + private static final BitField opt_condition_operator = new BitField(0x0070); + /** Option flags */ private int _option_flags; /** Title of the prompt box, cannot be longer than 32 chars */ - private UnicodeString _promptTitle; + private final UnicodeString _promptTitle; /** Title of the error box, cannot be longer than 32 chars */ - private UnicodeString _errorTitle; + private final UnicodeString _errorTitle; /** Text of the prompt box, cannot be longer than 255 chars */ - private UnicodeString _promptText; + private final UnicodeString _promptText; /** Text of the error box, cannot be longer than 255 chars */ - private UnicodeString _errorText; + private final UnicodeString _errorText; /** Not used - Excel seems to always write 0x3FE0 */ private short _not_used_1 = 0x3FE0; /** Formula data for first condition (RPN token array without size field) */ - private Formula _formula1; + private final Formula _formula1; /** Not used - Excel seems to always write 0x */ @SuppressWarnings("RedundantFieldInitialization") private short _not_used_2 = 0x; /** Formula data for second condition (RPN token array without size field) */ - private Formula _formula2; + private final Formula _formula2; /** Cell range address list with all affected ranges */ - private CellRangeAddressList _regions; + private final CellRangeAddressList _regions; - /** -* Option flags field -* -* @see HSSFDataValidation utility class -*/ - private static final BitField opt_data_type= new BitField(0x000F); - private static final BitField opt_error_style = new BitField(0x0070); - private static final BitField opt_string_list_formula = new BitField(0x0080); - private static final BitField opt_empty_cell_allowed = new BitField(0x0100); - private static final BitField opt_suppress_dropdown_arrow = new BitField(0x0200); - private static final BitField opt_show_prompt_on_cell_selected = new BitField(0x0004); - private static final BitField opt_show_error_on_invalid_value = new BitField(0x0008); - private static final BitField opt_condition_operator
svn commit: r1871911 [2/15] - in /poi/trunk/src: integrationtest/org/apache/poi/ integrationtest/org/apache/poi/hssf/usermodel/ java/org/apache/poi/common/ java/org/apache/poi/ddf/ java/org/apache/poi
Modified: poi/trunk/src/java/org/apache/poi/hssf/record/CFHeaderBase.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/CFHeaderBase.java?rev=1871911=1871910=1871911=diff == --- poi/trunk/src/java/org/apache/poi/hssf/record/CFHeaderBase.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/record/CFHeaderBase.java Sun Dec 22 21:44:45 2019 @@ -21,20 +21,28 @@ import org.apache.poi.ss.util.CellRangeA import org.apache.poi.ss.util.CellRangeAddressList; import org.apache.poi.ss.util.CellRangeUtil; import org.apache.poi.util.LittleEndianOutput; +import org.apache.poi.util.Removal; /** * Parent of Conditional Formatting Header records, * {@link CFHeaderRecord} and {@link CFHeader12Record}. */ -public abstract class CFHeaderBase extends StandardRecord implements Cloneable { +public abstract class CFHeaderBase extends StandardRecord { private int field_1_numcf; private int field_2_need_recalculation_and_id; private CellRangeAddress field_3_enclosing_cell_range; private CellRangeAddressList field_4_cell_ranges; -/** Creates new CFHeaderBase */ -protected CFHeaderBase() { +protected CFHeaderBase() {} + +protected CFHeaderBase(CFHeaderBase other) { +super(other); +field_1_numcf = other.field_1_numcf; +field_2_need_recalculation_and_id = other.field_2_need_recalculation_and_id; +field_3_enclosing_cell_range = other.field_3_enclosing_cell_range.copy(); +field_4_cell_ranges = other.field_4_cell_ranges.copy(); } + protected CFHeaderBase(CellRangeAddress[] regions, int nRules) { CellRangeAddress[] mergeCellRanges = CellRangeUtil.mergeCellRanges(regions); setCellRanges(mergeCellRanges); @@ -97,7 +105,7 @@ public abstract class CFHeaderBase exten } /** - * Set cell ranges list to a single cell range and + * Set cell ranges list to a single cell range and * modify the enclosing cell range accordingly. * @param cellRanges - list of CellRange objects */ @@ -151,13 +159,12 @@ public abstract class CFHeaderBase exten field_4_cell_ranges.serialize(out); } -protected void copyTo(CFHeaderBase result) { -result.field_1_numcf = field_1_numcf; -result.field_2_need_recalculation_and_id = field_2_need_recalculation_and_id; -result.field_3_enclosing_cell_range = field_3_enclosing_cell_range.copy(); -result.field_4_cell_ranges = field_4_cell_ranges.copy(); -} +@Override +@SuppressWarnings("squid:S2975") +@Deprecated +@Removal(version = "5.0.0") +public abstract CFHeaderBase clone(); @Override -public abstract CFHeaderBase clone(); // NOSONAR +public abstract CFHeaderBase copy(); } Modified: poi/trunk/src/java/org/apache/poi/hssf/record/CFHeaderRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/CFHeaderRecord.java?rev=1871911=1871910=1871911=diff == --- poi/trunk/src/java/org/apache/poi/hssf/record/CFHeaderRecord.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/record/CFHeaderRecord.java Sun Dec 22 21:44:45 2019 @@ -18,19 +18,24 @@ package org.apache.poi.hssf.record; import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.util.Removal; /** * Conditional Formatting Header record CFHEADER (0x01B0). * Used to describe a {@link CFRuleRecord}. * @see CFHeader12Record */ -public final class CFHeaderRecord extends CFHeaderBase implements Cloneable { +public final class CFHeaderRecord extends CFHeaderBase { public static final short sid = 0x01B0; -/** Creates new CFHeaderRecord */ public CFHeaderRecord() { createEmpty(); } + +public CFHeaderRecord(CFHeaderRecord other) { +super(other); +} + public CFHeaderRecord(CellRangeAddress[] regions, int nRules) { super(regions, nRules); } @@ -48,9 +53,15 @@ public final class CFHeaderRecord extend } @Override +@SuppressWarnings("squid:S2975") +@Deprecated +@Removal(version = "5.0.0") public CFHeaderRecord clone() { -CFHeaderRecord result = new CFHeaderRecord(); -super.copyTo(result); -return result; +return copy(); +} + +@Override +public CFHeaderRecord copy() { +return new CFHeaderRecord(this); } } Modified: poi/trunk/src/java/org/apache/poi/hssf/record/CFRule12Record.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/CFRule12Record.java?rev=1871911=1871910=1871911=diff == --- poi/trunk/src/java/org/apache/poi/hssf/record/CFRule12Record.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/record/CFRule12Record.java
svn commit: r1871911 [4/15] - in /poi/trunk/src: integrationtest/org/apache/poi/ integrationtest/org/apache/poi/hssf/usermodel/ java/org/apache/poi/common/ java/org/apache/poi/ddf/ java/org/apache/poi
Modified: poi/trunk/src/java/org/apache/poi/hssf/record/FileSharingRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/FileSharingRecord.java?rev=1871911=1871910=1871911=diff == --- poi/trunk/src/java/org/apache/poi/hssf/record/FileSharingRecord.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/record/FileSharingRecord.java Sun Dec 22 21:44:45 2019 @@ -18,17 +18,16 @@ package org.apache.poi.hssf.record; import org.apache.poi.util.LittleEndianOutput; +import org.apache.poi.util.Removal; import org.apache.poi.util.StringUtil; /** - * Title:FILESHARING (0x005B) - * Description: stores the encrypted readonly for a workbook (write protect) - * This functionality is accessed from the options dialog box available when performing 'Save As'. - * REFERENCE: PG 314 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2) + * Stores the encrypted readonly for a workbook (write protect). + * This functionality is accessed from the options dialog box available when performing 'Save As'. */ -public final class FileSharingRecord extends StandardRecord implements Cloneable { +public final class FileSharingRecord extends StandardRecord { -public final static short sid = 0x005B; +public static final short sid = 0x005B; private short field_1_readonly; private short field_2_password; private byte field_3_username_unicode_options; @@ -36,14 +35,22 @@ public final class FileSharingRecord ext public FileSharingRecord() {} +public FileSharingRecord(FileSharingRecord other) { +super(other); +field_1_readonly = other.field_1_readonly; +field_2_password = other.field_2_password; +field_3_username_unicode_options = other.field_3_username_unicode_options; +field_3_username_value = other.field_3_username_value; +} + public FileSharingRecord(RecordInputStream in) { field_1_readonly = in.readShort(); field_2_password = in.readShort(); - + int nameLen = in.readShort(); - + if(nameLen > 0) { -// TODO - Current examples(3) from junits only have zero length username. +// TODO - Current examples(3) from junits only have zero length username. field_3_username_unicode_options = in.readByte(); field_3_username_value = in.readCompressedUnicode(nameLen); } else { @@ -137,11 +144,15 @@ public final class FileSharingRecord ext } @Override +@SuppressWarnings("squid:S2975") +@Deprecated +@Removal(version = "5.0.0") public FileSharingRecord clone() { - FileSharingRecord clone = new FileSharingRecord(); - clone.setReadOnly(field_1_readonly); - clone.setPassword(field_2_password); - clone.setUsername(field_3_username_value); - return clone; +return copy(); +} + +@Override +public FileSharingRecord copy() { + return new FileSharingRecord(this); } } Modified: poi/trunk/src/java/org/apache/poi/hssf/record/FnGroupCountRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/FnGroupCountRecord.java?rev=1871911=1871910=1871911=diff == --- poi/trunk/src/java/org/apache/poi/hssf/record/FnGroupCountRecord.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/record/FnGroupCountRecord.java Sun Dec 22 21:44:45 2019 @@ -15,35 +15,32 @@ See the License for the specific language governing permissions and limitations under the License. */ - + package org.apache.poi.hssf.record; import org.apache.poi.util.LittleEndianOutput; /** - * Title: Function Group Count Record - * Description: Number of built in function groups in the current version of the - * Spreadsheet (probably only used on Windoze) - * REFERENCE: PG 315 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2) - * @author Andrew C. Oliver (acoliver at apache dot org) + * umber of built in function groups in the current version of the Spreadsheet (probably only used on Windows) + * * @version 2.0-pre */ - -public final class FnGroupCountRecord -extends StandardRecord -{ -public final static short sid = 0x9c; +public final class FnGroupCountRecord extends StandardRecord { +public static final short sid = 0x9c; /** * suggested default (14 dec) */ -public final static short COUNT = 14; +public static final short COUNT = 14; private short field_1_count; -public FnGroupCountRecord() -{ +public FnGroupCountRecord() {} + +public FnGroupCountRecord(FnGroupCountRecord other) { +super(other); +field_1_count =
svn commit: r1871563 - in /poi/trunk/src: java/org/apache/poi/ddf/ scratchpad/src/org/apache/poi/hslf/record/ testcases/org/apache/poi/ddf/
Author: kiwiwings Date: Sat Dec 14 23:44:26 2019 New Revision: 1871563 URL: http://svn.apache.org/viewvc?rev=1871563=rev Log: #64004 - Replace clone() with copy constructor Modified: poi/trunk/src/java/org/apache/poi/ddf/AbstractEscherOptRecord.java poi/trunk/src/java/org/apache/poi/ddf/EscherBSERecord.java poi/trunk/src/java/org/apache/poi/ddf/EscherBitmapBlip.java poi/trunk/src/java/org/apache/poi/ddf/EscherBlipRecord.java poi/trunk/src/java/org/apache/poi/ddf/EscherChildAnchorRecord.java poi/trunk/src/java/org/apache/poi/ddf/EscherClientAnchorRecord.java poi/trunk/src/java/org/apache/poi/ddf/EscherClientDataRecord.java poi/trunk/src/java/org/apache/poi/ddf/EscherContainerRecord.java poi/trunk/src/java/org/apache/poi/ddf/EscherDgRecord.java poi/trunk/src/java/org/apache/poi/ddf/EscherDggRecord.java poi/trunk/src/java/org/apache/poi/ddf/EscherMetafileBlip.java poi/trunk/src/java/org/apache/poi/ddf/EscherOptRecord.java poi/trunk/src/java/org/apache/poi/ddf/EscherPictBlip.java poi/trunk/src/java/org/apache/poi/ddf/EscherRecord.java poi/trunk/src/java/org/apache/poi/ddf/EscherSpRecord.java poi/trunk/src/java/org/apache/poi/ddf/EscherSpgrRecord.java poi/trunk/src/java/org/apache/poi/ddf/EscherSplitMenuColorsRecord.java poi/trunk/src/java/org/apache/poi/ddf/EscherTertiaryOptRecord.java poi/trunk/src/java/org/apache/poi/ddf/EscherTextboxRecord.java poi/trunk/src/java/org/apache/poi/ddf/UnknownEscherRecord.java poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/EscherPlaceholder.java poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/HSLFEscherClientDataRecord.java poi/trunk/src/testcases/org/apache/poi/ddf/TestEscherContainerRecord.java poi/trunk/src/testcases/org/apache/poi/ddf/TestEscherDump.java Modified: poi/trunk/src/java/org/apache/poi/ddf/AbstractEscherOptRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/AbstractEscherOptRecord.java?rev=1871563=1871562=1871563=diff == --- poi/trunk/src/java/org/apache/poi/ddf/AbstractEscherOptRecord.java (original) +++ poi/trunk/src/java/org/apache/poi/ddf/AbstractEscherOptRecord.java Sat Dec 14 23:44:26 2019 @@ -30,13 +30,20 @@ import org.apache.poi.util.Removal; * Common abstract class for {@link EscherOptRecord} and * {@link EscherTertiaryOptRecord} */ -public abstract class AbstractEscherOptRecord extends EscherRecord -{ +public abstract class AbstractEscherOptRecord extends EscherRecord { private final List properties = new ArrayList<>(); +protected AbstractEscherOptRecord() {} + +protected AbstractEscherOptRecord(AbstractEscherOptRecord other) { +super(other); +properties.addAll(other.properties); +} + + /** * Add a property to this record. - * + * * @param prop the escher property to add */ public void addEscherProperty( EscherProperty prop ) @@ -60,7 +67,7 @@ public abstract class AbstractEscherOptR /** * The list of properties stored by this record. - * + * * @return the list of properties */ public List getEscherProperties() @@ -70,7 +77,7 @@ public abstract class AbstractEscherOptR /** * The list of properties stored by this record. - * + * * @param index the ordinal index of the property * @return the escher property */ @@ -79,7 +86,7 @@ public abstract class AbstractEscherOptR return properties.get( index ); } - + private int getPropertiesSize() { int totalSize = 0; @@ -164,4 +171,7 @@ public abstract class AbstractEscherOptR "properties", this::getEscherProperties ); } + +@Override +public abstract AbstractEscherOptRecord copy(); } Modified: poi/trunk/src/java/org/apache/poi/ddf/EscherBSERecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/EscherBSERecord.java?rev=1871563=1871562=1871563=diff == --- poi/trunk/src/java/org/apache/poi/ddf/EscherBSERecord.java (original) +++ poi/trunk/src/java/org/apache/poi/ddf/EscherBSERecord.java Sat Dec 14 23:44:26 2019 @@ -58,7 +58,25 @@ public final class EscherBSERecord exten public EscherBSERecord() { setRecordId(RECORD_ID); } - + +public EscherBSERecord(EscherBSERecord other) { +super(other); + +field_1_blipTypeWin32 = other.field_1_blipTypeWin32; +field_2_blipTypeMacOS = other.field_2_blipTypeMacOS; +System.arraycopy(other.field_3_uid, 0, field_3_uid, 0, field_3_uid.length); +field_4_tag = other.field_4_tag; +field_5_size = other.field_5_size; +field_6_ref = other.field_6_ref; +field_7_offset = other.field_7_offset; +field_8_usage = oth
svn commit: r1871121 - /poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPictureData.java
Author: kiwiwings Date: Tue Dec 10 07:18:21 2019 New Revision: 1871121 URL: http://svn.apache.org/viewvc?rev=1871121=rev Log: fix typo Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPictureData.java Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPictureData.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPictureData.java?rev=1871121=1871120=1871121=diff == --- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPictureData.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPictureData.java Tue Dec 10 07:18:21 2019 @@ -85,7 +85,7 @@ public final class TestHSSFPictureData e } } } catch (IIOException e) { -Assume.assumeFalse(e.getMessage().contains("IIO Can't create cache file")); +Assume.assumeFalse(e.getMessage().contains("Can't create cache file")); throw e; } } @@ -110,7 +110,7 @@ public final class TestHSSFPictureData e assertEquals(HSSFWorkbook.PICTURE_TYPE_PNG, pict.getFormat()); assertEquals("image/png", pict.getMimeType()); } catch (IIOException e) { -Assume.assumeFalse(e.getMessage().contains("IIO Can't create cache file")); +Assume.assumeFalse(e.getMessage().contains("Can't create cache file")); throw e; } } - To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org For additional commands, e-mail: commits-h...@poi.apache.org
svn commit: r1871111 - in /poi/trunk/sonar: ooxml-schema-security/pom.xml pom.xml
Author: kiwiwings Date: Mon Dec 9 23:56:13 2019 New Revision: 187 URL: http://svn.apache.org/viewvc?rev=187=rev Log: Provide XAdES schemas locally, because of connection timeouts Modified: poi/trunk/sonar/ooxml-schema-security/pom.xml poi/trunk/sonar/pom.xml Modified: poi/trunk/sonar/ooxml-schema-security/pom.xml URL: http://svn.apache.org/viewvc/poi/trunk/sonar/ooxml-schema-security/pom.xml?rev=187=1871110=187=diff == --- poi/trunk/sonar/ooxml-schema-security/pom.xml (original) +++ poi/trunk/sonar/ooxml-schema-security/pom.xml Mon Dec 9 23:56:13 2019 @@ -46,52 +46,7 @@ wget target/schemas - http://dublincore.org/schemas/xmls/qdc/2003/04/02/dc.xsd - - - - install-xsds-part-3 - generate-sources - wget - - target/schemas - http://dublincore.org/schemas/xmls/qdc/2003/04/02/dcterms.xsd - - - - install-xsds-part-4 - generate-sources - wget - - target/schemas - http://dublincore.org/schemas/xmls/qdc/2003/04/02/dcmitype.xsd - - - - install-xsds-part-5 - generate-sources - wget - - target/schemas - http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd - - - - install-xsds-part-6 - generate-sources - wget - - target/schemas - https://uri.etsi.org/01903/v1.3.2/XAdES.xsd - - - - install-xsds-part-7 - generate-sources - wget - - target/schemas - https://uri.etsi.org/01903/v1.4.1/XAdESv141.xsd + https://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd @@ -112,9 +67,18
svn commit: r1871110 - in /poi/trunk: build.xml src/ooxml/resources/org/apache/poi/schemas/XAdES.xsd src/ooxml/resources/org/apache/poi/schemas/XAdESv141.xsd
Author: kiwiwings Date: Mon Dec 9 22:53:14 2019 New Revision: 1871110 URL: http://svn.apache.org/viewvc?rev=1871110=rev Log: Provide XAdES schemas locally, because of connection timeouts Added: poi/trunk/src/ooxml/resources/org/apache/poi/schemas/XAdES.xsd poi/trunk/src/ooxml/resources/org/apache/poi/schemas/XAdESv141.xsd Modified: poi/trunk/build.xml Modified: poi/trunk/build.xml URL: http://svn.apache.org/viewvc/poi/trunk/build.xml?rev=1871110=1871109=1871110=diff == --- poi/trunk/build.xml (original) +++ poi/trunk/build.xml Mon Dec 9 22:53:14 2019 @@ -290,8 +290,8 @@ under the License. https://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd"/> -https://uri.etsi.org/01903/v1.3.2/XAdES.xsd"/> -https://uri.etsi.org/01903/v1.4.1/XAdESv141.xsd"/> + + - + @@ -536,7 +536,7 @@ under the License. - + @@ -878,8 +878,8 @@ under the License. - - + + @@ -1030,15 +1030,16 @@ under the License. - + - + + @@ -1265,7 +1266,7 @@ under the License. - + @@ -1786,7 +1787,7 @@ under the License. - + @@ -2184,6 +2185,7 @@ under the License. + @@ -2849,7 +2851,7 @@ under the License. - Using Ant: ${ant.version} from ${ant.home} + Using Ant: ${ant.version} from ${ant.home} Added: poi/trunk/src/ooxml/resources/org/apache/poi/schemas/XAdES.xsd URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/resources/org/apache/poi/schemas/XAdES.xsd?rev=1871110=auto == --- poi/trunk/src/ooxml/resources/org/apache/poi/schemas/XAdES.xsd (added) +++ poi/trunk/src/ooxml/resources/org/apache/poi/schemas/XAdES.xsd Mon Dec 9 22:53:14 2019 @@ -0,0 +1,466 @@ + +http://uri.etsi.org/01903/v1.3.2#; xmlns:xsd="http://www.w3.org/2001/XMLSchema; xmlns="http://uri.etsi.org/01903/v1.3.2#; xmlns:ds="http://www.w3.org/2000/09/xmldsig#; elementFormDefault="qualified"> + http://www.w3.org/2000/09/xmldsig#; schemaLocation="http://www.w3.org/
svn commit: r1871109 - /poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPictureData.java
Author: kiwiwings Date: Mon Dec 9 22:51:11 2019 New Revision: 1871109 URL: http://svn.apache.org/viewvc?rev=1871109=rev Log: Ignore "IIO Can't create cache file" errors Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPictureData.java Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPictureData.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPictureData.java?rev=1871109=1871108=1871109=diff == --- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPictureData.java (original) +++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPictureData.java Mon Dec 9 22:51:11 2019 @@ -23,11 +23,12 @@ import java.io.File; import java.io.IOException; import java.util.List; +import javax.imageio.IIOException; import javax.imageio.ImageIO; import junit.framework.TestCase; - import org.apache.poi.hssf.HSSFTestDataSamples; +import org.junit.Assume; import org.junit.BeforeClass; /** @@ -55,63 +56,70 @@ public final class TestHSSFPictureData e public void testPictures() throws IOException { HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("SimpleWithImages.xls"); -@SuppressWarnings("unchecked") // TODO - add getFormat() to interface PictureData and genericise wb.getAllPictures() +// TODO - add getFormat() to interface PictureData and genericise wb.getAllPictures() List lst = wb.getAllPictures(); //assertEquals(2, lst.size()); -for (final HSSFPictureData pict : lst) { -String ext = pict.suggestFileExtension(); -byte[] data = pict.getData(); -if (ext.equals("jpeg")){ -//try to read image data using javax.imageio.* (JDK 1.4+) -BufferedImage jpg = ImageIO.read(new ByteArrayInputStream(data)); -assertNotNull(jpg); -assertEquals(192, jpg.getWidth()); -assertEquals(176, jpg.getHeight()); -assertEquals(HSSFWorkbook.PICTURE_TYPE_JPEG, pict.getFormat()); -assertEquals("image/jpeg", pict.getMimeType()); -} else if (ext.equals("png")){ -//try to read image data using javax.imageio.* (JDK 1.4+) -BufferedImage png = ImageIO.read(new ByteArrayInputStream(data)); -assertNotNull(png); -assertEquals(300, png.getWidth()); -assertEquals(300, png.getHeight()); -assertEquals(HSSFWorkbook.PICTURE_TYPE_PNG, pict.getFormat()); -assertEquals("image/png", pict.getMimeType()); +try { +for (final HSSFPictureData pict : lst) { +String ext = pict.suggestFileExtension(); +byte[] data = pict.getData(); +if (ext.equals("jpeg")) { +//try to read image data using javax.imageio.* (JDK 1.4+) +BufferedImage jpg = ImageIO.read(new ByteArrayInputStream(data)); +assertNotNull(jpg); +assertEquals(192, jpg.getWidth()); +assertEquals(176, jpg.getHeight()); +assertEquals(HSSFWorkbook.PICTURE_TYPE_JPEG, pict.getFormat()); +assertEquals("image/jpeg", pict.getMimeType()); +} else if (ext.equals("png")) { +//try to read image data using javax.imageio.* (JDK 1.4+) +BufferedImage png = ImageIO.read(new ByteArrayInputStream(data)); +assertNotNull(png); +assertEquals(300, png.getWidth()); +assertEquals(300, png.getHeight()); +assertEquals(HSSFWorkbook.PICTURE_TYPE_PNG, pict.getFormat()); +assertEquals("image/png", pict.getMimeType()); /*} else { //TODO: test code for PICT, WMF and EMF*/ +} } +} catch (IIOException e) { +Assume.assumeFalse(e.getMessage().contains("IIO Can't create cache file")); +throw e; } } - + public void testMacPicture() throws IOException { HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("53446.xls"); -@SuppressWarnings("unchecked") -List lst = wb.getAllPictures(); -assertEquals(1, lst.size()); +try{ +List lst = wb.getAllPictures(); +assertEquals(1, lst.size()); -HSSFPictureData pict = lst.get(0); -String ext = pict.suggestFileExtension(); -if (!ext.equals("png")) { -fail("Expected a PNG."); -} +HSSFPictureData pict = lst.ge
svn commit: r1871103 - in /poi/site/publish: changes.html components/hpsf/how-to.html components/hpsf/internals.html components/index.html components/spreadsheet/examples.html components/spreadsheet/h
Author: kiwiwings Date: Mon Dec 9 21:01:31 2019 New Revision: 1871103 URL: http://svn.apache.org/viewvc?rev=1871103=rev Log: Remove references to POIBrowser and SViewer Modified: poi/site/publish/changes.html poi/site/publish/components/hpsf/how-to.html poi/site/publish/components/hpsf/internals.html poi/site/publish/components/index.html poi/site/publish/components/spreadsheet/examples.html poi/site/publish/components/spreadsheet/how-to.html Modified: poi/site/publish/changes.html URL: http://svn.apache.org/viewvc/poi/site/publish/changes.html?rev=1871103=1871102=1871103=diff == --- poi/site/publish/changes.html (original) +++ poi/site/publish/changes.html Mon Dec 9 21:01:31 2019 @@ -245,6 +245,10 @@ document.write("Last Published: " + docu https://bz.apache.org/bugzilla/show_bug.cgi?id=63955;>63955HMEFHMEFContentsExtractor fails to extract content from winmail.dat + + +https://bz.apache.org/bugzilla/show_bug.cgi?id=63927;>63927POI_OverallInconsistent mapping of Norwegian locales for date formats + @@ -275,7 +279,7 @@ document.write("Last Published: " + docu CVE-2019-12415 - XML External Entity (XXE) Processing in Apache POI - + Changes @@ -401,7 +405,7 @@ document.write("Last Published: " + docu 4.1.0 (2019-04-09) - + Summary @@ -426,7 +430,7 @@ document.write("Last Published: " + docu Upgrade to XMLSec 2.1.2 - + Changes @@ -604,7 +608,7 @@ document.write("Last Published: " + docu 4.0.1 (2018-12-03) - + Summary @@ -615,7 +619,7 @@ document.write("Last Published: " + docu Upgrade to XMLBeans 3.0.2 - + Changes @@ -772,7 +776,7 @@ document.write("Last Published: " + docu 4.0.0 (2018-09-07) - + Summary @@ -781,7 +785,7 @@ document.write("Last Published: " + docu New OOXML schema (1.4) necessary, because of incompatible XMLBeans loading not anymore through POIXMLTypeLoader - + Changes @@ -1083,7 +1087,7 @@ document.write("Last Published: " + docu 3.17 (2017-09-15) - + Summary @@ -1098,7 +1102,7 @@ document.write("Last Published: " + docu SXSSF: fix XML processing - unicode surrogates and line breaks (#61048, #61246) - + Changes @@ -1208,7 +1212,7 @@ document.write("Last Published: " + docu 3.17-beta1 (2017-07-01) - + Summary @@ -1223,7 +1227,7 @@ document.write("Last Published: " + docu HWPF: support for Binary RC4 / CryptoAPI de-/encryption - + Changes @@ -1365,7 +1369,7 @@ document.write("Last Published: " + docu 3.16 (2017-04-19) - + Summary @@ -1376,7 +1380,7 @@ document.write("Last Published: " + docu various charset related fixes in SS Common, XSSF and HWPF - + Changes @@ -1446,7 +1450,7 @@ document.write("Last Published: " + docu 3.16-beta2 (2017-02-02) - + Summary @@ -1457,7 +1461,7 @@ document.write("Last Published: " + docu Unicode and internationalization improvements - + Changes @@ -1587,7 +1591,7 @@ document.write("Last Published: " + docu 3.16-beta1 (2016-11-20) - + Summary @@ -1602,7 +1606,7 @@ document.write("Last Published: " + docu Examples to encrypt temp files in SXSSF - + Changes @@ -1796,7 +1800,7 @@ document.write("Last Published: " + docu 3.15 (2016-09-19) - + Summary @@ -1817,7 +1821,7 @@ document.write("Last Published: " + docu - + Changes @@ -2027,7 +2031,7 @@ document.write("Last Published: " + docu 3.15-beta2 (2016-07-02) - + Summary @@ -2042,7 +2046,7 @@ document.write("Last Published: " + docu various fixes for merged regions in Common SS - + Changes @@ -2240,7 +2244,7 @@ document.write("Last Published: " + docu 3.15-beta1 (2016-04-15) - + Summary @@ -2255,7 +2259,7 @@ document.write("Last Published: " + docu fixes for color handling in XSSF and support for system colors in Common SL - + Changes @@ -2365,7 +2369,7 @@ document.write("Last Published: " + docu 3.14 (2016-03-07) - + Summary @@ -2389,7 +2393,7 @@ document.write("Last Published: " + docu XWPF: various fixes for handling paragraphs and tables - + Changes @@ -2571,7 +2575,7 @
svn commit: r1871102 - in /poi: site/src/documentation/content/xdocs/components/ site/src/documentation/content/xdocs/components/hpsf/ site/src/documentation/content/xdocs/components/spreadsheet/ trun
Author: kiwiwings Date: Mon Dec 9 20:56:52 2019 New Revision: 1871102 URL: http://svn.apache.org/viewvc?rev=1871102=rev Log: Remove POIBrowser and SViewer and remove references to it Removed: poi/trunk/src/examples/src/org/apache/poi/hssf/view/ poi/trunk/src/examples/src/org/apache/poi/poifs/ Modified: poi/site/src/documentation/content/xdocs/components/hpsf/how-to.xml poi/site/src/documentation/content/xdocs/components/hpsf/internals.xml poi/site/src/documentation/content/xdocs/components/index.xml poi/site/src/documentation/content/xdocs/components/spreadsheet/examples.xml Modified: poi/site/src/documentation/content/xdocs/components/hpsf/how-to.xml URL: http://svn.apache.org/viewvc/poi/site/src/documentation/content/xdocs/components/hpsf/how-to.xml?rev=1871102=1871101=1871102=diff == --- poi/site/src/documentation/content/xdocs/components/hpsf/how-to.xml (original) +++ poi/site/src/documentation/content/xdocs/components/hpsf/how-to.xml Mon Dec 9 20:56:52 2019 @@ -351,10 +351,7 @@ else only difference is that they are not located in the POI filesystem's root but in a nested directory instead. Just register a POIFSReaderListener for the property set streams you are - interested in. For example, the POIBrowser application - tries to open each and every document in a POI filesystem - as a property set stream. If this operation was successful it displays the - properties. + interested in. Modified: poi/site/src/documentation/content/xdocs/components/hpsf/internals.xml URL: http://svn.apache.org/viewvc/poi/site/src/documentation/content/xdocs/components/hpsf/internals.xml?rev=1871102=1871101=1871102=diff == --- poi/site/src/documentation/content/xdocs/components/hpsf/internals.xml (original) +++ poi/site/src/documentation/content/xdocs/components/hpsf/internals.xml Mon Dec 9 20:56:52 2019 @@ -1054,8 +1054,6 @@ href="http://msdn.microsoft.com/library/default.asp;>MSDN Library. Use the search function to try to find what you are looking for, e.g. "codepage" or "document summary information" etc. - - This documentation origins from the http://www.rainer-klute.de/~klute/Software/poibrowser/doc/HPSF-Description.html;>HPSF description available at http://www.rainer-klute.de/~klute/Software/poibrowser/doc/HPSF-Description.html;>http://www.rainer-klute.de/~klute/Software/poibrowser/doc/HPSF-Description.html. Modified: poi/site/src/documentation/content/xdocs/components/index.xml URL: http://svn.apache.org/viewvc/poi/site/src/documentation/content/xdocs/components/index.xml?rev=1871102=1871101=1871102=diff == --- poi/site/src/documentation/content/xdocs/components/index.xml (original) +++ poi/site/src/documentation/content/xdocs/components/index.xml Mon Dec 9 20:56:52 2019 @@ -37,16 +37,16 @@ property sets to serialize their document objects. Apache POI is also the master project for developing pure -Java ports of file formats based on Office Open XML (ooxml). +Java ports of file formats based on Office Open XML (ooxml). OOXML is part of an ECMA / ISO standardisation effort. This documentation is quite large, but you can normally find the bit you need without too much effort! http://www.ecma-international.org/publications/standards/Ecma-376.htm;>ECMA-376 standard is here, -and is also under the +and is also under the https://msdn.microsoft.com/en-us/openspecifications/default;>Microsoft OSP. - - + + POIFS for OLE 2 Documents POIFS is the oldest and most stable part of POI. It is our port of the OLE 2 Compound Document Format to @@ -75,7 +75,7 @@ development. It can already read and write simple files. - We are also working on the XWPF for the WordprocessingML (2007+) format from the + We are also working on the XWPF for the WordprocessingML (2007+) format from the OOXML specification. This provides read and write support for simpler files, along with text extraction capabilities. @@ -88,7 +88,7 @@ information. - We are also working on the XSLF for the PresentationML (2007+) format from the + We are also working on the XSLF for the PresentationML (2007+) format from the OOXML specification. @@ -279,7 +279,7 @@ -This table maps artifacts into the jar file name. "version-mmdd" is +This table maps artifacts into the jar file name. "version-mmdd" is
svn commit: r1871067 [2/2] - /poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/
Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMathX.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMathX.java?rev=1871067=1871066=1871067=diff == --- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMathX.java (original) +++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMathX.java Mon Dec 9 00:37:21 2019 @@ -20,16 +20,19 @@ */ package org.apache.poi.ss.formula.functions; +import static org.junit.Assert.assertTrue; + import org.apache.poi.ss.formula.functions.XYNumericFunction.Accumulator; +import org.junit.Test; /** * @author Amol S. Deshmukh amolweb at ya hoo dot com - * + * */ -@SuppressWarnings("ConstantConditions") public class TestMathX extends AbstractNumericTestCase { +@Test public void testAcosh() { double d; @@ -53,6 +56,7 @@ public class TestMathX extends AbstractN } +@Test public void testAsinh() { double d; @@ -79,6 +83,7 @@ public class TestMathX extends AbstractN } +@Test public void testAtanh() { double d; d = MathX.atanh(0); @@ -110,6 +115,7 @@ public class TestMathX extends AbstractN } +@Test public void testCosh() { double d; d = MathX.cosh(0); @@ -141,6 +147,7 @@ public class TestMathX extends AbstractN } +@Test public void testTanh() { double d; d = MathX.tanh(0); @@ -172,83 +179,86 @@ public class TestMathX extends AbstractN } +@Test public void testMax() { double[] d = new double[100]; -d[0] = 1.1; d[1] = 2.1; d[2] = 3.1; d[3] = 4.1; +d[0] = 1.1; d[1] = 2.1; d[2] = 3.1; d[3] = 4.1; d[4] = 5.1; d[5] = 6.1; d[6] = 7.1; d[7] = 8.1; d[8] = 9.1; d[9] = 10.1;d[10] = 11.1; d[11] = 12.1; d[12] = 13.1; d[13] = 14.1; d[14] = 15.1; d[15] = 16.1; -d[16] = 17.1; d[17] = 18.1; d[18] = 19.1; d[19] = 20.1; - +d[16] = 17.1; d[17] = 18.1; d[18] = 19.1; d[19] = 20.1; + double m = MathX.max(d); assertEquals("Max ", 20.1, m); - + d = new double[1000]; m = MathX.max(d); assertEquals("Max ", 0, m); - -d[0] = -1.1; d[1] = 2.1; d[2] = -3.1; d[3] = 4.1; + +d[0] = -1.1; d[1] = 2.1; d[2] = -3.1; d[3] = 4.1; d[4] = -5.1; d[5] = 6.1; d[6] = -7.1; d[7] = 8.1; d[8] = -9.1; d[9] = 10.1;d[10] = -11.1; d[11] = 12.1; d[12] = -13.1; d[13] = 14.1; d[14] = -15.1; d[15] = 16.1; -d[16] = -17.1; d[17] = 18.1; d[18] = -19.1; d[19] = 20.1; +d[16] = -17.1; d[17] = 18.1; d[18] = -19.1; d[19] = 20.1; m = MathX.max(d); assertEquals("Max ", 20.1, m); - + d = new double[20]; -d[0] = -1.1; d[1] = -2.1; d[2] = -3.1; d[3] = -4.1; +d[0] = -1.1; d[1] = -2.1; d[2] = -3.1; d[3] = -4.1; d[4] = -5.1; d[5] = -6.1; d[6] = -7.1; d[7] = -8.1; d[8] = -9.1; d[9] = -10.1;d[10] = -11.1; d[11] = -12.1; d[12] = -13.1; d[13] = -14.1; d[14] = -15.1; d[15] = -16.1; -d[16] = -17.1; d[17] = -18.1; d[18] = -19.1; d[19] = -20.1; +d[16] = -17.1; d[17] = -18.1; d[18] = -19.1; d[19] = -20.1; m = MathX.max(d); assertEquals("Max ", -1.1, m); - + } +@Test public void testMin() { double[] d = new double[100]; -d[0] = 1.1; d[1] = 2.1; d[2] = 3.1; d[3] = 4.1; +d[0] = 1.1; d[1] = 2.1; d[2] = 3.1; d[3] = 4.1; d[4] = 5.1; d[5] = 6.1; d[6] = 7.1; d[7] = 8.1; d[8] = 9.1; d[9] = 10.1;d[10] = 11.1; d[11] = 12.1; d[12] = 13.1; d[13] = 14.1; d[14] = 15.1; d[15] = 16.1; -d[16] = 17.1; d[17] = 18.1; d[18] = 19.1; d[19] = 20.1; - +d[16] = 17.1; d[17] = 18.1; d[18] = 19.1; d[19] = 20.1; + double m = MathX.min(d); assertEquals("Min ", 0, m); - + d = new double[20]; -d[0] = 1.1; d[1] = 2.1; d[2] = 3.1; d[3] = 4.1; +d[0] = 1.1; d[1] = 2.1; d[2] = 3.1; d[3] = 4.1; d[4] = 5.1; d[5] = 6.1; d[6] = 7.1; d[7] = 8.1; d[8] = 9.1; d[9] = 10.1;d[10] = 11.1; d[11] = 12.1; d[12] = 13.1; d[13] = 14.1; d[14] = 15.1; d[15] = 16.1; -d[16] = 17.1; d[17] = 18.1; d[18] = 19.1; d[19] = 20.1; - +d[16] = 17.1; d[17] = 18.1; d[18] = 19.1; d[19] = 20.1; + m = MathX.min(d); assertEquals("Min ", 1.1, m); - + d = new double[1000]; m = MathX.min(d);
svn commit: r1871067 [1/2] - /poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/
Author: kiwiwings Date: Mon Dec 9 00:37:21 2019 New Revision: 1871067 URL: http://svn.apache.org/viewvc?rev=1871067=rev Log: Migrate tests to Junit 4 Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/AbstractNumericTestCase.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestAddress.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestAreas.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestAverage.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestBin2Dec.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestCalendarFieldFunction.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestClean.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestCode.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestComplex.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestCountFuncs.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestDate.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestDec2Bin.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestDec2Hex.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestDelta.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestFinanceLib.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestHex2Dec.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIPMT.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIndex.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIntercept.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIrr.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestIsBlank.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestLeftRight.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestLen.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestLogicalFunction.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMatch.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMathX.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMid.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestMirr.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestNpv.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestOct2Dec.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestOffset.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestPPMT.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestPoisson.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestQuotient.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestRank.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestRelationalOperations.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestRowCol.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestSlope.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestStatsLib.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestSumif.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestSumifs.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestSumproduct.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestTFunc.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestTrim.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestTrunc.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestValue.java poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/TestXYNumericFunction.java Modified: poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/AbstractNumericTestCase.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/AbstractNumericTestCase.java?rev=1871067=1871066=1871067=diff == --- poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/AbstractNumericTestCase.java (original) +++ poi/trunk/src/testcases/org/apache/poi/ss/formula/functions/AbstractNumericTestCase.java Mon Dec 9 00:37:21 2019 @@ -20,27 +20,19 @@ */ package org.apache.poi.ss.formula.functions; -import junit.framework.TestCase; +import static org.junit.Assert.assertTrue; /** * @author Amol S. Deshmukh amolweb at ya hoo dot com * */ -public abstract class AbstractNumericTestCase extends TestCase { +public abstract class AbstractNumericTestCase { public static final double POS_ZERO = 1E-4; public static final double DIFF_TOLERANCE_FACTOR
svn commit: r1871066 [2/2] - in /poi: site/src/documentation/content/xdocs/ trunk/src/java/org/apache/poi/ss/util/ trunk/src/java/org/apache/poi/util/ trunk/src/testcases/org/apache/poi/ss/util/
Modified: poi/trunk/src/testcases/org/apache/poi/ss/util/TestDateFormatConverter.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/util/TestDateFormatConverter.java?rev=1871066=1871065=1871066=diff == --- poi/trunk/src/testcases/org/apache/poi/ss/util/TestDateFormatConverter.java (original) +++ poi/trunk/src/testcases/org/apache/poi/ss/util/TestDateFormatConverter.java Sun Dec 8 23:36:02 2019 @@ -19,6 +19,11 @@ package org.apache.poi.ss.util; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + import java.io.File; import java.io.FileOutputStream; import java.text.DateFormat; @@ -26,6 +31,11 @@ import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; import java.util.Locale; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; +import java.util.stream.Stream; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; @@ -34,8 +44,8 @@ import org.apache.poi.ss.usermodel.DataF 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.util.LocaleID; import org.apache.poi.util.TempFile; -import org.junit.Ignore; import org.junit.Test; public final class TestDateFormatConverter { @@ -148,4 +158,45 @@ public final class TestDateFormatConvert public void testJDK11MyLocale() { DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.DEFAULT, Locale.forLanguageTag("my")); } + +@Test +public void testAllKnownLocales() { +Pattern p = Pattern.compile("\\[\\$-(\\p{XDigit}+)]"); + +Set blacklist = Stream.of( +"sd-Deva", "tzm-Arab", "fuv", "plt", "yue", "tdd-Tale", "tdd", +"khb-Talu", "khb", "qps", "ja-Ploc", "dz", "tmz", "ar-Ploc" +).collect(Collectors.toSet()); + +for (LocaleID lid : LocaleID.values()) { +final String langTag = lid.getLanguageTag(); + +if (langTag.isEmpty() || lid.getWindowsId().startsWith("invalid")) { +continue; +} + +// test all from variant to parent locales +String cmpTag = (langTag.indexOf('_') > 0) ? langTag.replace('_','-') : langTag; +for (int idx = langTag.length(); idx > 0; idx = cmpTag.lastIndexOf('-', idx-1)) { +final String partTag = langTag.substring(0, idx); + +Locale loc = Locale.forLanguageTag(partTag); +assertNotNull("Invalid language tag: "+partTag, loc); + +if (blacklist.contains(partTag)) { +continue; +} + +String prefix = DateFormatConverter.getPrefixForLocale(loc); +assertNotNull("Prefix not found - language tag: "+partTag, prefix); +assertNotEquals("Prefix not found - language tag: "+partTag,"", prefix); +Matcher m = p.matcher(prefix); +assertTrue("Invalid prefix: "+prefix, m.matches()); + +LocaleID partLid = LocaleID.lookupByLanguageTag(partTag); +assertNotNull("LocaleID not found for part: "+partTag, partLid); +assertEquals(partLid.getLcid(), Integer.parseInt(m.group(1), 16)); +} +} +} } - To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org For additional commands, e-mail: commits-h...@poi.apache.org
svn commit: r1871066 [1/2] - in /poi: site/src/documentation/content/xdocs/ trunk/src/java/org/apache/poi/ss/util/ trunk/src/java/org/apache/poi/util/ trunk/src/testcases/org/apache/poi/ss/util/
Author: kiwiwings Date: Sun Dec 8 23:36:02 2019 New Revision: 1871066 URL: http://svn.apache.org/viewvc?rev=1871066=rev Log: Bug 63927 - Inconsistent mapping of Norwegian locales for date formats Added: poi/trunk/src/java/org/apache/poi/util/LocaleID.java (with props) Modified: poi/site/src/documentation/content/xdocs/changes.xml poi/trunk/src/java/org/apache/poi/ss/util/DateFormatConverter.java poi/trunk/src/java/org/apache/poi/util/LocaleUtil.java poi/trunk/src/testcases/org/apache/poi/ss/util/TestDateFormatConverter.java Modified: poi/site/src/documentation/content/xdocs/changes.xml URL: http://svn.apache.org/viewvc/poi/site/src/documentation/content/xdocs/changes.xml?rev=1871066=1871065=1871066=diff == --- poi/site/src/documentation/content/xdocs/changes.xml (original) +++ poi/site/src/documentation/content/xdocs/changes.xml Sun Dec 8 23:36:02 2019 @@ -93,6 +93,7 @@ Produce valid PPTX file with several chart series Add Doughnut chart data series support HMEFContentsExtractor fails to extract content from winmail.dat +Inconsistent mapping of Norwegian locales for date formats Modified: poi/trunk/src/java/org/apache/poi/ss/util/DateFormatConverter.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/util/DateFormatConverter.java?rev=1871066=1871065=1871066=diff == --- poi/trunk/src/java/org/apache/poi/ss/util/DateFormatConverter.java (original) +++ poi/trunk/src/java/org/apache/poi/ss/util/DateFormatConverter.java Sun Dec 8 23:36:02 2019 @@ -24,6 +24,7 @@ import java.util.List; import java.util.Locale; import java.util.Map; +import org.apache.poi.util.LocaleID; import org.apache.poi.util.POILogFactory; import org.apache.poi.util.POILogger; @@ -46,56 +47,59 @@ import org.apache.poi.util.POILogger; * * TODO Generalise this for all Excel format strings */ -public class DateFormatConverter { +@SuppressWarnings("unused") +public final class DateFormatConverter { private static POILogger logger = POILogFactory.getLogger(DateFormatConverter.class); - + + private DateFormatConverter() { + } + public static class DateFormatTokenizer { String format; int pos; - + public DateFormatTokenizer(String format) { this.format = format; } - + public String getNextToken() { if( pos >= format.length() ) { return null; } int subStart = pos; - char curChar = format.charAt(pos); + final char curChar = format.charAt(pos); ++pos; if( curChar == '\'' ) { - while( ( pos < format.length() ) && ( ( curChar = format.charAt(pos) ) != '\'' ) ) { + while( ( pos < format.length() ) && ( format.charAt(pos) != '\'' ) ) { ++pos; } if( pos < format.length() ) { ++pos; } } else { - char activeChar = curChar; - while( ( pos < format.length() ) && ( ( curChar = format.charAt(pos) ) == activeChar ) ) { + while( ( pos < format.length() ) && ( format.charAt(pos) == curChar ) ) { ++pos; } } return format.substring(subStart,pos); } - + public static String[] tokenize( String format ) { List result = new ArrayList<>(); - + DateFormatTokenizer tokenizer = new DateFormatTokenizer(format); String token; while( ( token = tokenizer.getNextToken() ) != null ) { result.add(token); } - + return result.toArray(new String[0]); } - + @Override public String toString() { StringBuilder result = new StringBuilder(); - + DateFormatTokenizer tokenizer = new DateFormatTokenizer(format); String token; while( ( token = tokenizer.getNextToken() )
svn commit: r1871065 - in /poi/trunk/src: java/org/apache/poi/ss/usermodel/DateUtil.java testcases/org/apache/poi/ss/usermodel/TestDateUtil.java
Author: kiwiwings Date: Sun Dec 8 23:31:20 2019 New Revision: 1871065 URL: http://svn.apache.org/viewvc?rev=1871065=rev Log: Bug 63779 - Add support for the new Java date/time API added in Java 8 Active roundSeconds again Modified: poi/trunk/src/java/org/apache/poi/ss/usermodel/DateUtil.java poi/trunk/src/testcases/org/apache/poi/ss/usermodel/TestDateUtil.java Modified: poi/trunk/src/java/org/apache/poi/ss/usermodel/DateUtil.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/usermodel/DateUtil.java?rev=1871065=1871064=1871065=diff == --- poi/trunk/src/java/org/apache/poi/ss/usermodel/DateUtil.java [UTF-8] (original) +++ poi/trunk/src/java/org/apache/poi/ss/usermodel/DateUtil.java [UTF-8] Sun Dec 8 23:31:20 2019 @@ -18,9 +18,7 @@ package org.apache.poi.ss.usermodel; -import org.apache.poi.ss.formula.ConditionalFormattingEvaluator; -import org.apache.poi.util.LocaleUtil; - +import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; @@ -28,6 +26,7 @@ import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatterBuilder; import java.time.temporal.ChronoField; +import java.time.temporal.ChronoUnit; import java.time.temporal.TemporalAccessor; import java.time.temporal.TemporalQueries; import java.util.Calendar; @@ -35,6 +34,9 @@ import java.util.Date; import java.util.TimeZone; import java.util.regex.Pattern; +import org.apache.poi.ss.formula.ConditionalFormattingEvaluator; +import org.apache.poi.util.LocaleUtil; + /** * Contains methods for dealing with Excel dates. */ @@ -49,8 +51,15 @@ public class DateUtil { public static final int HOURS_PER_DAY = 24; public static final int SECONDS_PER_DAY = (HOURS_PER_DAY * MINUTES_PER_HOUR * SECONDS_PER_MINUTE); -private static final intBAD_DATE = -1; // used to specify that date is invalid -public static final long DAY_MILLISECONDS = SECONDS_PER_DAY * 1000L; +// used to specify that date is invalid +private static final int BAD_DATE = -1; +public static final long DAY_MILLISECONDS = SECONDS_PER_DAY * 1000L; + + + +private static final BigDecimal BD_NANOSEC_DAY = BigDecimal.valueOf(SECONDS_PER_DAY * 1e9); +private static final BigDecimal BD_MILISEC_RND = BigDecimal.valueOf(0.5 * 1e6); +private static final BigDecimal BD_SECOND_RND = BigDecimal.valueOf(0.5 * 1e9); private static final Pattern TIME_SEPARATOR_PATTERN = Pattern.compile(":"); @@ -168,7 +177,7 @@ public class DateUtil { public static double getExcelDate(Date date) { return getExcelDate(date, false); } - + /** * Given a Date, converts it into a double representing its internal Excel representation, * which is the number of days since 1/1/1900. Fractional days represent hours, minutes, and seconds. @@ -186,7 +195,7 @@ public class DateUtil { int minute = calStart.get(Calendar.MINUTE); int second = calStart.get(Calendar.SECOND); int milliSecond = calStart.get(Calendar.MILLISECOND); - + return internalGetExcelDate(year, dayOfYear, hour, minute, second, milliSecond, use1904windowing); } @@ -210,7 +219,7 @@ public class DateUtil { return internalGetExcelDate(year, dayOfYear, hour, minute, second, milliSecond, use1904windowing); } - + private static double internalGetExcelDate(int year, int dayOfYear, int hour, int minute, int second, int milliSecond, boolean use1904windowing) { if ((!use1904windowing && year < 1900) || (use1904windowing && year < 1904)) @@ -341,7 +350,7 @@ public class DateUtil { public static Date getJavaDate(double date, boolean use1904windowing) { return getJavaDate(date, use1904windowing, null, false); } - + /** * Given an Excel date with using 1900 date windowing, and * converts it to a java.time.LocalDateTime. @@ -396,13 +405,16 @@ public class DateUtil { * @param roundSeconds round to closest second * @return Java representation of the date, or null if date is not a valid Excel date */ +@SuppressWarnings("squid:S2111") public static LocalDateTime getLocalDateTime(double date, boolean use1904windowing, boolean roundSeconds) { if (!isValidExcelDate(date)) { return null; } -int wholeDays = (int)Math.floor(date); -int millisecondsInDay = (int)((date - wholeDays) * DAY_MILLISECONDS + 0.5); - + +BigDecimal bd = new BigDecimal(date); + +int wholeDays = bd.intValue(); + int startYear = 1900; int dayAdjust = -1; // Excel thinks 2/29/1900 is a valid date, which it isn't if (use1904windowing) { @@ -417,7 +429,15 @@ public cla
svn commit: r1871064 - in /poi/trunk/src: examples/src/org/apache/poi/ss/examples/ java/org/apache/poi/hssf/record/ java/org/apache/poi/hssf/usermodel/ java/org/apache/poi/poifs/crypt/ java/org/apache
Author: kiwiwings Date: Sun Dec 8 23:29:50 2019 New Revision: 1871064 URL: http://svn.apache.org/viewvc?rev=1871064=rev Log: Sonar fixes - type: bugs / severity: major Modified: poi/trunk/src/examples/src/org/apache/poi/ss/examples/AddDimensionedImage.java poi/trunk/src/examples/src/org/apache/poi/ss/examples/BusinessPlan.java poi/trunk/src/java/org/apache/poi/hssf/record/FontRecord.java poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFCellStyle.java poi/trunk/src/java/org/apache/poi/poifs/crypt/ChunkedCipherInputStream.java poi/trunk/src/java/org/apache/poi/poifs/crypt/CryptoFunctions.java poi/trunk/src/java/org/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDocumentInputStream.java poi/trunk/src/java/org/apache/poi/poifs/crypt/cryptoapi/CryptoAPIDocumentOutputStream.java poi/trunk/src/java/org/apache/poi/poifs/filesystem/DocumentInputStream.java poi/trunk/src/java/org/apache/poi/sl/draw/DrawFactory.java poi/trunk/src/java/org/apache/poi/sl/draw/DrawShape.java poi/trunk/src/java/org/apache/poi/ss/formula/functions/Delta.java poi/trunk/src/java/org/apache/poi/ss/formula/functions/Fixed.java poi/trunk/src/java/org/apache/poi/ss/formula/functions/Irr.java poi/trunk/src/java/org/apache/poi/ss/usermodel/DataFormatter.java poi/trunk/src/java/org/apache/poi/ss/usermodel/ExcelGeneralNumberFormat.java poi/trunk/src/java/org/apache/poi/ss/usermodel/FractionFormat.java poi/trunk/src/scratchpad/src/org/apache/poi/hemf/record/emfplus/HemfPlusDraw.java Modified: poi/trunk/src/examples/src/org/apache/poi/ss/examples/AddDimensionedImage.java URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/ss/examples/AddDimensionedImage.java?rev=1871064=1871063=1871064=diff == --- poi/trunk/src/examples/src/org/apache/poi/ss/examples/AddDimensionedImage.java (original) +++ poi/trunk/src/examples/src/org/apache/poi/ss/examples/AddDimensionedImage.java Sun Dec 8 23:29:50 2019 @@ -685,8 +685,8 @@ public class AddDimensionedImage { if(sheet instanceof HSSFSheet) { // Next, from the columns width, calculate how many co-ordinate // positons there are per millimetre -coordinatePositionsPerMM = ConvertImageUnits.TOTAL_COLUMN_COORDINATE_POSITIONS / -colWidthMM; +coordinatePositionsPerMM = (colWidthMM == 0) ? 0 +: ConvertImageUnits.TOTAL_COLUMN_COORDINATE_POSITIONS / colWidthMM; // From this figure, determine how many co-ordinat positions to // inset the left hand or bottom edge of the image. inset = (int)(coordinatePositionsPerMM * overlapMM); @@ -784,8 +784,8 @@ public class AddDimensionedImage { } if(sheet instanceof HSSFSheet) { -rowCoordinatesPerMM = ConvertImageUnits.TOTAL_ROW_COORDINATE_POSITIONS / -rowHeightMM; +rowCoordinatesPerMM = (rowHeightMM == 0) ? 0 +: ConvertImageUnits.TOTAL_ROW_COORDINATE_POSITIONS / rowHeightMM; inset = (int)(overlapMM * rowCoordinatesPerMM); } else { Modified: poi/trunk/src/examples/src/org/apache/poi/ss/examples/BusinessPlan.java URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/ss/examples/BusinessPlan.java?rev=1871064=1871063=1871064=diff == --- poi/trunk/src/examples/src/org/apache/poi/ss/examples/BusinessPlan.java (original) +++ poi/trunk/src/examples/src/org/apache/poi/ss/examples/BusinessPlan.java Sun Dec 8 23:29:50 2019 @@ -17,15 +17,26 @@ package org.apache.poi.ss.examples; -import org.apache.poi.xssf.usermodel.*; -import org.apache.poi.ss.usermodel.*; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; - -import java.util.Map; -import java.util.HashMap; -import java.util.Calendar; import java.io.FileOutputStream; import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.HashMap; +import java.util.Map; + +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.BorderStyle; +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.FillPatternType; +import org.apache.poi.ss.usermodel.Font; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.apache.poi.ss.usermodel.IndexedColors; +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; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; /** * A business plan demo @@ -36,8 +47,6 @@ import java.text.SimpleDateFormat; */ public class
svn commit: r1870977 [2/2] - in /poi/trunk/src/examples/src/org/apache/poi/hssf/view: SVBorder.java SVFractionalFormat.java SVRowHeader.java SVSheetTable.java SVTableCellRenderer.java SVTableModel.jav
Modified: poi/trunk/src/examples/src/org/apache/poi/hssf/view/SVTableUtils.java URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/hssf/view/SVTableUtils.java?rev=1870977=1870976=1870977=diff == --- poi/trunk/src/examples/src/org/apache/poi/hssf/view/SVTableUtils.java (original) +++ poi/trunk/src/examples/src/org/apache/poi/hssf/view/SVTableUtils.java Sat Dec 7 11:53:48 2019 @@ -32,55 +32,63 @@ import org.apache.poi.hssf.util.HSSFColo /** * SVTableCell Editor and Renderer helper functions. * - * @author Jason Height + * @author Jason Height */ public class SVTableUtils { - private final static Map colors = HSSFColor.getIndexHash(); - /** Description of the Field */ - public final static Color black = getAWTColor(HSSFColorPredefined.BLACK); - /** Description of the Field */ - public final static Color white = getAWTColor(HSSFColorPredefined.WHITE); - /** Description of the Field */ - public static final Border noFocusBorder = new EmptyBorder(1, 1, 1, 1); - - - /** - * Creates a new font for a specific cell style - */ - public static Font makeFont(HSSFFont font) { -boolean isbold = font.getBold(); -boolean isitalics = font.getItalic(); -int fontstyle = Font.PLAIN; -if (isbold) { - fontstyle = Font.BOLD; -} -if (isitalics) { - fontstyle = fontstyle | Font.ITALIC; -} +private final static Map colors = HSSFColor.getIndexHash(); +/** + * Description of the Field + */ +public final static Color black = getAWTColor(HSSFColorPredefined.BLACK); +/** + * Description of the Field + */ +public final static Color white = getAWTColor(HSSFColorPredefined.WHITE); +/** + * Description of the Field + */ +public static final Border noFocusBorder = new EmptyBorder(1, 1, 1, 1); + + +/** + * Creates a new font for a specific cell style + */ +public static Font makeFont(HSSFFont font) { +boolean isbold = font.getBold(); +boolean isitalics = font.getItalic(); +int fontstyle = Font.PLAIN; +if (isbold) { +fontstyle = Font.BOLD; +} +if (isitalics) { +fontstyle = fontstyle | Font.ITALIC; +} + +int fontheight = font.getFontHeightInPoints(); +if (fontheight == 9) { +//fix for stupid ol Windows +fontheight = 10; +} -int fontheight = font.getFontHeightInPoints(); -if (fontheight == 9) { - //fix for stupid ol Windows - fontheight = 10; +return new Font(font.getFontName(), fontstyle, fontheight); } -return new Font(font.getFontName(), fontstyle, fontheight); - } +/** + * This method retrieves the AWT Color representation from the colour hash table + */ +/* package */ +static Color getAWTColor(int index, Color deflt) { +HSSFColor clr = colors.get(index); +if (clr == null) { +return deflt; +} +short[] rgb = clr.getTriplet(); +return new Color(rgb[0], rgb[1], rgb[2]); +} - /** This method retrieves the AWT Color representation from the colour hash table - * - */ - /* package */ static Color getAWTColor(int index, Color deflt) { -HSSFColor clr = colors.get(index); -if (clr == null) { - return deflt; +/* package */ +static Color getAWTColor(HSSFColorPredefined clr) { +short[] rgb = clr.getTriplet(); +return new Color(rgb[0], rgb[1], rgb[2]); } -short[] rgb = clr.getTriplet(); -return new Color(rgb[0],rgb[1],rgb[2]); - } - - /* package */ static Color getAWTColor(HSSFColorPredefined clr) { -short[] rgb = clr.getTriplet(); -return new Color(rgb[0],rgb[1],rgb[2]); - } } Modified: poi/trunk/src/examples/src/org/apache/poi/hssf/view/SViewerPanel.java URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/hssf/view/SViewerPanel.java?rev=1870977=1870976=1870977=diff == --- poi/trunk/src/examples/src/org/apache/poi/hssf/view/SViewerPanel.java (original) +++ poi/trunk/src/examples/src/org/apache/poi/hssf/view/SViewerPanel.java Sat Dec 7 11:53:48 2019 @@ -53,267 +53,291 @@ import org.apache.poi.hssf.usermodel.HSS * This class presents the sheets to the user. */ public class SViewerPanel extends JPanel { - /** This field is the magic number to convert from a Character width to a - * java pixel width. - * - * When the "normal" font size in a workbook changes, this effects all - * of the heights and widths. Unfortunately there is no way to retrieve this - * information, hence the MAGIC number. - * - * This number may only work for the normal style font size of Arial size 10. - * - */ - private static final int magicCharFactor = 7; - /** Reference to the wookbook that is being
svn commit: r1870977 [1/2] - in /poi/trunk/src/examples/src/org/apache/poi/hssf/view: SVBorder.java SVFractionalFormat.java SVRowHeader.java SVSheetTable.java SVTableCellRenderer.java SVTableModel.jav
Author: kiwiwings Date: Sat Dec 7 11:53:48 2019 New Revision: 1870977 URL: http://svn.apache.org/viewvc?rev=1870977=rev Log: Reindent to 4 spaces - optimize imports Modified: poi/trunk/src/examples/src/org/apache/poi/hssf/view/SVBorder.java poi/trunk/src/examples/src/org/apache/poi/hssf/view/SVFractionalFormat.java poi/trunk/src/examples/src/org/apache/poi/hssf/view/SVRowHeader.java poi/trunk/src/examples/src/org/apache/poi/hssf/view/SVSheetTable.java poi/trunk/src/examples/src/org/apache/poi/hssf/view/SVTableCellRenderer.java poi/trunk/src/examples/src/org/apache/poi/hssf/view/SVTableModel.java poi/trunk/src/examples/src/org/apache/poi/hssf/view/SVTableUtils.java poi/trunk/src/examples/src/org/apache/poi/hssf/view/SViewerPanel.java Modified: poi/trunk/src/examples/src/org/apache/poi/hssf/view/SVBorder.java URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/hssf/view/SVBorder.java?rev=1870977=1870976=1870977=diff == --- poi/trunk/src/examples/src/org/apache/poi/hssf/view/SVBorder.java (original) +++ poi/trunk/src/examples/src/org/apache/poi/hssf/view/SVBorder.java Sat Dec 7 11:53:48 2019 @@ -15,10 +15,12 @@ See the License for the specific language governing permissions and limitations under the License. */ - + package org.apache.poi.hssf.view; -import java.awt.*; +import java.awt.Color; +import java.awt.Component; +import java.awt.Graphics; import javax.swing.border.AbstractBorder; @@ -26,532 +28,532 @@ import org.apache.poi.ss.usermodel.Borde /** * This is an attempt to implement Excel style borders for the SheetViewer. - * Mostly just overrides stuff so the javadoc won't appear here but will + * Mostly just overrides stuff so the javadoc won't appear here but will * appear in the generated stuff. - * + * * @author Andrew C. Oliver (acoliver at apache dot org) * @author Jason Height */ public class SVBorder extends AbstractBorder { - private Color northColor; - private Color eastColor; - private Color southColor; - private Color westColor; - private BorderStyle northBorderType = BorderStyle.NONE; - private BorderStyle eastBorderType = BorderStyle.NONE; - private BorderStyle southBorderType = BorderStyle.NONE; - private BorderStyle westBorderType = BorderStyle.NONE; - private boolean northBorder; - private boolean eastBorder; - private boolean southBorder; - private boolean westBorder; - private boolean selected; - - public void setBorder(Color northColor, Color eastColor, - Color southColor, Color westColor, - BorderStyle northBorderType, BorderStyle eastBorderType, - BorderStyle southBorderType, BorderStyle westBorderType, - boolean selected) { - this.eastColor = eastColor; - this.southColor = southColor; - this.westColor = westColor; - this.northBorderType = northBorderType; - this.eastBorderType = eastBorderType; - this.southBorderType = southBorderType; - this.westBorderType = westBorderType; - this.northBorder=northBorderType != BorderStyle.NONE; - this.eastBorder=eastBorderType != BorderStyle.NONE; - this.southBorder=southBorderType != BorderStyle.NONE; - this.westBorder=westBorderType != BorderStyle.NONE; - this.selected = selected; - } - - @Override -public void paintBorder(Component c, Graphics g, int x, int y, int width, - int height) { - Color oldColor = g.getColor(); - - - paintSelectedBorder(g, x, y, width, height); - paintNormalBorders(g, x, y, width, height); - paintDottedBorders(g, x, y, width, height); - paintDashedBorders(g, x, y, width, height); - paintDoubleBorders(g, x, y, width, height); - paintDashDotDotBorders(g, x, y, width, height); - - - g.setColor(oldColor); - } - - /** -* Called by paintBorder to paint the border of a selected cell. -* The paramaters are the Graphics object, location and dimensions of the -* cell. -*/ - private void paintSelectedBorder(Graphics g, int x, int y, int width, - int height) { - if (selected) { - //Need to setup thickness of 2 - g.setColor(Color.black); - //paint the border - g.drawRect(x,y,width-1,height-1); - - //paint the filled rectangle at the bottom left hand position - g.fillRect(x+width-5, y+height-5, 5, 5); - } - } - - - /** -* Called by paintBorder to paint the various versions of normal line -* borders for a cell. -*/ - private void paintNormalBorders(Graphics g, int x, int y, int width, - int height) { - - if (northBorder && - ((northBorderType == BorderStyle.THIN) || - (northBo
svn commit: r1870976 - in /poi/trunk/src: examples/src/org/apache/poi/hssf/usermodel/examples/ examples/src/org/apache/poi/ss/examples/ examples/src/org/apache/poi/xssf/usermodel/examples/ excelant/ja
Author: kiwiwings Date: Sat Dec 7 11:45:44 2019 New Revision: 1870976 URL: http://svn.apache.org/viewvc?rev=1870976=rev Log: Sonar Fixes - type: bugs / severity: critical - mostly div by 0 Modified: poi/trunk/src/examples/src/org/apache/poi/hssf/usermodel/examples/AddDimensionedImage.java poi/trunk/src/examples/src/org/apache/poi/ss/examples/AddDimensionedImage.java poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/BigGridDemo.java poi/trunk/src/excelant/java/org/apache/poi/ss/excelant/ExcelAntEvaluateCell.java poi/trunk/src/java/org/apache/poi/sl/draw/geom/Guide.java poi/trunk/src/java/org/apache/poi/ss/formula/atp/YearFracCalculator.java poi/trunk/src/java/org/apache/poi/ss/formula/functions/Irr.java poi/trunk/src/java/org/apache/poi/ss/formula/functions/LinearRegressionFunction.java poi/trunk/src/java/org/apache/poi/util/XMLHelper.java Modified: poi/trunk/src/examples/src/org/apache/poi/hssf/usermodel/examples/AddDimensionedImage.java URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/hssf/usermodel/examples/AddDimensionedImage.java?rev=1870976=1870975=1870976=diff == --- poi/trunk/src/examples/src/org/apache/poi/hssf/usermodel/examples/AddDimensionedImage.java (original) +++ poi/trunk/src/examples/src/org/apache/poi/hssf/usermodel/examples/AddDimensionedImage.java Sat Dec 7 11:45:44 2019 @@ -559,8 +559,8 @@ public class AddDimensionedImage { // Next, from the columns width, calculate how many co-ordinate // positons there are per millimetre -coordinatePositionsPerMM = ConvertImageUnits.TOTAL_COLUMN_COORDINATE_POSITIONS / -colWidthMM; +coordinatePositionsPerMM = colWidthMM == 0 ? 0 +: ConvertImageUnits.TOTAL_COLUMN_COORDINATE_POSITIONS / colWidthMM; // From this figure, determine how many co-ordinat positions to // inset the left hand or bottom edge of the image. inset = (int)(coordinatePositionsPerMM * overlapMM); @@ -615,8 +615,7 @@ public class AddDimensionedImage { row = sheet.createRow(toRow); } // Get the row's height in millimetres and add to the running total. -rowHeightMM = row.getHeightInPoints() / -ConvertImageUnits.POINTS_PER_MILLIMETRE; +rowHeightMM = row.getHeightInPoints() / ConvertImageUnits.POINTS_PER_MILLIMETRE; totalRowHeightMM += rowHeightMM; toRow++; } @@ -647,11 +646,10 @@ public class AddDimensionedImage { overlapMM = 0.0D; } -rowCoordinatesPerMM = ConvertImageUnits.TOTAL_ROW_COORDINATE_POSITIONS / -rowHeightMM; +rowCoordinatesPerMM = rowHeightMM == 0 ? 0 +: ConvertImageUnits.TOTAL_ROW_COORDINATE_POSITIONS / rowHeightMM; inset = (int)(overlapMM * rowCoordinatesPerMM); -clientAnchorDetail = new ClientAnchorDetail(startingRow, -toRow, inset); +clientAnchorDetail = new ClientAnchorDetail(startingRow, toRow, inset); } return(clientAnchorDetail); } Modified: poi/trunk/src/examples/src/org/apache/poi/ss/examples/AddDimensionedImage.java URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/ss/examples/AddDimensionedImage.java?rev=1870976=1870975=1870976=diff == --- poi/trunk/src/examples/src/org/apache/poi/ss/examples/AddDimensionedImage.java (original) +++ poi/trunk/src/examples/src/org/apache/poi/ss/examples/AddDimensionedImage.java Sat Dec 7 11:45:44 2019 @@ -460,8 +460,8 @@ public class AddDimensionedImage { // is then instantiated. if(sheet instanceof HSSFSheet) { colWidthMM = reqImageWidthMM; -colCoordinatesPerMM = ConvertImageUnits.TOTAL_COLUMN_COORDINATE_POSITIONS / -colWidthMM; +colCoordinatesPerMM = colWidthMM == 0 ? 0 +: ConvertImageUnits.TOTAL_COLUMN_COORDINATE_POSITIONS / colWidthMM; pictureWidthCoordinates = (int)(reqImageWidthMM * colCoordinatesPerMM); } @@ -553,8 +553,8 @@ public class AddDimensionedImage { ConvertImageUnits.POINTS_PER_MILLIMETRE)); if(sheet instanceof HSSFSheet) { rowHeightMM = reqImageHeightMM; -rowCoordinatesPerMM = ConvertImageUnits.TOTAL_ROW_COORDINATE_POSITIONS / -rowHeightMM; +rowCoordinatesPerMM = rowHeightMM == 0 ? 0 +: ConvertImageUnits.TOTAL_ROW_COORDINATE_POSITIONS / rowHeightMM
svn commit: r1870856 - in /poi/trunk/src: examples/src/org/apache/poi/hssf/usermodel/examples/ examples/src/org/apache/poi/hssf/view/ examples/src/org/apache/poi/ss/examples/ examples/src/org/apache/p
Author: kiwiwings Date: Thu Dec 5 00:18:36 2019 New Revision: 1870856 URL: http://svn.apache.org/viewvc?rev=1870856=rev Log: Sonar Fixes Modified: poi/trunk/src/examples/src/org/apache/poi/hssf/usermodel/examples/AddDimensionedImage.java poi/trunk/src/examples/src/org/apache/poi/hssf/usermodel/examples/HSSFReadWrite.java poi/trunk/src/examples/src/org/apache/poi/hssf/view/SViewer.java poi/trunk/src/examples/src/org/apache/poi/hssf/view/SViewerPanel.java poi/trunk/src/examples/src/org/apache/poi/ss/examples/AddDimensionedImage.java poi/trunk/src/examples/src/org/apache/poi/ss/examples/formula/CheckFunctionsSupported.java poi/trunk/src/examples/src/org/apache/poi/xwpf/usermodel/examples/ChartFromScratch.java poi/trunk/src/java/org/apache/poi/util/XMLHelper.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/converter/WordToTextConverter.java poi/trunk/src/scratchpad/testcases/org/apache/poi/hssf/converter/TestExcelConverterSuite.java poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToConverterSuite.java Modified: poi/trunk/src/examples/src/org/apache/poi/hssf/usermodel/examples/AddDimensionedImage.java URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/hssf/usermodel/examples/AddDimensionedImage.java?rev=1870856=1870855=1870856=diff == --- poi/trunk/src/examples/src/org/apache/poi/hssf/usermodel/examples/AddDimensionedImage.java (original) +++ poi/trunk/src/examples/src/org/apache/poi/hssf/usermodel/examples/AddDimensionedImage.java Thu Dec 5 00:18:36 2019 @@ -20,18 +20,18 @@ package org.apache.poi.hssf.usermodel.ex import java.io.File; import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.ByteArrayOutputStream; import java.io.FileNotFoundException; +import java.io.FileOutputStream; import java.io.IOException; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.ss.util.CellReference; -import org.apache.poi.hssf.usermodel.HSSFSheet; -import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFClientAnchor; import org.apache.poi.hssf.usermodel.HSSFPatriarch; +import org.apache.poi.hssf.usermodel.HSSFRow; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.ClientAnchor.AnchorType; +import org.apache.poi.ss.util.CellReference; +import org.apache.poi.util.IOUtils; /** @@ -126,8 +126,8 @@ import org.apache.poi.ss.usermodel.Clien * A note concerning Excels' image resizing behaviour. The HSSFClientAnchor * class contains a method called setAnchorType(int) which can be used to * determine how Excel will resize an image in reponse to the user increasing - * or decreasing the dimensions of the cell containing the image. There are - * three values that can be passed to this method; 0 = To move and size the + * or decreasing the dimensions of the cell containing the image. There are + * three values that can be passed to this method; 0 = To move and size the * image with the cell, 2 = To move but don't size the image with the cell, * 3 = To prevent the image from moving or being resized along with the cell. If * an image is inserted using this class and placed into a single cell then if @@ -298,7 +298,7 @@ public class AddDimensionedImage { // become another parameter passed to the method. //anchor.setAnchorType(HSSFClientAnchor.DONT_MOVE_AND_RESIZE); anchor.setAnchorType(AnchorType.MOVE_AND_RESIZE); - + // Now, add the picture to the workbook. Note that the type is assumed // to be a JPEG/JPG, this could easily (and should) be parameterised // however. @@ -538,7 +538,7 @@ public class AddDimensionedImage { // total number of co-ordinate positions to the third paramater // of the ClientAnchorDetail constructor. For no sepcific reason, // the latter option is used below. -anchorDetail = new ClientAnchorDetail(startingColumn, +anchorDetail = new ClientAnchorDetail(startingColumn, toColumn, ConvertImageUnits.TOTAL_COLUMN_COORDINATE_POSITIONS); } // In this case, the image will overlap part of another column and it is @@ -675,29 +675,9 @@ public class AddDimensionedImage { * interrupted. */ private byte[] imageToBytes(String imageFilename) throws IOException { -File imageFile; -FileInputStream fis = null; -ByteArrayOutputStream bos; -int read; -try { -imageFile = new File(imageFilename); -fis = new FileInputStream(imageFile); -bos = new ByteArrayOutputStream(); -while((read = fis.read()) != -1) { -bos.write(read
svn commit: r1870769 [1/2] - in /poi: site/src/documentation/content/xdocs/components/spreadsheet/ trunk/src/examples/src/org/apache/poi/xssf/eventusermodel/ trunk/src/examples/src/org/apache/poi/xssf
Author: kiwiwings Date: Tue Dec 3 21:56:47 2019 New Revision: 1870769 URL: http://svn.apache.org/viewvc?rev=1870769=rev Log: Sonar Fixes + Refactor scattered XML initializations to XMLHelper Added: poi/trunk/src/testcases/org/apache/poi/util/TestXMLHelper.java (with props) Removed: poi/trunk/src/ooxml/java/org/apache/poi/ooxml/util/POIXMLConstants.java poi/trunk/src/ooxml/testcases/org/apache/poi/ooxml/util/TestDocumentHelper.java poi/trunk/src/ooxml/testcases/org/apache/poi/ooxml/util/TestSAXHelper.java poi/trunk/src/testcases/org/apache/poi/util/TestStaxHelper.java Modified: poi/site/src/documentation/content/xdocs/components/spreadsheet/how-to.xml poi/trunk/src/examples/src/org/apache/poi/xssf/eventusermodel/XLSX2CSV.java poi/trunk/src/examples/src/org/apache/poi/xssf/eventusermodel/examples/FromHowTo.java poi/trunk/src/java/org/apache/poi/sl/draw/geom/PresetGeometries.java poi/trunk/src/java/org/apache/poi/util/StaxHelper.java poi/trunk/src/java/org/apache/poi/util/XMLHelper.java poi/trunk/src/ooxml/java/org/apache/poi/ooxml/dev/OOXMLPrettyPrint.java poi/trunk/src/ooxml/java/org/apache/poi/ooxml/util/DocumentHelper.java poi/trunk/src/ooxml/java/org/apache/poi/ooxml/util/SAXHelper.java poi/trunk/src/ooxml/java/org/apache/poi/ooxml/util/TransformerHelper.java poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/StreamHelper.java poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/services/TSPTimeStampService.java poi/trunk/src/ooxml/java/org/apache/poi/xssf/eventusermodel/ReadOnlySharedStringsTable.java poi/trunk/src/ooxml/java/org/apache/poi/xssf/eventusermodel/XSSFReader.java poi/trunk/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFEventBasedExcelExtractor.java poi/trunk/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFExportToXml.java poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFBuiltinTableStyle.java poi/trunk/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestContentType.java poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/extractor/TestXSSFExportToXML.java poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java poi/trunk/src/scratchpad/src/org/apache/poi/hssf/converter/ExcelToFoConverter.java poi/trunk/src/scratchpad/src/org/apache/poi/hssf/converter/ExcelToHtmlConverter.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/converter/WordToFoConverter.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/converter/WordToHtmlConverter.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/converter/WordToTextConverter.java poi/trunk/src/scratchpad/testcases/org/apache/poi/hssf/converter/TestExcelConverterSuite.java poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToConverterSuite.java poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToFoConverter.java poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToHtmlConverter.java poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java Modified: poi/site/src/documentation/content/xdocs/components/spreadsheet/how-to.xml URL: http://svn.apache.org/viewvc/poi/site/src/documentation/content/xdocs/components/spreadsheet/how-to.xml?rev=1870769=1870768=1870769=diff == --- poi/site/src/documentation/content/xdocs/components/spreadsheet/how-to.xml (original) +++ poi/site/src/documentation/content/xdocs/components/spreadsheet/how-to.xml Tue Dec 3 21:56:47 2019 @@ -509,7 +509,7 @@ The latest version is always available f import java.io.InputStream; import java.util.Iterator; -import org.apache.poi.ooxml.util.SAXHelper; +import org.apache.poi.util.XMLHelper; import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.xssf.eventusermodel.XSSFReader; import org.apache.poi.xssf.model.SharedStringsTable; @@ -558,7 +558,7 @@ public class ExampleEventUserModel { } public XMLReader fetchSheetParser(SharedStringsTable sst) throws SAXException, ParserConfigurationException { -XMLReader parser = SAXHelper.newXMLReader(); +XMLReader parser = XMLHelper.newXMLReader(); ContentHandler handler = new SheetHandler(sst); parser.setContentHandler(handler); return parser; Modified: poi/trunk/src/examples/src/org/apache/poi/xssf/eventusermodel/XLSX2CSV.java URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/xssf/eventusermodel/XLSX2CSV.java?rev=1870769=1870768=1870769=diff == --- poi/trunk/src/examples/src/org/apache/poi/xssf/eventusermodel/XLSX2CSV.java (original) +++ poi/trunk/src/examples/src/org/apache/poi/xssf/eventusermodel/XLSX2CSV.java Tue Dec 3 21:56:47 2019 @@ -30,7 +30,7 @@ import org.apache.poi.openxml4j.opc.Pack import
svn commit: r1870769 [2/2] - in /poi: site/src/documentation/content/xdocs/components/spreadsheet/ trunk/src/examples/src/org/apache/poi/xssf/eventusermodel/ trunk/src/examples/src/org/apache/poi/xssf
Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToFoConverter.java URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToFoConverter.java?rev=1870769=1870768=1870769=diff == --- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToFoConverter.java (original) +++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToFoConverter.java Tue Dec 3 21:56:47 2019 @@ -22,9 +22,7 @@ import static org.apache.poi.POITestCase import java.io.StringWriter; -import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; @@ -45,14 +43,12 @@ public class TestWordToFoConverter .getDocumentInstance().openResourceAsStream( sampleFileName ) ); WordToFoConverter wordToFoConverter = new WordToFoConverter( - XMLHelper.getDocumentBuilderFactory().newDocumentBuilder().newDocument() ); +XMLHelper.newDocumentBuilder().newDocument() ); wordToFoConverter.processDocument( hwpfDocument ); StringWriter stringWriter = new StringWriter(); -Transformer transformer = TransformerFactory.newInstance() -.newTransformer(); -transformer.setOutputProperty( OutputKeys.INDENT, "yes" ); +Transformer transformer = XMLHelper.newTransformer(); transformer.transform( new DOMSource( wordToFoConverter.getDocument() ), new StreamResult( stringWriter ) ); Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToHtmlConverter.java URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToHtmlConverter.java?rev=1870769=1870768=1870769=diff == --- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToHtmlConverter.java (original) +++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToHtmlConverter.java Tue Dec 3 21:56:47 2019 @@ -16,21 +16,21 @@ */ package org.apache.poi.hwpf.converter; -import org.apache.poi.POIDataSamples; -import org.apache.poi.hwpf.HWPFDocument; -import org.apache.poi.util.XMLHelper; -import org.junit.Test; -import org.w3c.dom.Document; +import static org.apache.poi.POITestCase.assertContains; +import static org.junit.Assert.assertFalse; + +import java.io.StringWriter; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; -import java.io.StringWriter; -import static org.apache.poi.POITestCase.assertContains; -import static org.junit.Assert.assertFalse; +import org.apache.poi.POIDataSamples; +import org.apache.poi.hwpf.HWPFDocument; +import org.apache.poi.util.XMLHelper; +import org.junit.Test; +import org.w3c.dom.Document; /** * Test cases for {@link WordToHtmlConverter} @@ -45,7 +45,7 @@ public class TestWordToHtmlConverter { HWPFDocument hwpfDocument = new HWPFDocument(POIDataSamples .getDocumentInstance().openResourceAsStream(sampleFileName)); -Document newDocument = XMLHelper.getDocumentBuilderFactory().newDocumentBuilder().newDocument(); +Document newDocument = XMLHelper.newDocumentBuilder().newDocument(); WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter( newDocument); @@ -58,10 +58,7 @@ public class TestWordToHtmlConverter { StringWriter stringWriter = new StringWriter(); -Transformer transformer = TransformerFactory.newInstance() -.newTransformer(); -transformer.setOutputProperty(OutputKeys.INDENT, "yes"); -transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8"); +Transformer transformer = XMLHelper.newTransformer(); transformer.setOutputProperty(OutputKeys.METHOD, "html"); transformer.transform( new DOMSource(wordToHtmlConverter.getDocument()), Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java?rev=1870769=1870768=1870769=diff == --- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java (original) +++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java Tue Dec 3 21:56:47 2019 @@
svn commit: r1870695 - /poi/site/publish/components/slideshow/ppt-wmf-emf-renderer.html
Author: kiwiwings Date: Sun Dec 1 23:09:58 2019 New Revision: 1870695 URL: http://svn.apache.org/viewvc?rev=1870695=rev Log: add rendering info actually ... Added: poi/site/publish/components/slideshow/ppt-wmf-emf-renderer.html Added: poi/site/publish/components/slideshow/ppt-wmf-emf-renderer.html URL: http://svn.apache.org/viewvc/poi/site/publish/components/slideshow/ppt-wmf-emf-renderer.html?rev=1870695=auto == --- poi/site/publish/components/slideshow/ppt-wmf-emf-renderer.html (added) +++ poi/site/publish/components/slideshow/ppt-wmf-emf-renderer.html Sun Dec 1 23:09:58 2019 @@ -0,0 +1,668 @@ +http://www.w3.org/TR/html4/loose.dtd;> + + + + + + +Rendering slideshows, WMF, EMF and EMF+ + + + + + + + + +ndeSetTextSize(); + + + +https://www.apache.org;>Apache Software Foundation https://poi.apache.org;>Apache POI + + + + + +https://www.apache.org;> + + + + +https://poi.apache.org;> + + + + +http://www.google.com/search; method="get" class="roundtopsmall"> + + + + + + + + +Home + + +Help + + +Component APIs + + +Getting Involved + + + + + + + + + + +<!-- +document.write("Last Published: " + document.lastModified); +// --> + + + + + + + + + +Component APIs + + +Overview + + +Javadocs + +Excel (HSSF/XSSF) + + +Overview + + +Quick Guide + + +HOWTO + + +HSSF to SS Converting + + +Formula Support + + +Formula Evaluation + + +Eval Dev Guide + + +Examples + + +Use Case + + +Pictorial Docs + + +Limitations + + +User Defined Functions + + +ExcelAnt Tests + + +Hacking HSSF + + +Record Generator + + +Charts + + +PowerPoint (HSLF/XSLF) + + +Overview + + +Quick Guide + + +HSLF Cookbook + + +XSLF Cookbook + + +Render SL/WMF/EMF + + +PPT File Format + + +Word (HWPF/XWPF) + + +Overview + + +HWPF Quick Guide + + +XWPF Quick Guide + + +HWPF Format + + +HWPF Project plan + + + +Outlook (HSMF) + + +Visio (HDGF+XDGF) + +Publisher (HPBF) + + +Overview + + +File Format + + +OLE2 Filesystem (POIFS) + + +Overview + + +How To + + +Embedded Documents + + +File System Documentation + + +Use Cases + + +Design + + +OLE2 Document Props (HPSF) + + +Overview + + +How To + + +Thumbnails + + +Internals + + +To Do + + + +TNEF (HMEF) for winmail.dat + + +OpenXML4J (OOXML) + + +Logging framework + + + + + + + +https://donate.apache.org/;>https://www.apache.org/foundation/press/kit/#poweredby;> + + + + + +Rendering slideshows, WMF, EMF and EMF+ + + + +Rendering slideshows, WMF, EMF and EMF+ + + +For rendering slideshow (HSLF/XSLF), WMF, EMF and EMF+ pictures, POI provides an utility class +https://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/util/PPTX2PNG.java?view=markup;> +PPTX2PNG: + + + + + + +Usage: PPTX2PNG [options] ppt or pptx file or 'stdin' + + + + + +Options: + + +-scale float scale factor + + +-fixSide side specify side (long,short,width,height) to fix - use scale as amount of pixels + + +-slide integer 1-based index of a slide to render + + +-format type png,gif,jpg (,null for testing) + + +-outdir dir output directory, defaults to origin of the ppt/pptx file + + +-outfile file output filename, defaults to "${basename}-${slideno}.${format}" + + +-outpat pattern output filename pattern, defaults to "${basename}-${slideno}.${format}" + + + patterns: basename, slideno, format, ext + + +-dump file dump the annotated records to a file + + +-quietdo not write to console (for normal processing) + + +-ignoreParse ignore parsing error and continue with the records read until the error + + +-extractEmbedded extract embedded parts + + + + + + + + + + + +Integrate rendering in your code + + +#1 - Use PPTX2PNG via file or stdin +For file system access, you need to save your slideshow/WMF/EMF/EMF+ first to disc and then call +PPTX2PNG.main() + with the corresponding parameters. + +for stdin access, you need to redirect System.in before: + + + + + + +/* the file content */ + + +InputStream is = ...; + + +/* Save and set System.in */ + + +InputStream oldIn = System.in; + + +try { + + +System.setIn(is); + + + + + +String[] args = { + + +"-format", "png", // png,gif,jpg or null for test + + +"-outdir", new File("out/").getCanonicalPath(), + + +"-outfile", "export.png", + + +"-fixside", "long", + + +"-scale", "800", + + + "-ignoreParse", + + +"stdin" + + +}; + + + PPTX2PNG.main(args); + + + + + +} finally { + + + System.setIn(oldIn);
svn commit: r1870694 - in /poi/site/src/documentation/content/xdocs: changes.xml components/slideshow/ppt-wmf-emf-renderer.xml site.xml
Author: kiwiwings Date: Sun Dec 1 23:08:41 2019 New Revision: 1870694 URL: http://svn.apache.org/viewvc?rev=1870694=rev Log: Add slideshow, WMF, EMF, EMF+ rendering info Added: poi/site/src/documentation/content/xdocs/components/slideshow/ppt-wmf-emf-renderer.xml Modified: poi/site/src/documentation/content/xdocs/changes.xml poi/site/src/documentation/content/xdocs/site.xml Modified: poi/site/src/documentation/content/xdocs/changes.xml URL: http://svn.apache.org/viewvc/poi/site/src/documentation/content/xdocs/changes.xml?rev=1870694=1870693=1870694=diff == --- poi/site/src/documentation/content/xdocs/changes.xml (original) +++ poi/site/src/documentation/content/xdocs/changes.xml Sun Dec 1 23:08:41 2019 @@ -88,7 +88,7 @@ -Fix texture fill - scale stretched images correctly +Fix texture fill - scale stretched images correctly Add, insert and remove columns on XSLFTable Produce valid PPTX file with several chart series Add Doughnut chart data series support Added: poi/site/src/documentation/content/xdocs/components/slideshow/ppt-wmf-emf-renderer.xml URL: http://svn.apache.org/viewvc/poi/site/src/documentation/content/xdocs/components/slideshow/ppt-wmf-emf-renderer.xml?rev=1870694=auto == --- poi/site/src/documentation/content/xdocs/components/slideshow/ppt-wmf-emf-renderer.xml (added) +++ poi/site/src/documentation/content/xdocs/components/slideshow/ppt-wmf-emf-renderer.xml Sun Dec 1 23:08:41 2019 @@ -0,0 +1,160 @@ + + + + + +Rendering slideshows, WMF, EMF and EMF+ + + + +Rendering slideshows, WMF, EMF and EMF+ + +For rendering slideshow (HSLF/XSLF), WMF, EMF and EMF+ pictures, POI provides an utility class +https://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/util/PPTX2PNG.java?view=markup;> +PPTX2PNG: + + + + + + +Integrate rendering in your code + +#1 - Use PPTX2PNG via file or stdin +For file system access, you need to save your slideshow/WMF/EMF/EMF+ first to disc and then call +PPTX2PNG.main() + with the corresponding parameters. + + +for stdin access, you need to redirect System.in before: + + + + +#2 - Render WMF / EMF / EMF+ via the *Picture classes + + + + +#3 - Render slideshows directly + + + + + \ No newline at end of file Modified: poi/site/src/documentation/content/xdocs/site.xml URL: http://svn.apache.org/viewvc/poi/site/src/documentation/content/xdocs/site.xml?rev=1870694=1870693=1870694=diff == --- poi/site/src/documentation/content/xdocs/site.xml (original) +++ poi/site/src/documentation/content/xdocs/site.xml Sun Dec 1 23:08:41 2019 @@ -75,6 +75,7 @@ See http://xml.apache.org/forrest/linkin + - To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org For additional commands, e-mail: commits-h...@poi.apache.org
svn commit: r1870693 - in /poi/site/publish: ./ components/ components/diagram/ components/document/ components/hmef/ components/hpbf/ components/hpsf/ components/hsmf/ components/oxml4j/ components/p
Author: kiwiwings Date: Sun Dec 1 23:06:53 2019 New Revision: 1870693 URL: http://svn.apache.org/viewvc?rev=1870693=rev Log: Add slideshow, WMF, EMF, EMF+ rendering infos Modified: poi/site/publish/changes.html poi/site/publish/components/diagram/index.html poi/site/publish/components/document/docoverview.html poi/site/publish/components/document/index.html poi/site/publish/components/document/projectplan.html poi/site/publish/components/document/quick-guide-xwpf.html poi/site/publish/components/document/quick-guide.html poi/site/publish/components/hmef/index.html poi/site/publish/components/hpbf/file-format.html poi/site/publish/components/hpbf/index.html poi/site/publish/components/hpsf/how-to.html poi/site/publish/components/hpsf/index.html poi/site/publish/components/hpsf/internals.html poi/site/publish/components/hpsf/thumbnails.html poi/site/publish/components/hpsf/todo.html poi/site/publish/components/hsmf/index.html poi/site/publish/components/index.html poi/site/publish/components/logging.html poi/site/publish/components/oxml4j/index.html poi/site/publish/components/poi-jvm-languages.html poi/site/publish/components/poi-ruby.html poi/site/publish/components/poifs/design.html poi/site/publish/components/poifs/embeded.html poi/site/publish/components/poifs/fileformat.html poi/site/publish/components/poifs/how-to.html poi/site/publish/components/poifs/index.html poi/site/publish/components/poifs/usecases.html poi/site/publish/components/slideshow/how-to-shapes.html poi/site/publish/components/slideshow/index.html poi/site/publish/components/slideshow/ppt-file-format.html poi/site/publish/components/slideshow/quick-guide.html poi/site/publish/components/slideshow/xslf-cookbook.html poi/site/publish/components/spreadsheet/chart.html poi/site/publish/components/spreadsheet/converting.html poi/site/publish/components/spreadsheet/diagram1.html poi/site/publish/components/spreadsheet/diagrams.html poi/site/publish/components/spreadsheet/eval-devguide.html poi/site/publish/components/spreadsheet/eval.html poi/site/publish/components/spreadsheet/examples.html poi/site/publish/components/spreadsheet/excelant.html poi/site/publish/components/spreadsheet/formula.html poi/site/publish/components/spreadsheet/hacking-hssf.html poi/site/publish/components/spreadsheet/how-to.html poi/site/publish/components/spreadsheet/index.html poi/site/publish/components/spreadsheet/limitations.html poi/site/publish/components/spreadsheet/quick-guide.html poi/site/publish/components/spreadsheet/record-generator.html poi/site/publish/components/spreadsheet/use-case.html poi/site/publish/components/spreadsheet/user-defined-functions.html poi/site/publish/linkmap.html Modified: poi/site/publish/changes.html URL: http://svn.apache.org/viewvc/poi/site/publish/changes.html?rev=1870693=1870692=1870693=diff == --- poi/site/publish/changes.html (original) +++ poi/site/publish/changes.html Sun Dec 1 23:06:53 2019 @@ -205,6 +205,50 @@ document.write("Last Published: " + docu + +Version +4.1.2 (2020-01-??) + + + +Changes + + + + + + + + + +TypeBugModuleDescription + + + + + +https://bz.apache.org/bugzilla/show_bug.cgi?id=63918;>63918SL_Common XSLFFix texture fill - scale stretched images correctly + + + +XSLFAdd, insert and remove columns on XSLFTable + + + +https://bz.apache.org/bugzilla/show_bug.cgi?id=63889;>63889XDDFProduce valid PPTX file with several chart series + + + +XDDFAdd Doughnut chart data series support + + + +https://bz.apache.org/bugzilla/show_bug.cgi?id=63955;>63955HMEFHMEFContentsExtractor fails to extract content from winmail.dat + + + + + @@ -231,7 +275,7 @@ document.write("Last Published: " + docu CVE-2019-12415 - XML External Entity (XXE) Processing in Apache POI - + Changes @@ -357,7 +401,7 @@ document.write("Last Published: " + docu 4.1.0 (2019-04-09) - + Summary @@ -382,7 +426,7 @@ document.write("Last Published: " + docu Upgrade to XMLSec 2.1.2 - + Changes @@ -560,7 +604,7 @@ document.write("Last Published: " + docu 4.0.1 (2018-12-03) - + Summary @@ -571,7 +615,7 @@ document.write("Last Published: " + docu Upgrade to XMLBeans 3.0.2 - + Changes @@ -728,7 +772,7 @@ document.write("Last Published: " + docu 4.0.0 (2018-09-07) - + Summary @@ -737,7 +781,7 @@ document.write("Last Published: " + docu New OOXML schema (1.4) necessary, because of incompatible XMLBeans lo
svn commit: r1870692 - in /poi: site/src/documentation/content/xdocs/ trunk/src/scratchpad/src/org/apache/poi/hsmf/datatypes/ trunk/src/scratchpad/testcases/org/apache/poi/hmef/ trunk/src/scratchpad/t
Author: kiwiwings Date: Sun Dec 1 21:06:54 2019 New Revision: 1870692 URL: http://svn.apache.org/viewvc?rev=1870692=rev Log: #63955 - HMEFContentsExtractor fails to extract content from winmail.dat Removed: poi/trunk/src/scratchpad/testcases/org/apache/poi/hmef/HMEFTest.java Modified: poi/site/src/documentation/content/xdocs/changes.xml poi/trunk/src/scratchpad/src/org/apache/poi/hsmf/datatypes/Types.java poi/trunk/src/scratchpad/testcases/org/apache/poi/hmef/TestAttachments.java poi/trunk/src/scratchpad/testcases/org/apache/poi/hmef/TestCompressedRTF.java poi/trunk/src/scratchpad/testcases/org/apache/poi/hmef/TestHMEFMessage.java poi/trunk/src/scratchpad/testcases/org/apache/poi/hmef/attribute/TestMAPIAttributes.java poi/trunk/src/scratchpad/testcases/org/apache/poi/hmef/attribute/TestTNEFAttributes.java poi/trunk/src/scratchpad/testcases/org/apache/poi/hmef/dev/TestHMEFDumper.java Modified: poi/site/src/documentation/content/xdocs/changes.xml URL: http://svn.apache.org/viewvc/poi/site/src/documentation/content/xdocs/changes.xml?rev=1870692=1870691=1870692=diff == --- poi/site/src/documentation/content/xdocs/changes.xml (original) +++ poi/site/src/documentation/content/xdocs/changes.xml Sun Dec 1 21:06:54 2019 @@ -92,6 +92,7 @@ Add, insert and remove columns on XSLFTable Produce valid PPTX file with several chart series Add Doughnut chart data series support +HMEFContentsExtractor fails to extract content from winmail.dat Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hsmf/datatypes/Types.java URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hsmf/datatypes/Types.java?rev=1870692=1870691=1870692=diff == --- poi/trunk/src/scratchpad/src/org/apache/poi/hsmf/datatypes/Types.java (original) +++ poi/trunk/src/scratchpad/src/org/apache/poi/hsmf/datatypes/Types.java Sun Dec 1 21:06:54 2019 @@ -26,8 +26,8 @@ import java.util.Map; * http://msdn.microsoft.com/en-us/library/microsoft.exchange.data.contenttypes.tnef.tnefpropertytype%28v=EXCHG.140%29.aspx */ public final class Types { -private static Map builtInTypes = new HashMap<>(); -private static Map customTypes = new HashMap<>(); +private static final Map builtInTypes = new HashMap<>(); +private static final Map customTypes = new HashMap<>(); /** Unspecified */ public static final MAPIType UNSPECIFIED = new MAPIType(0x, @@ -119,7 +119,7 @@ public final class Types { * Is this type a fixed-length type, or a variable-length one? */ public boolean isFixedLength() { -return (length != -1) && (length <= 8); +return ((length != -1) && (length <= 8)) || (id == Types.CLS_ID.id); } public int getId() { @@ -132,8 +132,7 @@ public final class Types { @Override public String toString() { -return id + " / 0x" + asFileEnding() + " - " + name + " @ " -+ length; +return id + " / 0x" + asFileEnding() + " - " + name + " @ " + length; } /** Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hmef/TestAttachments.java URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hmef/TestAttachments.java?rev=1870692=1870691=1870692=diff == --- poi/trunk/src/scratchpad/testcases/org/apache/poi/hmef/TestAttachments.java (original) +++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hmef/TestAttachments.java Sun Dec 1 21:06:54 2019 @@ -17,101 +17,117 @@ package org.apache.poi.hmef; +import static org.junit.Assert.assertEquals; + +import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.List; import java.util.Locale; +import org.apache.poi.POIDataSamples; import org.apache.poi.util.LocaleUtil; +import org.junit.Before; +import org.junit.Test; + +public final class TestAttachments { +protected static final POIDataSamples _samples = POIDataSamples.getHMEFInstance(); + + +private HMEFMessage quick; -public final class TestAttachments extends HMEFTest { - private HMEFMessage quick; - - @Override - protected void setUp() throws Exception { - super.setUp(); - - quick = new HMEFMessage( -_samples.openResourceAsStream("quick-winmail.dat") - ); - } - - /** -* Check the file is as we expect -*/ - public void testCounts() throws Exception { - // Should have 5 attachments - assertEquals(5, quick.getAttachments().size()); - } - - /
svn commit: r1870671 - in /poi/trunk: build.gradle build.xml jenkins/create_jobs.groovy sonar/pom.xml
Author: kiwiwings Date: Sun Dec 1 11:42:09 2019 New Revision: 1870671 URL: http://svn.apache.org/viewvc?rev=1870671=rev Log: Update Jacoco version and activate it again in the Sonar run Modified: poi/trunk/build.gradle poi/trunk/build.xml poi/trunk/jenkins/create_jobs.groovy poi/trunk/sonar/pom.xml Modified: poi/trunk/build.gradle URL: http://svn.apache.org/viewvc/poi/trunk/build.gradle?rev=1870671=1870670=1870671=diff == --- poi/trunk/build.gradle (original) +++ poi/trunk/build.gradle Sun Dec 1 11:42:09 2019 @@ -145,7 +145,7 @@ subprojects { } jacoco { -toolVersion = '0.8.3' +toolVersion = '0.8.5' } // ensure the build-dir exists Modified: poi/trunk/build.xml URL: http://svn.apache.org/viewvc/poi/trunk/build.xml?rev=1870671=1870670=1870671=diff == --- poi/trunk/build.xml (original) +++ poi/trunk/build.xml Sun Dec 1 11:42:09 2019 @@ -260,8 +260,8 @@ under the License. value="${repository.m2}/maven2/org/javassist/javassist/3.21.0-GA/javassist-3.21.0-GA.jar"/> - - + + @@ -662,6 +662,7 @@ under the License. + @@ -669,6 +670,7 @@ under the License. + Modified: poi/trunk/jenkins/create_jobs.groovy URL: http://svn.apache.org/viewvc/poi/trunk/jenkins/create_jobs.groovy?rev=1870671=1870670=1870671=diff == --- poi/trunk/jenkins/create_jobs.groovy (original) +++ poi/trunk/jenkins/create_jobs.groovy Sun Dec 1 11:42:09 2019 @@ -128,8 +128,6 @@ def apicheckDesc = ''' ''' -def sonarOptions = '-Dsonar.projectKey=poi-parent -Dsonar.organization=apache -Dsonar.host.url=https://sonarcloud.io ' - def sonarDesc = ''' Findbugs report of latest build - @@ -295,7 +293,11 @@ poijobs.each { poijob -> */ maven { if (poijob.sonar) { -goals('compile sonar:sonar -Dsonar.login=${POI_SONAR_TOKEN} ' + sonarOptions) +goals('clean package sonar:sonar') +property('sonar.host.url', 'https://sonarcloud.io') +property('sonar.login', '${POI_SONAR_TOKEN}') +property('sonar.projectKey', 'poi-parent') +property('sonar.organization', 'apache') } else { goals('package') } @@ -365,7 +367,10 @@ poijobs.each { poijob -> gradle { switches('-PenableSonar') -switches('-Dsonar.login=${POI_SONAR_TOKEN} ' + sonarOptions) +switches('-Dsonar.host.url=https://sonarcloud.io') +switches('-Dsonar.login=${POI_SONAR_TOKEN}') +switches('-Dsonar.projectKey=poi-parent') +switches('-Dsonar.organization=apache') tasks('sonarqube') useWrapper(false) } Modified: poi/trunk/sonar/pom.xml URL: http://svn.apache.org/viewvc/poi/trunk/sonar/pom.xml?rev=1870671=1870670=1870671=diff == --- poi/trunk/sonar/pom.xml (original) +++ poi/trunk/sonar/pom.xml Sun Dec 1 11:42:09 2019 @@ -136,7 +136,21 @@ org.jacoco jacoco-maven-plugin -0.8.2 +0.8.5 + + + +prepare-agent + + + +report +prepare-package + +report + + + - To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org For additional commands, e-mail: commits-h...@poi.apache.org
svn commit: r1870657 - in /poi/trunk/src: java/org/apache/poi/hssf/record/ java/org/apache/poi/poifs/crypt/ java/org/apache/poi/util/ ooxml/java/org/apache/poi/xssf/extractor/
Author: kiwiwings Date: Sun Dec 1 02:05:51 2019 New Revision: 1870657 URL: http://svn.apache.org/viewvc?rev=1870657=rev Log: Sonar Fixes - fix/annotate type "vulnerability" / severity "blocker" Modified: poi/trunk/src/java/org/apache/poi/hssf/record/RecordFactoryInputStream.java poi/trunk/src/java/org/apache/poi/poifs/crypt/CryptoFunctions.java poi/trunk/src/java/org/apache/poi/poifs/crypt/Decryptor.java poi/trunk/src/java/org/apache/poi/util/StaxHelper.java poi/trunk/src/java/org/apache/poi/util/XMLHelper.java poi/trunk/src/ooxml/java/org/apache/poi/xssf/extractor/XSSFExportToXml.java Modified: poi/trunk/src/java/org/apache/poi/hssf/record/RecordFactoryInputStream.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/RecordFactoryInputStream.java?rev=1870657=1870656=1870657=diff == --- poi/trunk/src/java/org/apache/poi/hssf/record/RecordFactoryInputStream.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/record/RecordFactoryInputStream.java Sun Dec 1 02:05:51 2019 @@ -102,6 +102,7 @@ public final class RecordFactoryInputStr _lastRecord = rec; } + @SuppressWarnings({"squid:S2068"}) public RecordInputStream createDecryptingStream(InputStream original) { String userPassword = Biff8EncryptionKey.getCurrentUserPassword(); if (userPassword == null) { Modified: poi/trunk/src/java/org/apache/poi/poifs/crypt/CryptoFunctions.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/poifs/crypt/CryptoFunctions.java?rev=1870657=1870656=1870657=diff == --- poi/trunk/src/java/org/apache/poi/poifs/crypt/CryptoFunctions.java (original) +++ poi/trunk/src/java/org/apache/poi/poifs/crypt/CryptoFunctions.java Sun Dec 1 02:05:51 2019 @@ -101,6 +101,7 @@ public class CryptoFunctions { *if false the n-1 hash value is applied first * @return the hashed password */ +@SuppressWarnings({"squid:S2068"}) public static byte[] hashPassword(String password, HashAlgorithm hashAlgorithm, byte[] salt, int spinCount, boolean iteratorFirst) { // If no password was given, use the default if (password == null) { Modified: poi/trunk/src/java/org/apache/poi/poifs/crypt/Decryptor.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/poifs/crypt/Decryptor.java?rev=1870657=1870656=1870657=diff == --- poi/trunk/src/java/org/apache/poi/poifs/crypt/Decryptor.java (original) +++ poi/trunk/src/java/org/apache/poi/poifs/crypt/Decryptor.java Sun Dec 1 02:05:51 2019 @@ -33,6 +33,7 @@ import org.apache.poi.poifs.filesystem.P import org.apache.poi.util.GenericRecordUtil; public abstract class Decryptor implements Cloneable, GenericRecord { +@SuppressWarnings({"squid:S2068"}) public static final String DEFAULT_PASSWORD="VelvetSweatshop"; public static final String DEFAULT_POIFS_ENTRY="EncryptedPackage"; Modified: poi/trunk/src/java/org/apache/poi/util/StaxHelper.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/util/StaxHelper.java?rev=1870657=1870656=1870657=diff == --- poi/trunk/src/java/org/apache/poi/util/StaxHelper.java (original) +++ poi/trunk/src/java/org/apache/poi/util/StaxHelper.java Sun Dec 1 02:05:51 2019 @@ -17,6 +17,8 @@ package org.apache.poi.util; +import java.util.function.Consumer; + import javax.xml.stream.XMLEventFactory; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLOutputFactory; @@ -28,17 +30,19 @@ import javax.xml.stream.XMLOutputFactory public final class StaxHelper { private static final POILogger logger = POILogFactory.getLogger(StaxHelper.class); -private StaxHelper() {} +private StaxHelper() { +} /** * Creates a new StAX XMLInputFactory, with sensible defaults */ +@SuppressWarnings({"squid:S2755"}) public static XMLInputFactory newXMLInputFactory() { XMLInputFactory factory = XMLInputFactory.newInstance(); -trySetProperty(factory, XMLInputFactory.IS_NAMESPACE_AWARE, true); -trySetProperty(factory, XMLInputFactory.IS_VALIDATING, false); -trySetProperty(factory, XMLInputFactory.SUPPORT_DTD, false); -trySetProperty(factory, XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false); +trySet(XMLInputFactory.IS_NAMESPACE_AWARE, (n) -> factory.setProperty(n, true)); +trySet(XMLInputFactory.IS_VALIDATING, (n) -> factory.setProperty(n, false)); +trySe
svn commit: r1870655 - in /poi/trunk/src: examples/src/org/apache/poi/hssf/view/brush/ examples/src/org/apache/poi/ss/examples/html/ java/org/apache/poi/ddf/ java/org/apache/poi/hpsf/ java/org/apache/
Author: kiwiwings Date: Sun Dec 1 00:07:48 2019 New Revision: 1870655 URL: http://svn.apache.org/viewvc?rev=1870655=rev Log: change package.html to package-info.java Added: poi/trunk/src/examples/src/org/apache/poi/hssf/view/brush/package-info.java - copied, changed from r1870654, poi/trunk/src/examples/src/org/apache/poi/hssf/view/brush/package.html poi/trunk/src/examples/src/org/apache/poi/ss/examples/html/package-info.java - copied, changed from r1870654, poi/trunk/src/examples/src/org/apache/poi/ss/examples/html/package.html poi/trunk/src/java/org/apache/poi/ddf/package-info.java - copied, changed from r1870654, poi/trunk/src/java/org/apache/poi/ddf/package.html poi/trunk/src/java/org/apache/poi/hpsf/package-info.java - copied, changed from r1870654, poi/trunk/src/java/org/apache/poi/hpsf/package.html poi/trunk/src/java/org/apache/poi/hpsf/wellknown/package-info.java - copied, changed from r1870654, poi/trunk/src/java/org/apache/poi/hpsf/wellknown/package.html poi/trunk/src/java/org/apache/poi/hssf/dev/package-info.java - copied, changed from r1870654, poi/trunk/src/java/org/apache/poi/hssf/dev/package.html poi/trunk/src/java/org/apache/poi/hssf/eventusermodel/package-info.java - copied, changed from r1870654, poi/trunk/src/java/org/apache/poi/hssf/eventusermodel/package.html poi/trunk/src/java/org/apache/poi/hssf/model/package-info.java - copied, changed from r1870654, poi/trunk/src/java/org/apache/poi/hssf/model/package.html poi/trunk/src/java/org/apache/poi/hssf/package-info.java - copied, changed from r1870654, poi/trunk/src/java/org/apache/poi/hssf/package.html poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/package-info.java - copied, changed from r1870654, poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/package.html poi/trunk/src/java/org/apache/poi/hssf/record/package-info.java - copied, changed from r1870654, poi/trunk/src/java/org/apache/poi/hssf/record/package.html poi/trunk/src/java/org/apache/poi/hssf/usermodel/package-info.java - copied, changed from r1870654, poi/trunk/src/java/org/apache/poi/hssf/usermodel/package.html poi/trunk/src/java/org/apache/poi/hssf/util/package-info.java - copied, changed from r1870654, poi/trunk/src/java/org/apache/poi/hssf/util/package.html poi/trunk/src/java/org/apache/poi/ss/format/package-info.java - copied, changed from r1870654, poi/trunk/src/java/org/apache/poi/ss/format/package.html poi/trunk/src/java/org/apache/poi/ss/formula/package-info.java - copied, changed from r1870654, poi/trunk/src/java/org/apache/poi/ss/formula/package.html poi/trunk/src/java/org/apache/poi/ss/formula/ptg/package-info.java - copied, changed from r1870654, poi/trunk/src/java/org/apache/poi/ss/formula/ptg/package.html poi/trunk/src/java/org/apache/poi/util/package-info.java - copied, changed from r1870654, poi/trunk/src/java/org/apache/poi/util/package.html poi/trunk/src/ooxml/java/org/apache/poi/xssf/binary/package-info.java - copied, changed from r1870654, poi/trunk/src/ooxml/java/org/apache/poi/xssf/binary/package.html poi/trunk/src/ooxml/java/org/apache/poi/xwpf/package-info.java - copied, changed from r1870654, poi/trunk/src/ooxml/java/org/apache/poi/xwpf/package.html Removed: poi/trunk/src/examples/src/org/apache/poi/hssf/view/brush/package.html poi/trunk/src/examples/src/org/apache/poi/ss/examples/html/package.html poi/trunk/src/java/org/apache/poi/ddf/package.html poi/trunk/src/java/org/apache/poi/hpsf/package.html poi/trunk/src/java/org/apache/poi/hpsf/wellknown/package.html poi/trunk/src/java/org/apache/poi/hssf/dev/package.html poi/trunk/src/java/org/apache/poi/hssf/eventusermodel/package.html poi/trunk/src/java/org/apache/poi/hssf/model/package.html poi/trunk/src/java/org/apache/poi/hssf/package.html poi/trunk/src/java/org/apache/poi/hssf/record/aggregates/package.html poi/trunk/src/java/org/apache/poi/hssf/record/package.html poi/trunk/src/java/org/apache/poi/hssf/usermodel/package.html poi/trunk/src/java/org/apache/poi/hssf/util/package.html poi/trunk/src/java/org/apache/poi/ss/format/package.html poi/trunk/src/java/org/apache/poi/ss/formula/package.html poi/trunk/src/java/org/apache/poi/ss/formula/ptg/package.html poi/trunk/src/java/org/apache/poi/util/package.html poi/trunk/src/ooxml/java/org/apache/poi/xssf/binary/package.html poi/trunk/src/ooxml/java/org/apache/poi/xwpf/package.html Copied: poi/trunk/src/examples/src/org/apache/poi/hssf/view/brush/package-info.java (from r1870654, poi/trunk/src/examples/src/org/apache/poi/hssf/view/brush/package.html) URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/hssf/view/brush/package-info.java?p2=poi/trunk/src/examples/src/org/apache/poi/hssf/view/brush/package-info.java=poi/trunk/src
svn commit: r1870653 - in /poi/trunk/src: examples/src/org/apache/poi/crypt/examples/ examples/src/org/apache/poi/hslf/examples/ examples/src/org/apache/poi/hssf/view/ examples/src/org/apache/poi/ss/e
Author: kiwiwings Date: Sat Nov 30 23:00:08 2019 New Revision: 1870653 URL: http://svn.apache.org/viewvc?rev=1870653=rev Log: Sonar fixes - use try-with-resources Modified: poi/trunk/src/examples/src/org/apache/poi/crypt/examples/OOXMLPasswordsTry.java poi/trunk/src/examples/src/org/apache/poi/hslf/examples/DataExtraction.java poi/trunk/src/examples/src/org/apache/poi/hslf/examples/Hyperlinks.java poi/trunk/src/examples/src/org/apache/poi/hssf/view/SViewer.java poi/trunk/src/examples/src/org/apache/poi/ss/examples/ConditionalFormats.java poi/trunk/src/examples/src/org/apache/poi/xslf/usermodel/ChartFromScratch.java poi/trunk/src/java/org/apache/poi/hssf/dev/BiffDrawingToXml.java poi/trunk/src/java/org/apache/poi/hssf/extractor/ExcelExtractor.java poi/trunk/src/java/org/apache/poi/poifs/crypt/standard/StandardDecryptor.java poi/trunk/src/java/org/apache/poi/poifs/crypt/standard/StandardEncryptor.java poi/trunk/src/java/org/apache/poi/poifs/dev/POIFSLister.java poi/trunk/src/java/org/apache/poi/poifs/filesystem/Ole10Native.java poi/trunk/src/java/org/apache/poi/poifs/macros/VBAMacroExtractor.java poi/trunk/src/ooxml/java/org/apache/poi/ooxml/util/PackageHelper.java poi/trunk/src/ooxml/java/org/apache/poi/poifs/crypt/temp/AesZipFileZipEntrySource.java poi/trunk/src/ooxml/java/org/apache/poi/xslf/util/PPTX2PNG.java poi/trunk/src/scratchpad/src/org/apache/poi/hdgf/dev/VSDDumper.java poi/trunk/src/scratchpad/src/org/apache/poi/hslf/dev/SlideIdListing.java poi/trunk/src/scratchpad/src/org/apache/poi/hslf/extractor/ImageExtractor.java poi/trunk/src/scratchpad/src/org/apache/poi/hslf/extractor/PowerPointExtractor.java poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/CurrentUserAtom.java poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlideShowImpl.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocumentCore.java poi/trunk/src/testcases/org/apache/poi/hssf/dev/TestBiffDrawingToXml.java Modified: poi/trunk/src/examples/src/org/apache/poi/crypt/examples/OOXMLPasswordsTry.java URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/crypt/examples/OOXMLPasswordsTry.java?rev=1870653=1870652=1870653=diff == --- poi/trunk/src/examples/src/org/apache/poi/crypt/examples/OOXMLPasswordsTry.java (original) +++ poi/trunk/src/examples/src/org/apache/poi/crypt/examples/OOXMLPasswordsTry.java Sat Nov 30 23:00:08 2019 @@ -62,30 +62,30 @@ public class OOXMLPasswordsTry implement } public String tryAll(File wordfile) throws IOException, GeneralSecurityException { -// Load -BufferedReader r = new BufferedReader(new FileReader(wordfile)); -long start = System.currentTimeMillis(); -int count = 0; - -// Try each password in turn, reporting progress String valid = null; -String password; -while ((password = r.readLine()) != null) { -if (isValid(password)) { -valid = password; -break; -} -count++; - -if (count % 1000 == 0) { -int secs = (int)((System.currentTimeMillis() - start) / 1000); -System.out.println("Done " + count + " passwords, " + - secs + " seconds, last password " + password); +// Load +try (BufferedReader r = new BufferedReader(new FileReader(wordfile))) { +long start = System.currentTimeMillis(); +int count = 0; + +// Try each password in turn, reporting progress +String password; +while ((password = r.readLine()) != null) { +if (isValid(password)) { +valid = password; +break; +} +count++; + +if (count % 1000 == 0) { +int secs = (int) ((System.currentTimeMillis() - start) / 1000); +System.out.println("Done " + count + " passwords, " + + secs + " seconds, last password " + password); +} } + } - // Tidy and return (null if no match) -r.close(); return valid; } public boolean isValid(String password) throws GeneralSecurityException { @@ -103,10 +103,11 @@ public class OOXMLPasswordsTry implement System.out.println("Trying passwords from " + words + " against " + ooxml); System.out.println(); - -OOXMLPasswordsTry pt = new OOXMLPasswordsTry(ooxml); -String password = pt.tryAll(words); -pt.close(); + +String password; +try (OOXMLPasswords
svn commit: r1870600 - in /poi/trunk/src: java/org/apache/poi/hssf/extractor/ java/org/apache/poi/hssf/record/ java/org/apache/poi/hssf/usermodel/ java/org/apache/poi/poifs/dev/ java/org/apache/poi/po
Author: kiwiwings Date: Fri Nov 29 23:57:35 2019 New Revision: 1870600 URL: http://svn.apache.org/viewvc?rev=1870600=rev Log: Replace StringBuffer with StringBuilder Modified: poi/trunk/src/java/org/apache/poi/hssf/extractor/OldExcelExtractor.java poi/trunk/src/java/org/apache/poi/hssf/record/PageBreakRecord.java poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFPalette.java poi/trunk/src/java/org/apache/poi/poifs/dev/POIFSViewEngine.java poi/trunk/src/java/org/apache/poi/poifs/dev/POIFSViewer.java poi/trunk/src/java/org/apache/poi/poifs/filesystem/DocumentDescriptor.java poi/trunk/src/java/org/apache/poi/poifs/filesystem/POIFSDocumentPath.java poi/trunk/src/java/org/apache/poi/ss/formula/SheetIdentifier.java poi/trunk/src/java/org/apache/poi/ss/formula/SheetRangeIdentifier.java poi/trunk/src/java/org/apache/poi/ss/formula/functions/Countif.java poi/trunk/src/java/org/apache/poi/util/GenericRecordJsonWriter.java poi/trunk/src/java/org/apache/poi/util/GenericRecordXmlWriter.java poi/trunk/src/scratchpad/src/org/apache/poi/hmef/attribute/TNEFProperty.java poi/trunk/src/scratchpad/src/org/apache/poi/hpbf/dev/HPBFDumper.java poi/trunk/src/scratchpad/src/org/apache/poi/hslf/extractor/QuickButCruddyTextExtractor.java poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/AnimationInfoAtom.java poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/ExMediaAtom.java poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/ExOleObjAtom.java poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/HeadersFootersAtom.java poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/TextBytesAtom.java poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/TextCharsAtom.java poi/trunk/src/scratchpad/src/org/apache/poi/hsmf/datatypes/ByteChunk.java poi/trunk/src/scratchpad/src/org/apache/poi/hsmf/datatypes/MAPIProperty.java poi/trunk/src/scratchpad/src/org/apache/poi/hsmf/extractor/OutlookTextExtactor.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordUtils.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/extractor/Word6Extractor.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/extractor/WordExtractor.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/EscherRecordHolder.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/FSPATable.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/FLDAbstractType.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/types/TLPAbstractType.java poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/BorderCode.java poi/trunk/src/testcases/org/apache/poi/hssf/record/TestTextObjectRecord.java Modified: poi/trunk/src/java/org/apache/poi/hssf/extractor/OldExcelExtractor.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/extractor/OldExcelExtractor.java?rev=1870600=1870599=1870600=diff == --- poi/trunk/src/java/org/apache/poi/hssf/extractor/OldExcelExtractor.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/extractor/OldExcelExtractor.java Fri Nov 29 23:57:35 2019 @@ -40,7 +40,11 @@ import org.apache.poi.hssf.record.OldShe import org.apache.poi.hssf.record.OldStringRecord; import org.apache.poi.hssf.record.RKRecord; import org.apache.poi.hssf.record.RecordInputStream; -import org.apache.poi.poifs.filesystem.*; +import org.apache.poi.poifs.filesystem.DirectoryNode; +import org.apache.poi.poifs.filesystem.DocumentNode; +import org.apache.poi.poifs.filesystem.FileMagic; +import org.apache.poi.poifs.filesystem.NotOLE2FileException; +import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.util.IOUtils; @@ -219,7 +223,7 @@ public class OldExcelExtractor implement * @return the text contents of the file */ public String getText() { -StringBuffer text = new StringBuffer(); +StringBuilder text = new StringBuilder(); // To track formats and encodings CodepageRecord codepage = null; @@ -306,7 +310,7 @@ public class OldExcelExtractor implement } } -protected void handleNumericCell(StringBuffer text, double value) { +protected void handleNumericCell(StringBuilder text, double value) { // TODO Need to fetch / use format strings text.append(value); text.append('\n'); Modified: poi/trunk/src/java/org/apache/poi/hssf/record/PageBreakRecord.java URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/PageBreakRecord.java?rev=1870600=1870599=1870600=diff == --- poi/trunk/src/java/org/apache/poi/hssf/record/PageBreakRecord.java (original) +++ poi/trunk/src/java/org/apache/poi/hssf/record