Ajustes a los modelos generales y a cascades, creacion de listas de ofertas(pendiente de probar) y alumnos con busquedas basicas. Ajestes a la interfaz de listas, un boton para volver atras al buscador

master
vicsash 5 months ago
parent 88fb8b99c2
commit 4d8902df1c

@ -1,9 +1,6 @@
package com.example.proyectofinal.configuration.database; package com.example.proyectofinal.configuration.database;
import com.example.proyectofinal.models.empresas.*; import com.example.proyectofinal.models.empresas.*;
import com.example.proyectofinal.repositories.empresas.AlumnoRepository; import com.example.proyectofinal.repositories.empresas.*;
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 com.github.javafaker.Faker;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner; import org.springframework.boot.CommandLineRunner;
@ -13,6 +10,7 @@ import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource; import javax.sql.DataSource;
import java.util.HashSet; import java.util.HashSet;
import java.util.Random;
import java.util.Set; import java.util.Set;
@Configuration @Configuration
@ -21,16 +19,21 @@ public class DatabaseTest {
private DataSource dataSource; private DataSource dataSource;
@Bean @Bean
CommandLineRunner initDatabase(AlumnoRepository alumnoRepository, ContactoRepository contactoRepository, SucursalRepository sucursalRepository, OfertaRepository ofertaRepository) { CommandLineRunner initDatabase(AlumnoRepository alumnoRepository, ContactoRepository contactoRepository, SucursalRepository sucursalRepository, OfertaRepository ofertaRepository, SkillRepository skillRepository, EmpressaRepository empressaRepository, CicloRepository cicloRepository, SectorRepository sectorRepository) {
return args -> { return args -> {
Faker faker = new Faker(); Faker faker = new Faker();
for (int i = 0; i < 5; i++) { String[] cicloNames = {"DAM", "DAM2", "DAW", "DAW2", "ACI"};
Familia familia = new Familia("Informatica" + i); String[] familiaNames = {"Informatica", "Informatica2", "Informatica3", "Informatica4", "Informatica5"};
Random random = new Random();
Ciclo ciclo = new Ciclo("DAM" + i, familia); for (int i = 0; i < 10; i++) {
int randomIndex = random.nextInt(cicloNames.length);
Familia familia = new Familia(familiaNames[randomIndex]);
Ciclo ciclo = new Ciclo(cicloNames[randomIndex], familia);
Skill skill = new Skill(faker.lorem().word() + i); Skill skill = new Skill(faker.lorem().word() + i);
skillRepository.save(skill);
Set<Skill> skills = new HashSet<>(); Set<Skill> skills = new HashSet<>();
skills.add(skill); skills.add(skill);
@ -38,16 +41,23 @@ public class DatabaseTest {
Alumno alumno = new Alumno( Alumno alumno = new Alumno(
faker.name().firstName(), faker.name().firstName(),
faker.name().lastName(), faker.name().lastName(),
faker.name().lastName(),
faker.date().birthday(), faker.date().birthday(),
faker.demographic().sex(), faker.demographic().sex(),
faker.number().digits(8), faker.number().digits(8),
faker.number().digits(8),
faker.internet().emailAddress(),
faker.internet().emailAddress(),
faker.country().name(),
faker.lorem().word(), faker.lorem().word(),
skills, skills,
ciclo ciclo
); );
System.out.println(alumno);
alumnoRepository.save(alumno); alumnoRepository.save(alumno);
Sector sector = new Sector("Tecnologia" + i); Sector sector = new Sector("Tecnologia" + i);
//sectorRepository.save(sector);
Empresa empresa = new Empresa( Empresa empresa = new Empresa(
faker.company().name(), faker.company().name(),
@ -57,6 +67,7 @@ public class DatabaseTest {
faker.company().profession(), faker.company().profession(),
sector sector
); );
//empressaRepository.save(empresa);
Contacto contacto = new Contacto( Contacto contacto = new Contacto(
faker.name().firstName(), faker.name().firstName(),
@ -75,18 +86,20 @@ public class DatabaseTest {
true, true,
empresa empresa
); );
sucursalRepository.save(sucursal); //sucursalRepository.save(sucursal);
Oferta oferta = new Oferta( Oferta oferta = new Oferta(
"Oferta " + (i + 1), "Oferta " + (i + 1),
"Descripcion de la oferta", "Descripcion de la oferta",
"2023-01-11", "2023-01-11",
sucursal,
skills skills
); );
ofertaRepository.save(oferta); ofertaRepository.save(oferta);
} }
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.execute("CREATE FULLTEXT INDEX keywords_index ON empresas(keywords,nombre)"); jdbcTemplate.execute("CREATE FULLTEXT INDEX keywords_index ON empresas(keywords,nombre)");
jdbcTemplate.execute("CREATE FULLTEXT INDEX keywords_index ON alumnos(keywords,nombre,apellido,apellido2,dni,nia,correo,correo2,nacionalidad,genero)");
}; };
} }

@ -1,6 +1,10 @@
package com.example.proyectofinal.controllers; package com.example.proyectofinal.controllers;
import com.example.proyectofinal.models.empresas.Alumno;
import com.example.proyectofinal.models.empresas.Oferta;
import com.example.proyectofinal.repositories.empresas.AlumnoRepository;
import com.example.proyectofinal.repositories.empresas.OfertaRepository;
import org.springframework.ui.Model; import org.springframework.ui.Model;
import com.example.proyectofinal.models.empresas.Empresa; import com.example.proyectofinal.models.empresas.Empresa;
import com.example.proyectofinal.repositories.empresas.EmpressaRepository; import com.example.proyectofinal.repositories.empresas.EmpressaRepository;
@ -10,15 +14,21 @@ 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.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.Collections;
@Controller @Controller
@RequestMapping("/buscador") @RequestMapping("/buscador")
public class BuscadorController { public class BuscadorController {
@Autowired @Autowired
private EmpressaRepository empressaRepository; private EmpressaRepository empressaRepository;
@Autowired
private AlumnoRepository alumnoRepository;
@Autowired
private OfertaRepository ofertaRepository;
@GetMapping @GetMapping
public String buscador(){ public String buscador(){
return "buscador_admin"; return "buscador_admin";
@ -27,10 +37,39 @@ public class BuscadorController {
@GetMapping("/search") @GetMapping("/search")
public String search(@RequestParam String query, @RequestParam(required = false) String optempresa, String optskill, String optalumno, String optoferta, Model model) { public String search(@RequestParam String query, @RequestParam(required = false) String optempresa, String optskill, String optalumno, String optoferta, Model model) {
if(optempresa != null){ if(optempresa != null){
ArrayList<Empresa> empresas = empressaRepository.getEmpressaByKeywordsOrName("*"+query+"*"); String[] words = query.split("[,/]|and|or");
Set<Empresa> empresas = new HashSet<>();
for (String word : words) {
empresas.addAll(empressaRepository.getEmpressaByKeywordsOrName("*"+word.trim()+"*"));
}
model.addAttribute("empresas", empresas); model.addAttribute("empresas", empresas);
} }
return "list_empresas"; if(optalumno != null){
// System.out.println("Alumno: TEST TEST TEST");
String[] words = query.split("[,/]|and|or");
Set<Alumno> alumnos = new HashSet<>();
for(String word : words){
alumnos.addAll(alumnoRepository.getAlumnoByKeywordsOrName("*"+word.trim()+"*"));
// System.out.println("Alumno: " + alumnos.toString());
}
model.addAttribute("alumnos", alumnos);
}
if(optoferta != null){
// System.out.println("Oferta: TEST TEST TEST");
String[] words = query.split("[,/]|and|or");
Set<Oferta> ofertas = new HashSet<>();
for(String word : words){
ofertas.addAll(ofertaRepository.getOfertaByKeywordsOrName("*"+word.trim()+"*"));
// System.out.println("Oferta: " + ofertas.toString());
}
model.addAttribute("ofertas", ofertas);
}
return "list_alumnos";
} }
} }

@ -20,14 +20,14 @@ public class Alumno {
private long id; private long id;
@NonNull @NonNull
@Column(length = 45) @Column(length = 70)
private String nombre; private String nombre;
@NonNull @NonNull
@Column(length = 45) @Column(length = 70)
private String apellido; private String apellido;
@Column(length = 45) @Column(length = 70)
private String apellido2; private String apellido2;
@NonNull @NonNull
@ -44,11 +44,27 @@ public class Alumno {
@NonNull @NonNull
@Column(length = 45) @Column(length = 45)
private String keyword; private String dni;
//TODO Añadir campos adicinales en alumno dni,correo 1 y 2,
// nacionalidad, domicillo y otros adicionales si hay necesidad @NonNull
@Column(length = 100)
private String correo;
//TODO add domiciollo 200
@Column(length = 100)
private String correo2;
@NonNull
@Column(length = 100)
private String nacionalidad;
@NonNull
@Column(length = 2500)
private String keywords;
@ManyToMany(cascade = {CascadeType.PERSIST,CascadeType.REFRESH},fetch = FetchType.EAGER) @ManyToMany(cascade = {CascadeType.MERGE, CascadeType.REFRESH},fetch = FetchType.EAGER)
@JoinTable( @JoinTable(
name = "Alumno_Skill", name = "Alumno_Skill",
joinColumns = @JoinColumn(name = "fk_alumno",referencedColumnName = "id"), joinColumns = @JoinColumn(name = "fk_alumno",referencedColumnName = "id"),
@ -56,30 +72,67 @@ public class Alumno {
) )
private Set<Skill> skills; private Set<Skill> skills;
@ManyToOne(cascade = {CascadeType.PERSIST,CascadeType.REFRESH,CascadeType.REMOVE},fetch = FetchType.EAGER) @ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH,CascadeType.REMOVE},fetch = FetchType.EAGER)
@JoinColumn(name = "Ciclo_id",referencedColumnName = "id") @JoinColumn(name = "Ciclo_id",referencedColumnName = "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) { public Alumno(@NonNull String nombre, @NonNull String apellido, String apellido2, @NonNull Date fechaNacimiento, @NonNull String genero, @NonNull String nia, @NonNull String dni, @NonNull String correo, String correo2, @NonNull String nacionalidad, @NonNull String keyword, Set<Skill> skills, Ciclo ciclo) {
this.nombre = nombre; this.nombre = nombre;
this.apellido = apellido; this.apellido = apellido;
this.apellido2 = apellido2; this.apellido2 = apellido2;
this.fechaNacimiento = fechaNacimiento; this.fechaNacimiento = fechaNacimiento;
this.genero = genero; this.genero = genero;
this.nia = nia; this.nia = nia;
this.keyword = keyword; this.dni = dni;
this.correo = correo;
this.correo2 = correo2;
this.nacionalidad = nacionalidad;
this.keywords = keyword;
this.skills = skills; this.skills = skills;
this.ciclo = ciclo; 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) { // public Alumno(@NonNull String nombre, @NonNull String apellido, String apellido2, @NonNull Date fechaNacimiento, @NonNull String genero, @NonNull String nia, @NonNull String dni, @NonNull String correo, @NonNull String nacionalidad, @NonNull String keyword, Set<Skill> skills, Ciclo ciclo) {
this.nombre = nombre; // this.nombre = nombre;
this.apellido = apellido; // this.apellido = apellido;
this.fechaNacimiento = fechaNacimiento; // this.apellido2 = apellido2;
this.genero = genero; // this.fechaNacimiento = fechaNacimiento;
this.nia = nia; // this.genero = genero;
this.keyword = keyword; // this.nia = nia;
this.skills = skills; // this.dni = dni;
this.ciclo = ciclo; // this.correo = correo;
} // this.nacionalidad = nacionalidad;
// 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 dni, @NonNull String correo, @NonNull String nacionalidad, @NonNull String keyword, Set<Skill> skills, Ciclo ciclo) {
// this.nombre = nombre;
// this.apellido = apellido;
// this.fechaNacimiento = fechaNacimiento;
// this.genero = genero;
// this.nia = nia;
// this.dni = dni;
// this.correo = correo;
// this.nacionalidad = nacionalidad;
// 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 dni, @NonNull String correo, String correo2, @NonNull String nacionalidad, @NonNull String keyword, Set<Skill> skills, Ciclo ciclo) {
// this.nombre = nombre;
// this.apellido = apellido;
// this.fechaNacimiento = fechaNacimiento;
// this.genero = genero;
// this.nia = nia;
// this.dni = dni;
// this.correo = correo;
// this.correo2 = correo2;
// this.nacionalidad = nacionalidad;
// this.keyword = keyword;
// this.skills = skills;
// this.ciclo = ciclo;
// }
} }

@ -18,10 +18,11 @@ public class Ciclo {
private long id; private long id;
@NonNull @NonNull
@Column(length = 45) @Column(length = 70)
private String nombre; private String nombre;
//TODO add String codigo 40
@ManyToOne(cascade = {CascadeType.PERSIST,CascadeType.REMOVE,CascadeType.REFRESH},fetch = FetchType.EAGER) @ManyToOne(cascade = {CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REMOVE,CascadeType.REFRESH},fetch = FetchType.EAGER)
@JoinColumn(name = "Familia_id",referencedColumnName = "id") @JoinColumn(name = "Familia_id",referencedColumnName = "id")
private Familia familia; private Familia familia;

@ -19,16 +19,23 @@ public class Contacto {
private long id; private long id;
@NonNull @NonNull
@Column(length = 70)
private String nombre; private String nombre;
@NonNull @NonNull
@Column(length = 70)
private String apellido1; private String apellido1;
@Column(length = 70)
private String apellido2; private String apellido2;
@Column(length = 100)
private String correo; private String correo;
@Column(length = 70)
private String telefono; private String telefono;
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.REMOVE}) @ManyToOne(cascade = {CascadeType.PERSIST,CascadeType.MERGE, CascadeType.REMOVE})
@JoinColumn(name = "Empresa_id",referencedColumnName = "id") @JoinColumn(name = "Empresa_id",referencedColumnName = "id")
private Empresa empresa; private Empresa empresa;

@ -17,19 +17,19 @@ public class Empresa {
private long id; private long id;
@NonNull @NonNull
@Column(length = 45) @Column(length = 70)
private String nombre; private String nombre;
@NonNull @NonNull
@Column(length = 45) @Column(length = 70)
private String cif; private String cif;
@NonNull @NonNull
@Column(length = 45) @Column(length = 100)
private String correo; private String correo;
@NonNull @NonNull
@Column(length = 45) @Column(length = 70)
private String telefono; private String telefono;
@ -37,7 +37,7 @@ public class Empresa {
@Column(length = 2500) @Column(length = 2500)
private String keywords; private String keywords;
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.REMOVE,CascadeType.REFRESH}) @ManyToOne(cascade = {CascadeType.PERSIST,CascadeType.MERGE, CascadeType.REMOVE,CascadeType.REFRESH})
@JoinColumn(name = "Sector_id",referencedColumnName = "id") @JoinColumn(name = "Sector_id",referencedColumnName = "id")
private Sector sector; private Sector sector;

@ -17,7 +17,7 @@ public class Familia {
private long id; private long id;
@NonNull @NonNull
@Column(length = 45) @Column(length = 70)
private String nombre; private String nombre;
public Familia(@NonNull String nombre) { public Familia(@NonNull String nombre) {

@ -20,15 +20,21 @@ public class Oferta {
private long id; private long id;
@NonNull @NonNull
@Column(length = 45) @Column(length = 70)
private String nombre; private String nombre;
//TODO see the order of elements
@NonNull
@DateTimeFormat(pattern = "yyyy-mm-dd")
private String fecha;
@Column(length = 2500) @Column(length = 2500)
private String descripcion; private String descripcion;
@NonNull
@DateTimeFormat(pattern = "yyyy-mm-dd")
private String fecha; @ManyToOne(cascade = {CascadeType.PERSIST,CascadeType.PERSIST,CascadeType.MERGE, CascadeType.REMOVE,CascadeType.REFRESH})
@JoinColumn(name = "Sucursal_id")
private Sucursal sucursal;
@ManyToMany(cascade = {CascadeType.MERGE, CascadeType.REMOVE,CascadeType.REFRESH},fetch = FetchType.EAGER) @ManyToMany(cascade = {CascadeType.MERGE, CascadeType.REMOVE,CascadeType.REFRESH},fetch = FetchType.EAGER)
@JoinTable( @JoinTable(
@ -38,10 +44,11 @@ public class Oferta {
) )
private Set<Skill> skills; private Set<Skill> skills;
public Oferta(@NonNull String nombre, String descripcion, @NonNull String fecha, Set<Skill> skills) { public Oferta(@NonNull String nombre, String descripcion, @NonNull String fecha, Sucursal sucursal, Set<Skill> skills) {
this.nombre = nombre; this.nombre = nombre;
this.descripcion = descripcion; this.descripcion = descripcion;
this.fecha = fecha; this.fecha = fecha;
this.sucursal = sucursal;
this.skills = skills; this.skills = skills;
} }
} }

@ -17,6 +17,7 @@ public class Sector {
private long id; private long id;
@NonNull @NonNull
@Column(length = 75)
private String nombre; private String nombre;
public Sector(@NonNull String nombre) { public Sector(@NonNull String nombre) {

@ -19,7 +19,7 @@ public class Skill {
private long id; private long id;
@NonNull @NonNull
@Column(length = 45) @Column(length = 75)
private String nombre; private String nombre;
@ManyToMany(mappedBy = "skills") @ManyToMany(mappedBy = "skills")

@ -18,23 +18,22 @@ public class Sucursal {
private long id; private long id;
@NonNull @NonNull
@Column(length = 45) @Column(length = 75)
private String nombre; private String nombre;
@NonNull @NonNull
@Column(length = 45) @Column(length = 75)
private String localidad; private String localidad;
@NonNull @NonNull
@Column(length = 45) @Column(length = 100)
private String direccion; private String direccion;
@NonNull @NonNull
@Column(length = 45)
@Name("sede_central") @Name("sede_central")
private boolean sedeCentral; private boolean sedeCentral;
@ManyToOne(cascade = {CascadeType.MERGE, CascadeType.REMOVE,CascadeType.REFRESH}) @ManyToOne(cascade = {/*CascadeType.PERSIST,*/CascadeType.MERGE, CascadeType.REMOVE,CascadeType.REFRESH})
@JoinColumn(name = "Empresa_id") @JoinColumn(name = "Empresa_id")
private Empresa empresa; private Empresa empresa;

@ -1,7 +1,16 @@
package com.example.proyectofinal.repositories.empresas; package com.example.proyectofinal.repositories.empresas;
import com.example.proyectofinal.models.empresas.Alumno; import com.example.proyectofinal.models.empresas.Alumno;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.ArrayList;
public interface AlumnoRepository extends JpaRepository<Alumno, Long> { public interface AlumnoRepository extends JpaRepository<Alumno, Long> {
//TODO alter query so in like all the other elemnts are included
@Query(value = "SELECT * FROM alumnos u WHERE MATCH(u.nombre, u.keywords, " +
"u.apellido, u.apellido2, u.correo, u.correo2, u.nacionalidad, u.genero, u.dni, u.nia ) AGAINST(?1 IN BOOLEAN MODE) OR u.nombre LIKE %?1% OR u.keywords LIKE %?1%", nativeQuery = true)
public ArrayList<Alumno> getAlumnoByKeywordsOrName(String keyword1);
} }

@ -7,11 +7,10 @@ import org.springframework.data.jpa.repository.Query;
import java.util.ArrayList; import java.util.ArrayList;
public interface EmpressaRepository extends JpaRepository<Empresa, Long> { public interface EmpressaRepository extends JpaRepository<Empresa, Long> {
//There is no value= here so Empresa is the table name
@Query("Select u from Empresa u where u.nombre LIKE ?1")
public Empresa getEmpressa(String empressa);
//there is value = and nativeQuery = true so the query is written in SQL refering to the table in the database //there is value = and nativeQuery = true so the query is written in SQL refering to the table in the database
@Query(value = "Select * FROM empresas u where MATCH(u.nombre, u.keywords) AGAINST( ?1 in boolean mode)",nativeQuery = true) @Query(value = "SELECT * FROM empresas u WHERE MATCH(u.nombre, u.keywords) AGAINST(?1 IN BOOLEAN MODE) OR u.nombre LIKE %?1% OR u.keywords LIKE %?1%", nativeQuery = true)
public ArrayList<Empresa> getEmpressaByKeywordsOrName(String keyword1); public ArrayList<Empresa> getEmpressaByKeywordsOrName(String word);
} }

@ -1,7 +1,14 @@
package com.example.proyectofinal.repositories.empresas; package com.example.proyectofinal.repositories.empresas;
import com.example.proyectofinal.models.empresas.Empresa;
import com.example.proyectofinal.models.empresas.Oferta; import com.example.proyectofinal.models.empresas.Oferta;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.ArrayList;
public interface OfertaRepository extends JpaRepository<Oferta, Long> { public interface OfertaRepository extends JpaRepository<Oferta, Long> {
@Query(value = "SELECT * FROM ofertas u WHERE MATCH(u.nombre, u.fecha) AGAINST(?1 IN BOOLEAN MODE) OR u.nombre LIKE %?1% OR u.fecha LIKE %?1%", nativeQuery = true)
public ArrayList<Oferta> getOfertaByKeywordsOrName(String word);
} }

@ -13,3 +13,4 @@ server.port=8080
#Dialecto #Dialecto
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect

@ -0,0 +1,64 @@
INSERT INTO Familia (nombre) VALUES ('Informatica1');
INSERT INTO Familia (nombre) VALUES ('Informatica2');
INSERT INTO Familia (nombre) VALUES ('Informatica3');
INSERT INTO Familia (nombre) VALUES ('Informatica4');
INSERT INTO Familia (nombre) VALUES ('Informatica5');
-- Insert into Ciclo table
INSERT INTO Ciclo (nombre, codigo, Familia_id) VALUES ('Dessarrollo de aplicaciones multiplataforma 1','DAM1', 1);
INSERT INTO Ciclo (nombre, codigo, Familia_id) VALUES ('Dessarrollo de aplicaciones multiplataforma','DAM2', 2);
INSERT INTO Ciclo (nombre, codigo, Familia_id) VALUES ('Dessarrollo de aplicaciones web 1','DAW2', 3);
INSERT INTO Ciclo (nombre, codigo, Familia_id) VALUES ('Dessarrollo de aplicaciones web 2','DAW2', 4);
INSERT INTO Ciclo (nombre, codigo, Familia_id) VALUES ('Dessarrollo de aplicaciones anci 1','ANCI2', 5);
INSERT INTO Ciclo (nombre, codigo, Familia_id) VALUES ('Dessarrollo de aplicaciones anci 2','ANCI2', 5);
-- Insert into Skill table
INSERT INTO Skill (nombre) VALUES ('Java');
INSERT INTO Skill (nombre) VALUES ('Guitara');
INSERT INTO Skill (nombre) VALUES ('Eletricista');
INSERT INTO Skill (nombre) VALUES ('Moviles');
INSERT INTO Skill (nombre) VALUES ('Deportista');
INSERT INTO Skill (nombre) VALUES ('Python');
-- Insert into Alumno table
INSERT INTO Alumno (nombre, apellido, apellido2, fechaNacimiento, genero, nia, dni, correo, correo2, nacionalidad, keyword, Ciclo_id) VALUES ('John', 'Doe', , '2000-01-01', 'Male', '123456781', '12345678A', 'john.doe@example.com', 'john.smith@example.com', 'American', 'Java, Python', 1);
INSERT INTO Alumno (nombre, apellido, apellido2, fechaNacimiento, genero, nia, dni, correo, correo2, nacionalidad, keyword, Ciclo_id) VALUES ('Jane', 'Doe', 'Johnson', '2000-02-02', 'Female', '123456782', '12345678B', 'jane.doe@example.com', 'jane.johnson@example.com', 'American', 'Guitara', 2);
INSERT INTO Alumno (nombre, apellido, apellido2, fechaNacimiento, genero, nia, dni, correo, correo2, nacionalidad, keyword, Ciclo_id) VALUES ('Robert', 'Smith', , '2000-03-03', 'Male', '123456783', '12345678C', 'robert.smith@example.com', , 'British', 'Eletricista', 3);
INSERT INTO Alumno (nombre, apellido, apellido2, fechaNacimiento, genero, nia, dni, correo, correo2, nacionalidad, keyword, Ciclo_id) VALUES ('Emily', 'Johnson', 'Smith', '2000-04-04', 'Female', '123456784', '12345678D', 'emily.johnson@example.com', 'emily.smith@example.com', 'British', 'Moviles', 4);
INSERT INTO Alumno (nombre, apellido, apellido2, fechaNacimiento, genero, nia, dni, correo, correo2, nacionalidad, keyword, Ciclo_id) VALUES ('James', 'Brown', 'Johnson', '2000-05-05', 'Male', '123456785', '12345678E', 'james.brown@example.com', , 'Australian', 'Deportista', 5);
-- Insert into Sector table
INSERT INTO Sector (nombre) VALUES ('Electricidad');
INSERT INTO Sector (nombre) VALUES ('Informatica');
INSERT INTO Sector (nombre) VALUES ('Deporte');
INSERT INTO Sector (nombre) VALUES ('Musica');
INSERT INTO Sector (nombre) VALUES ('Electronica');
-- Insert into Empresa table
INSERT INTO Empresa (nombre, cif, correo, telefono, keywords, Sector_id) VALUES ('LuzT', '123456789W1', 'luzt@example.com', '12345678901', 'trabajador,python', 1);
INSERT INTO Empresa (nombre, cif, correo, telefono, keywords, Sector_id) VALUES ('PC R&R', '123456789W2', 'pcrnr@example.com', '12345678902', 'jugador', 2);
INSERT INTO Empresa (nombre, cif, correo, telefono, keywords, Sector_id) VALUES ('Runners', '123456789W3', 'run@example.com', '12345678903', 'bailador', 3);
INSERT INTO Empresa (nombre, cif, correo, telefono, keywords, Sector_id) VALUES ('Keytara', '123456789W4', 'keytara@example.com', '12345678904', 'programador', 4);
INSERT INTO Empresa (nombre, cif, correo, telefono, keywords, Sector_id) VALUES ('Movil', '123456789W5', 'movil@example.com', '12345678905', 'animales', 5);
-- Insert into Contacto table
INSERT INTO Contacto (nombre, apellido1, apellido2, correo, telefono, Empresa_id) VALUES ('Juan', 'Gonzales','Gonzales' , 'juan@example.com', '12345678901', 1);
INSERT INTO Contacto (nombre, apellido1, apellido2, correo, telefono, Empresa_id) VALUES ('Estaban', 'Smit', 'Lokasto', '', '12345678902', 2);
INSERT INTO Contacto (nombre, apellido1, apellido2, correo, telefono, Empresa_id) VALUES ('Pablo', 'Lodrego', , 'pablo@example.com', '12345678903', 3);
INSERT INTO Contacto (nombre, apellido1, apellido2, correo, telefono, Empresa_id) VALUES ('David', 'Borgia', 'Algosto', 'david4@example.com', '12345678904', 4);
INSERT INTO Contacto (nombre, apellido1, apellido2, correo, telefono, Empresa_id) VALUES ('Logan', 'Porlot', , 'logan@example.com', '', 5);
-- Insert into Sucursal table
INSERT INTO Sucursal (nombre, localidad, direccion, sede_central, Empresa_id) VALUES ('Sucursal1', 'Denia', 'Calle 123', true, 1);
INSERT INTO Sucursal (nombre, localidad, direccion, sede_central, Empresa_id) VALUES ('Sucursal2', 'Javea', 'Calle Verdadera 123', true, 2);
INSERT INTO Sucursal (nombre, localidad, direccion, sede_central, Empresa_id) VALUES ('Sucursal3', 'Teulada', 'Calle Alog 123', true, 3);
INSERT INTO Sucursal (nombre, localidad, direccion, sede_central, Empresa_id) VALUES ('Sucursal4', 'Benitachell', 'Calle Loco 123', true, 4);
INSERT INTO Sucursal (nombre, localidad, direccion, sede_central, Empresa_id) VALUES ('Sucursal5', 'Benissa', 'Calle Norm 123', true, 5);
-- Insert into Oferta table
INSERT INTO Oferta (nombre, descripcion, fecha, Sucursal_id) VALUES ('Oferta1', 'Description1', '2023-01-11', 1);
INSERT INTO Oferta (nombre, descripcion, fecha, Sucursal_id) VALUES ('Oferta2', 'Description2', '2023-01-12', 2);
INSERT INTO Oferta (nombre, descripcion, fecha, Sucursal_id) VALUES ('Oferta3', 'Description3', '2023-01-13', 3);
INSERT INTO Oferta (nombre, descripcion, fecha, Sucursal_id) VALUES ('Oferta4', 'Description4', '2023-01-14', 4);
INSERT INTO Oferta (nombre, descripcion, fecha, Sucursal_id) VALUES ('Oferta5', 'Description5', '2023-01-15', 5);

@ -48,8 +48,8 @@
<div class="checkboxes"> <div class="checkboxes">
<input type="checkbox" id="optionEmpresa" name="optempresa" value="OptEmpresa"> <input type="checkbox" id="optionEmpresa" name="optempresa" value="OptEmpresa">
<label for="optionEmpresa"> Empresa por nombre y/o keywords</label><br> <label for="optionEmpresa"> Empresa por nombre y/o keywords</label><br>
<input type="checkbox" id="optionEmpresaPorSecot" name="optempporsector" value="optionEmpresaPorSecot"> <input type="checkbox" id="optionEmpresaPorSector" name="optempporsector" value="optionEmpresaPorSector">
<label for="optionEmpresaPorSecot"> Empresa por Sector</label><br> <label for="optionEmpresaPorSector"> Empresa por Sector</label><br>
<input type="checkbox" id="optionAlumno" name="optalumno" value="OptAlumno"> <input type="checkbox" id="optionAlumno" name="optalumno" value="OptAlumno">
<label for="optionAlumno">Alumno</label><br> <label for="optionAlumno">Alumno</label><br>
<input type="checkbox" id="optionOferta" name="optoferta" value="OptOferta"> <input type="checkbox" id="optionOferta" name="optoferta" value="OptOferta">

@ -6,17 +6,38 @@
<title>Title</title> <title>Title</title>
<style> <style>
.keywords-cell { .keywords-cell {
max-width: 10px; max-height: 10px;
overflow-y: auto; overflow-y: auto;
} }
.cell{
height: 10px;
}
h1 {
text-align: center;
}
.back-button {
position: fixed;
bottom: 10px;
left: 10px;
padding: 10px 20px;
background-color: #007BFF;
color: white;
text-decoration: none;
border-radius: 5px;
}
.table {
border: 1px solid black;
height: 75vh; /* Default height */
max-height: 100vh; /* Maximum height */
overflow-y: auto; /* Enable vertical scrolling */
}
</style> </style>
</head> </head>
<body> <body>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-Fy6S3B9q64WdZWQUiU+q4/2Lc9npb8tCaSX9FK7E8HnRr0Jz8D6OP9dO5Vg3Q9ct" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-Fy6S3B9q64WdZWQUiU+q4/2Lc9npb8tCaSX9FK7E8HnRr0Jz8D6OP9dO5Vg3Q9ct" crossorigin="anonymous"></script>
<h1>Listado de Alumnos</h1>
<div class="table"> <div class="table">
<h1>Listado de Empresas</h1>
<table class ="table table-hover table-responsive-xl"> <table class ="table table-hover table-responsive-xl">
<thead class="thread-light"> <thead class="thread-light">
<tr> <tr>
@ -25,14 +46,18 @@
<th>Apellido 1</th> <th>Apellido 1</th>
<th>Apellido 2</th> <th>Apellido 2</th>
<th>Fecha Nacimiento</th> <th>Fecha Nacimiento</th>
<th>Genero</th>
<th>NIA</th> <th>NIA</th>
<th>DNI/NIE</th>
<th>Correo 1</th>
<th>Correo 2</th>
<th>Nacionalidad</th>
<th>Keywords</th> <th>Keywords</th>
<th>Skills</th>
<th>Ciclo</th> <th>Ciclo</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr th:each="alumno :${alumnos}"> <tr class="cell" th:each="alumno :${alumnos}">
<td>[[${alumno.id}]]</td> <td>[[${alumno.id}]]</td>
<td>[[${alumno.nombre}]]</td> <td>[[${alumno.nombre}]]</td>
<td>[[${alumno.apellido}]]</td> <td>[[${alumno.apellido}]]</td>
@ -40,12 +65,17 @@
<td>[[${alumno.fechaNacimiento}]]</td> <td>[[${alumno.fechaNacimiento}]]</td>
<td>[[${alumno.genero}]]</td> <td>[[${alumno.genero}]]</td>
<td>[[${alumno.nia}]]</td> <td>[[${alumno.nia}]]</td>
<td class="keywords-cell" th:each="keyword : ${#strings.arraySplit(empresa.keywords, ',')}">[[${keyword}]]</td> <td>[[${alumno.dni}]]</td>
<td>[[${alumno.ciclo}]]</td> <td>[[${alumno.correo}]]</td>
<td>[[${alumno.correo2}]]</td>
<td>[[${alumno.nacionalidad}]]</td>
<td class="keywords-cell" th:each="keyword : ${#strings.arraySplit(alumno.keywords, ',')}">[[${keyword}]]</td>
<td>[[${alumno.ciclo.nombre}]]</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<a href="/buscador" class="back-button">Back to Buscador</a>
</body> </body>
</html> </html>

@ -6,16 +6,38 @@
<title>Title</title> <title>Title</title>
<style> <style>
.keywords-cell { .keywords-cell {
max-height: 50px; /* Adjust as needed */ max-height: 10px;
overflow-y: auto; overflow-y: auto;
} }
.cell{
height: 10px;
}
h1 {
text-align: center;
}
.back-button {
position: fixed;
bottom: 10px;
left: 10px;
padding: 10px 20px;
background-color: #007BFF;
color: white;
text-decoration: none;
border-radius: 5px;
}
.table {
border: 1px solid black;
height: 75vh; /* Default height */
max-height: 100vh; /* Maximum height */
overflow-y: auto; /* Enable vertical scrolling */
}
</style> </style>
</head> </head>
<body> <body>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-Fy6S3B9q64WdZWQUiU+q4/2Lc9npb8tCaSX9FK7E8HnRr0Jz8D6OP9dO5Vg3Q9ct" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-Fy6S3B9q64WdZWQUiU+q4/2Lc9npb8tCaSX9FK7E8HnRr0Jz8D6OP9dO5Vg3Q9ct" crossorigin="anonymous"></script>
<div class="table">
<h1>Listado de Empresas</h1> <h1>Listado de Empresas</h1>
<div class="table">
<table class ="table table-hover table-responsive-xl"> <table class ="table table-hover table-responsive-xl">
<thead class="thread-light"> <thead class="thread-light">
<tr> <tr>
@ -29,7 +51,7 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr th:each="empresa :${empresas}"> <tr class="cell" th:each="empresa :${empresas}">
<td>[[${empresa.id}]]</td> <td>[[${empresa.id}]]</td>
<td>[[${empresa.nombre}]]</td> <td>[[${empresa.nombre}]]</td>
<td>[[${empresa.cif}]]</td> <td>[[${empresa.cif}]]</td>
@ -43,6 +65,7 @@
</tbody> </tbody>
</table> </table>
</div> </div>
<a href="/buscador" class="back-button">Back to Buscador</a>
</body> </body>
</html> </html>

@ -0,0 +1,63 @@
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css" integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous">
<meta charset="UTF-8">
<title>Title</title>
<style>
.keywords-cell {
max-height: 10px;
overflow-y: auto;
}
.cell{
height: 10px;
}
h1 {
text-align: center;
}
.back-button {
position: fixed;
bottom: 10px;
left: 10px;
padding: 10px 20px;
background-color: #007BFF;
color: white;
text-decoration: none;
border-radius: 5px;
}
.table {
border: 1px solid black;
height: 75vh; /* Default height */
max-height: 100vh; /* Maximum height */
overflow-y: auto; /* Enable vertical scrolling */
}
</style>
</head>
<body>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-Fy6S3B9q64WdZWQUiU+q4/2Lc9npb8tCaSX9FK7E8HnRr0Jz8D6OP9dO5Vg3Q9ct" crossorigin="anonymous"></script>
<h1>Listado de Ofertas</h1>
<div class="table">
<table class ="table table-hover table-responsive-xl">
<thead class="thread-light">
<tr>
<th>Id</th>
<th>Nombre</th>
<th>Descripcion</th>
<th>Fecha</th>
</tr>
</thead>
<tbody>
<tr class="cell" th:each="empresa :${empresas}">
<td>[[${oferta.id}]]</td>
<td>[[${oferta.nombre}]]</td>
<td>[[${oferta.descripcion}]]</td>
<td>[[${oferta.fecha}]]</td>
</tr>
</tbody>
</table>
</div>
<a href="/buscador" class="back-button">Back to Buscador</a>
</body>
</html>
Loading…
Cancel
Save

Powered by INFORMATICA.FP.EDU.ES.