/** * */ package net.conselldemallorca.helium.core.model.dao; import java.util.List; import net.conselldemallorca.helium.core.model.exception.PluginException; import net.conselldemallorca.helium.core.util.GlobalProperties; import net.conselldemallorca.helium.integracio.plugins.custodia.CustodiaPlugin; import net.conselldemallorca.helium.integracio.plugins.custodia.CustodiaPluginException; import net.conselldemallorca.helium.integracio.plugins.signatura.RespostaValidacioSignatura; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.stereotype.Component; /** * Dao per accedir a la funcionalitat del plugin de custòdia documental * * @author Limit Tecnologies <limit@limit.es> */ @Component public class PluginCustodiaDao { private CustodiaPlugin custodiaPlugin; public String afegirSignatura( Long documentId, String gesdocId, String nomArxiuSignat, String codiTipusCustodia, byte[] signatura) throws PluginException { try { return getCustodiaPlugin().addSignature( documentId.toString(), gesdocId, nomArxiuSignat, codiTipusCustodia, signatura); } catch (CustodiaPluginException ex) { logger.error("Error al guardar la signatura dins la custòdia", ex); throw new PluginException("Error al guardar la signatura dins la custòdia", ex); } } public List<byte[]> obtenirSignatures(String documentId) throws PluginException { try { return getCustodiaPlugin().getSignatures(documentId); } catch (CustodiaPluginException ex) { logger.error("Error al obtenir les signatures de la custòdia", ex); throw new PluginException("Error al obtenir les signatures de la custòdia", ex); } } public byte[] obtenirSignaturesAmbArxiu(String documentId) throws PluginException { try { return getCustodiaPlugin().getSignaturesAmbArxiu(documentId); } catch (CustodiaPluginException ex) { logger.error("Error al obtenir l'arxiu amb les signatures de la custòdia", ex); throw new PluginException("Error al obtenir l'arxiu amb les signatures de la custòdia", ex); } } public void esborrarSignatures(String documentId) throws PluginException { try { getCustodiaPlugin().deleteSignatures(documentId); } catch (CustodiaPluginException ex) { logger.error("Error al esborrar les signatures de la custòdia", ex); throw new PluginException("Error al esborrar les signatures de la custòdia", ex); } } public List<RespostaValidacioSignatura> dadesValidacioSignatura(String documentId) throws PluginException { try { return getCustodiaPlugin().dadesValidacioSignatura(documentId); } catch (CustodiaPluginException ex) { logger.error("Error al obtenir informació de les signatures de la custòdia", ex); throw new PluginException("Error al obtenir informació de les signatures de la custòdia", ex); } } public boolean potObtenirInfoSignatures() { return getCustodiaPlugin().potObtenirInfoSignatures(); } public boolean isValidacioImplicita() { return getCustodiaPlugin().isValidacioImplicita(); } public String getUrlComprovacioSignatura(String id) throws PluginException { try { return getCustodiaPlugin().getUrlComprovacioSignatura(id); } catch (CustodiaPluginException ex) { logger.error("Error al generar la url de comprovació de document", ex); throw new PluginException("Error al generar la url de comprovació de document", ex); } } public boolean isCustodiaActiu() { String pluginClass = GlobalProperties.getInstance().getProperty("app.custodia.plugin.class"); return (pluginClass != null && !"".equals(pluginClass)); } @SuppressWarnings("rawtypes") private CustodiaPlugin getCustodiaPlugin() { if (custodiaPlugin == null) { String pluginClass = GlobalProperties.getInstance().getProperty("app.custodia.plugin.class"); if (pluginClass != null && pluginClass.length() > 0) { try { Class clazz = Class.forName(pluginClass); custodiaPlugin = (CustodiaPlugin)clazz.newInstance(); } catch (Exception ex) { logger.error("No s'ha pogut crear la instància del plugin de custòdia", ex); throw new PluginException("No s'ha pogut crear la instància del plugin de custòdia", ex); } } } return custodiaPlugin; } private static final Log logger = LogFactory.getLog(PluginCustodiaDao.class); }