@Override void build(XMLEventReader reader, StartElement element, CsdlEntityType entityType, String name) throws XMLStreamException { if ("Property".equals(name)) { entityType.getProperties().add(readProperty(reader, element)); } else if ("NavigationProperty".equals(name)) { entityType.getNavigationProperties().add(readNavigationProperty(reader, element)); } else if ("Key".equals(name)) { readKey(reader, element, entityType); } else if ("Annotation".equals(name)) { readAnnotations(reader, element, entityType); } } }.read(reader, null, entityType, "Property", "NavigationProperty", "Key", "Annotation");
@Override void build(XMLEventReader reader, StartElement element, CsdlEntityType entityType, String name) throws XMLStreamException { if ("Property".equals(name)) { entityType.getProperties().add(readProperty(reader, element)); } else if ("NavigationProperty".equals(name)) { entityType.getNavigationProperties().add(readNavigationProperty(reader, element)); } else if ("Key".equals(name)) { readKey(reader, element, entityType); } else if ("Annotation".equals(name)) { readAnnotations(reader, element, entityType); } } }.read(reader, null, entityType, "Property", "NavigationProperty", "Key", "Annotation");
public static CsdlComplexType getComplexTypeFromPath(String path, CsdlEntityType csdlentity, CDXEdmProvider edmxMetadataProvider) { FullQualifiedName fqn = null; CsdlComplexType complxType = null; List<CsdlProperty> props = csdlentity.getProperties(); for (int i = 0; i < props.size(); i++) { if (props.get(i).getName().equals(path)) { fqn = props.get(i).getTypeAsFQNObject(); try { complxType = edmxMetadataProvider.getComplexType(fqn); } catch (ODataException e) { PojoGenUtil.logDebug(log, "Could not fetch Complex Type from EdmxProvider called by getComplexTypeFromPath with entity"); } break; } } return complxType; }
for (CsdlProperty property : entityType.getProperties()) { if (!addProperty(mf, metadata, table, property)) { complexTypes.add(property); while (baseType != null) { CsdlEntityType baseEntityType = getEntityType(metadata, baseType); for (CsdlProperty property : baseEntityType.getProperties()) { if (!addProperty(mf, metadata, table, property)) { complexTypes.add(property);
/** adds annotations to entity type properties derived from singleton * @param singleton * @param isPropAnnotationsCleared * @param isNavPropAnnotationsCleared * @param entityType * @param annotationGrp */ private void addAnnotationsToPropertiesDerivedFromSingleton(CsdlSingleton singleton, boolean isPropAnnotationsCleared, boolean isNavPropAnnotationsCleared, CsdlEntityType entityType, CsdlAnnotations annotationGrp) { for (CsdlProperty propertyName : entityType.getProperties()) { if (!isPropAnnotationsCleared) { entityType.getProperty(propertyName.getName()).getAnnotations().clear(); } if (isPropertyComplex(propertyName)) { CsdlComplexType complexType = getComplexTypeFromProperty(propertyName); addAnnotationsToComplexTypeIncludedFromSingleton(singleton, annotationGrp, propertyName, isNavPropAnnotationsCleared, complexType); } } }
/** * @param bindingParameterTypeName * @param parameter * @param isBindingParameterCollection * @return * @throws ODataException */ private boolean isComplexPreviousTypeCompatibleToBindingParam( final FullQualifiedName bindingParameterTypeName, final CsdlParameter parameter, Boolean isBindingParameterCollection) throws ODataException { CsdlComplexType complexType = provider.getComplexType(bindingParameterTypeName); if(provider.getEntityType(parameter.getTypeFQN()) == null){ return false; } List<CsdlProperty> properties = provider.getEntityType(parameter.getTypeFQN()).getProperties(); for (CsdlProperty property : properties) { String paramPropertyTypeName = property.getTypeAsFQNObject().getFullQualifiedNameAsString(); if ((complexType != null && complexType.getBaseType() != null && complexType.getBaseTypeFQN().getFullQualifiedNameAsString().equals(paramPropertyTypeName)) || paramPropertyTypeName.equals(bindingParameterTypeName.getFullQualifiedNameAsString()) && isBindingParameterCollection.booleanValue() == property.isCollection()) { return true; } } return false; }
/** * @param bindingParameterTypeName * @param parameter * @param isBindingParameterCollection * @return * @throws ODataException */ private boolean isComplexPreviousTypeCompatibleToBindingParam( final FullQualifiedName bindingParameterTypeName, final CsdlParameter parameter, Boolean isBindingParameterCollection) throws ODataException { CsdlComplexType complexType = provider.getComplexType(bindingParameterTypeName); if(provider.getEntityType(parameter.getTypeFQN()) == null){ return false; } List<CsdlProperty> properties = provider.getEntityType(parameter.getTypeFQN()).getProperties(); for (CsdlProperty property : properties) { String paramPropertyTypeName = property.getTypeAsFQNObject().getFullQualifiedNameAsString(); if ((complexType != null && complexType.getBaseType() != null && complexType.getBaseTypeFQN().getFullQualifiedNameAsString().equals(paramPropertyTypeName)) || paramPropertyTypeName.equals(bindingParameterTypeName.getFullQualifiedNameAsString()) && isBindingParameterCollection.booleanValue() == property.isCollection()) { return true; } } return false; }
public static EntityTypeModel convertCsdlEntityToCommonModel(CsdlEntityType csdlEntity, String edmxNamespace, CommonJavaObjectForEdmx comModel, CDXEdmProvider edmxMetadataProvider, Map<String, String> namespaceToServMap) { EntityTypeModel entityType = new EntityTypeModel(); entityType.setName(csdlEntity.getName()); entityType.setNamespace(edmxNamespace); // resolve base types String baseTypeName = CsdlBaseTypeResolver.resolveBaseTypesForEntity(csdlEntity, edmxNamespace, comModel, edmxMetadataProvider, namespaceToServMap); entityType.setBaseTypeName(baseTypeName); entityType.setHasBaseType(baseTypeName.equals("") ? false : true); List<PropertyTypeModel> commonProperties = csdlToCommonPropertiesForEntity(entityType, csdlEntity.getProperties(), csdlEntity, comModel, edmxMetadataProvider, namespaceToServMap); entityType.setProperties(commonProperties); List<NavigationTypeModel> navigations = csdlToCommonNavigationsForET(entityType, csdlEntity, edmxNamespace, comModel, namespaceToServMap, edmxMetadataProvider); entityType.setNavigations(navigations); return entityType; }
FullQualifiedName entityContainerName, CsdlAnnotations annotationGrp, boolean isPropAnnotationsCleared, boolean isNavPropAnnotationsCleared, CsdlEntityType entityType) { for (CsdlProperty propertyName : entityType.getProperties()) { if (!isPropAnnotationsCleared) { entityType.getProperty(propertyName.getName()).getAnnotations().clear();
private void addProcedureTableReturn(MetadataFactory mf, XMLMetadata metadata, Procedure procedure, CsdlEntityType type, String namePrefix) throws TranslatorException { for (CsdlProperty property:type.getProperties()) { if (isSimple(property.getType()) || isEnum(metadata, property.getType())) { mf.addProcedureResultSetColumn( namePrefix == null? property.getName():namePrefix+"_"+property.getName(), ODataTypeManager.teiidType(property.getType(), property.isCollection()), procedure); } else if (isComplexType(metadata, property.getType())) { CsdlComplexType childType = getComplexType(metadata, property.getType()); addProcedureTableReturn(mf, metadata, procedure, childType, property.getName()); } else { throw new TranslatorException(ODataPlugin.Util.gs( ODataPlugin.Event.TEIID17023, procedure.getName())); } } }