public void load(EdlDocument edlDocument, String packageName) throws ClassNotFoundException, KnowledgeContainerException { components = new HashMap<String, BaseDataContract[]>(); for (DataContractDefinition contract : edlDocument.getDataContracts()) { @SuppressWarnings("unchecked") Class<? extends BaseDataContract> roleClass = (Class<? extends BaseDataContract>) Class.forName(packageName + "." + contract.getName()); Collection<? extends BaseDataContract> instancesUnsorted = knowledgeContainer.getTrackedKnowledgeForRole(roleClass); BaseDataContract[] instances = new BaseDataContract[instancesUnsorted.size()]; String dataContractName = contract.getName(); // for (int i = 0; !instancesUnsorted.isEmpty(); i++) { // BaseDataContract minInstance = instancesUnsorted.iterator().next(); // for (BaseDataContract instance : instancesUnsorted) { //// if (Integer.parseInt(instance.id) < Integer.parseInt(minInstance.id)) { //// minInstance = instance; //// } // // if (instance.id.compareTo(minInstance.id) < 0) { // minInstance = instance; // } // } // // instances[i] = minInstance; // instancesUnsorted.remove(minInstance); // } // TODO Fairly confident that the sorted property was not used anywhere - keep in mind if // anything blows up though components.put(dataContractName, instancesUnsorted.toArray(new BaseDataContract[0])); } }
/* public int[] getGlobalIndices(List<? extends BaseDataContract> instances) { int[] result = new int[instances.size()]; for (int i = 0; i < instances.size(); i++) { result[i] = Integer.parseInt(instances.get(i).id); usedComponentIds.add(result[i]); } return result; } public Set<Integer> getUsedComponentIds() { return usedComponentIds; } */ public <TDataContract> int getMaxEnsembleCount( EdlDocument edlDocument, EnsembleDefinition ensembleDefinition) { int result = Integer.MAX_VALUE; // TODO Extend to int ranges if (Extensions.hasDataContractBoundId(ensembleDefinition)) { QualifiedName idType = ensembleDefinition.getId().getType(); result = components.get(idType.getName()).length; } else { for (DataContractDefinition contract : edlDocument.getDataContracts()) { int maxEnsembleCount = getMaxEnsembleCount(contract.getName(), ensembleDefinition); if (maxEnsembleCount < result) { result = maxEnsembleCount; } } } return result; }