/** ReceivedMessageのPort用Edm 定義体. */ public class ReceivedMessagePort extends ReceivedMessage { private ReceivedMessagePort() { super(); } /** Schemaプロパティの定義体. */ public static final EdmProperty.Builder P_SCHEMA = EdmProperty.newBuilder("Schema") .setType(EdmSimpleType.BOOLEAN) .setNullable(true) .setDefaultValue("false"); /** EntityType Builder. */ public static final EdmEntityType.Builder EDM_TYPE_BUILDER = EdmEntityType.newBuilder() .setNamespace(Common.EDM_NS_CELL_CTL) .setName(EDM_TYPE_NAME) .addProperties( Enumerable.create( P_ID, P_SCHEMA, P_IN_REPLY_TO, P_FROM, P_MULTICAST_TO, P_TYPE, P_TITLE, P_BODY, P_PRIORITY, P_STATUS, P_REQUEST_RELATION, P_REQUEST_RELATION_TARGET, P_BOX_NAME, Common.P_PUBLISHED, Common.P_UPDATED) .toList()) .addKeys(P_ID.getName()); }
private static void buildEntityTypes( MetadataStore metadataStore, List<EdmSchema.Builder> edmSchemas) { for (Schema schema : metadataStore.getSchemaList()) { List<EdmEntitySet.Builder> entitySets = new ArrayList<EdmEntitySet.Builder>(); List<EdmEntityType.Builder> entityTypes = new ArrayList<EdmEntityType.Builder>(); for (Table table : schema.getTables().values()) { KeyRecord primaryKey = table.getPrimaryKey(); List<KeyRecord> uniques = table.getUniqueKeys(); if (primaryKey == null && uniques.isEmpty()) { LogManager.logDetail( LogConstants.CTX_ODATA, ODataPlugin.Util.gs(ODataPlugin.Event.TEIID16002, table.getFullName())); continue; } EdmEntityType.Builder entityType = EdmEntityType.newBuilder().setName(table.getName()).setNamespace(schema.getName()); // adding key if (primaryKey != null) { for (Column c : primaryKey.getColumns()) { entityType.addKeys(c.getName()); } } else { for (Column c : uniques.get(0).getColumns()) { entityType.addKeys(c.getName()); } } // adding properties for (Column c : table.getColumns()) { EdmProperty.Builder property = EdmProperty.newBuilder(c.getName()) .setType(ODataTypeManager.odataType(c.getDatatype().getRuntimeTypeName())) .setNullable(c.getNullType() == NullType.Nullable); if (c.getDatatype() .getRuntimeTypeName() .equals(DataTypeManager.DefaultDataTypes.STRING)) { property.setFixedLength(c.isFixedLength()).setMaxLength(c.getLength()).setUnicode(true); } entityType.addProperties(property); } // entity set one for one entity type EdmEntitySet.Builder entitySet = EdmEntitySet.newBuilder().setName(table.getName()).setEntityType(entityType); entityType.setNamespace(schema.getName()); entitySets.add(entitySet); // add enitity types for entity schema entityTypes.add(entityType); } // entity container is holder entity sets, association sets, function imports EdmEntityContainer.Builder entityContainer = EdmEntityContainer.newBuilder() .setName(schema.getName()) .setIsDefault(false) .addEntitySets(entitySets); // build entity schema EdmSchema.Builder modelSchema = EdmSchema.newBuilder() .setNamespace(schema.getName()) .addEntityTypes(entityTypes) .addEntityContainers(entityContainer); edmSchemas.add(modelSchema); } }
public static EdmEntitySet.Builder getBuilder(String namespace) { EdmEntityType.Builder modelBuilder = MdHierNodeWrapper.getEntityModel(namespace); EdmEntityType.Builder rowType = EdmEntityType.newBuilder().setNamespace(namespace).setName("Row"); EdmEntityType.Builder mdDataDimType = MdDataDimWrapper.getEntityModel(namespace); EdmEntityType.Builder mdHierarchyType = MdHierarchyWrapper.getEntityModel(namespace); EdmAssociationEnd.Builder mdHierNodeRowEnd = EdmAssociationEnd.newBuilder() .setRole("MdHierNode") .setType(modelBuilder) .setMultiplicity(EdmMultiplicity.ONE); EdmAssociationEnd.Builder rowMdHierNodeEnd = EdmAssociationEnd.newBuilder() .setRole("Rows") .setType(rowType) .setMultiplicity(EdmMultiplicity.MANY); EdmAssociation.Builder mdHierNodeRow = EdmAssociation.newBuilder() .setName("MdHierNode-Rows") .setEnds(mdHierNodeRowEnd, rowMdHierNodeEnd); EdmAssociationEnd.Builder mdHierNodeMdDataDimEnd = EdmAssociationEnd.newBuilder() .setRole("MdHierNode") .setType(modelBuilder) .setMultiplicity(EdmMultiplicity.ONE); EdmAssociationEnd.Builder mdDataDimMdHierNodeEnd = EdmAssociationEnd.newBuilder() .setRole("MdDataDim") .setType(mdDataDimType) .setMultiplicity(EdmMultiplicity.MANY); EdmAssociation.Builder mdHierNodeMdDataDim = EdmAssociation.newBuilder() .setName("MdHierNode-MdDataDim") .setEnds(mdHierNodeMdDataDimEnd, mdDataDimMdHierNodeEnd); EdmAssociationEnd.Builder mdHierarchyMdHierNodeEnd = EdmAssociationEnd.newBuilder() .setRole("MdHierarchy") .setType(mdHierarchyType) .setMultiplicity(EdmMultiplicity.ONE); EdmAssociationEnd.Builder mdHierNodeMdHierarchyEnd = EdmAssociationEnd.newBuilder() .setRole("MdHierNode") .setType(modelBuilder) .setMultiplicity(EdmMultiplicity.MANY); EdmAssociation.Builder mdHierNodeMdHierarchy = EdmAssociation.newBuilder() .setName("MdHierNode-MdHierarchy") .setEnds(mdHierNodeMdHierarchyEnd, mdHierarchyMdHierNodeEnd); EdmNavigationProperty.Builder nodeHierarchyNavigationProperty = EdmNavigationProperty.newBuilder("IdHierarchy") .setRelationship(mdHierNodeMdHierarchy) .setFromTo(mdHierNodeMdHierarchy.getEnd1(), mdHierNodeMdHierarchy.getEnd2()); modelBuilder.addNavigationProperties(nodeHierarchyNavigationProperty); EdmNavigationProperty.Builder nodeRowsNavigationProperty = EdmNavigationProperty.newBuilder("NodeRows") .setRelationship(mdHierNodeRow) .setFromTo(mdHierNodeRow.getEnd1(), mdHierNodeRow.getEnd2()); modelBuilder.addNavigationProperties(nodeRowsNavigationProperty); EdmNavigationProperty.Builder nodeDataNavigationProperty = EdmNavigationProperty.newBuilder("NodeData") .setRelationship(mdHierNodeMdDataDim) .setFromTo(mdHierNodeMdDataDim.getEnd1(), mdHierNodeMdDataDim.getEnd2()); modelBuilder.addNavigationProperties(nodeDataNavigationProperty); return EdmEntitySet.newBuilder().setName("MdHierNode").setEntityType(modelBuilder); }
private EdmEntityType.Builder parseEdmEntityType( XMLEventReader2 reader, String schemaNamespace, String schemaAlias, StartElement2 entityTypeElement) { String name = entityTypeElement.getAttributeByName("Name").getValue(); String hasStreamValue = getAttributeValueIfExists(entityTypeElement, new QName2(NS_METADATA, "HasStream")); Boolean hasStream = hasStreamValue == null ? null : hasStreamValue.equals("true"); String baseType = getAttributeValueIfExists(entityTypeElement, "BaseType"); String isAbstractS = getAttributeValueIfExists(entityTypeElement, "Abstract"); String openTypeValue = getAttributeValueIfExists(entityTypeElement, "OpenType"); Boolean openType = openTypeValue == null ? null : openTypeValue.equals("true"); List<String> keys = new ArrayList<String>(); List<EdmProperty.Builder> edmProperties = new ArrayList<EdmProperty.Builder>(); List<EdmNavigationProperty.Builder> edmNavigationProperties = new ArrayList<EdmNavigationProperty.Builder>(); List<EdmAnnotation<?>> annotElements = new ArrayList<EdmAnnotation<?>>(); while (reader.hasNext()) { XMLEvent2 event = reader.nextEvent(); if (event.isStartElement()) { if (isElement( event, EDM2006_PROPERTYREF, EDM2007_PROPERTYREF, EDM2008_1_PROPERTYREF, EDM2008_9_PROPERTYREF, EDM2009_8_PROPERTYREF, EDM2009_11_PROPERTYREF)) { keys.add(event.asStartElement().getAttributeByName("Name").getValue()); } else if (isElement( event, EDM2006_PROPERTY, EDM2007_PROPERTY, EDM2008_1_PROPERTY, EDM2008_9_PROPERTY, EDM2009_8_PROPERTY, EDM2009_11_PROPERTY)) { edmProperties.add(parseEdmProperty(reader, event)); } else if (isElement( event, EDM2006_NAVIGATIONPROPERTY, EDM2007_NAVIGATIONPROPERTY, EDM2008_1_NAVIGATIONPROPERTY, EDM2008_9_NAVIGATIONPROPERTY, EDM2009_8_NAVIGATIONPROPERTY, EDM2009_11_NAVIGATIONPROPERTY)) { edmNavigationProperties.add(parseEdmNavigationProperty(reader, event)); } else { EdmAnnotation<?> anElement = getAnnotationElements(event, reader); if (anElement != null) { annotElements.add(anElement); } } } if (isEndElement(event, entityTypeElement.getName())) { return EdmEntityType.newBuilder() .setNamespace(schemaNamespace) .setAlias(schemaAlias) .setName(name) .setHasStream(hasStream) .setOpenType(openType) .addKeys(keys) .addProperties(edmProperties) .addNavigationProperties(edmNavigationProperties) .setBaseType(baseType) .setIsAbstract(isAbstractS == null ? null : "true".equals(isAbstractS)) .setAnnotations(getAnnotations(entityTypeElement)) .setAnnotationElements(annotElements); } } throw new UnsupportedOperationException(); }