/**
* LICENCIA LGPL:
*
* Esta librería es Software Libre; Usted puede redistribuirlo y/o modificarlo
* bajo los términos de la GNU Lesser General Public License (LGPL)
* tal y como ha sido publicada por la Free Software Foundation; o
* bien la versión 2.1 de la Licencia, o (a su elección) cualquier versión posterior.
*
* Esta librería se distribuye con la esperanza de que sea útil, pero SIN NINGUNA
* GARANTÍA; tampoco las implícitas garantías de MERCANTILIDAD o ADECUACIÓN A UN
* PROPÓSITO PARTICULAR. Consulte la GNU Lesser General Public License (LGPL) para más
* detalles
*
* Usted debe recibir una copia de la GNU Lesser General Public License (LGPL)
* junto con esta librería; si no es así, escriba a la Free Software Foundation Inc.
* 51 Franklin Street, 5º Piso, Boston, MA 02110-1301, USA.
*
*/
package es.mityc.firmaJava.libreria.xades.elementos;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import es.mityc.firmaJava.libreria.ConstantesXADES;
import es.mityc.firmaJava.libreria.xades.errores.InvalidInfoNodeException;
/**
* @author Ministerio de Industria, Turismo y Comercio
* @version 1.0
*
* TODO: incluir metodo para devolver y aceptar el resultado en binario (codificar/decodificar base64)
*/
public class DigestValue extends AbstractXDsigElement {
private String value;
public DigestValue() {
super();
}
/**
* @param namespaceXDSig
*/
public DigestValue(String value) {
super();
setValue(value);
}
/**
* @return the value
*/
public String getValue() {
return value;
}
/**
* @param value the value to set
*/
public void setValue(String value) {
this.value = value;
if (this.value != null)
this.value = this.value.replace(" ", "").replace("\n", "").replace("\r", "");
}
/**
* @see es.mityc.firmaJava.libreria.xades.elementos.AbstractXMLElement#createElement(org.w3c.dom.Document)
*/
@Override
protected Element createElement(Document doc) throws InvalidInfoNodeException {
if (value == null)
throw new InvalidInfoNodeException("Información insuficiente para escribir elemento DigestValue");
Element res = doc.createElementNS(ConstantesXADES.SCHEMA_DSIG, namespaceXDsig + ":" + ConstantesXADES.DIGEST_VALUE);
res.setTextContent(value);
return res;
}
/**
* @see es.mityc.firmaJava.libreria.xades.elementos.AbstractXDsigElement#createElement(org.w3c.dom.Document, java.lang.String)
*/
@Override
public Element createElement(Document doc, String namespaceXDsig) throws InvalidInfoNodeException {
return super.createElement(doc, namespaceXDsig);
}
/**
* @see es.mityc.firmaJava.libreria.xades.elementos.AbstractXDsigElement#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
if (obj instanceof DigestValue) {
DigestValue huella = (DigestValue) obj;
if (value.equals(huella.value))
return true;
}
return false;
}
/**
* @see es.mityc.firmaJava.libreria.xades.elementos.AbstractXDsigElement#load(org.w3c.dom.Element)
*/
@Override
public void load(Element element) throws InvalidInfoNodeException {
checkElementName(element, ConstantesXADES.SCHEMA_DSIG, ConstantesXADES.LIBRERIAXADES_DIGESTVALUE);
Node node = element.getFirstChild();
if (node.getNodeType() != Node.TEXT_NODE)
throw new InvalidInfoNodeException("Nodo DigestValue no contiene CDATA como primer valor");
this.value = node.getNodeValue();
if (this.value == null)
throw new InvalidInfoNodeException("Contenido de valor de digest vacío");
this.value = this.value.replace(" ", "").replace("\n", "").replace("\r", "");
}
/**
* @see es.mityc.firmaJava.libreria.xades.elementos.AbstractXMLElement#isThisNode(org.w3c.dom.Node)
*/
@Override
public boolean isThisNode(Node node) {
return isElementName(nodeToElement(node), ConstantesXADES.SCHEMA_DSIG, ConstantesXADES.LIBRERIAXADES_DIGESTVALUE);
}
}