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 an abstract mark from the Trademark Clearing House extension,
* represented by the "abstractMark" element of type "abstractMarkType" in the
* "urn:ietf:params:xml:ns:mark-1.0" namespace,
* defined in the "mark-1.0.xsd" schema.
*
*/
public abstract class AbstractMark {
private static final String HOLDER_EXPR = "holder";
private static final String CONTACT_EXPR = "contact";
private static final String LABEL_EXPR = "label";
private Logger maintLogger =
Logger.getLogger(getClass().getPackage().getName() + ".maint");
private String id;
private String markName;
private List<MarkHolder> holders = new ArrayList<MarkHolder>();
private List<MarkContact> contacts = new ArrayList<MarkContact>();
private List<String> labels = new ArrayList<String>();
private String goodsAndServices;
public void fromXML(XMLDocument xmlDocument) {
try {
id = xmlDocument.getNodeValue("mark:id/text()");
markName = xmlDocument.getNodeValue("mark:markName/text()");
goodsAndServices = xmlDocument.getNodeValue("mark:goodsAndServices/text()");
Node element = xmlDocument.getElement(".");
NodeList childNodes = element.getChildNodes();
for (int i = 0; i < childNodes.getLength(); i++) {
Node item = childNodes.item(i);
if (HOLDER_EXPR.equals(item.getLocalName())) {
MarkHolder markHolder = new MarkHolder();
markHolder.fromXML(new XMLDocument((Element) item));
holders.add(markHolder);
} else if (CONTACT_EXPR.equals(item.getLocalName())) {
MarkContact markContact = new MarkContact();
markContact.fromXML(new XMLDocument((Element) item));
contacts.add(markContact);
} else if (LABEL_EXPR.equals(item.getLocalName())) {
labels.add(item.getTextContent());
}
}
} catch (XPathExpressionException e) {
maintLogger.warning(e.getMessage());
}
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getMarkName() {
return markName;
}
public void setMarkName(String markName) {
this.markName = markName;
}
public List<MarkHolder> getHolders() {
return holders;
}
public void setHolders(List<MarkHolder> holders) {
this.holders = holders;
}
public List<MarkContact> getContacts() {
return contacts;
}
public void setContacts(List<MarkContact> contacts) {
this.contacts = contacts;
}
public List<String> getLabels() {
return labels;
}
public void setLabels(List<String> labels) {
this.labels = labels;
}
public String getGoodsAndServices() {
return goodsAndServices;
}
public void setGoodsAndServices(String goodsAndServices) {
this.goodsAndServices = goodsAndServices;
}
}