private IBindingContext makeRowContext(int rowIndex) { /** create name for the row open class */ String rowOpenClassName = String.format("%sRowType%d", spreadsheetHeader.getName(), rowIndex); /** create row open class and populate it with fields **/ IBindingContext generalBindingContext = componentsBuilder.getBindingContext(); Map<Integer, SpreadsheetHeaderDefinition> headers = componentsBuilder.getColumnHeaders(); // create row open class for current row ComponentOpenClass rowOpenClass = new ComponentOpenClass(rowOpenClassName, generalBindingContext.getOpenL()); // get the width of the whole spreadsheet int width = cells[0].length; // create for each column in row its field for (int columnIndex = 0; columnIndex < width; columnIndex++) { SpreadsheetHeaderDefinition columnHeader = headers.get(columnIndex); proc(rowIndex, rowOpenClass, columnIndex, columnHeader); } /** create row binding context **/ return new SpreadsheetContext(spreadsheetBindingContext, rowOpenClass); }
/** * Creates a field from the spreadsheet cell and add it to the spreadsheetType */ private void addSpreadsheetFields(SpreadsheetOpenClass spreadsheetType, SpreadsheetCell spreadsheetCell, int rowIndex, int columnIndex) { SpreadsheetHeaderDefinition columnHeaders = componentsBuilder.getColumnHeaders().get(columnIndex); SpreadsheetHeaderDefinition rowHeaders = componentsBuilder.getRowHeaders().get(rowIndex); if (columnHeaders == null || rowHeaders == null) { return; } for (SymbolicTypeDefinition columnDefinition : columnHeaders.getVars()) { for (SymbolicTypeDefinition rowDefinition : rowHeaders.getVars()) { // get column name from the column definition String columnName = columnDefinition.getName().getIdentifier(); // get row name from the row definition String rowName = rowDefinition.getName().getIdentifier(); // create name of the field String fieldname = getSpreadsheetCellFieldName(columnName, rowName); // create spreadsheet cell field SpreadsheetCellField field = createSpreadsheetCellField(spreadsheetType, spreadsheetCell, fieldname); // add spreadsheet cell field to its open class spreadsheetType.addField(field); } } }
private SpreadsheetCell buildCell(int rowIndex, int columnIndex, boolean autoType) { Map<Integer, SpreadsheetHeaderDefinition> columnHeaders = componentsBuilder.getColumnHeaders(); Map<Integer, SpreadsheetHeaderDefinition> rowHeaders = componentsBuilder.getRowHeaders();
private void extractCellValue(IBindingContext rowBindingContext, int rowIndex, int columnIndex) { Map<Integer, SpreadsheetHeaderDefinition> columnHeaders = componentsBuilder.getColumnHeaders(); Map<Integer, SpreadsheetHeaderDefinition> rowHeaders = componentsBuilder.getRowHeaders();