fixes bug#22366

dev:lucas

qua:

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@108345 d1611594-4594-4d17-8e1d-87c2c4800839
master
lucas.taia 2021-08-16 16:16:23 +00:00
parent 09327529ea
commit 73137d75bf
3 changed files with 137 additions and 61 deletions

View File

@ -14,6 +14,7 @@ import org.apache.http.impl.auth.BasicScheme;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.log4j.Logger;
import org.springframework.context.ApplicationContext;
import org.zkoss.util.resource.Labels;
import org.zkoss.zk.ui.util.Clients;
import org.zkoss.zul.Messagebox;
@ -46,9 +47,17 @@ public class ItemMenuLimparCacheLocalidadesAPI extends DefaultItemMenuSistema {
@Override
public void ejecutar() {
try {
int resp = Messagebox.show(
Labels.getLabel("limparCacheLocalidadesAPI.message.pergunta"),
Labels.getLabel("limparCacheLocalidadesAPI.title"), Messagebox.YES | Messagebox.NO, Messagebox.QUESTION);
if (resp == Messagebox.YES) {
String[] urls = getURLSAPI();
if( urls == null || urls.length == 0 ) {
if (urls == null || urls.length == 0) {
Clients.alert(org.zkoss.util.resource.Labels.getLabel("limparCacheLocalidadesAPI.message.naoconfigurado"),
org.zkoss.util.resource.Labels.getLabel("limparCacheLocalidadesAPI.title"), Messagebox.INFORMATION);
return;
@ -66,12 +75,25 @@ public class ItemMenuLimparCacheLocalidadesAPI extends DefaultItemMenuSistema {
if (tenant != null) {
url = url.replaceAll("\\[.*?\\]", "");
}
String urlOriginal = url;
url = montarUrlRequest(url);
httpRequestApi(url, tenant);
ThreadCache cache = new ThreadCache(url, tenant, urlOriginal);
Thread thread = new Thread(cache);
thread.start();
thread.join();
Clients.alert(cache.getRetorno(), org.zkoss.util.resource.Labels.getLabel("limparCacheLocalidadesAPI.title"), Messagebox.INFORMATION);
}
}
} catch (Exception e) {
Clients.alert(e.getMessage(),
org.zkoss.util.resource.Labels.getLabel("limparCacheLocalidadesAPI.title"), Messagebox.ERROR);
log.error(e.getMessage(), e);
}
String message = "Solicitação de limpeza de cache executada com sucesso, o mesmo já está sendo processado pela API.";
Clients.alert(message, org.zkoss.util.resource.Labels.getLabel("limparCacheLocalidadesAPI.title"), Messagebox.INFORMATION);
}
private String montarUrlRequest(String url) {
@ -85,41 +107,12 @@ public class ItemMenuLimparCacheLocalidadesAPI extends DefaultItemMenuSistema {
return url.concat("adm/limparCache");
}
private void httpRequestApi(final String url, final String tenant) {
new Thread(new Runnable() {
@Override
public void run() {
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
UsernamePasswordCredentials creds = null;
try {
creds = new UsernamePasswordCredentials("internal", getToken());
request.addHeader(new BasicScheme().authenticate(creds, request));
if (tenant != null) {
request.addHeader("x-tenant-id", tenant);
}
HttpResponse response = client.execute(request);
if(response != null && response.getStatusLine() != null) {
log.info(String.format(":: Response Status Code %d ::", response.getStatusLine().getStatusCode()));
}
} catch (Exception e) {
log.error("Ocorreu um erro ao executar a requisição de limpar cache de localidade da API");
}
}
}).start();
}
private String[] getURLSAPI() {
ApplicationContext appContext = AppContext.getApplicationContext();
ConstanteService constanteService = (ConstanteService) appContext.getBean("constanteService");
String constante = constanteService.buscarURLAPI();
return constante==null ? null : constante.split("\\|");
return constante == null ? null : constante.split("\\|");
}
private String getToken() throws JOSEException {
@ -141,4 +134,85 @@ public class ItemMenuLimparCacheLocalidadesAPI extends DefaultItemMenuSistema {
return jwsObject.serialize();
}
public class ThreadCache implements Runnable {
private final String url;
private final String tenant;
private String retorno;
private String urlOriginal;
public String getUrl() {
return url;
}
public String getTenant() {
return tenant;
}
public String getRetorno() {
return retorno;
}
public void setRetorno(String retorno) {
this.retorno = retorno;
}
public String getUrlOriginal() {
return urlOriginal;
}
public void setUrlOriginal(String urlOriginal) {
this.urlOriginal = urlOriginal;
}
public ThreadCache(String url, String tenant, String urlOriginal) {
this.url = url;
this.tenant = tenant;
this.urlOriginal = urlOriginal;
}
public void run() {
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
UsernamePasswordCredentials creds = null;
try {
creds = new UsernamePasswordCredentials("internal", getToken());
request.addHeader(new BasicScheme().authenticate(creds, request));
if (tenant != null) {
request.addHeader("x-tenant-id", tenant);
}
HttpResponse response = client.execute(request);
if (response != null && response.getStatusLine() != null) {
log.info(String.format(":: Response Status Code %d ::", response.getStatusLine().getStatusCode()));
}
Integer codigoRetorno = (response != null && response.getStatusLine() != null) ? response.getStatusLine().getStatusCode() : null;
retorno = montarMensagemRetorno(tenant, urlOriginal, codigoRetorno, null);
} catch (Exception e) {
retorno = montarMensagemRetorno(tenant, urlOriginal, null, e.getMessage());
log.error("Ocorreu um erro ao executar a requisição de limpar cache de localidade da API", e);
}
}
}
private String montarMensagemRetorno(String tenant, String url, Integer codigoRetorno, String mensagemErro) {
StringBuilder mensagemRetorno = new StringBuilder();
mensagemRetorno.append("ULR -> ").append(url).append("\n");
mensagemRetorno.append("tenant -> ").append(tenant).append("\n");
if (mensagemErro == null) {
mensagemRetorno.append("Resposta -> ").append((codigoRetorno != null && codigoRetorno.equals(200)) ? "Solicitação de limpeza de cache executada com sucesso, código " + codigoRetorno : "Erro ao enviar solicitação, código " + codigoRetorno);
} else {
mensagemRetorno.append("Resposta -> ").append(mensagemErro);
}
return mensagemRetorno.toString();
}
}

View File

@ -9083,6 +9083,7 @@ filtroTaxaEmbarqueW2i.labelAviso.value= Atenção. Certifique-se que todos os da
indexController.mniLimparCacheLocalidadesAPI.label = Recarregar Cache de Localidades (API)
limparCacheLocalidadesAPI.title = Localidades (API)
limparCacheLocalidadesAPI.message.naoconfigurado=A constante de configuração da URL da API não foi encontrada.
limparCacheLocalidadesAPI.message.pergunta=Deseja Recarregar Cache de Localidades (API) ? (API de Localidade ficará indisponível durante a execução)
#Relatório de Aproveitamento Financeiro
relatorioAproveitamentoFinanceiroController.window.title = Relatório de Aproveitamento Financeiro

View File

@ -9819,6 +9819,7 @@ filtroTaxaEmbarqueW2i.labelAviso.value= Atenção. Certifique-se que todos os da
indexController.mniLimparCacheLocalidadesAPI.label = Recarregar Cache de Localidades (API)
limparCacheLocalidadesAPI.title = Localidades (API)
limparCacheLocalidadesAPI.message.naoconfigurado=A constante de configuração da URL da API não foi encontrada.
limparCacheLocalidadesAPI.message.pergunta=Deseja recarregar Cache de Localidades (API) ? (API de Localidade ficará indisponível durante a execução)
#Relatório de Aproveitamento Financeiro
relatorioAproveitamentoFinanceiroController.window.title = Relatório de Aproveitamento Financeiro