changed workbook reference to index in CellLocation
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@701598 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
d0850e433e
commit
4bf266b1c7
@ -25,24 +25,24 @@ import org.apache.poi.hssf.util.CellReference;
|
|||||||
final class CellLocation {
|
final class CellLocation {
|
||||||
public static final CellLocation[] EMPTY_ARRAY = { };
|
public static final CellLocation[] EMPTY_ARRAY = { };
|
||||||
|
|
||||||
private final EvaluationWorkbook _book;
|
private final int _bookIx;
|
||||||
private final int _sheetIndex;
|
private final int _sheetIndex;
|
||||||
private final int _rowIndex;
|
private final int _rowIndex;
|
||||||
private final int _columnIndex;
|
private final int _columnIndex;
|
||||||
private final int _hashCode;
|
private final int _hashCode;
|
||||||
|
|
||||||
public CellLocation(EvaluationWorkbook book, int sheetIndex, int rowIndex, int columnIndex) {
|
public CellLocation(int bookIx, int sheetIndex, int rowIndex, int columnIndex) {
|
||||||
if (sheetIndex < 0) {
|
if (sheetIndex < 0) {
|
||||||
throw new IllegalArgumentException("sheetIndex must not be negative");
|
throw new IllegalArgumentException("sheetIndex must not be negative");
|
||||||
}
|
}
|
||||||
_book = book;
|
_bookIx = bookIx;
|
||||||
_sheetIndex = sheetIndex;
|
_sheetIndex = sheetIndex;
|
||||||
_rowIndex = rowIndex;
|
_rowIndex = rowIndex;
|
||||||
_columnIndex = columnIndex;
|
_columnIndex = columnIndex;
|
||||||
_hashCode = System.identityHashCode(book) + sheetIndex + 17 * (rowIndex + 17 * columnIndex);
|
_hashCode = _bookIx + 17 * (sheetIndex + 17 * (rowIndex + 17 * columnIndex));
|
||||||
}
|
}
|
||||||
public Object getBook() {
|
public int getBookIndex() {
|
||||||
return _book;
|
return _bookIx;
|
||||||
}
|
}
|
||||||
public int getSheetIndex() {
|
public int getSheetIndex() {
|
||||||
return _sheetIndex;
|
return _sheetIndex;
|
||||||
@ -65,7 +65,7 @@ final class CellLocation {
|
|||||||
if (getSheetIndex() != other.getSheetIndex()) {
|
if (getSheetIndex() != other.getSheetIndex()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (getBook() != other.getBook()) {
|
if (getBookIndex() != other.getBookIndex()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -97,7 +97,7 @@ public final class CollaboratingWorkbooksEnvironment {
|
|||||||
EvaluationCache cache = new EvaluationCache(evalListener);
|
EvaluationCache cache = new EvaluationCache(evalListener);
|
||||||
|
|
||||||
for(int i=0; i<nItems; i++) {
|
for(int i=0; i<nItems; i++) {
|
||||||
evaluators[i].attachToEnvironment(env, cache);
|
evaluators[i].attachToEnvironment(env, cache, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -203,7 +203,7 @@ final class EvaluationCache {
|
|||||||
CellLocation clB = (CellLocation) b;
|
CellLocation clB = (CellLocation) b;
|
||||||
|
|
||||||
int cmp;
|
int cmp;
|
||||||
cmp = System.identityHashCode(clA.getBook()) - System.identityHashCode(clB.getBook());
|
cmp = clA.getBookIndex() - clB.getBookIndex();
|
||||||
if (cmp != 0) {
|
if (cmp != 0) {
|
||||||
return cmp;
|
return cmp;
|
||||||
}
|
}
|
||||||
|
@ -80,6 +80,7 @@ public final class WorkbookEvaluator {
|
|||||||
|
|
||||||
private final EvaluationWorkbook _workbook;
|
private final EvaluationWorkbook _workbook;
|
||||||
private EvaluationCache _cache;
|
private EvaluationCache _cache;
|
||||||
|
private int _workbookIx;
|
||||||
|
|
||||||
private final IEvaluationListener _evaluationListener;
|
private final IEvaluationListener _evaluationListener;
|
||||||
private final Map _sheetIndexesBySheet;
|
private final Map _sheetIndexesBySheet;
|
||||||
@ -94,6 +95,7 @@ public final class WorkbookEvaluator {
|
|||||||
_cache = new EvaluationCache(evaluationListener);
|
_cache = new EvaluationCache(evaluationListener);
|
||||||
_sheetIndexesBySheet = new IdentityHashMap();
|
_sheetIndexesBySheet = new IdentityHashMap();
|
||||||
_collaboratingWorkbookEnvironment = CollaboratingWorkbooksEnvironment.EMPTY;
|
_collaboratingWorkbookEnvironment = CollaboratingWorkbooksEnvironment.EMPTY;
|
||||||
|
_workbookIx = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -111,9 +113,10 @@ public final class WorkbookEvaluator {
|
|||||||
System.out.println(s);
|
System.out.println(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* package */ void attachToEnvironment(CollaboratingWorkbooksEnvironment collaboratingWorkbooksEnvironment, EvaluationCache cache) {
|
/* package */ void attachToEnvironment(CollaboratingWorkbooksEnvironment collaboratingWorkbooksEnvironment, EvaluationCache cache, int workbookIx) {
|
||||||
_collaboratingWorkbookEnvironment = collaboratingWorkbooksEnvironment;
|
_collaboratingWorkbookEnvironment = collaboratingWorkbooksEnvironment;
|
||||||
_cache = cache;
|
_cache = cache;
|
||||||
|
_workbookIx = workbookIx;
|
||||||
}
|
}
|
||||||
/* package */ CollaboratingWorkbooksEnvironment getEnvironment() {
|
/* package */ CollaboratingWorkbooksEnvironment getEnvironment() {
|
||||||
return _collaboratingWorkbookEnvironment;
|
return _collaboratingWorkbookEnvironment;
|
||||||
@ -122,6 +125,7 @@ public final class WorkbookEvaluator {
|
|||||||
/* package */ void detachFromEnvironment() {
|
/* package */ void detachFromEnvironment() {
|
||||||
_collaboratingWorkbookEnvironment = CollaboratingWorkbooksEnvironment.EMPTY;
|
_collaboratingWorkbookEnvironment = CollaboratingWorkbooksEnvironment.EMPTY;
|
||||||
_cache = new EvaluationCache(_evaluationListener);
|
_cache = new EvaluationCache(_evaluationListener);
|
||||||
|
_workbookIx = 0;
|
||||||
}
|
}
|
||||||
/* package */ IEvaluationListener getEvaluationListener() {
|
/* package */ IEvaluationListener getEvaluationListener() {
|
||||||
return _evaluationListener;
|
return _evaluationListener;
|
||||||
@ -148,7 +152,7 @@ public final class WorkbookEvaluator {
|
|||||||
throw new IllegalArgumentException("value must not be null");
|
throw new IllegalArgumentException("value must not be null");
|
||||||
}
|
}
|
||||||
int sheetIndex = getSheetIndex(sheet);
|
int sheetIndex = getSheetIndex(sheet);
|
||||||
_cache.setValue(new CellLocation(_workbook, sheetIndex, rowIndex, columnIndex), true, CellLocation.EMPTY_ARRAY, value);
|
_cache.setValue(getCellLoc(sheetIndex, rowIndex, columnIndex), true, CellLocation.EMPTY_ARRAY, value);
|
||||||
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@ -157,7 +161,7 @@ public final class WorkbookEvaluator {
|
|||||||
*/
|
*/
|
||||||
public void notifySetFormula(HSSFSheet sheet, int rowIndex, int columnIndex) {
|
public void notifySetFormula(HSSFSheet sheet, int rowIndex, int columnIndex) {
|
||||||
int sheetIndex = getSheetIndex(sheet);
|
int sheetIndex = getSheetIndex(sheet);
|
||||||
_cache.setValue(new CellLocation(_workbook, sheetIndex, rowIndex, columnIndex), false, CellLocation.EMPTY_ARRAY, null);
|
_cache.setValue(getCellLoc(sheetIndex, rowIndex, columnIndex), false, CellLocation.EMPTY_ARRAY, null);
|
||||||
|
|
||||||
}
|
}
|
||||||
private int getSheetIndex(HSSFSheet sheet) {
|
private int getSheetIndex(HSSFSheet sheet) {
|
||||||
@ -175,7 +179,7 @@ public final class WorkbookEvaluator {
|
|||||||
|
|
||||||
public ValueEval evaluate(HSSFCell srcCell) {
|
public ValueEval evaluate(HSSFCell srcCell) {
|
||||||
int sheetIndex = getSheetIndex(srcCell.getSheet());
|
int sheetIndex = getSheetIndex(srcCell.getSheet());
|
||||||
CellLocation cellLoc = new CellLocation(_workbook, sheetIndex, srcCell.getRowIndex(), srcCell.getCellNum());
|
CellLocation cellLoc = getCellLoc(sheetIndex, srcCell.getRowIndex(), srcCell.getCellNum());
|
||||||
return internalEvaluate(srcCell, cellLoc, new EvaluationTracker(_cache));
|
return internalEvaluate(srcCell, cellLoc, new EvaluationTracker(_cache));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -471,8 +475,11 @@ public final class WorkbookEvaluator {
|
|||||||
} else {
|
} else {
|
||||||
cell = row.getCell(columnIndex);
|
cell = row.getCell(columnIndex);
|
||||||
}
|
}
|
||||||
CellLocation cellLoc = new CellLocation(_workbook, sheetIndex, rowIndex, columnIndex);
|
CellLocation cellLoc = getCellLoc(sheetIndex, rowIndex, columnIndex);
|
||||||
tracker.acceptDependency(cellLoc);
|
tracker.acceptDependency(cellLoc);
|
||||||
return internalEvaluate(cell, cellLoc, tracker);
|
return internalEvaluate(cell, cellLoc, tracker);
|
||||||
}
|
}
|
||||||
|
private CellLocation getCellLoc(int sheetIndex, int rowIndex, int columnIndex) {
|
||||||
|
return new CellLocation(_workbookIx, sheetIndex, rowIndex, columnIndex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user