/**
* MCGDwsImpl.java
*
* This file was auto-generated from WSDL
* by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
*/
package net.conselldemallorca.helium.ws.callback;
import java.io.PrintWriter;
import java.io.StringWriter;
import net.conselldemallorca.helium.core.model.service.PluginService;
import net.conselldemallorca.helium.core.model.service.ServiceProxy;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import es.indra.www.portafirmasmcgdws.mcgdws.AttributesState;
import es.indra.www.portafirmasmcgdws.mcgdws.CallbackRequest;
import es.indra.www.portafirmasmcgdws.mcgdws.CallbackResponse;
import es.indra.www.portafirmasmcgdws.mcgdws.LogMessage;
/**
* Implementació amb Axis del servei per processar automàticament els canvis
* del portasignatures.
*
* @author Limit Tecnologies <limit@limit.es>
*/
public class MCGDwsImpl implements es.indra.www.portafirmasmcgdws.mcgdws.MCGDws {
private static final int DOCUMENT_BLOQUEJAT = 0;
private static final int DOCUMENT_PENDENT = 1;
private static final int DOCUMENT_SIGNAT = 2;
private static final int DOCUMENT_REBUTJAT = 3;
public CallbackResponse callback(CallbackRequest callbackRequest) throws java.rmi.RemoteException {
Integer document = callbackRequest.getApplication().getDocument().getId();
AttributesState estat = callbackRequest.getApplication().getDocument().getAttributes().getState();
logger.info("Inici procés petició callback portasignatures (id=" + document + ", estat=" + estat.getValue() + ")");
CallbackResponse callbackResponse = new CallbackResponse();
try {
PluginService pluginService = ServiceProxy.getInstance().getPluginService();
Double resposta = -1D;
boolean processamentOk;
try {
switch (estat.getValue()) {
case DOCUMENT_BLOQUEJAT:
resposta = 1D;
logger.info("Fi procés petició callback portasignatures (id=" + document + ", estat=" + estat.getValue() + "-Bloquejat, resposta=" + resposta + ")");
break;
case DOCUMENT_PENDENT:
resposta = 1D;
logger.info("Fi procés petició callback portasignatures (id=" + document + ", estat=" + estat.getValue() + "-Pendent, resposta=" + resposta + ")");
break;
case DOCUMENT_SIGNAT:
processamentOk = pluginService.processarDocumentCallbackPortasignatures(
document,
false,
null);
resposta = (processamentOk) ? 1D : -1D;
logger.info("Fi procés petició callback portasignatures (id=" + document + ", estat=" + estat.getValue() + "-Signat, resposta=" + resposta + ")");
break;
case DOCUMENT_REBUTJAT:
processamentOk = pluginService.processarDocumentCallbackPortasignatures(
document,
true,
callbackRequest.getApplication().getDocument().getSigner().getRejection().getDescription());
resposta = (processamentOk) ? 1D : -1D;
logger.info("Fi procés petició callback portasignatures (id=" + document + ", estat=" + estat.getValue() + "-Rebutjat, resposta=" + resposta + ")");
break;
default:
break;
}
} catch (Exception ex) {
logger.error("Error procés petició callback portasignatures (id=" + document + ", estat=" + estat.getValue() + ", resposta=" + resposta + "): " + ex.getMessage());
}
callbackResponse.setVersion("1.0");
callbackResponse.setLogMessages(new LogMessage[0]);
callbackResponse.set_return(resposta.doubleValue());
} catch (Exception e) {
logger.error("Error obtenint l'estat del document.", e);
callbackResponse.setVersion("1.0");
LogMessage logMessage = new LogMessage();
logMessage.setCode("-1");
logMessage.setSeverity("High");
logMessage.setTitle(e.getMessage());
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
logMessage.setDescription(sw.toString());
callbackResponse.setLogMessages(new LogMessage[] { logMessage });
callbackResponse.set_return((double) -1);
}
return callbackResponse;
}
private static final Log logger = LogFactory.getLog(MCGDwsImpl.class);
}