X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=core%2Forg.argeo.suite.core%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fcore%2FSuiteTypology.java;h=d9d6673c55955e895d4b7c388f537a37e53629d5;hb=752a7b2614895002a3d184be166ef4162caf0d05;hp=d192ed7aef14a77509d9651632d8bd82c4f7cdd8;hpb=d583547f3046d1e0d9a1dc689abe71dcd1decfb7;p=gpl%2Fargeo-suite.git diff --git a/core/org.argeo.suite.core/src/org/argeo/suite/core/SuiteTypology.java b/core/org.argeo.suite.core/src/org/argeo/suite/core/SuiteTypology.java index d192ed7..d9d6673 100644 --- a/core/org.argeo.suite.core/src/org/argeo/suite/core/SuiteTypology.java +++ b/core/org.argeo.suite.core/src/org/argeo/suite/core/SuiteTypology.java @@ -63,6 +63,28 @@ class SuiteTypology implements Typology { } } + public Term findTermByName(String name) { + List collected = new ArrayList<>(); + for (SuiteTerm subTerm : subTerms) { + collectTermsByName(subTerm, name, collected); + } + if (collected.isEmpty()) + return null; + if (collected.size() == 1) + return collected.get(0); + throw new IllegalArgumentException( + "There are " + collected.size() + " terms with name " + name + " in typology " + getId()); + } + + private void collectTermsByName(SuiteTerm term, String name, List collected) { + if (term.getName().equals(name)) { + collected.add(term); + } + for (SuiteTerm subTerm : term.getSubTerms()) { + collectTermsByName(subTerm, name, collected); + } + } + private void collectSubTerms(List terms, SuiteTerm term) { for (SuiteTerm subTerm : term.getSubTerms()) { terms.add(subTerm);