public SqlStatement[] generateStatements(Database database) { boolean needsPreparedStatement = false; for (ColumnConfig column : columns) { if (column.getValueBlobFile() != null) { needsPreparedStatement = true; } if (column.getValueClobFile() != null) { needsPreparedStatement = true; } // if (column.getValueText() != null && database instanceof InformixDatabase) { // needsPreparedStatement = true; // } } if (needsPreparedStatement) { return new SqlStatement[] { new InsertExecutablePreparedStatement(database, catalogName, schemaName, tableName, columns) }; } InsertStatement statement = new InsertStatement(getCatalogName(), getSchemaName(), getTableName()); for (ColumnConfig column : columns) { if (database.supportsAutoIncrement() && column.isAutoIncrement() != null && column.isAutoIncrement()) { // skip auto increment columns as they will be generated by the database continue; } statement.addColumnValue(column.getName(), column.getValueObject()); } return new SqlStatement[] {statement}; }
private ColumnModel createColumnModel() { ArrayList<ColumnConfig> columns = new ArrayList<ColumnConfig>(); mainGridSelectionModel = new CheckBoxSelectionModel<ModelData>(); mainGridSelectionModel.setSelectionMode(Style.SelectionMode.MULTI); columns.add(mainGridSelectionModel.getColumn()); countryColumn = new ColumnConfig("country", HarvesterUI.ICONS.worldmap().getHTML(), 35); countryColumn.setAlignment(Style.HorizontalAlignment.CENTER); countryColumn.setRenderer( new GridCellRenderer<ModelData>() { public Object render( ModelData model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<ModelData> store, Grid<ModelData> grid) { if (model instanceof DataProviderUI) { if (model.get("country") != null && !model.get("country").equals("none")) { return "<img src=\"resources/images/countries/" + model.get("country") + ".png\" alt=\"" + model.get("countryName") + "\" title=\"" + model.get("countryName") + "\"/> "; } } return ""; } }); columns.add(countryColumn); ColumnConfig name = new ColumnConfig("name", "<CENTER>" + HarvesterUI.CONSTANTS.name() + "</CENTER>", 100); name.setRenderer(new TreeGridCellRenderer<ModelData>()); name.setWidth(260); columns.add(name); // Europeana column only if (HarvesterUI.getProjectType().equals("EUROPEANA")) { ColumnConfig nameCode = new ColumnConfig( "nameCode", "<CENTER>" + HarvesterUI.CONSTANTS.nameCodeHeader() + "</CENTER>", 100); columns.add(nameCode); } ColumnConfig dataSourceSet = new ColumnConfig( "dataSourceSet", "<CENTER>" + HarvesterUI.CONSTANTS.dataSetHeader() + "</CENTER>", 100); columns.add(dataSourceSet); ColumnConfig metadataFormat = new ColumnConfig( "metadataFormat", "<CENTER>" + HarvesterUI.CONSTANTS.oaiSchemasHeader() + "</CENTER>", 100); metadataFormat.setWidth(110); columns.add(metadataFormat); ColumnConfig ingest = new ColumnConfig( "ingest", "<CENTER>" + HarvesterUI.CONSTANTS.ingestTypeHeader() + "</CENTER>", 150); ingest.setRenderer(new IngestTypeRenderer()); columns.add(ingest); ColumnConfig lastIngest = new ColumnConfig( "lastIngest", "<CENTER>" + HarvesterUI.CONSTANTS.lastIngestHeader() + "</CENTER>", 100); lastIngest.setWidth(130); lastIngest.setAlignment(Style.HorizontalAlignment.CENTER); lastIngest.setRenderer(new LastIngestRenderer()); columns.add(lastIngest); ColumnConfig nextIngest = new ColumnConfig( "nextIngest", "<CENTER>" + HarvesterUI.CONSTANTS.nextIngestHeader() + "</CENTER>", 100); nextIngest.setRenderer(new NextIngestRenderer()); nextIngest.setAlignment(Style.HorizontalAlignment.CENTER); nextIngest.setWidth(130); columns.add(nextIngest); ColumnConfig records = new ColumnConfig( "records", "<CENTER>" + HarvesterUI.CONSTANTS.records() + "</CENTER>", 100); records.setAlignment(Style.HorizontalAlignment.RIGHT); records.setRenderer(new RecordsRenderer()); columns.add(records); ColumnConfig ingestStatus = new ColumnConfig( "status", "<CENTER>" + HarvesterUI.CONSTANTS.ingestStatusHeader() + "</CENTER>", 100); ingestStatus.setRenderer(new IngestStatusRenderer()); ingestStatus.setAlignment(Style.HorizontalAlignment.CENTER); columns.add(ingestStatus); return new ColumnModel(columns); }
@Override public void load(ParsedNode parsedNode, ResourceAccessor resourceAccessor) throws ParsedNodeException { ChangeMetaData metaData = ChangeFactory.getInstance().getChangeMetaData(this); this.setResourceAccessor(resourceAccessor); try { for (ChangeParameterMetaData param : metaData.getParameters().values()) { if (Collection.class.isAssignableFrom(param.getDataTypeClass())) { Class collectionType = (Class) param.getDataTypeClassParameters()[0]; if (param.getDataTypeClassParameters().length == 1) { if (ColumnConfig.class.isAssignableFrom(collectionType)) { List<ParsedNode> columnNodes = new ArrayList<ParsedNode>(parsedNode.getChildren(null, param.getParameterName())); columnNodes.addAll(parsedNode.getChildren(null, "column")); Object nodeValue = parsedNode.getValue(); if (nodeValue instanceof ParsedNode) { columnNodes.add((ParsedNode) nodeValue); } else if (nodeValue instanceof Collection) { for (Object nodeValueChild : ((Collection) nodeValue)) { if (nodeValueChild instanceof ParsedNode) { columnNodes.add((ParsedNode) nodeValueChild); } } } for (ParsedNode child : columnNodes) { if (child.getName().equals("column") || child.getName().equals("columns")) { List<ParsedNode> columnChildren = child.getChildren(null, "column"); if (columnChildren != null && columnChildren.size() > 0) { for (ParsedNode columnChild : columnChildren) { ColumnConfig columnConfig = (ColumnConfig) collectionType.newInstance(); columnConfig.load(columnChild, resourceAccessor); ((ChangeWithColumns) this).addColumn(columnConfig); } } else { ColumnConfig columnConfig = (ColumnConfig) collectionType.newInstance(); columnConfig.load(child, resourceAccessor); ((ChangeWithColumns) this).addColumn(columnConfig); } } } } else if (LiquibaseSerializable.class.isAssignableFrom(collectionType)) { List<ParsedNode> childNodes = new ArrayList<ParsedNode>(parsedNode.getChildren(null, param.getParameterName())); for (ParsedNode childNode : childNodes) { LiquibaseSerializable childObject = (LiquibaseSerializable) collectionType.newInstance(); childObject.load(childNode, resourceAccessor); ((Collection) param.getCurrentValue(this)).add(childObject); } } } } else if (LiquibaseSerializable.class.isAssignableFrom(param.getDataTypeClass())) { try { ParsedNode child = parsedNode.getChild(null, param.getParameterName()); if (child != null) { LiquibaseSerializable serializableChild = (LiquibaseSerializable) param.getDataTypeClass().newInstance(); serializableChild.load(child, resourceAccessor); param.setValue(this, serializableChild); } } catch (InstantiationException e) { throw new UnexpectedLiquibaseException(e); } catch (IllegalAccessException e) { throw new UnexpectedLiquibaseException(e); } } else { Object childValue = parsedNode.getChildValue(null, param.getParameterName(), param.getDataTypeClass()); if (childValue == null && param.getSerializationType() == SerializationType.DIRECT_VALUE) { childValue = parsedNode.getValue(); } param.setValue(this, childValue); } } } catch (InstantiationException e) { throw new UnexpectedLiquibaseException(e); } catch (IllegalAccessException e) { throw new UnexpectedLiquibaseException(e); } customLoadLogic(parsedNode, resourceAccessor); try { this.finishInitialization(); } catch (SetupException e) { throw new ParsedNodeException(e); } }
@Override protected String doRender( List<ColumnData> cs, List<ModelData> rows, int startRow, int colCount, boolean stripe) { if (rows.size() < 1) { return ""; } String groupField = getGroupField(); int colIndex = cm.findColumnIndex(groupField); enableGrouping = groupField != null; if (!enableGrouping || isUpdating) { return super.doRender(cs, rows, startRow, colCount, stripe); } String gstyle = "width:" + getTotalWidth() + "px;"; String gidPrefix = grid.getId(); ColumnConfig cfg = cm.getColumn(colIndex); String prefix = showGroupName ? cfg.getHeader() + ": " : ""; GroupColumnData curGroup = null; String gid = null; List<GroupColumnData> groups = new ArrayList<GroupColumnData>(); for (int j = 0; j < rows.size(); j++) { ModelData model = (ModelData) rows.get(j); int rowIndex = (j + startRow); // the value for the group field Object gvalue = model.get(groupField); // the rendered group value String g = getGroup(gvalue, model, rowIndex, colIndex, ds); if (curGroup == null || !curGroup.group.equals(g)) { gid = getGroupId(gidPrefix, groupField, g); boolean isCollapsed = state.get(gid) != null ? !state.get(gid) : startCollapsed; String gcls = isCollapsed ? "x-grid-group-collapsed" : ""; curGroup = new GroupColumnData(); curGroup.group = g; curGroup.field = groupField; curGroup.gvalue = gvalue; curGroup.text = prefix + g; curGroup.groupId = gid; curGroup.startRow = rowIndex; curGroup.style = gstyle; curGroup.css = gcls; curGroup.models.add(model); groups.add(curGroup); } else { curGroup.models.add(model); } // model.set("_groupId", gid); } for (GroupColumnData group : groups) { if (groupRenderer != null) { String g = groupRenderer.render(group); if (g == null || g.equals("")) { g = " "; } group.group = g; } } StringBuilder buf = new StringBuilder(); for (int i = 0, len = groups.size(); i < len; i++) { GroupColumnData g = groups.get(i); doGroupStart(buf, g, cs, colCount); buf.append(super.doRender(cs, g.models, g.startRow, colCount, stripe)); doGroupEnd(buf, g, cs, colCount); } return buf.toString(); }