private int indexOfItemDefinitionByName(final String name, final List<ItemDefinition> itemDefinitions) { int index = 0; for (final ItemDefinition itemDefinition : itemDefinitions) { if (itemDefinition.getName().equals(name)) { return index; } index++; } return -1; } }
private static void addDepsToItemDefinition(final ItemDefinition itemDefinition, final List<ItemDefinition> dependencies, final int numberOfDeps, final Set<String> usedNames) { int addedDepsCount = 0; for (final ItemDefinition dependency : dependencies) { if (!usedNames.contains(dependency.getName())) { createAndAddDependency(itemDefinition, dependency); usedNames.add(dependency.getName()); addedDepsCount++; if (addedDepsCount == numberOfDeps) { return; } } } }
private static ItemDefinition createItemDefinitionWithDeps(final ItemDefinition itemDefinitionTemplate, final List<ItemDefinition> dependencies, final int maxNumberOfDepsPerItemDefinition, final Set<String> usedNames) { // New ItemDefinition is created, so the original one stays untouched. final ItemDefinition it = new TItemDefinition(); it.setName(itemDefinitionTemplate.getName()); final List<ItemDefinition> possibleDependencies = dependencies.stream().filter(item -> !item.getName().equals(it.getName())).collect(Collectors.toList()); addDepsToItemDefinition(it, possibleDependencies, maxNumberOfDepsPerItemDefinition, usedNames); return it; }
private static void createAndAddDependency(final ItemDefinition itemDefinition, final ItemDefinition dependency) { final ItemDefinition newDependency = new TItemDefinition(); newDependency.setName("_" + itemDefinition.getName() + "-" + dependency.getName()); newDependency.setTypeRef(new QName(TEST_NS, dependency.getName())); itemDefinition.getItemComponent().add(newDependency); }
@Test public void testOrdering() { logger.trace("Item definitions:"); itemDefinitions.forEach(itemDefinition -> { logger.trace(itemDefinition.getName()); itemDefinition.getItemComponent().forEach(dependency -> logger.trace(dependency.getName())); }); final List<ItemDefinition> orderedList = orderingStrategy(itemDefinitions); for (final ItemDefinition itemDefinition : itemDefinitions) { assertOrdering(itemDefinition, orderedList); } }
private ItemDefinition build(final String name, final ItemDefinition... components) { final ItemDefinition res = new TItemDefinition(); res.setName(name); for ( final ItemDefinition ic : components ) { final ItemDefinition c = new TItemDefinition(); c.setName("_" + name + "-" + ic.getName()); c.setTypeRef(new QName(TEST_NS, ic.getName())); res.getItemComponent().add(c); } return res; }
private void assertOrdering(final ItemDefinition itemDefinition, final List<ItemDefinition> orderedList) { for (final ItemDefinition dependency : itemDefinition.getItemComponent()) { final String dependencyName = dependency.getTypeRef().getLocalPart(); final int indexOfDependency = indexOfItemDefinitionByName(dependencyName, orderedList); assertTrue("Cannot find dependency " + dependencyName + " in the ordered list!", indexOfDependency > -1); assertTrue("Index of " + itemDefinition.getName() + " < " + dependency.getTypeRef().getLocalPart(), orderedList.indexOf(itemDefinition) > indexOfDependency); if (dependency.getItemComponent() != null && !dependency.getItemComponent().isEmpty()) { assertOrdering(dependency, orderedList); } } }
public static DMNItemDefinitionInfo itemDefinitionToInfo(ItemDefinition itemDef) { DMNItemDefinitionInfo res = new DMNItemDefinitionInfo(); res.setId(itemDef.getId()); res.setName(itemDef.getName()); if (itemDef.getTypeRef() != null) { res.setTypeRef(DMNQNameInfo.of(itemDef.getTypeRef())); } if (itemDef.getAllowedValues() != null) { DMNUnaryTestsInfo av = new DMNUnaryTestsInfo(); av.setText(itemDef.getAllowedValues().getText()); av.setExpressionLanguage(itemDef.getAllowedValues().getExpressionLanguage()); res.setAllowedValues(av); } if (itemDef.getItemComponent() != null && !itemDef.getItemComponent().isEmpty()) { List<DMNItemDefinitionInfo> components = itemDef.getItemComponent().stream().map(ModelEvaluatorServiceBase::itemDefinitionToInfo).collect(Collectors.toList()); res.setItemComponent(components); } res.setTypeLanguage(itemDef.getTypeLanguage()); res.setIsCollection(itemDef.isIsCollection()); return res; }