Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
María Hidalgo
/
carpooling-dae
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
30508d0b
authored
Sep 25, 2023
by
María Hidalgo
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Acabando modelo
parent
f71acdb9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
460 additions
and
37 deletions
pom.xml
src/main/java/es/ujaen/dae/carpoolingdae/CarpoolingDaeApplication.java
src/main/java/es/ujaen/dae/carpoolingdae/entidades/Reserva.java
src/main/java/es/ujaen/dae/carpoolingdae/entidades/Usuario.java
src/main/java/es/ujaen/dae/carpoolingdae/entidades/Viaje.java
src/main/java/es/ujaen/dae/carpoolingdae/excepciones/UsuarioYaRegistrado.java
src/main/java/es/ujaen/dae/carpoolingdae/servicios/SistemaCarpooling.java
src/main/java/es/ujaen/dae/carpoolingdae/utils/CodificadorMd5.java
src/main/java/es/ujaen/dae/carpoolingdae/utils/ExprReg.java
pom.xml
View file @
30508d0b
...
...
@@ -2,40 +2,93 @@
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-parent
</artifactId>
<version>
3.1.3
</version>
<relativePath/>
<!-- lookup parent from repository -->
</parent>
<groupId>
es.ujaen.dae
</groupId>
<artifactId>
carpooling-dae
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
<name>
carpooling-dae
</name>
<description>
Demo project for Spring Boot
</description>
<properties>
<java.version>
17
</java.version>
</properties>
<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-jpa
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
<scope>
test
</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
</plugin>
</plugins>
</build>
</project>
<properties>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
<maven.compiler.source>
11
</maven.compiler.source>
<maven.compiler.target>
11
</maven.compiler.target>
</properties>
<parent>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-parent
</artifactId>
<version>
2.7.4
</version>
</parent>
<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-jpa
</artifactId>
</dependency>
<dependency>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
<scope>
runtime
</scope>
</dependency>
<dependency>
<groupId>
com.h2database
</groupId>
<artifactId>
h2
</artifactId>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-validation
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.junit.jupiter
</groupId>
<artifactId>
junit-jupiter
</artifactId>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
<optional>
true
</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-compiler-plugin
</artifactId>
<configuration>
<source>
16
</source>
<target>
16
</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
src/main/java/es/ujaen/dae/carpoolingdae/CarpoolingDaeApplication.java
View file @
30508d0b
...
...
@@ -2,12 +2,16 @@ package es.ujaen.dae.carpoolingdae;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.context.ApplicationContext
;
@SpringBootApplication
@SpringBootApplication
(
scanBasePackages
=
"es.ujaen.dae.carpooling"
)
public
class
CarpoolingDaeApplication
{
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
CarpoolingDaeApplication
.
class
,
args
);
public
static
void
main
(
String
[]
args
)
throws
Exception
{
SpringApplication
servidor
=
new
SpringApplication
(
CarpoolingDaeApplication
.
class
);
ApplicationContext
context
=
servidor
.
run
(
args
);
//SpringApplication.run(CarpoolingDaeApplication.class, args);
}
}
src/main/java/es/ujaen/dae/carpoolingdae/entidades/Reserva.java
0 → 100644
View file @
30508d0b
package
es
.
ujaen
.
dae
.
carpoolingdae
.
entidades
;
import
java.io.Serializable
;
import
java.util.ArrayList
;
import
java.util.List
;
import
javax.persistence.Entity
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.GenerationType
;
import
javax.persistence.Id
;
import
javax.validation.constraints.NotBlank
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@Entity
public
class
Reserva
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
Long
id
;
//@OneToMany
private
List
<
Usuario
>
pasajerosConfirmados
=
new
ArrayList
<>();
// Constructor, getters y setters
}
src/main/java/es/ujaen/dae/carpoolingdae/entidades/Usuario.java
0 → 100644
View file @
30508d0b
package
es
.
ujaen
.
dae
.
carpoolingdae
.
entidades
;
import
java.time.LocalDate
;
import
java.util.ArrayList
;
import
javax.persistence.Entity
;
import
javax.persistence.Id
;
import
javax.persistence.ManyToMany
;
import
javax.persistence.OneToMany
;
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
;
import
java.util.List
;
import
es.ujaen.dae.carpoolingdae.utils.CodificadorMd5
;
//import org.hibernate.mapping.List;
import
es.ujaen.dae.carpoolingdae.utils.ExprReg
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@Data
@NoArgsConstructor
@Entity
public
class
Usuario
{
@NotBlank
@Id
@Size
(
min
=
9
,
max
=
9
)
@Pattern
(
regexp
=
ExprReg
.
DNI
)
private
String
dni
;
@NotBlank
private
String
nombre
;
@NotBlank
private
String
apellidos
;
@Past
private
LocalDate
fecha_nac
;
@Pattern
(
regexp
=
ExprReg
.
TLF
)
private
String
telef
;
@Email
private
String
email
;
@NotBlank
private
String
clave
;
public
Usuario
(
String
dni
,
String
nombre
,
String
apellidos
,
LocalDate
fecha_nac
,
String
telef
,
String
email
,
String
clave
)
{
this
.
dni
=
dni
;
this
.
nombre
=
nombre
;
this
.
apellidos
=
apellidos
;
this
.
fecha_nac
=
fecha_nac
;
this
.
telef
=
telef
;
this
.
email
=
email
;
this
.
clave
=
CodificadorMd5
.
codificar
(
clave
);
// reservas = new ArrayList<>();
}
public
String
getDni
()
{
return
dni
;
}
public
String
getNombre
()
{
return
nombre
;
}
public
String
getApellidos
()
{
return
apellidos
;
}
public
LocalDate
getFecha_nac
()
{
return
fecha_nac
;
}
public
String
getTelef
()
{
return
telef
;
}
public
String
getEmail
()
{
return
email
;
}
// private List<Viaje> viajesActuales;
private
int
totalViajes
=
0
;
public
void
crearViaje
(
Viaje
viaje
)
{
viaje
.
setId
(
totalViajes
);
/*
* viajesActuales.add(viaje);
* totalViajes++;
*/
}
@OneToMany
(
mappedBy
=
"conductor"
)
// Relación uno a muchos con Viaje (Usuario como conductor)
private
List
<
Viaje
>
viajesComoConductor
=
new
ArrayList
<>();
@ManyToMany
(
mappedBy
=
"pasajeros"
)
// Relación muchos a muchos con Viaje (Usuario como pasajero)
private
List
<
Viaje
>
viajesComoPasajero
=
new
ArrayList
<>();
// Otros campos y métodos
public
void
enviarSolicitudViaje
(
Viaje
viaje
)
{
if
(
viaje
!=
null
&&
!
viajesComoPasajero
.
contains
(
viaje
))
{
viajesComoPasajero
.
add
(
viaje
);
viaje
.
getUsuariosSolicitantes
().
add
(
this
);
// Agregar este usuario a la lista de solicitantes en el Viaje
}
}
public
void
aceptarPasajero
(
Viaje
viaje
,
Usuario
pasajero
)
{
if
(
viaje
!=
null
&&
viaje
.
getUsuariosSolicitantes
().
contains
(
pasajero
))
{
viaje
.
getUsuariosSolicitantes
().
remove
(
pasajero
);
viaje
.
getUsuariosConfirmados
().
add
(
pasajero
);
pasajero
.
getViajesComoPasajero
().
add
(
viaje
);
}
}
public
boolean
claveValida
(
String
clave
)
{
return
clave
.
equals
(
clave
);
}
}
src/main/java/es/ujaen/dae/carpoolingdae/entidades/Viaje.java
0 → 100644
View file @
30508d0b
package
es
.
ujaen
.
dae
.
carpoolingdae
.
entidades
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.List
;
import
javax.persistence.Entity
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.GenerationType
;
import
javax.persistence.Id
;
import
javax.persistence.OneToMany
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.Past
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@Data
@NoArgsConstructor
@Entity
public
class
Viaje
{
@OneToMany
(
mappedBy
=
"viajeSolicitado"
)
// Relación uno a muchos con Usuario
private
List
<
Usuario
>
usuariosSolicitantes
=
new
ArrayList
<>();
private
List
<
Usuario
>
usuariosConfirmados
=
new
ArrayList
<>();
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
int
id
;
@NotBlank
private
String
destino
;
@NotBlank
private
String
origen
;
@Past
private
LocalDateTime
fecha_hora
;
@NotBlank
private
int
plazasDisponibles
;
@NotBlank
private
Float
precioAsiento
;
public
Viaje
(
int
id
,
String
destino
,
String
origen
,
LocalDateTime
fecha_hora
,
int
plazasDisponibles
,
Float
precioAsiento
){
this
.
id
=
id
;
this
.
origen
=
origen
;
this
.
destino
=
destino
;
this
.
fecha_hora
=
fecha_hora
;
this
.
plazasDisponibles
=
plazasDisponibles
;
this
.
precioAsiento
=
precioAsiento
;
//reservas = new ArrayList<>();
}
public
int
getId
(){
return
id
;
}
public
String
getDestino
(){
return
destino
;
}
public
String
getOrigen
(){
return
origen
;
}
public
LocalDateTime
getFecha_hora
(){
return
fecha_hora
;
}
public
int
getPlazas
(){
return
plazasDisponibles
;
}
public
Float
getPrecio
(){
return
precioAsiento
;
}
}
src/main/java/es/ujaen/dae/carpoolingdae/excepciones/UsuarioYaRegistrado.java
0 → 100644
View file @
30508d0b
package
es
.
ujaen
.
dae
.
carpoolingdae
.
excepciones
;
public
class
UsuarioYaRegistrado
extends
RuntimeException
{
public
UsuarioYaRegistrado
()
{
}
}
src/main/java/es/ujaen/dae/carpoolingdae/servicios/SistemaCarpooling.java
0 → 100644
View file @
30508d0b
package
es
.
ujaen
.
dae
.
carpoolingdae
.
servicios
;
import
java.util.TreeMap
;
import
javax.validation.Valid
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
java.time.LocalDate
;
import
java.util.ArrayList
;
import
java.util.Map
;
import
java.util.Optional
;
import
java.util.List
;
import
org.springframework.stereotype.Service
;
import
org.springframework.validation.annotation.Validated
;
import
es.ujaen.dae.carpoolingdae.entidades.Usuario
;
import
es.ujaen.dae.carpoolingdae.entidades.Viaje
;
import
es.ujaen.dae.carpoolingdae.excepciones.UsuarioYaRegistrado
;
@Service
@Validated
public
class
SistemaCarpooling
{
Map
<
String
,
Usuario
>
usuarios
;
Map
<
String
,
Viaje
>
viajes
;
public
SistemaCarpooling
(){
usuarios
=
new
TreeMap
<>();
viajes
=
new
TreeMap
<>();
}
public
void
altaUsuario
(
@NotNull
@Valid
Usuario
usuario
)
{
if
(
usuarios
.
containsKey
(
usuario
.
getDni
()))
{
throw
new
UsuarioYaRegistrado
();
}
// Registrar cliente
usuarios
.
put
(
usuario
.
getDni
(),
usuario
);
}
/**
* Realiza un login de un cliente
* @param dni el DNI del cliente
* @param clave la clave de acceso
* @return el objeto de la clase Cliente asociado
*/
public
Optional
<
Usuario
>
loginCliente
(
@NotBlank
String
email
,
@NotBlank
String
clave
)
{
return
Optional
.
ofNullable
(
usuarios
.
get
(
email
)).
filter
((
cliente
)->
cliente
.
claveValida
(
clave
));
}
public
List
<
Viaje
>
buscarViajes
(
String
origen
,
String
destino
,
LocalDate
fecha
)
{
List
<
Viaje
>
viajesEncontrados
=
new
ArrayList
<>();
for
(
Viaje
viaje
:
viajes
.
values
())
{
// Iterar sobre la colección de viajes
if
(
viaje
.
getOrigen
().
equals
(
origen
)
&&
viaje
.
getDestino
().
equals
(
destino
)
&&
viaje
.
getFecha_hora
().
toLocalDate
().
equals
(
fecha
))
{
viajesEncontrados
.
add
(
viaje
);
}
}
return
viajesEncontrados
;
}
public
void
agregarViaje
(
@NotNull
@Valid
Viaje
nuevoViaje
)
{
viajes
.
put
(
String
.
valueOf
(
nuevoViaje
.
getId
()),
nuevoViaje
);
}
}
\ No newline at end of file
src/main/java/es/ujaen/dae/carpoolingdae/utils/CodificadorMd5.java
0 → 100644
View file @
30508d0b
/*
* 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
.
carpoolingdae
.
utils
;
import
java.security.MessageDigest
;
import
java.security.NoSuchAlgorithmException
;
import
java.util.Base64
;
/**
*
* @author admin
*/
public
class
CodificadorMd5
{
private
CodificadorMd5
()
{
}
public
static
String
codificar
(
String
cadena
)
{
String
cadenaCodificada
=
null
;
try
{
MessageDigest
md
=
MessageDigest
.
getInstance
(
"MD5"
);
md
.
update
(
cadena
.
getBytes
());
cadenaCodificada
=
Base64
.
getEncoder
().
withoutPadding
().
encodeToString
(
md
.
digest
());
}
catch
(
NoSuchAlgorithmException
e
)
{
// No debe ocurrir puesto que MD5 es un algoritmo que existe en la
// implementación Java estándar
}
return
cadenaCodificada
;
}
}
src/main/java/es/ujaen/dae/carpoolingdae/utils/ExprReg.java
0 → 100644
View file @
30508d0b
package
es
.
ujaen
.
dae
.
carpoolingdae
.
utils
;
public
class
ExprReg
{
private
ExprReg
()
{}
public
static
final
String
DNI
=
"\\d{8}[A-HJ-NP-TV-Z]"
;
public
static
final
String
TLF
=
"^(\\+34|0034|34)?[6789]\\d{8}$"
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment