com.regnosys.testing.schemaimport.AnnotatedRosettaEnumReader Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of rosetta-testing Show documentation
Show all versions of rosetta-testing Show documentation
Rune Testing is a java library that is utilised by Rosetta Code Generators and models expressed in the Rosetta DSL.
package com.regnosys.testing.schemaimport;
import com.google.inject.Inject;
import com.regnosys.rosetta.rosetta.RosettaDocReference;
import com.regnosys.rosetta.rosetta.RosettaEnumeration;
import com.regnosys.rosetta.rosetta.RosettaModel;
import com.regnosys.rosetta.rosetta.RosettaSegmentRef;
import com.regnosys.rosetta.transgest.ModelLoader;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
public class AnnotatedRosettaEnumReader {
@Inject
private ModelLoader modelLoader;
public List getAnnotatedEnum(List models, String body, String corpus) {
List allRosettaEnums = modelLoader.rosettaElements(models, RosettaEnumeration.class);
return allRosettaEnums.stream()
.filter(rosettaEnum -> enumIsAnnotatedWithBodyAndCorpusDocRef(rosettaEnum, body, corpus))
.collect(Collectors.toList());
}
private boolean enumIsAnnotatedWithBodyAndCorpusDocRef(RosettaEnumeration rosettaEnumeration, String body, String corpus) {
return rosettaEnumeration
.getReferences()
.stream().anyMatch(documentReference ->
refIsAnnotatedWithBodyAndReference(documentReference, body, corpus));
}
private boolean refIsAnnotatedWithBodyAndReference(RosettaDocReference documentReference, String body, String corpus) {
return documentReference.getDocReference() != null
&& documentReference.getDocReference().getBody() != null
&& body.equals(documentReference.getDocReference().getBody().getName())
&& documentReference.getDocReference().getCorpusList().stream()
.filter(Objects::nonNull)
.anyMatch(x -> corpus.equals(x.getName()));
}
public Optional getSchemaLocationForEnum(RosettaEnumeration rosettaEnumeration, String body, String corpus) {
return rosettaEnumeration
.getReferences()
.stream()
.flatMap(ref -> ref.getDocReference().getSegments().stream())
.filter(s -> s.getSegment().getName().equals("schemeLocation"))
.map(RosettaSegmentRef::getSegmentRef)
.findAny();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy