Search in sources :

Example 1 with Column

use of org.springframework.roo.addon.dbre.addon.model.Column in project spring-roo by spring-projects.

the class DbreDatabaseListenerImpl method getIdentifiers.

private List<Identifier> getIdentifiers(final Table table, final boolean usePrimaryKeys) {
    final List<Identifier> result = new ArrayList<Identifier>();
    // Add fields to the identifier class
    final Set<Column> columns = usePrimaryKeys ? table.getPrimaryKeys() : table.getColumns();
    for (final Column column : columns) {
        final String columnName = column.getName();
        JavaSymbolName fieldName;
        try {
            fieldName = new JavaSymbolName(DbreTypeUtils.suggestFieldName(columnName));
        } catch (final RuntimeException e) {
            throw new IllegalArgumentException("Failed to create field name for column '" + columnName + "' in table '" + table.getName() + "': " + e.getMessage());
        }
        final JavaType fieldType = column.getJavaType();
        final String columnDefinition = table.isIncludeNonPortableAttributes() ? column.getTypeName() : "";
        result.add(new Identifier(fieldName, fieldType, columnName, column.getColumnSize(), column.getScale(), columnDefinition));
    }
    return result;
}
Also used : JavaSymbolName(org.springframework.roo.model.JavaSymbolName) JdkJavaType(org.springframework.roo.model.JdkJavaType) JavaType(org.springframework.roo.model.JavaType) Identifier(org.springframework.roo.addon.jpa.addon.identifier.Identifier) PhysicalTypeIdentifier(org.springframework.roo.classpath.PhysicalTypeIdentifier) Column(org.springframework.roo.addon.dbre.addon.model.Column) ArrayList(java.util.ArrayList)

Example 2 with Column

use of org.springframework.roo.addon.dbre.addon.model.Column in project spring-roo by spring-projects.

the class DbreMetadata method getJoinColumnAnnotation.

private AnnotationMetadataBuilder getJoinColumnAnnotation(final Reference reference, final boolean referencedColumn, final JavaType fieldType, final Boolean nullable) {
    final Column localColumn = reference.getLocalColumn();
    Validate.notNull(localColumn, "Foreign-key reference local column '" + reference.getLocalColumnName() + "' must not be null");
    final AnnotationMetadataBuilder joinColumnBuilder = new AnnotationMetadataBuilder(JOIN_COLUMN);
    joinColumnBuilder.addStringAttribute(NAME, localColumn.getEscapedName());
    if (referencedColumn) {
        final Column foreignColumn = reference.getForeignColumn();
        Validate.notNull(foreignColumn, "Foreign-key reference foreign column '%s' must not be null", reference.getForeignColumnName());
        joinColumnBuilder.addStringAttribute("referencedColumnName", foreignColumn.getEscapedName());
    }
    if (nullable == null) {
        if (localColumn.isRequired()) {
            joinColumnBuilder.addBooleanAttribute("nullable", false);
        }
    } else {
        joinColumnBuilder.addBooleanAttribute("nullable", nullable);
    }
    if (fieldType != null) {
        if (isCompositeKeyColumn(localColumn) || localColumn.isPrimaryKey() || !reference.isInsertableOrUpdatable()) {
            joinColumnBuilder.addBooleanAttribute("insertable", false);
            joinColumnBuilder.addBooleanAttribute("updatable", false);
        }
    }
    return joinColumnBuilder;
}
Also used : Column(org.springframework.roo.addon.dbre.addon.model.Column) AnnotationMetadataBuilder(org.springframework.roo.classpath.details.annotations.AnnotationMetadataBuilder)

Example 3 with Column

use of org.springframework.roo.addon.dbre.addon.model.Column in project spring-roo by spring-projects.

the class DbreMetadata method addOtherFields.

private void addOtherFields(final Table table) {
    final Map<JavaSymbolName, FieldMetadataBuilder> uniqueFields = new LinkedHashMap<JavaSymbolName, FieldMetadataBuilder>();
    for (final Column column : table.getColumns()) {
        final String columnName = column.getName();
        JavaSymbolName fieldName = new JavaSymbolName(DbreTypeUtils.suggestFieldName(columnName));
        final boolean isIdField = isIdField(fieldName) || column.isPrimaryKey();
        final boolean isVersionField = isVersionField(fieldName) || (columnName.equals("version") && !database.isDisableVersionFields());
        final boolean isCompositeKeyField = isCompositeKeyField(fieldName);
        final boolean isForeignKey = table.findImportedKeyByLocalColumnName(columnName) != null;
        if (isIdField || isVersionField || isCompositeKeyField || isForeignKey) {
            continue;
        }
        final boolean hasEmbeddedIdField = isEmbeddedIdField(fieldName) && !isCompositeKeyField;
        if (hasEmbeddedIdField) {
            fieldName = governorTypeDetails.getUniqueFieldName(fieldName.getSymbolName());
        }
        final FieldMetadataBuilder fieldBuilder = getField(fieldName, column, table.getName(), table.isIncludeNonPortableAttributes());
        if (fieldBuilder.getFieldType().equals(DATE) && fieldName.getSymbolName().equals(CREATED)) {
            fieldBuilder.setFieldInitializer("new Date()");
        }
        uniqueFields.put(fieldName, fieldBuilder);
    }
    for (final FieldMetadataBuilder fieldBuilder : uniqueFields.values()) {
        addToBuilder(fieldBuilder);
    }
}
Also used : JavaSymbolName(org.springframework.roo.model.JavaSymbolName) Column(org.springframework.roo.addon.dbre.addon.model.Column) FieldMetadataBuilder(org.springframework.roo.classpath.details.FieldMetadataBuilder) LinkedHashMap(java.util.LinkedHashMap)

Aggregations

Column (org.springframework.roo.addon.dbre.addon.model.Column)3 JavaSymbolName (org.springframework.roo.model.JavaSymbolName)2 ArrayList (java.util.ArrayList)1 LinkedHashMap (java.util.LinkedHashMap)1 Identifier (org.springframework.roo.addon.jpa.addon.identifier.Identifier)1 PhysicalTypeIdentifier (org.springframework.roo.classpath.PhysicalTypeIdentifier)1 FieldMetadataBuilder (org.springframework.roo.classpath.details.FieldMetadataBuilder)1 AnnotationMetadataBuilder (org.springframework.roo.classpath.details.annotations.AnnotationMetadataBuilder)1 JavaType (org.springframework.roo.model.JavaType)1 JdkJavaType (org.springframework.roo.model.JdkJavaType)1