private boolean nameMatches( String n, ElementDefn e, boolean throughChoice, Definitions definitions) { if (e.getName().equals(n)) return true; else if (!throughChoice || !e.getName().endsWith("[x]")) return false; else { String b = e.getName().substring(0, e.getName().indexOf("[")); if (!n.startsWith(b)) return false; String tn = n.substring(b.length()); if (e.typeCode().equals("*") && definitions != null) { for (TypeRef t : definitions.getKnownTypes()) { if (!definitions.getInfrastructure().containsKey(t.getName()) && !definitions.getConstraints().containsKey(t.getName())) { if (t.getName().equalsIgnoreCase(tn)) return true; } } } else for (TypeRef t : e.getTypes()) if (t.getName().equalsIgnoreCase(tn)) return true; return false; } }
private boolean nameMatches(String n, ElementDefn e, boolean throughChoice) { if (e.getName().equals(n)) return true; else if (!throughChoice || !e.getName().endsWith("[x]")) return false; else { String b = e.getName().substring(0, e.getName().indexOf("[")); if (!n.startsWith(b)) return false; String tn = n.substring(b.length()); for (TypeRef t : e.getTypes()) if (t.getName().equalsIgnoreCase(tn)) return true; return false; } }
public String typeCode() { StringBuilder tn = new StringBuilder(); boolean first = true; for (TypeRef t : types) { if (!first) tn.append("|"); first = false; tn.append(t.getName()); if (t.hasParams()) { tn.append("("); boolean f = true; for (String s : t.getParams()) { if (!f) tn.append("|"); f = false; tn.append(s); } tn.append(")"); } } return tn.toString(); }
public boolean hasType(String name) { for (TypeRef t : types) { if (t.getName().equals(name)) return true; } return false; }