git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1871505 13f79535-47bb-0310-9956-ffa450edef68tags/REL_4_1_2
@@ -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 |
@@ -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; | |||
} |
@@ -176,7 +176,6 @@ public class CellElapsedFormatter extends CellFormatter { | |||
case 'h': | |||
return 24; | |||
case 'm': | |||
return 60; | |||
case 's': | |||
return 60; | |||
case '0': |
@@ -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; | |||
} |
@@ -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; |
@@ -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); | |||
} |
@@ -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) { |
@@ -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); | |||
} | |||
/** |
@@ -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 { |
@@ -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(); | |||
} |
@@ -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) { |
@@ -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(); | |||
} |
@@ -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")); | |||
} |
@@ -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); |
@@ -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); | |||
@@ -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; |
@@ -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); |
@@ -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 |
@@ -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 |