private void proc(int rowIndex, ComponentOpenClass rowOpenClass, int columnIndex, SpreadsheetHeaderDefinition columnHeader) { if (columnHeader == null) { return; } SpreadsheetCell cell = cells[rowIndex][columnIndex]; for (SymbolicTypeDefinition typeDefinition : columnHeader.getVars()) { String fieldName = (DOLLAR_SIGN + typeDefinition.getName().getIdentifier()).intern(); SpreadsheetCellField field = createSpreadsheetCellField(rowOpenClass, cell, fieldName); rowOpenClass.addField(field); } }
private void buildReturnCells(IOpenClass spreadsheetHeaderType) throws SyntaxNodeException { SpreadsheetHeaderDefinition headerDefinition = headerDefinitions.get(SpreadsheetSymbols.RETURN_NAME.toString()); if (headerDefinition == null) { return; } int nonEmptyCellsCount = calculateNonEmptyCells(headerDefinition); IOpenClass cellType = deriveSingleCellReturnType(nonEmptyCellsCount, headerDefinition, spreadsheetHeaderType); if (headerDefinition.getType() == null) { headerDefinition.setType(cellType); } else { String message = String .format( "RETURN %s derives it's type from the Spreadsheet return type and therefore must not be defined here", headerDefinition.rowOrColumn()); throw SyntaxNodeExceptionUtils.createError(message, headerDefinition.getVars().get(0).getName()); } returnHeaderDefinition = new ReturnSpreadsheetHeaderDefinition(headerDefinition, spreadsheetHeaderType); headerDefinitions.put(SpreadsheetSymbols.RETURN_NAME.toString(), returnHeaderDefinition); }
public ReturnSpreadsheetHeaderDefinition(SpreadsheetHeaderDefinition source, IOpenClass returnType) { super(source.getRow(), source.getColumn()); this.setType(source.getType()); for (SymbolicTypeDefinition var : source.getVars()) { addVarHeader(var); } this.returnType = returnType; }
/** * 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); } } }
IdentifierNode typeIdentifierNode = null; for (SymbolicTypeDefinition symbolicTypeDefinition : headerDefinition.getVars()) {