Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package edu.utn.frba.grupo5303.serverenviolibre.repository; import com.amazonaws.ClientConfiguration; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Region; import com.amazonaws.regions.Regions; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient; import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper; import com.amazonaws.services.dynamodbv2.model.AttributeValue; import com.amazonaws.services.dynamodbv2.model.ScanRequest; import com.amazonaws.services.dynamodbv2.model.ScanResult; import edu.utn.frba.grupo5303.serverenviolibre.beans.InfoMontoBean; import edu.utn.frba.grupo5303.serverenviolibre.config.HoraArgentina; import edu.utn.frba.grupo5303.serverenviolibre.model.FacturaDynamo; import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.text.ParseException; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; import org.springframework.stereotype.Repository; /** * * @author flpitu88 */ @Repository public class FacturasDAODynamo implements FacturasDAO { private static AmazonDynamoDBClient ddb; private DynamoDBMapper mapper; public FacturasDAODynamo() { String regionName = "us-west-2"; Region region = Region.getRegion(Regions.fromName(regionName)); ClientConfiguration clientConfiguration = new ClientConfiguration().withMaxErrorRetry(20); ddb = new AmazonDynamoDBClient(new ProfileCredentialsProvider(), clientConfiguration); ddb.setRegion(region); mapper = new DynamoDBMapper(ddb); } @Override public void guardarFactura(FacturaDynamo factura) { mapper.save(factura); } @Override public FacturaDynamo getFacturaByNumero(Integer nroFactura) { return mapper.load(FacturaDynamo.class, nroFactura); } @Override public void borrarFactura(Integer id) { FacturaDynamo fact = getFacturaByNumero(id); mapper.delete(fact); } @Override public List<FacturaDynamo> getFacturasDeUsuario(Integer nroUsuario) { List<FacturaDynamo> listado = new ArrayList<>(); Map<String, AttributeValue> expressionAttributeValues = new HashMap<>(); expressionAttributeValues.put(":idUsuario", new AttributeValue().withN(nroUsuario.toString())); ScanRequest scanRequest = new ScanRequest().withTableName("Facturas") .withFilterExpression("idUsuario = :idUsuario") .withProjectionExpression("nroFactura, periodoHasta, periodoDesde") .withExpressionAttributeValues(expressionAttributeValues); ScanResult result = ddb.scan(scanRequest); for (Map<String, AttributeValue> mapa : result.getItems()) { FacturaDynamo itemFac = new FacturaDynamo(Integer.parseInt(mapa.get("nroFactura").getN()), nroUsuario, mapa.get("periodoDesde").getS(), mapa.get("periodoHasta").getS()); listado.add(itemFac); } return listado; } @Override public List<InfoMontoBean> getMontosFacturados() { List<InfoMontoBean> listado = new ArrayList<>(); // Create a DecimalFormat that fits your requirements DecimalFormatSymbols symbols = new DecimalFormatSymbols(); // symbols.setGroupingSeparator(','); symbols.setDecimalSeparator('.'); String pattern = "####0.0#"; DecimalFormat decimalFormat = new DecimalFormat(pattern, symbols); decimalFormat.setParseBigDecimal(true); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); ScanRequest scanRequest = new ScanRequest().withTableName("Facturas") .withProjectionExpression("importeTotal,periodoHasta"); ScanResult result = ddb.scan(scanRequest); for (Map<String, AttributeValue> mapa : result.getItems()) { try { String importeTotalString = mapa.get("importeTotal").getS(); String periodoHastaString = mapa.get("periodoHasta").getS(); InfoMontoBean monto = new InfoMontoBean(); LocalDate fechaHasta = LocalDate.parse(periodoHastaString, formatter); BigDecimal importeTotal = (BigDecimal) decimalFormat.parse(importeTotalString); if (fechaHasta.getMonthValue() == (HoraArgentina.getFechaActualArgentina().getMonthValue() - 1)) { monto.setImporteMes(importeTotal); } monto.setImporteTotal(importeTotal); listado.add(monto); } catch (ParseException ex) { Logger.getLogger(FacturasDAODynamo.class.getName()).log(Level.SEVERE, null, ex); } } return listado; } }