protected EdmProperty.Builder toEdmProperty(String modelNamespace, SingularAttribute<?, ?> sa) { EdmProperty.Builder p = super.toEdmProperty(modelNamespace, sa); Integer maxLength = null; Map<String, Object> eclipseLinkProps = EclipseLink.getPropertyInfo(sa, p.getType()); if (Enumerable.<EdmType> create(EdmSimpleType.STRING, EdmSimpleType.BINARY).contains(p.getType()) && eclipseLinkProps.containsKey("MaxLength")) maxLength = (Integer) eclipseLinkProps.get("MaxLength"); return p.setMaxLength(maxLength); }
.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)) .setFixedLength(fixedLength == null ? null : "true".equalsIgnoreCase(fixedLength))
.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)) .setFixedLength(fixedLength == null ? null : "true".equalsIgnoreCase(fixedLength))
if (c.getRuntimeType().equals(DataTypeManager.DefaultDataTypes.STRING)) { property.setFixedLength(c.isFixedLength()) .setMaxLength(c.getLength()) .setUnicode(true); if (c.getRuntimeType().equals(DataTypeManager.DefaultDataTypes.STRING)) { property.setFixedLength(c.isFixedLength()) .setMaxLength(c.getLength()) .setUnicode(true);
if (c.getRuntimeType().equals(DataTypeManager.DefaultDataTypes.STRING)) { property.setFixedLength(c.isFixedLength()) .setMaxLength(c.getLength()) .setUnicode(true);
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(); } }