/** * @return incoming relation ship templates <em>pointing to node templates</em> */ public static List<TRelationshipTemplate> getIncomingRelationshipTemplates(TTopologyTemplate topologyTemplate, TNodeTemplate nodeTemplate) { Objects.requireNonNull(topologyTemplate); Objects.requireNonNull(nodeTemplate); List<TRelationshipTemplate> incomingRelationshipTemplates = topologyTemplate.getRelationshipTemplates() .stream() .filter(rt -> getTargetNodeTemplateOfRelationshipTemplate(topologyTemplate, rt).equals(nodeTemplate)) .collect(Collectors.toList()); return incomingRelationshipTemplates; }
/** * @return outgoing relation ship templates <em>pointing to node templates</em> */ public static List<TRelationshipTemplate> getOutgoingRelationshipTemplates(TTopologyTemplate topologyTemplate, TNodeTemplate nodeTemplate) { Objects.requireNonNull(topologyTemplate); Objects.requireNonNull(nodeTemplate); List<TRelationshipTemplate> outgoingRelationshipTemplates = topologyTemplate.getRelationshipTemplates() .stream() .filter(rt -> getSourceNodeTemplateOfRelationshipTemplate(topologyTemplate, rt).equals(nodeTemplate)) .collect(Collectors.toList()); return outgoingRelationshipTemplates; }
/** * Get the lowest node in a topology, this is the only node with any outgoing relation */ private void getLowestNode(TNodeTemplate baseNodeTemplate, List<TRelationshipTemplate> tRelationshipTemplateList) { List<TRelationshipTemplate> outgoing = new ArrayList<>(); List<TRelationshipTemplate> incoming = new ArrayList<>(); for (TRelationshipTemplate tRelationshipTemplate : tRelationshipTemplateList) { if (baseNodeTemplate.equals((tRelationshipTemplate.getSourceElement().getRef()))) { outgoing.add(tRelationshipTemplate); getLowestNode((TNodeTemplate) tRelationshipTemplate.getTargetElement().getRef(), tRelationshipTemplateList); break; } else { incoming.add(tRelationshipTemplate); } } if (outgoing.isEmpty()) { // lowestNode is set basisNodeTemplate = baseNodeTemplate; } } }
for (Map.Entry<PermutationHelper, TNodeTemplate> entry2 : successors.entrySet()) { if (entry.getKey().getReplacement().equals(entry2.getKey().getReplacement()) && entry.getValue().equals(entry2.getValue()) && !done.contains(entry2.getKey())) { hostTogether.add(entry2.getKey());
private void addMissingTargetLabelsRecursive(List<TNodeTemplate> topLevelHosts, TNodeTemplate stop) { for (TNodeTemplate topLevelHost : topLevelHosts) { if (doneTopLevelHosts.contains(topLevelHost)) { continue; } // traverse topology until matching can be found TNodeTemplate previous = null; TNodeTemplate next = topLevelHost; while (next != null && !next.equals(stop)) { // resolve predecessors List<TNodeTemplate> predecessors = original.getHostedOnPredecessors(next); predecessors.remove(previous); for (TNodeTemplate predecessor : predecessors) { if (!original.isTopLevelNT(predecessor) && possibleTargetLabels.get(predecessor).isEmpty()) { List<TNodeTemplate> topLevelHostPredecessors = original.getTransitiveTopLevelHostPredecessors(predecessor); addMissingTargetLabelsRecursive(topLevelHostPredecessors, next); } } // assign target labels based on the three cases if (isMatchable(next)) { doneTopLevelHosts.addAll(original.getTransitiveTopLevelHostPredecessors(next)); break; } previous = next; next = original.getHostedOnSuccessor(next); } } }
.equals(ModelUtilities.getTargetLabel(newHostNodeTemplate).get().toLowerCase()) && (nt.getId().equals(Util.makeNCName(newHostNodeTemplate.getId() + "-" + ModelUtilities.getTargetLabel(newHostNodeTemplate).get())) || nt.equals(newHostNodeTemplate))); .equals(ModelUtilities.getTargetLabel(newHostNodeTemplate).get().toLowerCase()) && (nt.getId().equals(Util.makeNCName(newHostNodeTemplate.getId() + "-" + ModelUtilities.getTargetLabel(newHostNodeTemplate).get())) || nt.equals(newHostNodeTemplate))).findAny().get();