Search in sources :

Example 16 with Column

use of com.helger.genericode.v10.Column in project jaxdb by jaxdb.

the class Compiler method createConstraints.

private CreateStatement createConstraints(final Map<String, ColumnRef> columnNameToColumn, final $Table table) throws GeneratorExecutionException {
    final StringBuilder constraintsBuilder = new StringBuilder();
    if (table.getConstraints() != null) {
        final $Constraints constraints = table.getConstraints();
        // UNIQUE constraint
        final List<$Columns> uniques = constraints.getUnique();
        if (uniques != null) {
            final StringBuilder uniqueString = new StringBuilder();
            final StringBuilder uniqueBuilder = new StringBuilder();
            for (final $Columns unique : uniques) {
                final List<$Named> columns = unique.getColumn();
                final int[] columnIndexes = new int[columns.size()];
                for (int i = 0, len = columns.size(); i < len; ++i) {
                    if (i > 0)
                        uniqueBuilder.append(", ");
                    final String columnName = columns.get(i).getName$().text();
                    uniqueBuilder.append(q(columnName));
                    columnIndexes[i] = columnNameToColumn.get(columnName).index;
                }
                uniqueString.append(",\n  CONSTRAINT ").append(q(getConstraintName("uq", table, null, columnIndexes))).append(" UNIQUE (").append(uniqueBuilder).append(')');
                uniqueBuilder.setLength(0);
            }
            constraintsBuilder.append(uniqueString);
        }
        // CHECK constraint
        final List<$CheckReference> checks = constraints.getCheck();
        if (checks != null) {
            final StringBuilder checkBuilder = new StringBuilder();
            for (final $CheckReference check : checks) {
                final String checkRule = recurseCheckRule(check);
                final String checkClause = checkRule.startsWith("(") ? checkRule : "(" + checkRule + ")";
                checkBuilder.append(",\n  CONSTRAINT ").append(q(getConstraintName("ck", new StringBuilder(hash(table.getName$().text() + checkClause))))).append(" CHECK ").append(checkClause);
            }
            constraintsBuilder.append(checkBuilder);
        }
        // PRIMARY KEY constraint
        final String primaryKeyConstraint = blockPrimaryKey(table, constraints, columnNameToColumn);
        if (primaryKeyConstraint != null)
            constraintsBuilder.append(primaryKeyConstraint);
        // FOREIGN KEY constraints
        final List<$ForeignKeyComposite> foreignKeyComposites = constraints.getForeignKey();
        if (foreignKeyComposites != null) {
            for (final $ForeignKeyComposite foreignKeyComposite : foreignKeyComposites) {
                final List<$ForeignKeyComposite.Column> columns = foreignKeyComposite.getColumn();
                final int[] columnIndexes = new int[columns.size()];
                final String[] foreignKeyColumns = new String[columns.size()];
                final String[] foreignKeyReferences = new String[columns.size()];
                for (int i = 0, len = columns.size(); i < len; ++i) {
                    final $ForeignKeyComposite.Column column = columns.get(i);
                    final String columnName = column.getName$().text();
                    foreignKeyColumns[i] = q(columnName);
                    foreignKeyReferences[i] = q(column.getReferences$().text());
                    columnIndexes[i] = columnNameToColumn.get(columnName).index;
                }
                constraintsBuilder.append(",\n  ").append(foreignKey(table, foreignKeyComposite.getReferences$(), columnIndexes)).append(" (").append(ArrayUtil.toString(foreignKeyColumns, ", "));
                constraintsBuilder.append(") REFERENCES ").append(q(foreignKeyComposite.getReferences$().text()));
                constraintsBuilder.append(" (").append(ArrayUtil.toString(foreignKeyReferences, ", ")).append(')');
                appendOnDeleteOnUpdate(constraintsBuilder, foreignKeyComposite);
            }
        }
    }
    if (table.getColumn() != null) {
        final List<$Column> columns = table.getColumn();
        for (int c = 0, len = columns.size(); c < len; ++c) {
            final $Column column = columns.get(c);
            final $ForeignKeyUnary foreignKey = column.getForeignKey();
            if (foreignKey != null) {
                constraintsBuilder.append(",\n  ").append(foreignKey(table, foreignKey.getReferences$(), c)).append(" (").append(q(column.getName$().text()));
                constraintsBuilder.append(") REFERENCES ").append(q(foreignKey.getReferences$().text()));
                constraintsBuilder.append(" (").append(q(foreignKey.getColumn$().text())).append(')');
                appendOnDeleteOnUpdate(constraintsBuilder, foreignKey);
            }
        }
        // Parse the min & max constraints of numeric types
        for (int c = 0, len = columns.size(); c < len; ++c) {
            final $Column column = columns.get(c);
            String minCheck = null;
            String maxCheck = null;
            if (column instanceof $Integer) {
                if (column instanceof $Tinyint) {
                    final $Tinyint type = ($Tinyint) column;
                    minCheck = type.getMin$() != null ? String.valueOf(type.getMin$().text()) : null;
                    maxCheck = type.getMax$() != null ? String.valueOf(type.getMax$().text()) : null;
                } else if (column instanceof $Smallint) {
                    final $Smallint type = ($Smallint) column;
                    minCheck = type.getMin$() != null ? String.valueOf(type.getMin$().text()) : null;
                    maxCheck = type.getMax$() != null ? String.valueOf(type.getMax$().text()) : null;
                } else if (column instanceof $Int) {
                    final $Int type = ($Int) column;
                    minCheck = type.getMin$() != null ? String.valueOf(type.getMin$().text()) : null;
                    maxCheck = type.getMax$() != null ? String.valueOf(type.getMax$().text()) : null;
                } else if (column instanceof $Bigint) {
                    final $Bigint type = ($Bigint) column;
                    minCheck = type.getMin$() != null ? String.valueOf(type.getMin$().text()) : null;
                    maxCheck = type.getMax$() != null ? String.valueOf(type.getMax$().text()) : null;
                } else {
                    throw new UnsupportedOperationException("Unsupported type: " + column.getClass().getName());
                }
            } else if (column instanceof $Float) {
                final $Float type = ($Float) column;
                minCheck = type.getMin$() != null ? String.valueOf(type.getMin$().text()) : null;
                maxCheck = type.getMax$() != null ? String.valueOf(type.getMax$().text()) : null;
            } else if (column instanceof $Double) {
                final $Double type = ($Double) column;
                minCheck = type.getMin$() != null ? String.valueOf(type.getMin$().text()) : null;
                maxCheck = type.getMax$() != null ? String.valueOf(type.getMax$().text()) : null;
            } else if (column instanceof $Decimal) {
                final $Decimal type = ($Decimal) column;
                minCheck = type.getMin$() != null ? String.valueOf(type.getMin$().text()) : null;
                maxCheck = type.getMax$() != null ? String.valueOf(type.getMax$().text()) : null;
            }
            final String minCheckExp = minCheck == null ? null : q(column.getName$().text()) + " >= " + minCheck;
            final String maxCheckExp = maxCheck == null ? null : q(column.getName$().text()) + " <= " + maxCheck;
            if (minCheck != null) {
                if (maxCheck != null)
                    constraintsBuilder.append(",\n  ").append(check(table, c, Operator.GTE, minCheck, Operator.LTE, maxCheck)).append(" (").append(minCheckExp).append(" AND ").append(maxCheckExp).append(')');
                else
                    constraintsBuilder.append(",\n  ").append(check(table, c, Operator.GTE, minCheck, null, null)).append(" (").append(minCheckExp).append(')');
            } else if (maxCheck != null) {
                constraintsBuilder.append(",\n  ").append(check(table, c, Operator.LTE, maxCheck, null, null)).append(" (").append(maxCheckExp).append(')');
            }
        }
        // parse the <check/> element per type
        for (int c = 0, len = columns.size(); c < len; ++c) {
            final $Column column = columns.get(c);
            Operator operator = null;
            String condition = null;
            if (column instanceof $Char) {
                final $Char type = ($Char) column;
                if (type.getCheck() != null) {
                    operator = Operator.valueOf(type.getCheck().getOperator$().text());
                    condition = "'" + type.getCheck().getValue$().text() + "'";
                }
            } else if (column instanceof $Tinyint) {
                final $Tinyint type = ($Tinyint) column;
                if (type.getCheck() != null) {
                    operator = Operator.valueOf(type.getCheck().getOperator$().text());
                    condition = String.valueOf(type.getCheck().getValue$().text());
                }
            } else if (column instanceof $Smallint) {
                final $Smallint type = ($Smallint) column;
                if (type.getCheck() != null) {
                    operator = Operator.valueOf(type.getCheck().getOperator$().text());
                    condition = String.valueOf(type.getCheck().getValue$().text());
                }
            } else if (column instanceof $Int) {
                final $Int type = ($Int) column;
                if (type.getCheck() != null) {
                    operator = Operator.valueOf(type.getCheck().getOperator$().text());
                    condition = String.valueOf(type.getCheck().getValue$().text());
                }
            } else if (column instanceof $Bigint) {
                final $Bigint type = ($Bigint) column;
                if (type.getCheck() != null) {
                    operator = Operator.valueOf(type.getCheck().getOperator$().text());
                    condition = String.valueOf(type.getCheck().getValue$().text());
                }
            } else if (column instanceof $Float) {
                final $Float type = ($Float) column;
                if (type.getCheck() != null) {
                    operator = Operator.valueOf(type.getCheck().getOperator$().text());
                    condition = String.valueOf(type.getCheck().getValue$().text());
                }
            } else if (column instanceof $Double) {
                final $Double type = ($Double) column;
                if (type.getCheck() != null) {
                    operator = Operator.valueOf(type.getCheck().getOperator$().text());
                    condition = String.valueOf(type.getCheck().getValue$().text());
                }
            } else if (column instanceof $Decimal) {
                final $Decimal type = ($Decimal) column;
                if (type.getCheck() != null) {
                    operator = Operator.valueOf(type.getCheck().getOperator$().text());
                    condition = String.valueOf(type.getCheck().getValue$().text());
                }
            }
            if (operator != null) {
                if (condition != null)
                    constraintsBuilder.append(",\n  ").append(check(table, c, operator, condition, null, null)).append(" (").append(q(column.getName$().text())).append(' ').append(operator.symbol).append(' ').append(condition).append(')');
                else
                    throw new UnsupportedOperationException("Unsupported 'null' condition encountered on column '" + column.getName$().text());
            } else if (condition != null) {
                throw new UnsupportedOperationException("Unsupported 'null' operator encountered on column '" + column.getName$().text());
            }
        }
    }
    return constraintsBuilder.length() == 0 ? null : new CreateStatement(constraintsBuilder.toString());
}
Also used : org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Char(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Char) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Tinyint(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Tinyint) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Decimal(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Decimal) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$ForeignKeyUnary(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$ForeignKeyUnary) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$ForeignKeyComposite(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$ForeignKeyComposite) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Bigint(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Bigint) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$CheckReference(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$CheckReference) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Constraints(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Constraints) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Named(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Named) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Column(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Column) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Column(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Column) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Smallint(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Smallint) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Integer(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Integer) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Float(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Float) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Columns(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Columns) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Double(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Double) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Tinyint(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Tinyint) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Bigint(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Bigint) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Smallint(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Smallint) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Int(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Int)

Example 17 with Column

use of com.helger.genericode.v10.Column in project jaxdb by jaxdb.

the class Compiler method indexes.

List<CreateStatement> indexes(final $Table table, final Map<String, ColumnRef> columnNameToColumn) {
    final List<CreateStatement> statements = new ArrayList<>();
    if (table.getIndexes() != null) {
        for (final $Table.Indexes.Index index : table.getIndexes().getIndex()) {
            final List<$Named> columns = index.getColumn();
            final int[] columnIndexes = new int[columns.size()];
            for (int c = 0, len = columns.size(); c < len; ++c) {
                final $Named column = columns.get(c);
                columnIndexes[c] = columnNameToColumn.get(column.getName$().text()).index;
            }
            final CreateStatement createIndex = createIndex(index.getUnique$() != null && index.getUnique$().text(), getIndexName(table, index, columnIndexes), index.getType$(), table.getName$().text(), index.getColumn().toArray(new $Named[index.getColumn().size()]));
            if (createIndex != null)
                statements.add(createIndex);
        }
    }
    if (table.getColumn() != null) {
        final List<$Column> columns = table.getColumn();
        for (int c = 0, len = columns.size(); c < len; ++c) {
            final $Column column = columns.get(c);
            if (column.getIndex() != null) {
                final CreateStatement createIndex = createIndex(column.getIndex().getUnique$() != null && column.getIndex().getUnique$().text(), getIndexName(table, column.getIndex(), c), column.getIndex().getType$(), table.getName$().text(), column);
                if (createIndex != null)
                    statements.add(createIndex);
            }
        }
    }
    return statements;
}
Also used : org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Named(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Named) ArrayList(java.util.ArrayList) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Tinyint(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Tinyint) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Bigint(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Bigint) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Smallint(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Smallint) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Column(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Column)

Example 18 with Column

use of com.helger.genericode.v10.Column in project jaxdb by jaxdb.

the class DDLx method topologicalSort.

private static Schema topologicalSort(final Schema schema) {
    final List<$Table> tables = new ArrayList<>(schema.getTable());
    schema.getTable().clear();
    tables.sort(tableNameComparator);
    final RefDigraph<$Table, String> digraph = new RefDigraph<>(table -> table.getName$().text().toLowerCase());
    for (final $Table table : tables) {
        digraph.add(table);
        if (table.getColumn() != null)
            for (final $Column column : table.getColumn()) if (column.getForeignKey() != null)
                digraph.add(table, column.getForeignKey().getReferences$().text().toLowerCase());
        if (table.getConstraints() != null && table.getConstraints().getForeignKey() != null)
            for (final $ForeignKeyComposite foreignKey : table.getConstraints().getForeignKey()) digraph.add(table, foreignKey.getReferences$().text().toLowerCase());
    }
    if (digraph.hasCycle())
        throw new IllegalStateException("Cycle exists in relational model: " + CollectionUtil.toString(digraph.getCycle(), " -> "));
    final List<$Table> topologialOrder = digraph.getTopologicalOrder();
    final ListIterator<$Table> topological = topologialOrder.listIterator(digraph.size());
    while (topological.hasPrevious()) schema.getTable().add(topological.previous());
    return schema;
}
Also used : org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Table(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Table) RefDigraph(org.libj.util.RefDigraph) ArrayList(java.util.ArrayList) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$ForeignKeyComposite(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$ForeignKeyComposite) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Column(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Column)

Example 19 with Column

use of com.helger.genericode.v10.Column in project jaxdb by jaxdb.

the class DerbyDecompiler method makeColumn.

@Override
$Column makeColumn(final String columnName, final String typeName, final long size, final int decimalDigits, final String _default, final Boolean nullable, final Boolean autoIncrement) {
    final $Column column;
    if ("BIGINT".equals(typeName)) {
        final $Bigint type = newColumn($Bigint.class);
        // type.setPrecision$(new $Bigint.Precision$((byte)size));
        if (_default != null && !"GENERATED_BY_DEFAULT".equals(_default))
            type.setDefault$(new $Bigint.Default$(Long.valueOf(getDefault(_default))));
        if (autoIncrement != null && autoIncrement)
            type.setGenerateOnInsert$(new $Bigint.GenerateOnInsert$($Integer.GenerateOnInsert$.AUTO_5FINCREMENT));
        column = type;
    } else if ("CHAR () FOR BIT DATA".equals(typeName) || "VARCHAR () FOR BIT DATA".equals(typeName)) {
        final $Binary type = newColumn($Binary.class);
        if (typeName.startsWith("VARCHAR"))
            type.setVarying$(new $Binary.Varying$(true));
        type.setLength$(new $Binary.Length$(size));
        column = type;
    } else if ("BLOB".equals(typeName)) {
        final $Blob type = newColumn($Blob.class);
        type.setLength$(new $Blob.Length$(size));
        column = type;
    } else if ("BOOLEAN".equals(typeName)) {
        final $Boolean type = newColumn($Boolean.class);
        if (_default != null)
            type.setDefault$(new $Boolean.Default$(Boolean.valueOf(_default)));
        column = type;
    } else if ("VARCHAR".equals(typeName) || "CHAR".equals(typeName)) {
        final $Char type = newColumn($Char.class);
        if ("VARCHAR".equals(typeName))
            type.setVarying$(new $Char.Varying$(true));
        type.setLength$(new $Char.Length$(size));
        if (_default != null)
            type.setDefault$(new $Char.Default$(_default.substring(1, _default.length() - 1)));
        column = type;
    } else if ("CLOB".equals(typeName)) {
        final $Clob type = newColumn($Clob.class);
        type.setLength$(new $Clob.Length$(size));
        column = type;
    } else if ("DATE".equals(typeName)) {
        final $Date type = newColumn($Date.class);
        if (_default != null)
            type.setDefault$(new $Date.Default$(_default.substring(1, _default.length() - 1)));
        column = type;
    } else if ("TIMESTAMP".equals(typeName)) {
        final $Datetime type = newColumn($Datetime.class);
        // type.setPrecision$(new $Datetime.Precision$((byte)size));
        if (_default != null)
            type.setDefault$(new $Datetime.Default$(_default.substring(1, _default.length() - 1)));
        column = type;
    } else if ("DECIMAL".equals(typeName)) {
        final int precision = (int) size;
        final $Decimal type = newColumn($Decimal.class);
        type.setPrecision$(new $Decimal.Precision$(precision));
        type.setScale$(new $Decimal.Scale$(decimalDigits));
        if (_default != null)
            type.setDefault$(new $Decimal.Default$(new BigDecimal(_default)));
        column = type;
    } else if ("DOUBLE".equals(typeName)) {
        final $Double type = newColumn($Double.class);
        if (_default != null)
            type.setDefault$(new $Double.Default$(Double.valueOf(_default)));
        column = type;
    } else // }
    if ("FLOAT".equals(typeName)) {
        final $Float type = newColumn($Float.class);
        if (_default != null)
            type.setDefault$(new $Float.Default$(Float.valueOf(_default)));
        column = type;
    } else if ("INTEGER".equals(typeName)) {
        final $Int type = newColumn($Int.class);
        type.setPrecision$(new $Int.Precision$((byte) size));
        if (_default != null && !"GENERATED_BY_DEFAULT".equals(_default))
            type.setDefault$(new $Int.Default$(Integer.valueOf(getDefault(_default))));
        if (autoIncrement != null && autoIncrement)
            type.setGenerateOnInsert$(new $Int.GenerateOnInsert$($Integer.GenerateOnInsert$.AUTO_5FINCREMENT));
        column = type;
    } else if ("SMALLINT".equals(typeName)) {
        final $Smallint type = newColumn($Smallint.class);
        type.setPrecision$(new $Smallint.Precision$((byte) size));
        if (_default != null && !"GENERATED_BY_DEFAULT".equals(_default))
            type.setDefault$(new $Smallint.Default$(Short.valueOf(getDefault(_default))));
        if (autoIncrement != null && autoIncrement)
            type.setGenerateOnInsert$(new $Smallint.GenerateOnInsert$($Integer.GenerateOnInsert$.AUTO_5FINCREMENT));
        column = type;
    } else if ("TIME".equals(typeName)) {
        final $Time type = newColumn($Time.class);
        type.setPrecision$(new $Time.Precision$((byte) size));
        if (_default != null)
            type.setDefault$(new $Time.Default$(_default.substring(1, _default.length() - 1)));
        column = type;
    } else // else if ("TINYINT".equals(typeName)) {
    // final $Tinyint type = newColumn($Tinyint.class);
    // type.setPrecision$(new $Tinyint.Precision$((byte)size));
    // if (_default != null && !"GENERATED_BY_DEFAULT".equals(_default))
    // type.setDefault$(new $Tinyint.setDefault$(new BigInteger(getDefault(_default))));
    // 
    // if (autoIncrement != null && autoIncrement)
    // type.GenerateOnInsert$(new $Integer.GenerateOnInsert$($Integer.GenerateOnInsert$.AUTO_5FINCREMENT));
    // 
    // column = type;
    // }
    {
        throw new UnsupportedOperationException("Unsupported column type: " + typeName);
    }
    column.setName$(new $Column.Name$(columnName));
    if (nullable != null && !nullable)
        column.setNull$(new $Column.Null$(false));
    return column;
}
Also used : org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Char(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Char) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Decimal(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Decimal) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Bigint(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Bigint) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Boolean(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Boolean) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Clob(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Clob) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Datetime(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Datetime) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Column(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Column) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Smallint(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Smallint) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Float(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Float) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Date(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Date) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Double(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Double) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Smallint(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Smallint) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Bigint(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Bigint) BigDecimal(java.math.BigDecimal) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Time(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Time) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Int(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Int) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Blob(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Blob) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Binary(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Binary)

Example 20 with Column

use of com.helger.genericode.v10.Column in project jaxdb by jaxdb.

the class OracleCompiler method triggers.

@Override
List<CreateStatement> triggers(final $Table table) {
    final List<CreateStatement> statements = new ArrayList<>();
    if (table.getColumn() != null) {
        for (final $Column column : table.getColumn()) {
            if (column instanceof $Integer) {
                final $Integer type = ($Integer) column;
                if (Generator.isAuto(type)) {
                    final String sequenceName = getSequenceName(table, type);
                    final String columnName = q(column.getName$().text());
                    statements.add(0, new CreateStatement("CREATE TRIGGER " + q(getTriggerName(table, type)) + " BEFORE INSERT ON " + q(table.getName$().text()) + " FOR EACH ROW WHEN (new." + columnName + " IS NULL) BEGIN SELECT " + q(sequenceName) + ".NEXTVAL INTO " + ":new." + columnName + " FROM dual; END;"));
                }
            }
        }
    }
    statements.addAll(super.triggers(table));
    return statements;
}
Also used : org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Integer(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Integer) ArrayList(java.util.ArrayList) org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Column(org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Column)

Aggregations

org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Column (org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Column)21 ArrayList (java.util.ArrayList)17 HashMap (java.util.HashMap)11 Column (org.molgenis.emx2.Column)11 org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Bigint (org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Bigint)10 org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Smallint (org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Smallint)10 Column (com.google.bigtable.v2.Column)9 List (java.util.List)9 Family (com.google.bigtable.v2.Family)8 org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Tinyint (org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Tinyint)8 Test (org.junit.Test)8 org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Table (org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Table)7 MolgenisException (org.molgenis.emx2.MolgenisException)6 Map (java.util.Map)4 org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Enum (org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Enum)4 org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Integer (org.jaxdb.www.ddlx_0_5.xLygluGCXAA.$Integer)4 SqlColumnExecutor.validateColumn (org.molgenis.emx2.sql.SqlColumnExecutor.validateColumn)4 Cell (com.google.bigtable.v2.Cell)3 ResultSet (java.sql.ResultSet)3 ExecutionException (java.util.concurrent.ExecutionException)3