Integração API Revenue Geoloc - bug#AL-5017
parent
c676f0fb36
commit
544cf7aa3d
2
pom.xml
2
pom.xml
|
@ -3,7 +3,7 @@
|
|||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>br.com.rjconsultores</groupId>
|
||||
<artifactId>ModelWeb</artifactId>
|
||||
<version>1.118.1</version>
|
||||
<version>1.119.0</version>
|
||||
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
package com.rjconsultores.ventaboletos.dao;
|
||||
|
||||
import com.rjconsultores.ventaboletos.entidad.RevenueConfig;
|
||||
|
||||
public interface RevenueConfigDAO {
|
||||
|
||||
public RevenueConfig obtenerRevenueConfigActivo();
|
||||
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
package com.rjconsultores.ventaboletos.dao.hibernate;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.hibernate.Criteria;
|
||||
import org.hibernate.SessionFactory;
|
||||
import org.hibernate.criterion.Restrictions;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import com.rjconsultores.ventaboletos.dao.RevenueConfigDAO;
|
||||
import com.rjconsultores.ventaboletos.entidad.RevenueConfig;
|
||||
|
||||
@Repository("revenueConfigDAO")
|
||||
public class RevenueConfigHibernateDAO extends GenericHibernateDAO<RevenueConfig, Integer> implements RevenueConfigDAO {
|
||||
|
||||
@Autowired
|
||||
public RevenueConfigHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) {
|
||||
setSessionFactory(factory);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public RevenueConfig obtenerRevenueConfigActivo() {
|
||||
Criteria c = getSession().createCriteria(getPersistentClass());
|
||||
c.add(Restrictions.eq(ACTIVO, Boolean.TRUE));
|
||||
c.setMaxResults(1);
|
||||
|
||||
List<RevenueConfig> list = c.list();
|
||||
|
||||
if (list != null && !list.isEmpty()) {
|
||||
return list.get(0);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,175 @@
|
|||
package com.rjconsultores.ventaboletos.entidad;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
import javax.persistence.Basic;
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.SequenceGenerator;
|
||||
import javax.persistence.Table;
|
||||
import javax.persistence.Temporal;
|
||||
import javax.persistence.TemporalType;
|
||||
|
||||
@Entity
|
||||
@SequenceGenerator(name = "REVENUE_CONFIG_SEQ", sequenceName = "REVENUE_CONFIG_SEQ", allocationSize = 1)
|
||||
@Table(name = "REVENUE_CONFIG")
|
||||
public class RevenueConfig implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Id
|
||||
@Basic(optional = false)
|
||||
@GeneratedValue(strategy = GenerationType.AUTO, generator = "REVENUE_CONFIG_SEQ")
|
||||
@Column(name = "REVENUECONFIG_ID")
|
||||
private Integer revenueconfigId;
|
||||
|
||||
@Column(name = "INDUSACANALVENTA")
|
||||
private Boolean indusacanalventa;
|
||||
|
||||
@Column(name = "ACTIVO")
|
||||
private Boolean activo;
|
||||
|
||||
@Column(name = "FECMODIF")
|
||||
@Temporal(TemporalType.TIMESTAMP)
|
||||
private Date fecmodif;
|
||||
|
||||
@Column(name = "USUARIO_ID")
|
||||
private Integer usuarioId;
|
||||
|
||||
@Column(name = "TOKEN")
|
||||
private String token;
|
||||
|
||||
@Column(name = "CONNECTOR_ID")
|
||||
private String connectorId;
|
||||
|
||||
@Column(name = "URL_PRICE")
|
||||
private String urlPrice;
|
||||
|
||||
@Column(name = "URL_PRICE_CANALVENDA")
|
||||
private String urlPriceCanalVenda;
|
||||
|
||||
@Column(name = "URL_MARKET")
|
||||
private String urlMarket;
|
||||
|
||||
@Column(name = "URL_SITE")
|
||||
private String urlSite;
|
||||
|
||||
@Column(name = "URL_ALERTA")
|
||||
private String urlAlerta;
|
||||
|
||||
@Column(name = "URL_GEOLOC")
|
||||
private String urlGeoLoc;
|
||||
|
||||
public Integer getRevenueconfigId() {
|
||||
return revenueconfigId;
|
||||
}
|
||||
|
||||
public void setRevenueconfigId(Integer revenueconfigId) {
|
||||
this.revenueconfigId = revenueconfigId;
|
||||
}
|
||||
|
||||
public Boolean getIndusacanalventa() {
|
||||
return indusacanalventa;
|
||||
}
|
||||
|
||||
public void setIndusacanalventa(Boolean indusacanalventa) {
|
||||
this.indusacanalventa = indusacanalventa;
|
||||
}
|
||||
|
||||
public Boolean getActivo() {
|
||||
return activo;
|
||||
}
|
||||
|
||||
public void setActivo(Boolean activo) {
|
||||
this.activo = activo;
|
||||
}
|
||||
|
||||
public Date getFecmodif() {
|
||||
return fecmodif;
|
||||
}
|
||||
|
||||
public void setFecmodif(Date fecmodif) {
|
||||
this.fecmodif = fecmodif;
|
||||
}
|
||||
|
||||
public Integer getUsuarioId() {
|
||||
return usuarioId;
|
||||
}
|
||||
|
||||
public void setUsuarioId(Integer usuarioId) {
|
||||
this.usuarioId = usuarioId;
|
||||
}
|
||||
|
||||
public String getToken() {
|
||||
return token;
|
||||
}
|
||||
|
||||
public void setToken(String token) {
|
||||
this.token = token;
|
||||
}
|
||||
|
||||
public String getConnectorId() {
|
||||
return connectorId;
|
||||
}
|
||||
|
||||
public void setConnectorId(String connectorId) {
|
||||
this.connectorId = connectorId;
|
||||
}
|
||||
|
||||
public String getUrlPrice() {
|
||||
return urlPrice;
|
||||
}
|
||||
|
||||
public void setUrlPrice(String urlPrice) {
|
||||
this.urlPrice = urlPrice;
|
||||
}
|
||||
|
||||
public String getUrlPriceCanalVenda() {
|
||||
return urlPriceCanalVenda;
|
||||
}
|
||||
|
||||
public void setUrlPriceCanalVenda(String urlPriceCanalVenda) {
|
||||
this.urlPriceCanalVenda = urlPriceCanalVenda;
|
||||
}
|
||||
|
||||
public String getUrlMarket() {
|
||||
return urlMarket;
|
||||
}
|
||||
|
||||
public void setUrlMarket(String urlMarket) {
|
||||
this.urlMarket = urlMarket;
|
||||
}
|
||||
|
||||
public String getUrlSite() {
|
||||
return urlSite;
|
||||
}
|
||||
|
||||
public void setUrlSite(String urlSite) {
|
||||
this.urlSite = urlSite;
|
||||
}
|
||||
|
||||
public String getUrlAlerta() {
|
||||
return urlAlerta;
|
||||
}
|
||||
|
||||
public void setUrlAlerta(String urlAlerta) {
|
||||
this.urlAlerta = urlAlerta;
|
||||
}
|
||||
|
||||
public String getUrlGeoLoc() {
|
||||
return urlGeoLoc;
|
||||
}
|
||||
|
||||
public void setUrlGeoLoc(String urlGeoLoc) {
|
||||
this.urlGeoLoc = urlGeoLoc;
|
||||
}
|
||||
|
||||
public static long getSerialversionuid() {
|
||||
return serialVersionUID;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
package com.rjconsultores.ventaboletos.service;
|
||||
|
||||
import com.rjconsultores.ventaboletos.entidad.RevenueConfig;
|
||||
import com.rjconsultores.ventaboletos.exception.BusinessException;
|
||||
import com.rjconsultores.ventaboletos.vo.revenue.RevenueGeoloc;
|
||||
|
||||
public interface RevenueConfigService {
|
||||
|
||||
public RevenueConfig obtenerRevenueConfigActivo();
|
||||
|
||||
public RevenueGeoloc pesquisarGeoloc(String endereco) throws BusinessException;
|
||||
|
||||
}
|
|
@ -0,0 +1,86 @@
|
|||
package com.rjconsultores.ventaboletos.service.impl;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.http.HttpEntity;
|
||||
import org.apache.http.HttpResponse;
|
||||
import org.apache.http.client.methods.HttpPost;
|
||||
import org.apache.http.entity.ContentType;
|
||||
import org.apache.http.entity.StringEntity;
|
||||
import org.apache.http.impl.client.CloseableHttpClient;
|
||||
import org.apache.http.impl.client.HttpClientBuilder;
|
||||
import org.apache.http.util.EntityUtils;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.json.JSONObject;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.zkoss.util.resource.Labels;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.rjconsultores.ventaboletos.dao.RevenueConfigDAO;
|
||||
import com.rjconsultores.ventaboletos.entidad.RevenueConfig;
|
||||
import com.rjconsultores.ventaboletos.exception.BusinessException;
|
||||
import com.rjconsultores.ventaboletos.service.RevenueConfigService;
|
||||
import com.rjconsultores.ventaboletos.vo.revenue.RevenueGeoloc;
|
||||
|
||||
@Service("revenueConfigService")
|
||||
public class RevenueConfigServiceImpl implements RevenueConfigService {
|
||||
|
||||
private static Logger log = LogManager.getLogger(RevenueConfigService.class);
|
||||
|
||||
@Autowired
|
||||
private RevenueConfigDAO revenueConfigDAO;
|
||||
|
||||
@Override
|
||||
public RevenueConfig obtenerRevenueConfigActivo() {
|
||||
return revenueConfigDAO.obtenerRevenueConfigActivo();
|
||||
}
|
||||
|
||||
@Override
|
||||
public RevenueGeoloc pesquisarGeoloc(String endereco) throws BusinessException {
|
||||
RevenueGeoloc retorno = null;
|
||||
try {
|
||||
RevenueConfig revenueConfig = this.obtenerRevenueConfigActivo();
|
||||
verificarRevenueConfigGeoloc(revenueConfig);
|
||||
|
||||
HttpPost request = new HttpPost(revenueConfig.getUrlGeoLoc());
|
||||
request.addHeader("token-access", revenueConfig.getToken());
|
||||
request.addHeader("connector-id", revenueConfig.getConnectorId());
|
||||
request.addHeader("Content-type", "application/json");
|
||||
|
||||
JSONObject payload = new JSONObject();
|
||||
payload.put("endereco", endereco);
|
||||
HttpEntity entityPost = new StringEntity(payload.toString(), ContentType.APPLICATION_JSON);
|
||||
request.setEntity(entityPost);
|
||||
|
||||
CloseableHttpClient client = HttpClientBuilder.create().build();
|
||||
HttpResponse response = client.execute(request);
|
||||
|
||||
if (response.getStatusLine().getStatusCode() == 200 && response.getEntity() != null) {
|
||||
Type listType = new TypeToken<List<RevenueGeoloc>>(){}.getType();
|
||||
String entity = EntityUtils.toString(response.getEntity());
|
||||
List<RevenueGeoloc> retornos = new Gson().fromJson(entity, listType);
|
||||
if (!retornos.isEmpty()) {
|
||||
retorno = retornos.get(0);
|
||||
}
|
||||
}
|
||||
} catch (BusinessException e) {
|
||||
throw e;
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw new BusinessException(e.getMessage());
|
||||
}
|
||||
return retorno;
|
||||
}
|
||||
|
||||
private void verificarRevenueConfigGeoloc(RevenueConfig revenueConfig) throws BusinessException {
|
||||
if (revenueConfig == null || StringUtils.isBlank(revenueConfig.getUrlGeoLoc())) {
|
||||
throw new BusinessException(Labels.getLabel("editarCatalogoDeParadaController.MSG.RevenueGeolocConfig.value"));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
package com.rjconsultores.ventaboletos.vo.revenue;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
public class RevenueGeoloc {
|
||||
|
||||
private String enderecoPesquisa;
|
||||
private String enderecoCompleto;
|
||||
private BigDecimal latitude;
|
||||
private BigDecimal longitude;
|
||||
|
||||
public String getEnderecoPesquisa() {
|
||||
return enderecoPesquisa;
|
||||
}
|
||||
|
||||
public void setEnderecoPesquisa(String enderecoPesquisa) {
|
||||
this.enderecoPesquisa = enderecoPesquisa;
|
||||
}
|
||||
|
||||
public String getEnderecoCompleto() {
|
||||
return enderecoCompleto;
|
||||
}
|
||||
|
||||
public void setEnderecoCompleto(String enderecoCompleto) {
|
||||
this.enderecoCompleto = enderecoCompleto;
|
||||
}
|
||||
|
||||
public BigDecimal getLatitude() {
|
||||
return latitude;
|
||||
}
|
||||
|
||||
public void setLatitude(BigDecimal latitude) {
|
||||
this.latitude = latitude;
|
||||
}
|
||||
|
||||
public BigDecimal getLongitude() {
|
||||
return longitude;
|
||||
}
|
||||
|
||||
public void setLongitude(BigDecimal longitude) {
|
||||
this.longitude = longitude;
|
||||
}
|
||||
|
||||
public boolean isLatitudeAndLongitude() {
|
||||
return this.latitude != null && this.longitude != null;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue