public void finalizeBind(IBindingContext bindingContext) throws Exception { super.finalizeBind(bindingContext); ILogicalTable tableBody = getTableSyntaxNode().getTableBody(); getTableSyntaxNode().getSubTables().put(IXlsTableNames.VIEW_BUSINESS, tableBody); cells = structureBuilder.getCells(); Spreadsheet spreadsheet = (Spreadsheet) getMethod(); spreadsheet.setCells(cells); spreadsheet.setResultBuilder(componentsBuilder.buildResultBuilder(spreadsheet)); }
private void validateTableBody(TableSyntaxNode tableSyntaxNode, IBindingContext bindingContext) throws SyntaxNodeException { ILogicalTable tableBody = tableSyntaxNode.getTableBody(); if (tableBody == null) { throw SyntaxNodeExceptionUtils.createError("Table has no body! Try to merge header cell horizontally to identify table.", getTableSyntaxNode()); } int height = tableBody.getHeight(); int width = tableBody.getWidth(); if (height < 2 || width < 2) { String message = "Spreadsheet has empty body. Spreadsheet table should has at least 2x3 cells."; BindHelper.processWarn(message, tableSyntaxNode, bindingContext); } }
public void preBind(IBindingContext bindingContext) throws SyntaxNodeException { if (!bindingContext.isExecutionMode()) { getTableSyntaxNode().setMetaInfoReader(new SpreadsheetMetaInfoReader(this)); } TableSyntaxNode tableSyntaxNode = getTableSyntaxNode(); validateTableBody(tableSyntaxNode, bindingContext); IOpenMethodHeader header = getHeader(); this.bindingContext = bindingContext; componentsBuilder = new SpreadsheetComponentsBuilder(tableSyntaxNode, bindingContext); componentsBuilder.buildHeaders(header.getType()); structureBuilder = new SpreadsheetStructureBuilder(componentsBuilder, header); String headerType = header.getName() + "Type"; OpenL openL = bindingContext.getOpenL(); spreadsheetOpenClass = new SpreadsheetOpenClass(headerType, openL); Boolean autoType = tableSyntaxNode.getTableProperties().getAutoType(); structureBuilder.addCellFields(spreadsheetOpenClass, autoType); }
String message = String.format("Can't define type %s", type != null ? type.getName() : spreadsheet.getName()); SyntaxNodeException exception = SyntaxNodeExceptionUtils.createError(message, e, getTableSyntaxNode()); getTableSyntaxNode().addError(exception); bindingContext.addError(exception);