private Collection<Guide> getGuides(GuideManager guideManager, GeneratedElementInstance predicateOriginalEI, DataValue dv) { Collection<Guide> guides = new ArrayList<>(); Set<String> guideIds = getReferenceGuideIds(dv, predicateOriginalEI.getRuleReferences()); for (String guideId : guideIds) { Guide guide = guideManager.getGuide(guideId); if (guide == null) { LoggerFactory.getLogger(ElementInstanceCollectionManager.class).warn("Guideline not found resolving rule reference '" + guideId + "'"); } else { guides.add(guide); } } return guides; }
private static ElementInstance cloneElementInstanceWithGTCodes(ElementInstance ei, ArchetypeReference ar, boolean useGTCodes) { ei = ei.clone(); ei.setArchetypeReference(ar); if (!useGTCodes && ei instanceof GeneratedElementInstance) { ((GeneratedElementInstance) ei).getRuleReferences().clear(); } return ei; }
boolean matchAndFill(GeneratedArchetypeReference ar1, ArchetypeReference ar2, Map<String, Guide> guideMap, Calendar date) { Collection<ElementInstance> emptyElementInstances = new ArrayList<ElementInstance>(); boolean matches = matches(ar1, ar2, guideMap, date); if (!matches) { return false; } else { if (ar2 instanceof GeneratedArchetypeReference) { for (String idElement : ar1.getElementInstancesMap().keySet()) { ElementInstance ei1 = ar1.getElementInstancesMap().get(idElement); ElementInstance ei2 = ar2.getElementInstancesMap().get(idElement); if (!(ei1 instanceof PredicateGeneratedElementInstance) && ei2 == null) { ei2 = ei1.clone(); emptyElementInstances.add(ei2); } if (ei1 instanceof GeneratedElementInstance && ei2 instanceof GeneratedElementInstance) { ((GeneratedElementInstance) ei2).getRuleReferences().addAll(((GeneratedElementInstance) ei1).getRuleReferences()); } } for (ElementInstance elementInstance : emptyElementInstances) { elementInstance.setArchetypeReference(ar2); } } } return true; }
private Map<RuleReference, ElementInstance> generateElementInstanceByRuleReferenceMap() { Map<RuleReference, ElementInstance> allElementInstancesByRuleReference = new HashMap<>(); for (Guide guide : guideMap.values()) { if (guide.getDefinition() != null) { for (ArchetypeBinding archetypeBinding : guide.getDefinition().getArchetypeBindings().values()) { ArchetypeReference archetypeReference = GuideUtil.getGeneratedArchetypeReference(archetypeBinding, guide.getId()); for (ElementInstance elementInstance : archetypeReference.getElementInstancesMap().values()) { if (elementInstance instanceof GeneratedElementInstance) { GeneratedElementInstance generatedElementInstance = (GeneratedElementInstance) elementInstance; for (RuleReference ruleReference : generatedElementInstance.getRuleReferences()) { allElementInstancesByRuleReference.put(ruleReference, elementInstance); } } } } } } return allElementInstancesByRuleReference; }
private static PredicateGeneratedElementInstance generateElementInstanceForPredicate( ArchetypeReference ar, OperatorKind op, String idElement, DataValue dv, Guide guide, DateTime dateTime, boolean resolvePredicates) { Collection<RuleReference> previousRuleReferences = new ArrayList<>(); ElementInstance elementInstance = ar.getElementInstancesMap().get(idElement); if (elementInstance instanceof GeneratedElementInstance) { GeneratedElementInstance generatedElementInstance = (GeneratedElementInstance) elementInstance; previousRuleReferences.addAll(generatedElementInstance.getRuleReferences()); } if (dv != null && guide != null && dateTime != null && resolvePredicates) { dv = ElementInstanceCollectionManager.resolvePredicate(dv, op, Collections.singleton(guide), dateTime.toCalendar(Locale.getDefault())); } PredicateGeneratedElementInstance predicateGeneratedElementInstance = new PredicateGeneratedElementInstanceBuilder() .setId(idElement) .setDataValue(dv) .setArchetypeReference(ar) .setOperatorKind(op) .createPredicateGeneratedElementInstance(); predicateGeneratedElementInstance.getRuleReferences().addAll(previousRuleReferences); return predicateGeneratedElementInstance; }
GeneratedElementInstance elementInstancesWithGTCode = (GeneratedElementInstance) elementInstance; if (elementInstancesWithGTCode.getRuleReferences().size() < 2) { Term term = null; if (termDefinition != null) { String gtCode = null; if (!elementInstancesWithGTCode.getRuleReferences().isEmpty()) { gtCode = elementInstancesWithGTCode.getRuleReferences().iterator().next().getGtCode();
GeneratedElementInstance gei = (GeneratedElementInstance) eiAux; GeneratedElementInstance gei2 = (GeneratedElementInstance) newEI; gei.getRuleReferences().addAll(gei2.getRuleReferences());
private static GeneratedArchetypeReference getGeneratedArchetypeReference( ArchetypeBinding archetypeBinding, String guideId, Guide guide, DateTime dateTime, boolean resolvePredicates) { GeneratedArchetypeReference ar = new GeneratedArchetypeReference( archetypeBinding.getDomain(), archetypeBinding.getArchetypeId(), archetypeBinding.getTemplateId()); if (archetypeBinding.getElements() != null) { for (ElementBinding elementBinding : archetypeBinding.getElements().values()) { String idElement = archetypeBinding.getArchetypeId() + elementBinding.getPath(); GeneratedElementInstance gei = new GeneratedElementInstance( idElement, null, ar, null, NULL_FLAVOUR_CODE_NO_INFO); gei.getRuleReferences().add(new RuleReference(guideId, elementBinding.getId())); } } generatePredicateElements(archetypeBinding, ar, guideId, guide, dateTime, resolvePredicates); return ar; }
if (originalEI instanceof GeneratedElementInstance) { GeneratedElementInstance generatedElementInstance = (GeneratedElementInstance) originalEI; ((GeneratedElementInstance) ei).setRuleReferences(generatedElementInstance.getRuleReferences());