Adjust some JavaDoc and fix some IDE warnings

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1871505 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Dominik Stadler 2019-12-14 13:10:12 +00:00
parent 4c034f0e20
commit 57b0576f63
19 changed files with 157 additions and 140 deletions

View File

@ -338,17 +338,17 @@ public class ToCSV {
for(File excelFile : filesList) { for(File excelFile : filesList) {
// Open the workbook // Open the workbook
this.openWorkbook(excelFile); this.openWorkbook(excelFile);
// Convert it's contents into a CSV file // Convert it's contents into a CSV file
this.convertToCSV(); this.convertToCSV();
// Build the name of the csv folder from that of the Excel workbook. // Build the name of the csv folder from that of the Excel workbook.
// Simply replace the .xls or .xlsx file extension with .csv // Simply replace the .xls or .xlsx file extension with .csv
destinationFilename = excelFile.getName(); destinationFilename = excelFile.getName();
destinationFilename = destinationFilename.substring( destinationFilename = destinationFilename.substring(
0, destinationFilename.lastIndexOf(".")) + 0, destinationFilename.lastIndexOf(".")) +
ToCSV.CSV_FILE_EXTENSION; ToCSV.CSV_FILE_EXTENSION;
// Save the CSV file away using the newly constricted file name // Save the CSV file away using the newly constricted file name
// and to the specified directory. // and to the specified directory.
this.saveCSVFile(new File(destination, destinationFilename)); this.saveCSVFile(new File(destination, destinationFilename));
@ -649,7 +649,7 @@ public class ToCSV {
// passed to the main method. // passed to the main method.
converter.convertExcelToCSV(args[0], args[1]); converter.convertExcelToCSV(args[0], args[1]);
} }
else if(args.length == 3){ else if(args.length == 3) {
// The Source File/Folder, Destination Folder and Separator // The Source File/Folder, Destination Folder and Separator
// were passed to the main method. // were passed to the main method.
converter.convertExcelToCSV(args[0], args[1], args[2]); converter.convertExcelToCSV(args[0], args[1], args[2]);
@ -699,9 +699,9 @@ public class ToCSV {
ex.printStackTrace(System.out); ex.printStackTrace(System.out);
converted = false; converted = false;
} }
if (converted) { if (converted) {
System.out.println("Conversion took " + System.out.println("Conversion took " +
((System.currentTimeMillis() - startTime)/1000) + " seconds"); ((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 * be a call to the listFiles() method when made on an instance of the
* File class and that object refers to a folder/directory * 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 * Determine those files that will be returned by a call to the

View File

@ -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.Cell;
import org.apache.poi.ss.usermodel.CellRange; import org.apache.poi.ss.usermodel.CellRange;
import org.apache.poi.ss.usermodel.CellStyle; 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.DataValidation;
import org.apache.poi.ss.usermodel.DataValidationHelper; import org.apache.poi.ss.usermodel.DataValidationHelper;
import org.apache.poi.ss.usermodel.Row; 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 * Sets desktop window pane display area, when the
* file is first opened in a viewer. * file is first opened in a viewer.
* *
* @param toprow the top row 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 * @param leftCol the left column to show in desktop window pane
*/ */
@Override @Override
public void showInPane(int toprow, int leftcol) { public void showInPane(int topRow, int leftCol) {
int maxrow = SpreadsheetVersion.EXCEL97.getLastRowIndex(); 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 * 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. * For n < 0, it will shift columns left.
* Additionally adjusts formulas. * Additionally adjusts formulas.
* Probably should also process other features (hyperlinks, comments...) in the way analog to shiftRows method * Probably should also process other features (hyperlinks, comments...) in the way analog to shiftRows method
* @param startRow the row to start shifting * @param startColumn the column to start shifting
* @param endRow the row to end shifting * @param endColumn the column to end shifting
* @param n the number of rows to shift * @param n the number of columns to shift
*/ */
@Beta @Beta
@Override @Override
public void shiftColumns(int startColumn, int endColumn, int n){ 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()) { for (Object object : container.getChildren()) {
HSSFShape shape = (HSSFShape) object; HSSFShape shape = (HSSFShape) object;
if (shape instanceof HSSFShapeGroup) { if (shape instanceof HSSFShapeGroup) {
HSSFShape res = lookForComment((HSSFShapeContainer) shape, row, column); HSSFComment res = lookForComment((HSSFShapeContainer) shape, row, column);
if (null != res) { if (null != res) {
return (HSSFComment) res; return res;
} }
continue; continue;
} }

View File

@ -176,7 +176,6 @@ public class CellElapsedFormatter extends CellFormatter {
case 'h': case 'h':
return 24; return 24;
case 'm': case 'm':
return 60;
case 's': case 's':
return 60; return 60;
case '0': case '0':

View File

@ -28,10 +28,10 @@ import org.apache.poi.ss.usermodel.FormulaEvaluator;
import org.apache.poi.util.Internal; 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. * evaluation of formulas across spreadsheets.
* *
* <p>For POI internal use only - use</p> * <p>For POI internal use only - use</p>
*/ */
@Internal @Internal
public final class CollaboratingWorkbooksEnvironment { public final class CollaboratingWorkbooksEnvironment {
@ -70,8 +70,8 @@ public final class CollaboratingWorkbooksEnvironment {
if (evaluatorsByName.size() < 1) { if (evaluatorsByName.size() < 1) {
throw new IllegalArgumentException("Must provide at least one collaborating worbook"); throw new IllegalArgumentException("Must provide at least one collaborating worbook");
} }
WorkbookEvaluator[] evaluators = WorkbookEvaluator[] evaluators =
evaluatorsByName.values().toArray(new WorkbookEvaluator[0]); evaluatorsByName.values().toArray(new WorkbookEvaluator[0]);
new CollaboratingWorkbooksEnvironment(evaluatorsByName, evaluators); new CollaboratingWorkbooksEnvironment(evaluatorsByName, evaluators);
} }
public static void setupFormulaEvaluator(Map<String,FormulaEvaluator> evaluators) { public static void setupFormulaEvaluator(Map<String,FormulaEvaluator> evaluators) {
@ -82,7 +82,7 @@ public final class CollaboratingWorkbooksEnvironment {
if (eval instanceof WorkbookEvaluatorProvider) { if (eval instanceof WorkbookEvaluatorProvider) {
evaluatorsByName.put(wbName, ((WorkbookEvaluatorProvider)eval)._getWorkbookEvaluator()); evaluatorsByName.put(wbName, ((WorkbookEvaluatorProvider)eval)._getWorkbookEvaluator());
} else { } else {
throw new IllegalArgumentException("Formula Evaluator " + eval + throw new IllegalArgumentException("Formula Evaluator " + eval +
" provides no WorkbookEvaluator access"); " provides no WorkbookEvaluator access");
} }
} }
@ -127,8 +127,8 @@ public final class CollaboratingWorkbooksEnvironment {
int nItems = evaluators.length; int nItems = evaluators.length;
IEvaluationListener evalListener = evaluators[0].getEvaluationListener(); IEvaluationListener evalListener = evaluators[0].getEvaluationListener();
// make sure that all evaluators have the same listener // make sure that all evaluators have the same listener
for(int i=0; i<nItems; i++) { for (WorkbookEvaluator evaluator : evaluators) {
if(evalListener != evaluators[i].getEvaluationListener()) { if (evalListener != evaluator.getEvaluationListener()) {
// This would be very complex to support // This would be very complex to support
throw new RuntimeException("Workbook evaluators must all have the same evaluation listener"); 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) { private void unhookOldEnvironments(WorkbookEvaluator[] evaluators) {
Set<CollaboratingWorkbooksEnvironment> oldEnvs = new HashSet<>(); Set<CollaboratingWorkbooksEnvironment> oldEnvs = new HashSet<>();
for(int i=0; i<evaluators.length; i++) { for (WorkbookEvaluator evaluator : evaluators) {
oldEnvs.add(evaluators[i].getEnvironment()); oldEnvs.add(evaluator.getEnvironment());
} }
CollaboratingWorkbooksEnvironment[] oldCWEs = new CollaboratingWorkbooksEnvironment[oldEnvs.size()]; CollaboratingWorkbooksEnvironment[] oldCWEs = new CollaboratingWorkbooksEnvironment[oldEnvs.size()];
oldEnvs.toArray(oldCWEs); oldEnvs.toArray(oldCWEs);
for (int i = 0; i < oldCWEs.length; i++) { for (CollaboratingWorkbooksEnvironment oldCWE : oldCWEs) {
oldCWEs[i].unhook(); oldCWE.unhook();
} }
} }
@ -163,8 +163,8 @@ public final class CollaboratingWorkbooksEnvironment {
// Never dismantle the EMPTY environment // Never dismantle the EMPTY environment
return; return;
} }
for (int i = 0; i < _evaluators.length; i++) { for (WorkbookEvaluator evaluator : _evaluators) {
_evaluators[i].detachFromEnvironment(); evaluator.detachFromEnvironment();
} }
_unhooked = true; _unhooked = true;
} }

View File

@ -112,7 +112,7 @@ public final class OperationEvaluationContext {
} else { } else {
otherFirstSheetIndex = _workbook.getSheetIndex(externalSheet.getSheetName()); otherFirstSheetIndex = _workbook.getSheetIndex(externalSheet.getSheetName());
} }
if (externalSheet instanceof ExternalSheetRange) { if (externalSheet instanceof ExternalSheetRange) {
String lastSheetName = ((ExternalSheetRange)externalSheet).getLastSheetName(); String lastSheetName = ((ExternalSheetRange)externalSheet).getLastSheetName();
otherLastSheetIndex = _workbook.getSheetIndex(lastSheetName); otherLastSheetIndex = _workbook.getSheetIndex(lastSheetName);
@ -125,28 +125,28 @@ public final class OperationEvaluationContext {
} catch (WorkbookNotFoundException e) { } catch (WorkbookNotFoundException e) {
throw new RuntimeException(e.getMessage(), e); throw new RuntimeException(e.getMessage(), e);
} }
otherFirstSheetIndex = targetEvaluator.getSheetIndex(externalSheet.getSheetName()); otherFirstSheetIndex = targetEvaluator.getSheetIndex(externalSheet.getSheetName());
if (externalSheet instanceof ExternalSheetRange) { if (externalSheet instanceof ExternalSheetRange) {
String lastSheetName = ((ExternalSheetRange)externalSheet).getLastSheetName(); String lastSheetName = ((ExternalSheetRange)externalSheet).getLastSheetName();
otherLastSheetIndex = targetEvaluator.getSheetIndex(lastSheetName); otherLastSheetIndex = targetEvaluator.getSheetIndex(lastSheetName);
} }
if (otherFirstSheetIndex < 0) { if (otherFirstSheetIndex < 0) {
throw new RuntimeException("Invalid sheet name '" + externalSheet.getSheetName() throw new RuntimeException("Invalid sheet name '" + externalSheet.getSheetName()
+ "' in bool '" + workbookName + "'."); + "' in bool '" + workbookName + "'.");
} }
} }
if (otherLastSheetIndex == -1) { if (otherLastSheetIndex == -1) {
// Reference to just one sheet // Reference to just one sheet
otherLastSheetIndex = otherFirstSheetIndex; otherLastSheetIndex = otherFirstSheetIndex;
} }
SheetRefEvaluator[] evals = new SheetRefEvaluator[otherLastSheetIndex-otherFirstSheetIndex+1]; SheetRefEvaluator[] evals = new SheetRefEvaluator[otherLastSheetIndex-otherFirstSheetIndex+1];
for (int i=0; i<evals.length; i++) { for (int i=0; i<evals.length; i++) {
int otherSheetIndex = i+otherFirstSheetIndex; int otherSheetIndex = i+otherFirstSheetIndex;
evals[i] = new SheetRefEvaluator(targetEvaluator, _tracker, otherSheetIndex); evals[i] = new SheetRefEvaluator(targetEvaluator, _tracker, otherSheetIndex);
} }
return new SheetRangeEvaluator(otherFirstSheetIndex, otherLastSheetIndex, evals); return new SheetRangeEvaluator(otherFirstSheetIndex, otherLastSheetIndex, evals);
} }
@ -209,7 +209,7 @@ public final class OperationEvaluationContext {
return ErrorEval.REF_INVALID; return ErrorEval.REF_INVALID;
} }
SheetRangeEvaluator sre = new SheetRangeEvaluator(_sheetIndex, se); SheetRangeEvaluator sre = new SheetRangeEvaluator(_sheetIndex, se);
// ugly typecast - TODO - make spreadsheet version more easily accessible // ugly typecast - TODO - make spreadsheet version more easily accessible
SpreadsheetVersion ssVersion = _workbook.getSpreadsheetVersion(); SpreadsheetVersion ssVersion = _workbook.getSpreadsheetVersion();
@ -327,7 +327,7 @@ public final class OperationEvaluationContext {
rptg.getSheetName(), rptg.getLastSheetName(), rptg.getExternalWorkbookNumber()); rptg.getSheetName(), rptg.getLastSheetName(), rptg.getExternalWorkbookNumber());
return new LazyRefEval(rptg.getRow(), rptg.getColumn(), sre); return new LazyRefEval(rptg.getRow(), rptg.getColumn(), sre);
} }
public ValueEval getAreaEval(int firstRowIndex, int firstColumnIndex, public ValueEval getAreaEval(int firstRowIndex, int firstColumnIndex,
int lastRowIndex, int lastColumnIndex) { int lastRowIndex, int lastColumnIndex) {
SheetRangeEvaluator sre = getRefEvaluatorForCurrentSheet(); SheetRangeEvaluator sre = getRefEvaluatorForCurrentSheet();
@ -349,18 +349,18 @@ public final class OperationEvaluationContext {
int lastRowIndex, int lastColumnIndex, Object[][] tokens) { int lastRowIndex, int lastColumnIndex, Object[][] tokens) {
ValueEval[] values = new ValueEval[tokens.length * tokens[0].length]; ValueEval[] values = new ValueEval[tokens.length * tokens[0].length];
int index = 0; int index = 0;
for (int jdx = 0; jdx < tokens.length; jdx++) { for (Object[] token : tokens) {
for (int idx = 0; idx < tokens[0].length; idx++) { 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, return new CacheAreaEval(firstRowIndex, firstColumnIndex, lastRowIndex,
lastColumnIndex, values); lastColumnIndex, values);
} }
private ValueEval convertObjectEval(Object token) { private ValueEval convertObjectEval(Object token) {
if (token == null) { if (token == null) {
throw new RuntimeException("Array item cannot be null"); throw new RuntimeException("Array item cannot be null");
@ -369,18 +369,18 @@ public final class OperationEvaluationContext {
return new StringEval((String)token); return new StringEval((String)token);
} }
if (token instanceof Double) { if (token instanceof Double) {
return new NumberEval(((Double)token).doubleValue()); return new NumberEval((Double) token);
} }
if (token instanceof Boolean) { if (token instanceof Boolean) {
return BoolEval.valueOf(((Boolean)token).booleanValue()); return BoolEval.valueOf((Boolean) token);
} }
if (token instanceof ErrorConstant) { if (token instanceof ErrorConstant) {
return ErrorEval.valueOf(((ErrorConstant)token).getErrorCode()); 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) { public ValueEval getNameXEval(NameXPtg nameXPtg) {
// Is the name actually on our workbook? // Is the name actually on our workbook?
ExternalSheet externSheet = _workbook.getExternalSheet(nameXPtg.getSheetRefIndex()); ExternalSheet externSheet = _workbook.getExternalSheet(nameXPtg.getSheetRefIndex());
@ -388,11 +388,11 @@ public final class OperationEvaluationContext {
// External reference to our own workbook's name // External reference to our own workbook's name
return getLocalNameXEval(nameXPtg); return getLocalNameXEval(nameXPtg);
} }
// Look it up for the external workbook // Look it up for the external workbook
String workbookName = externSheet.getWorkbookName(); String workbookName = externSheet.getWorkbookName();
ExternalName externName = _workbook.getExternalName( ExternalName externName = _workbook.getExternalName(
nameXPtg.getSheetRefIndex(), nameXPtg.getSheetRefIndex(),
nameXPtg.getNameIndex() nameXPtg.getNameIndex()
); );
return getExternalNameXEval(externName, workbookName); return getExternalNameXEval(externName, workbookName);
@ -403,7 +403,7 @@ public final class OperationEvaluationContext {
// External reference to our own workbook's name // External reference to our own workbook's name
return getLocalNameXEval(nameXPxg); return getLocalNameXEval(nameXPxg);
} }
// Look it up for the external workbook // Look it up for the external workbook
String workbookName = externSheet.getWorkbookName(); String workbookName = externSheet.getWorkbookName();
ExternalName externName = _workbook.getExternalName( ExternalName externName = _workbook.getExternalName(
@ -413,14 +413,14 @@ public final class OperationEvaluationContext {
); );
return getExternalNameXEval(externName, workbookName); return getExternalNameXEval(externName, workbookName);
} }
private ValueEval getLocalNameXEval(NameXPxg nameXPxg) { private ValueEval getLocalNameXEval(NameXPxg nameXPxg) {
// Look up the sheet, if present // Look up the sheet, if present
int sIdx = -1; int sIdx = -1;
if (nameXPxg.getSheetName() != null) { if (nameXPxg.getSheetName() != null) {
sIdx = _workbook.getSheetIndex(nameXPxg.getSheetName()); sIdx = _workbook.getSheetIndex(nameXPxg.getSheetName());
} }
// Is it a name or a function? // Is it a name or a function?
String name = nameXPxg.getNameName(); String name = nameXPxg.getNameName();
EvaluationName evalName = _workbook.getName(name, sIdx); EvaluationName evalName = _workbook.getName(name, sIdx);
@ -434,10 +434,10 @@ public final class OperationEvaluationContext {
} }
private ValueEval getLocalNameXEval(NameXPtg nameXPtg) { private ValueEval getLocalNameXEval(NameXPtg nameXPtg) {
String name = _workbook.resolveNameXText(nameXPtg); String name = _workbook.resolveNameXText(nameXPtg);
// Try to parse it as a name // Try to parse it as a name
int sheetNameAt = name.indexOf('!'); int sheetNameAt = name.indexOf('!');
EvaluationName evalName = null; EvaluationName evalName;
if (sheetNameAt > -1) { if (sheetNameAt > -1) {
// Sheet based name // Sheet based name
String sheetName = name.substring(0, sheetNameAt); String sheetName = name.substring(0, sheetNameAt);
@ -447,7 +447,7 @@ public final class OperationEvaluationContext {
// Workbook based name // Workbook based name
evalName = _workbook.getName(name, -1); evalName = _workbook.getName(name, -1);
} }
if (evalName != null) { if (evalName != null) {
// Process it as a name // Process it as a name
return new ExternalNameEval(evalName); return new ExternalNameEval(evalName);
@ -459,15 +459,15 @@ public final class OperationEvaluationContext {
public int getSheetIndex() { public int getSheetIndex() {
return _sheetIndex; 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 * @return flag indicating whether evaluation should "unwrap" the result to a single value based on the context row/column
*/ */
public boolean isSingleValue() { public boolean isSingleValue() {
return _isSingleValue; return _isSingleValue;
} }
private ValueEval getExternalNameXEval(ExternalName externName, String workbookName) { private ValueEval getExternalNameXEval(ExternalName externName, String workbookName) {
try { try {
// Fetch the workbook this refers to, and the name as defined with that // 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) { if (evaluationName.getNameDefinition().length > 1) {
throw new RuntimeException("Complex name formulas not supported yet"); throw new RuntimeException("Complex name formulas not supported yet");
} }
// Need to evaluate the reference in the context of the other book // Need to evaluate the reference in the context of the other book
OperationEvaluationContext refWorkbookContext = new OperationEvaluationContext( OperationEvaluationContext refWorkbookContext = new OperationEvaluationContext(
refWorkbookEvaluator, refWorkbookEvaluator.getWorkbook(), -1, -1, -1, _tracker); refWorkbookEvaluator, refWorkbookEvaluator.getWorkbook(), -1, -1, -1, _tracker);
Ptg ptg = evaluationName.getNameDefinition()[0]; Ptg ptg = evaluationName.getNameDefinition()[0];
if (ptg instanceof Ref3DPtg){ if (ptg instanceof Ref3DPtg){
Ref3DPtg ref3D = (Ref3DPtg)ptg; Ref3DPtg ref3D = (Ref3DPtg)ptg;

View File

@ -38,25 +38,25 @@ import org.apache.poi.ss.util.PaneInformation;
public interface Sheet extends Iterable<Row> { public interface Sheet extends Iterable<Row> {
/* Constants for margins */ /* 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 * 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. * 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) * @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); Row getRow(int rownum);
@ -135,14 +135,14 @@ public interface Sheet extends Iterable<Row> {
* *
* @param value true for right to left, false otherwise. * @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 * 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 * @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> * 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 * (0 based) column, or null if no style has been
* set for that column * set for that column
*/ */
public CellStyle getColumnStyle(int column); CellStyle getColumnStyle(int column);
/* /*
* Sets the CellStyle that applies to the given * 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 * @return the merged region at the specified index
*/ */
public CellRangeAddress getMergedRegion(int index); CellRangeAddress getMergedRegion(int index);
/** /**
* Returns the list of merged regions. * Returns the list of merged regions.
* *
* @return 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 * 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 * Sets the protection enabled as well as the password
* @param password to set for protection. Pass <code>null</code> to remove protection * @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 * Answer whether scenario protection is enabled or disabled
@ -642,7 +642,7 @@ public interface Sheet extends Iterable<Row> {
* @param scale window zoom magnification * @param scale window zoom magnification
* @throws IllegalArgumentException if scale is invalid * @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 * 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 * Sets desktop window pane display area, when the
* file is first opened in a viewer. * file is first opened in a viewer.
* *
* @param toprow the top row 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 * @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. * 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); CellRange<? extends Cell> removeArrayFormula(Cell cell);
public DataValidationHelper getDataValidationHelper(); DataValidationHelper getDataValidationHelper();
/** /**
* Returns the list of DataValidation in the sheet. * Returns the list of DataValidation in the sheet.
* @return 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 * Creates a data validation object
* @param dataValidation The Data validation object settings * @param dataValidation The Data validation object settings
*/ */
public void addValidationData(DataValidation dataValidation); void addValidationData(DataValidation dataValidation);
/** /**
* Enable filtering for a range of cells * 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. * @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 * @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} * 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} * @return hyperlink if there is a hyperlink anchored at {@code addr}; otherwise returns {@code null}
* @since POI 3.15 beta 3 * @since POI 3.15 beta 3
*/ */
public Hyperlink getHyperlink(CellAddress addr); Hyperlink getHyperlink(CellAddress addr);
/** /**
* Get a list of Hyperlinks in this sheet * Get a list of Hyperlinks in this sheet
* *
* @return Hyperlinks for the 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>. * 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. * @return the location of the active cell.
* @since 3.14beta1 * @since 3.14beta1
*/ */
public CellAddress getActiveCell(); CellAddress getActiveCell();
/** /**
* Sets location of the active cell * 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>. * @param address the location of the active cell, e.g. <code>A1</code>.
* @since 3.14beta1 * @since 3.14beta1
*/ */
public void setActiveCell(CellAddress address); void setActiveCell(CellAddress address);
} }

View File

@ -35,6 +35,7 @@ import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
import java.security.GeneralSecurityException; import java.security.GeneralSecurityException;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.security.SecureRandom; import java.security.SecureRandom;
@ -381,7 +382,7 @@ public class AgileEncryptor extends Encryptor implements Cloneable {
xo.setSaveNoXmlDecl(); xo.setSaveNoXmlDecl();
ByteArrayOutputStream bos = new ByteArrayOutputStream(); ByteArrayOutputStream bos = new ByteArrayOutputStream();
try { 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); ed.save(bos, xo);
bos.writeTo(os); bos.writeTo(os);
} catch (IOException e) { } catch (IOException e) {

View File

@ -915,13 +915,13 @@ public class SXSSFSheet implements Sheet
* Sets desktop window pane display area, when the * Sets desktop window pane display area, when the
* file is first opened in a viewer. * file is first opened in a viewer.
* *
* @param toprow the top row 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 * @param leftCol the left column to show in desktop window pane
*/ */
@Override @Override
public void showInPane(int toprow, int leftcol) public void showInPane(int topRow, int leftCol)
{ {
_sh.showInPane(toprow, leftcol); _sh.showInPane(topRow, leftCol);
} }
/** /**

View File

@ -29,6 +29,7 @@ import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.io.OutputStreamWriter; import java.io.OutputStreamWriter;
import java.io.Writer; import java.io.Writer;
import java.nio.charset.StandardCharsets;
import java.util.Iterator; import java.util.Iterator;
import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Cell;
@ -103,7 +104,7 @@ public class SheetDataWriter implements Closeable {
throw e; throw e;
} }
return new BufferedWriter( 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 * @param fos the stream to decorate
* @return a decorated stream * @return a decorated stream
* @throws IOException * @throws IOException if decorating the stream fails
* @see #decorateInputStream(FileInputStream) * @see #decorateInputStream(FileInputStream)
*/ */
protected OutputStream decorateOutputStream(FileOutputStream fos) throws IOException { protected OutputStream decorateOutputStream(FileOutputStream fos) throws IOException {
@ -154,7 +155,7 @@ public class SheetDataWriter implements Closeable {
* *
* @param fis the stream to decorate * @param fis the stream to decorate
* @return a decorated stream * @return a decorated stream
* @throws IOException * @throws IOException if decorating the stream fails
* @see #decorateOutputStream(FileOutputStream) * @see #decorateOutputStream(FileOutputStream)
*/ */
protected InputStream decorateInputStream(FileInputStream fis) throws IOException { protected InputStream decorateInputStream(FileInputStream fis) throws IOException {

View File

@ -267,6 +267,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
for (CTRow row : worksheetParam.getSheetData().getRowArray()) { for (CTRow row : worksheetParam.getSheetData().getRowArray()) {
XSSFRow r = new XSSFRow(row, this); XSSFRow r = new XSSFRow(row, this);
// Performance optimization: explicit boxing is slightly faster than auto-unboxing, though may use more memory // 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 final Integer rownumI = Integer.valueOf(r.getRowNum()); // NOSONAR
_rows.put(rownumI, r); _rows.put(rownumI, r);
} }
@ -756,6 +757,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
@Override @Override
public XSSFRow createRow(int rownum) { public XSSFRow createRow(int rownum) {
// Performance optimization: explicit boxing is slightly faster than auto-unboxing, though may use more memory // Performance optimization: explicit boxing is slightly faster than auto-unboxing, though may use more memory
//noinspection UnnecessaryBoxing
final Integer rownumI = Integer.valueOf(rownum); // NOSONAR final Integer rownumI = Integer.valueOf(rownum); // NOSONAR
CTRow ctRow; CTRow ctRow;
XSSFRow prev = _rows.get(rownumI); XSSFRow prev = _rows.get(rownumI);
@ -1073,7 +1075,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
@Override @Override
public boolean isDisplayZeros(){ public boolean isDisplayZeros(){
final CTSheetView dsv = getDefaultSheetView(false); 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()) { if (pane.isSetTopLeftCell()) {
final CellReference cellRef = new CellReference(pane.getTopLeftCell()); final CellReference cellRef = new CellReference(pane.getTopLeftCell());
row = (short)cellRef.getRow(); row = (short)cellRef.getRow();
col = (short)cellRef.getCol(); col = cellRef.getCol();
} }
final short x = (short)pane.getXSplit(); final short x = (short)pane.getXSplit();
@ -1477,6 +1479,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
@Override @Override
public XSSFRow getRow(int rownum) { public XSSFRow getRow(int rownum) {
// Performance optimization: explicit boxing is slightly faster than auto-unboxing, though may use more memory // Performance optimization: explicit boxing is slightly faster than auto-unboxing, though may use more memory
//noinspection UnnecessaryBoxing
final Integer rownumI = Integer.valueOf(rownum); // NOSONAR final Integer rownumI = Integer.valueOf(rownum); // NOSONAR
return _rows.get(rownumI); return _rows.get(rownumI);
} }
@ -1509,7 +1512,9 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
} }
else { else {
// Performance optimization: explicit boxing is slightly faster than auto-unboxing, though may use more memory // Performance optimization: explicit boxing is slightly faster than auto-unboxing, though may use more memory
//noinspection UnnecessaryBoxing
final Integer startI = Integer.valueOf(startRowNum); // NOSONAR final Integer startI = Integer.valueOf(startRowNum); // NOSONAR
//noinspection UnnecessaryBoxing
final Integer endI = Integer.valueOf(endRowNum+1); // NOSONAR final Integer endI = Integer.valueOf(endRowNum+1); // NOSONAR
final Collection<XSSFRow> inclusive = _rows.subMap(startI, endI).values(); final Collection<XSSFRow> inclusive = _rows.subMap(startI, endI).values();
rows.addAll(inclusive); rows.addAll(inclusive);
@ -1774,7 +1779,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
@Override @Override
public boolean isDisplayFormulas() { public boolean isDisplayFormulas() {
final CTSheetView dsv = getDefaultSheetView(false); 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 @Override
public boolean isDisplayGridlines() { public boolean isDisplayGridlines() {
final CTSheetView dsv = getDefaultSheetView(false); 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 @Override
public boolean isDisplayRowColHeadings() { public boolean isDisplayRowColHeadings() {
final CTSheetView dsv = getDefaultSheetView(false); 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); row.removeCell(cell);
} }
// Performance optimization: explicit boxing is slightly faster than auto-unboxing, though may use more memory
final int rowNum = row.getRowNum(); 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 final Integer rowNumI = Integer.valueOf(rowNum); // NOSONAR
// this is not the physical row number! // this is not the physical row number!
final int idx = _rows.headMap(rowNumI).size(); 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) { private void unsetCollapsed(Boolean collapsed, CTCol ci) {
if (collapsed != null && collapsed.booleanValue()) { if (collapsed != null && collapsed) {
ci.setCollapsed(collapsed); ci.setCollapsed(true);
} else { } else {
ci.unsetCollapsed(); ci.unsetCollapsed();
} }
@ -3067,6 +3073,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
_rows.clear(); _rows.clear();
for(XSSFRow r : rowList) { for(XSSFRow r : rowList) {
// Performance optimization: explicit boxing is slightly faster than auto-unboxing, though may use more memory // 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 final Integer rownumI = new Integer(r.getRowNum()); // NOSONAR
_rows.put(rownumI, r); _rows.put(rownumI, r);
} }
@ -3082,6 +3089,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
if (shouldRemoveRow(startRow, endRow, n, rownum)) { if (shouldRemoveRow(startRow, endRow, n, rownum)) {
// remove row from worksheet.getSheetData row array // remove row from worksheet.getSheetData row array
// Performance optimization: explicit boxing is slightly faster than auto-unboxing, though may use more memory // 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 final Integer rownumI = Integer.valueOf(row.getRowNum()); // NOSONAR
int idx = _rows.headMap(rownumI).size(); int idx = _rows.headMap(rownumI).size();
worksheet.getSheetData().removeRow(idx); 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 * 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). * pane (when in Left-to-Right mode).
* *
* @param toprow the top row 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 * @param leftCol the left column to show in desktop window pane
*/ */
@Override @Override
public void showInPane(int toprow, int leftcol) { public void showInPane(int topRow, int leftCol) {
final CellReference cellReference = new CellReference(toprow, leftcol); final CellReference cellReference = new CellReference(topRow, leftCol);
final String cellRef = cellReference.formatAsString(); final String cellRef = cellReference.formatAsString();
final CTPane pane = getPane(true); final CTPane pane = getPane(true);
assert(pane != null); assert(pane != null);
@ -3357,7 +3365,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
@Override @Override
public boolean isSelected() { public boolean isSelected() {
final CTSheetView dsv = getDefaultSheetView(false); 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) { if (n > 0 && rownum > endRow) {
return true; return true;
} }
else if (n < 0 && rownum < startRow) { else {
return true; return n < 0 && rownum < startRow;
} }
} }
return false; return false;
@ -4711,7 +4719,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
break; break;
} }
} }
return (coo == null) ? null : coo; return coo;
} finally { } finally {
cur.dispose(); cur.dispose();
} }

View File

@ -20,6 +20,7 @@ package org.apache.poi.xssf.model;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -252,7 +253,7 @@ public final class TestSharedStringsTable extends TestCase {
List<String> strs = new ArrayList<>(); List<String> strs = new ArrayList<>();
POIDataSamples samples = POIDataSamples.getSpreadSheetInstance(); POIDataSamples samples = POIDataSamples.getSpreadSheetInstance();
BufferedReader br = new BufferedReader( BufferedReader br = new BufferedReader(
new InputStreamReader(samples.openResourceAsStream(filename), "UTF-8")); new InputStreamReader(samples.openResourceAsStream(filename), StandardCharsets.UTF_8));
String s; String s;
while ((s = br.readLine()) != null) { while ((s = br.readLine()) != null) {
if (s.trim().length() > 0) { if (s.trim().length() > 0) {

View File

@ -26,6 +26,7 @@ import static org.junit.Assert.assertTrue;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.StandardCharsets;
import org.apache.poi.util.IOUtils; import org.apache.poi.util.IOUtils;
import org.junit.Test; import org.junit.Test;
@ -63,7 +64,7 @@ public final class TestSheetDataWriter {
FileInputStream is = new FileInputStream(file); FileInputStream is = new FileInputStream(file);
String text; String text;
try { try {
text = new String(IOUtils.toByteArray(is), "UTF-8"); text = new String(IOUtils.toByteArray(is), StandardCharsets.UTF_8);
} finally { } finally {
is.close(); is.close();
} }
@ -82,7 +83,7 @@ public final class TestSheetDataWriter {
FileInputStream is = new FileInputStream(file); FileInputStream is = new FileInputStream(file);
String text; String text;
try { try {
text = new String(IOUtils.toByteArray(is), "UTF-8"); text = new String(IOUtils.toByteArray(is), StandardCharsets.UTF_8);
} finally { } finally {
is.close(); is.close();
} }

View File

@ -33,6 +33,7 @@ import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
import java.util.Date; import java.util.Date;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
@ -697,7 +698,7 @@ public final class TestXSSFWorkbook extends BaseTestXWorkbook {
sheetBack.commit(); 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")); assertEquals(1, countMatches(str, "<worksheet"));
} }

View File

@ -23,6 +23,7 @@ import static org.junit.Assert.assertTrue;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.InputStream; import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import org.apache.poi.POIDataSamples; import org.apache.poi.POIDataSamples;
import org.apache.poi.hmef.attribute.MAPIAttribute; import org.apache.poi.hmef.attribute.MAPIAttribute;
@ -118,7 +119,7 @@ public final class TestCompressedRTF {
// Decompress it // Decompress it
CompressedRTF comp = new CompressedRTF(); CompressedRTF comp = new CompressedRTF();
byte[] decomp = comp.decompress(new ByteArrayInputStream(data)); byte[] decomp = comp.decompress(new ByteArrayInputStream(data));
String decompStr = new String(decomp, "ASCII"); String decompStr = new String(decomp, StandardCharsets.US_ASCII);
// Test // Test
assertEquals(block1.length(), decomp.length); assertEquals(block1.length(), decomp.length);
@ -147,7 +148,7 @@ public final class TestCompressedRTF {
// Decompress it // Decompress it
CompressedRTF comp = new CompressedRTF(); CompressedRTF comp = new CompressedRTF();
byte[] decomp = comp.decompress(new ByteArrayInputStream(data)); byte[] decomp = comp.decompress(new ByteArrayInputStream(data));
String decompStr = new String(decomp, "ASCII"); String decompStr = new String(decomp, StandardCharsets.US_ASCII);
// Test // Test
assertEquals(block2.length(), decomp.length); assertEquals(block2.length(), decomp.length);
@ -195,7 +196,7 @@ public final class TestCompressedRTF {
} }
// By String // By String
String expString = new String(expected, "ASCII"); String expString = new String(expected, StandardCharsets.US_ASCII);
String decompStr = rtfAttr.getDataString(); String decompStr = rtfAttr.getDataString();
assertEquals(expString.length(), decompStr.length()); assertEquals(expString.length(), decompStr.length());
assertEquals(expString, decompStr); assertEquals(expString, decompStr);

View File

@ -27,6 +27,7 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import org.apache.poi.POIDataSamples; import org.apache.poi.POIDataSamples;
import org.apache.poi.hmef.attribute.MAPIAttribute; import org.apache.poi.hmef.attribute.MAPIAttribute;
@ -109,7 +110,7 @@ public final class TestHMEFMessage {
); );
assertEquals( assertEquals(
"IPM.Microsoft Mail.Note\0", "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 // Then by String
String contents = msg.getBody(); String contents = msg.getBody();
// It's all low bytes // It's all low bytes
byte[] contentsBytes = contents.getBytes("ASCII"); byte[] contentsBytes = contents.getBytes(StandardCharsets.US_ASCII);
assertContents("message.rtf", contentsBytes); assertContents("message.rtf", contentsBytes);
// try to get a message id that does not exist // try to get a message id that does not exist
@ -163,7 +164,7 @@ public final class TestHMEFMessage {
String contents = msg.getBody(); String contents = msg.getBody();
//System.out.println(contents); //System.out.println(contents);
// It's all low bytes // It's all low bytes
byte[] contentsBytes = contents.getBytes("ASCII"); byte[] contentsBytes = contents.getBytes(StandardCharsets.US_ASCII);
// assertContents("message.rtf", contentsBytes); // assertContents("message.rtf", contentsBytes);
assertNotNull(contentsBytes); assertNotNull(contentsBytes);

View File

@ -22,6 +22,7 @@ import static org.junit.Assert.assertNotNull;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.InputStream; import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Locale; import java.util.Locale;
@ -74,7 +75,7 @@ public final class TestTNEFAttributes {
// Claims not to be text, but really is // Claims not to be text, but really is
assertEquals( assertEquals(
"IPM.Microsoft Mail.Note\0", "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 // Try constructing two attributes
@ -135,7 +136,7 @@ public final class TestTNEFAttributes {
assertEquals(TNEFStringAttribute.class, attr.getClass()); assertEquals(TNEFStringAttribute.class, attr.getClass());
// It is a null terminated string // 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 // But when we ask for the string, that is sorted for us
TNEFStringAttribute str = (TNEFStringAttribute) attr; TNEFStringAttribute str = (TNEFStringAttribute) attr;

View File

@ -20,6 +20,7 @@ package org.apache.poi.hslf.record;
import junit.framework.TestCase; import junit.framework.TestCase;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.nio.charset.StandardCharsets;
/** /**
* Tests that TextBytesAtom works properly * Tests that TextBytesAtom works properly
@ -54,7 +55,7 @@ public final class TestTextBytesAtom extends TestCase {
public void testChangeText() throws Exception { public void testChangeText() throws Exception {
TextBytesAtom tba = new TextBytesAtom(data,0,data.length); 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(); ByteArrayOutputStream baos = new ByteArrayOutputStream();
tba.writeOut(baos); tba.writeOut(baos);

View File

@ -68,19 +68,19 @@ public final class TestMinusZeroResult extends TestCase {
} }
public void testTextRendering() { public void testTextRendering() {
confirmTextRendering("-0", MINUS_ZERO); confirmTextRendering(MINUS_ZERO);
// sub-normal negative numbers also display as '-0' // 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 * 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), }; ValueEval[] args = { StringEval.EMPTY_INSTANCE, new NumberEval(d), };
StringEval se = (StringEval) EvalInstances.Concat.evaluate(args, -1, (short)-1); StringEval se = (StringEval) EvalInstances.Concat.evaluate(args, -1, (short)-1);
String result = se.getStringValue(); String result = se.getStringValue();
assertEquals(expRendering, result); assertEquals("-0", result);
} }
private static void checkEval(double expectedResult, Function instance, double... dArgs) { 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. * Not really a POI test - just shows similar behaviour of '-0.0' in Java.
*/ */
public void testJava() { public void testJava() {
assertEquals(0x8000000000000000L, Double.doubleToLongBits(MINUS_ZERO)); assertEquals(0x8000000000000000L, Double.doubleToLongBits(MINUS_ZERO));
// The simple operators consider all zeros to be the same // The simple operators consider all zeros to be the same
//noinspection SimplifiableJUnitAssertion,ConstantConditions
assertTrue(MINUS_ZERO == MINUS_ZERO); assertTrue(MINUS_ZERO == MINUS_ZERO);
//noinspection SimplifiableJUnitAssertion,ConstantConditions
assertTrue(MINUS_ZERO == +0.0); assertTrue(MINUS_ZERO == +0.0);
//noinspection ConstantConditions
assertFalse(MINUS_ZERO < +0.0); assertFalse(MINUS_ZERO < +0.0);
// Double.compare() considers them different // Double.compare() considers them different

View File

@ -31,6 +31,7 @@ import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.io.PushbackInputStream; import java.io.PushbackInputStream;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.util.Random; import java.util.Random;
import org.apache.poi.EmptyFileException; import org.apache.poi.EmptyFileException;
@ -65,14 +66,14 @@ public final class TestIOUtils {
@Test @Test
public void testPeekFirst8Bytes() throws Exception { public void testPeekFirst8Bytes() throws Exception {
assertArrayEquals("01234567".getBytes("UTF-8"), assertArrayEquals("01234567".getBytes(StandardCharsets.UTF_8),
IOUtils.peekFirst8Bytes(new ByteArrayInputStream("0123456789".getBytes("UTF-8")))); IOUtils.peekFirst8Bytes(new ByteArrayInputStream("0123456789".getBytes(StandardCharsets.UTF_8))));
} }
@Test @Test
public void testPeekFirst8BytesWithPushbackInputStream() throws Exception { public void testPeekFirst8BytesWithPushbackInputStream() throws Exception {
assertArrayEquals("01234567".getBytes("UTF-8"), assertArrayEquals("01234567".getBytes(StandardCharsets.UTF_8),
IOUtils.peekFirst8Bytes(new PushbackInputStream(new ByteArrayInputStream("0123456789".getBytes("UTF-8")), 8))); IOUtils.peekFirst8Bytes(new PushbackInputStream(new ByteArrayInputStream("0123456789".getBytes(StandardCharsets.UTF_8)), 8)));
} }
@Test @Test