private void buildExpandGraph(HashSet<String> seen, List<ExpandNode> starExpand, EdmEntityType edmEntityType, int remainingLevels) { for (String name : edmEntityType.getNavigationPropertyNames()) { if (seen != null && seen.contains(name)) { continue; //explicit expand supersedes } EdmNavigationProperty property = edmEntityType.getNavigationProperty(name); ExpandNode en = new ExpandNode(); en.navigationProperty = property; starExpand.add(en); if (remainingLevels > 0) { buildExpandGraph(null, en.children, property.getType(), remainingLevels - 1); } } }
} else { navProperty = remainingPath.length() > 0 ? fetchNavigationProperty(remainingPath, strNavProperty, sourceEntityTypeHavingNavProp) : sourceEntityTypeHavingNavProp.getNavigationProperty(strNavProperty);
private void consumeExpandedNavigationProperties(final EdmEntityType edmEntityType, final ObjectNode node, final Entity entity, final ExpandTreeBuilder expandBuilder) throws DeserializerException { List<String> navigationPropertyNames = edmEntityType.getNavigationPropertyNames(); for (String navigationPropertyName : navigationPropertyNames) { // read expanded navigation property JsonNode jsonNode = node.get(navigationPropertyName); if (jsonNode != null) { EdmNavigationProperty edmNavigationProperty = edmEntityType.getNavigationProperty(navigationPropertyName); checkNotNullOrValidNull(jsonNode, edmNavigationProperty); Link link = createLink(expandBuilder, navigationPropertyName, jsonNode, edmNavigationProperty); entity.getNavigationLinks().add(link); node.remove(navigationPropertyName); } } }
} else { navProperty = remainingPath.length() > 0 ? fetchNavigationProperty(remainingPath, strNavProperty, sourceEntityTypeHavingNavProp) : sourceEntityTypeHavingNavProp.getNavigationProperty(strNavProperty);
private void consumeExpandedNavigationProperties(final EdmEntityType edmEntityType, final ObjectNode node, final Entity entity, final ExpandTreeBuilder expandBuilder) throws DeserializerException { List<String> navigationPropertyNames = edmEntityType.getNavigationPropertyNames(); for (String navigationPropertyName : navigationPropertyNames) { // read expanded navigation property JsonNode jsonNode = node.get(navigationPropertyName); if (jsonNode != null) { EdmNavigationProperty edmNavigationProperty = edmEntityType.getNavigationProperty(navigationPropertyName); checkNotNullOrValidNull(jsonNode, edmNavigationProperty); Link link = createLink(expandBuilder, navigationPropertyName, jsonNode, edmNavigationProperty); entity.getNavigationLinks().add(link); node.remove(navigationPropertyName); } } }
for (UriResourceNavigation nav:navigations) { String name = nav.getProperty().getName(); EdmNavigationProperty property = type.getNavigationProperty(name); if (property.containsTarget()) { containsTarget = true;
private static ExpandOptionImpl constructDraftTreeExpand(EdmEntityType rootEntityType,ExpandOptionImpl eO,Map<String,List<String>> draftTree) { if(eO==null) { eO=new ExpandOptionImpl(); } if(rootEntityType.getNavigationPropertyNames()!=null && !rootEntityType.getNavigationPropertyNames().isEmpty()) { for(String navName:rootEntityType.getNavigationPropertyNames()) { EdmNavigationProperty expandNp=rootEntityType.getNavigationProperty(navName); if(draftTree.get(rootEntityType.getName()).contains(expandNp.getType().getName())) { UriResourceNavigationPropertyImpl adminNaVPropImpl=new UriResourceNavigationPropertyImpl(expandNp); UriInfoImpl uriInfoForExpand = new UriInfoImpl().addResourcePart(adminNaVPropImpl); //Recursively set compositions ExpandOption innerExpandoption=constructDraftTreeExpand(expandNp.getType(),(ExpandOptionImpl) uriInfoForExpand.getExpandOption(),draftTree); if(innerExpandoption!=null) { uriInfoForExpand.setSystemQueryOption(innerExpandoption); ExpandItem eI = new ExpandItemImpl().setResourcePath(uriInfoForExpand).setSystemQueryOption(innerExpandoption); eO.addExpandItem(eI); } } } return eO; } return eO; }
for (UriResourceNavigation nav:navigations) { String name = nav.getProperty().getName(); EdmNavigationProperty property = type.getNavigationProperty(name); if (property.containsTarget()) { containsTarget = true;
private int insertDepth(EdmEntityType entityType, Entity entity) throws SQLException, TeiidException { int depth = 1; int childDepth = 0; for (String navigationName:entityType.getNavigationPropertyNames()) { EdmNavigationProperty navProperty = entityType.getNavigationProperty(navigationName); Link navLink = entity.getNavigationLink(navigationName); if (navLink != null && navLink.getInlineEntity() != null) { childDepth = Math.max(childDepth, insertDepth(navProperty.getType(), navLink.getInlineEntity())); } else if (navLink != null && navLink.getInlineEntitySet() != null && !navLink.getInlineEntitySet().getEntities().isEmpty()) { for (Entity inlineEntity:navLink.getInlineEntitySet().getEntities()) { childDepth = Math.max(childDepth, insertDepth(navProperty.getType(), inlineEntity)); } } } return depth + childDepth; }
private void links(final Linked linked, final EdmEntityType entityType, JsonGenerator json) throws IOException, SerializerException { for (final Link link : linked.getNavigationLinks()) { final String name = link.getTitle(); for (final Annotation annotation : link.getAnnotations()) { valuable(json, annotation, name + '@' + annotation.getTerm(), null, null); } final EdmEntityType targetType = entityType == null || name == null || entityType.getNavigationProperty(name) == null ? null : entityType .getNavigationProperty(name).getType(); if (link.getInlineEntity() != null) { json.writeFieldName(name); doSerialize(targetType, link.getInlineEntity(), null, null, json); } else if (link.getInlineEntitySet() != null) { json.writeArrayFieldStart(name); for (final Entity subEntry : link.getInlineEntitySet().getEntities()) { doSerialize(targetType, subEntry, null, null, json); } json.writeEndArray(); } } }
private UpdateResponse performDeepInsert(String rawURI, UriInfo uriInfo, EdmEntityType entityType, Entity entity, List<ExpandNode> expandNodes) throws SQLException, TeiidException { UpdateResponse response = performInsert(rawURI, uriInfo, entityType, entity); for (String navigationName:entityType.getNavigationPropertyNames()) { EdmNavigationProperty navProperty = entityType.getNavigationProperty(navigationName); Link navLink = entity.getNavigationLink(navigationName); if (navLink != null && navLink.getInlineEntity() != null) { ExpandNode node = new ExpandNode(); node.navigationProperty = navProperty; expandNodes.add(node); performDeepInsert(rawURI, uriInfo, navProperty.getType(), navLink.getInlineEntity(), node.children); } else if (navLink != null && navLink.getInlineEntitySet() != null && !navLink.getInlineEntitySet().getEntities().isEmpty()) { ExpandNode node = new ExpandNode(); node.navigationProperty = navProperty; expandNodes.add(node); for (Entity inlineEntity:navLink.getInlineEntitySet().getEntities()) { performDeepInsert(rawURI, uriInfo, navProperty.getType(), inlineEntity, node.children); } } } return response; }
private void links(final Linked linked, final EdmEntityType entityType, JsonGenerator json) throws IOException, SerializerException { for (final Link link : linked.getNavigationLinks()) { final String name = link.getTitle(); for (final Annotation annotation : link.getAnnotations()) { valuable(json, annotation, name + '@' + annotation.getTerm(), null, null); } final EdmEntityType targetType = entityType == null || name == null || entityType.getNavigationProperty(name) == null ? null : entityType .getNavigationProperty(name).getType(); if (link.getInlineEntity() != null) { json.writeFieldName(name); doSerialize(targetType, link.getInlineEntity(), null, null, json); } else if (link.getInlineEntitySet() != null) { json.writeArrayFieldStart(name); for (final Entity subEntry : link.getInlineEntitySet().getEntities()) { doSerialize(targetType, subEntry, null, null, json); } json.writeEndArray(); } } }
EdmNavigationProperty navProp=mainEntity.getNavigationProperty(navName); Map<String,List<String>> draftTree=CSNUtil.getDraftTree( EdmHelper.getServiceName(uriInfo.asUriInfoResource())); if(!navProp.isCollection() && draftTree.get(mainEntity.getName()).contains(navProp.getType().getName())) { //there for it is a 1:1 entity and its a Draft Node
EdmNavigationProperty navigationProperty = edmEntityType.getNavigationProperty(link.getTitle()); while (reader.hasNext() && !foundEndElement) { final XMLEvent event = reader.nextEvent();
EdmNavigationProperty navigationProperty = edmEntityType.getNavigationProperty(link.getTitle()); while (reader.hasNext() && !foundEndElement) { final XMLEvent event = reader.nextEvent();
String[] splitKey = key.split(ODATA_ANNOTATION_MARKER); String navigationPropertyName = splitKey[0]; EdmNavigationProperty edmNavigationProperty = edmEntityType.getNavigationProperty(navigationPropertyName); if (edmNavigationProperty == null) { throw new DeserializerException("Invalid navigationPropertyName: " + navigationPropertyName,
String[] splitKey = key.split(ODATA_ANNOTATION_MARKER); String navigationPropertyName = splitKey[0]; EdmNavigationProperty edmNavigationProperty = edmEntityType.getNavigationProperty(navigationPropertyName); if (edmNavigationProperty == null) { throw new DeserializerException("Invalid navigationPropertyName: " + navigationPropertyName,
String[] splitKey = key.split(ODATA_ANNOTATION_MARKER); String navigationPropertyName = splitKey[0]; EdmNavigationProperty edmNavigationProperty = edmEntityType.getNavigationProperty(navigationPropertyName); if (edmNavigationProperty == null) { throw new DeserializerException("Invalid navigationPropertyName: " + navigationPropertyName,
static String getTargetEntitySet(EdmBindingTarget root, LinkedList<UriResourceNavigation> navigations) { EdmEntityType type = root.getEntityType(); EdmBindingTarget targetEntitySet = root; String targetEntitySetName = root.getName(); String name = null; for (UriResourceNavigation nav:navigations) { name = nav.getProperty().getName(); EdmNavigationProperty property = type.getNavigationProperty(name); if (property.containsTarget()) { return root.getName(); } type = nav.getProperty().getType(); for(EdmNavigationPropertyBinding enb:targetEntitySet.getNavigationPropertyBindings()) { if (enb.getPath().equals(name)) { targetEntitySetName = enb.getTarget(); } else if (enb.getPath().endsWith("/"+name)) { targetEntitySetName = enb.getTarget(); } } } return targetEntitySetName; }
static String getTargetEntitySet(EdmBindingTarget root, LinkedList<UriResourceNavigation> navigations) { EdmEntityType type = root.getEntityType(); EdmBindingTarget targetEntitySet = root; String targetEntitySetName = root.getName(); String name = null; for (UriResourceNavigation nav:navigations) { name = nav.getProperty().getName(); EdmNavigationProperty property = type.getNavigationProperty(name); if (property.containsTarget()) { return root.getName(); } type = nav.getProperty().getType(); for(EdmNavigationPropertyBinding enb:targetEntitySet.getNavigationPropertyBindings()) { if (enb.getPath().equals(name)) { targetEntitySetName = enb.getTarget(); } else if (enb.getPath().endsWith("/"+name)) { targetEntitySetName = enb.getTarget(); } } } return targetEntitySetName; }