ADD - MessageRepository
This commit is contained in:
parent
9a18f1262a
commit
ec58209519
@ -6,6 +6,13 @@ public class BackResponse {
|
|||||||
private final String statusCode;
|
private final String statusCode;
|
||||||
private final String description;
|
private final String description;
|
||||||
|
|
||||||
|
public BackResponse(String value) {
|
||||||
|
this.backendCode = value;
|
||||||
|
this.httpCode = value;
|
||||||
|
this.statusCode = value;
|
||||||
|
this.description = value;
|
||||||
|
}
|
||||||
|
|
||||||
private BackResponse(Builder builder) {
|
private BackResponse(Builder builder) {
|
||||||
this.backendCode = builder.backendCode;
|
this.backendCode = builder.backendCode;
|
||||||
this.httpCode = builder.httpCode;
|
this.httpCode = builder.httpCode;
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
|||||||
public class JsonHelper {
|
public class JsonHelper {
|
||||||
|
|
||||||
private static final Logger logger = Logger.getLogger(JsonHelper.class.getName());
|
private static final Logger logger = Logger.getLogger(JsonHelper.class.getName());
|
||||||
private static final ObjectMapper MAPPER = new ObjectMapper();
|
public static final ObjectMapper MAPPER = new ObjectMapper();
|
||||||
|
|
||||||
static {
|
static {
|
||||||
MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||||
|
|||||||
@ -0,0 +1,111 @@
|
|||||||
|
package com.banesco.infraestructure.repository;
|
||||||
|
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
import com.banesco.domain.model.BackResponse;
|
||||||
|
import com.banesco.infraestructure.helpers.JsonHelper;
|
||||||
|
import com.banesco.infraestructure.helpers.StringHelper;
|
||||||
|
|
||||||
|
public class MessageRepository {
|
||||||
|
|
||||||
|
private static final Logger logger = Logger.getLogger(MessageRepository.class.getName());
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Respuesta de error por defecto que se utiliza cuando no se encuentra un
|
||||||
|
* error específico.
|
||||||
|
*/
|
||||||
|
public final BackResponse DEFAULT_ERROR = new BackResponse("CONFLICT");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mapa que almacena múltiples mapas de códigos de error, donde la clave
|
||||||
|
* principal es el nombre del archivo de mensajes.
|
||||||
|
*/
|
||||||
|
public final Map<String, Map<String, BackResponse>> mapErrorsMultiple = new HashMap<>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Carga los mensajes de error desde un InputStream y los almacena en un
|
||||||
|
* mapa.
|
||||||
|
*
|
||||||
|
* @param inputStream El InputStream que contiene los datos JSON de los
|
||||||
|
* mensajes de error.
|
||||||
|
* @param messageFileKey La clave del archivo de mensajes, utilizada para
|
||||||
|
* almacenar el mapa en mapErrorsMultiple.
|
||||||
|
* @return Un mapa que contiene los códigos de error como claves y los
|
||||||
|
* objetos BackResponse como valores.
|
||||||
|
* @throws IOException Si ocurre un error de entrada/salida al leer el
|
||||||
|
* InputStream.
|
||||||
|
*/
|
||||||
|
private Map<String, BackResponse> loadFile(InputStream inputStream, String messageFileKey) throws IOException {
|
||||||
|
Map<String, BackResponse> mapStatusCodes = new HashMap<>();
|
||||||
|
Arrays.stream(JsonHelper.MAPPER.readValue(inputStream, BackResponse[].class)).forEach(o -> {
|
||||||
|
mapStatusCodes.put(o.getBackendCode(), o);
|
||||||
|
});
|
||||||
|
mapErrorsMultiple.put(messageFileKey, mapStatusCodes);
|
||||||
|
return mapStatusCodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Carga los mensajes de error desde una cadena JSON y los almacena en un
|
||||||
|
* mapa.
|
||||||
|
*
|
||||||
|
* @param messageFileKey La clave del archivo de mensajes, utilizada para
|
||||||
|
* almacenar el mapa en mapErrorsMultiple.
|
||||||
|
* @param jsonString La cadena JSON que contiene los datos de los mensajes
|
||||||
|
* de error.
|
||||||
|
* @throws IOException Si ocurre un error al procesar la cadena JSON.
|
||||||
|
*/
|
||||||
|
public void loadMessagesFromString(String messageFileKey, String jsonString) throws IOException {
|
||||||
|
Map<String, BackResponse> mapStatusCodes = new HashMap<>();
|
||||||
|
Arrays.stream(JsonHelper.MAPPER.readValue(jsonString, BackResponse[].class)).forEach(o -> {
|
||||||
|
mapStatusCodes.put(o.getBackendCode(), o);
|
||||||
|
});
|
||||||
|
mapErrorsMultiple.put(messageFileKey, mapStatusCodes);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Obtiene el mapa de códigos de error para un archivo de respuesta
|
||||||
|
* específico.
|
||||||
|
*
|
||||||
|
* @param responseFile El nombre del archivo de respuesta para el cual se
|
||||||
|
* desea obtener el mapa de errores.
|
||||||
|
* @return Un mapa que contiene los códigos de error como claves y los
|
||||||
|
* objetos BackResponse como valores, o null si no se encuentra el mapa.
|
||||||
|
*/
|
||||||
|
public Map<String, BackResponse> getErrorMap(String responseFile) {
|
||||||
|
Map<String, BackResponse> errorMap = mapErrorsMultiple.get(responseFile);
|
||||||
|
if (errorMap != null && !errorMap.isEmpty()) {
|
||||||
|
return errorMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
String fileName = (StringHelper.isNumeric(responseFile) ? "vb".concat(responseFile) : responseFile).concat(".json");
|
||||||
|
|
||||||
|
try {
|
||||||
|
try {
|
||||||
|
// Intenta cargar el archivo desde el directorio /config/.
|
||||||
|
return loadFile(new FileInputStream("/config/".concat(fileName)), responseFile);
|
||||||
|
} catch (IOException e) {
|
||||||
|
// Si no se encuentra el archivo en /config/, intenta cargarlo desde el classpath.
|
||||||
|
logger.log(Level.WARNING, String.format("Path /config/%s not found. Loading local from errors-mapping/%s", fileName, fileName));
|
||||||
|
ClassLoader classLoader = getClass().getClassLoader();
|
||||||
|
InputStream inputStream = classLoader.getResourceAsStream("errors-mapping/" + fileName);
|
||||||
|
if (inputStream == null) {
|
||||||
|
// Si no se encuentra el archivo en el classpath, registra un error y devuelve null.
|
||||||
|
logger.log(Level.SEVERE, String.format("Resource errors-mapping/%s not found.", fileName));
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return loadFile(inputStream, responseFile);
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
// Si ocurre un error al cargar el archivo desde cualquier ubicación, registra un error y devuelve null.
|
||||||
|
logger.log(Level.SEVERE, String.format("Error loading Service Messages from /config/%s and errors-mapping/%s: %s", fileName, fileName, e.getMessage()));
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user