package com.ausregistry.jtoolkit2.se.tmch;
import javax.xml.xpath.XPathExpressionException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
import com.ausregistry.jtoolkit2.xml.XMLDocument;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
/**
* Represents a trademark from the Trademark Clearing House extension, represented by the "mark" element
* of type "markType" in the "urn:ietf:params:xml:ns:mark-1.0" namespace, defined in the "mark-1.0.xsd" schema.
*
*/
public class MarksList {
private static final String TRADEMARK_NODE_LOCAL_NAME = "trademark";
private static final String TREATY_OR_STATUTE_NODE_LOCAL_NAME = "treatyOrStatute";
private static final String COURT_NODE_LOCAL_NAME = "court";
private Logger maintLogger = Logger.getLogger(getClass().getPackage().getName() + ".maint");
private List<AbstractMark> marks;
public void fromXML(XMLDocument xmlDocument) {
try {
Node element = xmlDocument.getElement(".");
NodeList childNodes = element.getChildNodes();
marks = new ArrayList<AbstractMark>(childNodes.getLength());
for (int i = 0; i < childNodes.getLength(); i++) {
Node item = childNodes.item(i);
AbstractMark abstractMark;
if (TRADEMARK_NODE_LOCAL_NAME.equals(item.getLocalName())) {
abstractMark = new Trademark();
} else if (TREATY_OR_STATUTE_NODE_LOCAL_NAME.equals(item.getLocalName())) {
abstractMark = new TreatyOrStatute();
} else if (COURT_NODE_LOCAL_NAME.equals(item.getLocalName())) {
abstractMark = new CourtValidatedMark();
} else {
continue;
}
abstractMark.fromXML(new XMLDocument((Element) item));
marks.add(abstractMark);
}
} catch (XPathExpressionException e) {
maintLogger.warning(e.getMessage());
}
}
public List<? extends AbstractMark> getMarks() {
return marks;
}
public void setMarks(List<AbstractMark> marks) {
this.marks = marks;
}
}