En .yml:
application.yml
sirec:
kill-list-enabled: ${KILL_LIST_ENABLED:false}
O en .properties:
application.properties
sirec.kill-list-enabled: ${KILL_LIST_ENABLED:false}
Y en Java:
ApiTareasService.java
@Value("#{new Boolean('${sirec.kill-list-enabled:false}')}")
private Boolean killListEnabled;
if (killListEnabled) {
...
}
lunes, 29 de noviembre de 2021
Java: utilizar el valor de una property en una clase.
Java: sumar días o meses a una fecha en formato String
public static final String FECHA_FORMATO_ENTRADA = "yyyy-MM-dd HH:mm:ss.S";
public static final String FECHA_FORMATO_SALIDA = "dd/MM/yyyy";
SimpleDateFormat formatIn = new SimpleDateFormat(Constants.FECHA_FORMATO_ENTRADA);
SimpleDateFormat formatOut = new SimpleDateFormat(Constants.FECHA_FORMATO_SALIDA);
String tmpFecha = null;
try {
Date dateSel = formatIn.parse(valoracionesBienInner.getFecha());
Calendar calendar = Calendar.getInstance();
calendar.setTime(dateSel);
calendar.add(Calendar.MONTH, Integer.valueOf(valoracionesBienInner.getPeriodoValidez()));
Date salida = calendar.getTime();
tmpFecha = formatOut.format(salida);
} catch (ParseException e) {
throw new SirecApplicationException(0, "Error parseo fecha validez en valoraciones", e);
}
aElementoListaValoraciones.setFechaValidez(getNullHandlingValue(tmpFecha));
public static String getNullHandlingValue(String valor) {
return valor == null ? "" : valor;
}
miércoles, 20 de octubre de 2021
Java RestCall (TODO)
// Requires:
//<!-- https://mvnrepository.com/artifact/net.minidev/json-smart -->
//<dependency>
// <groupId>net.minidev</groupId>
// <artifactId>json-smart</artifactId>
// <version>2.4.7</version>
//</dependency>
package com.thymewizards.util;
import java.util.Map;
import net.minidev.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.HttpStatusCodeException;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponents;
import org.springframework.web.util.UriComponentsBuilder;
public class RestCall {
private static final Logger logger = LoggerFactory.getLogger(RestCall.class);
private RestTemplate restTemplate = new RestTemplate();
public ResponseEntity<Object> executePOST(String url, HttpHeaders header, Map<String, String> urlParams, MultiValueMap<String, String> queryParams, Object obj) throws Exception {
ResponseEntity<Object> resp = null;
UriComponents builder = null;
try {
if (obj != null) {
logger.info(String.format("{Body} : %s", obj.toString()));
}
builder = UriComponentsBuilder.fromHttpUrl(url).buildAndExpand(urlParams);
if (queryParams != null) {
builder = UriComponentsBuilder.fromUriString(url).queryParams(queryParams).buildAndExpand(urlParams);
}
HttpEntity<Object> httpEntity = new HttpEntity(obj, header);
logger.info(String.format("{Header} : %s", httpEntity.getHeaders()));
logger.info(String.format("Accediendo a la URL %s via POST", builder.toUriString()));
resp = this.restTemplate.postForEntity(builder.toUriString(), httpEntity, Object.class, new Object[1]);
if (resp != null) {
logger.info(String.format("{Response} : %s", resp));
}
logger.info("OK.!");
} catch (HttpStatusCodeException var9) {
logger.error("KO.! Error!!", var9);
throw var9;
} catch (Exception var10) {
logger.error(String.format("Accediendo a la URL {%s} via POST KO.! Error!!", url), var10);
throw new Exception(var10);
return resp;
}
}
public ResponseEntity<Object> executePUT(String url, HttpHeaders header, Map<String, String> urlParams, MultiValueMap<String, String> queryParams, Object obj) throws Exception {
ResponseEntity<Object> resp = null;
UriComponents builder = null;
try {
if (obj != null) {
logger.info(String.format("{Body} : %s", obj.toString()));
}
builder = UriComponentsBuilder.fromHttpUrl(url).buildAndExpand(urlParams);
if (queryParams != null) {
builder = UriComponentsBuilder.fromUriString(url).queryParams(queryParams).buildAndExpand(urlParams);
}
HttpEntity<Object> httpEntity = new HttpEntity(obj, header);
logger.info(String.format("{Header} : %s", httpEntity.getHeaders()));
logger.info(String.format("Accediendo a la URL %s via PUT", builder.toUriString()));
resp = this.restTemplate.exchange(builder.toUriString(), HttpMethod.PUT, httpEntity, Object.class, new Object[0]);
if (resp != null) {
logger.info(String.format("{Response} : %s", resp));
}
logger.info("OK.!");
} catch (HttpStatusCodeException var9) {
logger.error("KO.! Error!!", var9);
throw var9;
} catch (Exception var10) {
logger.error(String.format("Accediendo a la URL {%s} via PUT KO.! Error!!", builder), var10);
throw new Exception(var10);
return resp;
}
}
public ResponseEntity<Object> executeDELETE(String url, HttpHeaders header, Map<String, String> urlParams, MultiValueMap<String, String> queryParams) throws Exception {
ResponseEntity<Object> resp = null;
UriComponents builder = null;
try {
builder = UriComponentsBuilder.fromHttpUrl(url).buildAndExpand(urlParams);
if (queryParams != null) {
builder = UriComponentsBuilder.fromUriString(url).queryParams(queryParams).buildAndExpand(urlParams);
}
HttpEntity<Object> httpEntity = new HttpEntity(header);
logger.info(String.format("{Header} : %s", httpEntity.getHeaders()));
logger.info(String.format("Accediendo a la URL %s via DELETE", builder.toUriString()));
resp = this.restTemplate.exchange(builder.toUriString(), HttpMethod.DELETE, httpEntity, Object.class, new Object[0]);
logger.info(String.format("{Response} : %s", resp));
logger.info("OK.!");
} catch (HttpStatusCodeException var8) {
logger.error("KO.! Error!!", var8);
throw var8;
} catch (Exception var9) {
logger.error(String.format("Accediendo a la URL {%s} via DELETE KO.! Error!!", url), var9);
throw new Exception(var9);
return resp;
}
}
public ResponseEntity<Object> executeGET(String url, HttpHeaders header, Map<String, String> urlParams, MultiValueMap<String, String> queryParams, Object obj) throws Exception {
ResponseEntity<Object> resp = null;
UriComponents builder = null;
try {
if (obj != null) {
logger.info(String.format("{Body} : %s", obj.toString()));
}
builder = UriComponentsBuilder.fromHttpUrl(url).buildAndExpand(urlParams);
if (queryParams != null) {
builder = UriComponentsBuilder.fromUriString(url).queryParams(queryParams).buildAndExpand(urlParams);
}
HttpEntity<Object> httpEntity = new HttpEntity(obj, header);
logger.info(String.format("{Header} : %s", header));
logger.info(String.format("Accediendo a la URL %s via GET", builder.toUriString()));
resp = this.restTemplate.exchange(builder.toUriString(), HttpMethod.GET, httpEntity, Object.class, new Object[0]);
if (resp != null) {
logger.info(String.format("{Response} : %s", resp));
}
logger.info("OK.!");
} catch (HttpStatusCodeException var9) {
logger.error("KO.! Error!!", var9);
throw var9;
} catch (Exception var10) {
logger.error(String.format("Accediendo a la URL {%s} via GET KO.! Error!!", url), var10);
throw new Exception(var10);
return resp;
}
}
public Object rest2Object(ResponseEntity<Object> resp, Object obj) throws Exception {
if (obj == null) {
throw new Exception(String.format("Error el objecto <%s> es nulo", obj));
} else {
try {
if (!resp.getStatusCode().equals(HttpStatus.OK) && !resp.getStatusCode().equals(HttpStatus.CREATED)) {
} else {
JSONObject jsonBody = new JSONObject((Map) resp.getBody());
return ObjectMapperFactory.defaultOne().readValue(jsonBody.toJSONString(), obj.getClass());
}
} catch (Exception var4) {
logger.error(String.format("Error al convertir <%s>", resp, obj.getClass().getSimpleName()), var4);
throw new Exception(var4);
return obj;
}
}
}
}
@Slf4j
@RequiredArgsConstructor
public class ApiCuotasOnlineService extends ApiDelegateBaseHandler implements IApiCuotasOnlineService {
private final ICuentaService cuentaService;
private final HttpServletRequest request;
@Value("${sirec.restcall.host:http://www.xyzxyz.es/}")
private String host;
@Override
@SuppressWarnings("checkstyle:ParameterNumber")
public CuotasContrato obtenerCuotasProducto(final String agrupacionAdn,
final String numeroContrato, final String situacion, final String fechaDesde, final String fechaHasta,
final String date, final String number, final String currency, final String balancePosition) {
CuotasContrato cuotasContrato = new CuotasContrato();
Tabla2Respuesta respuesta = new Tabla2Respuesta();
List<TablaRespuestaColumnas> columnas = obtenerColumnasCuotasOnline();
respuesta.setColumnas(columnas);
if (columnas != null && !columnas.isEmpty()) {
MultiValueMap<String, String> queryParams = new LinkedMultiValueMap<String, String>();
queryParams.add("agrupacionAdn", agrupacionAdn);
queryParams.add("numeroContrato", numeroContrato);
queryParams.add("situacion", situacion);
queryParams.add("fechaDesde", fechaDesde);
queryParams.add("fechaHasta", fechaHasta);
queryParams.add("date", date);
queryParams.add("number", number);
queryParams.add("currency", currency);
queryParams.add("balancePosition", balancePosition);
List<Map<String, String>> datos = obtenerDatosCuotasProducto(queryParams, columnas);
respuesta.setDatos(datos);
}
cuotasContrato.setRespuesta(respuesta);
return cuotasContrato;
}
private List<Map<String, String>> obtenerDatosCuotasProducto(final MultiValueMap<String, String> queryParams,
final List<TablaRespuestaColumnas> columnas) {
RestCall restCall = new RestCall();
List<Map<String, String>> datos = new ArrayList<>();
ListaConsultaOnline detalle = new ListaConsultaOnline();
List<Map<String, String>> datosFiltrados = new ArrayList<>();
HttpHeaders headers = createDefaultHttpHeaders();
ResponseEntity<Object> resp;
try {
resp = (ResponseEntity<Object>) restCall.executeGET(
host + "api/core/v1/consultasOnline/cuotas", headers, new HashMap<String, String>(),
queryParams, null);
} catch (Exception e) {
log.error(e.getMessage(), e);
throw new SirecApplicationException(0, e.getMessage(), e);
}
try {
detalle = (ListaConsultaOnline) restCall.rest2Object(resp, (Object) detalle);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
datos = detalle.getRespuesta().getDatos();
// Se filtran los datos que coinciden con las columnas
for (Map<String, String> dato : datos) {
Map<String, String> map = new HashMap();
for (TablaRespuestaColumnas columna : columnas) {
map.put(columna.getId(), dato.get(columna.getId()));
}
datosFiltrados.add(map);
}
return datosFiltrados;
}
private List<TablaRespuestaColumnas> obtenerColumnasCuotasOnline() {
log.info("ApiCuotasOnlineService.obtenerColumnasCuotasOnline");
CuentaCamposDTO cuentaCamposDTO = new CuentaCamposDTO();
cuentaCamposDTO = cuentaService.obtenerCamposDetalleCuotasOnlinePrestamosImpagados();
return obtenerColumnasPreparadasCuotasOnline(cuentaCamposDTO);
}
private List<TablaRespuestaColumnas> obtenerColumnasPreparadasCuotasOnline(final CuentaCamposDTO cuentaCamposDTO) {
// Campos configurables
List<TablaRespuestaColumnas> columnas = new ArrayList<TablaRespuestaColumnas>();
// Columnas
if (cuentaCamposDTO != null && cuentaCamposDTO.getCampos() != null) {
List<CampoConfiguracionInner> listCamposMostrar = new ArrayList<>();
for (CampoConfiguracionInner campo : cuentaCamposDTO.getCampos()) {
if (campo.getOrden() != null && campo.getOrden() > 0) {
listCamposMostrar.add(campo);
}
}
listCamposMostrar.sort(Comparator.comparing(CampoConfiguracionInner::getOrden));
// Columnas dinamicas
columnas = listCamposMostrar.stream().map(campos -> new TablaRespuestaColumnas()
.id(campos.getNombreTecnicoCampo()).label(campos.getCampo()).tipo(campos.getTipoDato()))
.collect(Collectors.toList());
} else {
columnas.add(new TablaRespuestaColumnas());
}
return columnas;
}
private HttpHeaders createDefaultHttpHeaders() {
HttpHeaders headers = new HttpHeaders();
Enumeration<?> names = request.getHeaderNames();
while (names.hasMoreElements()) {
String name = (String) names.nextElement();
Enumeration<?> values = request.getHeaders(name);
while (values.hasMoreElements()) {
headers.add(name, (String) values.nextElement());
}
}
return headers;
}
}
@Slf4j
@RequiredArgsConstructor
public class ApiPaygoldService extends ApiDelegateBaseHandler implements IApiPaygoldService {
private final HttpServletRequest request;
@Value("${sirec.restcall.host:http://www.xyzxyz.es/}")
private String host;
@Override
public DetalleConsultaOnline paygold(final PaygoldEntrada paygoldEntrada) {
DetalleConsultaOnline detalleConsultaOnline = new DetalleConsultaOnline();
DetalleConsultaOnlineRespuesta respuesta = new DetalleConsultaOnlineRespuesta();
MultiValueMap<String, String> queryParams = new LinkedMultiValueMap<String, String>();
Map<String, String> datos = obtenerDatosRespuestaPaygold(queryParams, paygoldEntrada);
respuesta.setDatos(datos);
detalleConsultaOnline.setRespuesta(respuesta);
return detalleConsultaOnline;
}
private Map<String, String> obtenerDatosRespuestaPaygold(final MultiValueMap<String, String> queryParams,
final PaygoldEntrada paygoldEntrada) {
RestCall restCall = new RestCall();
DetalleConsultaOnline detalle = new DetalleConsultaOnline();
Map<String, String> datos = new HashMap<String, String>();
HttpHeaders headers = createDefaultHttpHeaders();
ResponseEntity<Object> resp;
try {
resp = (ResponseEntity<Object>) restCall.executePOST(
host + "api/core/v1/consultasOnline/paygold", headers, new HashMap<String, String>(),
queryParams, paygoldEntrada);
} catch (Exception e) {
log.error(e.getMessage(), e);
throw new SirecApplicationException(0, e.getMessage(), e);
}
try {
detalle = (DetalleConsultaOnline) restCall.rest2Object(resp, (Object) detalle);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
datos = detalle.getRespuesta().getDatos();
return datos;
}
private HttpHeaders createDefaultHttpHeaders() {
HttpHeaders headers = new HttpHeaders();
Enumeration<?> names = request.getHeaderNames();
while (names.hasMoreElements()) {
String name = (String) names.nextElement();
Enumeration<?> values = request.getHeaders(name);
while (values.hasMoreElements()) {
headers.add(name, (String) values.nextElement());
}
}
return headers;
}
}
Convertir importes de String a Bigdecimal
/**
* Convierte un importe de String con . para miles y , para decimales a BigDecimal
* @param valor Valor a formatear
* @return
*/
public static BigDecimal stringToBigDecimal(final String valor) {
BigDecimal valorDecimal = null;
try {
valorDecimal = new BigDecimal(valor);
} catch (NumberFormatException e) {
String valorReplace = valor.replace(".", "").replace(",", ".");
try {
valorDecimal = new BigDecimal(valorReplace);
} catch (NumberFormatException e2) {
log.error(e2.getMessage());
}
}
return valorDecimal;
}
lunes, 4 de octubre de 2021
Java Formatea una fecha String de yyyy-MM-dd a dd/MM/yyyy
/**
* Formatea una fecha String de yyyy-MM-dd a dd/MM/yyyy
* @param fechaOrigen
* @return
*/
public static String formateoFechaString(final String fechaOrigen) {
String fechaDestino = "";
if (null != fechaOrigen && !fechaOrigen.isEmpty()) {
DateTimeFormatter formatoOrigen = DateTimeFormatter.ofPattern("yyyy-MM-dd");
DateTimeFormatter formatoDestino = DateTimeFormatter.ofPattern("dd/MM/yyyy");
fechaDestino = LocalDate.parse(fechaOrigen, formatoOrigen).format(formatoDestino);
}
return fechaDestino;
}