]> source.dussan.org Git - poi.git/commitdiff
Sonar fixes
authorAndreas Beeker <kiwiwings@apache.org>
Sat, 26 Dec 2020 00:08:19 +0000 (00:08 +0000)
committerAndreas Beeker <kiwiwings@apache.org>
Sat, 26 Dec 2020 00:08:19 +0000 (00:08 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1884807 13f79535-47bb-0310-9956-ffa450edef68

61 files changed:
src/examples/src/org/apache/poi/examples/xslf/LinkVideoToPptx.java
src/excelant/java/org/apache/poi/ss/excelant/ExcelAntUserDefinedFunction.java
src/java/org/apache/poi/extractor/ExtractorFactory.java
src/java/org/apache/poi/extractor/MainExtractorFactory.java
src/java/org/apache/poi/hssf/dev/ReSave.java
src/java/org/apache/poi/hssf/model/InternalWorkbook.java
src/java/org/apache/poi/hssf/record/GridsetRecord.java
src/java/org/apache/poi/hssf/record/PageBreakRecord.java
src/java/org/apache/poi/hssf/record/PrecisionRecord.java
src/java/org/apache/poi/hssf/record/TabIdRecord.java
src/java/org/apache/poi/hssf/record/aggregates/PageSettingsBlock.java
src/java/org/apache/poi/hssf/record/common/PhRun.java
src/java/org/apache/poi/poifs/common/POIFSConstants.java
src/java/org/apache/poi/poifs/crypt/agile/AgileDecryptor.java
src/java/org/apache/poi/poifs/crypt/binaryrc4/BinaryRC4Decryptor.java
src/java/org/apache/poi/poifs/filesystem/FileMagic.java
src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java
src/java/org/apache/poi/sl/draw/DrawTextParagraph.java
src/java/org/apache/poi/sl/usermodel/SlideShowFactory.java
src/java/org/apache/poi/ss/formula/SheetIdentifier.java
src/java/org/apache/poi/ss/formula/SheetRangeIdentifier.java
src/java/org/apache/poi/ss/formula/atp/YearFracCalculator.java
src/java/org/apache/poi/ss/formula/functions/LinearRegressionFunction.java
src/java/org/apache/poi/ss/formula/functions/Trend.java
src/java/org/apache/poi/ss/usermodel/WorkbookFactory.java
src/java/org/apache/poi/ss/util/cellwalk/CellWalk.java
src/java/org/apache/poi/util/DrawingDump.java
src/java/org/apache/poi/util/IOUtils.java
src/ooxml/java/org/apache/poi/ooxml/extractor/POIXMLExtractorFactory.java
src/ooxml/java/org/apache/poi/ooxml/util/IdentifierManager.java
src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureLine.java
src/ooxml/java/org/apache/poi/xdgf/usermodel/section/GeometryRowTypes.java
src/ooxml/java/org/apache/poi/xdgf/usermodel/section/XDGFSectionTypes.java
src/ooxml/java/org/apache/poi/xdgf/usermodel/section/geometry/EllipticalArcTo.java
src/ooxml/java/org/apache/poi/xslf/util/DummyGraphics2d.java
src/ooxml/java/org/apache/poi/xssf/binary/XSSFBCellHeader.java
src/ooxml/java/org/apache/poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java
src/ooxml/testcases/org/apache/poi/extractor/ooxml/TestExtractorFactory.java
src/scratchpad/src/org/apache/poi/extractor/ole2/OLE2ScratchpadExtractorFactory.java
src/scratchpad/src/org/apache/poi/hemf/record/emfplus/HemfPlusBrush.java
src/scratchpad/src/org/apache/poi/hemf/record/emfplus/HemfPlusDraw.java
src/scratchpad/src/org/apache/poi/hemf/record/emfplus/HemfPlusObject.java
src/scratchpad/src/org/apache/poi/hslf/record/ExEmbed.java
src/scratchpad/src/org/apache/poi/hslf/record/TextHeaderAtom.java
src/scratchpad/src/org/apache/poi/hsmf/datatypes/AttachmentChunks.java
src/scratchpad/src/org/apache/poi/hsmf/datatypes/NameIdChunks.java
src/scratchpad/src/org/apache/poi/hsmf/datatypes/RecipientChunks.java
src/scratchpad/src/org/apache/poi/hwmf/draw/HwmfGraphics.java
src/scratchpad/src/org/apache/poi/hwmf/record/HwmfBinaryRasterOp.java
src/scratchpad/src/org/apache/poi/hwmf/record/HwmfEscape.java
src/scratchpad/src/org/apache/poi/hwmf/record/HwmfHatchStyle.java
src/scratchpad/src/org/apache/poi/hwmf/record/HwmfPenStyle.java
src/scratchpad/src/org/apache/poi/hwmf/record/HwmfTernaryRasterOp.java
src/scratchpad/src/org/apache/poi/hwpf/converter/FontReplacer.java
src/scratchpad/src/org/apache/poi/hwpf/usermodel/Picture.java
src/scratchpad/testcases/org/apache/poi/hsmf/TestBasics.java
src/scratchpad/testcases/org/apache/poi/hsmf/TestNameIdChunks.java
src/scratchpad/testcases/org/apache/poi/hsmf/datatypes/TestSorters.java
src/scratchpad/testcases/org/apache/poi/hsmf/parsers/TestPOIFSChunkParser.java
src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
src/testcases/org/apache/poi/ss/formula/functions/TestSumifs.java

index d2988478d289b248eb86dc409d2919100d9e04df..9fcf3120117401fad35b03f2fb55f98a2db25a7d 100644 (file)
@@ -52,66 +52,69 @@ import org.openxmlformats.schemas.presentationml.x2006.main.STTLTimeNodeFillType
 import org.openxmlformats.schemas.presentationml.x2006.main.STTLTimeNodeRestartType;
 import org.openxmlformats.schemas.presentationml.x2006.main.STTLTimeNodeType;
 
-public class LinkVideoToPptx {
-    public static void main(String[] args) throws IOException, URISyntaxException {
-        XMLSlideShow pptx = new XMLSlideShow();
-
-        String videoFileName = "file_example_MP4_640_3MG.mp4";
-        XSLFSlide slide1 = pptx.createSlide();
-
-        PackagePart pp = slide1.getPackagePart();
-        URI mp4uri = new URI("./"+videoFileName);
-        PackageRelationship prsEmbed1 = pp.addRelationship(mp4uri, TargetMode.EXTERNAL, "http://schemas.microsoft.com/office/2007/relationships/media");
-        PackageRelationship prsExec1 = pp.addRelationship(mp4uri, TargetMode.EXTERNAL, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/video");
-
-
-        File previewJpg = new File("preview.jpg");
-        XSLFPictureData snap = pptx.addPicture(previewJpg, PictureData.PictureType.JPEG);
-        XSLFPictureShape pic1 = slide1.createPicture(snap);
-        pic1.setAnchor(new Rectangle(100, 100, 500, 400));
-
-        CTPicture xpic1 = (CTPicture)pic1.getXmlObject();
-        CTHyperlink link1 = xpic1.getNvPicPr().getCNvPr().addNewHlinkClick();
-        link1.setId("");
-        link1.setAction("ppaction://media");
-
-
-        CTApplicationNonVisualDrawingProps nvPr = xpic1.getNvPicPr().getNvPr();
-        nvPr.addNewVideoFile().setLink(prsExec1.getId());
-        CTExtension ext = nvPr.addNewExtLst().addNewExt();
-        ext.setUri("{DAA4B4D4-6D71-4841-9C94-3DE7FCFB9230}");
-
-        String p14Ns = "http://schemas.microsoft.com/office/powerpoint/2010/main";
-        XmlCursor cur = ext.newCursor();
-        cur.toEndToken();
-        cur.beginElement(new QName(p14Ns, "media", "p14"));
-        cur.insertNamespace("p14", p14Ns);
-        cur.insertAttributeWithValue(new QName(CORE_PROPERTIES_ECMA376_NS, "link"), prsEmbed1.getId());
-        cur.dispose();
-
-
-        CTSlide xslide = slide1.getXmlObject();
-        CTTimeNodeList ctnl;
-        if (!xslide.isSetTiming()) {
-            CTTLCommonTimeNodeData ctn = xslide.addNewTiming().addNewTnLst().addNewPar().addNewCTn();
-            ctn.setDur(STTLTimeIndefinite.INDEFINITE);
-            ctn.setRestart(STTLTimeNodeRestartType.NEVER);
-            ctn.setNodeType(STTLTimeNodeType.TM_ROOT);
-            ctnl = ctn.addNewChildTnLst();
-        } else {
-            ctnl = xslide.getTiming().getTnLst().getParArray(0).getCTn().getChildTnLst();
-        }
-        CTTLCommonMediaNodeData cmedia = ctnl.addNewVideo().addNewCMediaNode();
-        cmedia.setVol(80000);
-        CTTLCommonTimeNodeData ctn = cmedia.addNewCTn();
-        ctn.setFill(STTLTimeNodeFillType.HOLD);
-        ctn.setDisplay(false);
-        ctn.addNewStCondLst().addNewCond().setDelay(STTLTimeIndefinite.INDEFINITE);
-        cmedia.addNewTgtEl().addNewSpTgt().setSpid(pic1.getShapeId());
+public final class LinkVideoToPptx {
+    private LinkVideoToPptx() {}
 
-
-        try (FileOutputStream fos = new FileOutputStream("mp4test/mp4test-poi.pptx")) {
-            pptx.write(fos);
+    public static void main(String[] args) throws IOException, URISyntaxException {
+        try (XMLSlideShow pptx = new XMLSlideShow()) {
+
+            String videoFileName = "file_example_MP4_640_3MG.mp4";
+            XSLFSlide slide1 = pptx.createSlide();
+
+            PackagePart pp = slide1.getPackagePart();
+            URI mp4uri = new URI("./" + videoFileName);
+            PackageRelationship prsEmbed1 = pp.addRelationship(mp4uri, TargetMode.EXTERNAL, "http://schemas.microsoft.com/office/2007/relationships/media");
+            PackageRelationship prsExec1 = pp.addRelationship(mp4uri, TargetMode.EXTERNAL, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/video");
+
+
+            File previewJpg = new File("preview.jpg");
+            XSLFPictureData snap = pptx.addPicture(previewJpg, PictureData.PictureType.JPEG);
+            XSLFPictureShape pic1 = slide1.createPicture(snap);
+            pic1.setAnchor(new Rectangle(100, 100, 500, 400));
+
+            CTPicture xpic1 = (CTPicture) pic1.getXmlObject();
+            CTHyperlink link1 = xpic1.getNvPicPr().getCNvPr().addNewHlinkClick();
+            link1.setId("");
+            link1.setAction("ppaction://media");
+
+
+            CTApplicationNonVisualDrawingProps nvPr = xpic1.getNvPicPr().getNvPr();
+            nvPr.addNewVideoFile().setLink(prsExec1.getId());
+            CTExtension ext = nvPr.addNewExtLst().addNewExt();
+            ext.setUri("{DAA4B4D4-6D71-4841-9C94-3DE7FCFB9230}");
+
+            String p14Ns = "http://schemas.microsoft.com/office/powerpoint/2010/main";
+            XmlCursor cur = ext.newCursor();
+            cur.toEndToken();
+            cur.beginElement(new QName(p14Ns, "media", "p14"));
+            cur.insertNamespace("p14", p14Ns);
+            cur.insertAttributeWithValue(new QName(CORE_PROPERTIES_ECMA376_NS, "link"), prsEmbed1.getId());
+            cur.dispose();
+
+
+            CTSlide xslide = slide1.getXmlObject();
+            CTTimeNodeList ctnl;
+            if (!xslide.isSetTiming()) {
+                CTTLCommonTimeNodeData ctn = xslide.addNewTiming().addNewTnLst().addNewPar().addNewCTn();
+                ctn.setDur(STTLTimeIndefinite.INDEFINITE);
+                ctn.setRestart(STTLTimeNodeRestartType.NEVER);
+                ctn.setNodeType(STTLTimeNodeType.TM_ROOT);
+                ctnl = ctn.addNewChildTnLst();
+            } else {
+                ctnl = xslide.getTiming().getTnLst().getParArray(0).getCTn().getChildTnLst();
+            }
+            CTTLCommonMediaNodeData cmedia = ctnl.addNewVideo().addNewCMediaNode();
+            cmedia.setVol(80000);
+            CTTLCommonTimeNodeData ctn = cmedia.addNewCTn();
+            ctn.setFill(STTLTimeNodeFillType.HOLD);
+            ctn.setDisplay(false);
+            ctn.addNewStCondLst().addNewCond().setDelay(STTLTimeIndefinite.INDEFINITE);
+            cmedia.addNewTgtEl().addNewSpTgt().setSpid(pic1.getShapeId());
+
+
+            try (FileOutputStream fos = new FileOutputStream("mp4test/mp4test-poi.pptx")) {
+                pptx.write(fos);
+            }
         }
     }
 }
index 5c19912b35e278edf88f3224aaf5170373b72555..f96a01f9965ba1858ce94037bb8876c283a1e809 100644 (file)
@@ -22,19 +22,19 @@ import org.apache.tools.ant.taskdefs.Typedef;
 /**
  * This class encapsulates the Strings necessary to create the User Defined
  * Function instances that will be passed to POI's Evaluator instance.
- * 
+ *
  * @author Jon Svede ( jon [at] loquatic [dot] com )
  * @author Brian Bush ( brian [dot] bush [at] nrel [dot] gov )
  *
  */
 public class ExcelAntUserDefinedFunction extends Typedef {
 
-       
-       public String functionAlias ;
-       
-       public String className ;
 
-       
+       private String functionAlias ;
+
+       private String className ;
+
+
        public ExcelAntUserDefinedFunction() {}
 
        protected String getFunctionAlias() {
index 0833535189f19f91947b240c13f09b1709ea045c..b45b5e29e25bbe5e8987d3364cd8beb8428bcac4 100644 (file)
@@ -178,6 +178,7 @@ public final class ExtractorFactory {
         return createExtractor(file, getCurrentUserPassword());
     }
 
+    @SuppressWarnings({"java:S2095"})
     public static POITextExtractor createExtractor(File file, String password) throws IOException {
         if (file.length() == 0) {
             throw new EmptyFileException();
@@ -318,6 +319,6 @@ public final class ExtractorFactory {
     }
 
     public static void removeProvider(Class<? extends ExtractorProvider> provider){
-        Singleton.INSTANCE.provider.removeIf(p -> p.getClass().getName().equals(provider.getName()));
+        Singleton.INSTANCE.provider.removeIf(p -> p.getClass().isAssignableFrom(provider));
     }
 }
index 7f8733eecf19b6aaf6de609af4500332e4d98e9e..d485f864ff86c851a64dbe8963b36e591688b975 100644 (file)
@@ -41,6 +41,7 @@ public class MainExtractorFactory implements ExtractorProvider {
         return FileMagic.OLE2 == fm;
     }
 
+    @SuppressWarnings({"java:S2095"})
     @Override
     public POITextExtractor create(File file, String password) throws IOException {
         return create(new POIFSFileSystem(file, true).getRoot(), password);
index 7f1988897386e4329546b944084b58c545911bd5..2f31eb48d86b145dc1e79606b79b407050f94093 100644 (file)
@@ -37,7 +37,6 @@ public class ReSave {
     public static void main(String[] args) throws Exception {
         boolean initDrawing = false;
         boolean saveToMemory = false;
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
         for(String filename : args) {
             if(filename.equals("-dg")) {
                 initDrawing = true;
@@ -45,11 +44,10 @@ public class ReSave {
                 saveToMemory = true;
             } else {
                 System.out.print("reading " + filename + "...");
-                FileInputStream is = new FileInputStream(filename);
-                HSSFWorkbook wb = new HSSFWorkbook(is);
-                try {
+                try (FileInputStream is = new FileInputStream(filename);
+                     HSSFWorkbook wb = new HSSFWorkbook(is)) {
                     System.out.println("done");
-    
+
                     for(int i = 0; i < wb.getNumberOfSheets(); i++){
                         HSSFSheet sheet = wb.getSheetAt(i);
                         if(initDrawing) {
@@ -57,25 +55,15 @@ public class ReSave {
                         }
                     }
 
-                    OutputStream os;
-                    if (saveToMemory) {
-                        bos.reset();
-                        os = bos;
-                    } else {
-                        String outputFile = filename.replace(".xls", "-saved.xls");
+                    String outputFile = filename.replace(".xls", "-saved.xls");
+                    if (!saveToMemory) {
                         System.out.print("saving to " + outputFile + "...");
-                        os = new FileOutputStream(outputFile);
                     }
-                    
-                    try {
+
+                    try (OutputStream os = saveToMemory ? new ByteArrayOutputStream() : new FileOutputStream(outputFile)) {
                         wb.write(os);
-                    } finally {
-                        os.close();
                     }
                     System.out.println("done");
-                } finally {
-                    wb.close();
-                    is.close();
                 }
             }
         }
index 8ddb368e0a9d16654be189f254da45908e70c2dc..e1d4f8571825aaf92377fb964ef96de80d88fef7 100644 (file)
@@ -1052,7 +1052,7 @@ public final class InternalWorkbook {
         // Can be a few short if new sheets were added
         if(records.getTabpos() > 0) {
             TabIdRecord tir = ( TabIdRecord ) records.get(records.getTabpos());
-            if(tir._tabids.length < boundsheets.size()) {
+            if(tir.getTabIdSize() < boundsheets.size()) {
                 fixTabIdRecord();
             }
         }
index d5f705071f60c7cf586b225b1daed071a1c184ed..b5cfd92055cd30491d4c67efa2b1a5ab822bb0e1 100644 (file)
@@ -30,7 +30,7 @@ import org.apache.poi.util.LittleEndianOutput;
  */
 public final class GridsetRecord extends StandardRecord {
     public static final short sid = 0x82;
-    public short              field_1_gridset_flag;
+    private short field_1_gridset_flag;
 
     public GridsetRecord() {}
 
index 99369d9ae323caaf403623edff24dce04ff0ae01..402c04d02cdd04224c27e96719f5d9d21c8a7836 100644 (file)
@@ -53,9 +53,9 @@ public abstract class PageBreakRecord extends StandardRecord {
     public static final class Break implements GenericRecord {
 
         public static final int ENCODED_SIZE = 6;
-        public int main;
-        public int subFrom;
-        public int subTo;
+        private int main;
+        private int subFrom;
+        private int subTo;
 
         public Break(Break other) {
             main = other.main;
@@ -75,6 +75,18 @@ public abstract class PageBreakRecord extends StandardRecord {
             subTo = in.readUShort();
         }
 
+        public int getMain() {
+            return main;
+        }
+
+        public int getSubFrom() {
+            return subFrom;
+        }
+
+        public int getSubTo() {
+            return subTo;
+        }
+
         public void serialize(LittleEndianOutput out) {
             out.writeShort(main + 1);
             out.writeShort(subFrom);
index 49cbf31de526950ea7479fdf6479b054f84b52d5..27471b935fac180aad2f0c13a1bf452a7d9c133f 100644 (file)
@@ -32,7 +32,7 @@ import org.apache.poi.util.LittleEndianOutput;
 public final class PrecisionRecord extends StandardRecord {
     public static final short sid = 0xE;
 
-    public short field_1_precision;
+    private short field_1_precision;
 
     public PrecisionRecord() {}
 
index 2fc905bb9e5044d9601c8607006e80e33a19b7f8..c76a396bd73158abf7e2f1bf6a1986b196626be2 100644 (file)
@@ -30,7 +30,7 @@ public final class TabIdRecord extends StandardRecord {
     public static final short sid = 0x013D;
     private static final short[] EMPTY_SHORT_ARRAY = { };
 
-    public short[] _tabids;
+    private short[] _tabids;
 
     public TabIdRecord() {
         _tabids = EMPTY_SHORT_ARRAY;
@@ -63,6 +63,14 @@ public final class TabIdRecord extends StandardRecord {
         }
     }
 
+    public int getTabIdSize() {
+        return _tabids.length;
+    }
+
+    public short getTabIdAt(int index) {
+        return _tabids[index];
+    }
+
     protected int getDataSize() {
         return _tabids.length * 2;
     }
index 78b93a0e41287682e9851427f29dc6fbcc9072b3..c8d931f3495dd5ea8829546dabc2f30be0c4dfec 100644 (file)
@@ -121,7 +121,7 @@ public final class PageSettingsBlock extends RecordAggregate {
 
     /**
      * @param sid the record sid
-     * 
+     *
      * @return <code>true</code> if the specified Record sid is one belonging to the
      * 'Page Settings Block'.
      */
@@ -486,7 +486,7 @@ public final class PageSettingsBlock extends RecordAggregate {
         while(iterator.hasNext())
         {
             PageBreakRecord.Break breakItem = iterator.next();
-            int breakLocation = breakItem.main;
+            int breakLocation = breakItem.getMain();
             boolean inStart = (breakLocation >= start);
             boolean inEnd = (breakLocation <= stop);
             if(inStart && inEnd) {
@@ -497,8 +497,8 @@ public final class PageSettingsBlock extends RecordAggregate {
         iterator = shiftedBreak.iterator();
         while (iterator.hasNext()) {
             PageBreakRecord.Break breakItem = iterator.next();
-            breaks.removeBreak(breakItem.main);
-            breaks.addBreak((short)(breakItem.main+count), breakItem.subFrom, breakItem.subTo);
+            breaks.removeBreak(breakItem.getMain());
+            breaks.addBreak((short)(breakItem.getMain()+count), breakItem.getSubFrom(), breakItem.getSubTo());
         }
     }
 
@@ -526,9 +526,9 @@ public final class PageSettingsBlock extends RecordAggregate {
 
     /**
      * Queries if the specified row has a page break
-     * 
+     *
      * @param row the row to check for
-     * 
+     *
      * @return true if the specified row has a page break
      */
     public boolean isRowBroken(int row) {
@@ -538,7 +538,7 @@ public final class PageSettingsBlock extends RecordAggregate {
 
     /**
      * Queries if the specified column has a page break
-     * 
+     *
      * @param column the column to check for
      *
      * @return <code>true</code> if the specified column has a page break
@@ -606,7 +606,7 @@ public final class PageSettingsBlock extends RecordAggregate {
     /**
      * HEADERFOOTER is new in 2007.  Some apps seem to have scattered this record long after
      * the {@link PageSettingsBlock} where it belongs.
-     * 
+     *
      * @param rec the HeaderFooterRecord to set
      */
     public void addLateHeaderFooter(HeaderFooterRecord rec) {
@@ -623,10 +623,10 @@ public final class PageSettingsBlock extends RecordAggregate {
      * This method reads PageSettingsBlock records from the supplied RecordStream until the first
      * non-PageSettingsBlock record is encountered.  As each record is read, it is incorporated
      * into this PageSettingsBlock.<p>
-     * 
+     *
      * The latest Excel version seems to write the PageSettingsBlock uninterrupted. However there
      * are several examples (that Excel reads OK) where these records are not written together:
-     * 
+     *
      * <ul>
      * <li><b>HEADER_FOOTER(0x089C) after WINDOW2</b> - This record is new in 2007.  Some apps
      * seem to have scattered this record long after the PageSettingsBlock where it belongs
@@ -635,7 +635,7 @@ public final class PageSettingsBlock extends RecordAggregate {
      * This happens in the test sample file "NoGutsRecords.xls" and "WORKBOOK_in_capitals.xls"</li>
      * <li><b>Margins after DIMENSION</b> - All of PSB should be before DIMENSION. (Bug-47199)</li>
      * </ul>
-     * 
+     *
      * These were probably written by other applications (or earlier versions of Excel). It was
      * decided to not write specific code for detecting each of these cases.  POI now tolerates
      * PageSettingsBlock records scattered all over the sheet record stream, and in any order, but
@@ -646,7 +646,7 @@ public final class PageSettingsBlock extends RecordAggregate {
      * were when they were originally read.
      *
      * @param rs the RecordStream to read from
-     * 
+     *
      * @throws  org.apache.poi.util.RecordFormatException if any PSB record encountered has the same type (sid) as
      * a record that is already part of this PageSettingsBlock
      */
index 2f5a9229da399513f9461a86e7d8c0415b9211a4..404efb0bd069769a4de98632f02ff19fbf58f005 100644 (file)
@@ -59,4 +59,14 @@ public class PhRun {
     public int hashCode() {
         return Objects.hash(phoneticTextFirstCharacterOffset, realTextFirstCharacterOffset, realTextLength);
     }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        PhRun phRun = (PhRun) o;
+        return phoneticTextFirstCharacterOffset == phRun.phoneticTextFirstCharacterOffset
+            && realTextFirstCharacterOffset == phRun.realTextFirstCharacterOffset
+            && realTextLength == phRun.realTextLength;
+    }
 }
index 7cacb68fe8c1aae4869e70a0701d763d97a8416d..f3804a90be5e7c8a0e203f1f49f0f14a425e3a1e 100644 (file)
@@ -57,11 +57,4 @@ public interface POIFSConstants
     int END_OF_CHAIN   = -2;
     /** Indicates the sector is not used (0xFFFFFFFF) */
     int UNUSED_BLOCK   = -1;
-
-    /** The first 4 bytes of an OOXML file, used in detection */
-    byte[] OOXML_FILE_HEADER =
-       new byte[] { 0x50, 0x4b, 0x03, 0x04 };
-    /** The first 5 bytes of a raw XML file, used in detection */
-    byte[] RAW_XML_FILE_HEADER =
-        new byte[] { 0x3c, 0x3f, 0x78, 0x6d, 0x6c };
-}   // end public interface POIFSConstants;
+}
index f8efe0d2010ae4bfeb4fd9736a9a96ad2df78701..898670eabaab2942ee711faaada1b6d4e3af1120 100644 (file)
@@ -205,6 +205,7 @@ public class AgileDecryptor extends Decryptor {
         }
     }
 
+    @SuppressWarnings({"java:S2095"})
     @Override
     public InputStream getDataStream(DirectoryNode dir) throws IOException, GeneralSecurityException {
         DocumentInputStream dis = dir.createDocumentInputStream(DEFAULT_POIFS_ENTRY);
index 3aec22e55f80bf56586527700df81c913f76dc8e..ff14f19ab37f05cf4ec429c86f3c72fbce6905e5 100644 (file)
@@ -140,7 +140,7 @@ public class BinaryRC4Decryptor extends Decryptor {
     }
 
     @Override
-    @SuppressWarnings("resource")
+    @SuppressWarnings({"java:S2095","resource"})
     public ChunkedCipherInputStream getDataStream(DirectoryNode dir) throws IOException,
             GeneralSecurityException {
         DocumentInputStream dis = dir.createDocumentInputStream(DEFAULT_POIFS_ENTRY);
index 501db481a65007f2151f6b5de8090c16b2ad2b73..60667f88a5f790c47b12c5b1d1ab2d036cac52a2 100644 (file)
@@ -17,9 +17,6 @@
 
 package org.apache.poi.poifs.filesystem;
 
-import static org.apache.poi.poifs.common.POIFSConstants.OOXML_FILE_HEADER;
-import static org.apache.poi.poifs.common.POIFSConstants.RAW_XML_FILE_HEADER;
-
 import java.io.BufferedInputStream;
 import java.io.File;
 import java.io.FileInputStream;
@@ -39,24 +36,24 @@ import org.apache.poi.util.LocaleUtil;
 public enum FileMagic {
     /** OLE2 / BIFF8+ stream used for Office 97 and higher documents */
     OLE2(HeaderBlockConstants._signature),
-    /** OOXML / ZIP stream */
-    OOXML(OOXML_FILE_HEADER),
-    /** XML file */
-    XML(RAW_XML_FILE_HEADER),
+    /** OOXML / ZIP stream - The first 4 bytes of an OOXML file, used in detection */
+    OOXML(0x50, 0x4b, 0x03, 0x04),
+    /** XML file - The first 5 bytes of a raw XML file, used in detection */
+    XML(0x3c, 0x3f, 0x78, 0x6d, 0x6c),
     /** BIFF2 raw stream - for Excel 2 */
-    BIFF2(new byte[]{
+    BIFF2(
         0x09, 0x00, // sid=0x0009
         0x04, 0x00, // size=0x0004
         0x00, 0x00, // unused
         '?', 0x00  // '?' = multiple values
-    }),
+    ),
     /** BIFF3 raw stream - for Excel 3 */
-    BIFF3(new byte[]{
+    BIFF3(
         0x09, 0x02, // sid=0x0209
         0x06, 0x00, // size=0x0006
         0x00, 0x00, // unused
         '?', 0x00  // '?' = multiple values
-    }),
+    ),
     /** BIFF4 raw stream - for Excel 4 */
     BIFF4(new byte[]{
         0x09, 0x04, // sid=0x0409
@@ -81,7 +78,7 @@ public enum FileMagic {
     HTML("<!DOCTYP",
          "<html","\n\r<html","\r\n<html","\r<html","\n<html",
          "<HTML","\r\n<HTML","\n\r<HTML","\r<HTML","\n<HTML"),
-    WORD2(new byte[]{ (byte)0xdb, (byte)0xa5, 0x2d, 0x00}),
+    WORD2(0xdb, 0xa5, 0x2d, 0x00),
     /** JPEG image */
     JPEG(
         new byte[]{ (byte)0xFF, (byte)0xD8, (byte)0xFF, (byte)0xDB },
@@ -91,20 +88,18 @@ public enum FileMagic {
     /** GIF image */
     GIF("GIF87a","GIF89a"),
     /** PNG Image */
-    PNG(new byte[]{ (byte)0x89, 'P', 'N', 'G', 0x0D, 0x0A, 0x1A, 0x0A }),
+    PNG(0x89, 'P', 'N', 'G', 0x0D, 0x0A, 0x1A, 0x0A),
     /** TIFF Image */
     TIFF("II*\u0000", "MM\u0000*" ),
     /** WMF image with a placeable header */
-    WMF(new byte[]{ (byte)0xD7, (byte)0xCD, (byte)0xC6, (byte)0x9A }),
+    WMF(0xD7, 0xCD, 0xC6, 0x9A),
     /** EMF image */
-    EMF(new byte[]{
-        1, 0, 0, 0,
+    EMF(1, 0, 0, 0,
         '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?',
         '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?',
-        ' ', 'E', 'M', 'F'
-    }),
+        ' ', 'E', 'M', 'F'),
     /** BMP image */
-    BMP(new byte[]{'B','M'}),
+    BMP('B','M'),
     // keep UNKNOWN always as last enum!
     /** UNKNOWN magic */
     UNKNOWN(new byte[0]);
@@ -119,6 +114,14 @@ public enum FileMagic {
         LittleEndian.putLong(this.magic[0], 0, magic);
     }
 
+    FileMagic(int... magic) {
+        byte[] one = new byte[magic.length];
+        for (int i=0; i<magic.length; i++) {
+            one[i] = (byte)(magic[i] & 0xFF);
+        }
+        this.magic = new byte[][]{ one };
+    }
+
     FileMagic(byte[]... magic) {
         this.magic = magic;
     }
index 22577980a3251bbf1dc83354e72480c53a9a76e1..20fc398e27fa7db9cbacdcc917a304aeda7d91f5 100644 (file)
@@ -204,6 +204,7 @@ public class POIFSFileSystem extends BlockStore
         this(channel, null, readOnly, false);
     }
 
+    @SuppressWarnings("java:S2095")
     private POIFSFileSystem(FileChannel channel, File srcFile, boolean readOnly, boolean closeChannelOnError)
             throws IOException {
         this(false);
index b3d70fff26156fe2f4f348f8e178e0059b5538e0..e047b3468dc263654c195951d67e2991f54e8076 100644 (file)
@@ -177,7 +177,7 @@ public class DrawTextParagraph implements Drawable {
                 penY -= line.getLayout().getAscent();
             }
 
-            penX = x + (isHSLF ? leftMargin : leftMargin);
+            penX = x + leftMargin;
             if (lastLine == null) {
                 if (!isEmptyParagraph()) {
                     // TODO: find out character style for empty, but bulleted/numbered lines
index a69efaf8f8cd350d21dd693fbc9ce7b0a609c76c..cb0607de6134f1d852f0d8b328a9263ac7de726a 100644 (file)
@@ -298,7 +298,7 @@ public final class SlideShowFactory {
         Singleton.INSTANCE.provider.add(provider);
     }
 
-    public static void removeProvider(Class<? extends SlideShowProvider> provider){
-        Singleton.INSTANCE.provider.removeIf(p -> p.getClass().getName().equals(provider.getName()));
+    public static void removeProvider(Class<? extends SlideShowProvider<?,?>> provider){
+        Singleton.INSTANCE.provider.removeIf(p -> p.getClass().isAssignableFrom(provider));
     }
 }
index 51c0852b3053f7900efbea34fe64d9f3d79be605..69f6f99501bae26b53253dd56e4c45a70d2e2ad7 100644 (file)
@@ -18,8 +18,8 @@
 package org.apache.poi.ss.formula;
 
 public class SheetIdentifier {
-    public String _bookName;
-    public NameIdentifier _sheetIdentifier;
+    private final String _bookName;
+    private final NameIdentifier _sheetIdentifier;
 
     public SheetIdentifier(String bookName, NameIdentifier sheetIdentifier) {
         _bookName = bookName;
index 8cb5b3201a0259ab14e7ec27857d908d766ea35e..88c91991b9f5b6aad2d93c369ff4efebe5988d4d 100644 (file)
@@ -18,7 +18,7 @@
 package org.apache.poi.ss.formula;
 
 public class SheetRangeIdentifier extends SheetIdentifier {
-    public NameIdentifier _lastSheetIdentifier;
+    private final NameIdentifier _lastSheetIdentifier;
 
     public SheetRangeIdentifier(String bookName, NameIdentifier firstSheetIdentifier, NameIdentifier lastSheetIdentifier) {
         super(bookName, firstSheetIdentifier);
index 77ed481481550ca61663178ea439ff843501dfba..aba00e7f6b3663212c04a9272304ad0b12117e18 100644 (file)
@@ -324,7 +324,7 @@ final class YearFracCalculator {
                /** day of month */
                public final int day;
                /** milliseconds since 1970 */
-               public long tsMilliseconds;
+               public final long tsMilliseconds;
 
                public SimpleDate(Calendar cal) {
                        year = cal.get(Calendar.YEAR);
index aee79ab274002e86c14524caa0c3d38ade8a4cf6..513daa3a1bb011ee967b1edeb47d25148c086212 100644 (file)
@@ -107,7 +107,7 @@ public final class LinearRegressionFunction extends Fixed2ArgFunction {
        }
 
        public enum FUNCTION {INTERCEPT, SLOPE}
-       public FUNCTION function;
+       private final FUNCTION function;
 
        public LinearRegressionFunction(FUNCTION function) {
                this.function = function;
index 2a1227e2db4d2d2e1ff7aa048c6845e8e00aa055..62eb5456703b029845c96977db2431c769398cdb 100644 (file)
@@ -60,11 +60,10 @@ import org.apache.poi.ss.formula.eval.ValueEval;
  */
 
 public final class Trend implements Function {
-    MatrixFunction.MutableValueCollector collector = new MatrixFunction.MutableValueCollector(false, false);
     private static final class TrendResults {
-        public double[] vals;
-        public int resultWidth;
-        public int resultHeight;
+        private final double[] vals;
+        private final int resultWidth;
+        private final int resultHeight;
 
         public TrendResults(double[] vals, int resultWidth, int resultHeight) {
             this.vals = vals;
@@ -149,7 +148,7 @@ public final class Trend implements Function {
         }
         double[] oneD = new double[twoD.length * twoD[0].length];
         for (int i = 0; i < twoD.length; i++) {
-            System.arraycopy(twoD[i], 0, oneD, i * twoD[0].length + 0, twoD[0].length);
+            System.arraycopy(twoD[i], 0, oneD, i * twoD[0].length, twoD[0].length);
         }
         return oneD;
     }
@@ -335,7 +334,7 @@ public final class Trend implements Function {
         if(isAllColumnsSame(x)){
             double[] result = new double[newX.length];
             double avg = Arrays.stream(y).average().orElse(0);
-            for(int i = 0; i < result.length; i++) result[i] = avg;
+            Arrays.fill(result, avg);
             return new TrendResults(result, resultWidth, resultHeight);
         }
 
index b730731f7ce1ab98f5f6d9d999c43bf6b527e32b..c2b6e6936fa3b6b92c949b046a8521bfdb2bb680 100644 (file)
@@ -305,6 +305,6 @@ public final class WorkbookFactory {
     }
 
     public static void removeProvider(Class<? extends WorkbookProvider> provider){
-        Singleton.INSTANCE.provider.removeIf(p -> p.getClass().getName().equals(provider.getName()));
+        Singleton.INSTANCE.provider.removeIf(p -> p.getClass().isAssignableFrom(provider));
     }
 }
index 2826cc3323cdf4303c73f01e4f55f081caf6e216..d26d7a98642a68a5411d1cc4d413c677154d13d1 100644 (file)
 
 package org.apache.poi.ss.util.cellwalk;
 
+import static org.apache.commons.math3.util.ArithmeticUtils.addAndCheck;
+import static org.apache.commons.math3.util.ArithmeticUtils.mulAndCheck;
+import static org.apache.commons.math3.util.ArithmeticUtils.subAndCheck;
+
 import org.apache.commons.math3.util.ArithmeticUtils;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.CellType;
@@ -26,13 +30,11 @@ import org.apache.poi.ss.util.CellRangeAddress;
 
 /**
  * Traverse cell range.
- *
- * @author Roman Kashitsyn
  */
 public class CellWalk {
 
-    private Sheet sheet;
-    private CellRangeAddress range;
+    private final Sheet sheet;
+    private final CellRangeAddress range;
     private boolean traverseEmptyCells;
 
 
@@ -74,8 +76,8 @@ public class CellWalk {
         int lastColumn = range.getLastColumn();
         final int width = lastColumn - firstColumn + 1;
         SimpleCellWalkContext ctx = new SimpleCellWalkContext();
-        Row currentRow = null;
-        Cell currentCell = null;
+        Row currentRow;
+        Cell currentCell;
 
         for (ctx.rowNumber = firstRow; ctx.rowNumber <= lastRow; ++ctx.rowNumber) {
             currentRow = sheet.getRow(ctx.rowNumber);
@@ -92,10 +94,9 @@ public class CellWalk {
                     continue;
                 }
 
-                long rowSize = ArithmeticUtils.mulAndCheck(
-                        (long)ArithmeticUtils.subAndCheck(ctx.rowNumber, firstRow), (long)width);
+                long rowSize = mulAndCheck(subAndCheck(ctx.rowNumber, firstRow), (long)width);
 
-                ctx.ordinalNumber = ArithmeticUtils.addAndCheck(rowSize, (ctx.colNumber - firstColumn + 1));
+                ctx.ordinalNumber = addAndCheck(rowSize, (ctx.colNumber - firstColumn + 1));
 
                 handler.onCell(currentCell, ctx);
             }
@@ -108,13 +109,11 @@ public class CellWalk {
 
     /**
      * Inner class to hold walk context.
-     *
-     * @author Roman Kashitsyn
      */
     private static class SimpleCellWalkContext implements CellWalkContext {
-        public long ordinalNumber;
-        public int rowNumber;
-        public int colNumber;
+        private long ordinalNumber;
+        private int rowNumber;
+        private int colNumber;
 
         @Override
         public long getOrdinalNumber() {
index ef7b2d29acc3bc15a55109023ebe193763148e43..72d9580b653e21368ec5ba6ea7ad69615f3039b4 100644 (file)
@@ -15,7 +15,7 @@
    See the License for the specific language governing permissions and
    limitations under the License.
 ==================================================================== */
-        
+
 package org.apache.poi.util;
 
 import java.io.File;
@@ -37,23 +37,20 @@ public final class DrawingDump {
     }
 
     public static void main( String[] args ) throws IOException {
-        OutputStreamWriter osw = new OutputStreamWriter(System.out, Charset.defaultCharset());
-        PrintWriter pw = new PrintWriter(osw);
-        POIFSFileSystem fs = new POIFSFileSystem(new File(args[0]));
-        HSSFWorkbook wb = new HSSFWorkbook(fs);
-        try {
+        try (OutputStreamWriter osw = new OutputStreamWriter(System.out, Charset.defaultCharset());
+            PrintWriter pw = new PrintWriter(osw);
+            POIFSFileSystem fs = new POIFSFileSystem(new File(args[0]));
+            HSSFWorkbook wb = new HSSFWorkbook(fs)) {
+
             pw.println( "Drawing group:" );
             wb.dumpDrawingGroupRecords(true);
-    
+
             int i = 1;
             for (Sheet sheet : wb)
             {
                 pw.println( "Sheet " + i + "(" + sheet.getSheetName() + "):" );
                 ((HSSFSheet) sheet).dumpDrawingRecords(true, pw);
             }
-        } finally {
-            wb.close();
-            fs.close();
         }
     }
 }
index 1a53cdd0b0b30ce84c7aa26ed355f26eb832d028..f1532b75e2d9692813ca8b52379c2b73175d06fd 100644 (file)
@@ -162,13 +162,13 @@ public final class IOUtils {
      * @return A byte array with the read bytes.
      * @throws IOException If reading data fails or EOF is encountered too early for the given length.
      */
-    public static byte[] toByteArray(InputStream stream, final long length, final int maxLength) throws IOException {
+    public static byte[] toByteArray(InputStream stream, final int length, final int maxLength) throws IOException {
         if (length < 0L || maxLength < 0L) {
             throw new RecordFormatException("Can't allocate an array of length < 0");
         }
-        if (length > (long)Integer.MAX_VALUE) {
-            throw new RecordFormatException("Can't allocate an array > "+Integer.MAX_VALUE);
-        }
+        // if (length > (long)Integer.MAX_VALUE) {
+        //     throw new RecordFormatException("Can't allocate an array > "+Integer.MAX_VALUE);
+        // }
         if ((length != Integer.MAX_VALUE) || (maxLength != Integer.MAX_VALUE)) {
             checkLength(length, maxLength);
         }
index 2a5a9d86f74eee0fefdeec2fa030682a621d7b70..2d90b46f202e79a520d342d6bad9d83732962165 100644 (file)
@@ -124,7 +124,6 @@ public final class POIXMLExtractorFactory implements ExtractorProvider {
             return ExtractorFactory.createExtractor(f, password);
         }
 
-
         OPCPackage pkg = null;
         try {
             pkg = OPCPackage.open(f.toString(), PackageAccess.READ);
@@ -136,7 +135,9 @@ public final class POIXMLExtractorFactory implements ExtractorProvider {
         } catch (InvalidFormatException ife) {
             throw new IOException(ife);
         } catch (IOException e) {
-            pkg.revert();
+            if (pkg != null) {
+                pkg.revert();
+            }
             throw e;
         }
     }
index f367473cc3c24b014a8a47b4a63939e90d4f9f1e..8634862bb7d26fa651992d3160e590e50f4af7a5 100644 (file)
@@ -19,28 +19,12 @@ package org.apache.poi.ooxml.util;
 import java.util.LinkedList;
 import java.util.ListIterator;
 
-/**
- * <p>
- * 24.08.2009<br>
- * </p>
- * 
- * @author Stefan Stern<br>
- */
-
 public class IdentifierManager {
 
     public static final long MAX_ID = Long.MAX_VALUE - 1;
-
     public static final long MIN_ID = 0L;
 
-    /**
-        * 
-        */
     private final long upperbound;
-
-    /**
-        * 
-        */
     private final long lowerbound;
 
     /**
@@ -56,7 +40,7 @@ public class IdentifierManager {
         if (lowerbound > upperbound) {
             throw new IllegalArgumentException("lowerbound must not be greater than upperbound, had " + lowerbound + " and " + upperbound);
         }
-        else if (lowerbound < MIN_ID) { 
+        else if (lowerbound < MIN_ID) {
             String message = "lowerbound must be greater than or equal to " + Long.toString(MIN_ID);
             throw new IllegalArgumentException(message);
         }
@@ -78,7 +62,7 @@ public class IdentifierManager {
             throw new IllegalArgumentException("Value for parameter 'id' was out of bounds, had " + id + ", but should be within [" + lowerbound + ":" + upperbound + "]");
         }
         verifyIdentifiersLeft();
-        
+
         if (id == upperbound) {
             Segment lastSegment = segments.getLast();
             if (lastSegment.end == upperbound) {
@@ -136,7 +120,7 @@ public class IdentifierManager {
     }
 
     /**
-     * @return a new identifier. 
+     * @return a new identifier.
      * @throws IllegalStateException if no more identifiers are available, then an Exception is raised.
      */
     public long reserveNew() {
@@ -236,7 +220,7 @@ public class IdentifierManager {
     }
 
     /**
-        * 
+        *
         */
     private void verifyIdentifiersLeft() {
         if (segments.isEmpty()) {
@@ -245,20 +229,14 @@ public class IdentifierManager {
     }
 
     private static class Segment {
+        private long start;
+        private long end;
 
         public Segment(long start, long end) {
             this.start = start;
             this.end = end;
         }
 
-        public long start;
-        public long end;
-
-        /*
-         * (non-Javadoc)
-         * 
-         * @see java.lang.Object#toString()
-         */
         public String toString() {
             return "[" + start + "; " + end + "]";
         }
index c6dcde6d74d015a34bce23e42e29a567c7390c89..06067ea531cd1c712ca55b29ad833ae8f0781a21 100644 (file)
@@ -386,7 +386,7 @@ public abstract class SignatureLine {
             int mpos = measurer.getPosition();
             int limit = text.indexOf('\n', mpos);
             limit = (limit == -1) ? text.length() : limit+1;
-            TextLayout textLayout = measurer.nextLayout(bi.getWidth()-10, limit, false);
+            TextLayout textLayout = measurer.nextLayout(bi.getWidth()-10f, limit, false);
             if (lineNr != 1) {
                 y += textLayout.getAscent();
             }
index b841da4ada600e498fe89e1d32bf86e2dab97bab..7dd4641107bf2f00ee3112807b6a1a927c1e33df 100644 (file)
@@ -62,8 +62,8 @@ enum GeometryRowTypes {
     SPLINE_START("SplineStart", SplineStart::new)
     ;
 
-    public String rowType;
-    public Function<RowType, ? extends GeometryRow> constructor;
+    private final String rowType;
+    private final Function<RowType, ? extends GeometryRow> constructor;
 
     GeometryRowTypes(String rowType, Function<RowType, ? extends GeometryRow> constructor) {
         this.rowType = rowType;
index 8aa0bdca4d975aec8916327115c442c9e3c826f0..35af8d52be30ed7a5b4c1a99b3f4f14ae515e839 100644 (file)
@@ -50,8 +50,8 @@ enum XDGFSectionTypes {
     ANNOTATION("Annotation", GenericSection::new),
     ACTION_TAG("ActionTag", GenericSection::new);
 
-    public String sectionType;
-    public BiFunction<SectionType, XDGFSheet, ? extends XDGFSection> constructor;
+    private final String sectionType;
+    private final BiFunction<SectionType, XDGFSheet, ? extends XDGFSection> constructor;
 
     XDGFSectionTypes(String sectionType, BiFunction<SectionType, XDGFSheet, ? extends XDGFSection> constructor) {
         this.sectionType = sectionType;
index d29392d6a106649ea9902eaec04efca73d2072d2..2ec09f6b6b89c828d40d5eb999a2d2938df61372 100644 (file)
@@ -126,8 +126,6 @@ public class EllipticalArcTo implements GeometryRow {
         _master = (EllipticalArcTo) row;
     }
 
-    public static int draw;
-
     @Override
     public void addToPath(java.awt.geom.Path2D.Double path, XDGFShape parent) {
 
index 281f4129d5607394d85e4f05da2dc0dd85840b42..b3f158a334eca489952c9a26ba0e2168485594e1 100644 (file)
@@ -809,6 +809,7 @@ public class DummyGraphics2d extends Graphics2D {
         log.println( "finalize():" );
         g2D.dispose();
         dispose();
+        super.finalize();
     }
 
     public Shape getClip() {
index 089a605c03accee00a12961bdeecb8aa85c2c652..6e3d0c0c9f5635dfa03898ee4a93d700481940aa 100644 (file)
@@ -30,7 +30,7 @@ import org.apache.poi.util.LittleEndianConsts;
  */
 @Internal
 class XSSFBCellHeader {
-    public static int length = 8;
+    public static final int length = 8;
 
     /**
      *
index 64ead9f4b5520b3ce6ff864e2dae60c17608b971..79f003eb9c15bf3cd758fc2a1e1032dfe85afc9a 100644 (file)
@@ -70,7 +70,7 @@ public abstract class BaseXSSFEvaluationWorkbook implements FormulaRenderingWork
     public void clearAllCachedResultValues() {
         _tableCache = null;
     }
-    
+
     private int convertFromExternalSheetIndex(int externSheetIndex) {
         return externSheetIndex;
     }
@@ -113,16 +113,16 @@ public abstract class BaseXSSFEvaluationWorkbook implements FormulaRenderingWork
         List<ExternalLinksTable> tables = _uBook.getExternalLinksTable();
         int index = findExternalLinkIndex(bookName, tables);
         if (index != -1) return index;
-        
+
         // Is it an absolute file reference?
         if (bookName.startsWith("'file:///") && bookName.endsWith("'")) {
             String relBookName = bookName.substring(bookName.lastIndexOf('/')+1);
             relBookName = relBookName.substring(0, relBookName.length()-1); // Trailing '
-            
+
             // Try with this name
             index = findExternalLinkIndex(relBookName, tables);
             if (index != -1) return index;
-            
+
             // If we get here, it's got no associated proper links yet
             // So, add the missing reference and return
             // Note - this is really rather nasty...
@@ -130,7 +130,7 @@ public abstract class BaseXSSFEvaluationWorkbook implements FormulaRenderingWork
             tables.add(fakeLinkTable);
             return tables.size(); // 1 based results, 0 = current workbook
         }
-        
+
         // Not properly referenced
         throw new RuntimeException("Book not linked for filename " + bookName);
     }
@@ -162,7 +162,7 @@ public abstract class BaseXSSFEvaluationWorkbook implements FormulaRenderingWork
      * @param sheetIndex index of sheet if named range scope is limited to one sheet
      *         if named range scope is global to the workbook, sheetIndex is -1.
      * @return If name is a named range in the workbook, returns
-     *  EvaluationName corresponding to that named range 
+     *  EvaluationName corresponding to that named range
      *  Returns null if there is no named range with the same name and scope in the workbook
      */
     @Override
@@ -171,7 +171,7 @@ public abstract class BaseXSSFEvaluationWorkbook implements FormulaRenderingWork
             XSSFName nm = _uBook.getNameAt(i);
             String nameText = nm.getNameName();
             int nameSheetindex = nm.getSheetIndex();
-            if (name.equalsIgnoreCase(nameText) && 
+            if (name.equalsIgnoreCase(nameText) &&
                    (nameSheetindex == -1 || nameSheetindex == sheetIndex)) {
                 return new Name(nm, i, this);
             }
@@ -183,7 +183,7 @@ public abstract class BaseXSSFEvaluationWorkbook implements FormulaRenderingWork
     public String getSheetName(int sheetIndex) {
         return _uBook.getSheetName(sheetIndex);
     }
-    
+
     @Override
     public ExternalName getExternalName(int externSheetIndex, int externNameIndex) {
         throw new IllegalStateException("HSSF-style external references are not supported for XSSF");
@@ -195,13 +195,13 @@ public abstract class BaseXSSFEvaluationWorkbook implements FormulaRenderingWork
             // External reference - reference is 1 based, link table is 0 based
             int linkNumber = externalWorkbookNumber - 1;
             ExternalLinksTable linkTable = _uBook.getExternalLinksTable().get(linkNumber);
-            
+
             for (org.apache.poi.ss.usermodel.Name name : linkTable.getDefinedNames()) {
                 if (name.getNameName().equals(nameName)) {
                     // HSSF returns one sheet higher than normal, and various bits
                     //  of the code assume that. So, make us match that behaviour!
                     int nameSheetIndex = name.getSheetIndex() + 1;
-                    
+
                     // TODO Return a more specialised form of this, see bug #56752
                     // Should include the cached values, for in case that book isn't available
                     // Should support XSSF stuff lookups
@@ -215,7 +215,7 @@ public abstract class BaseXSSFEvaluationWorkbook implements FormulaRenderingWork
             int nameIdx = _uBook.getNameIndex(nameName);
             return new ExternalName(nameName, nameIdx, 0);  // TODO Is this right?
         }
-        
+
     }
 
     /**
@@ -229,7 +229,7 @@ public abstract class BaseXSSFEvaluationWorkbook implements FormulaRenderingWork
         if (func != null) {
             return new NameXPxg(null, name);
         }
-        
+
         // Otherwise, try it as a named range
         if (sheet == null) {
             if (!_uBook.getNames(name).isEmpty()) {
@@ -237,17 +237,17 @@ public abstract class BaseXSSFEvaluationWorkbook implements FormulaRenderingWork
             }
             return null;
         }
-        if (sheet._sheetIdentifier == null) {
+        if (sheet.getSheetIdentifier() == null) {
             // Workbook + Named Range only
-            int bookIndex = resolveBookIndex(sheet._bookName);
+            int bookIndex = resolveBookIndex(sheet.getBookName());
             return new NameXPxg(bookIndex, null, name);
         }
 
         // Use the sheetname and process
-        String sheetName = sheet._sheetIdentifier.getName();
-        
-        if (sheet._bookName != null) {
-            int bookIndex = resolveBookIndex(sheet._bookName);
+        String sheetName = sheet.getSheetIdentifier().getName();
+
+        if (sheet.getBookName() != null) {
+            int bookIndex = resolveBookIndex(sheet.getBookName());
             return new NameXPxg(bookIndex, sheetName, name);
         } else {
             return new NameXPxg(sheetName, name);
@@ -255,8 +255,8 @@ public abstract class BaseXSSFEvaluationWorkbook implements FormulaRenderingWork
     }
     @Override
     public Ptg get3DReferencePtg(CellReference cell, SheetIdentifier sheet) {
-        if (sheet._bookName != null) {
-            int bookIndex = resolveBookIndex(sheet._bookName);
+        if (sheet.getBookName() != null) {
+            int bookIndex = resolveBookIndex(sheet.getBookName());
             return new Ref3DPxg(bookIndex, sheet, cell);
         } else {
             return new Ref3DPxg(sheet, cell);
@@ -264,8 +264,8 @@ public abstract class BaseXSSFEvaluationWorkbook implements FormulaRenderingWork
     }
     @Override
     public Ptg get3DReferencePtg(AreaReference area, SheetIdentifier sheet) {
-        if (sheet._bookName != null) {
-            int bookIndex = resolveBookIndex(sheet._bookName);
+        if (sheet.getBookName() != null) {
+            int bookIndex = resolveBookIndex(sheet.getBookName());
             return new Area3DPxg(bookIndex, sheet, area);
         } else {
             return new Area3DPxg(sheet, area);
@@ -276,18 +276,18 @@ public abstract class BaseXSSFEvaluationWorkbook implements FormulaRenderingWork
     public String resolveNameXText(NameXPtg n) {
         int idx = n.getNameIndex();
         String name = null;
-        
+
         // First, try to find it as a User Defined Function
         IndexedUDFFinder udfFinder = (IndexedUDFFinder)getUDFFinder();
         name = udfFinder.getFunctionName(idx);
         if (name != null) return name;
-        
+
         // Otherwise, try it as a named range
         XSSFName xname = _uBook.getNameAt(idx);
         if (xname != null) {
             name = xname.getNameName();
         }
-        
+
         return name;
     }
 
@@ -307,7 +307,7 @@ public abstract class BaseXSSFEvaluationWorkbook implements FormulaRenderingWork
             // Internal reference
             workbookName = null;
         }
-        
+
         if (lastSheetName == null || firstSheetName.equals(lastSheetName)) {
             return new ExternalSheet(workbookName, firstSheetName);
         } else {
@@ -385,7 +385,7 @@ public abstract class BaseXSSFEvaluationWorkbook implements FormulaRenderingWork
      * Tables are cached for performance (formula evaluation looks them up by name repeatedly).
      * After the first table lookup, adding or removing a table from the document structure will cause trouble.
      * This is meant to be used on documents whose structure is essentially static at the point formulas are evaluated.
-     * 
+     *
      * @param name the data table name (case-insensitive)
      * @return The Data table in the workbook named <tt>name</tt>, or <tt>null</tt> if no table is named <tt>name</tt>.
      * @since 3.15 beta 2
@@ -396,7 +396,7 @@ public abstract class BaseXSSFEvaluationWorkbook implements FormulaRenderingWork
         String lname = caseInsensitive(name);
         return getTableCache().get(lname);
     }
-    
+
     @Override
     public UDFFinder getUDFFinder(){
         return _uBook.getUDFFinder();
index 1ef26afca2609dac850fdf96f0b0854bc92f980c..3f827c37970f4815163eccf9d83600ad288b796c 100644 (file)
@@ -165,10 +165,8 @@ public class TestExtractorFactory {
 
     @Test
     public void testPOIFSInvalid() {
-        IOException ex = assertThrows(
-            IOException.class,
-            () -> ExtractorFactory.createExtractor(new POIFSFileSystem(txt))
-        );
+        // Not really an Extractor test, but we'll leave it to test POIFS reaction anyway ...
+        IOException ex = assertThrows(IOException.class, () -> new POIFSFileSystem(txt));
         assertTrue(ex.getMessage().contains("Invalid header signature; read 0x3D20726F68747541, expected 0xE11AB1A1E011CFD0"));
     }
 
index d0e0f88e812ef6b84b3f5d368062a7186f689eba..dfc09b2f7e60c8e7a30cb8f87eac3eebc4f18ecf 100644 (file)
@@ -65,6 +65,7 @@ public class OLE2ScratchpadExtractorFactory implements ExtractorProvider {
         return FileMagic.OLE2 == fm;
     }
 
+    @SuppressWarnings("java:S2095")
     @Override
     public POITextExtractor create(File file, String password) throws IOException {
         return create(new POIFSFileSystem(file, true).getRoot(), password);
index 91f8d31c9587adfe41fb67fca4a923be4a64edbd..71ade3fdb3b317cc61d746ab48986d42203aa187 100644 (file)
@@ -355,7 +355,7 @@ public class HemfPlusBrush {
                 size += LittleEndianConsts.INT_SIZE;
             }
 
-            brushBytes = IOUtils.toByteArray(leis, dataSize-size, MAX_OBJECT_SIZE);
+            brushBytes = IOUtils.toByteArray(leis, (int)(dataSize-size), MAX_OBJECT_SIZE);
 
             return dataSize;
         }
index b52053bec40ffd68e7eaad96ed6d24e6cbcaa958..b52e44b833cfea5fc8f8348ce7162e4efc558afd 100644 (file)
@@ -708,7 +708,7 @@ public final class HemfPlusDraw {
             // If the CMAP_LOOKUP flag in the optionsFlags field is set, each value in this array specifies a
             // Unicode character. Otherwise, each value specifies an index to a character glyph in the EmfPlusFont
             // object specified by the ObjectId value in Flags field.
-            byte[] glyphBuf = IOUtils.toByteArray(leis, glyphCount*2L, MAX_OBJECT_SIZE);
+            byte[] glyphBuf = IOUtils.toByteArray(leis, glyphCount*2, MAX_OBJECT_SIZE);
             glyphs = StringUtil.getFromUnicodeLE(glyphBuf);
 
             size += glyphBuf.length;
index 908a1d11510c8e241ffe24e13ff43dab5df41896..1e04c5524edc1a1e2970e0e349c43562fcff7239 100644 (file)
@@ -265,7 +265,7 @@ public class HemfPlusObject {
 
             long size = graphicsVersion.init(leis);
 
-            objectDataBytes = IOUtils.toByteArray(leis, dataSize - size, MAX_OBJECT_SIZE);
+            objectDataBytes = IOUtils.toByteArray(leis, (int)(dataSize - size), MAX_OBJECT_SIZE);
 
             return dataSize;
         }
index 9d1f9a7078c9e6784ed148fedd96398e27e2322b..bc0de3d22f762f3bb43315cf44b4ada15f96945b 100644 (file)
@@ -35,7 +35,7 @@ public class ExEmbed extends RecordContainer {
     private final byte[] _header;
 
     // Links to our more interesting children
-    public org.apache.poi.hslf.record.RecordAtom embedAtom;
+    private org.apache.poi.hslf.record.RecordAtom embedAtom;
     private ExOleObjAtom oleObjAtom;
     private CString menuName;
     private CString progId;
index 99ac049994f20c2cbe9d96bc7fe4fbbaf641e611..187e2f4bce9e77adfe4f62a05990a5f04110e8b5 100644 (file)
@@ -37,7 +37,7 @@ import org.apache.poi.util.LittleEndian;
 public final class TextHeaderAtom extends RecordAtom implements ParentAwareRecord {
     public static final long _type = RecordTypes.TextHeaderAtom.typeID;
        private byte[] _header;
-       public org.apache.poi.hslf.record.RecordContainer parentRecord;
+       private org.apache.poi.hslf.record.RecordContainer parentRecord;
 
        /** The kind of text it is */
        private int textType;
index c119b70222ec23a202c4799bcb672e92d3c45f77..d683ba8567ffc394f468eac177f679777bec1af4 100644 (file)
@@ -54,15 +54,15 @@ public class AttachmentChunks implements ChunkGroup {
      * This is in WMF Format. You'll probably want to pass it to Apache Batik to
      * turn it into a SVG that you can then display.
      */
-    public ByteChunk attachRenderingWMF;
+    private ByteChunk attachRenderingWMF;
 
     /**
      * What the POIFS name of this attachment is.
      */
-    private String poifsName;
+    private final String poifsName;
 
     /** Holds all the chunks that were found. */
-    private List<Chunk> allChunks = new ArrayList<>();
+    private final List<Chunk> allChunks = new ArrayList<>();
 
     public AttachmentChunks(String poifsName) {
         this.poifsName = poifsName;
index a80d26fd48badb3d1f8008ea5ea79e98a815840d..6af621e26f30b5d3a020e89fee0dc06271ee55ee 100644 (file)
@@ -39,10 +39,14 @@ public final class NameIdChunks implements ChunkGroup {
         PS_PUBLIC_STRINGS("00020329-0000-0000-C000-000000000046"),
         PS_INTERNET_HEADERS("00020386-0000-0000-C000-000000000046");
 
-        public ClassID classID;
+        private final ClassID classID;
         PropertySetType(String uuid) {
             classID = new ClassID(uuid);
         }
+
+        public ClassID getClassID() {
+            return classID;
+        }
     }
 
     public enum PredefinedPropertySet {
@@ -61,10 +65,14 @@ public final class NameIdChunks implements ChunkGroup {
         PSETID_XML_EXTRACTED_ENTITIES("23239608-685D-4732-9C55-4C95CB4E8E33"),
         PSETID_ATTACHMENT("96357F7F-59E1-47D0-99A7-46515C183B54");
 
-        public ClassID classID;
+        private final ClassID classID;
         PredefinedPropertySet(String uuid) {
             classID = new ClassID(uuid);
         }
+
+        public ClassID getClassID() {
+            return classID;
+        }
     }
 
     private ByteChunk guidStream;
index 4e142c6cff7ff125a797cceca8160e4066bb7940..efcd051eb91b133c5a899acb21d6ce48d1362c34 100644 (file)
@@ -29,7 +29,7 @@ import org.apache.poi.util.POILogger;
 
 /**
  * Collection of convenience chunks for the Recip(ient) part of an outlook file.
- * 
+ *
  * If a message has multiple recipients, there will be several of these.
  */
 public final class RecipientChunks implements ChunkGroupWithProperties {
@@ -45,35 +45,35 @@ public final class RecipientChunks implements ChunkGroupWithProperties {
     public static final MAPIProperty RECIPIENT_DISPLAY_NAME = MAPIProperty.RECIPIENT_DISPLAY_NAME;
 
     /** Our 0 based position in the list of recipients */
-    public int recipientNumber;
+    private int recipientNumber;
 
     /** TODO */
-    public ByteChunk recipientSearchChunk;
+    private ByteChunk recipientSearchChunk;
     /**
      * The "name", which could be their name if an internal person, or their
      * email address if an external person
      */
-    public StringChunk recipientNameChunk;
+    private StringChunk recipientNameChunk;
     /**
      * The email address of the recipient, which could be in SMTP or SEARCH
      * format, but isn't always present...
      */
-    public StringChunk recipientEmailChunk;
+    private StringChunk recipientEmailChunk;
     /**
      * The smtp destination email address of the recipient, but isn't always
      * present...
      */
-    public StringChunk recipientSMTPChunk;
+    private StringChunk recipientSMTPChunk;
     /**
      * Normally EX or SMTP. Will generally affect where the email address ends
      * up.
      */
-    public StringChunk deliveryTypeChunk;
+    private StringChunk deliveryTypeChunk;
     /**
      * The display name of the recipient. Normally seems to hold the same value
      * as in recipientNameChunk
      */
-    public StringChunk recipientDisplayNameChunk;
+    private StringChunk recipientDisplayNameChunk;
     /**
      * Holds the fixed sized properties, and the pointers to the data of
      * variable sized ones
@@ -93,6 +93,34 @@ public final class RecipientChunks implements ChunkGroupWithProperties {
         }
     }
 
+    public int getRecipientNumber() {
+        return recipientNumber;
+    }
+
+    public ByteChunk getRecipientSearchChunk() {
+        return recipientSearchChunk;
+    }
+
+    public StringChunk getRecipientNameChunk() {
+        return recipientNameChunk;
+    }
+
+    public StringChunk getRecipientEmailChunk() {
+        return recipientEmailChunk;
+    }
+
+    public StringChunk getRecipientSMTPChunk() {
+        return recipientSMTPChunk;
+    }
+
+    public StringChunk getDeliveryTypeChunk() {
+        return deliveryTypeChunk;
+    }
+
+    public StringChunk getRecipientDisplayNameChunk() {
+        return recipientDisplayNameChunk;
+    }
+
     /**
      * Tries to find their name, in whichever chunk holds it.
      */
index 75fbe4dc25ba9d879d1a255a87bca7621abe89b4..701ab2d54e6bca4fb6996e7211115143a6a2aa94 100644 (file)
@@ -256,7 +256,7 @@ public class HwmfGraphics implements HwmfCharsetAware {
     protected Paint getHatchedFill() {
         HwmfDrawProperties prop = getProperties();
         BufferedImage pattern = getPatternFromLong(
-            prop.getBrushHatch().pattern,
+            prop.getBrushHatch().getPattern(),
             prop.getBackgroundColor().getColor(),
             prop.getBrushColor().getColor(),
             prop.getBkMode() == HwmfBkMode.TRANSPARENT
index 4bb03ef3914c7f9edffb559fbc397b84350e3df4..5325931dbe1466962ff748d5678088ae1029eb1f 100644 (file)
@@ -97,14 +97,18 @@ public enum HwmfBinaryRasterOp {
     /** 1, Pixel is always 1 */
     R2_WHITE(0x0010, HwmfBinaryRasterOp::R2_WHITE);
 
-    public int opIndex;
-    private BiConsumer<int[],int[]> op;
+    private final int opIndex;
+    private final BiConsumer<int[],int[]> op;
 
     HwmfBinaryRasterOp(int opIndex, BiConsumer<int[],int[]> op) {
         this.opIndex = opIndex;
         this.op = op;
     }
 
+    public int getOpIndex() {
+        return opIndex;
+    }
+
     public static HwmfBinaryRasterOp valueOf(int opIndex) {
         for (HwmfBinaryRasterOp bb : HwmfBinaryRasterOp.values()) {
             if (bb.opIndex == opIndex) {
index ee5912773fe23680a01285b04dfcc3d77389216e..82baf52036de45f2b7f0a90ef084c1856c3d8ffe 100644 (file)
@@ -163,9 +163,9 @@ public class HwmfEscape implements HwmfRecord {
         MXDC_ESCAPE(0x101A, WmfEscapeUnknownData::new),
         /** Enables applications to include private procedures and other arbitrary data in documents. */
         SPCLPASSTHROUGH2(0x11D8, WmfEscapeUnknownData::new);
-        
-        public int flag;
-        public final Supplier<? extends HwmfEscape.HwmfEscapeData> constructor;
+
+        private final int flag;
+        private final Supplier<? extends HwmfEscape.HwmfEscapeData> constructor;
 
 
         EscapeFunction(int flag, Supplier<? extends HwmfEscape.HwmfEscapeData> constructor) {
@@ -173,6 +173,14 @@ public class HwmfEscape implements HwmfRecord {
             this.constructor = constructor;
         }
 
+        public int getFlag() {
+            return flag;
+        }
+
+        public Supplier<? extends HwmfEscapeData> getConstructor() {
+            return constructor;
+        }
+
         static EscapeFunction valueOf(int flag) {
             for (EscapeFunction hs : values()) {
                 if (hs.flag == flag) return hs;
@@ -180,14 +188,14 @@ public class HwmfEscape implements HwmfRecord {
             return null;
         }
     }
-    
+
     public interface HwmfEscapeData {
         public int init(LittleEndianInputStream leis, long recordSize, EscapeFunction escapeFunction) throws IOException;
     }
 
 
     /**
-     * A 16-bit unsigned integer that defines the escape function. The 
+     * A 16-bit unsigned integer that defines the escape function. The
      * value MUST be from the MetafileEscapes enumeration.
      */
     private EscapeFunction escapeFunction;
@@ -197,7 +205,7 @@ public class HwmfEscape implements HwmfRecord {
     public HwmfRecordType getWmfRecordType() {
         return HwmfRecordType.escape;
     }
-    
+
     @Override
     public int init(LittleEndianInputStream leis, long recordSize, int recordFunction) throws IOException {
         escapeFunction = EscapeFunction.valueOf(leis.readUShort());
@@ -221,9 +229,9 @@ public class HwmfEscape implements HwmfRecord {
 
     @Override
     public void draw(HwmfGraphics ctx) {
-        
+
     }
-    
+
     public String toString() {
         return GenericRecordJsonWriter.marshal(this);
     }
@@ -247,7 +255,7 @@ public class HwmfEscape implements HwmfRecord {
         @Override
         public int init(LittleEndianInputStream leis, long recordSize, EscapeFunction escapeFunction) throws IOException {
             this.escapeFunction = escapeFunction;
-            escapeDataBytes = IOUtils.toByteArray(leis,recordSize,MAX_OBJECT_SIZE);
+            escapeDataBytes = IOUtils.toByteArray(leis,(int)recordSize,MAX_OBJECT_SIZE);
             return (int)recordSize;
         }
 
@@ -290,7 +298,7 @@ public class HwmfEscape implements HwmfRecord {
             if (commentIdentifier != EMF_COMMENT_IDENTIFIER) {
                 // there are some WMF implementation using this record as a MFCOMMENT or similar
                 // if the commentIdentifier doesn't match, then return immediately
-                emfData = IOUtils.toByteArray(leis, recordSize-LittleEndianConsts.INT_SIZE, MAX_OBJECT_SIZE);
+                emfData = IOUtils.toByteArray(leis, (int)(recordSize-LittleEndianConsts.INT_SIZE), MAX_OBJECT_SIZE);
                 remainingBytes = emfData.length;
                 return (int)recordSize;
             }
index 2d1a0656703241c7622d22bf21e7dda7ffbdc0e0..addf32d652b5060d1b60aee7a8f33d17caf3e6c2 100644 (file)
@@ -47,14 +47,22 @@ public enum HwmfHatchStyle {
     HS_DITHEREDBKCLR(0x000B, 0xAA55AA55AA55AA55L)
     ;
 
-    int flag;
-    public long pattern;
+    private final int flag;
+    private final long pattern;
 
     HwmfHatchStyle(int flag, long pattern) {
         this.flag = flag;
         this.pattern = pattern;
     }
 
+    public int getFlag() {
+        return flag;
+    }
+
+    public long getPattern() {
+        return pattern;
+    }
+
     public static HwmfHatchStyle valueOf(int flag) {
         for (HwmfHatchStyle hs : values()) {
             if (hs.flag == flag) return hs;
index 5976322e90fb61215675855c554c74a7cdd01e35..fced0a24a5c0e9fba7e83b28ebd4745be9058911 100644 (file)
@@ -129,6 +129,7 @@ public class HwmfPenStyle implements Duplicatable, GenericRecord {
 
         public final int wmfFlag;
         public final float[] dashes;
+
         HwmfLineDash(int wmfFlag, float... dashes) {
             this.wmfFlag = wmfFlag;
             this.dashes = dashes;
index b4c0b6ce423c7d78a3dbf08e0f371317a1d48718..2f79af40879974f1da25c9ced563156373b3ce3f 100644 (file)
@@ -370,7 +370,7 @@ public enum HwmfTernaryRasterOp {
 
     private static final String OPS = "nxoa";
 
-    public int opValue;
+    private final int opValue;
 
     HwmfTernaryRasterOp(int opValue) {
         this.opValue=opValue;
index 24bb97f2e906d6836f2e100faea5e101a3779b4c..a8b07c085a972088aa40f0acd1ae8c9e9a6caa70 100644 (file)
@@ -19,14 +19,12 @@ package org.apache.poi.hwpf.converter;
 import org.apache.poi.util.Beta;
 
 @Beta
-public interface FontReplacer
-{
-    public class Triplet
-    {
+public interface FontReplacer {
+    class Triplet {
         public String fontName;
         public boolean bold;
         public boolean italic;
     }
 
-    public Triplet update( Triplet original );
+    Triplet update(Triplet original);
 }
index d38e883aaf0679e8679f397c62a980f957920169..c91a38f34168c8072889fc72861cd288a31ab045 100644 (file)
@@ -46,11 +46,11 @@ public final class Picture {
     private static final POILogger log = POILogFactory
             .getLogger( Picture.class );
 
-    public static final byte[] COMPRESSED1 = { (byte) 0xFE, 0x78, (byte) 0xDA };
+    private static final byte[] COMPRESSED1 = { (byte) 0xFE, 0x78, (byte) 0xDA };
 
-    public static final byte[] COMPRESSED2 = { (byte) 0xFE, 0x78, (byte) 0x9C };
+    private static final byte[] COMPRESSED2 = { (byte) 0xFE, 0x78, (byte) 0x9C };
 
-    public static final byte[] IHDR = new byte[] { 'I', 'H', 'D', 'R' };
+    private static final byte[] IHDR = new byte[] { 'I', 'H', 'D', 'R' };
 
     @Deprecated
     private static final byte[] PNG = new byte[] { (byte) 0x89, 0x50, 0x4E,
@@ -119,7 +119,7 @@ public final class Picture {
         } else {
             _blipRecords = Collections.emptyList();
         }
-        
+
         if ( fillBytes ) {
             fillImageContent();
         }
@@ -177,16 +177,16 @@ public final class Picture {
     {
         /*
          * http://www.codecomments.com/archive281-2004-3-158083.html
-         * 
+         *
          * Algorithm proposed by Patrick TJ McPhee:
-         * 
+         *
          * read 2 bytes make sure they are 'ffd8'x repeatedly: read 2 bytes make
          * sure the first one is 'ff'x if the second one is 'd9'x stop else if
          * the second one is c0 or c2 (or possibly other values ...) skip 2
          * bytes read one byte into depth read two bytes into height read two
          * bytes into width else read two bytes into length skip forward
          * length-2 bytes
-         * 
+         *
          * Also used Ruby code snippet from:
          * http://www.bigbold.com/snippets/posts/show/805 for reference
          */
@@ -321,7 +321,7 @@ public final class Picture {
     /**
      * Gets the initial width of the picture, in twips, prior to cropping or
      * scaling.
-     * 
+     *
      * @return the initial width of the picture in twips
      */
     public int getDxaGoal()
@@ -352,7 +352,7 @@ public final class Picture {
     /**
      * Gets the initial height of the picture, in twips, prior to cropping or
      * scaling.
-     * 
+     *
      * @return the initial width of the picture in twips
      */
     public int getDyaGoal()
@@ -384,7 +384,7 @@ public final class Picture {
 
     /**
      * Returns the MIME type for the image
-     * 
+     *
      * @return MIME-type for known types of image or "image/unknown" if unknown
      */
     public String getMimeType()
@@ -395,7 +395,7 @@ public final class Picture {
     /**
      * Returns picture's content as stored in the Word file, i.e. possibly in
      * compressed form.
-     * 
+     *
      * @return picture's content as it stored in Word file or an empty byte array
      *      if it cannot be read.
      */
@@ -416,14 +416,14 @@ public final class Picture {
             EscherBlipRecord blip = ( (EscherBSERecord) escherRecord ).getBlipRecord();
             if (blip != null) {
                 return blip.getPicturedata();
-            
+
             }
         }
         return new byte[0];
     }
 
     /**
-     * 
+     *
      * @return size in bytes of the picture
      */
     public int getSize()
@@ -460,10 +460,10 @@ public final class Picture {
         }
         return width;
     }
-    
+
     /**
      * returns the description stored in the alternative text
-     * 
+     *
      * @return pictue description
      */
     public String getDescription()
@@ -486,7 +486,7 @@ public final class Picture {
     /**
      * tries to suggest extension for picture's file by matching signatures of
      * popular image formats to first bytes of picture's contents
-     * 
+     *
      * @return suggested file extension
      */
     public String suggestFileExtension()
@@ -498,7 +498,7 @@ public final class Picture {
      * Tries to suggest a filename: hex representation of picture structure
      * offset in "Data" stream plus extension that is tried to determine from
      * first byte of picture's content.
-     * 
+     *
      * @return suggested file name
      */
     public String suggestFullFileName()
@@ -571,7 +571,7 @@ public final class Picture {
      * Writes Picture's content bytes to specified OutputStream. Is useful when
      * there is need to write picture bytes directly to stream, omitting its
      * representation in memory as distinct byte array.
-     * 
+     *
      * @param out
      *            a stream to write to
      * @throws IOException
index 077c290849fb0696faec0c9a0b558cab628ab1ae..5ab8857233c22a287b43b41da202bc137021d738 100644 (file)
@@ -214,18 +214,18 @@ public final class TestBasics {
    @Test
    public void testEncoding() throws Exception {
       assertEquals(2, cyrillic.getRecipientDetailsChunks().length);
-      assertEquals("CP1252", cyrillic.getRecipientDetailsChunks()[0].recipientDisplayNameChunk.get7BitEncoding());
-      assertEquals("CP1252", cyrillic.getRecipientDetailsChunks()[1].recipientDisplayNameChunk.get7BitEncoding());
+      assertEquals("CP1252", cyrillic.getRecipientDetailsChunks()[0].getRecipientDisplayNameChunk().get7BitEncoding());
+      assertEquals("CP1252", cyrillic.getRecipientDetailsChunks()[1].getRecipientDisplayNameChunk().get7BitEncoding());
 
       cyrillic.guess7BitEncoding();
 
-      assertEquals("Cp1251", cyrillic.getRecipientDetailsChunks()[0].recipientDisplayNameChunk.get7BitEncoding());
-      assertEquals("Cp1251", cyrillic.getRecipientDetailsChunks()[1].recipientDisplayNameChunk.get7BitEncoding());
+      assertEquals("Cp1251", cyrillic.getRecipientDetailsChunks()[0].getRecipientDisplayNameChunk().get7BitEncoding());
+      assertEquals("Cp1251", cyrillic.getRecipientDetailsChunks()[1].getRecipientDisplayNameChunk().get7BitEncoding());
 
       // Override it, check it's taken
       cyrillic.set7BitEncoding("UTF-8");
-      assertEquals("UTF-8", cyrillic.getRecipientDetailsChunks()[0].recipientDisplayNameChunk.get7BitEncoding());
-      assertEquals("UTF-8", cyrillic.getRecipientDetailsChunks()[1].recipientDisplayNameChunk.get7BitEncoding());
+      assertEquals("UTF-8", cyrillic.getRecipientDetailsChunks()[0].getRecipientDisplayNameChunk().get7BitEncoding());
+      assertEquals("UTF-8", cyrillic.getRecipientDetailsChunks()[1].getRecipientDisplayNameChunk().get7BitEncoding());
 
 
       // Check with a file that has no headers
@@ -235,10 +235,10 @@ public final class TestBasics {
       assertTrue(html.contains("text/html; charset=big5"), "Charset not found:\n" + html);
 
       // Defaults to CP1251
-      assertEquals("CP1252", chinese.getRecipientDetailsChunks()[0].recipientDisplayNameChunk.get7BitEncoding());
+      assertEquals("CP1252", chinese.getRecipientDetailsChunks()[0].getRecipientDisplayNameChunk().get7BitEncoding());
 
       // But after guessing goes to the correct one, cp950 (Windows Traditional Chinese)
       chinese.guess7BitEncoding();
-      assertEquals("cp950", chinese.getRecipientDetailsChunks()[0].recipientDisplayNameChunk.get7BitEncoding());
+      assertEquals("cp950", chinese.getRecipientDetailsChunks()[0].getRecipientDisplayNameChunk().get7BitEncoding());
    }
 }
index c3ddf2b7fc3c07d4c206203e81242a352e5db515..2d7cc1355dd60ed5f8a490c3aa96caad9d812a8c 100644 (file)
@@ -59,7 +59,7 @@ public class TestNameIdChunks {
      */
     @Test
     public void testReadKeywords() {
-        long keywordsPropTag = keywordsMsg.getNameIdChunks().getPropertyTag(PS_PUBLIC_STRINGS.classID, "Keywords", 0);
+        long keywordsPropTag = keywordsMsg.getNameIdChunks().getPropertyTag(PS_PUBLIC_STRINGS.getClassID(), "Keywords", 0);
         assertEquals(0x8003, keywordsPropTag);
         String[] exp = { "TODO", "Currently Important", "Currently To Do", "Test" };
         String[] act = getValues(keywordsPropTag);
@@ -72,7 +72,7 @@ public class TestNameIdChunks {
      */
     @Test
     public void testCurrentVersionName() {
-        long testPropTag = keywordsMsg.getNameIdChunks().getPropertyTag(PSETID_COMMON.classID, null, 0x8554);
+        long testPropTag = keywordsMsg.getNameIdChunks().getPropertyTag(PSETID_COMMON.getClassID(), null, 0x8554);
         assertEquals(0x8006, testPropTag);
         String[] exp = { "16.0" };
         String[] act = getValues(testPropTag);
index 8b134f76b294a842696d2a5f040d4091d1bc36d2..9f68c44b03a5ef100966d5de92b550b3d0167245 100644 (file)
@@ -72,8 +72,8 @@ public final class TestSorters {
             new RecipientChunks("__recip_version1.0_#00000000"),
       };
       Arrays.sort(chunks, new RecipientChunksSorter());
-      assertEquals(0, chunks[0].recipientNumber);
-      assertEquals(1, chunks[1].recipientNumber);
+      assertEquals(0, chunks[0].getRecipientNumber());
+      assertEquals(1, chunks[1].getRecipientNumber());
 
       // Lots, with gaps
       chunks = new RecipientChunks[] {
@@ -87,13 +87,13 @@ public final class TestSorters {
             new RecipientChunks("__recip_version1.0_#00000000"),
       };
       Arrays.sort(chunks, new RecipientChunksSorter());
-      assertEquals(0, chunks[0].recipientNumber);
-      assertEquals(1, chunks[1].recipientNumber);
-      assertEquals(5, chunks[2].recipientNumber);
-      assertEquals(9, chunks[3].recipientNumber);
-      assertEquals(0xFF, chunks[4].recipientNumber);
-      assertEquals(0x205, chunks[5].recipientNumber);
-      assertEquals(0x404, chunks[6].recipientNumber);
-      assertEquals(0x20001, chunks[7].recipientNumber);
+      assertEquals(0, chunks[0].getRecipientNumber());
+      assertEquals(1, chunks[1].getRecipientNumber());
+      assertEquals(5, chunks[2].getRecipientNumber());
+      assertEquals(9, chunks[3].getRecipientNumber());
+      assertEquals(0xFF, chunks[4].getRecipientNumber());
+      assertEquals(0x205, chunks[5].getRecipientNumber());
+      assertEquals(0x404, chunks[6].getRecipientNumber());
+      assertEquals(0x20001, chunks[7].getRecipientNumber());
    }
 }
index c68326dee095e32f3ae8ddb67f929a24090d681d..e8f175266a4cb84805b0e4b042b8dd4b2a41dc56 100644 (file)
@@ -90,11 +90,11 @@ public final class TestPOIFSChunkParser {
       assertTrue(groups[2] instanceof NameIdChunks);
 
       RecipientChunks recips = (RecipientChunks)groups[1];
-      assertEquals("kevin.roast@alfresco.org", recips.recipientSMTPChunk.getValue());
+      assertEquals("kevin.roast@alfresco.org", recips.getRecipientSMTPChunk().getValue());
       assertEquals("/O=HOSTEDSERVICE2/OU=FIRST ADMINISTRATIVE GROUP/CN=RECIPIENTS/CN=Kevin.roast@ben",
-            recips.recipientEmailChunk.getValue());
+            recips.getRecipientEmailChunk().getValue());
 
-      String search = new String(recips.recipientSearchChunk.getValue(), StandardCharsets.US_ASCII);
+      String search = new String(recips.getRecipientSearchChunk().getValue(), StandardCharsets.US_ASCII);
       assertEquals("CN=KEVIN.ROAST@BEN\0", search.substring(search.length()-19));
 
       // Now via MAPIMessage
@@ -102,17 +102,17 @@ public final class TestPOIFSChunkParser {
       assertNotNull(msg.getRecipientDetailsChunks());
       assertEquals(1, msg.getRecipientDetailsChunks().length);
 
-      assertEquals("kevin.roast@alfresco.org", msg.getRecipientDetailsChunks()[0].recipientSMTPChunk.getValue());
+      assertEquals("kevin.roast@alfresco.org", msg.getRecipientDetailsChunks()[0].getRecipientSMTPChunk().getValue());
       assertEquals("kevin.roast@alfresco.org", msg.getRecipientDetailsChunks()[0].getRecipientEmailAddress());
       assertEquals("Kevin Roast", msg.getRecipientDetailsChunks()[0].getRecipientName());
       assertEquals("kevin.roast@alfresco.org", msg.getRecipientEmailAddress());
 
 
       // Try both SMTP and EX files for recipient
-      assertEquals("EX", msg.getRecipientDetailsChunks()[0].deliveryTypeChunk.getValue());
-      assertEquals("kevin.roast@alfresco.org", msg.getRecipientDetailsChunks()[0].recipientSMTPChunk.getValue());
+      assertEquals("EX", msg.getRecipientDetailsChunks()[0].getDeliveryTypeChunk().getValue());
+      assertEquals("kevin.roast@alfresco.org", msg.getRecipientDetailsChunks()[0].getRecipientSMTPChunk().getValue());
       assertEquals("/O=HOSTEDSERVICE2/OU=FIRST ADMINISTRATIVE GROUP/CN=RECIPIENTS/CN=Kevin.roast@ben",
-            msg.getRecipientDetailsChunks()[0].recipientEmailChunk.getValue());
+            msg.getRecipientDetailsChunks()[0].getRecipientEmailChunk().getValue());
       msg.close();
       simple.close();
 
@@ -123,10 +123,10 @@ public final class TestPOIFSChunkParser {
       assertNotNull(msg.getRecipientDetailsChunks());
       assertEquals(1, msg.getRecipientDetailsChunks().length);
 
-      assertEquals("SMTP", msg.getRecipientDetailsChunks()[0].deliveryTypeChunk.getValue());
-      assertNull(msg.getRecipientDetailsChunks()[0].recipientSMTPChunk);
-      assertNull(msg.getRecipientDetailsChunks()[0].recipientNameChunk);
-      assertEquals("travis@overwrittenstack.com", msg.getRecipientDetailsChunks()[0].recipientEmailChunk.getValue());
+      assertEquals("SMTP", msg.getRecipientDetailsChunks()[0].getDeliveryTypeChunk().getValue());
+      assertNull(msg.getRecipientDetailsChunks()[0].getRecipientSMTPChunk());
+      assertNull(msg.getRecipientDetailsChunks()[0].getRecipientNameChunk());
+      assertEquals("travis@overwrittenstack.com", msg.getRecipientDetailsChunks()[0].getRecipientEmailChunk().getValue());
       assertEquals("travis@overwrittenstack.com", msg.getRecipientEmailAddress());
 
       msg.close();
@@ -166,12 +166,12 @@ public final class TestPOIFSChunkParser {
             (RecipientChunks)groups[7],
       };
       assertEquals(6, chunks.length);
-      assertEquals(0, chunks[0].recipientNumber);
-      assertEquals(2, chunks[1].recipientNumber);
-      assertEquals(4, chunks[2].recipientNumber);
-      assertEquals(5, chunks[3].recipientNumber);
-      assertEquals(3, chunks[4].recipientNumber);
-      assertEquals(1, chunks[5].recipientNumber);
+      assertEquals(0, chunks[0].getRecipientNumber());
+      assertEquals(2, chunks[1].getRecipientNumber());
+      assertEquals(4, chunks[2].getRecipientNumber());
+      assertEquals(5, chunks[3].getRecipientNumber());
+      assertEquals(3, chunks[4].getRecipientNumber());
+      assertEquals(1, chunks[5].getRecipientNumber());
 
       // Check
       assertEquals("'Ashutosh Dandavate'", chunks[0].getRecipientName());
index 342335e267e56dfc52ff62f97076a3af6851827a..ff955df1e3a8aa14171d4f0def146421b6ecb82b 100644 (file)
@@ -1640,8 +1640,8 @@ public final class TestBugs extends BaseTestBugzillaIssues {
                     }
                 }
                 assertNotNull(tr);
-                assertEquals(1, tr._tabids.length);
-                assertEquals(0, tr._tabids[0]);
+                assertEquals(1, tr.getTabIdSize());
+                assertEquals(0, tr.getTabIdAt(0));
 
                 // Ensure the print setup
                 assertEquals("new_sheet!$A$1:$C$1", wb2.getPrintArea(0));
index 135cd1f1a6913e4934a074fefa5c6698d247a250..667c58f0d6163f82e8c3ab8e4a797730346f0bb2 100644 (file)
@@ -263,7 +263,7 @@ public final class TestSumifs {
         HSSFSheet example3 = wb.getSheet("Example 3");
         HSSFCell ex3cell = example3.getRow(5).getCell(2);
         fe.evaluate(ex3cell);
-        assertEquals(8,8, ex3cell.getNumericCellValue());
+        assertEquals(8.8, ex3cell.getNumericCellValue(), 0);
 
         HSSFSheet example4 = wb.getSheet("Example 4");
         HSSFCell ex4cell = example4.getRow(8).getCell(2);