Commit d3e90004 by Antonio Rueda

Entidades mapeadas

parent d2d6dce8
......@@ -7,22 +7,32 @@ package es.ujaen.dae.ujacoin.entidades;
import es.ujaen.dae.ujacoin.util.ExprReg;
import es.ujaen.dae.ujacoin.util.CodificadorMd5;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Transient;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Past;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
/**
* Cliente del banco virtual UjaCoin
* @author ajrueda
*/
public class Cliente {
@Entity
public class Cliente implements Serializable {
/** DNI del cliente*/
@Id
@Size(min=9, max=9)
@Pattern(regexp=ExprReg.DNI)
String dni;
/** Nombre completo */
......@@ -36,6 +46,7 @@ public class Cliente {
@NotBlank
String direccion;
/** Teléfono */
@Size(min=9, max=13)
@Pattern(regexp=ExprReg.TLF)
String tlf;
......@@ -46,11 +57,18 @@ public class Cliente {
String clave;
/** Tarjetas asociadas al cliente (no tiene por qué ser el titular */
@OneToMany
@JoinColumn(name="cliente_dni")
List<Tarjeta> tarjetas;
/** Cuentas asociadas al cliente */
@OneToMany(mappedBy="titular")
List<Cuenta> cuentas;
public Cliente() {
}
public Cliente(String dni, String nombre, LocalDate fNacimiento, String direccion, String tlf, String email, String clave) {
this.dni = dni;
......
......@@ -13,17 +13,27 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Transient;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.PositiveOrZero;
import javax.validation.constraints.Size;
/**
* Clase para representar cuentas de moneda virtual UjaCoin
* @author ajrueda
*/
@Entity
public class Cuenta {
/** Número de cuenta */
@Id
@Size(min=10, max=10)
@Pattern(regexp=ExprReg.NUM_CUENTA)
String num;
/** Saldo de la cuenta en Ujacoins */
......@@ -31,9 +41,12 @@ public class Cuenta {
float saldo;
/** Titular de la cuenta */
@NotNull
@ManyToOne
Cliente titular;
/** Lista de movimientos */
@OneToMany
@JoinColumn(name="cuenta_num")
List<Movimiento> movimientos;
public Cuenta(String num, Cliente titular) {
......
......@@ -6,17 +6,24 @@
package es.ujaen.dae.ujacoin.entidades;
import es.ujaen.dae.ujacoin.util.ExprReg;
import java.io.Serializable;
import java.time.LocalDate;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.validation.constraints.Future;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
/**
* Tarjeta para la realización de ingresos o reintegros en moneda real
* @author ajrueda
*/
public class Tarjeta {
@Entity
public class Tarjeta implements Serializable {
/** Número de tarjeta */
@Id
@Size(min=16, max=16)
@Pattern(regexp=ExprReg.NUM_TARJETA)
String num;
/** Titular de la tarjeta (puede ser diferente al cliente que la usa */
......@@ -26,9 +33,13 @@ public class Tarjeta {
@Future
LocalDate fechaCaducidad;
/** Código de seguridad (CVC) */
@Size(min=3, max=3)
@Pattern(regexp=ExprReg.CVC)
String cvc;
public Tarjeta() {
}
public Tarjeta(String num, String titular, LocalDate fechaCaducidad, String cvc) {
this.num = num;
this.titular = titular;
......
......@@ -6,16 +6,23 @@
package es.ujaen.dae.ujacoin.entidades.movimientos;
import es.ujaen.dae.ujacoin.entidades.Tarjeta;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.validation.constraints.NotNull;
/**
* Ingreso de dinero en cuenta desde una tarjeta
* @author ajrueda
*/
@Entity
public class Ingreso extends Movimiento {
@NotNull
@ManyToOne
Tarjeta tarjeta;
public Ingreso() {
}
/**
* Constructor del igreso
* @param tarjeta la tarjeta desde donde se transfiere el dinero
......
......@@ -5,7 +5,13 @@
*/
package es.ujaen.dae.ujacoin.entidades.movimientos;
import java.io.Serializable;
import java.time.LocalDateTime;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.validation.constraints.PastOrPresent;
import javax.validation.constraints.Positive;
......@@ -13,7 +19,13 @@ import javax.validation.constraints.Positive;
* Clase que representa un movimiento en cuenta
* @author ajrueda
*/
public abstract class Movimiento {
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Movimiento implements Serializable {
@Id
@GeneratedValue
int id;
/** Fecha del movimiento */
@PastOrPresent
LocalDateTime fechaHora;
......@@ -21,6 +33,9 @@ public abstract class Movimiento {
@Positive
float importe;
public Movimiento() {
}
/**
* Constructor del movimiento
* @param importe el importe asociado al movimiento
......
......@@ -6,15 +6,22 @@
package es.ujaen.dae.ujacoin.entidades.movimientos;
import es.ujaen.dae.ujacoin.entidades.Tarjeta;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.validation.constraints.NotNull;
/**
* Reintegro desde la cuenta a una tarjeta destino
* @author ajrueda
*/
@Entity
public class Reintegro extends Movimiento {
@NotNull
@ManyToOne
Tarjeta tarjeta;
public Reintegro() {
}
/**
* Constructor del reintegro
......
......@@ -6,15 +6,25 @@
package es.ujaen.dae.ujacoin.entidades.movimientos;
import es.ujaen.dae.ujacoin.entidades.Cuenta;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.validation.constraints.NotNull;
/**
* Transferencia emitida a otra cuenta
* @author ajrueda
*/
@Entity
public class TransferenciaEmitida extends Movimiento {
@NotNull
@ManyToOne
// Columna renombrada para que no colisione con la cuenta del movimiento
@JoinColumn(name="cuenta_dest_num")
Cuenta cuenta;
public TransferenciaEmitida() {
}
public TransferenciaEmitida(Cuenta cuenta, float importe) {
super(-importe);
......
......@@ -6,15 +6,25 @@
package es.ujaen.dae.ujacoin.entidades.movimientos;
import es.ujaen.dae.ujacoin.entidades.Cuenta;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.validation.constraints.NotNull;
/**
* Transferencia recibida de otra cuenta
* @author ajrueda
*/
@Entity
public class TransferenciaRecibida extends Movimiento {
@NotNull
@ManyToOne
// Columna renombrada para que no coincida con la cuenta del movimiento
@JoinColumn(name="cuenta_orig_num")
Cuenta cuenta;
public TransferenciaRecibida() {
}
public TransferenciaRecibida(Cuenta cuenta, float importe) {
super(importe);
......
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