Commit ff60b127 by Adrian

Versión ampliada pre JPA

parent 2fa644aa
...@@ -8,6 +8,7 @@ package es.ujaen.dae.ujacoin.beans; ...@@ -8,6 +8,7 @@ package es.ujaen.dae.ujacoin.beans;
import es.ujaen.dae.ujacoin.entidades.Cliente; import es.ujaen.dae.ujacoin.entidades.Cliente;
import es.ujaen.dae.ujacoin.entidades.Cuenta; import es.ujaen.dae.ujacoin.entidades.Cuenta;
import es.ujaen.dae.ujacoin.entidades.Tarjeta; import es.ujaen.dae.ujacoin.entidades.Tarjeta;
import es.ujaen.dae.ujacoin.excepciones.SaldoRestanteNoCero;
import es.ujaen.dae.ujacoin.interfaces.ServicioUjaBank; import es.ujaen.dae.ujacoin.interfaces.ServicioUjaBank;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
...@@ -48,9 +49,6 @@ public class ServicioUjaBankImpl implements ServicioUjaBank { ...@@ -48,9 +49,6 @@ public class ServicioUjaBankImpl implements ServicioUjaBank {
clientes.put(cliente.getDni(), cliente); clientes.put(cliente.getDni(), cliente);
cuentas.put(cuentaNueva.getNumero(), cuentaNueva); cuentas.put(cuentaNueva.getNumero(), cuentaNueva);
cuentaNueva.setTitular(cliente);
cliente.asignarCuenta(cuentaNueva);
} }
@Override @Override
...@@ -91,6 +89,44 @@ public class ServicioUjaBankImpl implements ServicioUjaBank { ...@@ -91,6 +89,44 @@ public class ServicioUjaBankImpl implements ServicioUjaBank {
cuentaDestino.transferenciaDesde(cuentaOrigen, importe); cuentaDestino.transferenciaDesde(cuentaOrigen, importe);
} }
@Override
public Cuenta añadirCuenta(Cliente cliente) {
Cuenta cuentaNueva = new Cuenta(generadorCuentasNuevas(), cliente);
cliente.asignarCuenta(cuentaNueva);
cuentas.put(cuentaNueva.getNumero(), cuentaNueva);
return cuentaNueva;
}
@Override
public void añadirTarjeta(Cliente cliente, Tarjeta tarjeta) {
//Tarjeta nuevaTarjeta = new Tarjeta(, cliente.getNombre(), String.valueOf(rand.nextInt(999)), LocalDate.now());
cliente.añadirTarjeta(tarjeta);
tarjeta.setClienteAsociado(cliente);
tarjeta.setActivado(true);
}
@Override
public void borrarCuenta(Cuenta cuenta) {
if (cuenta.getSaldo() > 0) {
throw new SaldoRestanteNoCero();
}
cuenta.setActivado(false);
}
@Override
public void borrarTarjeta(Tarjeta tarjeta) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
private String generadorCuentasNuevas() { private String generadorCuentasNuevas() {
boolean numeroValido = false; boolean numeroValido = false;
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
*/ */
package es.ujaen.dae.ujacoin.entidades; package es.ujaen.dae.ujacoin.entidades;
import es.ujaen.dae.ujacoin.excepciones.TarjetaYaVinculada;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
...@@ -108,6 +109,14 @@ public class Cliente { ...@@ -108,6 +109,14 @@ public class Cliente {
* @param tarjeta * @param tarjeta
*/ */
public void añadirTarjeta(Tarjeta tarjeta) { public void añadirTarjeta(Tarjeta tarjeta) {
if(tarjetasAsociadas.get(tarjeta.getNumero()) != null &&
tarjetasAsociadas.get(tarjeta.getNumero()).getCvc().equals(tarjeta.getCvc())){
throw new TarjetaYaVinculada();
}
tarjetasAsociadas.put(tarjeta.getNumero(), tarjeta); tarjetasAsociadas.put(tarjeta.getNumero(), tarjeta);
} }
......
...@@ -16,7 +16,7 @@ import java.util.ArrayList; ...@@ -16,7 +16,7 @@ import java.util.ArrayList;
* *
* @author Adrian * @author Adrian
*/ */
public class Cuenta { public class Cuenta extends ServicioBancario{
/** /**
* Número de identificación de la cuenta * Número de identificación de la cuenta
...@@ -27,10 +27,6 @@ public class Cuenta { ...@@ -27,10 +27,6 @@ public class Cuenta {
*/ */
private float saldo; private float saldo;
/** /**
* Titular de la cuenta
*/
private Cliente titular;
/**
* Movimientos de la cuenta * Movimientos de la cuenta
*/ */
private ArrayList<Movimiento> movimientos; private ArrayList<Movimiento> movimientos;
...@@ -43,7 +39,8 @@ public class Cuenta { ...@@ -43,7 +39,8 @@ public class Cuenta {
this.numero = numero; this.numero = numero;
this.saldo = 0; this.saldo = 0;
this.titular = titular; this.activado = true;
this.clienteAsociado = titular;
this.movimientos = new ArrayList<>(); this.movimientos = new ArrayList<>();
} }
...@@ -55,18 +52,10 @@ public class Cuenta { ...@@ -55,18 +52,10 @@ public class Cuenta {
return saldo; return saldo;
} }
public Cliente getTitular() {
return titular;
}
public void setSaldo(float saldo) { public void setSaldo(float saldo) {
this.saldo = saldo; this.saldo = saldo;
} }
public void setTitular(Cliente titular) {
this.titular = titular;
}
public ArrayList<Movimiento> getMovimientos() { public ArrayList<Movimiento> getMovimientos() {
return movimientos; return movimientos;
} }
......
/*
* 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 es.ujaen.dae.ujacoin.entidades;
/**
*
* @author UJA
*/
public class ServicioBancario {
public ServicioBancario() {
}
//Servicio marcado como borrado
boolean activado;
Cliente clienteAsociado;
public boolean isActivado() {
return activado;
}
public void setActivado(boolean activado) {
this.activado = activado;
}
public Cliente getClienteAsociado() {
return clienteAsociado;
}
public void setClienteAsociado(Cliente clienteAsociado) {
this.clienteAsociado = clienteAsociado;
}
}
...@@ -7,12 +7,13 @@ package es.ujaen.dae.ujacoin.entidades; ...@@ -7,12 +7,13 @@ package es.ujaen.dae.ujacoin.entidades;
import es.ujaen.dae.ujacoin.excepciones.TarjetaNoValida; import es.ujaen.dae.ujacoin.excepciones.TarjetaNoValida;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.Random;
/**Tarjetas de crédito asociadas a clientes /**Tarjetas de crédito asociadas a clientes
* *
* @author Adrian * @author Adrian
*/ */
public class Tarjeta { public class Tarjeta extends ServicioBancario{
/** Número de la tarjeta*/ /** Número de la tarjeta*/
private String numero; private String numero;
...@@ -23,6 +24,9 @@ public class Tarjeta { ...@@ -23,6 +24,9 @@ public class Tarjeta {
/** Fecha de caducidad de la tarjeta*/ /** Fecha de caducidad de la tarjeta*/
private LocalDate fechaCaducidad; private LocalDate fechaCaducidad;
private static Random rand = new Random();
public Tarjeta(String numero, String titular, String cvc, LocalDate fechaCaducidad) { public Tarjeta(String numero, String titular, String cvc, LocalDate fechaCaducidad) {
if(!checkNumeroTarjeta(numero)) throw new TarjetaNoValida(); if(!checkNumeroTarjeta(numero)) throw new TarjetaNoValida();
...@@ -76,4 +80,43 @@ public class Tarjeta { ...@@ -76,4 +80,43 @@ public class Tarjeta {
} }
public static String generadorTarjetasNuevas() {
boolean numeroValido = false;
String numeroCadena;
do {
int numero = rand.nextInt(99999999);
numeroCadena = String.valueOf(numero);
for (int i = numeroCadena.length(); i < 8; i++) {
numeroCadena = "0".concat(numeroCadena);
}
int codigo = 0;
for (int i = 0; i < 8; i++) {
codigo += Integer.parseInt(numeroCadena.substring(i, i + 1));
}
codigo = codigo % 4;
if ((numero % 10) > 5) {
numero -= codigo;
} else {
numero += 4 - codigo;
}
numeroCadena = String.valueOf(numero);
for (int i = numeroCadena.length(); i < 8; i++) {
numeroCadena = "0".concat(numeroCadena);
}
} while (!numeroValido);
return numeroCadena;
}
} }
/*
* 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 es.ujaen.dae.ujacoin.excepciones;
/**
*
* @author UJA
*/
public class SaldoRestanteNoCero extends RuntimeException{
}
/*
* 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 es.ujaen.dae.ujacoin.excepciones;
/**
*
* @author Adrian
*/
public class TarjetaYaVinculada extends RuntimeException {
}
...@@ -75,5 +75,32 @@ public interface ServicioUjaBank { ...@@ -75,5 +75,32 @@ public interface ServicioUjaBank {
*/ */
public void transferencia(Cuenta cuentaOrigen, Cuenta cuentaDestino, float importe); public void transferencia(Cuenta cuentaOrigen, Cuenta cuentaDestino, float importe);
/**
* Genera una cuenta nueva para el cliente y la devuelve
* @param cliente Cliente al que se le asignara la nueva cuenta
* @return la cuenta recién creada
*/
public Cuenta añadirCuenta(Cliente cliente);
/**
* Genera una tarjeta nueva para el cliente y la devuelve
* @param cliente Cliente al que se le asignara la nueva cuenta
* @param tarjeta tarjeta para vincular al clente
*/
public void añadirTarjeta(Cliente cliente, Tarjeta tarjeta);
/**
* Borra una cuenta con saldo = 0
* @param cuenta cuenta a borrar
*/
public void borrarCuenta(Cuenta cuenta);
/**
* Borra una tarjeta
* @param tarjeta tarjeta a borrar
*/
public void borrarTarjeta(Tarjeta tarjeta);
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment