public static <T> VisitContext<T> depthFirst(Element root, Visitor<T> visitor) { if (root == null) throw new IllegalArgumentException("Root Element to visit must not be null."); return depthFirst(new VisitContextImpl<T>(), root, visitor); }
public static <T> VisitContext<T> depthFirst(Element root, Visitor<T> visitor) { if (root == null) throw new IllegalArgumentException("Root Element to visit must not be null."); return depthFirst(new VisitContextImpl<T>(), root, visitor); }
public static Map<String, Element> getDataFieldElements(final Element templateRoot) { final Map<String, Element> dataFields = new LinkedHashMap<>(); final Map<String, TaggedElement> childTemplateElements = new LinkedHashMap<>(); logger.finer("Searching template for fields."); // TODO do this as browser split deferred binding using // Document.querySelectorAll() - // https://developer.mozilla.org/En/DOM/Element.querySelectorAll Visit.depthFirst(templateRoot, new Visitor<Object>() { @Override public boolean visit(final VisitContextMutable<Object> context, final Element element) { for (final AttributeType attrType : AttributeType.values()) { final String attrName = attrType.getAttributeName(); final String attrVal = element.getAttribute(attrName); if (attrVal != null && !attrVal.isEmpty()) { final String[] attributeValues = (attrType == AttributeType.CLASS) ? attrVal.split(" +") : new String[]{attrVal}; for (final String dataFieldName : attributeValues) { final TaggedElement existingCandidate = childTemplateElements.get(dataFieldName); if (existingCandidate == null || existingCandidate.getAttributeType().ordinal() < attrType.ordinal()) { childTemplateElements.put(dataFieldName, new TaggedElement(attrType, element)); dataFields.put(dataFieldName, element); } } } } return true; } }); dataFields.put("this", templateRoot); return dataFields; }
public static Map<String, Element> getDataFieldElements(final Element templateRoot) { final Map<String, Element> dataFields = new LinkedHashMap<>(); final Map<String, TaggedElement> childTemplateElements = new LinkedHashMap<>(); logger.finer("Searching template for fields."); // TODO do this as browser split deferred binding using // Document.querySelectorAll() - // https://developer.mozilla.org/En/DOM/Element.querySelectorAll Visit.depthFirst(templateRoot, new Visitor<Object>() { @Override public boolean visit(final VisitContextMutable<Object> context, final Element element) { for (final AttributeType attrType : AttributeType.values()) { final String attrName = attrType.getAttributeName(); final String attrVal = element.getAttribute(attrName); if (attrVal != null && !attrVal.isEmpty()) { final String[] attributeValues = (attrType == AttributeType.CLASS) ? attrVal.split(" +") : new String[]{attrVal}; for (final String dataFieldName : attributeValues) { final TaggedElement existingCandidate = childTemplateElements.get(dataFieldName); if (existingCandidate == null || existingCandidate.getAttributeType().ordinal() < attrType.ordinal()) { childTemplateElements.put(dataFieldName, new TaggedElement(attrType, element)); dataFields.put(dataFieldName, element); } } } } return true; } }); dataFields.put("this", templateRoot); return dataFields; }
private static <T> VisitContext<T> depthFirst(VisitContextImpl<T> context, Element root, Visitor<T> visitor) { Element current = root; // If visit returns false, stop visiting down (but keep visiting) if (visitor.visit(context, current)) { current = current.getFirstChildElement(); while (current != null && !context.isVisitComplete()) { depthFirst(context, current, visitor); current = current.getNextSiblingElement(); } } return context; }
private static <T> VisitContext<T> depthFirst(VisitContextImpl<T> context, Element root, Visitor<T> visitor) { Element current = root; // If visit returns false, stop visiting down (but keep visiting) if (visitor.visit(context, current)) { current = current.getFirstChildElement(); while (current != null && !context.isVisitComplete()) { depthFirst(context, current, visitor); current = current.getNextSiblingElement(); } } return context; }
if (rootField != null && !rootField.trim().isEmpty()) { logger.finer("Locating root element: " + rootField); final VisitContext<TaggedElement> context = Visit.depthFirst(parserDiv, new Visitor<TaggedElement>() { @Override public boolean visit(final VisitContextMutable<TaggedElement> context, final Element element) {
if (rootField != null && !rootField.trim().isEmpty()) { logger.finer("Locating root element: " + rootField); final VisitContext<TaggedElement> context = Visit.depthFirst(parserDiv, new Visitor<TaggedElement>() { @Override public boolean visit(final VisitContextMutable<TaggedElement> context, final Element element) {