package dbfit.util; import static java.util.Arrays.asList; public class SymbolReference { private String name; private String prefix; private static final String[] PREFIXES = { "<<<", ">>>", "<<", ">>" }; public String getName() { return name; } public String getPrefix() { return prefix; } public boolean isSymbolGetter() { return getPrefix().startsWith("<<"); } public boolean isSymbolSetter() { return getPrefix().startsWith(">>"); } public boolean isHidden() { return asList("<<<", ">>>").contains(getPrefix()); } private SymbolReference(String name, String prefix) { this.name = name; this.prefix = prefix; } public static SymbolReference fromFullName(String symbolFullName) { if (null == symbolFullName) { return new SymbolReference(null, ""); } String prefix = findPrefix(symbolFullName); String name = symbolFullName.substring(prefix.length()).trim(); return new SymbolReference(name, prefix); } private static String findPrefix(String symbolFullName) { for (String candidatePrefix : PREFIXES) { if (symbolFullName.startsWith(candidatePrefix)) { return candidatePrefix; } } return ""; } }