You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2020/03/29 14:39:12 UTC

svn commit: r1875859 [1/3] - in /poi/trunk/src: examples/src/org/apache/poi/hssf/usermodel/examples/ examples/src/org/apache/poi/xslf/usermodel/ examples/src/org/apache/poi/xssf/usermodel/examples/ examples/src/org/apache/poi/xwpf/usermodel/examples/ j...

Author: kiwiwings
Date: Sun Mar 29 14:39:11 2020
New Revision: 1875859

URL: http://svn.apache.org/viewvc?rev=1875859&view=rev
Log:
Sonar Fixes
- use String.replace instead of String.replaceAll for literal values
- use constants from base class

- deprecated various references to constants of org.apache.poi.ss.usermodel.FontFormatting - to be replaced by o.a.p.s.u.Font in POI 5.0.0

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/OfficeDrawing.java
    poi/trunk/src/examples/src/org/apache/poi/xslf/usermodel/BarChartDemo.java
    poi/trunk/src/examples/src/org/apache/poi/xslf/usermodel/ChartFromScratch.java
    poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithRichText.java
    poi/trunk/src/examples/src/org/apache/poi/xwpf/usermodel/examples/ChartFromScratch.java
    poi/trunk/src/examples/src/org/apache/poi/xwpf/usermodel/examples/SimpleImages.java
    poi/trunk/src/java/org/apache/poi/ddf/EscherProperties.java
    poi/trunk/src/java/org/apache/poi/ddf/EscherPropertyTypes.java
    poi/trunk/src/java/org/apache/poi/hssf/record/EmbeddedObjectRefSubRecord.java
    poi/trunk/src/java/org/apache/poi/hssf/record/cf/FontFormatting.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingRule.java
    poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFFontFormatting.java
    poi/trunk/src/java/org/apache/poi/ss/formula/functions/Roman.java
    poi/trunk/src/java/org/apache/poi/ss/usermodel/DataFormatter.java
    poi/trunk/src/java/org/apache/poi/ss/usermodel/ExcelStyleDateFormatter.java
    poi/trunk/src/java/org/apache/poi/ss/usermodel/Font.java
    poi/trunk/src/java/org/apache/poi/ss/usermodel/FontFormatting.java
    poi/trunk/src/java/org/apache/poi/ss/util/DateFormatConverter.java
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFontFormatting.java
    poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/converter/WordToTextConverter.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestCFRuleRecord.java
    poi/trunk/src/testcases/org/apache/poi/ss/usermodel/BaseTestConditionalFormatting.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=1875859&r1=1875858&r2=1875859&view=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 Sun Mar 29 14:39:11 2020
@@ -30,6 +30,7 @@ import org.apache.poi.hssf.usermodel.HSS
 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.usermodel.Workbook;
 import org.apache.poi.ss.util.CellReference;
 import org.apache.poi.util.IOUtils;
 
@@ -304,7 +305,7 @@ public class AddDimensionedImage {
         // however.
         //int index = sheet.getWorkbook().addPicture(this.imageToBytes(imageFile),
         //            HSSFWorkbook.PICTURE_TYPE_JPEG);
-        int index = sheet.getWorkbook().addPicture(this.imageToBytes(imageFile), HSSFWorkbook.PICTURE_TYPE_PNG);
+        int index = sheet.getWorkbook().addPicture(this.imageToBytes(imageFile), Workbook.PICTURE_TYPE_PNG);
 
         // Get the drawing patriarch and create the picture.
         patriarch = sheet.createDrawingPatriarch();

Modified: poi/trunk/src/examples/src/org/apache/poi/hssf/usermodel/examples/OfficeDrawing.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/hssf/usermodel/examples/OfficeDrawing.java?rev=1875859&r1=1875858&r2=1875859&view=diff
==============================================================================
--- poi/trunk/src/examples/src/org/apache/poi/hssf/usermodel/examples/OfficeDrawing.java (original)
+++ poi/trunk/src/examples/src/org/apache/poi/hssf/usermodel/examples/OfficeDrawing.java Sun Mar 29 14:39:11 2020
@@ -17,17 +17,35 @@
 
 package org.apache.poi.hssf.usermodel.examples;
 
-import org.apache.poi.hssf.usermodel.*;
+import java.io.ByteArrayOutputStream;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import org.apache.poi.hssf.usermodel.HSSFChildAnchor;
+import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
+import org.apache.poi.hssf.usermodel.HSSFFont;
+import org.apache.poi.hssf.usermodel.HSSFPatriarch;
+import org.apache.poi.hssf.usermodel.HSSFPicture;
+import org.apache.poi.hssf.usermodel.HSSFPolygon;
+import org.apache.poi.hssf.usermodel.HSSFRichTextString;
+import org.apache.poi.hssf.usermodel.HSSFRow;
+import org.apache.poi.hssf.usermodel.HSSFShape;
+import org.apache.poi.hssf.usermodel.HSSFShapeGroup;
+import org.apache.poi.hssf.usermodel.HSSFSheet;
+import org.apache.poi.hssf.usermodel.HSSFSimpleShape;
+import org.apache.poi.hssf.usermodel.HSSFTextbox;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.ClientAnchor.AnchorType;
-
-import java.io.*;
+import org.apache.poi.ss.usermodel.Font;
+import org.apache.poi.ss.usermodel.Workbook;
 
 /**
  * Demonstrates how to use the office drawing capabilities of POI.
- *
- * @author Glen Stampoultzis (glens at apache.org)
  */
-public class OfficeDrawing {
+public final class OfficeDrawing {
+    private OfficeDrawing() {}
+
     public static void main(String[] args) throws IOException {
         // Create the workbook and sheets.
         try (HSSFWorkbook wb = new HSSFWorkbook()) {
@@ -129,19 +147,19 @@ public class OfficeDrawing {
                 new HSSFClientAnchor(0,0,900,100,(short)3,3,(short)3,4));
         textbox2.setString(new HSSFRichTextString("Woo") );
         textbox2.setFillColor(200,0,0);
-        textbox2.setLineStyle(HSSFSimpleShape.LINESTYLE_DOTGEL);
+        textbox2.setLineStyle(HSSFShape.LINESTYLE_DOTGEL);
 
         // Create third one with some fancy font styling.
         HSSFTextbox textbox3 = patriarch.createTextbox(
                 new HSSFClientAnchor(0,0,900,100,(short)4,4,(short)5,4+1));
         HSSFFont font = wb.createFont();
         font.setItalic(true);
-        font.setUnderline(HSSFFont.U_DOUBLE);
+        font.setUnderline(Font.U_DOUBLE);
         HSSFRichTextString string = new HSSFRichTextString("Woo!!!");
         string.applyFont(2,5,font);
         textbox3.setString(string );
         textbox3.setFillColor(0x08000030);
-        textbox3.setLineStyle(HSSFSimpleShape.LINESTYLE_NONE);  // no line around the textbox.
+        textbox3.setLineStyle(HSSFShape.LINESTYLE_NONE);  // no line around the textbox.
         textbox3.setNoFill(true);    // make it transparent
     }
 
@@ -178,7 +196,7 @@ public class OfficeDrawing {
             int c;
             while ((c = fis.read()) != -1)
                 bos.write(c);
-            pictureIndex = wb.addPicture(bos.toByteArray(), HSSFWorkbook.PICTURE_TYPE_PNG);
+            pictureIndex = wb.addPicture(bos.toByteArray(), Workbook.PICTURE_TYPE_PNG);
         }
         return pictureIndex;
     }
@@ -247,9 +265,9 @@ public class OfficeDrawing {
         double xRatio = 3.22;
         double yRatio = 0.6711;
 
-        int x1 = 000;
-        int y1 = 000;
-        int x2 = 000;
+        int x1 = 0;
+        int y1 = 0;
+        int x2 = 0;
         int y2 = 200;
         for (int i = 0; i < 20; i++)
         {
@@ -263,10 +281,10 @@ public class OfficeDrawing {
             x2 += 10;
         }
 
-        x1 = 000;
-        y1 = 000;
+        x1 = 0;
+        y1 = 0;
         x2 = 200;
-        y2 = 000;
+        y2 = 0;
         for (int i = 0; i < 20; i++)
         {
             HSSFClientAnchor a2 = new HSSFClientAnchor();

Modified: poi/trunk/src/examples/src/org/apache/poi/xslf/usermodel/BarChartDemo.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/xslf/usermodel/BarChartDemo.java?rev=1875859&r1=1875858&r2=1875859&view=diff
==============================================================================
--- poi/trunk/src/examples/src/org/apache/poi/xslf/usermodel/BarChartDemo.java (original)
+++ poi/trunk/src/examples/src/org/apache/poi/xslf/usermodel/BarChartDemo.java Sun Mar 29 14:39:11 2020
@@ -41,7 +41,9 @@ import org.apache.poi.xddf.usermodel.cha
 /**
  * Build a bar chart from a template pptx
  */
-public class BarChartDemo {
+public final class BarChartDemo {
+    private BarChartDemo() {}
+
     private static void usage(){
         System.out.println("Usage: BarChartDemo <bar-chart-template.pptx> <bar-chart-data.txt>");
         System.out.println("    bar-chart-template.pptx     template with a bar chart");
@@ -100,19 +102,19 @@ public class BarChartDemo {
         final XDDFBarChartData bar = (XDDFBarChartData) data.get(0);
 
         final int numOfPoints = categories.length;
-        final String categoryDataRange = chart.formatRange(new CellRangeAddress(1, numOfPoints, columnLanguages, columnLanguages));
-        final String valuesDataRange = chart.formatRange(new CellRangeAddress(1, numOfPoints, columnCountries, columnCountries));
-        final String valuesDataRange2 = chart.formatRange(new CellRangeAddress(1, numOfPoints, columnSpeakers, columnSpeakers));
-        final XDDFDataSource<?> categoriesData = XDDFDataSourcesFactory.fromArray(categories, categoryDataRange, columnLanguages);
-        final XDDFNumericalDataSource<? extends Number> valuesData = XDDFDataSourcesFactory.fromArray(values1, valuesDataRange, columnCountries);
+        final String categoryDataRange = chart.formatRange(new CellRangeAddress(1, numOfPoints, COLUMN_LANGUAGES, COLUMN_LANGUAGES));
+        final String valuesDataRange = chart.formatRange(new CellRangeAddress(1, numOfPoints, COLUMN_COUNTRIES, COLUMN_COUNTRIES));
+        final String valuesDataRange2 = chart.formatRange(new CellRangeAddress(1, numOfPoints, COLUMN_SPEAKERS, COLUMN_SPEAKERS));
+        final XDDFDataSource<?> categoriesData = XDDFDataSourcesFactory.fromArray(categories, categoryDataRange, COLUMN_LANGUAGES);
+        final XDDFNumericalDataSource<? extends Number> valuesData = XDDFDataSourcesFactory.fromArray(values1, valuesDataRange, COLUMN_COUNTRIES);
         values1[6] = 16.0; // if you ever want to change the underlying data, it has to be done before building the data source
-        final XDDFNumericalDataSource<? extends Number> valuesData2 = XDDFDataSourcesFactory.fromArray(values2, valuesDataRange2, columnSpeakers);
+        final XDDFNumericalDataSource<? extends Number> valuesData2 = XDDFDataSourcesFactory.fromArray(values2, valuesDataRange2, COLUMN_SPEAKERS);
 
         XDDFChartData.Series series1 = bar.getSeries(0);
         series1.replaceData(categoriesData, valuesData);
-        series1.setTitle(series[0], chart.setSheetTitle(series[0], columnCountries));
+        series1.setTitle(series[0], chart.setSheetTitle(series[0], COLUMN_COUNTRIES));
         XDDFChartData.Series series2 = bar.addSeries(categoriesData, valuesData2);
-        series2.setTitle(series[1], chart.setSheetTitle(series[1], columnSpeakers));
+        series2.setTitle(series[1], chart.setSheetTitle(series[1], COLUMN_SPEAKERS));
 
         chart.plot(bar);
         chart.setTitleText(chartTitle); // https://stackoverflow.com/questions/30532612
@@ -155,7 +157,7 @@ public class BarChartDemo {
         return chart;
     }
 
-    private static final int columnLanguages = 0;
-    private static final int columnCountries = 1;
-    private static final int columnSpeakers = 2;
+    private static final int COLUMN_LANGUAGES = 0;
+    private static final int COLUMN_COUNTRIES = 1;
+    private static final int COLUMN_SPEAKERS = 2;
 }

Modified: poi/trunk/src/examples/src/org/apache/poi/xslf/usermodel/ChartFromScratch.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/xslf/usermodel/ChartFromScratch.java?rev=1875859&r1=1875858&r2=1875859&view=diff
==============================================================================
--- poi/trunk/src/examples/src/org/apache/poi/xslf/usermodel/ChartFromScratch.java (original)
+++ poi/trunk/src/examples/src/org/apache/poi/xslf/usermodel/ChartFromScratch.java Sun Mar 29 14:39:11 2020
@@ -49,7 +49,9 @@ import org.apache.poi.xddf.usermodel.cha
 /**
  * Build a chart without reading template file
  */
-public class ChartFromScratch {
+public final class ChartFromScratch {
+    private ChartFromScratch() {}
+
     private static void usage(){
         System.out.println("Usage: ChartFromScratch <bar-chart-data.txt>");
         System.out.println("    bar-chart-data.txt          the model to set. First line is chart title, " +
@@ -138,14 +140,14 @@ public class ChartFromScratch {
         leftAxis.setCrossBetween(AxisCrossBetween.BETWEEN);
 
         final int numOfPoints = categories.length;
-        final String categoryDataRange = chart.formatRange(new CellRangeAddress(1, numOfPoints, columnLanguages, columnLanguages));
-        final String valuesDataRange = chart.formatRange(new CellRangeAddress(1, numOfPoints, columnCountries, columnCountries));
-        final String valuesDataRange2 = chart.formatRange(new CellRangeAddress(1, numOfPoints, columnSpeakers, columnSpeakers));
-        final XDDFDataSource<?> categoriesData = XDDFDataSourcesFactory.fromArray(categories, categoryDataRange, columnLanguages);
-        final XDDFNumericalDataSource<? extends Number> valuesData = XDDFDataSourcesFactory.fromArray(values1, valuesDataRange, columnCountries);
+        final String categoryDataRange = chart.formatRange(new CellRangeAddress(1, numOfPoints, COLUMN_LANGUAGES, COLUMN_LANGUAGES));
+        final String valuesDataRange = chart.formatRange(new CellRangeAddress(1, numOfPoints, COLUMN_COUNTRIES, COLUMN_COUNTRIES));
+        final String valuesDataRange2 = chart.formatRange(new CellRangeAddress(1, numOfPoints, COLUMN_SPEAKERS, COLUMN_SPEAKERS));
+        final XDDFDataSource<?> categoriesData = XDDFDataSourcesFactory.fromArray(categories, categoryDataRange, COLUMN_LANGUAGES);
+        final XDDFNumericalDataSource<? extends Number> valuesData = XDDFDataSourcesFactory.fromArray(values1, valuesDataRange, COLUMN_COUNTRIES);
         valuesData.setFormatCode("General");
         values1[6] = 16.0; // if you ever want to change the underlying data, it has to be done before building the data source
-        final XDDFNumericalDataSource<? extends Number> valuesData2 = XDDFDataSourcesFactory.fromArray(values2, valuesDataRange2, columnSpeakers);
+        final XDDFNumericalDataSource<? extends Number> valuesData2 = XDDFDataSourcesFactory.fromArray(values2, valuesDataRange2, COLUMN_SPEAKERS);
         valuesData2.setFormatCode("General");
 
 
@@ -153,10 +155,10 @@ public class ChartFromScratch {
         bar.setBarGrouping(BarGrouping.CLUSTERED);
 
         XDDFBarChartData.Series series1 = (XDDFBarChartData.Series) bar.addSeries(categoriesData, valuesData);
-        series1.setTitle(series[0], chart.setSheetTitle(series[0], columnCountries));
+        series1.setTitle(series[0], chart.setSheetTitle(series[0], COLUMN_COUNTRIES));
 
         XDDFBarChartData.Series series2 = (XDDFBarChartData.Series) bar.addSeries(categoriesData, valuesData2);
-        series2.setTitle(series[1], chart.setSheetTitle(series[1], columnSpeakers));
+        series2.setTitle(series[1], chart.setSheetTitle(series[1], COLUMN_SPEAKERS));
 
         bar.setVaryColors(true);
         bar.setBarDirection(BarDirection.COL);
@@ -171,7 +173,7 @@ public class ChartFromScratch {
         chart.setAutoTitleDeleted(false);
     }
 
-    private static final int columnLanguages = 0;
-    private static final int columnCountries = 1;
-    private static final int columnSpeakers = 2;
+    private static final int COLUMN_LANGUAGES = 0;
+    private static final int COLUMN_COUNTRIES = 1;
+    private static final int COLUMN_SPEAKERS = 2;
 }

Modified: poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithRichText.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithRichText.java?rev=1875859&r1=1875858&r2=1875859&view=diff
==============================================================================
--- poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithRichText.java (original)
+++ poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/WorkingWithRichText.java Sun Mar 29 14:39:11 2020
@@ -17,15 +17,24 @@
 
 package org.apache.poi.xssf.usermodel.examples;
 
-import org.apache.poi.xssf.usermodel.*;
-
 import java.io.FileOutputStream;
 import java.io.OutputStream;
 
+import org.apache.poi.ss.usermodel.Font;
+import org.apache.poi.xssf.usermodel.XSSFCell;
+import org.apache.poi.xssf.usermodel.XSSFColor;
+import org.apache.poi.xssf.usermodel.XSSFFont;
+import org.apache.poi.xssf.usermodel.XSSFRichTextString;
+import org.apache.poi.xssf.usermodel.XSSFRow;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+
 /**
  * Demonstrates how to work with rich text
  */
-public class WorkingWithRichText {
+public final class WorkingWithRichText {
+
+    private WorkingWithRichText() {}
 
     public static void main(String[] args) throws Exception {
         try (XSSFWorkbook wb = new XSSFWorkbook()) {
@@ -42,7 +51,7 @@ public class WorkingWithRichText {
 
             XSSFFont font2 = wb.createFont();
             font2.setItalic(true);
-            font2.setUnderline(XSSFFont.U_DOUBLE);
+            font2.setUnderline(Font.U_DOUBLE);
             font2.setColor(new XSSFColor(new java.awt.Color(0, 255, 0), wb.getStylesSource().getIndexedColors()));
             rt.applyFont(10, 19, font2);
 

Modified: poi/trunk/src/examples/src/org/apache/poi/xwpf/usermodel/examples/ChartFromScratch.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/xwpf/usermodel/examples/ChartFromScratch.java?rev=1875859&r1=1875858&r2=1875859&view=diff
==============================================================================
--- poi/trunk/src/examples/src/org/apache/poi/xwpf/usermodel/examples/ChartFromScratch.java (original)
+++ poi/trunk/src/examples/src/org/apache/poi/xwpf/usermodel/examples/ChartFromScratch.java Sun Mar 29 14:39:11 2020
@@ -49,7 +49,9 @@ import org.apache.poi.xwpf.usermodel.XWP
 /**
  * Build a chart without reading template file
  */
-public class ChartFromScratch {
+public final class ChartFromScratch {
+    private ChartFromScratch() {}
+
     private static void usage(){
         System.out.println("Usage: ChartFromScratch <bar-chart-data.txt>");
         System.out.println("    bar-chart-data.txt          the model to set. First line is chart title, " +
@@ -109,14 +111,14 @@ public class ChartFromScratch {
         leftAxis.setCrossBetween(AxisCrossBetween.BETWEEN);
 
         final int numOfPoints = categories.length;
-        final String categoryDataRange = chart.formatRange(new CellRangeAddress(1, numOfPoints, columnLanguages, columnLanguages));
-        final String valuesDataRange = chart.formatRange(new CellRangeAddress(1, numOfPoints, columnCountries, columnCountries));
-        final String valuesDataRange2 = chart.formatRange(new CellRangeAddress(1, numOfPoints, columnSpeakers, columnSpeakers));
-        final XDDFDataSource<?> categoriesData = XDDFDataSourcesFactory.fromArray(categories, categoryDataRange, columnLanguages);
-        final XDDFNumericalDataSource<? extends Number> valuesData = XDDFDataSourcesFactory.fromArray(values1, valuesDataRange, columnCountries);
+        final String categoryDataRange = chart.formatRange(new CellRangeAddress(1, numOfPoints, COLUMN_LANGUAGES, COLUMN_LANGUAGES));
+        final String valuesDataRange = chart.formatRange(new CellRangeAddress(1, numOfPoints, COLUMN_COUNTRIES, COLUMN_COUNTRIES));
+        final String valuesDataRange2 = chart.formatRange(new CellRangeAddress(1, numOfPoints, COLUMN_SPEAKERS, COLUMN_SPEAKERS));
+        final XDDFDataSource<?> categoriesData = XDDFDataSourcesFactory.fromArray(categories, categoryDataRange, COLUMN_LANGUAGES);
+        final XDDFNumericalDataSource<? extends Number> valuesData = XDDFDataSourcesFactory.fromArray(values1, valuesDataRange, COLUMN_COUNTRIES);
         valuesData.setFormatCode("General");
         values1[6] = 16.0; // if you ever want to change the underlying data, it has to be done before building the data source
-        final XDDFNumericalDataSource<? extends Number> valuesData2 = XDDFDataSourcesFactory.fromArray(values2, valuesDataRange2, columnSpeakers);
+        final XDDFNumericalDataSource<? extends Number> valuesData2 = XDDFDataSourcesFactory.fromArray(values2, valuesDataRange2, COLUMN_SPEAKERS);
         valuesData2.setFormatCode("General");
 
 
@@ -124,10 +126,10 @@ public class ChartFromScratch {
         bar.setBarGrouping(BarGrouping.CLUSTERED);
 
         XDDFBarChartData.Series series1 = (XDDFBarChartData.Series) bar.addSeries(categoriesData, valuesData);
-        series1.setTitle(series[0], chart.setSheetTitle(series[0], columnCountries));
+        series1.setTitle(series[0], chart.setSheetTitle(series[0], COLUMN_COUNTRIES));
 
         XDDFBarChartData.Series series2 = (XDDFBarChartData.Series) bar.addSeries(categoriesData, valuesData2);
-        series2.setTitle(series[1], chart.setSheetTitle(series[1], columnSpeakers));
+        series2.setTitle(series[1], chart.setSheetTitle(series[1], COLUMN_SPEAKERS));
 
         bar.setVaryColors(true);
         bar.setBarDirection(BarDirection.COL);
@@ -142,8 +144,8 @@ public class ChartFromScratch {
         chart.setAutoTitleDeleted(false);
     }
 
-    private static final int columnLanguages = 0;
-    private static final int columnCountries = 1;
-    private static final int columnSpeakers = 2;
+    private static final int COLUMN_LANGUAGES = 0;
+    private static final int COLUMN_COUNTRIES = 1;
+    private static final int COLUMN_SPEAKERS = 2;
 }
 

Modified: poi/trunk/src/examples/src/org/apache/poi/xwpf/usermodel/examples/SimpleImages.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/xwpf/usermodel/examples/SimpleImages.java?rev=1875859&r1=1875858&r2=1875859&view=diff
==============================================================================
--- poi/trunk/src/examples/src/org/apache/poi/xwpf/usermodel/examples/SimpleImages.java (original)
+++ poi/trunk/src/examples/src/org/apache/poi/xwpf/usermodel/examples/SimpleImages.java Sun Mar 29 14:39:11 2020
@@ -25,6 +25,7 @@ import java.io.IOException;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.util.Units;
 import org.apache.poi.xwpf.usermodel.BreakType;
+import org.apache.poi.xwpf.usermodel.Document;
 import org.apache.poi.xwpf.usermodel.XWPFDocument;
 import org.apache.poi.xwpf.usermodel.XWPFParagraph;
 import org.apache.poi.xwpf.usermodel.XWPFRun;
@@ -32,7 +33,9 @@ import org.apache.poi.xwpf.usermodel.XWP
 /**
  * Demonstrates how to add pictures in a .docx document
  */
-public class SimpleImages {
+public final class SimpleImages {
+
+    private SimpleImages() {}
 
     public static void main(String[] args) throws IOException, InvalidFormatException {
         try (XWPFDocument doc = new XWPFDocument()) {
@@ -44,27 +47,27 @@ public class SimpleImages {
                 int format;
 
                 if (imgFile.endsWith(".emf")) {
-                    format = XWPFDocument.PICTURE_TYPE_EMF;
+                    format = Document.PICTURE_TYPE_EMF;
                 } else if (imgFile.endsWith(".wmf")) {
-                    format = XWPFDocument.PICTURE_TYPE_WMF;
+                    format = Document.PICTURE_TYPE_WMF;
                 } else if (imgFile.endsWith(".pict")) {
-                    format = XWPFDocument.PICTURE_TYPE_PICT;
+                    format = Document.PICTURE_TYPE_PICT;
                 } else if (imgFile.endsWith(".jpeg") || imgFile.endsWith(".jpg")) {
-                    format = XWPFDocument.PICTURE_TYPE_JPEG;
+                    format = Document.PICTURE_TYPE_JPEG;
                 } else if (imgFile.endsWith(".png")) {
-                    format = XWPFDocument.PICTURE_TYPE_PNG;
+                    format = Document.PICTURE_TYPE_PNG;
                 } else if (imgFile.endsWith(".dib")) {
-                    format = XWPFDocument.PICTURE_TYPE_DIB;
+                    format = Document.PICTURE_TYPE_DIB;
                 } else if (imgFile.endsWith(".gif")) {
-                    format = XWPFDocument.PICTURE_TYPE_GIF;
+                    format = Document.PICTURE_TYPE_GIF;
                 } else if (imgFile.endsWith(".tiff")) {
-                    format = XWPFDocument.PICTURE_TYPE_TIFF;
+                    format = Document.PICTURE_TYPE_TIFF;
                 } else if (imgFile.endsWith(".eps")) {
-                    format = XWPFDocument.PICTURE_TYPE_EPS;
+                    format = Document.PICTURE_TYPE_EPS;
                 } else if (imgFile.endsWith(".bmp")) {
-                    format = XWPFDocument.PICTURE_TYPE_BMP;
+                    format = Document.PICTURE_TYPE_BMP;
                 } else if (imgFile.endsWith(".wpg")) {
-                    format = XWPFDocument.PICTURE_TYPE_WPG;
+                    format = Document.PICTURE_TYPE_WPG;
                 } else {
                     System.err.println("Unsupported picture: " + imgFile +
                             ". Expected emf|wmf|pict|jpeg|png|dib|gif|tiff|eps|bmp|wpg");

Modified: poi/trunk/src/java/org/apache/poi/ddf/EscherProperties.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/EscherProperties.java?rev=1875859&r1=1875858&r2=1875859&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ddf/EscherProperties.java (original)
+++ poi/trunk/src/java/org/apache/poi/ddf/EscherProperties.java Sun Mar 29 14:39:11 2020
@@ -24,7 +24,7 @@ import org.apache.poi.util.Removal;
  *
  * @deprecated use {@link EscherPropertyTypes} enum instead
  */
-@SuppressWarnings({"unused"})
+@SuppressWarnings({"unused","java:S115"})
 @Deprecated
 @Removal(version = "5.0.0")
 public interface EscherProperties {

Modified: poi/trunk/src/java/org/apache/poi/ddf/EscherPropertyTypes.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ddf/EscherPropertyTypes.java?rev=1875859&r1=1875858&r2=1875859&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ddf/EscherPropertyTypes.java (original)
+++ poi/trunk/src/java/org/apache/poi/ddf/EscherPropertyTypes.java Sun Mar 29 14:39:11 2020
@@ -25,6 +25,7 @@ import java.util.stream.Stream;
 /**
  * Provides a list of all known escher properties including the description and type.
  */
+@SuppressWarnings({"java:S115"})
 public enum EscherPropertyTypes {
     TRANSFORM__ROTATION(0x0004, "transform.rotation"),
     PROTECTION__LOCKROTATION(0x0077, "protection.lockrotation"),

Modified: poi/trunk/src/java/org/apache/poi/hssf/record/EmbeddedObjectRefSubRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/EmbeddedObjectRefSubRecord.java?rev=1875859&r1=1875858&r2=1875859&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/record/EmbeddedObjectRefSubRecord.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/record/EmbeddedObjectRefSubRecord.java Sun Mar 29 14:39:11 2020
@@ -26,7 +26,7 @@ import org.apache.poi.ss.formula.ptg.Ref
 import org.apache.poi.ss.formula.ptg.RefPtg;
 import org.apache.poi.util.HexDump;
 import org.apache.poi.util.IOUtils;
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianConsts;
 import org.apache.poi.util.LittleEndianInput;
 import org.apache.poi.util.LittleEndianInputStream;
 import org.apache.poi.util.LittleEndianOutput;
@@ -94,13 +94,13 @@ public final class EmbeddedObjectRefSubR
 		// 1223 void XclImpOleObj::ReadPictFmla( XclImpStream& rStrm, sal_uInt16 nRecSize )
 
 		int streamIdOffset = in.readShort(); // OOO calls this 'nFmlaLen'
-		int remaining = size - LittleEndian.SHORT_SIZE;
+		int remaining = size - LittleEndianConsts.SHORT_SIZE;
 
 		int dataLenAfterFormula = remaining - streamIdOffset;
 		int formulaSize = in.readUShort();
-		remaining -= LittleEndian.SHORT_SIZE;
+		remaining -= LittleEndianConsts.SHORT_SIZE;
 		field_1_unknown_int = in.readInt();
-		remaining -= LittleEndian.INT_SIZE;
+		remaining -= LittleEndianConsts.INT_SIZE;
 		byte[] formulaRawBytes = readRawData(in, formulaSize);
 		remaining -= formulaSize;
 		field_2_refPtg = readRefPtg(formulaRawBytes);
@@ -116,16 +116,16 @@ public final class EmbeddedObjectRefSubR
 		int stringByteCount;
 		if (remaining >= dataLenAfterFormula + 3) {
 			int tag = in.readByte();
-			stringByteCount = LittleEndian.BYTE_SIZE;
+			stringByteCount = LittleEndianConsts.BYTE_SIZE;
 			if (tag != 0x03) {
 				throw new RecordFormatException("Expected byte 0x03 here");
 			}
 			int nChars = in.readUShort();
-			stringByteCount += LittleEndian.SHORT_SIZE;
+			stringByteCount += LittleEndianConsts.SHORT_SIZE;
 			if (nChars > 0) {
 				 // OOO: the 4th way Xcl stores a unicode string: not even a Grbit byte present if length 0
 				field_3_unicode_flag = ( in.readByte() & 0x01 ) != 0;
-				stringByteCount += LittleEndian.BYTE_SIZE;
+				stringByteCount += LittleEndianConsts.BYTE_SIZE;
 				if (field_3_unicode_flag) {
 					field_4_ole_classname = StringUtil.readUnicodeLE(in, nChars);
 					stringByteCount += nChars * 2;
@@ -144,9 +144,9 @@ public final class EmbeddedObjectRefSubR
 		// Pad to next 2-byte boundary
 		if (((stringByteCount + formulaSize) % 2) != 0) {
 			int b = in.readByte();
-			remaining -= LittleEndian.BYTE_SIZE;
+			remaining -= LittleEndianConsts.BYTE_SIZE;
 			if (field_2_refPtg != null && field_4_ole_classname == null) {
-				field_4_unknownByte = Byte.valueOf((byte)b);
+				field_4_unknownByte = (byte)b;
 			}
 		}
 		int nUnexpectedPadding = remaining - dataLenAfterFormula;
@@ -159,8 +159,8 @@ public final class EmbeddedObjectRefSubR
 
 		// Fetch the stream ID
 		if (dataLenAfterFormula >= 4) {
-			field_5_stream_id = Integer.valueOf(in.readInt());
-			remaining -= LittleEndian.INT_SIZE;
+			field_5_stream_id = in.readInt();
+			remaining -= LittleEndianConsts.INT_SIZE;
 		} else {
 			field_5_stream_id = null;
 		}
@@ -199,13 +199,10 @@ public final class EmbeddedObjectRefSubR
 		int result = 2 + 4; // formulaSize + f2unknown_int
 		result += formulaSize;
 
-		int stringLen;
-		if (field_4_ole_classname == null) {
-			// don't write 0x03, stringLen, flag, text
-			stringLen = 0;
-		} else {
+		// don't write 0x03, stringLen, flag, text
+		if (field_4_ole_classname != null) {
 			result += 1 + 2;  // 0x03, stringLen
-			stringLen = field_4_ole_classname.length();
+			int stringLen = field_4_ole_classname.length();
 			if (stringLen > 0) {
 				result += 1; // flag
 				if (field_3_unicode_flag) {
@@ -259,14 +256,11 @@ public final class EmbeddedObjectRefSubR
 		}
 		pos += formulaSize;
 
-		int stringLen;
-		if (field_4_ole_classname == null) {
-			// don't write 0x03, stringLen, flag, text
-			stringLen = 0;
-		} else {
+		// don't write 0x03, stringLen, flag, text
+		if (field_4_ole_classname != null) {
 			out.writeByte(0x03);
 			pos+=1;
-			stringLen = field_4_ole_classname.length();
+			int stringLen = field_4_ole_classname.length();
 			out.writeShort(stringLen);
 			pos+=2;
 			if (stringLen > 0) {
@@ -287,7 +281,6 @@ public final class EmbeddedObjectRefSubR
 		switch(idOffset - (pos - 6)) { // 6 for 3 shorts: sid, dataSize, idOffset
 			case 1:
 				out.writeByte(field_4_unknownByte == null ? 0x00 : field_4_unknownByte.intValue());
-				pos++;
 				break;
 			case 0:
 				break;
@@ -296,8 +289,7 @@ public final class EmbeddedObjectRefSubR
 		}
 
 		if (field_5_stream_id != null) {
-			out.writeInt(field_5_stream_id.intValue());
-			pos += 4;
+			out.writeInt(field_5_stream_id);
 		}
 		out.write(field_6_unknown);
 	}
@@ -349,10 +341,10 @@ public final class EmbeddedObjectRefSubR
 			sb.append("    .oleClassname  = ").append(field_4_ole_classname).append("\n");
 		}
 		if (field_4_unknownByte != null) {
-			sb.append("    .f4unknown   = ").append(HexDump.byteToHex(field_4_unknownByte.intValue())).append("\n");
+			sb.append("    .f4unknown   = ").append(HexDump.byteToHex(field_4_unknownByte)).append("\n");
 		}
 		if (field_5_stream_id != null) {
-			sb.append("    .streamId      = ").append(HexDump.intToHex(field_5_stream_id.intValue())).append("\n");
+			sb.append("    .streamId      = ").append(HexDump.intToHex(field_5_stream_id)).append("\n");
 		}
 		if (field_6_unknown.length > 0) {
 			sb.append("    .f7unknown     = ").append(HexDump.toHex(field_6_unknown)).append("\n");

Modified: poi/trunk/src/java/org/apache/poi/hssf/record/cf/FontFormatting.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/cf/FontFormatting.java?rev=1875859&r1=1875858&r2=1875859&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/record/cf/FontFormatting.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/record/cf/FontFormatting.java Sun Mar 29 14:39:11 2020
@@ -64,22 +64,71 @@ public final class FontFormatting implem
     private static final BitField shadowModified       = BitFieldFactory.getInstance(0x00000010);
     private static final BitField cancellationModified = BitFieldFactory.getInstance(0x00000080);
 
-    /** Escapement type - None */
+    /**
+     * Escapement type - None
+     *
+     * @deprecated use {@link org.apache.poi.ss.usermodel.Font#SS_NONE}
+     */
+    @Deprecated
+    @Removal(version = "5.0.0")
     public static final short SS_NONE  = 0;
-    /** Escapement type - Superscript */
+    /**
+     * Escapement type - Superscript
+     *
+     * @deprecated use {@link org.apache.poi.ss.usermodel.Font#SS_SUPER}
+     */
+    @Deprecated
+    @Removal(version = "5.0.0")
     public static final short SS_SUPER = 1;
-    /** Escapement type - Subscript */
+    /**
+     * Escapement type - Subscript
+     *
+     * @deprecated use {@link org.apache.poi.ss.usermodel.Font#SS_SUB}
+     */
+    @Deprecated
+    @Removal(version = "5.0.0")
     public static final short SS_SUB   = 2;
-    /** Underline type - None */
+    /**
+     * Underline type - None
+     *
+     * @deprecated use {@link org.apache.poi.ss.usermodel.Font#U_NONE}
+     */
+    @Deprecated
+    @Removal(version = "5.0.0")
     public static final byte U_NONE               = 0;
-    /** Underline type - Single */
+    /**
+     * Underline type - Single
+     *
+     * @deprecated use {@link org.apache.poi.ss.usermodel.Font#U_SINGLE}
+     */
+    @Deprecated
+    @Removal(version = "5.0.0")
     public static final byte U_SINGLE             = 1;
-    /** Underline type - Double */
+    /**
+     * Underline type - Double
+     *
+     * @deprecated use {@link org.apache.poi.ss.usermodel.Font#U_DOUBLE}
+     */
+    @Deprecated
+    @Removal(version = "5.0.0")
     public static final byte U_DOUBLE             = 2;
-    /** Underline type - Single Accounting */
+    /**
+     * Underline type - Single Accounting
+     *
+     * @deprecated use {@link org.apache.poi.ss.usermodel.Font#U_SINGLE_ACCOUNTING}
+     */
+    @Deprecated
+    @Removal(version = "5.0.0")
     public static final byte U_SINGLE_ACCOUNTING  = 0x21;
-    /** Underline type - Double Accounting */
+    /**
+     * Underline type - Double Accounting
+     *
+     * @deprecated use {@link org.apache.poi.ss.usermodel.Font#U_DOUBLE_ACCOUNTING}
+     */
+    @Deprecated
+    @Removal(version = "5.0.0")
     public static final byte U_DOUBLE_ACCOUNTING  = 0x22;
+
     /** Normal boldness (not bold) */
     private static final short FONT_WEIGHT_NORMAL = 0x190;
 
@@ -253,12 +302,8 @@ public final class FontFormatting implem
      * @param bw - a number between 100-1000 for the fonts "boldness"
      */
 
-    private void setFontWeight(short pbw)
-    {
-        short bw = pbw;
-        if( bw<100) { bw=100; }
-        if( bw>1000){ bw=1000; }
-        setShort(OFFSET_FONT_WEIGHT, bw);
+    private void setFontWeight(short bw) {
+        setShort(OFFSET_FONT_WEIGHT, Math.max(100, Math.min(1000, bw)));
     }
 
     /**
@@ -298,9 +343,9 @@ public final class FontFormatting implem
      * get the type of super or subscript for the font
      *
      * @return super or subscript option
-     * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#SS_NONE
-     * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#SS_SUPER
-     * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#SS_SUB
+     * @see org.apache.poi.ss.usermodel.Font#SS_NONE
+     * @see org.apache.poi.ss.usermodel.Font#SS_SUPER
+     * @see org.apache.poi.ss.usermodel.Font#SS_SUB
      */
     public short getEscapementType()
     {
@@ -311,9 +356,9 @@ public final class FontFormatting implem
      * set the escapement type for the font
      *
      * @param escapementType  super or subscript option
-     * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#SS_NONE
-     * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#SS_SUPER
-     * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#SS_SUB
+     * @see org.apache.poi.ss.usermodel.Font#SS_NONE
+     * @see org.apache.poi.ss.usermodel.Font#SS_SUPER
+     * @see org.apache.poi.ss.usermodel.Font#SS_SUB
      */
     public void setEscapementType( short escapementType)
     {
@@ -325,11 +370,11 @@ public final class FontFormatting implem
      *
      * @return font underlining type
      *
-     * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_NONE
-     * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_SINGLE
-     * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_DOUBLE
-     * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_SINGLE_ACCOUNTING
-     * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_DOUBLE_ACCOUNTING
+     * @see org.apache.poi.ss.usermodel.Font#U_NONE
+     * @see org.apache.poi.ss.usermodel.Font#U_SINGLE
+     * @see org.apache.poi.ss.usermodel.Font#U_DOUBLE
+     * @see org.apache.poi.ss.usermodel.Font#U_SINGLE_ACCOUNTING
+     * @see org.apache.poi.ss.usermodel.Font#U_DOUBLE_ACCOUNTING
      */
     public short getUnderlineType()
     {
@@ -341,11 +386,11 @@ public final class FontFormatting implem
      *
      * @param underlineType underline option
      *
-     * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_NONE
-     * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_SINGLE
-     * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_DOUBLE
-     * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_SINGLE_ACCOUNTING
-     * @see org.apache.poi.hssf.usermodel.HSSFFontFormatting#U_DOUBLE_ACCOUNTING
+     * @see org.apache.poi.ss.usermodel.Font#U_NONE
+     * @see org.apache.poi.ss.usermodel.Font#U_SINGLE
+     * @see org.apache.poi.ss.usermodel.Font#U_DOUBLE
+     * @see org.apache.poi.ss.usermodel.Font#U_SINGLE_ACCOUNTING
+     * @see org.apache.poi.ss.usermodel.Font#U_DOUBLE_ACCOUNTING
      */
     public void setUnderlineType( short underlineType)
     {
@@ -366,7 +411,7 @@ public final class FontFormatting implem
     private boolean getOptionFlag(BitField field) {
         int optionFlags = getInt(OFFSET_OPTION_FLAGS);
         int value = field.getValue(optionFlags);
-        return value==0? true : false ;
+        return value == 0;
     }
 
     private void setOptionFlag(boolean modified, BitField field)
@@ -536,7 +581,7 @@ public final class FontFormatting implem
     }
 
     @Override
-    @SuppressWarnings("squid:S2975")
+    @SuppressWarnings({"squid:S2975", "MethodDoesntCallSuperMethod"})
     @Deprecated
     @Removal(version = "5.0.0")
     public FontFormatting clone() {

Modified: poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingRule.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingRule.java?rev=1875859&r1=1875858&r2=1875859&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingRule.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFConditionalFormattingRule.java Sun Mar 29 14:39:11 2020
@@ -21,7 +21,6 @@ import org.apache.poi.hssf.model.HSSFFor
 import org.apache.poi.hssf.record.CFRule12Record;
 import org.apache.poi.hssf.record.CFRuleBase;
 import org.apache.poi.hssf.record.CFRuleBase.ComparisonOperator;
-import org.apache.poi.hssf.record.CFRuleRecord;
 import org.apache.poi.hssf.record.cf.BorderFormatting;
 import org.apache.poi.hssf.record.cf.ColorGradientFormatting;
 import org.apache.poi.hssf.record.cf.DataBarFormatting;
@@ -41,8 +40,9 @@ import org.apache.poi.ss.usermodel.Excel
  * It allows to specify formula based conditions for the Conditional Formatting
  * and the formatting settings such as font, border and pattern.
  */
+@SuppressWarnings("unused")
 public final class HSSFConditionalFormattingRule implements ConditionalFormattingRule {
-    private static final byte CELL_COMPARISON = CFRuleRecord.CONDITION_TYPE_CELL_VALUE_IS;
+    private static final byte CELL_COMPARISON = CFRuleBase.CONDITION_TYPE_CELL_VALUE_IS;
 
     private final CFRuleBase cfRuleRecord;
     private final HSSFWorkbook workbook;
@@ -62,7 +62,7 @@ public final class HSSFConditionalFormat
 
     /**
      * Only newer style formatting rules have priorities. For older ones,
-     *  we don't know priority for these, other than definition/model order, 
+     *  we don't know priority for these, other than definition/model order,
      *  which appears to be what Excel uses.
      * @see org.apache.poi.ss.usermodel.ConditionalFormattingRule#getPriority()
      */
@@ -71,7 +71,7 @@ public final class HSSFConditionalFormat
         if (rule12 == null) return 0;
         return rule12.getPriority();
     }
-    
+
     /**
      * Always true for HSSF files, per Microsoft Excel documentation
      * @see org.apache.poi.ss.usermodel.ConditionalFormattingRule#getStopIfTrue()
@@ -79,20 +79,20 @@ public final class HSSFConditionalFormat
     public boolean getStopIfTrue() {
         return true;
     }
-    
+
     CFRuleBase getCfRuleRecord() {
         return cfRuleRecord;
     }
     private CFRule12Record getCFRule12Record(boolean create) {
         if (cfRuleRecord instanceof CFRule12Record) {
-            // Good
-        } else {
-            if (create) throw new IllegalArgumentException("Can't convert a CF into a CF12 record");
-            return null;
+            return (CFRule12Record) cfRuleRecord;
         }
-        return (CFRule12Record)cfRuleRecord;
+        if (create) {
+            throw new IllegalArgumentException("Can't convert a CF into a CF12 record");
+        }
+        return null;
     }
-    
+
     /**
      * Always null for HSSF records, until someone figures out where to find it
      * @see org.apache.poi.ss.usermodel.ConditionalFormattingRule#getNumberFormat()
@@ -177,20 +177,20 @@ public final class HSSFConditionalFormat
     {
         return getPatternFormatting(true);
     }
-    
+
     private HSSFDataBarFormatting getDataBarFormatting(boolean create) {
         CFRule12Record cfRule12Record = getCFRule12Record(create);
         if (cfRule12Record == null) return null;
-        
+
         DataBarFormatting databarFormatting = cfRule12Record.getDataBarFormatting();
         if (databarFormatting == null) {
             if (!create) return null;
             cfRule12Record.createDataBarFormatting();
         }
-        
+
         return new HSSFDataBarFormatting(cfRule12Record, sheet);
     }
-    
+
     /**
      * @return databar / data-bar formatting object if defined, <code>null</code> otherwise
      */
@@ -204,11 +204,11 @@ public final class HSSFConditionalFormat
     public HSSFDataBarFormatting createDataBarFormatting() {
         return getDataBarFormatting(true);
     }
-    
+
     private HSSFIconMultiStateFormatting getMultiStateFormatting(boolean create) {
         CFRule12Record cfRule12Record = getCFRule12Record(create);
         if (cfRule12Record == null) return null;
-        
+
         IconMultiStateFormatting iconFormatting = cfRule12Record.getMultiStateFormatting();
         if (iconFormatting == null) {
             if (!create) return null;
@@ -216,7 +216,7 @@ public final class HSSFConditionalFormat
         }
         return new HSSFIconMultiStateFormatting(cfRule12Record, sheet);
     }
-    
+
     /**
      * @return icon / multi-state formatting object if defined, <code>null</code> otherwise
      */
@@ -230,11 +230,11 @@ public final class HSSFConditionalFormat
     public HSSFIconMultiStateFormatting createMultiStateFormatting() {
         return getMultiStateFormatting(true);
     }
-    
+
     private HSSFColorScaleFormatting getColorScaleFormatting(boolean create) {
         CFRule12Record cfRule12Record = getCFRule12Record(create);
         if (cfRule12Record == null) return null;
-        
+
         ColorGradientFormatting colorFormatting = cfRule12Record.getColorGradientFormatting();
         if (colorFormatting == null) {
             if (!create) return null;
@@ -243,13 +243,14 @@ public final class HSSFConditionalFormat
 
         return new HSSFColorScaleFormatting(cfRule12Record, sheet);
     }
-    
+
     /**
      * @return color scale / gradient formatting object if defined, <code>null</code> otherwise
      */
     public HSSFColorScaleFormatting getColorScaleFormatting() {
         return getColorScaleFormatting(false);
     }
+
     /**
      * create a new color scale / gradient formatting object if it does not exist,
      * otherwise just return the existing object.
@@ -257,7 +258,7 @@ public final class HSSFConditionalFormat
     public HSSFColorScaleFormatting createColorScaleFormatting() {
         return getColorScaleFormatting(true);
     }
-    
+
     /**
      * @return -  the conditiontype for the cfrule
      */
@@ -274,11 +275,11 @@ public final class HSSFConditionalFormat
     public ConditionFilterType getConditionFilterType() {
         return getConditionType() == ConditionType.FILTER ? ConditionFilterType.FILTER : null;
     }
-    
+
     public ConditionFilterData getFilterConfiguration() {
         return null;
     }
-    
+
     /**
      * @return - the comparisionoperatation for the cfrule
      */
@@ -308,17 +309,18 @@ public final class HSSFConditionalFormat
     public String getText() {
         return null; // not available here, unless it exists and is unimplemented in cfRuleRecord
     }
-    
-    protected String toFormulaString(Ptg[] parsedExpression) {
+
+    String toFormulaString(Ptg[] parsedExpression) {
         return toFormulaString(parsedExpression, workbook);
     }
-    protected static String toFormulaString(Ptg[] parsedExpression, HSSFWorkbook workbook) {
+
+    static String toFormulaString(Ptg[] parsedExpression, HSSFWorkbook workbook) {
         if(parsedExpression == null || parsedExpression.length == 0) {
             return null;
         }
         return HSSFFormulaParser.toFormulaString(workbook, parsedExpression);
     }
-    
+
     /**
      * Conditional format rules don't define stripes, so always 0
      * @see org.apache.poi.ss.usermodel.DifferentialStyleProvider#getStripeSize()

Modified: poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFFontFormatting.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFFontFormatting.java?rev=1875859&r1=1875858&r2=1875859&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFFontFormatting.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/usermodel/HSSFFontFormatting.java Sun Mar 29 14:39:11 2020
@@ -21,31 +21,59 @@ import org.apache.poi.hssf.record.CFRule
 import org.apache.poi.hssf.record.cf.FontFormatting;
 import org.apache.poi.hssf.util.HSSFColor;
 import org.apache.poi.ss.usermodel.Color;
+import org.apache.poi.util.Removal;
+
 /**
  * High level representation for Font Formatting component
  * of Conditional Formatting settings
  */
+@SuppressWarnings("unused")
 public final class HSSFFontFormatting implements org.apache.poi.ss.usermodel.FontFormatting {
-    /** Underline type - None */
-    public final static byte U_NONE              = FontFormatting.U_NONE;
-    /** Underline type - Single */
-    public final static byte U_SINGLE            = FontFormatting.U_SINGLE;
-    /** Underline type - Double */
-    public final static byte U_DOUBLE            = FontFormatting.U_DOUBLE;
-    /**  Underline type - Single Accounting */
-    public final static byte U_SINGLE_ACCOUNTING = FontFormatting.U_SINGLE_ACCOUNTING;
-    /** Underline type - Double Accounting */
-    public final static byte U_DOUBLE_ACCOUNTING = FontFormatting.U_DOUBLE_ACCOUNTING;
+    /**
+     * Underline type - None
+     * @deprecated use {@link org.apache.poi.ss.usermodel.Font#U_NONE}
+     */
+    @Deprecated
+    @Removal(version = "5.0.0")
+    public final static byte U_NONE              = org.apache.poi.ss.usermodel.Font.U_NONE;
+    /**
+     * Underline type - Single
+     * @deprecated use {@link org.apache.poi.ss.usermodel.Font#U_SINGLE}
+     */
+    @Deprecated
+    @Removal(version = "5.0.0")
+    public final static byte U_SINGLE            = org.apache.poi.ss.usermodel.Font.U_SINGLE;
+    /**
+     * Underline type - Double
+     * @deprecated use {@link org.apache.poi.ss.usermodel.Font#U_DOUBLE}
+     */
+    @Deprecated
+    @Removal(version = "5.0.0")
+    public final static byte U_DOUBLE            = org.apache.poi.ss.usermodel.Font.U_DOUBLE;
+    /**
+     * Underline type - Single Accounting
+     * @deprecated use {@link org.apache.poi.ss.usermodel.Font#U_SINGLE_ACCOUNTING}
+     */
+    @Deprecated
+    @Removal(version = "5.0.0")
+    public final static byte U_SINGLE_ACCOUNTING = org.apache.poi.ss.usermodel.Font.U_SINGLE_ACCOUNTING;
+    /**
+     * Underline type - Double Accounting
+     * @deprecated use {@link org.apache.poi.ss.usermodel.Font#U_DOUBLE_ACCOUNTING}
+     */
+    @Deprecated
+    @Removal(version = "5.0.0")
+    public final static byte U_DOUBLE_ACCOUNTING = org.apache.poi.ss.usermodel.Font.U_DOUBLE_ACCOUNTING;
 
     private final FontFormatting fontFormatting;
     private final HSSFWorkbook workbook;
 
-    protected HSSFFontFormatting(CFRuleBase cfRuleRecord, HSSFWorkbook workbook) {
+    HSSFFontFormatting(CFRuleBase cfRuleRecord, HSSFWorkbook workbook) {
         this.fontFormatting = cfRuleRecord.getFontFormatting();
         this.workbook = workbook;
     }
 
-    protected FontFormatting getFontFormattingBlock() {
+    FontFormatting getFontFormattingBlock() {
         return fontFormatting;
     }
 
@@ -53,9 +81,9 @@ public final class HSSFFontFormatting im
      * get the type of super or subscript for the font
      *
      * @return super or subscript option
-     * @see #SS_NONE
-     * @see #SS_SUPER
-     * @see #SS_SUB
+     * @see org.apache.poi.ss.usermodel.Font#SS_NONE
+     * @see org.apache.poi.ss.usermodel.Font#SS_SUPER
+     * @see org.apache.poi.ss.usermodel.Font#SS_SUB
      */
     public short getEscapementType()
     {
@@ -107,7 +135,7 @@ public final class HSSFFontFormatting im
     /**
      * @see org.apache.poi.hssf.record.cf.FontFormatting#getRawRecord()
      */
-    protected byte[] getRawRecord() {
+    byte[] getRawRecord() {
         return fontFormatting.getRawRecord();
     }
 
@@ -116,11 +144,11 @@ public final class HSSFFontFormatting im
      *
      * @return font underlining type
      *
-     * @see #U_NONE
-     * @see #U_SINGLE
-     * @see #U_DOUBLE
-     * @see #U_SINGLE_ACCOUNTING
-     * @see #U_DOUBLE_ACCOUNTING
+     * @see org.apache.poi.ss.usermodel.Font#U_NONE
+     * @see org.apache.poi.ss.usermodel.Font#U_SINGLE
+     * @see org.apache.poi.ss.usermodel.Font#U_DOUBLE
+     * @see org.apache.poi.ss.usermodel.Font#U_SINGLE_ACCOUNTING
+     * @see org.apache.poi.ss.usermodel.Font#U_DOUBLE_ACCOUNTING
      */
     public short getUnderlineType()
     {
@@ -138,7 +166,7 @@ public final class HSSFFontFormatting im
     }
 
     /**
-     * @return true if escapement type was modified from default   
+     * @return true if escapement type was modified from default
      */
     public boolean isEscapementTypeModified()
     {
@@ -146,7 +174,7 @@ public final class HSSFFontFormatting im
     }
 
     /**
-     * @return true if font cancellation was modified from default   
+     * @return true if font cancellation was modified from default
      */
     public boolean isFontCancellationModified()
     {
@@ -154,7 +182,7 @@ public final class HSSFFontFormatting im
     }
 
     /**
-     * @return true if font outline type was modified from default   
+     * @return true if font outline type was modified from default
      */
     public boolean isFontOutlineModified()
     {
@@ -162,7 +190,7 @@ public final class HSSFFontFormatting im
     }
 
     /**
-     * @return true if font shadow type was modified from default   
+     * @return true if font shadow type was modified from default
      */
     public boolean isFontShadowModified()
     {
@@ -170,7 +198,7 @@ public final class HSSFFontFormatting im
     }
 
     /**
-     * @return true if font style was modified from default   
+     * @return true if font style was modified from default
      */
     public boolean isFontStyleModified()
     {
@@ -178,7 +206,7 @@ public final class HSSFFontFormatting im
     }
 
     /**
-     * @return true if font style was set to <i>italic</i> 
+     * @return true if font style was set to <i>italic</i>
      */
     public boolean isItalic()
     {
@@ -210,7 +238,7 @@ public final class HSSFFontFormatting im
     }
 
     /**
-     * @return true if font underline type was modified from default   
+     * @return true if font underline type was modified from default
      */
     public boolean isUnderlineTypeModified()
     {
@@ -218,7 +246,7 @@ public final class HSSFFontFormatting im
     }
 
     /**
-     * @return true if font weight was modified from default   
+     * @return true if font weight was modified from default
      */
     public boolean isFontWeightModified()
     {
@@ -227,8 +255,8 @@ public final class HSSFFontFormatting im
 
     /**
      * set font style options.
-     * 
-     * @param italic - if true, set posture style to italic, otherwise to normal 
+     *
+     * @param italic - if true, set posture style to italic, otherwise to normal
      * @param bold if true, set font weight to bold, otherwise to normal
      */
 
@@ -253,18 +281,18 @@ public final class HSSFFontFormatting im
      * set the escapement type for the font
      *
      * @param escapementType  super or subscript option
-     * @see #SS_NONE
-     * @see #SS_SUPER
-     * @see #SS_SUB
+     * @see org.apache.poi.ss.usermodel.Font#SS_NONE
+     * @see org.apache.poi.ss.usermodel.Font#SS_SUPER
+     * @see org.apache.poi.ss.usermodel.Font#SS_SUB
      */
     public void setEscapementType(short escapementType) {
         switch(escapementType) {
-            case HSSFFontFormatting.SS_SUB:
-            case HSSFFontFormatting.SS_SUPER:
+            case org.apache.poi.ss.usermodel.Font.SS_SUB:
+            case org.apache.poi.ss.usermodel.Font.SS_SUPER:
                 fontFormatting.setEscapementType(escapementType);
                 fontFormatting.setEscapementTypeModified(true);
                 break;
-            case HSSFFontFormatting.SS_NONE:
+            case org.apache.poi.ss.usermodel.Font.SS_NONE:
                 fontFormatting.setEscapementType(escapementType);
                 fontFormatting.setEscapementTypeModified(false);
                 break;
@@ -273,7 +301,7 @@ public final class HSSFFontFormatting im
     }
 
     /**
-     * @param modified
+     * @param modified flag, if escapement type is modified
      * @see org.apache.poi.hssf.record.cf.FontFormatting#setEscapementTypeModified(boolean)
      */
     public void setEscapementTypeModified(boolean modified) {
@@ -281,7 +309,7 @@ public final class HSSFFontFormatting im
     }
 
     /**
-     * @param modified
+     * @param modified flag, if font cancellation is modified
      * @see org.apache.poi.hssf.record.cf.FontFormatting#setFontCancellationModified(boolean)
      */
     public void setFontCancellationModified(boolean modified)
@@ -290,7 +318,7 @@ public final class HSSFFontFormatting im
     }
 
     /**
-     * @param fci
+     * @param fci the font color index
      * @see org.apache.poi.hssf.record.cf.FontFormatting#setFontColorIndex(short)
      */
     public void setFontColorIndex(short fci)
@@ -299,7 +327,7 @@ public final class HSSFFontFormatting im
     }
 
     /**
-     * @param height
+     * @param height the font height
      * @see org.apache.poi.hssf.record.cf.FontFormatting#setFontHeight(int)
      */
     public void setFontHeight(int height)
@@ -308,7 +336,7 @@ public final class HSSFFontFormatting im
     }
 
     /**
-     * @param modified
+     * @param modified flag, if font outline is modified
      * @see org.apache.poi.hssf.record.cf.FontFormatting#setFontOutlineModified(boolean)
      */
     public void setFontOutlineModified(boolean modified)
@@ -317,7 +345,7 @@ public final class HSSFFontFormatting im
     }
 
     /**
-     * @param modified
+     * @param modified flag, if font shadow is modified
      * @see org.apache.poi.hssf.record.cf.FontFormatting#setFontShadowModified(boolean)
      */
     public void setFontShadowModified(boolean modified)
@@ -326,7 +354,7 @@ public final class HSSFFontFormatting im
     }
 
     /**
-     * @param modified
+     * @param modified flag, if font style is modified
      * @see org.apache.poi.hssf.record.cf.FontFormatting#setFontStyleModified(boolean)
      */
     public void setFontStyleModified(boolean modified)
@@ -335,7 +363,7 @@ public final class HSSFFontFormatting im
     }
 
     /**
-     * @param on
+     * @param on flag, if outline is set
      * @see org.apache.poi.hssf.record.cf.FontFormatting#setOutline(boolean)
      */
     public void setOutline(boolean on)
@@ -345,7 +373,7 @@ public final class HSSFFontFormatting im
     }
 
     /**
-     * @param on
+     * @param on flag, if shadow is set
      * @see org.apache.poi.hssf.record.cf.FontFormatting#setShadow(boolean)
      */
     public void setShadow(boolean on)
@@ -355,7 +383,7 @@ public final class HSSFFontFormatting im
     }
 
     /**
-     * @param strike
+     * @param strike flag, if strikeout is set
      * @see org.apache.poi.hssf.record.cf.FontFormatting#setStrikeout(boolean)
      */
     public void setStrikeout(boolean strike)
@@ -369,23 +397,23 @@ public final class HSSFFontFormatting im
      *
      * @param underlineType  super or subscript option
      *
-     * @see #U_NONE
-     * @see #U_SINGLE
-     * @see #U_DOUBLE
-     * @see #U_SINGLE_ACCOUNTING
-     * @see #U_DOUBLE_ACCOUNTING
+     * @see org.apache.poi.ss.usermodel.Font#U_NONE
+     * @see org.apache.poi.ss.usermodel.Font#U_SINGLE
+     * @see org.apache.poi.ss.usermodel.Font#U_DOUBLE
+     * @see org.apache.poi.ss.usermodel.Font#U_SINGLE_ACCOUNTING
+     * @see org.apache.poi.ss.usermodel.Font#U_DOUBLE_ACCOUNTING
      */
     public void setUnderlineType(short underlineType) {
         switch(underlineType) {
-            case HSSFFontFormatting.U_SINGLE:
-            case HSSFFontFormatting.U_DOUBLE:
-            case HSSFFontFormatting.U_SINGLE_ACCOUNTING:
-            case HSSFFontFormatting.U_DOUBLE_ACCOUNTING:
+            case org.apache.poi.ss.usermodel.Font.U_SINGLE:
+            case org.apache.poi.ss.usermodel.Font.U_DOUBLE:
+            case org.apache.poi.ss.usermodel.Font.U_SINGLE_ACCOUNTING:
+            case org.apache.poi.ss.usermodel.Font.U_DOUBLE_ACCOUNTING:
                 fontFormatting.setUnderlineType(underlineType);
                 setUnderlineTypeModified(true);
                 break;
-    
-            case HSSFFontFormatting.U_NONE:
+
+            case org.apache.poi.ss.usermodel.Font.U_NONE:
                 fontFormatting.setUnderlineType(underlineType);
                 setUnderlineTypeModified(false);
                 break;
@@ -394,11 +422,10 @@ public final class HSSFFontFormatting im
     }
 
     /**
-     * @param modified
+     * @param modified flag, if underline type is modified
      * @see org.apache.poi.hssf.record.cf.FontFormatting#setUnderlineTypeModified(boolean)
      */
-    public void setUnderlineTypeModified(boolean modified)
-    {
+    public void setUnderlineTypeModified(boolean modified) {
         fontFormatting.setUnderlineTypeModified(modified);
     }
 }

Modified: poi/trunk/src/java/org/apache/poi/ss/formula/functions/Roman.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/formula/functions/Roman.java?rev=1875859&r1=1875858&r2=1875859&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ss/formula/functions/Roman.java (original)
+++ poi/trunk/src/java/org/apache/poi/ss/formula/functions/Roman.java Sun Mar 29 14:39:11 2020
@@ -24,32 +24,63 @@ import org.apache.poi.ss.formula.eval.St
 import org.apache.poi.ss.formula.eval.ValueEval;
 
 /**
- * Implementation for Excel WeekNum() function.<p>
+ * Implementation for Excel Roman() function.<p>
  * <p>
- * <b>Syntax</b>:<br> <b>WeekNum  </b>(<b>Serial_num</b>,<b>Return_type</b>)<br>
+ * <b>Syntax</b>:<br> <b>Roman  </b>(<b>number</b>,<b>form</b>)<br>
  * <p>
- * Returns a number that indicates where the week falls numerically within a year.
+ * Converts an arabic numeral to roman, as text.
  * <p>
  * <p>
- * Serial_num     is a date within the week. Dates should be entered by using the DATE function,
- * or as results of other formulas or functions. For example, use DATE(2008,5,23)
- * for the 23rd day of May, 2008. Problems can occur if dates are entered as text.
- * Return_type     is a number that determines on which day the week begins. The default is 1.
- * 1	Week begins on Sunday. Weekdays are numbered 1 through 7.
- * 2	Week begins on Monday. Weekdays are numbered 1 through 7.
- *
- * @author cedric dot walter @ gmail dot com
+ * Number  Required. The Arabic numeral you want converted.<p>
+ * Form    Optional. A number specifying the type of roman numeral you want.
+ *         The roman numeral style ranges from Classic to Simplified, becoming more concise as the value of form increases.
+ * <p>
+ * Return_type     a roman numeral, as text
  */
 public class Roman extends Fixed2ArgFunction {
 
     //M (1000), CM (900), D (500), CD (400), C (100), XC (90), L (50), XL (40), X (10), IX (9), V (5), IV (4) and I (1).
-    public static final int[] VALUES = new int[]{1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
-    public static final String[] ROMAN = new String[]
-            {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
+    private static final int[] VALUES = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
+
+    private static final String[] ROMAN = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
+
+    private static final String[][] REPLACEMENTS = {
+        { // form > 0
+            "XLV",  "VL",   //  45
+            "XCV",  "VC",   //  95
+            "CDL",  "LD",   // 450
+            "CML",  "LM",   // 950
+            "CMVC", "LMVL"  // 995
+        },{ // Form == 1 only
+            "CDXC", "LDXL", // 490
+            "CDVC", "LDVL", // 495
+            "CMXC", "LMXL", // 990
+            "XCIX", "VCIV", //  99
+            "XLIX", "VLIV"  //  49
+        },{ // form > 1
+            "XLIX", "IL",   //  49
+            "XCIX", "IC",   //  99
+            "CDXC", "XD",   // 490
+            "CDVC", "XDV",  // 495
+            "CDIC", "XDIX", // 499
+            "LMVL", "XMV",  // 995
+            "CMIC", "XMIX", // 999
+            "CMXC", "XM"    // 990
+        },{ // form > 2
+            "XDV",  "VD",   // 495
+            "XDIX", "VDIV", // 499
+            "XMV",  "VM",   // 995
+            "XMIX", "VMIV"  // 999
+        },{ // form == 4
+            "VDIV", "ID",   // 499
+            "VMIV", "IM"    // 999
+        }
+    };
+
 
 
     public ValueEval evaluate(int srcRowIndex, int srcColumnIndex, ValueEval numberVE, ValueEval formVE) {
-        int number = 0;
+        final int number;
         try {
             ValueEval ve = OperandResolver.getSingleValue(numberVE, srcRowIndex, srcColumnIndex);
             number = OperandResolver.coerceValueToInt(ve);
@@ -66,7 +97,7 @@ public class Roman extends Fixed2ArgFunc
             return new StringEval("");
         }
 
-        int form = 0;
+        final int form;
         try {
             ValueEval ve = OperandResolver.getSingleValue(formVE, srcRowIndex, srcColumnIndex);
             form = OperandResolver.coerceValueToInt(ve);
@@ -90,7 +121,7 @@ public class Roman extends Fixed2ArgFunc
     /**
      * Classic conversion.
      *
-     * @param number
+     * @param number the number
      */
     private String integerToRoman(int number) {
         StringBuilder result = new StringBuilder();
@@ -106,45 +137,21 @@ public class Roman extends Fixed2ArgFunc
     /**
      * Use conversion rule to factor some parts and make them more concise
      *
-     * @param result
-     * @param form
+     * @param input the input string
+     * @param form the level of conciseness [0..4] with 4 being most concise and simplified
      */
-    public String makeConcise(String result, int form) {
-        if (form > 0) {
-            result = result.replaceAll("XLV", "VL"); //45
-            result = result.replaceAll("XCV", "VC"); //95
-            result = result.replaceAll("CDL", "LD"); //450
-            result = result.replaceAll("CML", "LM"); //950
-            result = result.replaceAll("CMVC", "LMVL"); //995
-        }
-        if (form == 1) {
-            result = result.replaceAll("CDXC", "LDXL"); //490
-            result = result.replaceAll("CDVC", "LDVL"); //495
-            result = result.replaceAll("CMXC", "LMXL"); //990
-            result = result.replaceAll("XCIX", "VCIV"); //99
-            result = result.replaceAll("XLIX", "VLIV"); //49
-        }
-        if (form > 1) {
-            result = result.replaceAll("XLIX", "IL"); //49
-            result = result.replaceAll("XCIX", "IC"); //99
-            result = result.replaceAll("CDXC", "XD"); //490
-            result = result.replaceAll("CDVC", "XDV"); //495
-            result = result.replaceAll("CDIC", "XDIX"); //499
-            result = result.replaceAll("LMVL", "XMV"); //995
-            result = result.replaceAll("CMIC", "XMIX"); //999
-            result = result.replaceAll("CMXC", "XM"); // 990
-        }
-        if (form > 2) {
-            result = result.replaceAll("XDV", "VD");  //495
-            result = result.replaceAll("XDIX", "VDIV"); //499
-            result = result.replaceAll("XMV", "VM"); // 995
-            result = result.replaceAll("XMIX", "VMIV"); //999
-        }
-        if (form == 4) {
-            result = result.replaceAll("VDIV", "ID"); //499
-            result = result.replaceAll("VMIV", "IM"); //999
+    public String makeConcise(final String input, final int form) {
+        String result = input;
+        for (int i=0; i<=form && i<=4 && form > 0; i++) {
+            if (i==1 && form>1) {
+                // Replacement[1] is only meant for form == 1
+                continue;
+            }
+            String[] repl = REPLACEMENTS[i];
+            for (int j=0; j<repl.length; j+=2) {
+                result = result.replace(repl[j],repl[j+1]);
+            }
         }
-
         return result;
     }
 }

Modified: poi/trunk/src/java/org/apache/poi/ss/usermodel/DataFormatter.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/usermodel/DataFormatter.java?rev=1875859&r1=1875858&r2=1875859&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ss/usermodel/DataFormatter.java (original)
+++ poi/trunk/src/java/org/apache/poi/ss/usermodel/DataFormatter.java Sun Mar 29 14:39:11 2020
@@ -118,6 +118,7 @@ import org.apache.poi.util.POILogger;
  *  You can use {@link DateFormatConverter} to do some of this localisation if
  *   you need it.
  */
+@SuppressWarnings("unused")
 public class DataFormatter implements Observer {
     private static final String defaultFractionWholePartFormat = "#";
     private static final String defaultFractionFractionPartFormat = "#/##";
@@ -342,13 +343,11 @@ public class DataFormatter implements Ob
                 // Ask CellFormat to get a formatter for it
                 CellFormat cfmt = CellFormat.getInstance(locale, formatStr);
                 // CellFormat requires callers to identify date vs not, so do so
-                Object cellValueO = Double.valueOf(cellValue);
-                if (DateUtil.isADateFormat(formatIndex, formatStr) &&
-                        // don't try to handle Date value 0, let a 3 or 4-part format take care of it
-                        ((Double)cellValueO).doubleValue() != 0.0) {
-                    cellValueO = DateUtil.getJavaDate(cellValue, use1904Windowing);
-                }
-                // Wrap and return (non-cachable - CellFormat does that)
+                // don't try to handle Date value 0, let a 3 or 4-part format take care of it
+                Object cellValueO = (cellValue != 0.0 && DateUtil.isADateFormat(formatIndex, formatStr))
+                    ? DateUtil.getJavaDate(cellValue, use1904Windowing)
+                    : cellValue;
+                // Wrap and return (non-cacheable - CellFormat does that)
                 return new CellFormatResultWrapper( cfmt.apply(cellValueO) );
             } catch (Exception e) {
                 logger.log(POILogger.WARN, "Formatting failed for format " + formatStr + ", falling back", e);
@@ -357,7 +356,7 @@ public class DataFormatter implements Ob
 
        // Excel's # with value 0 will output empty where Java will output 0. This hack removes the # from the format.
        if (emulateCSV && cellValue == 0.0 && formatStr.contains("#") && !formatStr.contains("0")) {
-           formatStr = formatStr.replaceAll("#", "");
+           formatStr = formatStr.replace("#", "");
        }
 
         // See if we already have it cached
@@ -397,38 +396,42 @@ public class DataFormatter implements Ob
         String formatStr = sFormat;
 
         // Remove colour formatting if present
-        Matcher colourM = colorPattern.matcher(formatStr);
-        while(colourM.find()) {
-           String colour = colourM.group();
-
-           // Paranoid replacement...
-           int at = formatStr.indexOf(colour);
-           if(at == -1) break;
-           String nFormatStr = formatStr.substring(0,at) +
-              formatStr.substring(at+colour.length());
-           if(nFormatStr.equals(formatStr)) break;
-
-           // Try again in case there's multiple
-           formatStr = nFormatStr;
-           colourM = colorPattern.matcher(formatStr);
+        if (formatStr != null) {
+            Matcher colourM = colorPattern.matcher(formatStr);
+            while (colourM.find()) {
+                String colour = colourM.group();
+
+                // Paranoid replacement...
+                int at = formatStr.indexOf(colour);
+                if (at == -1) break;
+                String nFormatStr = formatStr.substring(0, at) +
+                        formatStr.substring(at + colour.length());
+                if (nFormatStr.equals(formatStr)) break;
+
+                // Try again in case there's multiple
+                formatStr = nFormatStr;
+                colourM = colorPattern.matcher(formatStr);
+            }
         }
 
         // Strip off the locale information, we use an instance-wide locale for everything
-        Matcher m = localePatternGroup.matcher(formatStr);
-        while(m.find()) {
-            String match = m.group();
-            String symbol = match.substring(match.indexOf('$') + 1, match.indexOf('-'));
-            if (symbol.indexOf('$') > -1) {
-                symbol = symbol.substring(0, symbol.indexOf('$')) +
-                        '\\' +
-                        symbol.substring(symbol.indexOf('$'));
+        if (formatStr != null) {
+            Matcher m = localePatternGroup.matcher(formatStr);
+            while (m.find()) {
+                String match = m.group();
+                String symbol = match.substring(match.indexOf('$') + 1, match.indexOf('-'));
+                if (symbol.indexOf('$') > -1) {
+                    symbol = symbol.substring(0, symbol.indexOf('$')) +
+                            '\\' +
+                            symbol.substring(symbol.indexOf('$'));
+                }
+                formatStr = m.replaceAll(symbol);
+                m = localePatternGroup.matcher(formatStr);
             }
-            formatStr = m.replaceAll(symbol);
-            m = localePatternGroup.matcher(formatStr);
         }
 
         // Check for special cases
-        if(formatStr == null || formatStr.trim().length() == 0) {
+        if(formatStr == null || formatStr.trim().isEmpty()) {
             return getDefaultFormat(cellValue);
         }
 
@@ -476,15 +479,15 @@ public class DataFormatter implements Ob
 
     private Format createDateFormat(String pFormatStr, double cellValue) {
         String formatStr = pFormatStr;
-        formatStr = formatStr.replaceAll("\\\\-","-");
-        formatStr = formatStr.replaceAll("\\\\,",",");
-        formatStr = formatStr.replaceAll("\\\\\\.","."); // . is a special regexp char
-        formatStr = formatStr.replaceAll("\\\\ "," ");
-        formatStr = formatStr.replaceAll("\\\\/","/"); // weird: m\\/d\\/yyyy
-        formatStr = formatStr.replaceAll(";@", "");
-        formatStr = formatStr.replaceAll("\"/\"", "/"); // "/" is escaped for no reason in: mm"/"dd"/"yyyy
+        formatStr = formatStr.replace("\\-","-");
+        formatStr = formatStr.replace("\\,",",");
+        formatStr = formatStr.replace("\\.","."); // . is a special regexp char
+        formatStr = formatStr.replace("\\ "," ");
+        formatStr = formatStr.replace("\\/","/"); // weird: m\\/d\\/yyyy
+        formatStr = formatStr.replace(";@", "");
+        formatStr = formatStr.replace("\"/\"", "/"); // "/" is escaped for no reason in: mm"/"dd"/"yyyy
         formatStr = formatStr.replace("\"\"", "'");	// replace Excel quoting with Java style quoting
-        formatStr = formatStr.replaceAll("\\\\T","'T'"); // Quote the T is iso8601 style dates
+        formatStr = formatStr.replace("\\T","'T'"); // Quote the T is iso8601 style dates
 
 
         boolean hasAmPm = false;
@@ -494,12 +497,12 @@ public class DataFormatter implements Ob
             hasAmPm = true;
             amPmMatcher = amPmPattern.matcher(formatStr);
         }
-        formatStr = formatStr.replaceAll("@", "a");
+        formatStr = formatStr.replace('@', 'a');
 
 
         Matcher dateMatcher = daysAsText.matcher(formatStr);
         if (dateMatcher.find()) {
-            String match = dateMatcher.group(0).toUpperCase(Locale.ROOT).replaceAll("D", "E");
+            String match = dateMatcher.group(0).toUpperCase(Locale.ROOT).replace('D', 'E');
             formatStr = dateMatcher.replaceAll(match);
         }
 
@@ -567,9 +570,7 @@ public class DataFormatter implements Ob
             else if (c == 'm' || c == 'M') {
                 if(mIsMonth) {
                     sb.append('M');
-                    ms.add(
-                            Integer.valueOf(sb.length() -1)
-                    );
+                    ms.add(sb.length() - 1);
                 } else {
                     sb.append('m');
                 }
@@ -801,6 +802,7 @@ public class DataFormatter implements Ob
      * Performs Excel-style date formatting, using the
      *  supplied Date and format
      */
+    @SuppressWarnings("SynchronizationOnLocalVariableOrMethodParameter")
     private String performDateFormatting(Date d, Format dateFormat) {
         Format df = dateFormat != null ? dateFormat : defaultDateformat;
         synchronized (df) {
@@ -821,6 +823,7 @@ public class DataFormatter implements Ob
      * @param cfEvaluator ConditionalFormattingEvaluator (if available)
      * @return Formatted value
      */
+    @SuppressWarnings("SynchronizationOnLocalVariableOrMethodParameter")
     private String getFormattedDateString(Cell cell, ConditionalFormattingEvaluator cfEvaluator) {
         if (cell == null) {
             return null;
@@ -870,7 +873,7 @@ public class DataFormatter implements Ob
         if (numberFormat == null) {
             return String.valueOf(d);
         }
-        String formatted = numberFormat.format(Double.valueOf(d));
+        String formatted = numberFormat.format(d);
         return formatted.replaceFirst("E(\\d)", "E+$1"); // to match Excel's E-notation
     }
 
@@ -921,7 +924,7 @@ public class DataFormatter implements Ob
         String result;
         final String textValue = NumberToTextConverter.toText(value);
         if (textValue.indexOf('E') > -1) {
-            result = numberFormat.format(Double.valueOf(value));
+            result = numberFormat.format(value);
         }
         else {
             result = numberFormat.format(new BigDecimal(textValue));

Modified: poi/trunk/src/java/org/apache/poi/ss/usermodel/ExcelStyleDateFormatter.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/usermodel/ExcelStyleDateFormatter.java?rev=1875859&r1=1875858&r2=1875859&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ss/usermodel/ExcelStyleDateFormatter.java (original)
+++ poi/trunk/src/java/org/apache/poi/ss/usermodel/ExcelStyleDateFormatter.java Sun Mar 29 14:39:11 2020
@@ -91,13 +91,13 @@ public class ExcelStyleDateFormatter ext
      * with our detection sequences
      */
     private static String processFormatPattern(String f) {
-        String t = f.replaceAll("MMMMM", MMMMM_START_SYMBOL + "MMM" + MMMMM_TRUNCATE_SYMBOL);
-        t = t.replaceAll("\\[H]", String.valueOf(H_BRACKET_SYMBOL));
-        t = t.replaceAll("\\[HH]", String.valueOf(HH_BRACKET_SYMBOL));
-        t = t.replaceAll("\\[m]", String.valueOf(M_BRACKET_SYMBOL));
-        t = t.replaceAll("\\[mm]", String.valueOf(MM_BRACKET_SYMBOL));
-        t = t.replaceAll("\\[s]", String.valueOf(S_BRACKET_SYMBOL));
-        t = t.replaceAll("\\[ss]", String.valueOf(SS_BRACKET_SYMBOL));
+        String t = f.replace("MMMMM", MMMMM_START_SYMBOL + "MMM" + MMMMM_TRUNCATE_SYMBOL);
+        t = t.replace("[H]", String.valueOf(H_BRACKET_SYMBOL));
+        t = t.replace("[HH]", String.valueOf(HH_BRACKET_SYMBOL));
+        t = t.replace("[m]", String.valueOf(M_BRACKET_SYMBOL));
+        t = t.replace("[mm]", String.valueOf(MM_BRACKET_SYMBOL));
+        t = t.replace("[s]", String.valueOf(S_BRACKET_SYMBOL));
+        t = t.replace("[ss]", String.valueOf(SS_BRACKET_SYMBOL));
         t = t.replaceAll("s.000", "s.SSS");
         t = t.replaceAll("s.00", "s." + LL_BRACKET_SYMBOL);
         t = t.replaceAll("s.0", "s." + L_BRACKET_SYMBOL);

Modified: poi/trunk/src/java/org/apache/poi/ss/usermodel/Font.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/usermodel/Font.java?rev=1875859&r1=1875858&r2=1875859&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ss/usermodel/Font.java (original)
+++ poi/trunk/src/java/org/apache/poi/ss/usermodel/Font.java Sun Mar 29 14:39:11 2020
@@ -21,65 +21,57 @@ package org.apache.poi.ss.usermodel;
 import org.apache.poi.util.Removal;
 
 public interface Font {
+    // TODO: refactor and unify Font & FontFormatting in POI 5.0.0
+    // TODO: refactor the constants to enums in POI 5.0.0
 
     /**
      * normal type of black color.
      */
-
     short COLOR_NORMAL = 0x7fff;
 
     /**
      * Dark Red color
      */
-
     short COLOR_RED = 0xa;
 
     /**
      * no type offsetting (not super or subscript)
      */
-
     short SS_NONE = 0;
 
     /**
      * superscript
      */
-
     short SS_SUPER = 1;
 
     /**
      * subscript
      */
-
     short SS_SUB = 2;
 
     /**
      * not underlined
      */
-
     byte U_NONE = 0;
 
     /**
      * single (normal) underline
      */
-
     byte U_SINGLE = 1;
 
     /**
      * double underlined
      */
-
     byte U_DOUBLE = 2;
 
     /**
      * accounting style single underline
      */
-
     byte U_SINGLE_ACCOUNTING = 0x21;
 
     /**
      * accounting style double underline
      */
-
     byte U_DOUBLE_ACCOUNTING = 0x22;
 
     /**

Modified: poi/trunk/src/java/org/apache/poi/ss/usermodel/FontFormatting.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/usermodel/FontFormatting.java?rev=1875859&r1=1875858&r2=1875859&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ss/usermodel/FontFormatting.java (original)
+++ poi/trunk/src/java/org/apache/poi/ss/usermodel/FontFormatting.java Sun Mar 29 14:39:11 2020
@@ -19,36 +19,88 @@
 
 package org.apache.poi.ss.usermodel;
 
+import org.apache.poi.util.Removal;
+
 /**
  * High level representation for Font Formatting component
  * of Conditional Formatting settings
  */
 public interface FontFormatting {
-    /** Escapement type - None */
-    public final static short SS_NONE  = 0;
-    /** Escapement type - Superscript */
-    public final static short SS_SUPER = 1;
-    /** Escapement type - Subscript */
-    public final static short SS_SUB   = 2;
-
-    /** Underline type - None */
-    public final static byte U_NONE              = 0;
-    /** Underline type - Single */
-    public final static byte U_SINGLE            = 1;
-    /** Underline type - Double */
-    public final static byte U_DOUBLE            = 2;
-    /**  Underline type - Single Accounting */
-    public final static byte U_SINGLE_ACCOUNTING = 0x21;
-    /** Underline type - Double Accounting */
-    public final static byte U_DOUBLE_ACCOUNTING = 0x22;
+    // TODO: refactor and unify Font & FontFormatting in POI 5.0.0
+
+    /**
+     * Escapement type - None
+     *
+     * @deprecated use {@link Font#SS_NONE} instead
+     */
+    @Deprecated
+    @Removal(version = "5.0.0")
+    short SS_NONE  = 0;
+    /**
+     * Escapement type - Superscript
+     *
+     * @deprecated use {@link Font#SS_SUPER} instead
+     */
+    @Deprecated
+    @Removal(version = "5.0.0")
+    short SS_SUPER = 1;
+    /**
+     * Escapement type - Subscript
+     *
+     * @deprecated use {@link Font#SS_SUB} instead
+     */
+    @Deprecated
+    @Removal(version = "5.0.0")
+    short SS_SUB   = 2;
+
+    /**
+     * Underline type - None
+     *
+     * @deprecated use {@link Font#U_NONE} instead
+     */
+    @Deprecated
+    @Removal(version = "5.0.0")
+    byte U_NONE              = 0;
+    /**
+     * Underline type - Single
+     *
+     * @deprecated use {@link Font#U_SINGLE} instead
+     */
+    @Deprecated
+    @Removal(version = "5.0.0")
+    byte U_SINGLE            = 1;
+    /**
+     * Underline type - Double
+     *
+     * @deprecated use {@link Font#U_DOUBLE} instead
+     */
+    @Deprecated
+    @Removal(version = "5.0.0")
+    byte U_DOUBLE            = 2;
+    /**
+     * Underline type - Single Accounting
+     *
+     * @deprecated use {@link Font#U_SINGLE_ACCOUNTING} instead
+     */
+    @Deprecated
+    @Removal(version = "5.0.0")
+    byte U_SINGLE_ACCOUNTING = 0x21;
+    /**
+     * Underline type - Double Accounting
+     *
+     * @deprecated use {@link Font#U_DOUBLE_ACCOUNTING} instead
+     */
+    @Deprecated
+    @Removal(version = "5.0.0")
+    byte U_DOUBLE_ACCOUNTING = 0x22;
 
     /**
      * get the type of super or subscript for the font
      *
      * @return super or subscript option
-     * @see #SS_NONE
-     * @see #SS_SUPER
-     * @see #SS_SUB
+     * @see Font#SS_NONE
+     * @see Font#SS_SUPER
+     * @see Font#SS_SUB
      */
     short getEscapementType();
 
@@ -56,9 +108,9 @@ public interface FontFormatting {
      * set the escapement type for the font
      *
      * @param escapementType  super or subscript option
-     * @see #SS_NONE
-     * @see #SS_SUPER
-     * @see #SS_SUB
+     * @see Font#SS_NONE
+     * @see Font#SS_SUPER
+     * @see Font#SS_SUB
      */
     void setEscapementType(short escapementType);
 
@@ -72,12 +124,12 @@ public interface FontFormatting {
      * @param color font colour index
      */
     void setFontColorIndex(short color);
-    
+
     /**
      * @return The colour of the font, or null if no colour applied
      */
     Color getFontColor();
-    
+
     /**
      * Sets the colour to use
      * @param color font colour to use
@@ -103,11 +155,11 @@ public interface FontFormatting {
      *
      * @return font underlining type
      *
-     * @see #U_NONE
-     * @see #U_SINGLE
-     * @see #U_DOUBLE
-     * @see #U_SINGLE_ACCOUNTING
-     * @see #U_DOUBLE_ACCOUNTING
+     * @see Font#U_NONE
+     * @see Font#U_SINGLE
+     * @see Font#U_DOUBLE
+     * @see Font#U_SINGLE_ACCOUNTING
+     * @see Font#U_DOUBLE_ACCOUNTING
      */
     short getUnderlineType();
 
@@ -116,11 +168,11 @@ public interface FontFormatting {
      *
      * @param underlineType  super or subscript option
      *
-     * @see #U_NONE
-     * @see #U_SINGLE
-     * @see #U_DOUBLE
-     * @see #U_SINGLE_ACCOUNTING
-     * @see #U_DOUBLE_ACCOUNTING
+     * @see Font#U_NONE
+     * @see Font#U_SINGLE
+     * @see Font#U_DOUBLE
+     * @see Font#U_SINGLE_ACCOUNTING
+     * @see Font#U_DOUBLE_ACCOUNTING
      */
     void setUnderlineType(short underlineType);
 

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=1875859&r1=1875858&r2=1875859&view=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 Mar 29 14:39:11 2020
@@ -173,7 +173,7 @@ public final class DateFormatConverter
 		String token;
 		while( ( token = tokenizer.getNextToken() ) != null ) {
 			if( token.startsWith("'") ) {
-				result.append( token.replaceAll("'", "\"") );
+				result.append( token.replace('\'', '"') );
 			} else if( ! Character.isLetter( token.charAt( 0 ) ) ) {
 				result.append( token );
 			} else {



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org