Search in sources :

Example 6 with ClassType

use of com.mysema.codegen.model.ClassType in project querydsl by querydsl.

the class EntityTypeTest method uncapSimpleName_escaped.

@Test
public void uncapSimpleName_escaped() {
    ClassType typeModel = new ClassType(TypeCategory.ENTITY, Object.class);
    EntityType entityModel = new EntityType(typeModel);
    assertEquals("object", entityModel.getModifiedSimpleName());
    entityModel.addProperty(new Property(entityModel, "object", typeModel));
    assertEquals("object1", entityModel.getModifiedSimpleName());
}
Also used : ClassType(com.mysema.codegen.model.ClassType) Test(org.junit.Test)

Example 7 with ClassType

use of com.mysema.codegen.model.ClassType in project querydsl by querydsl.

the class MetaDataExporter method handleColumn.

private void handleColumn(EntityType classModel, String tableName, ResultSet columns) throws SQLException {
    String columnName = normalize(columns.getString("COLUMN_NAME"));
    String normalizedColumnName = namingStrategy.normalizeColumnName(columnName);
    int columnType = columns.getInt("DATA_TYPE");
    String typeName = columns.getString("TYPE_NAME");
    Number columnSize = (Number) columns.getObject("COLUMN_SIZE");
    Number columnDigits = (Number) columns.getObject("DECIMAL_DIGITS");
    int columnIndex = columns.getInt("ORDINAL_POSITION");
    int nullable = columns.getInt("NULLABLE");
    String propertyName = namingStrategy.getPropertyName(normalizedColumnName, classModel);
    Class<?> clazz = configuration.getJavaType(columnType, typeName, columnSize != null ? columnSize.intValue() : 0, columnDigits != null ? columnDigits.intValue() : 0, tableName, columnName);
    if (clazz == null) {
        clazz = Object.class;
    }
    TypeCategory fieldType = TypeCategory.get(clazz.getName());
    if (Number.class.isAssignableFrom(clazz)) {
        fieldType = TypeCategory.NUMERIC;
    } else if (Enum.class.isAssignableFrom(clazz)) {
        fieldType = TypeCategory.ENUM;
    }
    Type typeModel = new ClassType(fieldType, clazz);
    Property property = createProperty(classModel, normalizedColumnName, propertyName, typeModel);
    ColumnMetadata column = ColumnMetadata.named(normalizedColumnName).ofType(columnType).withIndex(columnIndex);
    if (nullable == DatabaseMetaData.columnNoNulls) {
        column = column.notNull();
    }
    if (columnSize != null) {
        column = column.withSize(columnSize.intValue());
    }
    if (columnDigits != null) {
        column = column.withDigits(columnDigits.intValue());
    }
    property.getData().put("COLUMN", column);
    if (columnAnnotations) {
        property.addAnnotation(new ColumnImpl(normalizedColumnName));
    }
    if (validationAnnotations) {
        if (nullable == DatabaseMetaData.columnNoNulls) {
            property.addAnnotation(new NotNullImpl());
        }
        int size = columns.getInt("COLUMN_SIZE");
        if (size > 0 && clazz.equals(String.class)) {
            property.addAnnotation(new SizeImpl(0, size));
        }
    }
    classModel.addProperty(property);
}
Also used : ClassType(com.mysema.codegen.model.ClassType) ClassType(com.mysema.codegen.model.ClassType) Type(com.mysema.codegen.model.Type) SimpleType(com.mysema.codegen.model.SimpleType) TypeCategory(com.mysema.codegen.model.TypeCategory)

Example 8 with ClassType

use of com.mysema.codegen.model.ClassType in project querydsl by querydsl.

the class SpatialSupport method registerTypes.

private static void registerTypes(TypeMappings typeMappings) {
    Map<Class<?>, Class<?>> mappings = Maps.newHashMap();
    mappings.put(GeometryCollection.class, GeometryCollectionPath.class);
    mappings.put(Geometry.class, GeometryPath.class);
    mappings.put(LinearRing.class, LinearRingPath.class);
    mappings.put(LineString.class, LineStringPath.class);
    mappings.put(MultiLineString.class, MultiLineStringPath.class);
    mappings.put(MultiPoint.class, MultiPointPath.class);
    mappings.put(MultiPolygon.class, MultiPolygonPath.class);
    mappings.put(Point.class, PointPath.class);
    mappings.put(Polygon.class, PolygonPath.class);
    mappings.put(PolyHedralSurface.class, PolyhedralSurfacePath.class);
    for (Map.Entry<Class<?>, Class<?>> entry : mappings.entrySet()) {
        Type type = new ClassType(entry.getKey());
        typeMappings.register(type, new ClassType(entry.getValue(), type));
    }
}
Also used : ClassType(com.mysema.codegen.model.ClassType) Type(com.mysema.codegen.model.Type) ClassType(com.mysema.codegen.model.ClassType) Map(java.util.Map)

Example 9 with ClassType

use of com.mysema.codegen.model.ClassType in project querydsl by querydsl.

the class EmbeddableSerializer method introClassHeader.

@Override
@SuppressWarnings(UNCHECKED)
protected void introClassHeader(CodeWriter writer, EntityType model) throws IOException {
    Type queryType = typeMappings.getPathType(model, model, true);
    TypeCategory category = model.getOriginalCategory();
    Class<? extends Path> pathType;
    if (model.getProperties().isEmpty()) {
        switch(category) {
            case COMPARABLE:
                pathType = ComparablePath.class;
                break;
            case ENUM:
                pathType = EnumPath.class;
                break;
            case DATE:
                pathType = DatePath.class;
                break;
            case DATETIME:
                pathType = DateTimePath.class;
                break;
            case TIME:
                pathType = TimePath.class;
                break;
            case NUMERIC:
                pathType = NumberPath.class;
                break;
            case STRING:
                pathType = StringPath.class;
                break;
            case BOOLEAN:
                pathType = BooleanPath.class;
                break;
            default:
                pathType = BeanPath.class;
        }
    } else {
        pathType = BeanPath.class;
    }
    for (Annotation annotation : model.getAnnotations()) {
        writer.annotation(annotation);
    }
    writer.line("@Generated(\"", getClass().getName(), "\")");
    if (category == TypeCategory.BOOLEAN || category == TypeCategory.STRING) {
        writer.beginClass(queryType, new ClassType(pathType));
    } else {
        writer.beginClass(queryType, new ClassType(category, pathType, model));
    }
    // TODO : generate proper serialVersionUID here
    writer.privateStaticFinal(Types.LONG_P, "serialVersionUID", model.hashCode() + "L");
}
Also used : ClassType(com.mysema.codegen.model.ClassType) Type(com.mysema.codegen.model.Type) TypeCategory(com.mysema.codegen.model.TypeCategory) ClassType(com.mysema.codegen.model.ClassType) Annotation(java.lang.annotation.Annotation)

Example 10 with ClassType

use of com.mysema.codegen.model.ClassType in project querydsl by querydsl.

the class TypeMappingsTest method isRegistered.

@Test
public void isRegistered() {
    TypeMappings typeMappings = new JavaTypeMappings();
    typeMappings.register(new ClassType(Double[].class), new ClassType(Point.class));
    assertTrue(typeMappings.isRegistered(new ClassType(Double[].class)));
}
Also used : ClassType(com.mysema.codegen.model.ClassType) Test(org.junit.Test)

Aggregations

ClassType (com.mysema.codegen.model.ClassType)10 Test (org.junit.Test)7 Type (com.mysema.codegen.model.Type)5 SimpleType (com.mysema.codegen.model.SimpleType)2 TypeCategory (com.mysema.codegen.model.TypeCategory)2 JavaWriter (com.mysema.codegen.JavaWriter)1 ScalaWriter (com.mysema.codegen.ScalaWriter)1 Parameter (com.mysema.codegen.model.Parameter)1 Expression (com.querydsl.core.types.Expression)1 StringWriter (java.io.StringWriter)1 Annotation (java.lang.annotation.Annotation)1 Method (java.lang.reflect.Method)1 ArrayList (java.util.ArrayList)1 Map (java.util.Map)1 Ignore (org.junit.Ignore)1