private List<TRequirement> mergeByType(List<TRequirement> requirements) { // valid because only requirements/capability types are considered for matching Map<QName, TRequirement> removeDuplicates = new HashMap<>(); requirements.forEach(req -> removeDuplicates.put(req.getType(), req)); return new ArrayList<>(removeDuplicates.values()); }
public TRequirement build() { return new TRequirement(this); } }
public void visit(TNodeTemplate.Requirements requirements) { for (TRequirement requirement : requirements.getRequirement()) { requirement.accept(this); } // meta model does not offer more children }
public void visit(TRequirement requirement) { final TEntityTemplate.Properties properties = requirement.getProperties(); if (properties != null) { properties.accept(this); } final TEntityTemplate.PropertyConstraints propertyConstraints = requirement.getPropertyConstraints(); if (propertyConstraints != null) { propertyConstraints.accept(this); } // meta model does not offer more children }
private static void collectIdsOfExistingTopologyElements(TTopologyTemplate topologyTemplateB, Map<String, String> idMapping) { // collect existing node & relationship template ids topologyTemplateB.getNodeTemplateOrRelationshipTemplate() // the existing ids are left unchanged .forEach(x -> idMapping.put(x.getId(), x.getId())); // collect existing requirement ids topologyTemplateB.getNodeTemplates().stream() .filter(nt -> nt.getRequirements() != null) .forEach(nt -> nt.getRequirements().getRequirement() // the existing ids are left unchanged .forEach(x -> idMapping.put(x.getId(), x.getId()))); //collect existing capability ids topologyTemplateB.getNodeTemplates().stream() .filter(nt -> nt.getCapabilities() != null) .forEach(nt -> nt.getCapabilities().getCapability() // the existing ids are left unchanged .forEach(x -> idMapping.put(x.getId(), x.getId()))); }
nodeTemplate.setRequirements(requirementsNode); for (TRequirementDefinition definition : nodeType.getRequirementDefinitions().getRequirementDefinition()) { TRequirement newRequirement = new TRequirement(); newRequirement.setName(definition.getName()); newRequirement.setId(definition.getName()); newRequirement.setType(definition.getRequirementType()); nodeTemplate.getRequirements().getRequirement().add(newRequirement);
public TMapRequirementAssignment convert(TRequirement node) { if (Objects.isNull(node)) return null; return new TMapRequirementAssignment().setMap(Collections.singletonMap( node.getName(), new TRequirementAssignment.Builder() .setCapability(convert(repository.getElement(new RequirementTypeId(node.getType())))) .build() )); }
tNodeTemplate.getRequirements().getRequirement() .stream() .anyMatch(tRequirement -> tRequirement.equals(requirementRef.getRef()))
System.out.println("open Requirement: " + req.getId()); System.out.println("matchingBasisType: " + requirementsAndMatchingBasisCapabilityTypes.get(req));
TNodeTemplate nodeTemplateWithThisOpenReq = nodeTemplates.stream() .filter(nt -> nt.getRequirements() != null) .filter(nt -> nt.getRequirements().getRequirement().stream().anyMatch(req -> req.getId().equals(openRequirementId))) .findFirst().get(); .filter(req -> req.getId().equals(openRequirementId)).findFirst().get();
/** * Pointing to a concrete node template has to be done by putting this node template into a separeate namespace <p> * The given targetLocation is appended to {@see NS_NAME_START} to gain the namespace. All NodeTemplates in this * namespace and all "lower" namespaces (e.g., starting with that string) are returned. * * @return All node templates available for the given targetLocation. */ public List<TTopologyTemplate> getAllTopologyFragmentsForLocationAndOfferingCapability(String targetLocation, TRequirement requirement) { QName reqTypeQName = requirement.getType(); RequirementTypeId reqTypeId = new RequirementTypeId(reqTypeQName); QName requiredCapabilityType = RepositoryFactory.getRepository().getElement(reqTypeId).getRequiredCapabilityType(); return getAllTopologyFragmentsForLocation(targetLocation).stream() .filter(tf -> { Optional<TNodeTemplate> nodeTemplate = ModelUtilities.getAllNodeTemplates(tf).stream() .filter(nt -> nt.getCapabilities() != null) .filter(nt -> nt.getCapabilities().getCapability().stream() .anyMatch(cap -> cap.getType().equals(requiredCapabilityType)) ).findAny(); if (nodeTemplate.isPresent()) { return true; } else { return false; } }) .collect(Collectors.toList()); }
connectionInjectionOptions.put(openRequirement.getId(), matchingTopologyFragments); } else { throw new SplittingException("No matching found");
private QName getRequiredCapabilityTypeQNameOfRequirement(TRequirement requirement) { QName reqTypeQName = requirement.getType(); RequirementTypeId reqTypeId = new RequirementTypeId(reqTypeQName); TRequirementType requirementType = RepositoryFactory.getRepository().getElement(reqTypeId); return requirementType.getRequiredCapabilityType(); }
/** * Resolves a given id as requirement in the given ServiceTemplate * * @return null if not found */ public static TRequirement resolveRequirement(TServiceTemplate serviceTemplate, String reference) { TRequirement resolved = null; for (TEntityTemplate tmpl : serviceTemplate.getTopologyTemplate().getNodeTemplateOrRelationshipTemplate()) { if (tmpl instanceof TNodeTemplate) { TNodeTemplate n = (TNodeTemplate) tmpl; Requirements requirements = n.getRequirements(); if (requirements != null) { for (TRequirement req : n.getRequirements().getRequirement()) { if (req.getId().equals(reference)) { resolved = req; } } } } } return resolved; }
System.out.println("open Requirement: " + req.getId()); System.out.println("matchingbasisType: " + requirementsAndMatchingBasisCapabilityTypes.get(req));
if (requirements != null) { for (TRequirement req : requirements.getRequirement()) { QName type = req.getType(); RequirementTypeId rtId = new RequirementTypeId(type); ids.add(rtId);
if (requirements != null) { for (TRequirement req : requirements.getRequirement()) { if (req.getId().equals(targetObjectRef)) { return req;
if (requirements != null) { for (TRequirement req : requirements.getRequirement()) { QName type = req.getType(); RequirementTypeId rtId = new RequirementTypeId(type); ids.add(rtId);