/** * @param structuralType * @param annotationGrp * @param navProperty */ private void addAnnotationsToStructuralTypeNavProperties(CsdlStructuralType structuralType, CsdlAnnotations annotationGrp, CsdlNavigationProperty navProperty) { for (CsdlAnnotation annotation : annotationGrp.getAnnotations()) { if (!compareAnnotations(structuralType.getNavigationProperty( navProperty.getName()).getAnnotations(), annotation)) { structuralType.getNavigationProperty(navProperty.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); }
/** Check if annotations are added on navigation properties of a structural type * @param structuralType * @param typeName * @param isNavPropAnnotationsCleared * @param annotationGrp */ private void checkAnnotationsOnStructuralNavProperties(CsdlStructuralType structuralType, FullQualifiedName typeName, boolean isNavPropAnnotationsCleared, CsdlAnnotations annotationGrp) { List<CsdlNavigationProperty> navProperties = structuralType.getNavigationProperties(); for (CsdlNavigationProperty navProperty : navProperties) { if (!isNavPropAnnotationsCleared) { structuralType.getNavigationProperty(navProperty.getName()).getAnnotations().clear(); } if (annotationGrp.getTarget().equalsIgnoreCase(typeName + "/" + navProperty.getName())) { addAnnotationsToStructuralTypeNavProperties(structuralType, annotationGrp, navProperty); } } }