package net.conselldemallorca.helium.ws.backoffice.plugin; import net.conselldemallorca.helium.core.model.dao.PluginTramitacioDao; import net.conselldemallorca.helium.core.model.exception.PluginException; import net.conselldemallorca.helium.integracio.plugins.tramitacio.DadesTramit; import net.conselldemallorca.helium.integracio.plugins.tramitacio.DadesVistaDocument; import net.conselldemallorca.helium.integracio.plugins.tramitacio.ObtenirDadesTramitRequest; import net.conselldemallorca.helium.integracio.plugins.tramitacio.ObtenirVistaDocumentRequest; import net.conselldemallorca.helium.integracio.plugins.tramitacio.PublicarEventRequest; import net.conselldemallorca.helium.integracio.plugins.tramitacio.PublicarExpedientRequest; import net.conselldemallorca.helium.integracio.plugins.tramitacio.ResultatProcesTramitRequest; import net.conselldemallorca.helium.integracio.plugins.tramitacio.TramitacioPluginException; 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 tramitació * * @author Limit Tecnologies <limit@limit.es> */ @Component public class PluginTramitacioSeleniumDao { private net.conselldemallorca.helium.ws.backoffice.plugin.TramitacioSeleniumPlugin tramitacioPlugin; public void publicarExpedient( PublicarExpedientRequest request) { try { getTramitacioSeleniumPlugin().publicarExpedient(request); } catch (TramitacioPluginException ex) { logger.error("Error al publicar l'expedient", ex); throw new PluginException("Error al publicar l'expedient", ex); } } public void publicarEvent( PublicarEventRequest request) { try { getTramitacioSeleniumPlugin().publicarEvent(request); } catch (TramitacioPluginException ex) { logger.error("Error al publicar l'event", ex); throw new PluginException("Error al publicar l'event", ex); } } public DadesTramit obtenirDadesTramit( ObtenirDadesTramitRequest request) { try { return getTramitacioSeleniumPlugin().obtenirDadesTramit(request); } catch (TramitacioPluginException ex) { logger.error("Error al obtenir les dades del tràmit " + request, ex); throw new PluginException("Error al obtenir les dades del tràmit " + request, ex); } } public DadesVistaDocument obtenirVistaDocument( ObtenirVistaDocumentRequest request) { try { return getTramitacioSeleniumPlugin().obtenirVistaDocument(request); } catch (TramitacioPluginException ex) { logger.error("Error al obtenir la vista del document " + request, ex); throw new PluginException("Error al obtenir la vista del document " + request, ex); } } public void comunicarResultatProcesTramit( ResultatProcesTramitRequest request) { try { getTramitacioSeleniumPlugin().comunicarResultatProcesTramit(request); } catch (TramitacioPluginException ex) { logger.error("Error al comunicar el resultat del proces", ex); throw new PluginException("Error al comunicar el resultat del proces", ex); } } @SuppressWarnings("rawtypes") private TramitacioSeleniumPlugin getTramitacioSeleniumPlugin() { if (tramitacioPlugin == null) { try { Class clazz = Class.forName("net.conselldemallorca.helium.ws.backoffice.plugin.TramitacioPluginSistrav3"); tramitacioPlugin = (TramitacioSeleniumPlugin)clazz.newInstance(); } catch (Exception ex) { logger.error("No s'ha pogut crear la instància del plugin de tramitació", ex); throw new PluginException("No s'ha pogut crear la instància del plugin de tramitació", ex); } } return tramitacioPlugin; } private static final Log logger = LogFactory.getLog(PluginTramitacioDao.class); }