mirror of https://github.com/apache/poi.git
Fix some findbugs-issues and apply some code-cleanup and apply some smaller pull requests.
This closes #74, This closes #75, This closes #76 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1812097 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
9d064f746e
commit
1b171e8642
|
@ -17,7 +17,6 @@
|
|||
package org.apache.poi.ddf;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
@ -135,16 +134,14 @@ public abstract class AbstractEscherOptRecord extends EscherRecord
|
|||
*/
|
||||
public void sortProperties()
|
||||
{
|
||||
Collections.sort( properties, new Comparator<EscherProperty>()
|
||||
{
|
||||
properties.sort(new Comparator<EscherProperty>() {
|
||||
@Override
|
||||
public int compare( EscherProperty p1, EscherProperty p2 )
|
||||
{
|
||||
public int compare(EscherProperty p1, EscherProperty p2) {
|
||||
short s1 = p1.getPropertyNumber();
|
||||
short s2 = p2.getPropertyNumber();
|
||||
return Short.compare(s1, s2);
|
||||
}
|
||||
} );
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -20,7 +20,6 @@ package org.apache.poi.ddf;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.BitSet;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -260,7 +259,7 @@ public final class EscherDggRecord extends EscherRecord {
|
|||
}
|
||||
|
||||
private void sortCluster() {
|
||||
Collections.sort(field_5_fileIdClusters, new Comparator<FileIdCluster>() {
|
||||
field_5_fileIdClusters.sort(new Comparator<FileIdCluster>() {
|
||||
@Override
|
||||
public int compare(FileIdCluster f1, FileIdCluster f2) {
|
||||
int dgDif = f1.getDrawingGroupId() - f2.getDrawingGroupId();
|
||||
|
|
|
@ -420,7 +420,7 @@ public class Variant
|
|||
}
|
||||
|
||||
name += numberToName.get(vt);
|
||||
return (name != null && !"".equals(name)) ? name : "unknown variant type";
|
||||
return !"".equals(name) ? name : "unknown variant type";
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
package org.apache.poi.hssf.record.aggregates;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -71,7 +70,7 @@ public final class ColumnInfoRecordsAggregate extends RecordAggregate implements
|
|||
throw new RuntimeException("No column info records found");
|
||||
}
|
||||
if (!isInOrder) {
|
||||
Collections.sort(records, CIRComparator.instance);
|
||||
records.sort(CIRComparator.instance);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -89,7 +88,7 @@ public final class ColumnInfoRecordsAggregate extends RecordAggregate implements
|
|||
*/
|
||||
public void insertColumn(ColumnInfoRecord col) {
|
||||
records.add(col);
|
||||
Collections.sort(records, CIRComparator.instance);
|
||||
records.sort(CIRComparator.instance);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -110,8 +109,7 @@ public final class ColumnInfoRecordsAggregate extends RecordAggregate implements
|
|||
return;
|
||||
}
|
||||
ColumnInfoRecord cirPrev = null;
|
||||
for(int i=0; i<nItems; i++) {
|
||||
ColumnInfoRecord cir = records.get(i);
|
||||
for (ColumnInfoRecord cir : records) {
|
||||
rv.visitRecord(cir);
|
||||
if (cirPrev != null && CIRComparator.compareColInfos(cirPrev, cir) > 0) {
|
||||
// Excel probably wouldn't mind, but there is much logic in this class
|
||||
|
@ -299,8 +297,7 @@ public final class ColumnInfoRecordsAggregate extends RecordAggregate implements
|
|||
public void setColumn(int targetColumnIx, Short xfIndex, Integer width,
|
||||
Integer level, Boolean hidden, Boolean collapsed) {
|
||||
ColumnInfoRecord ci = null;
|
||||
int k = 0;
|
||||
|
||||
int k;
|
||||
for (k = 0; k < records.size(); k++) {
|
||||
ColumnInfoRecord tci = records.get(k);
|
||||
if (tci.containsColumn(targetColumnIx)) {
|
||||
|
|
|
@ -66,23 +66,23 @@ public class DVConstraint implements DataValidationConstraint {
|
|||
|
||||
|
||||
private DVConstraint(int validationType, int comparisonOperator, String formulaA,
|
||||
String formulaB, Double value1, Double value2, String[] excplicitListValues) {
|
||||
String formulaB, Double value1, Double value2, String[] explicitListValues) {
|
||||
_validationType = validationType;
|
||||
_operator = comparisonOperator;
|
||||
_formula1 = formulaA;
|
||||
_formula2 = formulaB;
|
||||
_value1 = value1;
|
||||
_value2 = value2;
|
||||
_explicitListValues = (excplicitListValues == null) ? null : excplicitListValues.clone();
|
||||
_explicitListValues = (explicitListValues == null) ? null : explicitListValues.clone();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates a list constraint
|
||||
*/
|
||||
private DVConstraint(String listFormula, String[] excplicitListValues) {
|
||||
private DVConstraint(String listFormula, String[] explicitListValues) {
|
||||
this(ValidationType.LIST, OperatorType.IGNORED,
|
||||
listFormula, null, null, null, excplicitListValues);
|
||||
listFormula, null, null, null, explicitListValues);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -228,7 +228,7 @@ public class DVConstraint implements DataValidationConstraint {
|
|||
return null;
|
||||
}
|
||||
try {
|
||||
return new Double(numberStr);
|
||||
return Double.valueOf(numberStr);
|
||||
} catch (NumberFormatException e) {
|
||||
throw new RuntimeException("The supplied text '" + numberStr
|
||||
+ "' could not be parsed as a number");
|
||||
|
@ -242,7 +242,7 @@ public class DVConstraint implements DataValidationConstraint {
|
|||
if (timeStr == null) {
|
||||
return null;
|
||||
}
|
||||
return new Double(HSSFDateUtil.convertTime(timeStr));
|
||||
return Double.valueOf(HSSFDateUtil.convertTime(timeStr));
|
||||
}
|
||||
/**
|
||||
* @param dateFormat pass <code>null</code> for default YYYYMMDD
|
||||
|
@ -263,7 +263,7 @@ public class DVConstraint implements DataValidationConstraint {
|
|||
+ "' using specified format '" + dateFormat + "'", e);
|
||||
}
|
||||
}
|
||||
return new Double(HSSFDateUtil.getExcelDate(dateVal));
|
||||
return Double.valueOf(HSSFDateUtil.getExcelDate(dateVal));
|
||||
}
|
||||
|
||||
public static DVConstraint createCustomFormulaConstraint(String formula) {
|
||||
|
@ -363,7 +363,7 @@ public class DVConstraint implements DataValidationConstraint {
|
|||
*/
|
||||
public void setValue1(double value1) {
|
||||
_formula1 = null;
|
||||
_value1 = new Double(value1);
|
||||
_value1 = Double.valueOf(value1);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -377,7 +377,7 @@ public class DVConstraint implements DataValidationConstraint {
|
|||
*/
|
||||
public void setValue2(double value2) {
|
||||
_formula2 = null;
|
||||
_value2 = new Double(value2);
|
||||
_value2 = Double.valueOf(value2);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -407,7 +407,7 @@ public class DVConstraint implements DataValidationConstraint {
|
|||
// Some things like union and intersection are not allowed.
|
||||
}
|
||||
// explicit list was provided
|
||||
StringBuffer sb = new StringBuffer(_explicitListValues.length * 16);
|
||||
StringBuilder sb = new StringBuilder(_explicitListValues.length * 16);
|
||||
for (int i = 0; i < _explicitListValues.length; i++) {
|
||||
if (i > 0) {
|
||||
sb.append('\0'); // list delimiter is the nul char
|
||||
|
@ -484,7 +484,7 @@ public class DVConstraint implements DataValidationConstraint {
|
|||
if (_value == null) {
|
||||
return null;
|
||||
}
|
||||
return new Double(_value);
|
||||
return Double.valueOf(_value);
|
||||
}
|
||||
|
||||
public String string() {
|
||||
|
|
|
@ -62,9 +62,6 @@ import org.apache.poi.ss.util.CellReference;
|
|||
* create whatever style objects they need, caching those at the application level.
|
||||
* Thus this class only caches values needed for evaluation, not display.
|
||||
*/
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class EvaluationConditionalFormatRule implements Comparable<EvaluationConditionalFormatRule> {
|
||||
|
||||
private final WorkbookEvaluator workbookEvaluator;
|
||||
|
@ -75,7 +72,7 @@ public class EvaluationConditionalFormatRule implements Comparable<EvaluationCon
|
|||
/* cached values */
|
||||
private final CellRangeAddress[] regions;
|
||||
/**
|
||||
* Depending on the rule type, it may want to know about certain values in the region when evaluating {@link #matches(Cell)},
|
||||
* Depending on the rule type, it may want to know about certain values in the region when evaluating {@link #matches(CellReference)},
|
||||
* such as top 10, unique, duplicate, average, etc. This collection stores those if needed so they are not repeatedly calculated
|
||||
*/
|
||||
private final Map<CellRangeAddress, Set<ValueAndFormat>> meaningfulRegionValues = new HashMap<>();
|
||||
|
@ -370,7 +367,7 @@ public class EvaluationConditionalFormatRule implements Comparable<EvaluationCon
|
|||
return comp;
|
||||
}
|
||||
/**
|
||||
* @param cell needed for offsets from region anchor - may be null!
|
||||
* @param ref needed for offsets from region anchor - may be null!
|
||||
* @param region for adjusting relative formulas
|
||||
* @return true/false using the same rules as Data Validation evaluations
|
||||
*/
|
||||
|
@ -424,7 +421,7 @@ public class EvaluationConditionalFormatRule implements Comparable<EvaluationCon
|
|||
final ConditionFilterData conf = rule.getFilterConfiguration();
|
||||
|
||||
if (! conf.getBottom()) {
|
||||
Collections.sort(allValues, Collections.reverseOrder());
|
||||
allValues.sort(Collections.reverseOrder());
|
||||
} else {
|
||||
Collections.sort(allValues);
|
||||
}
|
||||
|
@ -505,10 +502,10 @@ public class EvaluationConditionalFormatRule implements Comparable<EvaluationCon
|
|||
}
|
||||
|
||||
final Set<ValueAndFormat> avgSet = new LinkedHashSet<>(1);
|
||||
avgSet.add(new ValueAndFormat(new Double(allValues.size() == 0 ? 0 : total / allValues.size()), null));
|
||||
avgSet.add(new ValueAndFormat(Double.valueOf(allValues.size() == 0 ? 0 : total / allValues.size()), null));
|
||||
|
||||
final double stdDev = allValues.size() <= 1 ? 0 : ((NumberEval) AggregateFunction.STDEV.evaluate(pop, 0, 0)).getNumberValue();
|
||||
avgSet.add(new ValueAndFormat(new Double(stdDev), null));
|
||||
avgSet.add(new ValueAndFormat(Double.valueOf(stdDev), null));
|
||||
return avgSet;
|
||||
}
|
||||
}));
|
||||
|
@ -527,9 +524,9 @@ public class EvaluationConditionalFormatRule implements Comparable<EvaluationCon
|
|||
* operator type
|
||||
*/
|
||||
|
||||
Double comp = new Double(conf.getStdDev() > 0 ? (avg + (conf.getAboveAverage() ? 1 : -1) * stdDev * conf.getStdDev()) : avg) ;
|
||||
Double comp = Double.valueOf(conf.getStdDev() > 0 ? (avg + (conf.getAboveAverage() ? 1 : -1) * stdDev * conf.getStdDev()) : avg) ;
|
||||
|
||||
OperatorEnum op = null;
|
||||
final OperatorEnum op;
|
||||
if (conf.getAboveAverage()) {
|
||||
if (conf.getEqualAverage()) {
|
||||
op = OperatorEnum.GREATER_OR_EQUAL;
|
||||
|
@ -543,7 +540,7 @@ public class EvaluationConditionalFormatRule implements Comparable<EvaluationCon
|
|||
op = OperatorEnum.LESS_THAN;
|
||||
}
|
||||
}
|
||||
return op != null && op.isValid(val, comp, null);
|
||||
return op.isValid(val, comp, null);
|
||||
case CONTAINS_TEXT:
|
||||
// implemented both by a cfRule "text" attribute and a formula. Use the formula.
|
||||
return checkFormula(ref, region);
|
||||
|
@ -625,7 +622,7 @@ public class EvaluationConditionalFormatRule implements Comparable<EvaluationCon
|
|||
if (cell != null) {
|
||||
final CellType type = cell.getCellType();
|
||||
if (type == CellType.NUMERIC || (type == CellType.FORMULA && cell.getCachedFormulaResultType() == CellType.NUMERIC) ) {
|
||||
return new ValueAndFormat(new Double(cell.getNumericCellValue()), cell.getCellStyle().getDataFormatString());
|
||||
return new ValueAndFormat(Double.valueOf(cell.getNumericCellValue()), cell.getCellStyle().getDataFormatString());
|
||||
} else if (type == CellType.STRING || (type == CellType.FORMULA && cell.getCachedFormulaResultType() == CellType.STRING) ) {
|
||||
return new ValueAndFormat(cell.getStringCellValue(), cell.getCellStyle().getDataFormatString());
|
||||
} else if (type == CellType.BOOLEAN || (type == CellType.FORMULA && cell.getCachedFormulaResultType() == CellType.BOOLEAN) ) {
|
||||
|
|
|
@ -1670,7 +1670,7 @@ public final class FormulaParser {
|
|||
if (!isPositive) {
|
||||
value = -value;
|
||||
}
|
||||
return new Double(value);
|
||||
return Double.valueOf(value);
|
||||
}
|
||||
|
||||
private Ptg parseNumber() {
|
||||
|
|
|
@ -61,7 +61,7 @@ public final class ConstantValueParser {
|
|||
in.readLong(); // 8 byte 'not used' field
|
||||
return EMPTY_REPRESENTATION;
|
||||
case TYPE_NUMBER:
|
||||
return new Double(in.readDouble());
|
||||
return Double.valueOf(in.readDouble());
|
||||
case TYPE_STRING:
|
||||
return StringUtil.readUnicodeString(in);
|
||||
case TYPE_BOOLEAN:
|
||||
|
@ -91,8 +91,8 @@ public final class ConstantValueParser {
|
|||
public static int getEncodedSize(Object[] values) {
|
||||
// start with one byte 'type' code for each value
|
||||
int result = values.length * 1;
|
||||
for (int i = 0; i < values.length; i++) {
|
||||
result += getEncodedSize(values[i]);
|
||||
for (Object value : values) {
|
||||
result += getEncodedSize(value);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
@ -114,8 +114,8 @@ public final class ConstantValueParser {
|
|||
}
|
||||
|
||||
public static void encode(LittleEndianOutput out, Object[] values) {
|
||||
for (int i = 0; i < values.length; i++) {
|
||||
encodeSingleValue(out, values[i]);
|
||||
for (Object value : values) {
|
||||
encodeSingleValue(out, value);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -77,8 +77,8 @@ public final class Mode implements Function {
|
|||
double result;
|
||||
try {
|
||||
List<Double> temp = new ArrayList<>();
|
||||
for (int i = 0; i < args.length; i++) {
|
||||
collectValues(args[i], temp);
|
||||
for (ValueEval arg : args) {
|
||||
collectValues(arg, temp);
|
||||
}
|
||||
double[] values = new double[temp.size()];
|
||||
for (int i = 0; i < values.length; i++) {
|
||||
|
@ -129,7 +129,7 @@ public final class Mode implements Function {
|
|||
return;
|
||||
}
|
||||
if (arg instanceof NumberEval) {
|
||||
temp.add(new Double(((NumberEval) arg).getNumberValue()));
|
||||
temp.add(Double.valueOf(((NumberEval) arg).getNumberValue()));
|
||||
return;
|
||||
}
|
||||
throw new RuntimeException("Unexpected value type (" + arg.getClass().getName() + ")");
|
||||
|
|
|
@ -216,7 +216,7 @@ public abstract class TextFunction implements Function {
|
|||
return ErrorEval.VALUE_INVALID;
|
||||
}
|
||||
int len = text.length();
|
||||
if (numChars < 0 || startIx > len) {
|
||||
if (startIx > len) {
|
||||
return new StringEval("");
|
||||
}
|
||||
int endIx = Math.min(startIx + numChars, len);
|
||||
|
|
|
@ -37,7 +37,7 @@ public final class Value extends Fixed1ArgFunction {
|
|||
|
||||
/** "1,0000" is valid, "1,00" is not */
|
||||
private static final int MIN_DISTANCE_BETWEEN_THOUSANDS_SEPARATOR = 4;
|
||||
private static final Double ZERO = new Double(0.0);
|
||||
private static final Double ZERO = Double.valueOf(0.0);
|
||||
|
||||
public ValueEval evaluate(int srcRowIndex, int srcColumnIndex, ValueEval arg0) {
|
||||
ValueEval veText;
|
||||
|
@ -113,7 +113,7 @@ public final class Value extends Fixed1ArgFunction {
|
|||
boolean foundDecimalPoint = false;
|
||||
int lastThousandsSeparatorIndex = Short.MIN_VALUE;
|
||||
|
||||
StringBuffer sb = new StringBuffer(len);
|
||||
StringBuilder sb = new StringBuilder(len);
|
||||
for (; i < len; i++) {
|
||||
char ch = strText.charAt(i);
|
||||
if (Character.isDigit(ch)) {
|
||||
|
|
|
@ -128,7 +128,7 @@ public class DataFormatter implements Observer {
|
|||
private static final Pattern daysAsText = Pattern.compile("([d]{3,})", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
/** Pattern to find "AM/PM" marker */
|
||||
private static final Pattern amPmPattern = Pattern.compile("((A|P)[M/P]*)", Pattern.CASE_INSENSITIVE);
|
||||
private static final Pattern amPmPattern = Pattern.compile("(([AP])[M/P]*)", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
/** Pattern to find formats with condition ranges e.g. [>=100] */
|
||||
private static final Pattern rangeConditionalPattern = Pattern.compile(".*\\[\\s*(>|>=|<|<=|=)\\s*[0-9]*\\.*[0-9].*");
|
||||
|
@ -843,7 +843,7 @@ public class DataFormatter implements Observer {
|
|||
if (numberFormat == null) {
|
||||
return String.valueOf(d);
|
||||
}
|
||||
String formatted = numberFormat.format(new Double(d));
|
||||
String formatted = numberFormat.format(Double.valueOf(d));
|
||||
return formatted.replaceFirst("E(\\d)", "E+$1"); // to match Excel's E-notation
|
||||
}
|
||||
|
||||
|
@ -894,7 +894,7 @@ public class DataFormatter implements Observer {
|
|||
String result;
|
||||
final String textValue = NumberToTextConverter.toText(value);
|
||||
if (textValue.indexOf('E') > -1) {
|
||||
result = numberFormat.format(new Double(value));
|
||||
result = numberFormat.format(Double.valueOf(value));
|
||||
}
|
||||
else {
|
||||
result = numberFormat.format(new BigDecimal(textValue));
|
||||
|
@ -1296,4 +1296,4 @@ public class DataFormatter implements Observer {
|
|||
return null; // Not supported
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -192,6 +192,6 @@ public class ExcelStyleDateFormatter extends SimpleDateFormat {
|
|||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return new Double(dateToBeFormatted).hashCode();
|
||||
return Double.valueOf(dateToBeFormatted).hashCode();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -191,7 +191,7 @@ public class OOXMLSignatureFacet extends SignatureFacet {
|
|||
}
|
||||
}
|
||||
|
||||
Collections.sort(manifestReferences, new Comparator<Reference>() {
|
||||
manifestReferences.sort(new Comparator<Reference>() {
|
||||
public int compare(Reference o1, Reference o2) {
|
||||
return o1.getURI().compareTo(o2.getURI());
|
||||
}
|
||||
|
|
|
@ -132,29 +132,25 @@ public class XSSFBHyperlinksTable {
|
|||
return;
|
||||
}
|
||||
int offset = 0;
|
||||
String relId = "";
|
||||
String location = "";
|
||||
String toolTip = "";
|
||||
String display = "";
|
||||
|
||||
hyperlinkCellRange = XSSFBCellRange.parse(data, offset, hyperlinkCellRange);
|
||||
offset += XSSFBCellRange.length;
|
||||
xlWideStringBuffer.setLength(0);
|
||||
offset += XSSFBUtils.readXLNullableWideString(data, offset, xlWideStringBuffer);
|
||||
relId = xlWideStringBuffer.toString();
|
||||
String relId = xlWideStringBuffer.toString();
|
||||
xlWideStringBuffer.setLength(0);
|
||||
offset += XSSFBUtils.readXLWideString(data, offset, xlWideStringBuffer);
|
||||
location = xlWideStringBuffer.toString();
|
||||
String location = xlWideStringBuffer.toString();
|
||||
xlWideStringBuffer.setLength(0);
|
||||
offset += XSSFBUtils.readXLWideString(data, offset, xlWideStringBuffer);
|
||||
toolTip = xlWideStringBuffer.toString();
|
||||
String toolTip = xlWideStringBuffer.toString();
|
||||
xlWideStringBuffer.setLength(0);
|
||||
offset += XSSFBUtils.readXLWideString(data, offset, xlWideStringBuffer);
|
||||
display = xlWideStringBuffer.toString();
|
||||
/*offset +=*/ XSSFBUtils.readXLWideString(data, offset, xlWideStringBuffer);
|
||||
String display = xlWideStringBuffer.toString();
|
||||
CellRangeAddress cellRangeAddress = new CellRangeAddress(hyperlinkCellRange.firstRow, hyperlinkCellRange.lastRow, hyperlinkCellRange.firstCol, hyperlinkCellRange.lastCol);
|
||||
|
||||
String url = relIdToHyperlink.get(relId);
|
||||
if (location == null || location.length() == 0) {
|
||||
if (location.length() == 0) {
|
||||
location = url;
|
||||
}
|
||||
|
||||
|
|
|
@ -167,9 +167,7 @@ public class XSSFBReader extends XSSFReader {
|
|||
PackagePart commentsPart = sheetPkg.getPackage().getPart(commentsName);
|
||||
return new XSSFBCommentsTable(commentsPart.getInputStream());
|
||||
}
|
||||
} catch (InvalidFormatException e) {
|
||||
return null;
|
||||
} catch (IOException e) {
|
||||
} catch (InvalidFormatException | IOException e) {
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
|
@ -241,7 +239,8 @@ public class XSSFBReader extends XSSFReader {
|
|||
private void tryToAddWorksheet(byte[] data) throws XSSFBParseException {
|
||||
int offset = 0;
|
||||
//this is the sheet state #2.5.142
|
||||
long hsShtat = LittleEndian.getUInt(data, offset); offset += LittleEndian.INT_SIZE;
|
||||
/*long hsShtat =*/ //noinspection ResultOfMethodCallIgnored
|
||||
LittleEndian.getUInt(data, offset); offset += LittleEndian.INT_SIZE;
|
||||
|
||||
long iTabID = LittleEndian.getUInt(data, offset); offset += LittleEndian.INT_SIZE;
|
||||
//according to #2.4.304
|
||||
|
@ -251,9 +250,9 @@ public class XSSFBReader extends XSSFReader {
|
|||
StringBuilder sb = new StringBuilder();
|
||||
offset += XSSFBUtils.readXLWideString(data, offset, sb);
|
||||
String relId = sb.toString(); sb.setLength(0);
|
||||
offset += XSSFBUtils.readXLWideString(data, offset, sb);
|
||||
/*offset +=*/ XSSFBUtils.readXLWideString(data, offset, sb);
|
||||
String name = sb.toString();
|
||||
if (relId != null && relId.trim().length() > 0) {
|
||||
if (relId.trim().length() > 0) {
|
||||
sheets.add(new XSSFSheetRef(relId, name));
|
||||
}
|
||||
}
|
||||
|
@ -272,7 +271,7 @@ public class XSSFBReader extends XSSFReader {
|
|||
sb.setLength(0);
|
||||
offset += XSSFBUtils.readXLWideString(data, offset, sb);
|
||||
String name = sb.toString();
|
||||
if (relId != null && relId.trim().length() > 0) {
|
||||
if (relId.trim().length() > 0) {
|
||||
sheets.add(new XSSFSheetRef(relId, name));
|
||||
}
|
||||
if (offset == data.length) {
|
||||
|
@ -285,4 +284,4 @@ public class XSSFBReader extends XSSFReader {
|
|||
return sheets;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,7 +21,6 @@ import java.io.IOException;
|
|||
import java.io.OutputStream;
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
@ -147,7 +146,7 @@ public class XSSFExportToXml implements Comparator<String>{
|
|||
tableMappings.put(commonXPath, table);
|
||||
}
|
||||
|
||||
Collections.sort(xpaths,this);
|
||||
xpaths.sort(this);
|
||||
|
||||
for(String xpath : xpaths) {
|
||||
|
||||
|
|
|
@ -256,6 +256,7 @@ public class XSSFComment implements Comment {
|
|||
// There is a very odd xmlbeans bug when changing the row
|
||||
// arrays which can lead to corrupt pointer
|
||||
// This call seems to fix them again... See bug #50795
|
||||
//noinspection ResultOfMethodCallIgnored
|
||||
vmlShape.getClientDataList().toString();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -74,7 +74,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
|
|||
for (CTCell c : row.getCArray()) {
|
||||
XSSFCell cell = new XSSFCell(this, c);
|
||||
// Performance optimization for bug 57840: explicit boxing is slightly faster than auto-unboxing, though may use more memory
|
||||
final Integer colI = new Integer(cell.getColumnIndex()); // NOSONAR
|
||||
final Integer colI = Integer.valueOf(cell.getColumnIndex()); // NOSONAR
|
||||
_cells.put(colI, cell);
|
||||
sheet.onReadCell(cell);
|
||||
}
|
||||
|
@ -230,7 +230,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
|
|||
@Override
|
||||
public XSSFCell createCell(int columnIndex, CellType type) {
|
||||
// Performance optimization for bug 57840: explicit boxing is slightly faster than auto-unboxing, though may use more memory
|
||||
final Integer colI = new Integer(columnIndex); // NOSONAR
|
||||
final Integer colI = Integer.valueOf(columnIndex); // NOSONAR
|
||||
CTCell ctCell;
|
||||
XSSFCell prev = _cells.get(colI);
|
||||
if(prev != null){
|
||||
|
@ -270,7 +270,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
|
|||
if(cellnum < 0) throw new IllegalArgumentException("Cell index must be >= 0");
|
||||
|
||||
// Performance optimization for bug 57840: explicit boxing is slightly faster than auto-unboxing, though may use more memory
|
||||
final Integer colI = new Integer(cellnum); // NOSONAR
|
||||
final Integer colI = Integer.valueOf(cellnum); // NOSONAR
|
||||
XSSFCell cell = _cells.get(colI);
|
||||
switch (policy) {
|
||||
case RETURN_NULL_AND_BLANK:
|
||||
|
@ -500,7 +500,7 @@ public class XSSFRow implements Row, Comparable<XSSFRow> {
|
|||
_sheet.getWorkbook().onDeleteFormula(xcell);
|
||||
}
|
||||
// Performance optimization for bug 57840: explicit boxing is slightly faster than auto-unboxing, though may use more memory
|
||||
final Integer colI = new Integer(cell.getColumnIndex()); // NOSONAR
|
||||
final Integer colI = Integer.valueOf(cell.getColumnIndex()); // NOSONAR
|
||||
_cells.remove(colI);
|
||||
}
|
||||
|
||||
|
|
|
@ -266,7 +266,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
|
||||
final Integer rownumI = new Integer(r.getRowNum()); // NOSONAR
|
||||
final Integer rownumI = Integer.valueOf(r.getRowNum()); // NOSONAR
|
||||
_rows.put(rownumI, r);
|
||||
}
|
||||
}
|
||||
|
@ -751,7 +751,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
|
||||
final Integer rownumI = new Integer(rownum); // NOSONAR
|
||||
final Integer rownumI = Integer.valueOf(rownum); // NOSONAR
|
||||
CTRow ctRow;
|
||||
XSSFRow prev = _rows.get(rownumI);
|
||||
if(prev != null){
|
||||
|
@ -1448,7 +1448,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
|
||||
final Integer rownumI = new Integer(rownum); // NOSONAR
|
||||
final Integer rownumI = Integer.valueOf(rownum); // NOSONAR
|
||||
return _rows.get(rownumI);
|
||||
}
|
||||
|
||||
|
@ -1479,8 +1479,8 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
|
|||
}
|
||||
else {
|
||||
// Performance optimization: explicit boxing is slightly faster than auto-unboxing, though may use more memory
|
||||
final Integer startI = new Integer(startRowNum); // NOSONAR
|
||||
final Integer endI = new Integer(endRowNum+1); // NOSONAR
|
||||
final Integer startI = Integer.valueOf(startRowNum); // NOSONAR
|
||||
final Integer endI = Integer.valueOf(endRowNum+1); // NOSONAR
|
||||
final Collection<XSSFRow> inclusive = _rows.subMap(startI, endI).values();
|
||||
rows.addAll(inclusive);
|
||||
}
|
||||
|
@ -1982,7 +1982,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
|
|||
|
||||
// Performance optimization: explicit boxing is slightly faster than auto-unboxing, though may use more memory
|
||||
final int rowNum = row.getRowNum();
|
||||
final Integer rowNumI = new Integer(rowNum); // NOSONAR
|
||||
final Integer rowNumI = Integer.valueOf(rowNum); // NOSONAR
|
||||
// this is not the physical row number!
|
||||
final int idx = _rows.headMap(rowNumI).size();
|
||||
_rows.remove(rowNumI);
|
||||
|
@ -2994,7 +2994,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
|
||||
final Integer rownumI = new Integer(row.getRowNum()); // NOSONAR
|
||||
final Integer rownumI = Integer.valueOf(row.getRowNum()); // NOSONAR
|
||||
int idx = _rows.headMap(rownumI).size();
|
||||
worksheet.getSheetData().removeRow(idx);
|
||||
|
||||
|
@ -3118,7 +3118,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
|
|||
Map<Integer, XSSFRow> map = new HashMap<>();
|
||||
for(XSSFRow r : _rows.values()) {
|
||||
// Performance optimization: explicit boxing is slightly faster than auto-unboxing, though may use more memory
|
||||
final Integer rownumI = new Integer(r.getRowNum()); // NOSONAR
|
||||
final Integer rownumI = Integer.valueOf(r.getRowNum()); // NOSONAR
|
||||
map.put(rownumI, r);
|
||||
}
|
||||
_rows.clear();
|
||||
|
|
|
@ -146,7 +146,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
|
|||
* CTTblGrid tblgrid=table.addNewTblGrid();
|
||||
* tblgrid.addNewGridCol().setW(new BigInteger("2000"));
|
||||
*/
|
||||
getRows();
|
||||
//getRows();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -130,5 +130,12 @@
|
|||
<Bug pattern="DM_NUMBER_CTOR" />
|
||||
</Match>
|
||||
|
||||
<!-- On purpose -->
|
||||
<Match>
|
||||
<Or>
|
||||
<Class name="org.apache.poi.xssf.usermodel.XSSFComment"/>
|
||||
</Or>
|
||||
<Bug pattern="RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT" />
|
||||
</Match>
|
||||
|
||||
</FindBugsFilter>
|
||||
|
|
|
@ -137,7 +137,7 @@ public final class Chunk {
|
|||
command = new Command(cdef);
|
||||
}
|
||||
|
||||
// Bizarely, many of the offsets are from the start of the
|
||||
// Bizarrely, many of the offsets are from the start of the
|
||||
// header, not from the start of the chunk body
|
||||
switch(type) {
|
||||
case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
|
||||
|
@ -172,7 +172,7 @@ public final class Chunk {
|
|||
command.value = Byte.valueOf(contents[offset]);
|
||||
break;
|
||||
case 9:
|
||||
command.value = new Double(
|
||||
command.value = Double.valueOf(
|
||||
LittleEndian.getDouble(contents, offset)
|
||||
);
|
||||
break;
|
||||
|
|
|
@ -19,7 +19,6 @@ package org.apache.poi.hsmf.dev;
|
|||
|
||||
import java.io.PrintStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
|
||||
import org.apache.poi.hsmf.datatypes.MAPIProperty;
|
||||
|
@ -32,19 +31,19 @@ public class TypesLister {
|
|||
|
||||
public void listByName(PrintStream out) {
|
||||
ArrayList<MAPIProperty> all = new ArrayList<>(MAPIProperty.getAll());
|
||||
Collections.sort(all, new Comparator<MAPIProperty>() {
|
||||
public int compare(MAPIProperty a, MAPIProperty b) {
|
||||
return a.name.compareTo(b.name);
|
||||
}
|
||||
all.sort(new Comparator<MAPIProperty>() {
|
||||
public int compare(MAPIProperty a, MAPIProperty b) {
|
||||
return a.name.compareTo(b.name);
|
||||
}
|
||||
});
|
||||
list(all, out);
|
||||
}
|
||||
public void listById(PrintStream out) {
|
||||
ArrayList<MAPIProperty> all = new ArrayList<>(MAPIProperty.getAll());
|
||||
Collections.sort(all, new Comparator<MAPIProperty>() {
|
||||
public int compare(MAPIProperty a, MAPIProperty b) {
|
||||
return Integer.compare(a.id, b.id);
|
||||
}
|
||||
all.sort(new Comparator<MAPIProperty>() {
|
||||
public int compare(MAPIProperty a, MAPIProperty b) {
|
||||
return Integer.compare(a.id, b.id);
|
||||
}
|
||||
});
|
||||
list(all, out);
|
||||
}
|
||||
|
|
|
@ -172,8 +172,7 @@ public class CHPBinTable
|
|||
}
|
||||
|
||||
List<CHPX> oldChpxSortedByStartPos = new ArrayList<>(_textRuns);
|
||||
Collections.sort( oldChpxSortedByStartPos,
|
||||
PropertyNode.StartComparator.instance );
|
||||
oldChpxSortedByStartPos.sort(PropertyNode.StartComparator.instance);
|
||||
|
||||
logger.log( POILogger.DEBUG, "CHPX sorted by start position in ",
|
||||
Long.valueOf( System.currentTimeMillis() - start ), " ms" );
|
||||
|
@ -278,7 +277,7 @@ public class CHPBinTable
|
|||
}
|
||||
}
|
||||
|
||||
Collections.sort( chpxs, chpxFileOrderComparator );
|
||||
chpxs.sort(chpxFileOrderComparator);
|
||||
|
||||
SprmBuffer sprmBuffer = new SprmBuffer( 0 );
|
||||
for ( CHPX chpx : chpxs )
|
||||
|
|
|
@ -17,8 +17,6 @@
|
|||
|
||||
package org.apache.poi.hwpf.model;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
import org.apache.poi.poifs.common.POIFSConstants;
|
||||
import org.apache.poi.util.Internal;
|
||||
import org.apache.poi.util.LittleEndian;
|
||||
|
@ -65,6 +63,6 @@ public final class OldCHPBinTable extends CHPBinTable
|
|||
_textRuns.add( chpx );
|
||||
}
|
||||
}
|
||||
Collections.sort( _textRuns, PropertyNode.StartComparator.instance );
|
||||
_textRuns.sort(PropertyNode.StartComparator.instance);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,8 +17,6 @@
|
|||
|
||||
package org.apache.poi.hwpf.model;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
import org.apache.poi.util.IOUtils;
|
||||
import org.apache.poi.util.Internal;
|
||||
import org.apache.poi.util.LittleEndian;
|
||||
|
@ -81,6 +79,6 @@ public final class OldSectionTable extends SectionTable
|
|||
|
||||
_sections.add( sepx );
|
||||
}
|
||||
Collections.sort( _sections, PropertyNode.StartComparator.instance );
|
||||
_sections.sort(PropertyNode.StartComparator.instance);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,16 +23,9 @@ import java.util.Collections;
|
|||
import org.apache.poi.util.CodePageUtil;
|
||||
import org.apache.poi.util.IOUtils;
|
||||
import org.apache.poi.util.Internal;
|
||||
import org.apache.poi.util.POILogFactory;
|
||||
import org.apache.poi.util.POILogger;
|
||||
|
||||
|
||||
@Internal
|
||||
public class OldTextPieceTable extends TextPieceTable {
|
||||
|
||||
private static final POILogger logger = POILogFactory
|
||||
.getLogger(OldTextPieceTable.class);
|
||||
|
||||
//arbitrarily selected; may need to increase
|
||||
private static final int MAX_RECORD_LENGTH = 100_000_000;
|
||||
|
||||
|
@ -103,7 +96,7 @@ public class OldTextPieceTable extends TextPieceTable {
|
|||
// into order, if they're not already
|
||||
Collections.sort(_textPieces);
|
||||
_textPiecesFCOrder = new ArrayList<>(_textPieces);
|
||||
Collections.sort(_textPiecesFCOrder, new FCComparator());
|
||||
_textPiecesFCOrder.sort(new FCComparator());
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -20,7 +20,6 @@ package org.apache.poi.hwpf.model;
|
|||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.IdentityHashMap;
|
||||
import java.util.LinkedList;
|
||||
|
@ -159,8 +158,7 @@ public class PAPBinTable
|
|||
}
|
||||
|
||||
List<PAPX> oldPapxSortedByEndPos = new ArrayList<>(paragraphs);
|
||||
Collections.sort( oldPapxSortedByEndPos,
|
||||
PropertyNode.EndComparator.instance );
|
||||
oldPapxSortedByEndPos.sort(PropertyNode.EndComparator.instance);
|
||||
|
||||
logger.log( POILogger.DEBUG, "PAPX sorted by end position in ",
|
||||
Long.valueOf( System.currentTimeMillis() - start ), " ms" );
|
||||
|
@ -255,7 +253,7 @@ public class PAPBinTable
|
|||
}
|
||||
|
||||
// restore file order of PAPX
|
||||
Collections.sort( papxs, papxFileOrderComparator );
|
||||
papxs.sort(papxFileOrderComparator);
|
||||
|
||||
SprmBuffer sprmBuffer = null;
|
||||
for ( PAPX papx : papxs )
|
||||
|
@ -281,7 +279,6 @@ public class PAPBinTable
|
|||
logger.log( POILogger.DEBUG, "PAPX rebuilded from document text in ",
|
||||
Long.valueOf( System.currentTimeMillis() - start ), " ms (",
|
||||
Integer.valueOf( paragraphs.size() ), " elements)" );
|
||||
start = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
public void insert(int listIndex, int cpStart, SprmBuffer buf)
|
||||
|
|
|
@ -20,7 +20,6 @@ package org.apache.poi.hwpf.model;
|
|||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.poi.hwpf.model.io.HWPFFileSystem;
|
||||
|
@ -96,11 +95,10 @@ public class SectionTable
|
|||
// is getting on for black magic...
|
||||
boolean matchAt = false;
|
||||
boolean matchHalf = false;
|
||||
for (int i=0; i<_sections.size(); i++) {
|
||||
SEPX s = _sections.get(i);
|
||||
for (SEPX s : _sections) {
|
||||
if (s.getEnd() == mainLength) {
|
||||
matchAt = true;
|
||||
} else if(s.getEnd() == mainLength || s.getEnd() == mainLength -1) {
|
||||
} else if (s.getEnd() == mainLength || s.getEnd() == mainLength - 1) {
|
||||
matchHalf = true;
|
||||
}
|
||||
}
|
||||
|
@ -119,7 +117,7 @@ public class SectionTable
|
|||
}
|
||||
}
|
||||
|
||||
Collections.sort( _sections, PropertyNode.StartComparator.instance );
|
||||
_sections.sort(PropertyNode.StartComparator.instance);
|
||||
}
|
||||
|
||||
public void adjustForInsert(int listIndex, int length)
|
||||
|
@ -187,15 +185,13 @@ public class SectionTable
|
|||
int len = _sections.size();
|
||||
PlexOfCps plex = new PlexOfCps(SED_SIZE);
|
||||
|
||||
for (int x = 0; x < len; x++)
|
||||
{
|
||||
SEPX sepx = _sections.get(x);
|
||||
for (SEPX sepx : _sections) {
|
||||
byte[] grpprl = sepx.getGrpprl();
|
||||
|
||||
// write the sepx to the document stream. starts with a 2 byte size
|
||||
// followed by the grpprl
|
||||
byte[] shortBuf = new byte[2];
|
||||
LittleEndian.putShort(shortBuf, 0, (short)grpprl.length);
|
||||
LittleEndian.putShort(shortBuf, 0, (short) grpprl.length);
|
||||
|
||||
wordDocumentStream.write(shortBuf);
|
||||
wordDocumentStream.write(grpprl);
|
||||
|
@ -208,7 +204,7 @@ public class SectionTable
|
|||
|
||||
/* original line */
|
||||
GenericPropertyNode property = new GenericPropertyNode(
|
||||
sepx.getStart(), sepx.getEnd(), sed.toByteArray() );
|
||||
sepx.getStart(), sepx.getEnd(), sed.toByteArray());
|
||||
/*
|
||||
* Line using Ryan's FCtoCP() conversion method - unable to observe
|
||||
* any effect on our testcases when using this code - piers
|
||||
|
|
|
@ -115,7 +115,7 @@ public class TextPieceTable implements CharIndexTranslator {
|
|||
// into order, if they're not already
|
||||
Collections.sort(_textPieces);
|
||||
_textPiecesFCOrder = new ArrayList<>(_textPieces);
|
||||
Collections.sort(_textPiecesFCOrder, new FCComparator());
|
||||
_textPiecesFCOrder.sort(new FCComparator());
|
||||
}
|
||||
|
||||
protected TextPiece newTextPiece(int nodeStartChars, int nodeEndChars, byte[] buf, PieceDescriptor pd) {
|
||||
|
@ -126,7 +126,7 @@ public class TextPieceTable implements CharIndexTranslator {
|
|||
_textPieces.add(piece);
|
||||
_textPiecesFCOrder.add(piece);
|
||||
Collections.sort(_textPieces);
|
||||
Collections.sort(_textPiecesFCOrder, new FCComparator());
|
||||
_textPiecesFCOrder.sort(new FCComparator());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -248,7 +248,7 @@ public class BookmarksImpl implements Bookmarks
|
|||
indices[counter++] = entry.getKey().intValue();
|
||||
List<GenericPropertyNode> updated = new ArrayList<>(
|
||||
entry.getValue());
|
||||
Collections.sort( updated, PropertyNode.EndComparator.instance );
|
||||
updated.sort(PropertyNode.EndComparator.instance);
|
||||
entry.setValue( updated );
|
||||
}
|
||||
Arrays.sort( indices );
|
||||
|
|
|
@ -43,7 +43,7 @@ public class FieldsImpl implements Fields
|
|||
* This is port and adaptation of Arrays.binarySearch from Java 6 (Apache
|
||||
* Harmony).
|
||||
*/
|
||||
private static <T> int binarySearch( List<PlexOfField> list,
|
||||
private static int binarySearch( List<PlexOfField> list,
|
||||
int startIndex, int endIndex, int requiredStartOffset )
|
||||
{
|
||||
checkIndexForBinarySearch( list.size(), startIndex, endIndex );
|
||||
|
@ -136,7 +136,7 @@ public class FieldsImpl implements Fields
|
|||
if ( plexOfFields == null || plexOfFields.isEmpty() )
|
||||
return new HashMap<>();
|
||||
|
||||
Collections.sort( plexOfFields, comparator );
|
||||
plexOfFields.sort(comparator);
|
||||
List<FieldImpl> fields = new ArrayList<>(
|
||||
plexOfFields.size() / 3 + 1);
|
||||
parseFieldStructureImpl( plexOfFields, 0, plexOfFields.size(), fields );
|
||||
|
|
Loading…
Reference in New Issue