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;
}
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;
}
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);
}
}
Aggregations