Commit ff60b127 by Adrian

Versión ampliada pre JPA

parent 2fa644aa
......@@ -8,6 +8,7 @@ package es.ujaen.dae.ujacoin.beans;
import es.ujaen.dae.ujacoin.entidades.Cliente;
import es.ujaen.dae.ujacoin.entidades.Cuenta;
import es.ujaen.dae.ujacoin.entidades.Tarjeta;
import es.ujaen.dae.ujacoin.excepciones.SaldoRestanteNoCero;
import es.ujaen.dae.ujacoin.interfaces.ServicioUjaBank;
import java.util.ArrayList;
import java.util.HashMap;
......@@ -48,9 +49,6 @@ public class ServicioUjaBankImpl implements ServicioUjaBank {
clientes.put(cliente.getDni(), cliente);
cuentas.put(cuentaNueva.getNumero(), cuentaNueva);
cuentaNueva.setTitular(cliente);
cliente.asignarCuenta(cuentaNueva);
}
@Override
......@@ -91,6 +89,44 @@ public class ServicioUjaBankImpl implements ServicioUjaBank {
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() {
boolean numeroValido = false;
......
......@@ -5,6 +5,7 @@
*/
package es.ujaen.dae.ujacoin.entidades;
import es.ujaen.dae.ujacoin.excepciones.TarjetaYaVinculada;
import java.time.LocalDate;
import java.util.HashMap;
import java.util.Map;
......@@ -108,6 +109,14 @@ public class Cliente {
* @param 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);
}
......
......@@ -16,7 +16,7 @@ import java.util.ArrayList;
*
* @author Adrian
*/
public class Cuenta {
public class Cuenta extends ServicioBancario{
/**
* Número de identificación de la cuenta
......@@ -27,10 +27,6 @@ public class Cuenta {
*/
private float saldo;
/**
* Titular de la cuenta
*/
private Cliente titular;
/**
* Movimientos de la cuenta
*/
private ArrayList<Movimiento> movimientos;
......@@ -43,7 +39,8 @@ public class Cuenta {
this.numero = numero;
this.saldo = 0;
this.titular = titular;
this.activado = true;
this.clienteAsociado = titular;
this.movimientos = new ArrayList<>();
}
......@@ -55,18 +52,10 @@ public class Cuenta {
return saldo;
}
public Cliente getTitular() {
return titular;
}
public void setSaldo(float saldo) {
this.saldo = saldo;
}
public void setTitular(Cliente titular) {
this.titular = titular;
}
public ArrayList<Movimiento> getMovimientos() {
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;
import es.ujaen.dae.ujacoin.excepciones.TarjetaNoValida;
import java.time.LocalDate;
import java.util.Random;
/**Tarjetas de crédito asociadas a clientes
*
* @author Adrian
*/
public class Tarjeta {
public class Tarjeta extends ServicioBancario{
/** Número de la tarjeta*/
private String numero;
......@@ -23,6 +24,9 @@ public class Tarjeta {
/** Fecha de caducidad de la tarjeta*/
private LocalDate fechaCaducidad;
private static Random rand = new Random();
public Tarjeta(String numero, String titular, String cvc, LocalDate fechaCaducidad) {
if(!checkNumeroTarjeta(numero)) throw new TarjetaNoValida();
......@@ -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 {
*/
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