public Object makeResult(SpreadsheetResultCalculator result) { return result.getValue(cell.getRowIndex(), cell.getColumnIndex()); }
public Object makeResult(SpreadsheetResultCalculator result) { Object[][] resultArray = result.getValues(); Spreadsheet spreadsheet = result.getSpreadsheet(); String[] rowNames = spreadsheet.getRowNames(); String[] columnNames = spreadsheet.getColumnNames(); Map<String, Point> fieldsCoordinates = spreadsheet.getFieldsCoordinates(); SpreadsheetResult spreadsheetBean = new SpreadsheetResult(resultArray, rowNames, columnNames, fieldsCoordinates); TableSyntaxNode tsn = spreadsheet.getSyntaxNode(); if (tsn != null) { spreadsheetBean.setLogicalTable(tsn.getTableBody()); } return spreadsheetBean; }
public SpreadsheetResultCalculator(Spreadsheet spreadsheet, IDynamicObject targetModule, Object[] params, IRuntimeEnv env, Object[][] preCalculatedResult) { super(); this.spreadsheet = spreadsheet; this.targetModule = targetModule; this.params = params; this.env = env; if (preCalculatedResult == null) this.results = new Object[spreadsheet.getHeight()][spreadsheet.getWidth()]; else this.results = clonePrecalculatedResults(preCalculatedResult); }
public Object invokeSimple(Object target, Object[] params, IRuntimeEnv env) { SpreadsheetResultCalculator res = new SpreadsheetResultCalculator( getInvokableMethod(), (IDynamicObject) target, params, env, preFetchedResult); return getInvokableMethod().getResultBuilder().makeResult(res); }
@Override public Object get(Object target, IRuntimeEnv env) { SpreadsheetResultCalculator result = (SpreadsheetResultCalculator) target; if (result == null) { return getType().nullObject(); } return result.getValue(cell.getRowIndex(), cell.getColumnIndex()); }
public Object makeResult(SpreadsheetResultCalculator resultCalculator) { int size = cells.size(); IAggregateInfo aggregateInfo = type.getAggregateInfo(); Object array = aggregateInfo.makeIndexedAggregate(aggregateInfo.getComponentType(type), size); IOpenIndex index = aggregateInfo.getIndex(type); for (int i = 0; i < size; ++i) { SpreadsheetCell cell = cells.get(i); Object value = resultCalculator.getValue(cell.getRowIndex(), cell.getColumnIndex()); if (value == null) { value = type.nullObject(); } index.setValue(array, i, value); } return array; }
public Object getFieldValue(String name) { IOpenField field = spreadsheet.getSpreadsheetType().getField(name); if (field == null) { return targetModule.getFieldValue(name); } SpreadsheetCellField cellField = (SpreadsheetCellField) field; int row = cellField.getCell().getRowIndex(); int column = cellField.getCell().getColumnIndex(); return getValue(row, column); }
@Override public Object get(Object target, IRuntimeEnv env) { int sx = fstart.getCell().getColumnIndex(); int sy = fstart.getCell().getRowIndex(); int ex = fend.getCell().getColumnIndex(); int ey = fend.getCell().getRowIndex(); int w = ex - sx + 1; int h = ey - sy + 1; int size = w * h; SpreadsheetResultCalculator calc = (SpreadsheetResultCalculator) target; Object array = Array.newInstance(rangeType, size); int i = 0; for (int x = sx; x <= ex; ++x) { for (int y = sy; y <= ey; ++y) { Object v = calc.getValue(y, x); IOpenCast openCast = casts[x - sx][y - sy]; if (openCast != null && openCast.isImplicit()) { v = openCast.convert(v); } Array.set(array, i, v); i++; } } return array; }