package com.ausregistry.jtoolkit2.se.tmch; import javax.xml.bind.DatatypeConverter; import java.util.Date; import java.util.logging.Logger; import com.ausregistry.jtoolkit2.xml.XMLDocument; import org.w3c.dom.Element; import static com.ausregistry.jtoolkit2.se.ExtendedObjectType.SIGNED_MARK_DATA; import static com.ausregistry.jtoolkit2.se.ExtendedObjectType.MARK; /** * Represents a signedMarkData from the Trademark Clearing House extension, represented by the "signedMark" element * of type "signedMarkType" in the "urn:ietf:params:xml:ns:signedMark-1.0" namespace, * defined in the "signedMark-1.0.xsd" schema. * */ public class SignedMarkData { public static final String BASE_EXPR = "/" + SIGNED_MARK_DATA.getName() + ":signedMark"; private static final String SMD_ID_EXPR = BASE_EXPR + "/" + SIGNED_MARK_DATA.getName() + ":id/text()"; private static final String SMD_NOT_BEFORE_EXPR = BASE_EXPR + "/" + SIGNED_MARK_DATA.getName() + ":notBefore/text()"; private static final String SMD_NOT_AFTER_EXPR = BASE_EXPR + "/" + SIGNED_MARK_DATA.getName() + ":notAfter/text()"; private static final String ISSUER_INFO_EXPR = BASE_EXPR + "/" + SIGNED_MARK_DATA.getName() + ":issuerInfo"; private static final String MARK_EXPR = BASE_EXPR + "/" + MARK.getName() + ":mark"; private Logger maintLogger = Logger.getLogger(getClass().getPackage().getName() + ".maint"); private String id; private SmdIssuerInfo smdIssuerInfo; private Date notBefore; private Date notAfter; private MarksList marksList; public void fromXML(final XMLDocument xmlDocument) { try { id = xmlDocument.getNodeValue(SMD_ID_EXPR); Element issuerInfoElement = (Element) xmlDocument.getElement(ISSUER_INFO_EXPR); if (issuerInfoElement != null) { smdIssuerInfo = new SmdIssuerInfo(); smdIssuerInfo.fromXML(new XMLDocument(issuerInfoElement)); } notBefore = DatatypeConverter.parseDate(xmlDocument.getNodeValue(SMD_NOT_BEFORE_EXPR)).getTime(); notAfter = DatatypeConverter.parseDate(xmlDocument.getNodeValue(SMD_NOT_AFTER_EXPR)).getTime(); Element markElement = (Element) xmlDocument.getElement(MARK_EXPR); if (markElement != null) { marksList = new MarksList(); marksList.fromXML(new XMLDocument(markElement)); } } catch (Exception e) { maintLogger.warning(e.getMessage()); } } public String getId() { return id; } public void setId(String id) { this.id = id; } public SmdIssuerInfo getSmdIssuerInfo() { return smdIssuerInfo; } public void setSmdIssuerInfo(SmdIssuerInfo smdIssuerInfo) { this.smdIssuerInfo = smdIssuerInfo; } public Date getNotBefore() { return notBefore; } public void setNotBefore(Date notBefore) { this.notBefore = notBefore; } public Date getNotAfter() { return notAfter; } public void setNotAfter(Date notAfter) { this.notAfter = notAfter; } public MarksList getMarksList() { return marksList; } public void setMarksList(MarksList marksList) { this.marksList = marksList; } public boolean isValid(final Date currentDate) { return !currentDate.before(notBefore) && !currentDate.after(notAfter); } }