bug 59958: Add cells on the fly to the evaluation sheet cache on cache miss; patch from Tomasz Stanczak
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1760213 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
d9cfcbdd18
commit
6146860a5e
@ -67,7 +67,28 @@ final class XSSFEvaluationSheet implements EvaluationSheet {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return _cellCache.get(new CellKey(rowIndex, columnIndex));
|
final CellKey key = new CellKey(rowIndex, columnIndex);
|
||||||
|
EvaluationCell evalcell = _cellCache.get(key);
|
||||||
|
|
||||||
|
// If cache is stale, update cache with this one cell
|
||||||
|
// This is a compromise between rebuilding the entire cache
|
||||||
|
// (which would quickly defeat the benefit of the cache)
|
||||||
|
// and not caching at all.
|
||||||
|
// See bug 59958: Add cells on the fly to the evaluation sheet cache on cache miss
|
||||||
|
if (evalcell == null) {
|
||||||
|
XSSFRow row = _xs.getRow(rowIndex);
|
||||||
|
if (row == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
XSSFCell cell = row.getCell(columnIndex);
|
||||||
|
if (cell == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
evalcell = new XSSFEvaluationCell(cell, this);
|
||||||
|
_cellCache.put(key, evalcell);
|
||||||
|
}
|
||||||
|
|
||||||
|
return evalcell;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class CellKey {
|
private static class CellKey {
|
||||||
|
Loading…
Reference in New Issue
Block a user