/* * ************************************************************************ * EDM Complex Property Name - RULES * ************************************************************************ * The first character of JPA complex attribute name is converted to * uppercase. The modified JPA complex attribute name is assigned as EDM * complex property name. The unmodified JPA complex attribute name is * assigned as internal name. * ************************************************************************ * EDM Complex Property Name - RULES * ************************************************************************ */ public static void build( final JPAEdmComplexPropertyView complexView, final JPAEdmPropertyView propertyView) { ComplexProperty complexProperty = complexView.getEdmComplexProperty(); String jpaAttributeName = propertyView.getJPAAttribute().getName(); String jpaEntityTypeName = propertyView.getJPAEdmEntityTypeView().getJPAEntityType().getName(); JPAEdmMappingModelAccess mappingModelAccess = complexView.getJPAEdmMappingModelAccess(); String propertyName = null; if (mappingModelAccess != null && mappingModelAccess.isMappingModelExists()) { propertyName = mappingModelAccess.mapJPAAttribute(jpaEntityTypeName, jpaAttributeName); } if (propertyName == null) { propertyName = Character.toUpperCase(jpaAttributeName.charAt(0)) + jpaAttributeName.substring(1); } // change for navigation property issue JPAEdmMapping mapping = new JPAEdmMappingImpl(); ((Mapping) mapping).setInternalName(jpaAttributeName); mapping.setJPAType(propertyView.getJPAAttribute().getJavaType()); complexProperty.setMapping((Mapping) mapping); complexProperty.setName(propertyName); }
/* * ************************************************************************ * EDM EntitySet Name - RULES * ************************************************************************ * Entity Set Name = JPA Entity Type Name + Literal "s" * ************************************************************************ * EDM EntitySet Name - RULES * ************************************************************************ */ public static void build( final JPAEdmEntitySetView view, final JPAEdmEntityTypeView entityTypeView) { FullQualifiedName fQname = view.getEdmEntitySet().getEntityType(); JPAEdmMappingModelAccess mappingModelAccess = view.getJPAEdmMappingModelAccess(); String entitySetName = null; if (mappingModelAccess != null && mappingModelAccess.isMappingModelExists()) { Mapping mapping = entityTypeView.getEdmEntityType().getMapping(); if (mapping != null) { entitySetName = mappingModelAccess.mapJPAEntitySet(mapping.getInternalName()); } } if (entitySetName == null) { entitySetName = fQname.getName() + ENTITY_SET_SUFFIX; } view.getEdmEntitySet().setName(entitySetName); }
/* * ************************************************************************ * EDM Property Name - RULES * ************************************************************************ * OData Property Names are represented in Camel Case. The first character * of JPA Attribute Name is converted to an UpperCase Character and set as * OData Property Name. JPA Attribute Name is set as Internal Name for OData * Property. The Column name (annotated as @Column(name="x")) is set as * column name in the mapping object. * ************************************************************************ * EDM Property Name - RULES * ************************************************************************ */ public static void build(final JPAEdmPropertyView view, final boolean isComplexMode) { Attribute<?, ?> jpaAttribute = view.getJPAAttribute(); String jpaAttributeName = jpaAttribute.getName(); String propertyName = null; JPAEdmMappingModelAccess mappingModelAccess = view.getJPAEdmMappingModelAccess(); if (mappingModelAccess != null && mappingModelAccess.isMappingModelExists()) { if (isComplexMode) { propertyName = mappingModelAccess.mapJPAEmbeddableTypeAttribute( view.getJPAEdmComplexTypeView() .getJPAEmbeddableType() .getJavaType() .getSimpleName(), jpaAttributeName); } else { propertyName = mappingModelAccess.mapJPAAttribute( view.getJPAEdmEntityTypeView().getJPAEntityType().getName(), jpaAttributeName); } } if (propertyName == null) { propertyName = Character.toUpperCase(jpaAttributeName.charAt(0)) + jpaAttributeName.substring(1); } view.getEdmSimpleProperty().setName(propertyName); JPAEdmMapping mapping = new JPAEdmMappingImpl(); ((Mapping) mapping).setInternalName(jpaAttributeName); AnnotatedElement annotatedElement = (AnnotatedElement) jpaAttribute.getJavaMember(); if (annotatedElement != null) { Column column = annotatedElement.getAnnotation(Column.class); if (column != null) { mapping.setJPAColumnName(column.name()); } } else { ManagedType<?> managedType = jpaAttribute.getDeclaringType(); if (managedType != null) { Class<?> clazz = managedType.getJavaType(); try { Field field = clazz.getDeclaredField(jpaAttributeName); Column column = field.getAnnotation(Column.class); if (column != null) { mapping.setJPAColumnName(column.name()); } } catch (SecurityException e) { } catch (NoSuchFieldException e) { } } } view.getEdmSimpleProperty().setMapping((Mapping) mapping); }
public static void build( final JPAEdmComplexPropertyView complexView, final String parentComplexTypeName) { ComplexProperty complexProperty = complexView.getEdmComplexProperty(); JPAEdmMappingModelAccess mappingModelAccess = complexView.getJPAEdmMappingModelAccess(); JPAEdmPropertyView propertyView = ((JPAEdmPropertyView) complexView); String jpaAttributeName = propertyView.getJPAAttribute().getName(); String propertyName = null; if (mappingModelAccess != null && mappingModelAccess.isMappingModelExists()) { propertyName = mappingModelAccess.mapJPAEmbeddableTypeAttribute(parentComplexTypeName, jpaAttributeName); } if (propertyName == null) { propertyName = Character.toUpperCase(jpaAttributeName.charAt(0)) + jpaAttributeName.substring(1); } JPAEdmMapping mapping = new JPAEdmMappingImpl(); ((Mapping) mapping).setInternalName(jpaAttributeName); mapping.setJPAType(propertyView.getJPAAttribute().getJavaType()); complexProperty.setMapping((Mapping) mapping); complexProperty.setName(propertyName); }