diff --git a/pom.xml b/pom.xml index e305e46ca..f10a820b3 100644 --- a/pom.xml +++ b/pom.xml @@ -4,11 +4,11 @@ 4.0.0 br.com.rjconsultores ventaboletosadm - 1.130.1 + 1.131.0 war - 1.100.0 + 1.101.0 1.88.0 UTF-8 diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/seguridad/EditarOperadorEmbarcadaController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/seguridad/EditarOperadorEmbarcadaController.java index dc8d85917..ab1af2d65 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/seguridad/EditarOperadorEmbarcadaController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/seguridad/EditarOperadorEmbarcadaController.java @@ -42,9 +42,11 @@ import com.rjconsultores.ventaboletos.service.ClaseServicioService; import com.rjconsultores.ventaboletos.service.MarcaService; import com.rjconsultores.ventaboletos.service.OperadorEmbarcadaService; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; +import com.rjconsultores.ventaboletos.web.utilerias.InputMessageBox; import com.rjconsultores.ventaboletos.web.utilerias.MyComboboxPuntoVenta; import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; +import com.rjconsultores.ventaboletos.web.utilerias.api.CacheOperadorEmbarcada; import com.rjconsultores.ventaboletos.web.utilerias.paginacion.HibernateSearchObject; import com.rjconsultores.ventaboletos.web.utilerias.paginacion.PagedListWrapper; import com.rjconsultores.ventaboletos.web.utilerias.render.ItemRenderRutaOperadorEmbarcada; @@ -553,7 +555,13 @@ public class EditarOperadorEmbarcadaController extends MyGenericForwardComposer operador = operadorService.suscribirActualizar(operador, linhas, listaServicos); + Usuario usuario = operador.getUsuario(); + String OperadorId = operadorEdicao.getOperadorEmbarcadaId().toString(); + String senha = InputMessageBox.showQuestion(Labels.getLabel("limparCacheAPI.message.senha"), + Labels.getLabel("limparCacheAPI.title"), Messagebox.OK); + + CacheOperadorEmbarcada.getInstance().limparCacheOperador(OperadorId, senha, usuario); } try { Messagebox.show(Labels.getLabel("busquedaOperadorEmbarcada.mensage.operadorSalvo"), Labels.getLabel("busquedaOperadorEmbarcada.mensage.operadorSalvo.title"), @@ -582,6 +590,12 @@ public class EditarOperadorEmbarcadaController extends MyGenericForwardComposer if (resp == Messagebox.YES) { + String senha = InputMessageBox.showQuestion(Labels.getLabel("limparCacheAPI.message.senha"), + Labels.getLabel("limparCacheAPI.title"), Messagebox.OK); + + Usuario usuario = operadorEdicao.getUsuario(); + String OperadorId = operadorEdicao.getOperadorEmbarcadaId().toString(); + operadorService.apagar(operadorEdicao); Messagebox.show( @@ -589,6 +603,8 @@ public class EditarOperadorEmbarcadaController extends MyGenericForwardComposer Labels.getLabel("busquedaOperadorEmbarcada.MSG.borrarPergunta.title"), Messagebox.OK, Messagebox.INFORMATION); + CacheOperadorEmbarcada.getInstance().limparCacheOperador(OperadorId, senha, usuario); + closeWindow(); } } catch (Exception ex) { diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/seguridad/api/LimparCacheApiController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/seguridad/api/LimparCacheApiController.java index e5867eb22..d7d50ad99 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/seguridad/api/LimparCacheApiController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/seguridad/api/LimparCacheApiController.java @@ -24,6 +24,7 @@ import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; import com.rjconsultores.ventaboletos.web.utilerias.InputMessageBox; import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; import com.rjconsultores.ventaboletos.web.utilerias.api.ApiCallRunnable; +import com.rjconsultores.ventaboletos.web.utilerias.api.ETipoEnvio; import com.rjconsultores.ventaboletos.web.utilerias.spring.AppContext; /** @@ -119,7 +120,7 @@ public class LimparCacheApiController extends MyGenericForwardComposer { urlBase, user.getClaveUsuario(), secret, - false); + ETipoEnvio.POST); Thread thread = new Thread(cache); thread.start(); thread.join(); diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/api/ApiCallRunnable.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/api/ApiCallRunnable.java index c8dc0ba97..e8dcd6336 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/utilerias/api/ApiCallRunnable.java +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/api/ApiCallRunnable.java @@ -10,6 +10,7 @@ import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpUriRequest; @@ -39,7 +40,7 @@ public class ApiCallRunnable implements Runnable { private String retorno; private String urlBase; private String user = "internal"; - private boolean get = true; + private ETipoEnvio tipoEnvio; public String getUrl() { return url; @@ -71,14 +72,14 @@ public class ApiCallRunnable implements Runnable { this.urlBase = urlOriginal; } - public ApiCallRunnable(String url, String tenant, String urlBase, String user, String secret, boolean get) { + public ApiCallRunnable(String url, String tenant, String urlBase, String user, String secret, ETipoEnvio tipoEnvio) { super(); this.secret = secret; this.url = url; this.tenant = tenant; this.urlBase = urlBase; this.user = user; - this.get = get; + this.tipoEnvio = tipoEnvio; } @SuppressWarnings("deprecation") @@ -90,10 +91,12 @@ public class ApiCallRunnable implements Runnable { HttpUriRequest request; - if(isGet()) { - request = new HttpGet(url); - }else { + if(ETipoEnvio.POST.equals(tipoEnvio)) { request = new HttpPost(url); + } else if(ETipoEnvio.DELETE.equals(tipoEnvio)) { + request = new HttpDelete(url); + } else { + request = new HttpGet(url); } UsernamePasswordCredentials creds = null; @@ -172,12 +175,12 @@ public class ApiCallRunnable implements Runnable { this.secret = secret; } - public boolean isGet() { - return get; + public ETipoEnvio getTipoEnvio() { + return tipoEnvio; } - public void setGet(boolean get) { - this.get = get; + public void setTipoEnvio(ETipoEnvio tipoEnvio) { + this.tipoEnvio = tipoEnvio; } } \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/api/CacheOperadorEmbarcada.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/api/CacheOperadorEmbarcada.java new file mode 100644 index 000000000..e250a7234 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/api/CacheOperadorEmbarcada.java @@ -0,0 +1,120 @@ +package com.rjconsultores.ventaboletos.web.utilerias.api; + +import java.util.List; + +import org.apache.commons.lang.StringUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.springframework.context.ApplicationContext; +import org.zkoss.util.resource.Labels; + +import com.rjconsultores.ventaboletos.entidad.Empresa; +import com.rjconsultores.ventaboletos.entidad.Usuario; +import com.rjconsultores.ventaboletos.enums.CacheApiEnum; +import com.rjconsultores.ventaboletos.service.ConstanteService; +import com.rjconsultores.ventaboletos.service.UsuarioEmpresaService; +import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; +import com.rjconsultores.ventaboletos.web.utilerias.spring.AppContext; + +public class CacheOperadorEmbarcada { + + private static CacheOperadorEmbarcada instance; + + public final String URL_API_EMB = "URL_API_EMB"; + + private static Logger log = LogManager.getLogger(CacheOperadorEmbarcada.class); + + public static CacheOperadorEmbarcada getInstance() { + if(instance == null) { + instance = new CacheOperadorEmbarcada(); + } + + return instance; + } + + public void limparCacheOperador(String OperadorId, String senha, Usuario usuario) { + try { + log.info("Inicio limparCacheOperador, OperadorId: " + OperadorId); + CacheApiEnum entidade = CacheApiEnum.OPERADOR_ESPECIFICO; + + String[] urls = getURLSAPI(); + + if (urls == null || urls.length == 0) { + log.info(Labels.getLabel("limparCacheAPI.message.naoconfigurado")); + return; + } + + Usuario user = UsuarioLogado.getUsuarioLogado(); + + List empresas = buscarEmpresas(usuario); + + for (String url : urls) { + + if (StringUtils.isBlank(url) || url.contains("|")) { + log.info(Labels.getLabel("limparCacheAPI.message.naoconfigurado")); + return; + } + + String tenant = StringUtils.substringBetween(url, "[", "]"); + if (tenant != null) { + url = url.replaceAll("\\[.*?\\]", ""); + } + String urlBase = url; + + for(Empresa emp : empresas) { + + url = montarUrlRequest(url, entidade.getUri(), OperadorId, emp.getEmpresaId()); + + log.info("URL: " + url); + + ApiCallRunnable cache = new ApiCallRunnable( + url, + tenant, + urlBase, + user.getClaveUsuario(), + senha, + ETipoEnvio.DELETE); + + Thread thread = new Thread(cache); + thread.start(); + thread.join(); + + log.info(cache.getRetorno()); + } + } + + log.info("Final limparCacheOperador, OperadorId: " + OperadorId); + } catch (Exception e) { + log.error("Erro ao limpar cache operador embarcada", e); + } + } + + private String montarUrlRequest(String url, String uri, String OperadorId, Integer empresaId) { + url = url.toLowerCase(); + + if (!url.endsWith("/")) { + url += "/"; + } + + uri = uri.replace("operador_id", OperadorId); + uri = uri.replace("empresa_id", empresaId.toString()); + + return url.concat(uri); + } + + private List buscarEmpresas(Usuario usuario) { + ApplicationContext appContext = AppContext.getApplicationContext(); + UsuarioEmpresaService usuarioEmpService = (UsuarioEmpresaService) appContext.getBean("usuarioEmpresaService"); + + return usuarioEmpService.obtenerEmpresa(usuario); + } + + private String[] getURLSAPI() { + ApplicationContext appContext = AppContext.getApplicationContext(); + ConstanteService constanteService = (ConstanteService) appContext.getBean("constanteService"); + String constante = constanteService.buscarURLAPIEmb(); + + return constante == null ? null : constante.split("\\|"); + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/api/ETipoEnvio.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/api/ETipoEnvio.java new file mode 100644 index 000000000..24e490eae --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/api/ETipoEnvio.java @@ -0,0 +1,5 @@ +package com.rjconsultores.ventaboletos.web.utilerias.api; + +public enum ETipoEnvio { + GET, POST, DELETE; +}