final EdmNavigationProperty navigationProperty = (EdmNavigationProperty) property; fromEntitySet = fromEntitySet.getRelatedEntitySet(navigationProperty); NavigationPropertySegmentImpl propertySegment = new NavigationPropertySegmentImpl(); propertySegment.setNavigationProperty(navigationProperty); propertySegment.setTargetEntitySet(fromEntitySet); expandNavigationProperties.add(propertySegment); } else {
final EdmNavigationProperty navigationProperty = (EdmNavigationProperty) property; fromEntitySet = fromEntitySet.getRelatedEntitySet(navigationProperty); NavigationPropertySegmentImpl propertySegment = new NavigationPropertySegmentImpl(); propertySegment.setNavigationProperty(navigationProperty); propertySegment.setTargetEntitySet(fromEntitySet); expandNavigationProperties.add(propertySegment); } else {
final EdmNavigationProperty navigationProperty = (EdmNavigationProperty) property; fromEntitySet = fromEntitySet.getRelatedEntitySet(navigationProperty); NavigationPropertySegmentImpl propertySegment = new NavigationPropertySegmentImpl(); propertySegment.setNavigationProperty(navigationProperty); propertySegment.setTargetEntitySet(fromEntitySet); expandNavigationProperties.add(propertySegment); } else {
private static void constructTreeExpand(EdmEntitySet rootEntitySet, String serviceName, Map<String,List<String>> compositionTree, ArrayList<NavigationPropertySegment> navigationPropertySegments, List<ArrayList<NavigationPropertySegment>> expandOption) throws EdmException { if(rootEntitySet != null && rootEntitySet.getEntityType() != null && rootEntitySet.getEntityType().getNavigationPropertyNames()!=null && !rootEntitySet.getEntityType().getNavigationPropertyNames().isEmpty()) { for(String navName:rootEntitySet.getEntityType().getNavigationPropertyNames()) { EdmNavigationProperty expandNp = (EdmNavigationProperty)rootEntitySet.getEntityType().getProperty(navName); if(compositionTree.get(rootEntitySet.getEntityType().getName()).contains(expandNp.getType().getName())) { String associatedEntityName = EntityDataSourceProvider.getAssociatedEntityName(serviceName, rootEntitySet.getEntityType().getName(), navName); EdmEntitySet edmEntitySet = rootEntitySet.getEntityContainer().getEntitySet(associatedEntityName); NavigationPropertySegmentImpl navSegmentImpl = new NavigationPropertySegmentImpl(); navSegmentImpl.setNavigationProperty(expandNp); navSegmentImpl.setTargetEntitySet(edmEntitySet); navigationPropertySegments.add(navSegmentImpl); //At first level Books/?expand=pages one navigation property entry //At second level Books?$expand=pages, pages/words two navigation property entries //At third level Books?$expand=pages, pages/words, pages/words/letters three navigation property entries and so on... ArrayList<NavigationPropertySegment> innerNavigationSegments = new ArrayList<>(); innerNavigationSegments.addAll(navigationPropertySegments); expandOption.add(innerNavigationSegments); //Recursively set compositions constructTreeExpand(edmEntitySet, serviceName, compositionTree, navigationPropertySegments, expandOption); } } } }
private static void constructDraftTreeExpand(EdmEntitySet rootEntitySet, String serviceName, Map<String,List<String>> draftTree, ArrayList<NavigationPropertySegment> navigationPropertySegments, List<ArrayList<NavigationPropertySegment>> expandOption) throws EdmException { if(rootEntitySet != null && rootEntitySet.getEntityType() != null && rootEntitySet.getEntityType().getNavigationPropertyNames()!=null && !rootEntitySet.getEntityType().getNavigationPropertyNames().isEmpty()) { for(String navName:rootEntitySet.getEntityType().getNavigationPropertyNames()) { EdmNavigationProperty expandNp = (EdmNavigationProperty)rootEntitySet.getEntityType().getProperty(navName); if(draftTree.get(rootEntitySet.getEntityType().getName()).contains(expandNp.getType().getName())) { String associatedEntityName = EntityDataSourceProvider.getAssociatedEntityName(serviceName, rootEntitySet.getEntityType().getName(), navName); EdmEntitySet edmEntitySet = rootEntitySet.getEntityContainer().getEntitySet(associatedEntityName); NavigationPropertySegmentImpl navSegmentImpl = new NavigationPropertySegmentImpl(); navSegmentImpl.setNavigationProperty(expandNp); navSegmentImpl.setTargetEntitySet(edmEntitySet); navigationPropertySegments.add(navSegmentImpl); //At first level Books/?expand=pages one navigation property entry //At second level Books?$expand=pages, pages/words two navigation property entries //At third level Books?$expand=pages, pages/words, pages/words/letters three navigation property entries and so on... ArrayList<NavigationPropertySegment> innerNavigationSegments = new ArrayList<>(); innerNavigationSegments.addAll(navigationPropertySegments); expandOption.add(innerNavigationSegments); //Recursively set compositions constructDraftTreeExpand(edmEntitySet, serviceName, draftTree, navigationPropertySegments, expandOption); } } } }
final EdmEntitySet targetEntitySet = fromEntitySet.getRelatedEntitySet(navigationProperty); NavigationPropertySegmentImpl navigationPropertySegment = new NavigationPropertySegmentImpl(); navigationPropertySegment.setNavigationProperty(navigationProperty); navigationPropertySegment.setTargetEntitySet(targetEntitySet); selectItem.addNavigationPropertySegment(navigationPropertySegment);
final EdmEntitySet targetEntitySet = fromEntitySet.getRelatedEntitySet(navigationProperty); NavigationPropertySegmentImpl navigationPropertySegment = new NavigationPropertySegmentImpl(); navigationPropertySegment.setNavigationProperty(navigationProperty); navigationPropertySegment.setTargetEntitySet(targetEntitySet); selectItem.addNavigationPropertySegment(navigationPropertySegment);
final EdmEntitySet targetEntitySet = fromEntitySet.getRelatedEntitySet(navigationProperty); NavigationPropertySegmentImpl navigationPropertySegment = new NavigationPropertySegmentImpl(); navigationPropertySegment.setNavigationProperty(navigationProperty); navigationPropertySegment.setTargetEntitySet(targetEntitySet); selectItem.addNavigationPropertySegment(navigationPropertySegment);