Search in sources :

Example 1 with PrimitiveType

use of org.whole.lang.java.model.PrimitiveType in project whole by wholeplatform.

the class Helpers method toPojoType.

public static Type toPojoType(IEntity javaType, IEntity packageName) {
    PojoEntityFactory pef = PojoEntityFactory.instance;
    switch(javaType.wGetEntityDescriptor().getOrdinal()) {
        case JavaEntityDescriptorEnum.SimpleType_ord:
        case JavaEntityDescriptorEnum.QualifiedType_ord:
            String javaTypeName = DataTypeUtils.getAsPersistenceString(javaType);
            String packageNameString = packageName.wStringValue();
            String typeName = (javaTypeName.indexOf('.') == -1 ? (StringUtils.isAmbiguous(javaTypeName) ? "java.lang" : packageNameString) + "." : "") + javaTypeName;
            if (StringUtils.isString(typeName))
                return pef.createPrimitiveType(PrimitiveTypeEnum.String);
            else if ("java.util.Set".equals(typeName))
                return pef.createCollectionType(pef.createCollectionInterface(CollectionInterfaceEnum.Set), pef.createReferenceType("java.lang.Object"));
            else if ("java.util.List".equals(typeName))
                return pef.createCollectionType(pef.createCollectionInterface(CollectionInterfaceEnum.List), pef.createReferenceType("java.lang.Object"));
            else if ("java.util.Map".equals(typeName))
                return pef.createMapType(pef.createReferenceType("java.lang.Object"), pef.createReferenceType("java.lang.Object"));
            else
                return pef.createReferenceType(typeName);
        case JavaEntityDescriptorEnum.PrimitiveType_ord:
            return (Type) DataTypeUtils.convertCloneIfParented(JavaEntityFactory.instance.createPrimitiveType(((PrimitiveType) javaType).getValue()), PojoEntityDescriptorEnum.PrimitiveType);
        case JavaEntityDescriptorEnum.ArrayType_ord:
            ArrayType arrayType = (ArrayType) javaType;
            return pef.createArrayType(toPojoType(arrayType.getComponentType(), packageName));
        case JavaEntityDescriptorEnum.ParameterizedType_ord:
            ParameterizedType parameterizedType = (ParameterizedType) javaType;
            Types typeArguments = parameterizedType.getTypeArguments();
            Type pojoType = toPojoType(parameterizedType.getType(), packageName);
            if (Matcher.matchImpl(PojoEntityDescriptorEnum.CollectionType, pojoType) && typeArguments.wSize() == 1)
                ((CollectionType) pojoType).setElementType(toPojoType(typeArguments.wGet(0), packageName));
            else if (Matcher.matchImpl(PojoEntityDescriptorEnum.MapType, pojoType) && typeArguments.wSize() == 2) {
                ((MapType) pojoType).setKeyType(toPojoType(typeArguments.wGet(0), packageName));
                ((MapType) pojoType).setValueType(toPojoType(typeArguments.wGet(1), packageName));
            }
            return pojoType;
        default:
            throw new IllegalStateException("cannot convert java type to pojo type: " + javaType);
    }
}
Also used : PojoEntityFactory(org.whole.lang.pojo.factories.PojoEntityFactory) ArrayType(org.whole.lang.java.model.ArrayType) ParameterizedType(org.whole.lang.java.model.ParameterizedType) Types(org.whole.lang.java.model.Types) MapType(org.whole.lang.pojo.model.MapType) Type(org.whole.lang.pojo.model.Type) ParameterizedType(org.whole.lang.java.model.ParameterizedType) CollectionType(org.whole.lang.pojo.model.CollectionType) ArrayType(org.whole.lang.java.model.ArrayType) PrimitiveType(org.whole.lang.java.model.PrimitiveType)

Aggregations

ArrayType (org.whole.lang.java.model.ArrayType)1 ParameterizedType (org.whole.lang.java.model.ParameterizedType)1 PrimitiveType (org.whole.lang.java.model.PrimitiveType)1 Types (org.whole.lang.java.model.Types)1 PojoEntityFactory (org.whole.lang.pojo.factories.PojoEntityFactory)1 CollectionType (org.whole.lang.pojo.model.CollectionType)1 MapType (org.whole.lang.pojo.model.MapType)1 Type (org.whole.lang.pojo.model.Type)1