- Java 11
- IDE
- Postman
- json-20220320.jar
Esta actividad continua a la descrita en la clase anterior: README
-
Generar una Clase de tipo enum que contiene los códigos de algunos países.
public enum Country { US, MX, FR }
-
Modificar la clase Utils creando métodos que generan información aleatoria util para construir la información de las cuentas.
public class Utils { /* code */ public static long randomAcountNumber() { return new Random().nextLong(); } public static double randomBalance() { return new Random() .doubles(1000, 9000) .limit(1) .findFirst() .getAsDouble(); } public static AccountType pickRandomAccountType() { // Creando un arreglo a partir de valores ya definidos AccountType[] accountTypes = AccountType.values(); return accountTypes[new Random().nextInt(accountTypes.length)]; } public static String randomInt() { return String.valueOf(new Random().ints(1, 10) .findFirst() .getAsInt()); } /** * Gets country. * * @param country código de pais * @return nombre del pais correspondiente al código recibido */ public static String getCountry(Country country) { Map<Country, String> countries = new HashMap<>(); countries.put(Country.US, "United States"); countries.put(Country.MX, "Mexico"); countries.put(Country.FR, "France"); return countries.get(country); } }
Estos métodos serán útiles para generar información diferente para cada una de las cuentas que se almacenaran en la lista final.
-
Definimos un nuevo método, que regresara una lista de tipo BankAccountDTO que contiene todas las cuentas existentes, en la interface BankAccountBO.
public interface BankAccountBO { List<BankAccountDTO> getAccounts(); // <- Regresa una lista de tipo BankAccountDTO BankAccountDTO getAccountDetails(String user, String lastUsage); }
-
Implementamos el método creado para obtener la lista de las cuentas y se modifica el método privado encargado de construir los objetos.
public class BankAccountBOImpl implements BankAccountBO{ @Override public List<BankAccountDTO> getAccounts() { // Definicion de lista con la informacion de las cuentas existentes. List<BankAccountDTO> accountDTOList = new ArrayList<>(); accountDTOList.add(buildBankAccount("[email protected]", true, Country.MX, "08-09-2021")); accountDTOList.add(buildBankAccount("[email protected]", false, Country.FR, "07-09-2021")); accountDTOList.add(buildBankAccount("[email protected]" ,false, Country.US, "16-09-2021")); return accountDTOList; } @Override public BankAccountDTO getAccountDetails(String user, String lastUsage) { return buildBankAccount(user, true, Country.MX, lastUsage); // Agregar código de pais } // Creación de tipo de dato BankAccount con la ayuda de la clase Utils.java private BankAccountDTO buildBankAccount(String user, boolean isActive, Country country, String lastUsage) { BankAccountDTO bankAccountDTO = new BankAccountDTO(); bankAccountDTO.setAccountNumber(randomAcountNumber()); bankAccountDTO.setAccountName("Dummy Account ".concat(randomInt())); bankAccountDTO.setUser(user); bankAccountDTO.setAccountBalance(randomBalance()); bankAccountDTO.setAccountType(pickRandomAccountType()); bankAccountDTO.setCountry(getCountry(country)); bankAccountDTO.setLastUsage(lastUsage); bankAccountDTO.setAccountActive(isActive); return bankAccountDTO; } }
-
Siguiendo el estilo existente en la clase principal (LearningJava) genera un nuevo context para manejar la solicitud y obtener los datos de todas las cuentas.
curl --location --request GET 'http://localhost:8080/api/getAccounts'
La petición anterior 👆 se puede importar en Postman siemplemente copiando y pegandola en el apartado Raw text que aparece despues de hacer clic en el boton de importar.
[
{
"country": "Mexico",
"accountActive": true,
"accountName": "Dummy Account 9",
"accountType": "PLATINUM",
"lastUsage": "08-09-2021",
"accountNumber": 672134163492917690,
"accountBalance": 2944.27040517806,
"user": "[email protected]"
},
{
"country": "France",
"accountActive": false,
"accountName": "Dummy Account 6",
"accountType": "NOMINA",
"lastUsage": "07-09-2021",
"accountNumber": -2809907130710493942,
"accountBalance": 7682.979334527755,
"user": "[email protected]"
},
{
"country": "United States",
"accountActive": false,
"accountName": "Dummy Account 4",
"accountType": "NOMINA",
"lastUsage": "16-09-2021",
"accountNumber": 690593633607299787,
"accountBalance": 6058.225304384811,
"user": "[email protected]"
}
]