diff options
19 files changed, 157 insertions, 140 deletions
diff --git a/src/examples/src/org/apache/poi/ss/examples/ToCSV.java b/src/examples/src/org/apache/poi/ss/examples/ToCSV.java index af2a1da2fb..bae9056c95 100644 --- a/src/examples/src/org/apache/poi/ss/examples/ToCSV.java +++ b/src/examples/src/org/apache/poi/ss/examples/ToCSV.java @@ -338,17 +338,17 @@ public class ToCSV { for(File excelFile : filesList) { // Open the workbook this.openWorkbook(excelFile); - + // Convert it's contents into a CSV file this.convertToCSV(); - + // Build the name of the csv folder from that of the Excel workbook. // Simply replace the .xls or .xlsx file extension with .csv destinationFilename = excelFile.getName(); destinationFilename = destinationFilename.substring( 0, destinationFilename.lastIndexOf(".")) + ToCSV.CSV_FILE_EXTENSION; - + // Save the CSV file away using the newly constricted file name // and to the specified directory. this.saveCSVFile(new File(destination, destinationFilename)); @@ -649,7 +649,7 @@ public class ToCSV { // passed to the main method. converter.convertExcelToCSV(args[0], args[1]); } - else if(args.length == 3){ + else if(args.length == 3) { // The Source File/Folder, Destination Folder and Separator // were passed to the main method. converter.convertExcelToCSV(args[0], args[1], args[2]); @@ -699,9 +699,9 @@ public class ToCSV { ex.printStackTrace(System.out); converted = false; } - + if (converted) { - System.out.println("Conversion took " + + System.out.println("Conversion took " + ((System.currentTimeMillis() - startTime)/1000) + " seconds"); } } @@ -711,7 +711,7 @@ public class ToCSV { * be a call to the listFiles() method when made on an instance of the * File class and that object refers to a folder/directory */ - class ExcelFilenameFilter implements FilenameFilter { + static class ExcelFilenameFilter implements FilenameFilter { /** * Determine those files that will be returned by a call to the diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java index 84d13ca0b9..c47cc1c6ac 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java @@ -63,7 +63,6 @@ import org.apache.poi.ss.formula.ptg.UnionPtg; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellRange; import org.apache.poi.ss.usermodel.CellStyle; -import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.DataValidation; import org.apache.poi.ss.usermodel.DataValidationHelper; import org.apache.poi.ss.usermodel.Row; @@ -1452,15 +1451,15 @@ public final class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet { * Sets desktop window pane display area, when the * file is first opened in a viewer. * - * @param toprow the top row to show in desktop window pane - * @param leftcol the left column to show in desktop window pane + * @param topRow the top row to show in desktop window pane + * @param leftCol the left column to show in desktop window pane */ @Override - public void showInPane(int toprow, int leftcol) { + public void showInPane(int topRow, int leftCol) { int maxrow = SpreadsheetVersion.EXCEL97.getLastRowIndex(); - if (toprow > maxrow) throw new IllegalArgumentException("Maximum row number is " + maxrow); + if (topRow > maxrow) throw new IllegalArgumentException("Maximum row number is " + maxrow); - showInPane((short)toprow, (short)leftcol); + showInPane((short) topRow, (short) leftCol); } /** * Sets desktop window pane display area, when the @@ -1748,11 +1747,10 @@ public final class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet { * For n < 0, it will shift columns left. * Additionally adjusts formulas. * Probably should also process other features (hyperlinks, comments...) in the way analog to shiftRows method - * @param startRow the row to start shifting - * @param endRow the row to end shifting - * @param n the number of rows to shift + * @param startColumn the column to start shifting + * @param endColumn the column to end shifting + * @param n the number of columns to shift */ - @Beta @Override public void shiftColumns(int startColumn, int endColumn, int n){ @@ -2454,9 +2452,9 @@ public final class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet { for (Object object : container.getChildren()) { HSSFShape shape = (HSSFShape) object; if (shape instanceof HSSFShapeGroup) { - HSSFShape res = lookForComment((HSSFShapeContainer) shape, row, column); + HSSFComment res = lookForComment((HSSFShapeContainer) shape, row, column); if (null != res) { - return (HSSFComment) res; + return res; } continue; } diff --git a/src/java/org/apache/poi/ss/format/CellElapsedFormatter.java b/src/java/org/apache/poi/ss/format/CellElapsedFormatter.java index 12654a7944..45c9b92f68 100644 --- a/src/java/org/apache/poi/ss/format/CellElapsedFormatter.java +++ b/src/java/org/apache/poi/ss/format/CellElapsedFormatter.java @@ -176,7 +176,6 @@ public class CellElapsedFormatter extends CellFormatter { case 'h': return 24; case 'm': - return 60; case 's': return 60; case '0': diff --git a/src/java/org/apache/poi/ss/formula/CollaboratingWorkbooksEnvironment.java b/src/java/org/apache/poi/ss/formula/CollaboratingWorkbooksEnvironment.java index 926a0a1854..65ef78c205 100644 --- a/src/java/org/apache/poi/ss/formula/CollaboratingWorkbooksEnvironment.java +++ b/src/java/org/apache/poi/ss/formula/CollaboratingWorkbooksEnvironment.java @@ -28,10 +28,10 @@ import org.apache.poi.ss.usermodel.FormulaEvaluator; import org.apache.poi.util.Internal; /** - * Manages a collection of {@link WorkbookEvaluator}s, in order to support + * Manages a collection of {@link WorkbookEvaluator}s, in order to support * evaluation of formulas across spreadsheets. * - * <p>For POI internal use only - use</p> + * <p>For POI internal use only - use</p> */ @Internal public final class CollaboratingWorkbooksEnvironment { @@ -70,8 +70,8 @@ public final class CollaboratingWorkbooksEnvironment { if (evaluatorsByName.size() < 1) { throw new IllegalArgumentException("Must provide at least one collaborating worbook"); } - WorkbookEvaluator[] evaluators = - evaluatorsByName.values().toArray(new WorkbookEvaluator[0]); + WorkbookEvaluator[] evaluators = + evaluatorsByName.values().toArray(new WorkbookEvaluator[0]); new CollaboratingWorkbooksEnvironment(evaluatorsByName, evaluators); } public static void setupFormulaEvaluator(Map<String,FormulaEvaluator> evaluators) { @@ -82,7 +82,7 @@ public final class CollaboratingWorkbooksEnvironment { if (eval instanceof WorkbookEvaluatorProvider) { evaluatorsByName.put(wbName, ((WorkbookEvaluatorProvider)eval)._getWorkbookEvaluator()); } else { - throw new IllegalArgumentException("Formula Evaluator " + eval + + throw new IllegalArgumentException("Formula Evaluator " + eval + " provides no WorkbookEvaluator access"); } } @@ -127,8 +127,8 @@ public final class CollaboratingWorkbooksEnvironment { int nItems = evaluators.length; IEvaluationListener evalListener = evaluators[0].getEvaluationListener(); // make sure that all evaluators have the same listener - for(int i=0; i<nItems; i++) { - if(evalListener != evaluators[i].getEvaluationListener()) { + for (WorkbookEvaluator evaluator : evaluators) { + if (evalListener != evaluator.getEvaluationListener()) { // This would be very complex to support throw new RuntimeException("Workbook evaluators must all have the same evaluation listener"); } @@ -145,13 +145,13 @@ public final class CollaboratingWorkbooksEnvironment { */ private void unhookOldEnvironments(WorkbookEvaluator[] evaluators) { Set<CollaboratingWorkbooksEnvironment> oldEnvs = new HashSet<>(); - for(int i=0; i<evaluators.length; i++) { - oldEnvs.add(evaluators[i].getEnvironment()); + for (WorkbookEvaluator evaluator : evaluators) { + oldEnvs.add(evaluator.getEnvironment()); } CollaboratingWorkbooksEnvironment[] oldCWEs = new CollaboratingWorkbooksEnvironment[oldEnvs.size()]; oldEnvs.toArray(oldCWEs); - for (int i = 0; i < oldCWEs.length; i++) { - oldCWEs[i].unhook(); + for (CollaboratingWorkbooksEnvironment oldCWE : oldCWEs) { + oldCWE.unhook(); } } @@ -163,8 +163,8 @@ public final class CollaboratingWorkbooksEnvironment { // Never dismantle the EMPTY environment return; } - for (int i = 0; i < _evaluators.length; i++) { - _evaluators[i].detachFromEnvironment(); + for (WorkbookEvaluator evaluator : _evaluators) { + evaluator.detachFromEnvironment(); } _unhooked = true; } diff --git a/src/java/org/apache/poi/ss/formula/OperationEvaluationContext.java b/src/java/org/apache/poi/ss/formula/OperationEvaluationContext.java index 5be4108d12..fcb1ccf9f2 100644 --- a/src/java/org/apache/poi/ss/formula/OperationEvaluationContext.java +++ b/src/java/org/apache/poi/ss/formula/OperationEvaluationContext.java @@ -112,7 +112,7 @@ public final class OperationEvaluationContext { } else { otherFirstSheetIndex = _workbook.getSheetIndex(externalSheet.getSheetName()); } - + if (externalSheet instanceof ExternalSheetRange) { String lastSheetName = ((ExternalSheetRange)externalSheet).getLastSheetName(); otherLastSheetIndex = _workbook.getSheetIndex(lastSheetName); @@ -125,28 +125,28 @@ public final class OperationEvaluationContext { } catch (WorkbookNotFoundException e) { throw new RuntimeException(e.getMessage(), e); } - + otherFirstSheetIndex = targetEvaluator.getSheetIndex(externalSheet.getSheetName()); if (externalSheet instanceof ExternalSheetRange) { String lastSheetName = ((ExternalSheetRange)externalSheet).getLastSheetName(); otherLastSheetIndex = targetEvaluator.getSheetIndex(lastSheetName); } - + if (otherFirstSheetIndex < 0) { throw new RuntimeException("Invalid sheet name '" + externalSheet.getSheetName() + "' in bool '" + workbookName + "'."); } } - + if (otherLastSheetIndex == -1) { // Reference to just one sheet otherLastSheetIndex = otherFirstSheetIndex; } - + SheetRefEvaluator[] evals = new SheetRefEvaluator[otherLastSheetIndex-otherFirstSheetIndex+1]; for (int i=0; i<evals.length; i++) { int otherSheetIndex = i+otherFirstSheetIndex; - evals[i] = new SheetRefEvaluator(targetEvaluator, _tracker, otherSheetIndex); + evals[i] = new SheetRefEvaluator(targetEvaluator, _tracker, otherSheetIndex); } return new SheetRangeEvaluator(otherFirstSheetIndex, otherLastSheetIndex, evals); } @@ -209,7 +209,7 @@ public final class OperationEvaluationContext { return ErrorEval.REF_INVALID; } SheetRangeEvaluator sre = new SheetRangeEvaluator(_sheetIndex, se); - + // ugly typecast - TODO - make spreadsheet version more easily accessible SpreadsheetVersion ssVersion = _workbook.getSpreadsheetVersion(); @@ -327,7 +327,7 @@ public final class OperationEvaluationContext { rptg.getSheetName(), rptg.getLastSheetName(), rptg.getExternalWorkbookNumber()); return new LazyRefEval(rptg.getRow(), rptg.getColumn(), sre); } - + public ValueEval getAreaEval(int firstRowIndex, int firstColumnIndex, int lastRowIndex, int lastColumnIndex) { SheetRangeEvaluator sre = getRefEvaluatorForCurrentSheet(); @@ -349,18 +349,18 @@ public final class OperationEvaluationContext { int lastRowIndex, int lastColumnIndex, Object[][] tokens) { ValueEval[] values = new ValueEval[tokens.length * tokens[0].length]; - + int index = 0; - for (int jdx = 0; jdx < tokens.length; jdx++) { + for (Object[] token : tokens) { for (int idx = 0; idx < tokens[0].length; idx++) { - values[index++] = convertObjectEval(tokens[jdx][idx]); + values[index++] = convertObjectEval(token[idx]); } } - + return new CacheAreaEval(firstRowIndex, firstColumnIndex, lastRowIndex, lastColumnIndex, values); } - + private ValueEval convertObjectEval(Object token) { if (token == null) { throw new RuntimeException("Array item cannot be null"); @@ -369,18 +369,18 @@ public final class OperationEvaluationContext { return new StringEval((String)token); } if (token instanceof Double) { - return new NumberEval(((Double)token).doubleValue()); + return new NumberEval((Double) token); } if (token instanceof Boolean) { - return BoolEval.valueOf(((Boolean)token).booleanValue()); + return BoolEval.valueOf((Boolean) token); } if (token instanceof ErrorConstant) { return ErrorEval.valueOf(((ErrorConstant)token).getErrorCode()); } - throw new IllegalArgumentException("Unexpected constant class (" + token.getClass().getName() + ")"); + throw new IllegalArgumentException("Unexpected constant class (" + token.getClass().getName() + ")"); } - - + + public ValueEval getNameXEval(NameXPtg nameXPtg) { // Is the name actually on our workbook? ExternalSheet externSheet = _workbook.getExternalSheet(nameXPtg.getSheetRefIndex()); @@ -388,11 +388,11 @@ public final class OperationEvaluationContext { // External reference to our own workbook's name return getLocalNameXEval(nameXPtg); } - + // Look it up for the external workbook String workbookName = externSheet.getWorkbookName(); ExternalName externName = _workbook.getExternalName( - nameXPtg.getSheetRefIndex(), + nameXPtg.getSheetRefIndex(), nameXPtg.getNameIndex() ); return getExternalNameXEval(externName, workbookName); @@ -403,7 +403,7 @@ public final class OperationEvaluationContext { // External reference to our own workbook's name return getLocalNameXEval(nameXPxg); } - + // Look it up for the external workbook String workbookName = externSheet.getWorkbookName(); ExternalName externName = _workbook.getExternalName( @@ -413,14 +413,14 @@ public final class OperationEvaluationContext { ); return getExternalNameXEval(externName, workbookName); } - + private ValueEval getLocalNameXEval(NameXPxg nameXPxg) { // Look up the sheet, if present int sIdx = -1; if (nameXPxg.getSheetName() != null) { sIdx = _workbook.getSheetIndex(nameXPxg.getSheetName()); } - + // Is it a name or a function? String name = nameXPxg.getNameName(); EvaluationName evalName = _workbook.getName(name, sIdx); @@ -434,10 +434,10 @@ public final class OperationEvaluationContext { } private ValueEval getLocalNameXEval(NameXPtg nameXPtg) { String name = _workbook.resolveNameXText(nameXPtg); - + // Try to parse it as a name - int sheetNameAt = name.indexOf('!'); - EvaluationName evalName = null; + int sheetNameAt = name.indexOf('!'); + EvaluationName evalName; if (sheetNameAt > -1) { // Sheet based name String sheetName = name.substring(0, sheetNameAt); @@ -447,7 +447,7 @@ public final class OperationEvaluationContext { // Workbook based name evalName = _workbook.getName(name, -1); } - + if (evalName != null) { // Process it as a name return new ExternalNameEval(evalName); @@ -459,15 +459,15 @@ public final class OperationEvaluationContext { public int getSheetIndex() { return _sheetIndex; } - + /** - * default true + * default true * @return flag indicating whether evaluation should "unwrap" the result to a single value based on the context row/column */ public boolean isSingleValue() { return _isSingleValue; } - + private ValueEval getExternalNameXEval(ExternalName externName, String workbookName) { try { // Fetch the workbook this refers to, and the name as defined with that @@ -477,11 +477,11 @@ public final class OperationEvaluationContext { if (evaluationName.getNameDefinition().length > 1) { throw new RuntimeException("Complex name formulas not supported yet"); } - + // Need to evaluate the reference in the context of the other book OperationEvaluationContext refWorkbookContext = new OperationEvaluationContext( refWorkbookEvaluator, refWorkbookEvaluator.getWorkbook(), -1, -1, -1, _tracker); - + Ptg ptg = evaluationName.getNameDefinition()[0]; if (ptg instanceof Ref3DPtg){ Ref3DPtg ref3D = (Ref3DPtg)ptg; diff --git a/src/java/org/apache/poi/ss/usermodel/Sheet.java b/src/java/org/apache/poi/ss/usermodel/Sheet.java index d9dd4ec132..517cbec353 100644 --- a/src/java/org/apache/poi/ss/usermodel/Sheet.java +++ b/src/java/org/apache/poi/ss/usermodel/Sheet.java @@ -38,25 +38,25 @@ import org.apache.poi.ss.util.PaneInformation; public interface Sheet extends Iterable<Row> { /* Constants for margins */ - public static final short LeftMargin = 0; + short LeftMargin = 0; - public static final short RightMargin = 1; + short RightMargin = 1; - public static final short TopMargin = 2; + short TopMargin = 2; - public static final short BottomMargin = 3; + short BottomMargin = 3; - public static final short HeaderMargin = 4; + short HeaderMargin = 4; - public static final short FooterMargin = 5; + short FooterMargin = 5; - public static final byte PANE_LOWER_RIGHT = (byte) 0; + byte PANE_LOWER_RIGHT = (byte) 0; - public static final byte PANE_UPPER_RIGHT = (byte) 1; + byte PANE_UPPER_RIGHT = (byte) 1; - public static final byte PANE_LOWER_LEFT = (byte) 2; + byte PANE_LOWER_LEFT = (byte) 2; - public static final byte PANE_UPPER_LEFT = (byte) 3; + byte PANE_UPPER_LEFT = (byte) 3; /** * Create a new row within the sheet and return the high level representation @@ -79,7 +79,7 @@ public interface Sheet extends Iterable<Row> { * defined you get a null. This is to say row 4 represents the fifth row on a sheet. * * @param rownum row to get (0-based) - * @return Row representing the rownumber or null if its not defined on the sheet + * @return Row representing the row-number or null if its not defined on the sheet */ Row getRow(int rownum); @@ -135,14 +135,14 @@ public interface Sheet extends Iterable<Row> { * * @param value true for right to left, false otherwise. */ - public void setRightToLeft(boolean value); + void setRightToLeft(boolean value); /** * Whether the text is displayed in right-to-left mode in the window * * @return whether the text is displayed in right-to-left mode in the window */ - public boolean isRightToLeft(); + boolean isRightToLeft(); /** * Set the width (in units of 1/256th of a character width)<p> @@ -266,7 +266,7 @@ public interface Sheet extends Iterable<Row> { * (0 based) column, or null if no style has been * set for that column */ - public CellStyle getColumnStyle(int column); + CellStyle getColumnStyle(int column); /* * Sets the CellStyle that applies to the given @@ -357,14 +357,14 @@ public interface Sheet extends Iterable<Row> { * * @return the merged region at the specified index */ - public CellRangeAddress getMergedRegion(int index); + CellRangeAddress getMergedRegion(int index); /** * Returns the list of merged regions. * * @return the list of merged regions */ - public List<CellRangeAddress> getMergedRegions(); + List<CellRangeAddress> getMergedRegions(); /** * Returns an iterator of the physical rows @@ -616,7 +616,7 @@ public interface Sheet extends Iterable<Row> { * Sets the protection enabled as well as the password * @param password to set for protection. Pass <code>null</code> to remove protection */ - public void protectSheet(String password); + void protectSheet(String password); /** * Answer whether scenario protection is enabled or disabled @@ -642,7 +642,7 @@ public interface Sheet extends Iterable<Row> { * @param scale window zoom magnification * @throws IllegalArgumentException if scale is invalid */ - public void setZoom(int scale); + void setZoom(int scale); /** * The top row in the visible view when the sheet is @@ -664,10 +664,10 @@ public interface Sheet extends Iterable<Row> { * Sets desktop window pane display area, when the * file is first opened in a viewer. * - * @param toprow the top row to show in desktop window pane - * @param leftcol the left column to show in desktop window pane + * @param topRow the top row to show in desktop window pane + * @param leftCol the left column to show in desktop window pane */ - void showInPane(int toprow, int leftcol); + void showInPane(int topRow, int leftCol); /** * Shifts rows between startRow and endRow n number of rows. @@ -1024,19 +1024,19 @@ public interface Sheet extends Iterable<Row> { */ CellRange<? extends Cell> removeArrayFormula(Cell cell); - public DataValidationHelper getDataValidationHelper(); + DataValidationHelper getDataValidationHelper(); /** * Returns the list of DataValidation in the sheet. * @return list of DataValidation in the sheet */ - public List<? extends DataValidation> getDataValidations(); + List<? extends DataValidation> getDataValidations(); /** * Creates a data validation object * @param dataValidation The Data validation object settings */ - public void addValidationData(DataValidation dataValidation); + void addValidationData(DataValidation dataValidation); /** * Enable filtering for a range of cells @@ -1157,7 +1157,7 @@ public interface Sheet extends Iterable<Row> { * @param column The 0-based index of the column to look at. * @return hyperlink if there is a hyperlink anchored at row, column; otherwise returns null */ - public Hyperlink getHyperlink(int row, int column); + Hyperlink getHyperlink(int row, int column); /** * Get a Hyperlink in this sheet located in a cell specified by {code addr} @@ -1166,14 +1166,14 @@ public interface Sheet extends Iterable<Row> { * @return hyperlink if there is a hyperlink anchored at {@code addr}; otherwise returns {@code null} * @since POI 3.15 beta 3 */ - public Hyperlink getHyperlink(CellAddress addr); + Hyperlink getHyperlink(CellAddress addr); /** * Get a list of Hyperlinks in this sheet * * @return Hyperlinks for the sheet */ - public List<? extends Hyperlink> getHyperlinkList(); + List<? extends Hyperlink> getHyperlinkList(); /** * Return location of the active cell, e.g. <code>A1</code>. @@ -1181,7 +1181,7 @@ public interface Sheet extends Iterable<Row> { * @return the location of the active cell. * @since 3.14beta1 */ - public CellAddress getActiveCell(); + CellAddress getActiveCell(); /** * Sets location of the active cell @@ -1189,5 +1189,5 @@ public interface Sheet extends Iterable<Row> { * @param address the location of the active cell, e.g. <code>A1</code>. * @since 3.14beta1 */ - public void setActiveCell(CellAddress address); + void setActiveCell(CellAddress address); } diff --git a/src/ooxml/java/org/apache/poi/poifs/crypt/agile/AgileEncryptor.java b/src/ooxml/java/org/apache/poi/poifs/crypt/agile/AgileEncryptor.java index dbdd5c0a14..d972476d63 100644 --- a/src/ooxml/java/org/apache/poi/poifs/crypt/agile/AgileEncryptor.java +++ b/src/ooxml/java/org/apache/poi/poifs/crypt/agile/AgileEncryptor.java @@ -35,6 +35,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.nio.charset.StandardCharsets; import java.security.GeneralSecurityException; import java.security.MessageDigest; import java.security.SecureRandom; @@ -381,7 +382,7 @@ public class AgileEncryptor extends Encryptor implements Cloneable { xo.setSaveNoXmlDecl(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); try { - bos.write("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n".getBytes("UTF-8")); + bos.write("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n".getBytes(StandardCharsets.UTF_8)); ed.save(bos, xo); bos.writeTo(os); } catch (IOException e) { diff --git a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFSheet.java b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFSheet.java index c7dbc40afe..2139111f5d 100644 --- a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFSheet.java +++ b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFSheet.java @@ -915,13 +915,13 @@ public class SXSSFSheet implements Sheet * Sets desktop window pane display area, when the * file is first opened in a viewer. * - * @param toprow the top row to show in desktop window pane - * @param leftcol the left column to show in desktop window pane + * @param topRow the top row to show in desktop window pane + * @param leftCol the left column to show in desktop window pane */ @Override - public void showInPane(int toprow, int leftcol) + public void showInPane(int topRow, int leftCol) { - _sh.showInPane(toprow, leftcol); + _sh.showInPane(topRow, leftCol); } /** diff --git a/src/ooxml/java/org/apache/poi/xssf/streaming/SheetDataWriter.java b/src/ooxml/java/org/apache/poi/xssf/streaming/SheetDataWriter.java index 30a9c4ec62..560dae8c23 100644 --- a/src/ooxml/java/org/apache/poi/xssf/streaming/SheetDataWriter.java +++ b/src/ooxml/java/org/apache/poi/xssf/streaming/SheetDataWriter.java @@ -29,6 +29,7 @@ import java.io.InputStream; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Writer; +import java.nio.charset.StandardCharsets; import java.util.Iterator; import org.apache.poi.ss.usermodel.Cell; @@ -103,7 +104,7 @@ public class SheetDataWriter implements Closeable { throw e; } return new BufferedWriter( - new OutputStreamWriter(decorated, "UTF-8")); + new OutputStreamWriter(decorated, StandardCharsets.UTF_8)); } /** @@ -113,7 +114,7 @@ public class SheetDataWriter implements Closeable { * * @param fos the stream to decorate * @return a decorated stream - * @throws IOException + * @throws IOException if decorating the stream fails * @see #decorateInputStream(FileInputStream) */ protected OutputStream decorateOutputStream(FileOutputStream fos) throws IOException { @@ -154,7 +155,7 @@ public class SheetDataWriter implements Closeable { * * @param fis the stream to decorate * @return a decorated stream - * @throws IOException + * @throws IOException if decorating the stream fails * @see #decorateOutputStream(FileOutputStream) */ protected InputStream decorateInputStream(FileInputStream fis) throws IOException { diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java index cc29353371..dcbe55cbd2 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java @@ -267,6 +267,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { for (CTRow row : worksheetParam.getSheetData().getRowArray()) { XSSFRow r = new XSSFRow(row, this); // Performance optimization: explicit boxing is slightly faster than auto-unboxing, though may use more memory + //noinspection UnnecessaryBoxing final Integer rownumI = Integer.valueOf(r.getRowNum()); // NOSONAR _rows.put(rownumI, r); } @@ -756,6 +757,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { @Override public XSSFRow createRow(int rownum) { // Performance optimization: explicit boxing is slightly faster than auto-unboxing, though may use more memory + //noinspection UnnecessaryBoxing final Integer rownumI = Integer.valueOf(rownum); // NOSONAR CTRow ctRow; XSSFRow prev = _rows.get(rownumI); @@ -1073,7 +1075,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { @Override public boolean isDisplayZeros(){ final CTSheetView dsv = getDefaultSheetView(false); - return (dsv != null) ? dsv.getShowZeros() : true; + return (dsv == null) || dsv.getShowZeros(); } /** @@ -1380,7 +1382,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { if (pane.isSetTopLeftCell()) { final CellReference cellRef = new CellReference(pane.getTopLeftCell()); row = (short)cellRef.getRow(); - col = (short)cellRef.getCol(); + col = cellRef.getCol(); } final short x = (short)pane.getXSplit(); @@ -1477,6 +1479,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { @Override public XSSFRow getRow(int rownum) { // Performance optimization: explicit boxing is slightly faster than auto-unboxing, though may use more memory + //noinspection UnnecessaryBoxing final Integer rownumI = Integer.valueOf(rownum); // NOSONAR return _rows.get(rownumI); } @@ -1509,7 +1512,9 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { } else { // Performance optimization: explicit boxing is slightly faster than auto-unboxing, though may use more memory + //noinspection UnnecessaryBoxing final Integer startI = Integer.valueOf(startRowNum); // NOSONAR + //noinspection UnnecessaryBoxing final Integer endI = Integer.valueOf(endRowNum+1); // NOSONAR final Collection<XSSFRow> inclusive = _rows.subMap(startI, endI).values(); rows.addAll(inclusive); @@ -1774,7 +1779,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { @Override public boolean isDisplayFormulas() { final CTSheetView dsv = getDefaultSheetView(false); - return (dsv != null) ? dsv.getShowFormulas() : false; + return dsv != null && dsv.getShowFormulas(); } /** @@ -1787,7 +1792,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { @Override public boolean isDisplayGridlines() { final CTSheetView dsv = getDefaultSheetView(false); - return (dsv != null) ? dsv.getShowGridLines() : true; + return (dsv == null) || dsv.getShowGridLines(); } /** @@ -1820,7 +1825,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { @Override public boolean isDisplayRowColHeadings() { final CTSheetView dsv = getDefaultSheetView(false); - return (dsv != null) ? dsv.getShowRowColHeaders() : true; + return (dsv == null) || dsv.getShowRowColHeaders(); } /** @@ -2017,8 +2022,9 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { row.removeCell(cell); } - // Performance optimization: explicit boxing is slightly faster than auto-unboxing, though may use more memory final int rowNum = row.getRowNum(); + // Performance optimization: explicit boxing is slightly faster than auto-unboxing, though may use more memory + //noinspection UnnecessaryBoxing final Integer rowNumI = Integer.valueOf(rowNum); // NOSONAR // this is not the physical row number! final int idx = _rows.headMap(rowNumI).size(); @@ -2272,8 +2278,8 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { } private void unsetCollapsed(Boolean collapsed, CTCol ci) { - if (collapsed != null && collapsed.booleanValue()) { - ci.setCollapsed(collapsed); + if (collapsed != null && collapsed) { + ci.setCollapsed(true); } else { ci.unsetCollapsed(); } @@ -3067,6 +3073,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { _rows.clear(); for(XSSFRow r : rowList) { // Performance optimization: explicit boxing is slightly faster than auto-unboxing, though may use more memory + //noinspection UnnecessaryBoxing final Integer rownumI = new Integer(r.getRowNum()); // NOSONAR _rows.put(rownumI, r); } @@ -3082,6 +3089,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { if (shouldRemoveRow(startRow, endRow, n, rownum)) { // remove row from worksheet.getSheetData row array // Performance optimization: explicit boxing is slightly faster than auto-unboxing, though may use more memory + //noinspection UnnecessaryBoxing final Integer rownumI = Integer.valueOf(row.getRowNum()); // NOSONAR int idx = _rows.headMap(rownumI).size(); worksheet.getSheetData().removeRow(idx); @@ -3266,12 +3274,12 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { * Location of the top left visible cell Location of the top left visible cell in the bottom right * pane (when in Left-to-Right mode). * - * @param toprow the top row to show in desktop window pane - * @param leftcol the left column to show in desktop window pane + * @param topRow the top row to show in desktop window pane + * @param leftCol the left column to show in desktop window pane */ @Override - public void showInPane(int toprow, int leftcol) { - final CellReference cellReference = new CellReference(toprow, leftcol); + public void showInPane(int topRow, int leftCol) { + final CellReference cellReference = new CellReference(topRow, leftCol); final String cellRef = cellReference.formatAsString(); final CTPane pane = getPane(true); assert(pane != null); @@ -3357,7 +3365,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { @Override public boolean isSelected() { final CTSheetView dsv = getDefaultSheetView(false); - return (dsv != null) ? dsv.getTabSelected() : false; + return dsv != null && dsv.getTabSelected(); } /** @@ -3516,8 +3524,8 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { if (n > 0 && rownum > endRow) { return true; } - else if (n < 0 && rownum < startRow) { - return true; + else { + return n < 0 && rownum < startRow; } } return false; @@ -4711,7 +4719,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { break; } } - return (coo == null) ? null : coo; + return coo; } finally { cur.dispose(); } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/model/TestSharedStringsTable.java b/src/ooxml/testcases/org/apache/poi/xssf/model/TestSharedStringsTable.java index 2e4de97ebe..27645c55af 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/model/TestSharedStringsTable.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/model/TestSharedStringsTable.java @@ -20,6 +20,7 @@ package org.apache.poi.xssf.model; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; @@ -252,7 +253,7 @@ public final class TestSharedStringsTable extends TestCase { List<String> strs = new ArrayList<>(); POIDataSamples samples = POIDataSamples.getSpreadSheetInstance(); BufferedReader br = new BufferedReader( - new InputStreamReader(samples.openResourceAsStream(filename), "UTF-8")); + new InputStreamReader(samples.openResourceAsStream(filename), StandardCharsets.UTF_8)); String s; while ((s = br.readLine()) != null) { if (s.trim().length() > 0) { diff --git a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSheetDataWriter.java b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSheetDataWriter.java index dc1b7a1d65..f2c3d85f6f 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSheetDataWriter.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSheetDataWriter.java @@ -26,6 +26,7 @@ import static org.junit.Assert.assertTrue; import java.io.File; import java.io.FileInputStream; import java.io.IOException; +import java.nio.charset.StandardCharsets; import org.apache.poi.util.IOUtils; import org.junit.Test; @@ -63,7 +64,7 @@ public final class TestSheetDataWriter { FileInputStream is = new FileInputStream(file); String text; try { - text = new String(IOUtils.toByteArray(is), "UTF-8"); + text = new String(IOUtils.toByteArray(is), StandardCharsets.UTF_8); } finally { is.close(); } @@ -82,7 +83,7 @@ public final class TestSheetDataWriter { FileInputStream is = new FileInputStream(file); String text; try { - text = new String(IOUtils.toByteArray(is), "UTF-8"); + text = new String(IOUtils.toByteArray(is), StandardCharsets.UTF_8); } finally { is.close(); } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java index 652644b7ca..b0a5474040 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java @@ -33,6 +33,7 @@ import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; +import java.nio.charset.StandardCharsets; import java.util.Date; import java.util.Iterator; import java.util.List; @@ -697,7 +698,7 @@ public final class TestXSSFWorkbook extends BaseTestXWorkbook { sheetBack.commit(); - String str = new String(IOUtils.toByteArray(sheetBack.getPackagePart().getInputStream()), "UTF-8"); + String str = new String(IOUtils.toByteArray(sheetBack.getPackagePart().getInputStream()), StandardCharsets.UTF_8); assertEquals(1, countMatches(str, "<worksheet")); } diff --git a/src/scratchpad/testcases/org/apache/poi/hmef/TestCompressedRTF.java b/src/scratchpad/testcases/org/apache/poi/hmef/TestCompressedRTF.java index d8781c22c1..959079a758 100644 --- a/src/scratchpad/testcases/org/apache/poi/hmef/TestCompressedRTF.java +++ b/src/scratchpad/testcases/org/apache/poi/hmef/TestCompressedRTF.java @@ -23,6 +23,7 @@ import static org.junit.Assert.assertTrue; import java.io.ByteArrayInputStream; import java.io.InputStream; +import java.nio.charset.StandardCharsets; import org.apache.poi.POIDataSamples; import org.apache.poi.hmef.attribute.MAPIAttribute; @@ -118,7 +119,7 @@ public final class TestCompressedRTF { // Decompress it CompressedRTF comp = new CompressedRTF(); byte[] decomp = comp.decompress(new ByteArrayInputStream(data)); - String decompStr = new String(decomp, "ASCII"); + String decompStr = new String(decomp, StandardCharsets.US_ASCII); // Test assertEquals(block1.length(), decomp.length); @@ -147,7 +148,7 @@ public final class TestCompressedRTF { // Decompress it CompressedRTF comp = new CompressedRTF(); byte[] decomp = comp.decompress(new ByteArrayInputStream(data)); - String decompStr = new String(decomp, "ASCII"); + String decompStr = new String(decomp, StandardCharsets.US_ASCII); // Test assertEquals(block2.length(), decomp.length); @@ -195,7 +196,7 @@ public final class TestCompressedRTF { } // By String - String expString = new String(expected, "ASCII"); + String expString = new String(expected, StandardCharsets.US_ASCII); String decompStr = rtfAttr.getDataString(); assertEquals(expString.length(), decompStr.length()); assertEquals(expString, decompStr); diff --git a/src/scratchpad/testcases/org/apache/poi/hmef/TestHMEFMessage.java b/src/scratchpad/testcases/org/apache/poi/hmef/TestHMEFMessage.java index 73a4b1b74e..1bf0fa117b 100644 --- a/src/scratchpad/testcases/org/apache/poi/hmef/TestHMEFMessage.java +++ b/src/scratchpad/testcases/org/apache/poi/hmef/TestHMEFMessage.java @@ -27,6 +27,7 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; +import java.nio.charset.StandardCharsets; import org.apache.poi.POIDataSamples; import org.apache.poi.hmef.attribute.MAPIAttribute; @@ -109,7 +110,7 @@ public final class TestHMEFMessage { ); assertEquals( "IPM.Microsoft Mail.Note\0", - new String(msg.getMessageAttribute(TNEFProperty.ID_MESSAGECLASS).getData(), "ASCII") + new String(msg.getMessageAttribute(TNEFProperty.ID_MESSAGECLASS).getData(), StandardCharsets.US_ASCII) ); } @@ -141,7 +142,7 @@ public final class TestHMEFMessage { // Then by String String contents = msg.getBody(); // It's all low bytes - byte[] contentsBytes = contents.getBytes("ASCII"); + byte[] contentsBytes = contents.getBytes(StandardCharsets.US_ASCII); assertContents("message.rtf", contentsBytes); // try to get a message id that does not exist @@ -163,7 +164,7 @@ public final class TestHMEFMessage { String contents = msg.getBody(); //System.out.println(contents); // It's all low bytes - byte[] contentsBytes = contents.getBytes("ASCII"); + byte[] contentsBytes = contents.getBytes(StandardCharsets.US_ASCII); // assertContents("message.rtf", contentsBytes); assertNotNull(contentsBytes); diff --git a/src/scratchpad/testcases/org/apache/poi/hmef/attribute/TestTNEFAttributes.java b/src/scratchpad/testcases/org/apache/poi/hmef/attribute/TestTNEFAttributes.java index 4f274aa54e..eebb48d971 100644 --- a/src/scratchpad/testcases/org/apache/poi/hmef/attribute/TestTNEFAttributes.java +++ b/src/scratchpad/testcases/org/apache/poi/hmef/attribute/TestTNEFAttributes.java @@ -22,6 +22,7 @@ import static org.junit.Assert.assertNotNull; import java.io.ByteArrayInputStream; import java.io.InputStream; +import java.nio.charset.StandardCharsets; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Locale; @@ -74,7 +75,7 @@ public final class TestTNEFAttributes { // Claims not to be text, but really is assertEquals( "IPM.Microsoft Mail.Note\0", - new String(quick.getMessageAttribute(TNEFProperty.ID_MESSAGECLASS).getData(), "ASCII") + new String(quick.getMessageAttribute(TNEFProperty.ID_MESSAGECLASS).getData(), StandardCharsets.US_ASCII) ); // Try constructing two attributes @@ -135,7 +136,7 @@ public final class TestTNEFAttributes { assertEquals(TNEFStringAttribute.class, attr.getClass()); // It is a null terminated string - assertEquals("quick.doc\u0000", new String(attr.getData(), "ASCII")); + assertEquals("quick.doc\u0000", new String(attr.getData(), StandardCharsets.US_ASCII)); // But when we ask for the string, that is sorted for us TNEFStringAttribute str = (TNEFStringAttribute) attr; diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/record/TestTextBytesAtom.java b/src/scratchpad/testcases/org/apache/poi/hslf/record/TestTextBytesAtom.java index 9078bd1663..10cc527ed6 100644 --- a/src/scratchpad/testcases/org/apache/poi/hslf/record/TestTextBytesAtom.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/record/TestTextBytesAtom.java @@ -20,6 +20,7 @@ package org.apache.poi.hslf.record; import junit.framework.TestCase; import java.io.ByteArrayOutputStream; +import java.nio.charset.StandardCharsets; /** * Tests that TextBytesAtom works properly @@ -54,7 +55,7 @@ public final class TestTextBytesAtom extends TestCase { public void testChangeText() throws Exception { TextBytesAtom tba = new TextBytesAtom(data,0,data.length); - tba.setText(alt_text.getBytes("ISO-8859-1")); + tba.setText(alt_text.getBytes(StandardCharsets.ISO_8859_1)); ByteArrayOutputStream baos = new ByteArrayOutputStream(); tba.writeOut(baos); diff --git a/src/testcases/org/apache/poi/ss/formula/eval/TestMinusZeroResult.java b/src/testcases/org/apache/poi/ss/formula/eval/TestMinusZeroResult.java index 8e7af0312d..8ddead517f 100644 --- a/src/testcases/org/apache/poi/ss/formula/eval/TestMinusZeroResult.java +++ b/src/testcases/org/apache/poi/ss/formula/eval/TestMinusZeroResult.java @@ -68,19 +68,19 @@ public final class TestMinusZeroResult extends TestCase { } public void testTextRendering() { - confirmTextRendering("-0", MINUS_ZERO); + confirmTextRendering(MINUS_ZERO); // sub-normal negative numbers also display as '-0' - confirmTextRendering("-0", Double.longBitsToDouble(0x8000100020003000L)); + confirmTextRendering(Double.longBitsToDouble(0x8000100020003000L)); } /** * Uses {@link ConcatEval} to force number-to-text conversion */ - private static void confirmTextRendering(String expRendering, double d) { + private static void confirmTextRendering(double d) { ValueEval[] args = { StringEval.EMPTY_INSTANCE, new NumberEval(d), }; StringEval se = (StringEval) EvalInstances.Concat.evaluate(args, -1, (short)-1); String result = se.getStringValue(); - assertEquals(expRendering, result); + assertEquals("-0", result); } private static void checkEval(double expectedResult, Function instance, double... dArgs) { @@ -104,12 +104,14 @@ public final class TestMinusZeroResult extends TestCase { * Not really a POI test - just shows similar behaviour of '-0.0' in Java. */ public void testJava() { - assertEquals(0x8000000000000000L, Double.doubleToLongBits(MINUS_ZERO)); // The simple operators consider all zeros to be the same + //noinspection SimplifiableJUnitAssertion,ConstantConditions assertTrue(MINUS_ZERO == MINUS_ZERO); + //noinspection SimplifiableJUnitAssertion,ConstantConditions assertTrue(MINUS_ZERO == +0.0); + //noinspection ConstantConditions assertFalse(MINUS_ZERO < +0.0); // Double.compare() considers them different diff --git a/src/testcases/org/apache/poi/util/TestIOUtils.java b/src/testcases/org/apache/poi/util/TestIOUtils.java index a8e9bbfa37..1445cb9978 100644 --- a/src/testcases/org/apache/poi/util/TestIOUtils.java +++ b/src/testcases/org/apache/poi/util/TestIOUtils.java @@ -31,6 +31,7 @@ import java.io.InputStream; import java.io.OutputStream; import java.io.PushbackInputStream; import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; import java.util.Random; import org.apache.poi.EmptyFileException; @@ -65,14 +66,14 @@ public final class TestIOUtils { @Test public void testPeekFirst8Bytes() throws Exception { - assertArrayEquals("01234567".getBytes("UTF-8"), - IOUtils.peekFirst8Bytes(new ByteArrayInputStream("0123456789".getBytes("UTF-8")))); + assertArrayEquals("01234567".getBytes(StandardCharsets.UTF_8), + IOUtils.peekFirst8Bytes(new ByteArrayInputStream("0123456789".getBytes(StandardCharsets.UTF_8)))); } @Test public void testPeekFirst8BytesWithPushbackInputStream() throws Exception { - assertArrayEquals("01234567".getBytes("UTF-8"), - IOUtils.peekFirst8Bytes(new PushbackInputStream(new ByteArrayInputStream("0123456789".getBytes("UTF-8")), 8))); + assertArrayEquals("01234567".getBytes(StandardCharsets.UTF_8), + IOUtils.peekFirst8Bytes(new PushbackInputStream(new ByteArrayInputStream("0123456789".getBytes(StandardCharsets.UTF_8)), 8))); } @Test |