aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJaven O'Neal <onealj@apache.org>2016-07-03 07:20:47 +0000
committerJaven O'Neal <onealj@apache.org>2016-07-03 07:20:47 +0000
commitff0e46af6dad8c609bcc28a4a13b3119fb49d7eb (patch)
tree476a980a968d46a751433a7dfde968f5dd4b74b6 /src
parent8fda0dc9292bfb87042c4239080e069e074414b8 (diff)
downloadpoi-ff0e46af6dad8c609bcc28a4a13b3119fb49d7eb.tar.gz
poi-ff0e46af6dad8c609bcc28a4a13b3119fb49d7eb.zip
bug 59773: move loop invariants outside of loop or change for loops to for-each loops
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1751131 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src')
-rw-r--r--src/java/org/apache/poi/ss/formula/functions/BooleanFunction.java7
-rw-r--r--src/java/org/apache/poi/ss/formula/functions/CountUtils.java8
-rw-r--r--src/java/org/apache/poi/ss/formula/functions/DStarRunner.java12
-rw-r--r--src/java/org/apache/poi/ss/formula/functions/Mode.java4
-rw-r--r--src/java/org/apache/poi/ss/formula/functions/TextFunction.java7
-rw-r--r--src/java/org/apache/poi/ss/formula/ptg/ArrayPtg.java14
-rw-r--r--src/java/org/apache/poi/ss/usermodel/DataFormatter.java3
-rw-r--r--src/java/org/apache/poi/ss/usermodel/DateUtil.java12
-rw-r--r--src/java/org/apache/poi/ss/util/AreaReference.java2
-rw-r--r--src/java/org/apache/poi/util/DrawingDump.java9
-rw-r--r--src/java/org/apache/poi/util/StringUtil.java3
-rw-r--r--src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java4
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFFormulaEvaluator.java13
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java8
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFChart.java9
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java3
16 files changed, 70 insertions, 48 deletions
diff --git a/src/java/org/apache/poi/ss/formula/functions/BooleanFunction.java b/src/java/org/apache/poi/ss/formula/functions/BooleanFunction.java
index 0970dc0bb2..5d011e3b20 100644
--- a/src/java/org/apache/poi/ss/formula/functions/BooleanFunction.java
+++ b/src/java/org/apache/poi/ss/formula/functions/BooleanFunction.java
@@ -60,9 +60,8 @@ public abstract class BooleanFunction implements Function {
/*
* Note: no short-circuit boolean loop exit because any ErrorEvals will override the result
*/
- for (int i=0, iSize=args.length; i<iSize; i++) {
+ for (final ValueEval arg : args) {
Boolean tempVe;
- ValueEval arg = args[i];
if (arg instanceof TwoDEval) {
TwoDEval ae = (TwoDEval) arg;
int height = ae.getHeight();
@@ -81,7 +80,9 @@ public abstract class BooleanFunction implements Function {
}
if (arg instanceof RefEval) {
RefEval re = (RefEval) arg;
- for (int sIx = re.getFirstSheetIndex(); sIx <= re.getLastSheetIndex(); sIx++) {
+ final int firstSheetIndex = re.getFirstSheetIndex();
+ final int lastSheetIndex = re.getLastSheetIndex();
+ for (int sIx = firstSheetIndex; sIx <= lastSheetIndex; sIx++) {
ValueEval ve = re.getInnerValueEval(sIx);
tempVe = OperandResolver.coerceValueToBoolean(ve, true);
if (tempVe != null) {
diff --git a/src/java/org/apache/poi/ss/formula/functions/CountUtils.java b/src/java/org/apache/poi/ss/formula/functions/CountUtils.java
index 270f787bc7..5dae60f946 100644
--- a/src/java/org/apache/poi/ss/formula/functions/CountUtils.java
+++ b/src/java/org/apache/poi/ss/formula/functions/CountUtils.java
@@ -49,7 +49,9 @@ final class CountUtils {
public static int countMatchingCellsInArea(ThreeDEval areaEval, I_MatchPredicate criteriaPredicate) {
int result = 0;
- for (int sIx=areaEval.getFirstSheetIndex(); sIx <= areaEval.getLastSheetIndex(); sIx++) {
+ final int firstSheetIndex = areaEval.getFirstSheetIndex();
+ final int lastSheetIndex = areaEval.getLastSheetIndex();
+ for (int sIx = firstSheetIndex; sIx <= lastSheetIndex; sIx++) {
int height = areaEval.getHeight();
int width = areaEval.getWidth();
for (int rrIx=0; rrIx<height; rrIx++) {
@@ -75,7 +77,9 @@ final class CountUtils {
public static int countMatchingCellsInRef(RefEval refEval, I_MatchPredicate criteriaPredicate) {
int result = 0;
- for (int sIx = refEval.getFirstSheetIndex(); sIx <= refEval.getLastSheetIndex(); sIx++) {
+ final int firstSheetIndex = refEval.getFirstSheetIndex();
+ final int lastSheetIndex = refEval.getLastSheetIndex();
+ for (int sIx = firstSheetIndex; sIx <= lastSheetIndex; sIx++) {
ValueEval ve = refEval.getInnerValueEval(sIx);
if(criteriaPredicate.matches(ve)) {
result++;
diff --git a/src/java/org/apache/poi/ss/formula/functions/DStarRunner.java b/src/java/org/apache/poi/ss/formula/functions/DStarRunner.java
index 519d7d91bb..f64253b914 100644
--- a/src/java/org/apache/poi/ss/formula/functions/DStarRunner.java
+++ b/src/java/org/apache/poi/ss/formula/functions/DStarRunner.java
@@ -89,7 +89,8 @@ public final class DStarRunner implements Function3Arg {
}
// Iterate over all DB entries.
- for(int row = 1; row < db.getHeight(); ++row) {
+ final int height = db.getHeight();
+ for(int row = 1; row < height; ++row) {
boolean matches = true;
try {
matches = fullfillsConditions(db, row, cdb);
@@ -189,7 +190,8 @@ public final class DStarRunner implements Function3Arg {
private static int getColumnForString(TwoDEval db,String name)
throws EvaluationException {
int resultColumn = -1;
- for(int column = 0; column < db.getWidth(); ++column) {
+ final int width = db.getWidth();
+ for(int column = 0; column < width; ++column) {
ValueEval columnNameValueEval = db.getValue(0, column);
String columnName = getStringFromValueEval(columnNameValueEval);
if(name.equals(columnName)) {
@@ -215,9 +217,11 @@ public final class DStarRunner implements Function3Arg {
// Only one row must match to accept the input, so rows are ORed.
// Each row is made up of cells where each cell is a condition,
// all have to match, so they are ANDed.
- for(int conditionRow = 1; conditionRow < cdb.getHeight(); ++conditionRow) {
+ final int height = cdb.getHeight();
+ for(int conditionRow = 1; conditionRow < height; ++conditionRow) {
boolean matches = true;
- for(int column = 0; column < cdb.getWidth(); ++column) { // columns are ANDed
+ final int width = cdb.getWidth();
+ for(int column = 0; column < width; ++column) { // columns are ANDed
// Whether the condition column matches a database column, if not it's a
// special column that accepts formulas.
boolean columnCondition = true;
diff --git a/src/java/org/apache/poi/ss/formula/functions/Mode.java b/src/java/org/apache/poi/ss/formula/functions/Mode.java
index 1e13504bbf..5f21324d53 100644
--- a/src/java/org/apache/poi/ss/formula/functions/Mode.java
+++ b/src/java/org/apache/poi/ss/formula/functions/Mode.java
@@ -106,7 +106,9 @@ public final class Mode implements Function {
}
if (arg instanceof RefEval) {
RefEval re = (RefEval) arg;
- for (int sIx = re.getFirstSheetIndex(); sIx <= re.getLastSheetIndex(); sIx++) {
+ final int firstSheetIndex = re.getFirstSheetIndex();
+ final int lastSheetIndex = re.getLastSheetIndex();
+ for (int sIx = firstSheetIndex; sIx <= lastSheetIndex; sIx++) {
collectValue(re.getInnerValueEval(sIx), temp, true);
}
return;
diff --git a/src/java/org/apache/poi/ss/formula/functions/TextFunction.java b/src/java/org/apache/poi/ss/formula/functions/TextFunction.java
index 7cffa1b897..3c08eee787 100644
--- a/src/java/org/apache/poi/ss/formula/functions/TextFunction.java
+++ b/src/java/org/apache/poi/ss/formula/functions/TextFunction.java
@@ -126,9 +126,10 @@ public abstract class TextFunction implements Function {
protected ValueEval evaluate(String text) {
StringBuilder sb = new StringBuilder();
boolean shouldMakeUppercase = true;
- String lowercaseText = text.toLowerCase(Locale.ROOT);
- String uppercaseText = text.toUpperCase(Locale.ROOT);
- for(int i = 0; i < text.length(); ++i) {
+ final String lowercaseText = text.toLowerCase(Locale.ROOT);
+ final String uppercaseText = text.toUpperCase(Locale.ROOT);
+ final int length = text.length();
+ for(int i = 0; i < length; ++i) {
if (shouldMakeUppercase) {
sb.append(uppercaseText.charAt(i));
}
diff --git a/src/java/org/apache/poi/ss/formula/ptg/ArrayPtg.java b/src/java/org/apache/poi/ss/formula/ptg/ArrayPtg.java
index de107a2cbd..1dcf023b68 100644
--- a/src/java/org/apache/poi/ss/formula/ptg/ArrayPtg.java
+++ b/src/java/org/apache/poi/ss/formula/ptg/ArrayPtg.java
@@ -169,18 +169,18 @@ public final class ArrayPtg extends Ptg {
public String toFormulaString() {
StringBuffer b = new StringBuffer();
b.append("{");
- for (int y=0;y<getRowCount();y++) {
+ for (int y = 0; y < _nRows; y++) {
if (y > 0) {
b.append(";");
}
- for (int x=0;x<getColumnCount();x++) {
- if (x > 0) {
+ for (int x = 0; x < _nColumns; x++) {
+ if (x > 0) {
b.append(",");
}
- Object o = _arrayValues[getValueIndex(x, y)];
- b.append(getConstantText(o));
- }
- }
+ Object o = _arrayValues[getValueIndex(x, y)];
+ b.append(getConstantText(o));
+ }
+ }
b.append("}");
return b.toString();
}
diff --git a/src/java/org/apache/poi/ss/usermodel/DataFormatter.java b/src/java/org/apache/poi/ss/usermodel/DataFormatter.java
index 6771207cc5..4de0936f58 100644
--- a/src/java/org/apache/poi/ss/usermodel/DataFormatter.java
+++ b/src/java/org/apache/poi/ss/usermodel/DataFormatter.java
@@ -563,8 +563,7 @@ public class DataFormatter implements Observer {
else if (c == 's' || c == 'S') {
sb.append('s');
// if 'M' precedes 's' it should be minutes ('m')
- for (int i = 0; i < ms.size(); i++) {
- int index = ms.get(i).intValue();
+ for (int index : ms) {
if (sb.charAt(index) == 'M') {
sb.replace(index, index+1, "m");
}
diff --git a/src/java/org/apache/poi/ss/usermodel/DateUtil.java b/src/java/org/apache/poi/ss/usermodel/DateUtil.java
index 1613a54f6a..f4e4cc5756 100644
--- a/src/java/org/apache/poi/ss/usermodel/DateUtil.java
+++ b/src/java/org/apache/poi/ss/usermodel/DateUtil.java
@@ -395,10 +395,11 @@ public class DateUtil {
// The code above was reworked as suggested in bug 48425:
// simple loop is more efficient than consecutive regexp replacements.
}*/
- StringBuilder sb = new StringBuilder(fs.length());
- for (int i = 0; i < fs.length(); i++) {
+ final int length = fs.length();
+ StringBuilder sb = new StringBuilder(length);
+ for (int i = 0; i < length; i++) {
char c = fs.charAt(i);
- if (i < fs.length() - 1) {
+ if (i < length - 1) {
char nc = fs.charAt(i + 1);
if (c == '\\') {
switch (nc) {
@@ -435,8 +436,9 @@ public class DateUtil {
// You're allowed something like dd/mm/yy;[red]dd/mm/yy
// which would place dates before 1900/1904 in red
// For now, only consider the first one
- if(fs.indexOf(';') > 0 && fs.indexOf(';') < fs.length()-1) {
- fs = fs.substring(0, fs.indexOf(';'));
+ final int separatorIndex = fs.indexOf(';');
+ if(0 < separatorIndex && separatorIndex < fs.length()-1) {
+ fs = fs.substring(0, separatorIndex);
}
// Ensure it has some date letters in it
diff --git a/src/java/org/apache/poi/ss/util/AreaReference.java b/src/java/org/apache/poi/ss/util/AreaReference.java
index 52e6d4aff5..8576511a2b 100644
--- a/src/java/org/apache/poi/ss/util/AreaReference.java
+++ b/src/java/org/apache/poi/ss/util/AreaReference.java
@@ -101,7 +101,7 @@ public class AreaReference {
}
}
- private boolean isPlainColumn(String refPart) {
+ private static boolean isPlainColumn(String refPart) {
for(int i=refPart.length()-1; i>=0; i--) {
int ch = refPart.charAt(i);
if (ch == '$' && i==0) {
diff --git a/src/java/org/apache/poi/util/DrawingDump.java b/src/java/org/apache/poi/util/DrawingDump.java
index 2f7e324d3b..bc06bcfc1a 100644
--- a/src/java/org/apache/poi/util/DrawingDump.java
+++ b/src/java/org/apache/poi/util/DrawingDump.java
@@ -27,6 +27,7 @@ import java.nio.charset.Charset;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
+import org.apache.poi.ss.usermodel.Sheet;
/**
* Dump out the aggregated escher records
@@ -42,11 +43,11 @@ public class DrawingDump
pw.println( "Drawing group:" );
wb.dumpDrawingGroupRecords(true);
- for (int sheetNum = 1; sheetNum <= wb.getNumberOfSheets(); sheetNum++)
+ int i = 1;
+ for (Sheet sheet : wb)
{
- pw.println( "Sheet " + sheetNum + ":" );
- HSSFSheet sheet = wb.getSheetAt(sheetNum - 1);
- sheet.dumpDrawingRecords(true, pw);
+ pw.println( "Sheet " + i + "(" + sheet.getSheetName() + "):" );
+ ((HSSFSheet) sheet).dumpDrawingRecords(true, pw);
}
} finally {
wb.close();
diff --git a/src/java/org/apache/poi/util/StringUtil.java b/src/java/org/apache/poi/util/StringUtil.java
index afec8225d4..6272c14e50 100644
--- a/src/java/org/apache/poi/util/StringUtil.java
+++ b/src/java/org/apache/poi/util/StringUtil.java
@@ -271,8 +271,7 @@ public class StringUtil {
public static boolean hasMultibyte(String value) {
if (value == null)
return false;
- for (int i = 0; i < value.length(); i++) {
- char c = value.charAt(i);
+ for (char c : value.toCharArray()) {
if (c > 0xFF) {
return true;
}
diff --git a/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java b/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java
index 4eb8e49513..d7f648faea 100644
--- a/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java
+++ b/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java
@@ -229,7 +229,8 @@ public class SignatureInfo implements SignatureConfigurable {
Document doc = DocumentHelper.readDocument(signaturePart.getInputStream());
XPath xpath = XPathFactory.newInstance().newXPath();
NodeList nl = (NodeList)xpath.compile("//*[@Id]").evaluate(doc, XPathConstants.NODESET);
- for (int i=0; i<nl.getLength(); i++) {
+ final int length = nl.getLength();
+ for (int i=0; i<length; i++) {
((Element)nl.item(i)).setIdAttribute("Id", true);
}
@@ -242,6 +243,7 @@ public class SignatureInfo implements SignatureConfigurable {
XMLSignature xmlSignature = xmlSignatureFactory.unmarshalXMLSignature(domValidateContext);
// TODO: replace with property when xml-sec patch is applied
+ // workaround added in r1637283 2014-11-07
for (Reference ref : (List<Reference>)xmlSignature.getSignedInfo().getReferences()) {
SignatureFacet.brokenJvmWorkaround(ref);
}
diff --git a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFFormulaEvaluator.java b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFFormulaEvaluator.java
index ff81cd3578..3415af3010 100644
--- a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFFormulaEvaluator.java
+++ b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFFormulaEvaluator.java
@@ -23,6 +23,7 @@ import org.apache.poi.ss.formula.WorkbookEvaluator;
import org.apache.poi.ss.formula.udf.UDFFinder;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.util.POILogFactory;
import org.apache.poi.util.POILogger;
import org.apache.poi.xssf.usermodel.BaseXSSFFormulaEvaluator;
@@ -100,26 +101,24 @@ public final class SXSSFFormulaEvaluator extends BaseXSSFFormulaEvaluator {
SXSSFFormulaEvaluator eval = new SXSSFFormulaEvaluator(wb);
// Check they're all available
- for (int i=0; i<wb.getNumberOfSheets(); i++) {
- SXSSFSheet s = wb.getSheetAt(i);
- if (s.areAllRowsFlushed()) {
+ for (Sheet sheet : wb) {
+ if (((SXSSFSheet)sheet).areAllRowsFlushed()) {
throw new SheetsFlushedException();
}
}
// Process the sheets as best we can
- for (int i=0; i<wb.getNumberOfSheets(); i++) {
- SXSSFSheet s = wb.getSheetAt(i);
+ for (Sheet sheet : wb) {
// Check if any rows have already been flushed out
- int lastFlushedRowNum = s.getLastFlushedRowNum();
+ int lastFlushedRowNum = ((SXSSFSheet) sheet).getLastFlushedRowNum();
if (lastFlushedRowNum > -1) {
if (! skipOutOfWindow) throw new RowFlushedException(0);
logger.log(POILogger.INFO, "Rows up to " + lastFlushedRowNum + " have already been flushed, skipping");
}
// Evaluate what we have
- for (Row r : s) {
+ for (Row r : sheet) {
for (Cell c : r) {
if (c.getCellType() == Cell.CELL_TYPE_FORMULA) {
eval.evaluateFormulaCell(c);
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java
index 28a9ecf7d3..b2ca1e1809 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java
@@ -118,11 +118,14 @@ public abstract class BaseXSSFEvaluationWorkbook implements FormulaRenderingWork
// Not properly referenced
throw new RuntimeException("Book not linked for filename " + bookName);
}
+ /* case-sensitive */
private int findExternalLinkIndex(String bookName, List<ExternalLinksTable> tables) {
- for (int i=0; i<tables.size(); i++) {
- if (tables.get(i).getLinkedFileName().equals(bookName)) {
+ int i = 0;
+ for (ExternalLinksTable table : tables) {
+ if (table.getLinkedFileName().equals(bookName)) {
return i+1; // 1 based results, 0 = current workbook
}
+ i++;
}
return -1;
}
@@ -131,6 +134,7 @@ public abstract class BaseXSSFEvaluationWorkbook implements FormulaRenderingWork
private FakeExternalLinksTable(String fileName) {
this.fileName = fileName;
}
+ @Override
public String getLinkedFileName() {
return fileName;
}
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFChart.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFChart.java
index ae63f235d6..d396792133 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFChart.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFChart.java
@@ -58,6 +58,7 @@ import org.openxmlformats.schemas.drawingml.x2006.main.CTRegularTextRun;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextBody;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextField;
import org.openxmlformats.schemas.drawingml.x2006.main.CTTextParagraph;
+import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
@@ -274,9 +275,11 @@ public final class XSSFChart extends POIXMLDocumentPart implements Chart, ChartA
.selectPath("declare namespace a='"+XSSFDrawing.NAMESPACE_A+"' .//a:t");
for (int m = 0; m < t.length; m++) {
NodeList kids = t[m].getDomNode().getChildNodes();
- for (int n = 0; n < kids.getLength(); n++) {
- if (kids.item(n) instanceof Text) {
- text.append(kids.item(n).getNodeValue());
+ final int count = kids.getLength();
+ for (int n = 0; n < count; n++) {
+ Node kid = kids.item(n);
+ if (kid instanceof Text) {
+ text.append(kid.getNodeValue());
}
}
}
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
index 50a898a5c5..3ae3d5b579 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
@@ -2804,7 +2804,8 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
// check row numbers to make sure they are continuous and increasing (monotonic)
// and srcRows does not contain null rows
- for (int index=1; index < srcRows.size(); index++) {
+ final int size = srcRows.size();
+ for (int index=1; index < size; index++) {
final Row curRow = srcRows.get(index);
if (curRow == null) {
throw new IllegalArgumentException("srcRows may not contain null rows. Found null row at index " + index + ".");