@Override void doReplace(Entity.Blueprint blueprint, Object attachment) { Set<FullNode> siblings = getSiblings(); FullNode myBlueprint = blueprints.remove(myPath); siblings.remove(myBlueprint); FullNode myNode = new FullNode(blueprint, attachment); siblings.add(myNode); children.remove(myPath); myPath = parentBuilder.myPath.modified().extend(Blueprint.getSegmentTypeOf(blueprint), blueprint.getId()) .get(); blueprints.put(myPath, myNode); }
@Override public List<ResourceType.Blueprint> getResourceTypes() { try (Stream<ResourceType.Blueprint> s = structure.getChildren(RelativePath.empty().get(), ResourceType.class)) { return s.collect(toList()); } }
@Override public List<MetricType.Blueprint> getMetricTypes() { try (Stream<MetricType.Blueprint> s = structure.getChildren(RelativePath.empty().get(), MetricType.class)) { return s.collect(toList()); } }
private InventoryStructure<B> mergeTree(InventoryStructure<B> currentTree, InventoryStructure<B> newTree, SyncConfiguration configuration) { if (configuration.isDeepSearch()) { return mergeDeepTree(currentTree, RelativePath.empty().get(), InventoryStructure.Offline.copy(newTree).asBuilder(), configuration.getSyncedTypes()).build(); } else { return mergeShallowTree(currentTree, RelativePath.empty().get(), InventoryStructure.Offline.copy(newTree).asBuilder(), configuration.getSyncedTypes()).build(); } }
@Override default boolean exists() { try { flatData(RelativePath.empty().get()); return true; } catch (EntityNotFoundException | RelationNotFoundException ignored) { return false; } }
@Override public List<Metric.Blueprint> getResourceMetrics(RelativePath rootPath, Resource.Blueprint parentResource) { RelativePath p = rootPath.modified().extend(SegmentType.r, parentResource.getId()).get() .slide(1, 0); try (Stream<Metric.Blueprint> s = structure.getChildren(p, Metric.class)) { return s.collect(toList()); } }
@Override public DataEntity.Blueprint<?> getParameterTypes(RelativePath rootResourceType, OperationType.Blueprint ot) { RelativePath.Extender p = rootResourceType.modified().extend(SegmentType.ot, ot.getId()).get() .slide(1, 0).modified(); return getData(p, parameterTypes); }
@SuppressWarnings({"unchecked", "rawtypes"}) default <E extends Entity, B extends Entity.Blueprint> Stream<FullNode> getChildNodes(RelativePath parent, Class<E> childType) { SegmentType childSegmentType = Inventory.types().byElement((Class)childType).getSegmentType(); return getChildren(parent, childType).map(b -> { RelativePath childPath = parent.modified().extend(childSegmentType, b.getId()).get(); return getNode(childPath); }).filter(Objects::nonNull); }
@Override default boolean anyExists() { return flatData(RelativePath.empty().get(), Pager.single()).hasNext(); } }
IntermediateHashContext progress(Entity.Blueprint bl) { SegmentType st = Blueprint.getSegmentTypeOf(bl); String id = bl.getId(); return new IntermediateHashContext(origin == null ? null : origin.modified().extend(st, id).get(), root.modified().extend(st, id).get()); } }
@Override public DataEntity.Blueprint<?> getReturnType(RelativePath rootResourceType, OperationType.Blueprint ot) { RelativePath.Extender p = rootResourceType.modified().extend(SegmentType.ot, ot.getId()).get() .slide(1, 0).modified(); return getData(p, returnType); } };
@Override public List<Resource.Blueprint> getFeedResources() { try (Stream<Resource.Blueprint> s = structure.getChildren(RelativePath.empty().get(), Resource.class)) { return s.collect(toList()); } }
@Override public List<Metric.Blueprint> getFeedMetrics() { try (Stream<Metric.Blueprint> s = structure.getChildren(RelativePath.empty().get(), Metric.class)) { return s.collect(toList()); } }
@Override public List<Resource.Blueprint> getResources(RelativePath rootPath, Resource.Blueprint parentResource) { RelativePath p = rootPath.modified().extend(SegmentType.r, parentResource.getId()).get() .slide(1, 0); try (Stream<Resource.Blueprint> s = structure.getChildren(p, Resource.class)) { return s.collect(toList()); } }
@Override public List<OperationType.Blueprint> getOperationTypes(ResourceType.Blueprint rt) { RelativePath p = rt.equals(structure.getRoot()) ? RelativePath.empty().get() : RelativePath.to().resourceType(rt.getId()).get(); try (Stream<OperationType.Blueprint> s = structure.getChildren(p, OperationType.class)) { return s.collect(toList()); } }
@Override public DataEntity.Blueprint<?> getConnectionConfiguration(RelativePath root, Resource.Blueprint parentResource) { RelativePath.Extender resourcePath = root.modified().extend(SegmentType.r, parentResource.getId()) .get().slide(1, 0).modified(); return getData(resourcePath, connectionConfiguration); }
@Override public DataEntity.Blueprint<?> getConfiguration(RelativePath rootPath, Resource.Blueprint parentResource) { RelativePath.Extender resourcePath = rootPath.modified() .extend(SegmentType.r, parentResource.getId()).get().slide(1, 0).modified(); return getData(resourcePath, configuration); }
private DataEntity.Blueprint<?> getData(RelativePath.Extender parentPath, DataRole dataRole) { Blueprint b = structure.get(parentPath.extend(SegmentType.d, dataRole.name()).get()); return b == null ? dummyDataBlueprint(dataRole) : (DataEntity.Blueprint<?>) b; }
@Override void doReplace(Entity.Blueprint blueprint, Object attachment) { Set<FullNode> siblings = getSiblings(); FullNode myBlueprint = blueprints.remove(myPath); siblings.remove(myBlueprint); FullNode myNode = new FullNode(blueprint, attachment); siblings.add(myNode); children.remove(myPath); myPath = parentBuilder.myPath.modified().extend(Blueprint.getSegmentTypeOf(blueprint), blueprint.getId()) .get(); blueprints.put(myPath, myNode); }
@SuppressWarnings({"unchecked", "rawtypes"}) default <E extends Entity<? extends B, ?>, B extends Entity.Blueprint> Stream<FullNode> getChildNodes(RelativePath parent, Class<E> childType) { SegmentType childSegmentType = Inventory.types().byElement((Class)childType).getSegmentType(); return getChildren(parent, childType).map(b -> { RelativePath childPath = parent.modified().extend(childSegmentType, b.getId()).get(); return getNode(childPath); }).filter(n -> n != null); }