/** * Write a field's description for a given data table (field technical and * business names and their foreign keys). * * @param fields a fields list */ public void writeFieldNames(List<? extends DataTableField> fields) { if (getTableRegion() == null) { throw new IllegalStateException("beginTable() has to be called"); } this.fields = fields; boolean hasForeignKeys = hasForeignKeys(fields); fieldNameRow = getCurrentRow(); foreignKeyRow = hasForeignKeys ? fieldNameRow + 1 : NOT_INITIALIZED; businessNameRow = hasForeignKeys ? fieldNameRow + 2 : fieldNameRow + 1; writeFields("", fields, 0); incCurrentRow(hasForeignKeys ? 3 : 2); }
/** * Write a header of a data table * * @param typeName type name * @param variableName technical variable name */ public void writeHeader(String typeName, String variableName) { writeHeader(typeName, variableName, null); }
/** * Write a field values * * @param fieldValues a map containing values where a key is fully qualified * field name * @param style cell style (can be null) */ public void writeFieldValues(Map<String, String> fieldValues, ICellStyle cellStyle) { writeFieldValues(fields, fieldValues, cellStyle); incCurrentRow(); }
protected String buildTable(XlsSheetSourceCodeModule sourceCodeModule) throws CreateTableException { XlsSheetGridModel gridModel = new XlsSheetGridModel(sourceCodeModule); DataTableBuilder builder = new DataTableBuilder(gridModel); Map<String, Object> properties = buildProperties(); int width = DataTableBuilder.MIN_WIDTH; if (!properties.isEmpty()) { width = TableBuilder.PROPERTIES_MIN_WIDTH; } width = Math.max(getFieldsCount(tree.getRoot().getValue()), width); int height = TableBuilder.HEADER_HEIGHT + properties.size() + 1; builder.beginTable(width, height); builder.writeHeader(tableType, tableName); builder.writeProperties(properties, null); builder.writeFieldNames(tree.getRoot().getValue().getAggregatedFields()); String uri = gridModel.getRangeUri(builder.getTableRegion()); builder.endTable(); return uri; }
private void writeFieldValues(List<? extends DataTableField> fields, Map<String, String> fieldValues, ICellStyle cellStyle) { for (int i = 0; i < fields.size(); i++) { DataTableField field = fields.get(i); if (field.isFillChildren()) { writeFieldValues(field.getAggregatedFields(), fieldValues, cellStyle); } else { String fieldName = field.getName(); writeCell(i, getCurrentRow(), 1, 1, fieldValues.get(fieldName), cellStyle); } } } }
private int writeFields(String prefix, List<? extends DataTableField> fields, int column) { int col = column; for (DataTableField field : fields) { if (StringUtils.isBlank(field.getName())) { throw new IllegalArgumentException("Field name must be not empty"); } if (field.isFillChildren()) { col = writeFields(prefix + field.getName() + ".", field.getAggregatedFields(), col); } else { writeCell(col, fieldNameRow, 1, 1, prefix + field.getName()); if (foreignKeyRow != NOT_INITIALIZED) { writeCell(col, foreignKeyRow, 1, 1, parseForeignKey(field.getForeignKey())); } writeCell(col, businessNameRow, 1, 1, field.getBusinessName()); col++; } } return col; }
private boolean hasForeignKeys(List<? extends DataTableField> fields) { for (DataTableField field : fields) { boolean hasForeignKey; if (field.isFillChildren()) { hasForeignKey = hasForeignKeys(field.getAggregatedFields()); } else { hasForeignKey = StringUtils.isNotBlank(field.getForeignKey()); } if (hasForeignKey) { return true; } } return false; }
protected String buildTable(XlsSheetSourceCodeModule sourceCodeModule) throws CreateTableException { XlsSheetGridModel gridModel = new XlsSheetGridModel(sourceCodeModule); DataTableBuilder builder = new DataTableBuilder(gridModel); Map<String, Object> properties = buildProperties(); int width = DataTableBuilder.MIN_WIDTH; if (!properties.isEmpty()) { width = TableBuilder.PROPERTIES_MIN_WIDTH; } width = Math.max(getFieldsCount(tree.getRoot().getValue()), width); int height = TableBuilder.HEADER_HEIGHT + properties.size() + 1; builder.beginTable(width, height); builder.writeHeader(tableType, tableName); builder.writeProperties(properties, null); builder.writeFieldNames(tree.getRoot().getValue().getAggregatedFields()); String uri = gridModel.getRangeUri(builder.getTableRegion()); builder.endTable(); return uri; }