private void createComplexTypes() { // ----------------------------- PropertyRef -------------------------- List<EdmProperty.Builder> props = new ArrayList<EdmProperty.Builder>(); EdmProperty.Builder ep = EdmProperty.newBuilder(Edm.PropertyRef.Name).setType(EdmSimpleType.STRING); props.add(ep); EdmComplexType.Builder propertyRef = EdmComplexType.newBuilder().setNamespace(Edm.namespace).setName( XmlFormatParser.EDM2008_9_PROPERTYREF.getLocalPart()).addProperties(props); ctypes.add(propertyRef); // ----------------------------- EntityKey -------------------------- props = new ArrayList<EdmProperty.Builder>(); ep = EdmProperty.newBuilder(Edm.EntityKey.Keys).setType(propertyRef).setCollectionKind(CollectionKind.List); props.add(ep); entityKeyType = EdmComplexType.newBuilder().setNamespace(Edm.namespace).setName(Edm.EntityKey.name()).addProperties(props); ctypes.add(entityKeyType); // ----------------------------- Documentation -------------------------- props = new ArrayList<EdmProperty.Builder>(); ep = EdmProperty.newBuilder(Edm.Documentation.Summary).setType(EdmSimpleType.STRING).setNullable(true); props.add(ep); ep = EdmProperty.newBuilder(Edm.Documentation.LongDescription).setType(EdmSimpleType.STRING).setNullable(true); props.add(ep); documentationType = EdmComplexType.newBuilder().setNamespace(Edm.namespace).setName(Edm.Documentation.name()).addProperties(props); ctypes.add(documentationType); }
EdmProperty.Builder property = EdmProperty.newBuilder(propertyName) .setType(propertyType) .setNullable(jdbcColumn.isNullable); entityType.addProperties(property); propertyMapping.put(property, jdbcColumn);
private void createComplexTypes() { // ----------------------------- PropertyRef -------------------------- List<EdmProperty.Builder> props = new ArrayList<EdmProperty.Builder>(); EdmProperty.Builder ep = EdmProperty.newBuilder(Edm.PropertyRef.Name).setType(EdmSimpleType.STRING); props.add(ep); EdmComplexType.Builder propertyRef = EdmComplexType.newBuilder().setNamespace(Edm.namespace).setName( XmlFormatParser.EDM2008_9_PROPERTYREF.getLocalPart()).addProperties(props); ctypes.add(propertyRef); // ----------------------------- EntityKey -------------------------- props = new ArrayList<EdmProperty.Builder>(); ep = EdmProperty.newBuilder(Edm.EntityKey.Keys).setType(propertyRef).setCollectionKind(CollectionKind.List); props.add(ep); entityKeyType = EdmComplexType.newBuilder().setNamespace(Edm.namespace).setName(Edm.EntityKey.name()).addProperties(props); ctypes.add(entityKeyType); // ----------------------------- Documentation -------------------------- props = new ArrayList<EdmProperty.Builder>(); ep = EdmProperty.newBuilder(Edm.Documentation.Summary).setType(EdmSimpleType.STRING).setNullable(true); props.add(ep); ep = EdmProperty.newBuilder(Edm.Documentation.LongDescription).setType(EdmSimpleType.STRING).setNullable(true); props.add(ep); documentationType = EdmComplexType.newBuilder().setNamespace(Edm.namespace).setName(Edm.Documentation.name()).addProperties(props); ctypes.add(documentationType); }
ep = EdmProperty.newBuilder(Edm.Schema.Alias).setType(EdmSimpleType.STRING).setNullable(true); props.add(ep); ep = EdmProperty.newBuilder(Edm.StructuralType.BaseType).setType(EdmSimpleType.STRING).setNullable(true); props.add(ep); ep = EdmProperty.newBuilder(Edm.StructuralType.Abstract).setType(EdmSimpleType.BOOLEAN).setNullable(true); props.add(ep); ep = EdmProperty.newBuilder(Edm.EntityType.Key).setType(this.entityKeyType).setNullable(true); props.add(ep); ep = EdmProperty.newBuilder(Edm.EntityType.Documentation).setType(this.documentationType).setNullable(true); props.add(ep); ep = EdmProperty.newBuilder(Edm.Property.Nullable).setType(EdmSimpleType.BOOLEAN).setNullable(true); props.add(ep); ep = EdmProperty.newBuilder(Edm.Property.DefaultValue).setType(EdmSimpleType.STRING).setNullable(true); props.add(ep); ep = EdmProperty.newBuilder(Edm.Property.MaxLength).setType(EdmSimpleType.INT32).setNullable(true); props.add(ep); ep = EdmProperty.newBuilder(Edm.Property.FixedLength).setType(EdmSimpleType.BOOLEAN).setNullable(true); props.add(ep); ep = EdmProperty.newBuilder(Edm.Property.Precision).setType(EdmSimpleType.INT16).setNullable(true); props.add(ep);
ep = EdmProperty.newBuilder(Edm.Schema.Alias).setType(EdmSimpleType.STRING).setNullable(true); props.add(ep); ep = EdmProperty.newBuilder(Edm.StructuralType.BaseType).setType(EdmSimpleType.STRING).setNullable(true); props.add(ep); ep = EdmProperty.newBuilder(Edm.StructuralType.Abstract).setType(EdmSimpleType.BOOLEAN).setNullable(true); props.add(ep); ep = EdmProperty.newBuilder(Edm.EntityType.Key).setType(this.entityKeyType).setNullable(true); props.add(ep); ep = EdmProperty.newBuilder(Edm.EntityType.Documentation).setType(this.documentationType).setNullable(true); props.add(ep); ep = EdmProperty.newBuilder(Edm.Property.Nullable).setType(EdmSimpleType.BOOLEAN).setNullable(true); props.add(ep); ep = EdmProperty.newBuilder(Edm.Property.DefaultValue).setType(EdmSimpleType.STRING).setNullable(true); props.add(ep); ep = EdmProperty.newBuilder(Edm.Property.MaxLength).setType(EdmSimpleType.INT32).setNullable(true); props.add(ep); ep = EdmProperty.newBuilder(Edm.Property.FixedLength).setType(EdmSimpleType.BOOLEAN).setNullable(true); props.add(ep); ep = EdmProperty.newBuilder(Edm.Property.Precision).setType(EdmSimpleType.INT16).setNullable(true); props.add(ep);
.setNullable(isPartOfPrimaryKey(table, c.getName())?false:c.getNullType() == NullType.Nullable); if (c.getRuntimeType().equals(DataTypeManager.DefaultDataTypes.STRING)) { property.setFixedLength(c.isFixedLength()) .setNullable(isPartOfPrimaryKey(table, c.getName())?false:c.getNullType() == NullType.Nullable); if (c.getRuntimeType().equals(DataTypeManager.DefaultDataTypes.STRING)) { property.setFixedLength(c.isFixedLength())
return EdmProperty.newBuilder(propertyName) .setType(EdmType.newDeferredBuilder(propertyType, dataServices)) .setNullable("true".equalsIgnoreCase(propertyNullable)) .setMaxLength(maxLength == null ? null : maxLength.equals("Max") ? Integer.MAX_VALUE : Integer.parseInt(maxLength)) .setUnicode(unicode == null ? null : "true".equalsIgnoreCase(unicode))
return EdmProperty.newBuilder(propertyName) .setType(EdmType.newDeferredBuilder(propertyType, dataServices)) .setNullable("true".equalsIgnoreCase(propertyNullable)) .setMaxLength(maxLength == null ? null : maxLength.equals("Max") ? Integer.MAX_VALUE : Integer.parseInt(maxLength)) .setUnicode(unicode == null ? null : "true".equalsIgnoreCase(unicode))
EdmProperty.Builder property = EdmProperty.newBuilder(c.getName()) .setType(ODataTypeManager.odataType(c.getRuntimeType())) .setNullable(c.getNullType() == NullType.Nullable); if (c.getRuntimeType().equals(DataTypeManager.DefaultDataTypes.STRING)) { property.setFixedLength(c.isFixedLength())
.setNullable(!keySet.contains(propName)); .setNullable(true) .setCollectionKind(EdmProperty.CollectionKind.Collection) .setType(typeBuilder);
protected EdmProperty.Builder toEdmProperty(String modelNamespace, SingularAttribute<?, ?> sa) { String name = sa.getName(); EdmType type; if (sa.getPersistentAttributeType() == PersistentAttributeType.EMBEDDED) { String simpleName = sa.getJavaType().getSimpleName(); // this will map to an edm complex. If anyone ever implements this you // should not create an EdmComplexType. Instead, you should maintain // a cache of EdmComplexType.Builders and re-use instances with the same // namespace.name. (multiple Entity classes may have properties of this // type and we don't wan't lots of instances of EdmComplex type floating // around that are the same conceptual type) type = EdmComplexType.newBuilder().setNamespace(modelNamespace).setName(simpleName).build(); } else if (sa.getBindableJavaType().isEnum()) { // TODO assume string mapping for now, @Enumerated info not avail in metamodel? type = EdmSimpleType.STRING; } else { type = toEdmType(sa); } boolean nullable = sa.isOptional(); Integer maxLength = null; if (sa.getJavaMember() instanceof AnnotatedElement) { Column col = ((AnnotatedElement) sa.getJavaMember()).getAnnotation(Column.class); if (col != null) { if (Enumerable.<EdmType> create(EdmSimpleType.BINARY, EdmSimpleType.STRING).contains(type)) maxLength = col.length(); nullable &= col.nullable(); } } return EdmProperty.newBuilder(name).setType(type).setNullable(nullable).setMaxLength(maxLength); }
static EdmEntitySet removeModelName(EdmEntitySet src) { EdmEntityType srcType = src.getType(); String schemaName = srcType.getName().substring(0, srcType.getName().indexOf('.')); String name = srcType.getName().substring(srcType.getName().indexOf('.')+1); EdmEntityType.Builder targetType = EdmEntityType .newBuilder().setName(name) .setNamespace(schemaName); targetType.addKeys(srcType.getKeys()); Enumerable<EdmProperty> properties = srcType.getProperties(); for (EdmProperty srcProperty:properties.toList()) { EdmProperty.Builder tgtProperty = EdmProperty.newBuilder(srcProperty.getName()) .setType(srcProperty.getType()) .setNullable(srcProperty.isNullable()) .setFixedLength(srcProperty.getFixedLength()) .setMaxLength(srcProperty.getMaxLength()) .setUnicode(true); targetType.addProperties(tgtProperty); } EdmEntitySet.Builder target = EdmEntitySet.newBuilder() .setName(src.getName()) .setEntityType(targetType); return target.build(); } }