package org.argeo.suite.core; import java.util.ArrayList; import java.util.List; import org.argeo.entity.Term; /** * A single term. Helper to optimise {@link SuiteTermsManager} implementation. */ class SuiteTerm implements Term { private final String name; private final String relativePath; private final SuiteTypology typology; private final String id; private final SuiteTerm parentTerm; private final List subTerms = new ArrayList<>(); SuiteTerm(SuiteTypology typology, String relativePath, SuiteTerm parentTerm) { this.typology = typology; this.parentTerm = parentTerm; this.relativePath = relativePath; int index = relativePath.lastIndexOf('/'); if (index > 0) { this.name = relativePath.substring(index + 1); } else { this.name = relativePath; } id = typology.getName() + '/' + relativePath; } @Override public String getId() { return id; } @Override public String getName() { return name; } public String getRelativePath() { return relativePath; } @Override public SuiteTypology getTypology() { return typology; } @Override public List getSubTerms() { return subTerms; } @Override public SuiteTerm getParentTerm() { return parentTerm; } }