@Override public List<EdmNavigationPropertyBinding> getNavigationPropertyBindings() { if (navigationPropertyBindings == null) { List<CsdlNavigationPropertyBinding> providerBindings = target.getNavigationPropertyBindings(); final List<EdmNavigationPropertyBinding> navigationPropertyBindingsLocal = new ArrayList<EdmNavigationPropertyBinding>(); if (providerBindings != null) { for (CsdlNavigationPropertyBinding binding : providerBindings) { navigationPropertyBindingsLocal.add(new EdmNavigationPropertyBindingImpl(binding.getPath(), binding.getTarget())); } navigationPropertyBindings = Collections.unmodifiableList(navigationPropertyBindingsLocal); } } return navigationPropertyBindings; }
@Override public CsdlNavigationPropertyBinding setPath(final String path) { super.setPath(path); return this; }
@Override public CsdlNavigationPropertyBinding setTarget(final String target) { super.setTarget(target); return this; }
private List<CsdlNavigationPropertyBinding> determinePropertyBinding() throws ODataJPAModelException { final List<CsdlNavigationPropertyBinding> navPropBindingList = new ArrayList<CsdlNavigationPropertyBinding>(); final List<JPAAssociationPath> naviPropertyList = entityType.getAssociationPathList(); if (naviPropertyList != null && !naviPropertyList.isEmpty()) { // http://docs.oasis-open.org/odata/odata/v4.0/errata02/os/complete/part3-csdl/odata-v4.0-errata02-os-part3-csdl-complete.html#_Toc406398035 for (final JPAAssociationPath naviPropertyPath : naviPropertyList) { final CsdlNavigationPropertyBinding navPropBinding = new CsdlNavigationPropertyBinding(); navPropBinding.setPath(naviPropertyPath.getAlias()); // TODO Check is FQN is better here final JPAAssociationAttribute naviProperty = naviPropertyPath.getLeaf(); navPropBinding.setTarget(nameBuilder.buildEntitySetName(naviProperty.getTargetEntity().getExternalName())); navPropBindingList.add(navPropBinding); } } return navPropBindingList; }
private CsdlNavigationPropertyBinding getNavigationPropertyBinding(CsdlBindingTarget entitySet, String name) { List<CsdlNavigationPropertyBinding> bindings = entitySet.getNavigationPropertyBindings(); for (CsdlNavigationPropertyBinding binding:bindings) { String path = binding.getPath(); int index = path.lastIndexOf('/'); if (index != -1) { path = path.substring(index+1); } if (path.equals(name)) { return binding; } } return null; }
CsdlNavigationPropertyBinding navPropBinding = new CsdlNavigationPropertyBinding(); List<CsdlNavigationPropertyBinding> navPropBindingList = new ArrayList<>(); if (oneToManyRelationList.get(entitySetName) != null) { for (String navigation : oneToManyRelationList.get(entitySetName)) { navPropBinding.setTarget(navigation); navPropBinding.setPath(navigation); navPropBindingList.add(navPropBinding); for (String navigation : manyToOneRelationList.get(entitySetName)) { navPropBinding.setTarget(navigation); navPropBinding.setPath(navigation); navPropBindingList.add(navPropBinding);
private static CsdlNavigationPropertyBinding buildReverseNavigationBinding(Table table, ForeignKey fk, SchemaResolver resolver) { CsdlNavigationPropertyBinding navigationBinding = new CsdlNavigationPropertyBinding(); navigationBinding.setPath(table.getName()+"_"+fk.getName()); if (!table.getParent().equals(fk.getReferenceKey().getParent().getParent())) { ODataSchemaInfo schema = resolver.getSchemaInfo(fk.getReferenceKey().getParent().getParent().getName()); if (schema == null) { return null; } navigationBinding.setTarget(table.getFullName()); } else { navigationBinding.setTarget(table.getName()); } return navigationBinding; }
@Override public List<EdmNavigationPropertyBinding> getNavigationPropertyBindings() { if (navigationPropertyBindings == null) { List<CsdlNavigationPropertyBinding> providerBindings = target.getNavigationPropertyBindings(); final List<EdmNavigationPropertyBinding> navigationPropertyBindingsLocal = new ArrayList<EdmNavigationPropertyBinding>(); if (providerBindings != null) { for (CsdlNavigationPropertyBinding binding : providerBindings) { navigationPropertyBindingsLocal.add(new EdmNavigationPropertyBindingImpl(binding.getPath(), binding.getTarget())); } navigationPropertyBindings = Collections.unmodifiableList(navigationPropertyBindingsLocal); } } return navigationPropertyBindings; }
@Override public CsdlNavigationPropertyBinding setTarget(final String target) { super.setTarget(target); return this; }
@Override public CsdlNavigationPropertyBinding setPath(final String path) { super.setPath(path); return this; }
private static CsdlNavigationPropertyBinding buildNavigationBinding(ForeignKey fk, SchemaResolver resolver) { CsdlNavigationPropertyBinding navigationBinding = new CsdlNavigationPropertyBinding(); navigationBinding.setPath(fk.getName()); if (!fk.getParent().getParent().equals(fk.getReferenceKey().getParent().getParent())) { ODataSchemaInfo schema = resolver.getSchemaInfo(fk.getReferenceKey().getParent().getParent().getName()); if (schema == null) { return null; } navigationBinding.setTarget(fk.getReferenceKey().getParent().getFullName()); } else { navigationBinding.setTarget(fk.getReferenceKey().getParent().getName()); } return navigationBinding; }
for (int i = 0; i < csdlNavigationPropBindings.size(); i++) { CsdlNavigationPropertyBinding csdlNavigationPropBinding = csdlNavigationPropBindings.get(i); String fullNavBindPath = csdlNavigationPropBinding.getPath(); String navpropbindPath = fullNavBindPath; if (navpropbindPath.contains("/")) { navpropbindPath = spltdArray[spltdArray.length - 1]; navigation.setPath(navpropbindPath); String navpropbindTarget = csdlNavigationPropBinding.getTarget();
if (!navigationPropertyBindings.isEmpty()) { for (CsdlNavigationPropertyBinding navigationPropertyBinding : navigationPropertyBindings) { String navBindingPath = navigationPropertyBinding.getPath(); String navBindingTarget = navigationPropertyBinding.getTarget(); CsdlEntityType sourceEntityType = null; if (!(csdlEntityTypesMap.containsKey(new FullQualifiedName(entitySet.getType())))) {
if (!navigationPropertyBindings.isEmpty()) { for (CsdlNavigationPropertyBinding navigationPropertyBinding : navigationPropertyBindings) { String navBindingPath = navigationPropertyBinding.getPath(); String navBindingTarget = navigationPropertyBinding.getTarget(); CsdlEntityType sourceEntityType = null; if (!(csdlEntityTypesMap.containsKey(new FullQualifiedName(entitySet.getType())))) {