@Override public void visit(JRVisitor visitor) { if (ElementsVisitorUtils.visitDeepElements(visitor)) { ColumnElementsVisitor columnElementsVisitor = new ColumnElementsVisitor(visitor); for (BaseColumn column : columns) { column.visitColumn(columnElementsVisitor); } } }
private void appendColumnOptions(BaseColumn column) { StringBuilder options = new StringBuilder(); addCommonOptions(options, column); if (!column.getDatatype().isBuiltin()) { addOption( options, UDT, column.getDatatype().getName() + "(" + column.getLength() + ", " + column.getPrecision() + ", " + column.getScale() + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ } if (column.getDatatype().getRadix() != 0 && column.getRadix() != column.getDatatype().getRadix()) { addOption(options, RADIX, column.getRadix()); } buildColumnOptions(column, options); if (options.length() != 0) { append(SPACE).append(OPTIONS).append(SPACE).append(LPAREN).append(options).append(RPAREN); } }
private void appendDefault(BaseColumn column) { if (column.getDefaultValue() != null) { append(SPACE).append(DEFAULT).append(SPACE); if (BaseColumn.EXPRESSION_DEFAULT.equalsIgnoreCase( column.getProperty(BaseColumn.DEFAULT_HANDLING, false))) { append(column.getDefaultValue()); } else { append(TICK) .append(StringUtil.replaceAll(column.getDefaultValue(), TICK, TICK + TICK)) .append(TICK); } } }
private void copyPropertyExpressions(BaseColumn column, ColumnFactory factory) { JRPropertyExpression[] props = column.getPropertyExpressions(); if (props != null && props.length > 0) { propertyExpressions = new ArrayList<JRPropertyExpression>(props.length); for (int i = 0; i < props.length; i++) { propertyExpressions.add(factory.getBaseObjectFactory().getPropertyExpression(props[i])); } } }
public StandardBaseColumn(BaseColumn column, ColumnFactory factory) { this.printWhenExpression = factory.getBaseObjectFactory().getExpression(column.getPrintWhenExpression()); this.tableHeader = factory.createCell(column.getTableHeader()); this.tableFooter = factory.createCell(column.getTableFooter()); this.groupHeaders = factory.createGroupCells(column.getGroupHeaders()); this.groupFooters = factory.createGroupCells(column.getGroupFooters()); this.columnHeader = factory.createCell(column.getColumnHeader()); this.columnFooter = factory.createCell(column.getColumnFooter()); this.width = column.getWidth(); }
public StandardBaseColumn(BaseColumn column, ColumnFactory factory) { this.uuid = column.getUUID(); this.printWhenExpression = factory.getBaseObjectFactory().getExpression(column.getPrintWhenExpression()); this.tableHeader = factory.createCell(column.getTableHeader()); this.tableFooter = factory.createCell(column.getTableFooter()); this.groupHeaders = factory.createGroupCells(column.getGroupHeaders()); this.groupFooters = factory.createGroupCells(column.getGroupFooters()); this.columnHeader = factory.createCell(column.getColumnHeader()); this.columnFooter = factory.createCell(column.getColumnFooter()); this.width = column.getWidth(); propertiesMap = JRPropertiesMap.getPropertiesClone(column); copyPropertyExpressions(column, factory); }
public void acceptNewGroupingRules(List<GroupingRule> groupingRules) { if (beforeUpdateValuesPhase) { incomingGroupingRules = groupingRules; return; } DataTable dataTable = getDataTable(); for (GroupingRule sortingRule : groupingRules) { String columnId = sortingRule.getColumnId(); BaseColumn column = dataTable.getColumnById(columnId); if (column == null) throw new IllegalArgumentException("Column by id not found: " + columnId); if (!column.isColumnGroupable()) throw new IllegalArgumentException( "Column (id = " + columnId + ") is not groupable. Column class is " + column.getClass() + " ; specify sortingExpression or groupingExpression for <o:column> to " + "make it groupable"); } setGroupingRules(groupingRules); }
private void buildColumnOptions(BaseColumn baseColumn, StringBuilder options) { if (baseColumn instanceof Column) { Column column = (Column) baseColumn; if (!column.isSelectable()) { addOption(options, SELECTABLE, column.isSelectable()); } // if table is already updatable, then columns are implicitly updatable. if (!column.isUpdatable() && column.getParent() instanceof Table && ((Table) column.getParent()).supportsUpdate()) { addOption(options, UPDATABLE, column.isUpdatable()); } if (column.isCurrency()) { addOption(options, CURRENCY, column.isCurrency()); } // only record if not default if (!column.isCaseSensitive() && column.getDatatype().isCaseSensitive()) { addOption(options, CASE_SENSITIVE, column.isCaseSensitive()); } if (!column.isSigned() && column.getDatatype().isSigned()) { addOption(options, SIGNED, column.isSigned()); } if (column.isFixedLength()) { addOption(options, FIXED_LENGTH, column.isFixedLength()); } // length and octet length should be same. so this should be never be true. // TODO - this is not quite valid since we are dealing with length representing chars in // UTF-16, then there should be twice the bytes if (column.getCharOctetLength() != 0 && column.getLength() != column.getCharOctetLength()) { addOption(options, CHAR_OCTET_LENGTH, column.getCharOctetLength()); } // by default the search type is default data type search, so avoid it. if (column.getSearchType() != null && (!column.getSearchType().equals(column.getDatatype().getSearchType()) || column.isSearchTypeSet())) { addOption(options, SEARCHABLE, column.getSearchType().name()); } if (column.getMinimumValue() != null) { addOption(options, MIN_VALUE, column.getMinimumValue()); } if (column.getMaximumValue() != null) { addOption(options, MAX_VALUE, column.getMaximumValue()); } if (column.getNullValues() != -1) { addOption(options, NULL_VALUE_COUNT, column.getNullValues()); } if (column.getDistinctValues() != -1) { addOption(options, DISTINCT_VALUES, column.getDistinctValues()); } } if (baseColumn.getNativeType() != null) { addOption(options, NATIVE_TYPE, baseColumn.getNativeType()); } buildOptions(baseColumn, options); }
private void appendColumn(BaseColumn column, boolean includeName, boolean includeType) { if (includeName) { append(SQLStringVisitor.escapeSinglePart(column.getName())); } if (includeType) { Datatype datatype = column.getDatatype(); String runtimeTypeName = column.getRuntimeType(); if (datatype != null) { runtimeTypeName = datatype.getRuntimeTypeName(); } if (includeName) { append(SPACE); } append(runtimeTypeName); if (LENGTH_DATATYPES.contains(runtimeTypeName)) { if (column.getLength() != 0 && (datatype == null || column.getLength() != datatype.getLength())) { append(LPAREN).append(column.getLength()).append(RPAREN); } } else if (PRECISION_DATATYPES.contains(runtimeTypeName) && !column.isDefaultPrecisionScale()) { append(LPAREN).append(column.getPrecision()); if (column.getScale() != 0) { append(COMMA).append(column.getScale()); } append(RPAREN); } if (datatype != null) { for (int dims = column.getArrayDimensions(); dims > 0; dims--) { append(Tokens.LSBRACE).append(Tokens.RSBRACE); } } if (column.getNullType() == NullType.No_Nulls) { append(SPACE).append(NOT_NULL); } } }