Files
2025-06-09 13:37:06 +02:00

74 lines
2.1 KiB
Java

package com.tarisan.chipcard.tpvvs.webservicetrayicon.messages;
/**
* @author jjrider
*/
import es.chipcard.util.*;
import org.w3c.dom.*;
import java.io.*;
public abstract class Msg {
public static int TYPE_OF_MESSAGE_ERROR=-1;
public static int TYPE_OF_MESSAGE_CCREQ=1;
public static int TYPE_OF_MESSAGE_CCRES=2;
public static String DEFAULT_XML_DECLARATION="<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>";
private Document xmlDoc=null;
public Msg(String sMessage) throws Exception{
xmlDoc=SerClsXMLUtils.parsearDocumento(new StringReader(DEFAULT_XML_DECLARATION+"<Msg version=\"1.0\">"+sMessage+"</Msg>"));
}
public Msg(Document doc) throws Exception{
if(doc==null)
throw new Exception("El XML dado como argumento no puede ser NULL");
if(!doc.getDocumentElement().getNodeName().equals("Msg")){
throw new Exception("El XML dado como argumento no es un Msg");
}
xmlDoc=doc;
}
public abstract int getTypeOfMessage();
protected Document getDocument(){
return xmlDoc;
}
public void setRepeticion(boolean blnValue){
xmlDoc.getDocumentElement().setAttribute("repeticion",((blnValue)?"true":"false"));
}
public String toString(){
return SerClsXMLUtils.dameTextoXml(xmlDoc);
}
public void saveToOutputStream(OutputStream out) throws Exception{
SerClsXMLUtils.toOutputStream(getDocument(),out);
}
/******
* Crea un objeto Msg a partir de una cadena
* @param sResponse
* @return
* @throws Exception
*/
public static Msg createMsgFromString(String sResponse) throws Exception{
/**if(sResponse!=null){
if(!sResponse.trim().startsWith("<?xml")){
}
}**/
sResponse=DEFAULT_XML_DECLARATION+sResponse;
//System.err.println("XML Respuesta:"+sResponse);
Document xmlResponse=SerClsXMLUtils.parsearDocumentoFromString(sResponse);
if(SerClsXMLUtils.existeElemento(xmlResponse.getDocumentElement(),"Error")){
return new Error(xmlResponse);
}else if(SerClsXMLUtils.existeElemento(xmlResponse.getDocumentElement(),"CCRes")){
return new AutRes(xmlResponse);
}else{
return null;
}
}
}