Adiciones y cambios a relaciones entre entidades y creacion de constructores. Creacion del usuario basico para acceder como usuario de tipo adminsitrador. Creacion de repositorios para todas las clases. Y creacion de Buscador que debe ser la pagina principal y creacion de checkboxes para uso futuro.

master
vicsash 7 months ago
parent baee727c5c
commit 0440e82747

@ -64,6 +64,11 @@
<version>4.0.1</version> <version>4.0.1</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency>
<groupId>com.github.javafaker</groupId>
<artifactId>javafaker</artifactId>
<version>1.0.2</version>
</dependency>
</dependencies> </dependencies>
<build> <build>

@ -0,0 +1,85 @@
package com.example.proyectofinal.configuration.database;
import com.example.proyectofinal.models.empresas.*;
import com.example.proyectofinal.repositories.empresas.AlumnoRepository;
import com.example.proyectofinal.repositories.empresas.ContactoRepository;
import com.example.proyectofinal.repositories.empresas.OfertaRepository;
import com.example.proyectofinal.repositories.empresas.SucursalRepository;
import com.github.javafaker.Faker;
import org.springframework.boot.CommandLineRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.HashSet;
import java.util.Set;
@Configuration
public class DatabaseTest {
@Bean
CommandLineRunner initDatabase(AlumnoRepository alumnoRepository, ContactoRepository contactoRepository, SucursalRepository sucursalRepository, OfertaRepository ofertaRepository) {
return args -> {
Faker faker = new Faker();
for (int i = 0; i < 5; i++) {
Familia familia = new Familia("Informatica" + i);
Ciclo ciclo = new Ciclo("DAM" + i, familia);
Skill skill = new Skill(faker.lorem().word() + i);
Set<Skill> skills = new HashSet<>();
skills.add(skill);
Alumno alumno = new Alumno(
faker.name().firstName(),
faker.name().lastName(),
faker.date().birthday(),
faker.demographic().sex(),
faker.number().digits(8),
faker.lorem().word(),
skills,
ciclo
);
alumnoRepository.save(alumno);
Sector sector = new Sector("Tecnologia" + i);
Empresa empresa = new Empresa(
faker.company().name(),
"123456789W" + i,
faker.internet().emailAddress(),
faker.phoneNumber().cellPhone(),
faker.company().profession(),
sector
);
Contacto contacto = new Contacto(
faker.name().firstName(),
faker.name().lastName(),
faker.name().lastName(),
faker.internet().emailAddress(),
faker.phoneNumber().cellPhone(),
empresa
);
contactoRepository.save(contacto);
Sucursal sucursal = new Sucursal(
"Sucursal " + (i + 1),
"Sevilla",
"Calle Falsa 123",
true,
empresa
);
sucursalRepository.save(sucursal);
Oferta oferta = new Oferta(
"Oferta " + (i + 1),
"Descripcion de la oferta",
"2023-01-11",
skills
);
ofertaRepository.save(oferta);
}
};
}
}

@ -1,4 +1,4 @@
package com.example.proyectofinal.seguridad; package com.example.proyectofinal.configuration.seguridad;
import jakarta.servlet.ServletException; import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;

@ -1,4 +1,4 @@
package com.example.proyectofinal.seguridad; package com.example.proyectofinal.configuration.seguridad;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
@ -10,7 +10,7 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.provisioning.InMemoryUserDetailsManager; import org.springframework.security.provisioning.InMemoryUserDetailsManager;
import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.SecurityFilterChain;
import static org.springframework.security.config.Customizer.withDefaults;
@Configuration @Configuration
public class SecurityConfig { public class SecurityConfig {
@Bean @Bean

@ -1,14 +1,14 @@
package com.example.proyectofinal.controllers; package com.example.proyectofinal.controllers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController() @Controller
@RequestMapping("/buscador") @RequestMapping("/buscador")
public class BuscadorController { public class BuscadorController {
@GetMapping("/test") @GetMapping
private String test(){ public String buscador(){
return "Test Buscador"; return "buscador";
} }
} }

@ -17,7 +17,7 @@ import java.util.Set;
public class Alumno { public class Alumno {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private int id; private long id;
@NonNull @NonNull
@Column(length = 45) @Column(length = 45)
@ -46,18 +46,38 @@ public class Alumno {
@Column(length = 45) @Column(length = 45)
private String keyword; private String keyword;
@NonNull @ManyToMany(cascade = {CascadeType.PERSIST,CascadeType.REFRESH},fetch = FetchType.EAGER)
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.REMOVE},fetch = FetchType.EAGER)
@JoinTable( @JoinTable(
name = "Alumno_Skill", name = "Alumno_Skill",
joinColumns = @JoinColumn(name = "fk_alumno"), joinColumns = @JoinColumn(name = "fk_alumno",referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "fk_skills") inverseJoinColumns = @JoinColumn(name = "fk_skills",referencedColumnName = "id")
) )
private Set<Skill> skills; private Set<Skill> skills;
@NonNull @ManyToOne(cascade = {CascadeType.PERSIST,CascadeType.REFRESH,CascadeType.REMOVE},fetch = FetchType.EAGER)
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.REMOVE}) @JoinColumn(name = "Ciclo_id",referencedColumnName = "id")
@JoinColumn(name = "Ciclo_id")
private Ciclo ciclo; private Ciclo ciclo;
public Alumno(@NonNull String nombre, @NonNull String apellido, String apellido2, @NonNull Date fechaNacimiento, @NonNull String genero, @NonNull String nia, @NonNull String keyword, @NonNull Set<Skill> skills, @NonNull Ciclo ciclo) {
this.nombre = nombre;
this.apellido = apellido;
this.apellido2 = apellido2;
this.fechaNacimiento = fechaNacimiento;
this.genero = genero;
this.nia = nia;
this.keyword = keyword;
this.skills = skills;
this.ciclo = ciclo;
}
public Alumno(@NonNull String nombre, @NonNull String apellido, @NonNull Date fechaNacimiento, @NonNull String genero, @NonNull String nia, @NonNull String keyword, @NonNull Set<Skill> skills, @NonNull Ciclo ciclo) {
this.nombre = nombre;
this.apellido = apellido;
this.fechaNacimiento = fechaNacimiento;
this.genero = genero;
this.nia = nia;
this.keyword = keyword;
this.skills = skills;
this.ciclo = ciclo;
}
} }

@ -1,5 +1,6 @@
package com.example.proyectofinal.models.empresas; package com.example.proyectofinal.models.empresas;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@ -14,14 +15,18 @@ import lombok.NonNull;
public class Ciclo { public class Ciclo {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private int id; private long id;
@NonNull @NonNull
@Column(length = 45) @Column(length = 45)
private String nombre; private String nombre;
@NonNull @ManyToOne(cascade = {CascadeType.PERSIST,CascadeType.REMOVE,CascadeType.REFRESH},fetch = FetchType.EAGER)
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.REMOVE}) @JoinColumn(name = "Familia_id",referencedColumnName = "id")
@JoinColumn(name = "Familia_id")
private Familia familia; private Familia familia;
public Ciclo(@NonNull String nombre, @NonNull Familia familia) {
this.nombre = nombre;
this.familia = familia;
}
} }

@ -16,9 +16,11 @@ public class Contacto {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private int id; private long id;
@NonNull @NonNull
private String nombre; private String nombre;
@NonNull @NonNull
private String apellido1; private String apellido1;
@ -26,9 +28,24 @@ public class Contacto {
private String correo; private String correo;
private String telefono; private String telefono;
@NonNull
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.REMOVE}) @ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.REMOVE})
@JoinColumn(name = "Empresa_id") @JoinColumn(name = "Empresa_id",referencedColumnName = "id")
private Empresa empresa; private Empresa empresa;
public Contacto(@NonNull String nombre, @NonNull String apellido1, String apellido2, String correo, String telefono, Empresa empresa) {
this.nombre = nombre;
this.apellido1 = apellido1;
this.apellido2 = apellido2;
this.correo = correo;
this.telefono = telefono;
this.empresa = empresa;
}
public Contacto(@NonNull String nombre, @NonNull String apellido1, String correo, String telefono, Empresa empresa) {
this.nombre = nombre;
this.apellido1 = apellido1;
this.correo = correo;
this.telefono = telefono;
this.empresa = empresa;
}
} }

@ -14,7 +14,7 @@ import lombok.NonNull;
public class Empresa { public class Empresa {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private int id; private long id;
@NonNull @NonNull
@Column(length = 45) @Column(length = 45)
@ -37,8 +37,16 @@ public class Empresa {
@Column(length = 2500) @Column(length = 2500)
private String keywords; private String keywords;
@NonNull @ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.REMOVE,CascadeType.REFRESH})
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.REMOVE}) @JoinColumn(name = "Sector_id",referencedColumnName = "id")
@JoinColumn(name = "Sector_id")
private Sector sector; private Sector sector;
public Empresa(@NonNull String nombre, @NonNull String cif, @NonNull String correo, @NonNull String telefono1, @NonNull String keywords, Sector sector) {
this.nombre = nombre;
this.cif = cif;
this.correo = correo;
this.telefono1 = telefono1;
this.keywords = keywords;
this.sector = sector;
}
} }

@ -14,9 +14,13 @@ import lombok.NonNull;
public class Familia { public class Familia {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private int id; private long id;
@NonNull @NonNull
@Column(length = 45) @Column(length = 45)
private String nombre; private String nombre;
public Familia(@NonNull String nombre) {
this.nombre = nombre;
}
} }

@ -17,7 +17,7 @@ import java.util.Set;
public class Oferta { public class Oferta {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private int id; private long id;
@NonNull @NonNull
@Column(length = 45) @Column(length = 45)
@ -30,13 +30,18 @@ public class Oferta {
@DateTimeFormat(pattern = "yyyy-mm-dd") @DateTimeFormat(pattern = "yyyy-mm-dd")
private String fecha; private String fecha;
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.REMOVE},fetch = FetchType.EAGER) @ManyToMany(cascade = {CascadeType.MERGE, CascadeType.REMOVE,CascadeType.REFRESH},fetch = FetchType.EAGER)
@JoinTable( @JoinTable(
name = "Oferta_Skill", name = "Oferta_Skill",
joinColumns = @JoinColumn(name = "fk_oferta"), joinColumns = @JoinColumn(name = "fk_oferta",referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "fk_skills") inverseJoinColumns = @JoinColumn(name = "fk_skills",referencedColumnName = "id")
) )
private Set<Skill> skills; private Set<Skill> skills;
public Oferta(@NonNull String nombre, String descripcion, @NonNull String fecha, Set<Skill> skills) {
this.nombre = nombre;
this.descripcion = descripcion;
this.fecha = fecha;
this.skills = skills;
}
} }

@ -14,7 +14,12 @@ import lombok.NonNull;
public class Sector { public class Sector {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private int id; private long id;
@NonNull @NonNull
private String nombre; private String nombre;
public Sector(@NonNull String nombre) {
this.nombre = nombre;
}
} }

@ -6,6 +6,8 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.NonNull; import lombok.NonNull;
import java.util.Set;
@Entity @Entity
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@ -14,9 +16,19 @@ import lombok.NonNull;
public class Skill { public class Skill {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private int id; private long id;
@NonNull @NonNull
@Column(length = 45) @Column(length = 45)
private String nombre; private String nombre;
@ManyToMany(mappedBy = "skills")
private Set<Alumno> alumnos;
@ManyToMany(mappedBy = "skills")
private Set<Oferta> ofertas;
public Skill(@NonNull String nombre) {
this.nombre = nombre;
}
} }

@ -15,7 +15,7 @@ import lombok.NonNull;
public class Sucursal { public class Sucursal {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private int id; private long id;
@NonNull @NonNull
@Column(length = 45) @Column(length = 45)
@ -34,7 +34,15 @@ public class Sucursal {
@Name("sede_central") @Name("sede_central")
private boolean sedeCentral; private boolean sedeCentral;
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.REMOVE}) @ManyToOne(cascade = {CascadeType.MERGE, CascadeType.REMOVE,CascadeType.REFRESH})
@JoinColumn(name = "Empresa_id") @JoinColumn(name = "Empresa_id")
private Empresa empresa; private Empresa empresa;
public Sucursal(@NonNull String nombre, @NonNull String localidad, @NonNull String direccion, @NonNull boolean sedeCentral, Empresa empresa) {
this.nombre = nombre;
this.localidad = localidad;
this.direccion = direccion;
this.sedeCentral = sedeCentral;
this.empresa = empresa;
}
} }

@ -0,0 +1,4 @@
package com.example.proyectofinal.models.login;
public class Autoridades {
}

@ -0,0 +1,4 @@
package com.example.proyectofinal.models.login;
public class Usuario {
}

@ -1,4 +0,0 @@
package com.example.proyectofinal.models.usuarios;
public class Autoridades {
}

@ -1,4 +0,0 @@
package com.example.proyectofinal.models.usuarios;
public class Usuario {
}

@ -0,0 +1,7 @@
package com.example.proyectofinal.repositories.empresas;
import com.example.proyectofinal.models.empresas.Alumno;
import org.springframework.data.jpa.repository.JpaRepository;
public interface AlumnoRepository extends JpaRepository<Alumno, Long> {
}

@ -0,0 +1,7 @@
package com.example.proyectofinal.repositories.empresas;
import com.example.proyectofinal.models.empresas.Ciclo;
import org.springframework.data.jpa.repository.JpaRepository;
public interface CicloRepository extends JpaRepository<Ciclo, Long> {
}

@ -0,0 +1,7 @@
package com.example.proyectofinal.repositories.empresas;
import com.example.proyectofinal.models.empresas.Contacto;
import org.springframework.data.jpa.repository.JpaRepository;
public interface ContactoRepository extends JpaRepository<Contacto, Long> {
}

@ -0,0 +1,7 @@
package com.example.proyectofinal.repositories.empresas;
import com.example.proyectofinal.models.empresas.Empresa;
import org.springframework.data.jpa.repository.JpaRepository;
public interface EmpressaRepository extends JpaRepository<Empresa, Long> {
}

@ -0,0 +1,7 @@
package com.example.proyectofinal.repositories.empresas;
import com.example.proyectofinal.models.empresas.Familia;
import org.springframework.data.jpa.repository.JpaRepository;
public interface FamiliaRepository extends JpaRepository<Familia, Long> {
}

@ -0,0 +1,7 @@
package com.example.proyectofinal.repositories.empresas;
import com.example.proyectofinal.models.empresas.Oferta;
import org.springframework.data.jpa.repository.JpaRepository;
public interface OfertaRepository extends JpaRepository<Oferta, Long> {
}

@ -0,0 +1,7 @@
package com.example.proyectofinal.repositories.empresas;
import com.example.proyectofinal.models.empresas.Sector;
import org.springframework.data.jpa.repository.JpaRepository;
public interface SectorRepository extends JpaRepository<Sector, Long> {
}

@ -0,0 +1,7 @@
package com.example.proyectofinal.repositories.empresas;
import com.example.proyectofinal.models.empresas.Skill;
import org.springframework.data.jpa.repository.JpaRepository;
public interface SkillRepository extends JpaRepository<Skill, Long> {
}

@ -0,0 +1,7 @@
package com.example.proyectofinal.repositories.empresas;
import com.example.proyectofinal.models.empresas.Sucursal;
import org.springframework.data.jpa.repository.JpaRepository;
public interface SucursalRepository extends JpaRepository<Sucursal, Long> {
}

@ -0,0 +1,7 @@
package com.example.proyectofinal.repositories.login;
import com.example.proyectofinal.models.login.Autoridades;
import org.springframework.data.jpa.repository.JpaRepository;
public interface AutoridadesRepository /*extends JpaRepository<Autoridades, Long> */{
}

@ -0,0 +1,7 @@
package com.example.proyectofinal.repositories.login;
import org.apache.catalina.User;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository /*extends JpaRepository<User, Long> */{
}

@ -0,0 +1,49 @@
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Buscador</title>
<style>
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #f0f0f0;
font-family: Arial, sans-serif;
}
form {
display: flex;
justify-content: space-between;
width: 50%;
}
input[type="text"] {
flex-grow: 1;
padding: 15px;
margin-right: 10px;
font-size: 18px;
}
.checkboxes {
display: flex;
flex-direction: column;
justify-content: space-between;
width: 50%;
margin-top: 20px;
}
</style>
</head>
<body>
<form action="#" method="get">
<input type="text" name="query" placeholder="Buscar...">
<input type="submit" value="Buscar">
</form>
<div class="checkboxes">
<input type="checkbox" id="option1" name="option1" value="Option1">
<label for="option1"> Option 1</label><br>
<input type="checkbox" id="option2" name="option2" value="Option2">
<label for="option2"> Option 2</label><br>
<input type="checkbox" id="option3" name="option3" value="Option3">
<label for="option3"> Option 3</label><br>
</div>
</body>
</html>
Loading…
Cancel
Save

Powered by INFORMATICA.FP.EDU.ES.