/** * @param sourceEntityType * @param targetEntityType * @param navProperty */ private void validateReferentialConstraint(CsdlEntityType sourceEntityType, CsdlEntityType targetEntityType, CsdlNavigationProperty navProperty) { if (!navProperty.getReferentialConstraints().isEmpty()) { String propertyName = navProperty.getReferentialConstraints().get(0).getProperty(); if (sourceEntityType.getProperty(propertyName) == null) { throw new RuntimeException("Property name " + propertyName + " not part of the source entity."); } String referencedPropertyName = navProperty.getReferentialConstraints().get(0).getReferencedProperty(); if (targetEntityType.getProperty(referencedPropertyName) == null) { throw new RuntimeException("Property name " + referencedPropertyName + " not part of the target entity."); } } }
/** * @param sourceEntityType * @param targetEntityType * @param navProperty */ private void validateReferentialConstraint(CsdlEntityType sourceEntityType, CsdlEntityType targetEntityType, CsdlNavigationProperty navProperty) { if (!navProperty.getReferentialConstraints().isEmpty()) { String propertyName = navProperty.getReferentialConstraints().get(0).getProperty(); if (sourceEntityType.getProperty(propertyName) == null) { throw new RuntimeException("Property name " + propertyName + " not part of the source entity."); } String referencedPropertyName = navProperty.getReferentialConstraints().get(0).getReferencedProperty(); if (targetEntityType.getProperty(referencedPropertyName) == null) { throw new RuntimeException("Property name " + referencedPropertyName + " not part of the target entity."); } } }
/** Adds annotations to Entity type Properties derived from entity set * @param annotationGrp * @param entityType * @param propertyName */ private void addAnnotationsToEntityTypeProperties(CsdlAnnotations annotationGrp, CsdlEntityType entityType, CsdlProperty propertyName) { for (CsdlAnnotation annotation : annotationGrp.getAnnotations()) { if (!compareAnnotations(entityType.getProperty( propertyName.getName()).getAnnotations(), annotation)) { entityType.getProperty(propertyName.getName()).getAnnotations().add(annotation); } } }
/** * fetch the actual navigation property from the remaning path * @param remainingPath * @param strNavProperty * @param sourceTypeHavingNavProp * @return CsdlNavigationProperty */ private CsdlNavigationProperty fetchNavigationProperty(String remainingPath, String strNavProperty, CsdlStructuralType sourceTypeHavingNavProp) { String[] paths = remainingPath.split("/"); for (String path : paths) { FullQualifiedName fqName = null; if (sourceTypeHavingNavProp instanceof CsdlComplexType) { fqName = ((CsdlComplexType)sourceTypeHavingNavProp).getProperty(path).getTypeAsFQNObject(); } else if (sourceTypeHavingNavProp instanceof CsdlEntityType) { fqName = ((CsdlEntityType)sourceTypeHavingNavProp).getProperty(path).getTypeAsFQNObject(); } if (fqName != null) { String namespace = aliasNamespaceMap.get(fqName.getNamespace()); fqName = namespace != null ? new FullQualifiedName(namespace, fqName.getName()) : fqName; } sourceTypeHavingNavProp = csdlEntityTypesMap.get(fqName) != null ? csdlEntityTypesMap.get(fqName) : csdlComplexTypesMap.get(fqName); } return sourceTypeHavingNavProp.getNavigationProperty(strNavProperty); }
/** * fetch the actual navigation property from the remaning path * @param remainingPath * @param strNavProperty * @param sourceTypeHavingNavProp * @return CsdlNavigationProperty */ private CsdlNavigationProperty fetchNavigationProperty(String remainingPath, String strNavProperty, CsdlStructuralType sourceTypeHavingNavProp) { String[] paths = remainingPath.split("/"); for (String path : paths) { FullQualifiedName fqName = null; if (sourceTypeHavingNavProp instanceof CsdlComplexType) { fqName = ((CsdlComplexType)sourceTypeHavingNavProp).getProperty(path).getTypeAsFQNObject(); } else if (sourceTypeHavingNavProp instanceof CsdlEntityType) { fqName = ((CsdlEntityType)sourceTypeHavingNavProp).getProperty(path).getTypeAsFQNObject(); } if (fqName != null) { String namespace = aliasNamespaceMap.get(fqName.getNamespace()); fqName = namespace != null ? new FullQualifiedName(namespace, fqName.getName()) : fqName; } sourceTypeHavingNavProp = csdlEntityTypesMap.get(fqName) != null ? csdlEntityTypesMap.get(fqName) : csdlComplexTypesMap.get(fqName); } return sourceTypeHavingNavProp.getNavigationProperty(strNavProperty); }
void addPrimaryKey(MetadataFactory mf, XMLMetadata metadata, Table table, CsdlEntityType entityType) throws TranslatorException { List<CsdlPropertyRef> keys = entityType.getKey(); List<String> pkNames = new ArrayList<String>(); for (CsdlPropertyRef ref : keys) { if (!addProperty(mf, metadata, table, entityType.getProperty(ref.getName()))) { throw new AssertionError("Complex type not allowed as part of primary key"); //$NON-NLS-1$ } pkNames.add(ref.getName()); if (ref.getAlias() != null) { throw new TranslatorException(ODataPlugin.Util.gs(ODataPlugin.Event.TEIID17018, table.getName(),ref.getName())); } } mf.addPrimaryKey("PK", pkNames, table); }
/** 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); } } }
for (CsdlProperty propertyName : entityType.getProperties()) { if (!isPropAnnotationsCleared) { entityType.getProperty(propertyName.getName()).getAnnotations().clear();