private String getFullname(Tag tag, String defaultValue) { if (tag != null) { String fn = tag.getFullname(); if (StringUtil.isEmpty(fn)) fn = tag.getTagLibTag().getFullName(); if (!StringUtil.isEmpty(fn)) return fn; } return defaultValue; }
/** * Prueft ob das angegebene Tag innerhalb seiner Ebene einmalig ist oder nicht. * * @param tag Ausgangspunkt, nach diesem tag darf das angegebene nicht vorkommen. * @return kommt das Tag vor. */ public static boolean hasSisterTagWithSameName(Tag tag) { Body body = (Body) tag.getParent(); List<Statement> stats = body.getStatements(); Iterator<Statement> it = stats.iterator(); Statement other; String name = tag.getTagLibTag().getName(); while (it.hasNext()) { other = it.next(); if (other != tag && other instanceof Tag && ((Tag) other).getTagLibTag().getName().equals(name)) return true; } return false; }
public static void removeLiterlChildren(Tag tag, boolean recursive) { Body body = tag.getBody(); if (body != null) { List<Statement> list = body.getStatements(); Statement[] stats = list.toArray(new Statement[list.size()]); PrintOut po; Tag t; for (int i = 0; i < stats.length; i++) { if (stats[i] instanceof PrintOut) { po = (PrintOut) stats[i]; if (po.getExpr() instanceof Literal) { body.getStatements().remove(po); } } else if (recursive && stats[i] instanceof Tag) { t = (Tag) stats[i]; if (t.getTagLibTag().isAllowRemovingLiteral()) { removeLiterlChildren(t, recursive); } } } } }