whitespace (tabs to spaces); +props svn:eol-style=native
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1747839 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
e3beb3abdd
commit
69ded5b7b0
@ -30,57 +30,57 @@ import org.apache.poi.ss.usermodel.Row;
|
||||
*/
|
||||
final class XSSFEvaluationSheet implements EvaluationSheet {
|
||||
|
||||
private final XSSFSheet _xs;
|
||||
private Map<CellKey, EvaluationCell> _cellCache;
|
||||
private final XSSFSheet _xs;
|
||||
private Map<CellKey, EvaluationCell> _cellCache;
|
||||
|
||||
public XSSFEvaluationSheet(XSSFSheet sheet) {
|
||||
_xs = sheet;
|
||||
}
|
||||
public XSSFEvaluationSheet(XSSFSheet sheet) {
|
||||
_xs = sheet;
|
||||
}
|
||||
|
||||
public XSSFSheet getXSSFSheet() {
|
||||
return _xs;
|
||||
}
|
||||
public EvaluationCell getCell(int rowIndex, int columnIndex) {
|
||||
// cache for performance: ~30% speedup due to caching
|
||||
if (_cellCache == null) {
|
||||
_cellCache = new HashMap<CellKey, EvaluationCell>(_xs.getLastRowNum()*3);
|
||||
for (final Row row : _xs) {
|
||||
final int rowNum = row.getRowNum();
|
||||
for (final Cell cell : row) {
|
||||
// cast is safe, the iterator is just defined using the interface
|
||||
final CellKey key = new CellKey(rowNum, cell.getColumnIndex());
|
||||
final EvaluationCell evalcell = new XSSFEvaluationCell((XSSFCell) cell, this);
|
||||
_cellCache.put(key, evalcell);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return _cellCache.get(new CellKey(rowIndex, columnIndex));
|
||||
|
||||
}
|
||||
|
||||
private static class CellKey {
|
||||
private final int _row;
|
||||
private final int _col;
|
||||
private final int _hash;
|
||||
|
||||
protected CellKey(int row, int col) {
|
||||
_row = row;
|
||||
_col = col;
|
||||
_hash = (17 * 37 + row) * 37 + col;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return _hash;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (obj == null) return false;
|
||||
// assumes other object is one of us, otherwise ClassCastException is thrown
|
||||
final CellKey oKey = (CellKey) obj;
|
||||
return _row == oKey._row && _col == oKey._col;
|
||||
}
|
||||
}
|
||||
public XSSFSheet getXSSFSheet() {
|
||||
return _xs;
|
||||
}
|
||||
|
||||
public EvaluationCell getCell(int rowIndex, int columnIndex) {
|
||||
// cache for performance: ~30% speedup due to caching
|
||||
if (_cellCache == null) {
|
||||
_cellCache = new HashMap<CellKey, EvaluationCell>(_xs.getLastRowNum()*3);
|
||||
for (final Row row : _xs) {
|
||||
final int rowNum = row.getRowNum();
|
||||
for (final Cell cell : row) {
|
||||
// cast is safe, the iterator is just defined using the interface
|
||||
final CellKey key = new CellKey(rowNum, cell.getColumnIndex());
|
||||
final EvaluationCell evalcell = new XSSFEvaluationCell((XSSFCell) cell, this);
|
||||
_cellCache.put(key, evalcell);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return _cellCache.get(new CellKey(rowIndex, columnIndex));
|
||||
}
|
||||
|
||||
private static class CellKey {
|
||||
private final int _row;
|
||||
private final int _col;
|
||||
private final int _hash;
|
||||
|
||||
protected CellKey(int row, int col) {
|
||||
_row = row;
|
||||
_col = col;
|
||||
_hash = (17 * 37 + row) * 37 + col;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return _hash;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (obj == null) return false;
|
||||
// assumes other object is one of us, otherwise ClassCastException is thrown
|
||||
final CellKey oKey = (CellKey) obj;
|
||||
return _row == oKey._row && _col == oKey._col;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user