Analizando un repositorio EMF
Para navegar un crudo ISO20022 programa de repositorio EMF de manera programática en Java, tome inspiración de los varios unit tests dentro del repositorio emf-loader.
Por ejemplo, el ListMessageDefinitionIdentifiersTest a continuación. Este buscó a través de todos los Message Definition Identifica conceptos y los imprime.
package com.iconsolutions.iso20022.analysis;
import iso20022.*;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.emf.ecore.EObject;
import org.junit.jupiter.api.Test;
import java.lang.String;
import java.util.*;
import java.util.stream.Collectors;
/**
* This runner list the message definitions contains with the original repo
*/
@Slf4j
public class ListMessageDefinitionIdentifiersTest extends AdhocAnalysis {
@Test
protected void analyse() throws Exception {
List<EObject> allObjects = getObjectsFromRepo(E_REPO_ORIGINAL);
List<MessageSet> messageSets = allOf(MessageSet.class, allObjects);
List<MessageDefinition> definitions = allOf(MessageDefinition.class, allObjects);
List<String> out= new ArrayList<>();
definitions.forEach(def -> {
List<MessageSet> msForDef = messageSets.stream().filter(set -> set.getMessageDefinition().contains(def)).collect(Collectors.toList());
Set<String> setTitles = msForDef.stream().map(ms -> ms.getName().split(" -")[0]).collect(Collectors.toSet());
out.add(def.getMessageDefinitionIdentifier().getBusinessArea() + "."
+ def.getMessageDefinitionIdentifier().getMessageFunctionality() + "."
+ def.getMessageDefinitionIdentifier().getFlavour() + "."
+ def.getMessageDefinitionIdentifier().getVersion() + " : "
+ Arrays.toString(setTitles.toArray()));
});
out.sort(Comparator.naturalOrder());
out.forEach(log::debug);
}
}