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