/** * Decode XML element into DFieldTemplate. * * @param element Element to decode. * @return Decoded element as DFieldTemplate. * @throws DFieldTemplatesException Unable to decode XML element. */ public static DFieldTemplate decode(final org.w3c.dom.Element element) throws DFieldTemplatesException { if (element == null) { throw new DFieldTemplatesException("parameter must not be null [element]"); } final DFieldTemplate dFieldTemplate = new DFieldTemplate(); // resolve custom attributes dFieldTemplate.setName(element.getAttribute("Name")); // resolve custom elements final org.w3c.dom.NodeList nl = element.getChildNodes(); for (int i = 0; i < nl.getLength(); i++) { if (!(nl.item(i) instanceof org.w3c.dom.Element)) { continue; } final org.w3c.dom.Element el = (org.w3c.dom.Element) nl.item(i); if ("Description".equals(el.getLocalName())) { dFieldTemplate.setDescription(el.getTextContent()); } else if ("Selector".equals(el.getLocalName())) { dFieldTemplate.setSelector(DSelectorCodec.decode(el)); } else if ("Term".equals(el.getLocalName())) { try { XMLUtils.removeWhitespaceTextNodes(el); final Plugin plugin = PluginFactory.getPlugin(); dFieldTemplate.setTerm(plugin.getAdvSearchAccess().decodeTerm(el)); } catch (Throwable e) { throw new DFieldTemplatesException(e.getMessage()); } } } return dFieldTemplate; }