diff --git a/biblioteca.vpp b/biblioteca.vpp
index 682d42d..b95c9e1 100644
Binary files a/biblioteca.vpp and b/biblioteca.vpp differ
diff --git a/pom.xml b/pom.xml
index ed3b8d9..0a27aa4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -38,6 +38,11 @@
forms_rt
7.0.3
+
+ com.github.lgooddatepicker
+ LGoodDatePicker
+ 10.3.1
+
diff --git a/script.sql b/script.sql
index 43d55c1..6fe0e6f 100644
--- a/script.sql
+++ b/script.sql
@@ -304,9 +304,11 @@ create table libro_arriendo
create table usuario
(
- id int unsigned primary key auto_increment,
- nombre varchar(255) not null,
- password varbinary(2000) not null
+ id int unsigned primary key auto_increment,
+ nombre varchar(255) not null,
+ password varbinary(2000) not null,
+ trabajador_id int unsigned not null,
+ foreign key (trabajador_id) references trabajador (id) on delete cascade on update cascade
);
#--------------------------------------------------------------------------------#
diff --git a/src/main/java/xyz/danielcortes/App.java b/src/main/java/xyz/danielcortes/App.java
index e9dda4b..c9b4bdd 100644
--- a/src/main/java/xyz/danielcortes/App.java
+++ b/src/main/java/xyz/danielcortes/App.java
@@ -7,6 +7,7 @@ import javax.swing.UnsupportedLookAndFeelException;
import xyz.danielcortes.controllers.LaunchController;
import xyz.danielcortes.login.LoginController;
import xyz.danielcortes.login.LoginPanel;
+import xyz.danielcortes.models.Usuario;
public class App {
@@ -14,7 +15,7 @@ public class App {
setupLookAndFeel();
LoginController loginController = new LoginController(new LoginPanel());
loginController.setLoggedListener(e -> {
- LaunchController launchController = new LaunchController(e.getUser());
+ LaunchController launchController = new LaunchController(new Usuario());
launchController.run();
});
}
diff --git a/src/main/java/xyz/danielcortes/controllers/LaunchController.java b/src/main/java/xyz/danielcortes/controllers/LaunchController.java
index 85ed4c8..0caa9f7 100644
--- a/src/main/java/xyz/danielcortes/controllers/LaunchController.java
+++ b/src/main/java/xyz/danielcortes/controllers/LaunchController.java
@@ -27,6 +27,10 @@ import xyz.danielcortes.controllers.libro.LibroCreateController;
import xyz.danielcortes.controllers.libro.LibroSearchController;
import xyz.danielcortes.controllers.libro.LibroUpdateController;
import xyz.danielcortes.controllers.libro.LibroViewController;
+import xyz.danielcortes.controllers.trabajador.TrabajadorCreateController;
+import xyz.danielcortes.controllers.trabajador.TrabajadorSearchController;
+import xyz.danielcortes.controllers.trabajador.TrabajadorUpdateController;
+import xyz.danielcortes.controllers.trabajador.TrabajadorViewController;
import xyz.danielcortes.framework.BaseController;
import xyz.danielcortes.framework.PanelName;
import xyz.danielcortes.models.Usuario;
@@ -51,6 +55,10 @@ import xyz.danielcortes.views.libro.LibroCreatePanel;
import xyz.danielcortes.views.libro.LibroSearchPanel;
import xyz.danielcortes.views.libro.LibroUpdatePanel;
import xyz.danielcortes.views.libro.LibroViewPanel;
+import xyz.danielcortes.views.trabajador.TrabajadorCreatePanel;
+import xyz.danielcortes.views.trabajador.TrabajadorSearchPanel;
+import xyz.danielcortes.views.trabajador.TrabajadorUpdatePanel;
+import xyz.danielcortes.views.trabajador.TrabajadorViewPanel;
public class LaunchController {
@@ -97,6 +105,11 @@ public class LaunchController {
this.controllers.put(PanelName.EDITORIAL_CREATE, new EditorialCreateController(new EditorialCreatePanel(), this));
this.controllers.put(PanelName.EDITORIAL_UPDATE, new EditorialUpdateController(new EditorialUpdatePanel(), this));
+ this.controllers.put(PanelName.TRABAJADOR_VIEW, new TrabajadorViewController(new TrabajadorViewPanel(), this));
+ this.controllers.put(PanelName.TRABAJADOR_SEARCH, new TrabajadorSearchController(new TrabajadorSearchPanel(), this));
+ this.controllers.put(PanelName.TRABAJADOR_CREATE, new TrabajadorCreateController(new TrabajadorCreatePanel(), this));
+ this.controllers.put(PanelName.TRABAJADOR_UPDATE, new TrabajadorUpdateController(new TrabajadorUpdatePanel(), this));
+
for (PanelName name : this.controllers.keySet()) {
BaseController controller = this.controllers.get(name);
this.frame.addCard(controller.getView().getContentPane(), name);
@@ -125,11 +138,15 @@ public class LaunchController {
JMenuItem editorialesItem = new JMenuItem("Editoriales");
editorialesItem.setMnemonic(KeyEvent.VK_E);
+ JMenuItem trabajadoresItem = new JMenuItem("Trabajadores");
+ trabajadoresItem.setMnemonic(KeyEvent.VK_T);
+
autoresItem.addActionListener(e -> this.showCard(PanelName.AUTOR_SEARCH));
idiomasItem.addActionListener(e -> this.showCard(PanelName.IDIOMA_SEARCH));
librosItem.addActionListener(e -> this.showCard(PanelName.LIBRO_SEARCH));
categoriasItem.addActionListener(e -> this.showCard(PanelName.CATEGORIA_SEARCH));
editorialesItem.addActionListener(e -> this.showCard(PanelName.EDITORIAL_SEARCH));
+ trabajadoresItem.addActionListener(e -> this.showCard(PanelName.TRABAJADOR_SEARCH));
menuBar.add(mantenedoresMenu);
@@ -138,6 +155,7 @@ public class LaunchController {
mantenedoresMenu.add(idiomasItem);
mantenedoresMenu.add(categoriasItem);
mantenedoresMenu.add(editorialesItem);
+ mantenedoresMenu.add(trabajadoresItem);
this.frame.setJMenuBar(menuBar);
}
diff --git a/src/main/java/xyz/danielcortes/controllers/trabajador/TrabajadorCreateController.java b/src/main/java/xyz/danielcortes/controllers/trabajador/TrabajadorCreateController.java
new file mode 100644
index 0000000..9feb4a9
--- /dev/null
+++ b/src/main/java/xyz/danielcortes/controllers/trabajador/TrabajadorCreateController.java
@@ -0,0 +1,117 @@
+package xyz.danielcortes.controllers.trabajador;
+
+import java.nio.charset.StandardCharsets;
+import java.time.LocalDate;
+import xyz.danielcortes.controllers.LaunchController;
+import xyz.danielcortes.framework.BaseController;
+import xyz.danielcortes.framework.BasePanel;
+import xyz.danielcortes.framework.Hash;
+import xyz.danielcortes.framework.PanelName;
+import xyz.danielcortes.framework.ValidationResult;
+import xyz.danielcortes.models.Trabajador;
+import xyz.danielcortes.models.Usuario;
+import xyz.danielcortes.repository.TrabajadorRespository;
+import xyz.danielcortes.repository.UsuarioRepository;
+import xyz.danielcortes.validator.TrabajadorValidator;
+import xyz.danielcortes.validator.UsuarioValidator;
+import xyz.danielcortes.views.trabajador.TrabajadorCreatePanel;
+
+public class TrabajadorCreateController extends BaseController {
+
+ private TrabajadorCreatePanel view;
+ private TrabajadorRespository trabajadorRespository;
+ private TrabajadorValidator trabajadorValidator;
+ private UsuarioRepository usuarioRepository;
+ private UsuarioValidator usuarioValidator;
+
+ public TrabajadorCreateController(TrabajadorCreatePanel view, LaunchController parent) {
+ super(parent);
+ this.view = view;
+ this.trabajadorRespository = new TrabajadorRespository();
+ this.trabajadorValidator = new TrabajadorValidator(this.trabajadorRespository);
+ this.usuarioRepository = new UsuarioRepository();
+ this.usuarioValidator = new UsuarioValidator(this.usuarioRepository);
+ this.setupListeners();
+ }
+
+ public void show() {
+ this.view.getRutField().requestFocus();
+ }
+
+ private void setupListeners() {
+ this.view.getGuardarButton().addActionListener(e -> save());
+ this.view.getVolverButton().addActionListener(e -> this.getParentController().showCard(PanelName.TRABAJADOR_SEARCH));
+ }
+
+ private void save() {
+ String rut = this.view.getRutField().getText();
+ ValidationResult rutValidation = this.trabajadorValidator.validateRut(rut);
+ if(rutValidation.hasError()){
+ rutValidation.showErrorDialog();
+ return;
+ }
+
+ String nombre = this.view.getNombreField().getText();
+ ValidationResult nombreValidation = this.trabajadorValidator.validateNombre(nombre);
+ if(nombreValidation.hasError()){
+ nombreValidation.showErrorDialog();
+ return;
+ }
+
+ String apellidoPaterno = this.view.getApellidoPaternoField().getText();
+ ValidationResult apellidoPaternoValidation = this.trabajadorValidator.validateApellidoPaterno(apellidoPaterno);
+ if(apellidoPaternoValidation.hasError()){
+ apellidoPaternoValidation.showErrorDialog();
+ return;
+ }
+
+ String apellidoMaterno = this.view.getApellidoMaternoField().getText();
+ ValidationResult apellidoMaternoValidation = this.trabajadorValidator.validateApellidoMaterno(apellidoMaterno);
+ if(apellidoMaternoValidation.hasError()){
+ apellidoMaternoValidation.showErrorDialog();
+ return;
+ }
+
+ LocalDate fechaContrato = this.view.getFechaContratoPicker().getDate();
+ ValidationResult fechaContratoValidation = this.trabajadorValidator.validateFechaContrato(fechaContrato);
+ if(fechaContratoValidation.hasError()){
+ fechaContratoValidation.showErrorDialog();
+ return;
+ }
+
+ String username = this.view.getUsernameField().getText();
+ ValidationResult usernameValidator = this.usuarioValidator.validateUsername(username);
+ if(usernameValidator.hasError()){
+ usernameValidator.showErrorDialog();
+ return;
+ }
+
+ char[] password = this.view.getPassField().getPassword();
+ ValidationResult passwordValidation = this.usuarioValidator.validatePassword(password);
+ if(passwordValidation.hasError()){
+ passwordValidation.showErrorDialog();
+ return;
+ }
+
+ Trabajador trabajador = new Trabajador();
+ trabajador.setNombre(nombre);
+ trabajador.setApellidoPaterno(apellidoPaterno);
+ trabajador.setApellidoMaterno(apellidoMaterno);
+ trabajador.setFechaContrato(fechaContrato);
+ trabajador.setRut(rut);
+
+ Usuario usuario = new Usuario();
+ usuario.setNombre(username);
+ usuario.setPassword(Hash.sha256(new String(password).getBytes(StandardCharsets.UTF_8)));
+ usuario.setTrabajador(trabajador);
+
+ trabajadorRespository.save(trabajador);
+ usuarioRepository.save(usuario);
+
+ this.getParentController().showCard(PanelName.TRABAJADOR_SEARCH);
+ }
+
+ public BasePanel getView() {
+ return this.view;
+ }
+}
diff --git a/src/main/java/xyz/danielcortes/controllers/trabajador/TrabajadorSearchController.java b/src/main/java/xyz/danielcortes/controllers/trabajador/TrabajadorSearchController.java
new file mode 100644
index 0000000..e672184
--- /dev/null
+++ b/src/main/java/xyz/danielcortes/controllers/trabajador/TrabajadorSearchController.java
@@ -0,0 +1,125 @@
+package xyz.danielcortes.controllers.trabajador;
+
+import java.util.List;
+import javax.swing.JOptionPane;
+import xyz.danielcortes.controllers.LaunchController;
+import xyz.danielcortes.framework.BaseController;
+import xyz.danielcortes.framework.BasePanel;
+import xyz.danielcortes.framework.BaseTableModel;
+import xyz.danielcortes.framework.PanelName;
+import xyz.danielcortes.models.Trabajador;
+import xyz.danielcortes.repository.TrabajadorRespository;
+import xyz.danielcortes.repository.UsuarioRepository;
+import xyz.danielcortes.validator.TrabajadorValidator;
+import xyz.danielcortes.validator.UsuarioValidator;
+import xyz.danielcortes.views.trabajador.TrabajadorSearchPanel;
+
+public class TrabajadorSearchController extends BaseController {
+
+ private TrabajadorSearchPanel view;
+ private TrabajadorRespository trabajadorRespository;
+ private UsuarioRepository usuarioRepository;
+ private TrabajadorValidator trabajadorValidator;
+ private UsuarioValidator usuarioValidator;
+
+ public TrabajadorSearchController(TrabajadorSearchPanel view, LaunchController parent) {
+ super(parent);
+ this.view = view;
+ this.trabajadorRespository = new TrabajadorRespository();
+ this.usuarioRepository = new UsuarioRepository();
+ this.trabajadorValidator = new TrabajadorValidator(this.trabajadorRespository);
+ this.usuarioValidator = new UsuarioValidator(this.usuarioRepository);
+ this.setupListeners();
+ }
+
+ public void show() {
+ this.reload();
+ this.view.getTrabajadorTable().clearSelection();
+ }
+
+ private void reload() {
+ this.loadTrabajadorTable();
+ }
+
+ private void setupListeners() {
+ this.view.getCrearButton().addActionListener(e -> this.getParentController().showCard(PanelName.TRABAJADOR_CREATE));
+ this.view.getSearchField().addActionListener(e -> this.search());
+ this.view.getBuscarButton().addActionListener(e -> this.search());
+ this.view.getVerButton().addActionListener(e -> this.view());
+ this.view.getEditarButton().addActionListener(e -> this.edit());
+ this.view.getEliminarButton().addActionListener(e -> this.delete());
+ }
+
+ private void edit() {
+ Trabajador trabajador = this.getSelectedTrabajador();
+ if (trabajador != null) {
+ TrabajadorUpdateController controller = (TrabajadorUpdateController) this.getParentController().getCard(PanelName.TRABAJADOR_UPDATE);
+ controller.setTrabajador(trabajador);
+ this.getParentController().showCard(PanelName.TRABAJADOR_UPDATE);
+ }
+ }
+
+ private void delete() {
+ Trabajador trabajador = this.getSelectedTrabajador();
+ if (trabajador == null)
+ return;
+
+ int option = JOptionPane.showConfirmDialog(
+ null,
+ "¿Estas seguro de que deseas eliminar el trabajador?",
+ "Confirmacion",
+ JOptionPane.YES_NO_OPTION,
+ JOptionPane.QUESTION_MESSAGE
+ );
+
+ if (option == JOptionPane.NO_OPTION)
+ return;
+
+ this.trabajadorRespository.delete(trabajador);
+ this.reload();
+ }
+
+ private void view() {
+ Trabajador trabajador = this.getSelectedTrabajador();
+ if (trabajador != null) {
+ TrabajadorViewController controller = (TrabajadorViewController) this.getParentController().getCard(PanelName.TRABAJADOR_VIEW);
+ controller.setTrabajador(trabajador);
+ this.getParentController().showCard(PanelName.TRABAJADOR_VIEW);
+ }
+ }
+
+ private void search() {
+ String term = this.view.getSearchField().getText();
+ List trabajadores = this.trabajadorRespository.search(term);
+ this.loadTrabajadorTable(trabajadores);
+ }
+
+ private void loadTrabajadorTable() {
+ List trabajadores = this.trabajadorRespository.getAll();
+ loadTrabajadorTable(trabajadores);
+ }
+
+ private void loadTrabajadorTable(List trabajadores) {
+ BaseTableModel model = this.view.getTrabajadorModel();
+ model.setRows(trabajadores);
+ }
+
+ private Trabajador getSelectedTrabajador() {
+ int selectedRow = this.view.getTrabajadorTable().getSelectedRow();
+ if (selectedRow == -1) {
+ JOptionPane.showMessageDialog(
+ null,
+ "No hay trabajador seleccionado",
+ "Error",
+ JOptionPane.ERROR_MESSAGE
+ );
+ return null;
+ }
+ return this.view.getTrabajadorModel().getRow(selectedRow);
+ }
+
+ public BasePanel getView() {
+ return this.view;
+ }
+
+}
diff --git a/src/main/java/xyz/danielcortes/controllers/trabajador/TrabajadorUpdateController.java b/src/main/java/xyz/danielcortes/controllers/trabajador/TrabajadorUpdateController.java
new file mode 100644
index 0000000..1425892
--- /dev/null
+++ b/src/main/java/xyz/danielcortes/controllers/trabajador/TrabajadorUpdateController.java
@@ -0,0 +1,102 @@
+package xyz.danielcortes.controllers.trabajador;
+
+import java.time.LocalDate;
+import xyz.danielcortes.controllers.LaunchController;
+import xyz.danielcortes.framework.BaseController;
+import xyz.danielcortes.framework.BasePanel;
+import xyz.danielcortes.framework.PanelName;
+import xyz.danielcortes.framework.ValidationResult;
+import xyz.danielcortes.models.Trabajador;
+import xyz.danielcortes.repository.TrabajadorRespository;
+import xyz.danielcortes.validator.TrabajadorValidator;
+import xyz.danielcortes.views.trabajador.TrabajadorUpdatePanel;
+
+public class TrabajadorUpdateController extends BaseController {
+ private Trabajador trabajador;
+ private TrabajadorUpdatePanel view;
+ private TrabajadorRespository trabajadorRespository;
+ private TrabajadorValidator trabajadorValidator;
+
+ public TrabajadorUpdateController(TrabajadorUpdatePanel view, LaunchController parent){
+ super(parent);
+ this.view = view;
+ this.trabajadorRespository = new TrabajadorRespository();
+ this.trabajadorValidator = new TrabajadorValidator(this.trabajadorRespository);
+ this.setupListeners();
+ }
+
+ public void setTrabajador(Trabajador trabajador) {
+ this.trabajador = trabajador;
+ }
+
+ public void show() {
+ this.fillTrabajador();
+ this.view.getRutField().requestFocus();
+ }
+
+ private void fillTrabajador() {
+ if(trabajadorRespository == null)
+ return;
+
+ this.view.getRutField().setText(this.trabajador.getRut());
+ this.view.getNombreField().setText(this.trabajador.getNombre());
+ this.view.getApellidoPaternoField().setText(this.trabajador.getApellidoPaterno());
+ this.view.getApellidoMaternoField().setText(this.trabajador.getApellidoMaterno());
+ this.view.getFechaContratoField().setDate(this.trabajador.getFechaContrato());
+ }
+
+ private void setupListeners() {
+ this.view.getActualizarButton().addActionListener(e -> update());
+ this.view.getVolverButton().addActionListener(e -> this.getParentController().showCard(PanelName.TRABAJADOR_SEARCH));
+ }
+
+ private void update() {
+ String rut = this.view.getRutField().getText();
+ ValidationResult rutValidation = this.trabajadorValidator.validateRut(rut);
+ if(rutValidation.hasError()){
+ rutValidation.showErrorDialog();
+ return;
+ }
+
+ String nombre = this.view.getNombreField().getText();
+ ValidationResult nombreValidation = this.trabajadorValidator.validateNombre(nombre);
+ if(nombreValidation.hasError()){
+ nombreValidation.showErrorDialog();
+ return;
+ }
+
+ String apellidoPaterno = this.view.getApellidoPaternoField().getText();
+ ValidationResult apellidoPaternoValidation = this.trabajadorValidator.validateApellidoPaterno(apellidoPaterno);
+ if(apellidoPaternoValidation.hasError()){
+ apellidoPaternoValidation.showErrorDialog();
+ return;
+ }
+
+ String apellidoMaterno = this.view.getApellidoPaternoField().getText();
+ ValidationResult apellidoMaternoValidation = this.trabajadorValidator.validateApellidoMaterno(apellidoMaterno);
+ if(apellidoMaternoValidation.hasError()){
+ apellidoMaternoValidation.showErrorDialog();
+ return;
+ }
+
+ LocalDate fechaContrato = this.view.getFechaContratoField().getDate();
+ ValidationResult fechaContratoValidation = this.trabajadorValidator.validateFechaContrato(fechaContrato);
+ if(fechaContratoValidation.hasError()){
+ fechaContratoValidation.showErrorDialog();
+ return;
+ }
+
+ assert this.trabajador != null;
+ this.trabajador.setNombre(nombre);
+ this.trabajador.setApellidoPaterno(apellidoPaterno);
+ this.trabajador.setApellidoMaterno(apellidoMaterno);
+ this.trabajador.setFechaContrato(fechaContrato);
+ this.trabajador.setRut(rut);
+ this.trabajadorRespository.update(this.trabajador);
+
+ this.getParentController().showCard(PanelName.TRABAJADOR_SEARCH);
+ }
+
+ public BasePanel getView() { return view; }
+
+}
diff --git a/src/main/java/xyz/danielcortes/controllers/trabajador/TrabajadorViewController.java b/src/main/java/xyz/danielcortes/controllers/trabajador/TrabajadorViewController.java
new file mode 100644
index 0000000..8083b01
--- /dev/null
+++ b/src/main/java/xyz/danielcortes/controllers/trabajador/TrabajadorViewController.java
@@ -0,0 +1,47 @@
+package xyz.danielcortes.controllers.trabajador;
+
+import xyz.danielcortes.controllers.LaunchController;
+import xyz.danielcortes.framework.BaseController;
+import xyz.danielcortes.framework.BasePanel;
+import xyz.danielcortes.framework.PanelName;
+import xyz.danielcortes.models.Trabajador;
+import xyz.danielcortes.views.trabajador.TrabajadorViewPanel;
+
+public class TrabajadorViewController extends BaseController {
+
+ private Trabajador trabajador;
+ private TrabajadorViewPanel view;
+
+ public TrabajadorViewController(TrabajadorViewPanel view, LaunchController parent) {
+ super(parent);
+ this.view = view;
+ this.setupListeners();
+ }
+
+ public void show() {
+ this.fillTrabajador();
+ }
+
+ public void setTrabajador(Trabajador trabajador) {
+ this.trabajador = trabajador;
+ }
+
+ private void setupListeners() {
+ this.view.getVolverButton().addActionListener(e -> this.getParentController().showCard(PanelName.TRABAJADOR_SEARCH));
+ }
+
+ private void fillTrabajador() {
+ if (trabajador == null)
+ return;
+
+ this.view.getRutField().setText(this.trabajador.getNombre());
+ this.view.getNombreField().setText(this.trabajador.getNombre());
+ this.view.getApellidoPaternoField().setText(this.trabajador.getApellidoPaterno());
+ this.view.getApellidoMaternoField().setText(this.trabajador.getApellidoMaterno());
+ this.view.getFechaContratoPicker().setDate(this.trabajador.getFechaContrato());
+ }
+
+ public BasePanel getView() {
+ return view;
+ }
+}
diff --git a/src/main/java/xyz/danielcortes/framework/PanelName.java b/src/main/java/xyz/danielcortes/framework/PanelName.java
index d7f0a8f..acf98ce 100644
--- a/src/main/java/xyz/danielcortes/framework/PanelName.java
+++ b/src/main/java/xyz/danielcortes/framework/PanelName.java
@@ -27,4 +27,9 @@ public enum PanelName {
AUTOR_SEARCH,
AUTOR_CREATE,
AUTOR_UPDATE,
+
+ TRABAJADOR_VIEW,
+ TRABAJADOR_SEARCH,
+ TRABAJADOR_CREATE,
+ TRABAJADOR_UPDATE,
}
diff --git a/src/main/java/xyz/danielcortes/models/Trabajador.java b/src/main/java/xyz/danielcortes/models/Trabajador.java
new file mode 100644
index 0000000..6e94082
--- /dev/null
+++ b/src/main/java/xyz/danielcortes/models/Trabajador.java
@@ -0,0 +1,101 @@
+package xyz.danielcortes.models;
+
+import java.time.LocalDate;
+import java.util.Objects;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "trabajador")
+public class Trabajador {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Integer id;
+
+ @Column(name = "rut")
+ private String rut;
+
+ @Column(name = "nombre")
+ private String nombre;
+
+ @Column(name = "apellido_paterno")
+ private String apellidoPaterno;
+
+ @Column(name = "apellido_materno")
+ private String apellidoMaterno;
+
+ @Column(name = "fecha_contrato")
+ private LocalDate fechaContrato;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getRut() {
+ return rut;
+ }
+
+ public void setRut(String rut) {
+ this.rut = rut;
+ }
+
+ public String getNombre() {
+ return nombre;
+ }
+
+ public void setNombre(String nombre) {
+ this.nombre = nombre;
+ }
+
+ public String getApellidoPaterno() {
+ return apellidoPaterno;
+ }
+
+ public void setApellidoPaterno(String apellidoPaterno) {
+ this.apellidoPaterno = apellidoPaterno;
+ }
+
+ public String getApellidoMaterno() {
+ return apellidoMaterno;
+ }
+
+ public void setApellidoMaterno(String apellidoMaterno) {
+ this.apellidoMaterno = apellidoMaterno;
+ }
+
+ public LocalDate getFechaContrato() {
+ return fechaContrato;
+ }
+
+ public void setFechaContrato(LocalDate fechaContrato) {
+ this.fechaContrato = fechaContrato;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o)
+ return true;
+ if (!(o instanceof Trabajador))
+ return false;
+ Trabajador that = (Trabajador) o;
+ return Objects.equals(id, that.id) &&
+ Objects.equals(rut, that.rut) &&
+ Objects.equals(nombre, that.nombre) &&
+ Objects.equals(apellidoPaterno, that.apellidoPaterno) &&
+ Objects.equals(apellidoMaterno, that.apellidoMaterno) &&
+ Objects.equals(fechaContrato, that.fechaContrato);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, rut, nombre, apellidoPaterno, apellidoMaterno, fechaContrato);
+ }
+}
diff --git a/src/main/java/xyz/danielcortes/models/Usuario.java b/src/main/java/xyz/danielcortes/models/Usuario.java
index 1c491db..a4c59a6 100644
--- a/src/main/java/xyz/danielcortes/models/Usuario.java
+++ b/src/main/java/xyz/danielcortes/models/Usuario.java
@@ -7,11 +7,14 @@ import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToOne;
import javax.persistence.Table;
@Entity
@Table(name = "usuario")
public class Usuario {
+
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@@ -22,6 +25,10 @@ public class Usuario {
@Column(name = "password", columnDefinition = "varbinary(2000)")
private byte[] password;
+ @OneToOne
+ @JoinColumn(name = "trabajador_id", referencedColumnName = "id")
+ private Trabajador trabajador;
+
public Integer getId() {
return id;
}
@@ -46,6 +53,14 @@ public class Usuario {
this.password = password;
}
+ public Trabajador getTrabajador() {
+ return trabajador;
+ }
+
+ public void setTrabajador(Trabajador trabajador) {
+ this.trabajador = trabajador;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o)
diff --git a/src/main/java/xyz/danielcortes/repository/TrabajadorRespository.java b/src/main/java/xyz/danielcortes/repository/TrabajadorRespository.java
new file mode 100644
index 0000000..da37f04
--- /dev/null
+++ b/src/main/java/xyz/danielcortes/repository/TrabajadorRespository.java
@@ -0,0 +1,34 @@
+package xyz.danielcortes.repository;
+
+import java.util.List;
+import javax.persistence.TypedQuery;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Root;
+import xyz.danielcortes.framework.BaseRepository;
+import xyz.danielcortes.models.Trabajador;
+
+public class TrabajadorRespository extends BaseRepository {
+
+ public List getAll() {
+ TypedQuery query = em.createQuery("SELECT t FROM Trabajador t", Trabajador.class);
+ return query.getResultList();
+ }
+
+ public List search(String term) {
+ CriteriaBuilder cb = em.getCriteriaBuilder();
+ CriteriaQuery query = cb.createQuery(Trabajador.class);
+ Root r = query.from(Trabajador.class);
+ query.where(
+ cb.or(
+ cb.like(cb.lower(r.get("rut")), "%" + term.toLowerCase() + "%"),
+ cb.like(cb.lower(r.get("nombre")), "%" + term.toLowerCase() + "%"),
+ cb.like(cb.lower(r.get("apellidoPaterno")), "%" + term.toLowerCase() + "%"),
+ cb.like(cb.lower(r.get("apellidoMaterno")), "%" + term.toLowerCase() + "%"),
+ cb.like(r.get("fechaContrato"), "%" + term.toLowerCase() + "%")
+ )
+ );
+ return em.createQuery(query).getResultList();
+ }
+
+}
diff --git a/src/main/java/xyz/danielcortes/validator/TrabajadorValidator.java b/src/main/java/xyz/danielcortes/validator/TrabajadorValidator.java
new file mode 100644
index 0000000..1724196
--- /dev/null
+++ b/src/main/java/xyz/danielcortes/validator/TrabajadorValidator.java
@@ -0,0 +1,85 @@
+package xyz.danielcortes.validator;
+
+import java.time.LocalDate;
+import xyz.danielcortes.framework.ValidationResult;
+import xyz.danielcortes.repository.TrabajadorRespository;
+
+public class TrabajadorValidator {
+
+ private TrabajadorRespository trabajadorRespository;
+
+ public TrabajadorValidator(TrabajadorRespository trabajadorRespository) {
+ this.trabajadorRespository = trabajadorRespository;
+ }
+
+ public ValidationResult validateNombre(String nombre) {
+ if (nombre == null) {
+ return new ValidationResult("El nombre es nulo");
+ } else if (nombre.isEmpty()) {
+ return new ValidationResult("El nombre esta vacío");
+ }
+ return ValidationResult.NON_ERROR;
+ }
+
+ public ValidationResult validateApellidoPaterno(String apellidoPaterno) {
+ if (apellidoPaterno == null) {
+ return new ValidationResult("El apellido paterno es nulo");
+ } else if (apellidoPaterno.isEmpty()) {
+ return new ValidationResult("El apellido paterno esta vacío");
+ }
+ return ValidationResult.NON_ERROR;
+ }
+
+ public ValidationResult validateApellidoMaterno(String apellidoMaterno) {
+ if (apellidoMaterno == null) {
+ return new ValidationResult("El apellido materno es nulo");
+ } else if (apellidoMaterno.isEmpty()) {
+ return new ValidationResult("El apellido materno esta vacío");
+ }
+ return ValidationResult.NON_ERROR;
+ }
+
+ public ValidationResult validateRut(String rut) {
+ if (rut == null) {
+ return new ValidationResult("El rut es nulo");
+ } else if (rut.isEmpty()) {
+ return new ValidationResult("El rut esta vacío");
+ }
+ if (!rutChecksum(rut)) {
+ return new ValidationResult("El rut es invalido");
+ }
+
+ return ValidationResult.NON_ERROR;
+ }
+
+ public ValidationResult validateFechaContrato(LocalDate date) {
+ if (date == null) {
+ return new ValidationResult("La fecha es nula");
+ }
+ return ValidationResult.NON_ERROR;
+ }
+
+ private boolean rutChecksum(String rut) {
+ rut = rut.toLowerCase().replaceAll("[^\\dkK]", "");
+ int sum = 0;
+ for (int i = rut.length() - 2, j = 2; i >= 0; i--, j++) {
+ int digit = rut.charAt(i) - '0';
+ if (j == 8)
+ j = 2;
+
+ sum += digit * j;
+ }
+
+ int mod11 = 11 - (sum % 11);
+ char lastchar = rut.charAt(rut.length() - 1);
+
+ char digitoVerificador = (char) (mod11 + '0');
+ if (mod11 == 11)
+ digitoVerificador = '0';
+ if (mod11 == 10)
+ digitoVerificador = 'k';
+
+ return lastchar == digitoVerificador;
+ }
+
+}
diff --git a/src/main/java/xyz/danielcortes/validator/UsuarioValidator.java b/src/main/java/xyz/danielcortes/validator/UsuarioValidator.java
new file mode 100644
index 0000000..18c4f27
--- /dev/null
+++ b/src/main/java/xyz/danielcortes/validator/UsuarioValidator.java
@@ -0,0 +1,35 @@
+package xyz.danielcortes.validator;
+
+import xyz.danielcortes.framework.ValidationResult;
+import xyz.danielcortes.repository.UsuarioRepository;
+
+public class UsuarioValidator {
+
+ private UsuarioRepository usuarioRepository;
+
+ public UsuarioValidator(UsuarioRepository usuarioRepository) {
+ this.usuarioRepository = usuarioRepository;
+ }
+
+ public ValidationResult validateUsername(String username) {
+ if (username == null) {
+ return new ValidationResult("El nombre de usuario es nulo");
+ } else if (username.isEmpty()) {
+ return new ValidationResult("El nombre de usuario esta vacío");
+ }
+ return ValidationResult.NON_ERROR;
+ }
+
+ public ValidationResult validatePassword(char[] password) {
+ if (password == null) {
+ return new ValidationResult("La contraseña es nula");
+ } else if (password.length == 0) {
+ return new ValidationResult("La contraseña esta vacia");
+ } else if (password.length < 6) {
+ return new ValidationResult("La contraseña debe ser de al menos 6 caracteres");
+ }
+ return ValidationResult.NON_ERROR;
+ }
+
+
+}
diff --git a/src/main/java/xyz/danielcortes/views/trabajador/TrabajadorCreatePanel.form b/src/main/java/xyz/danielcortes/views/trabajador/TrabajadorCreatePanel.form
new file mode 100644
index 0000000..36271e5
--- /dev/null
+++ b/src/main/java/xyz/danielcortes/views/trabajador/TrabajadorCreatePanel.form
@@ -0,0 +1,170 @@
+
+
diff --git a/src/main/java/xyz/danielcortes/views/trabajador/TrabajadorCreatePanel.java b/src/main/java/xyz/danielcortes/views/trabajador/TrabajadorCreatePanel.java
new file mode 100644
index 0000000..acbef83
--- /dev/null
+++ b/src/main/java/xyz/danielcortes/views/trabajador/TrabajadorCreatePanel.java
@@ -0,0 +1,178 @@
+package xyz.danielcortes.views.trabajador;
+
+import com.github.lgooddatepicker.components.DatePicker;
+import com.intellij.uiDesigner.core.GridConstraints;
+import com.intellij.uiDesigner.core.GridLayoutManager;
+import com.intellij.uiDesigner.core.Spacer;
+import java.awt.Dimension;
+import java.awt.Insets;
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JPasswordField;
+import javax.swing.JTextField;
+import xyz.danielcortes.framework.BasePanel;
+
+public class TrabajadorCreatePanel extends BasePanel {
+
+ private JTextField nombreField;
+ private JTextField apellidoPaternoField;
+ private JTextField apellidoMaternoField;
+ private JButton guardarButton;
+ private JPanel contentPane;
+ private JButton volverButton;
+ private JTextField rutField;
+ private DatePicker fechaContratoPicker;
+ private JTextField usernameField;
+ private JPasswordField passField;
+
+ public JTextField getNombreField() {
+ return nombreField;
+ }
+
+ public JTextField getApellidoPaternoField() {
+ return apellidoPaternoField;
+ }
+
+ public JTextField getApellidoMaternoField() {
+ return apellidoMaternoField;
+ }
+
+ public JButton getGuardarButton() {
+ return guardarButton;
+ }
+
+ @Override
+ public JPanel getContentPane() {
+ return contentPane;
+ }
+
+ public JButton getVolverButton() {
+ return volverButton;
+ }
+
+ public JTextField getRutField() {
+ return rutField;
+ }
+
+ public DatePicker getFechaContratoPicker() {
+ return fechaContratoPicker;
+ }
+
+ public JTextField getUsernameField() {
+ return usernameField;
+ }
+
+ public JPasswordField getPassField() {
+ return passField;
+ }
+
+ {
+// GUI initializer generated by IntelliJ IDEA GUI Designer
+// >>> IMPORTANT!! <<<
+// DO NOT EDIT OR ADD ANY CODE HERE!
+ $$$setupUI$$$();
+ }
+
+ /**
+ * Method generated by IntelliJ IDEA GUI Designer >>> IMPORTANT!! <<< DO NOT edit this method OR call it in your code!
+ *
+ * @noinspection ALL
+ */
+ private void $$$setupUI$$$() {
+ contentPane = new JPanel();
+ contentPane.setLayout(new GridLayoutManager(16, 3, new Insets(20, 20, 20, 20), -1, -1));
+ final JLabel label1 = new JLabel();
+ label1.setText("Nombre:");
+ contentPane.add(label1, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED,
+ GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ nombreField = new JTextField();
+ contentPane.add(nombreField,
+ new GridConstraints(3, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW,
+ GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(400, -1), null, 0, false));
+ final JLabel label2 = new JLabel();
+ label2.setText("Apellido Paterno:");
+ contentPane.add(label2, new GridConstraints(4, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED,
+ GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ apellidoPaternoField = new JTextField();
+ contentPane.add(apellidoPaternoField,
+ new GridConstraints(5, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW,
+ GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(400, -1), null, 0, false));
+ final JLabel label3 = new JLabel();
+ label3.setText("Apellido Materno:");
+ contentPane.add(label3, new GridConstraints(6, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED,
+ GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ apellidoMaternoField = new JTextField();
+ contentPane.add(apellidoMaternoField,
+ new GridConstraints(7, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW,
+ GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(400, -1), null, 0, false));
+ final Spacer spacer1 = new Spacer();
+ contentPane.add(spacer1,
+ new GridConstraints(15, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null,
+ null, null, 0, false));
+ final Spacer spacer2 = new Spacer();
+ contentPane.add(spacer2,
+ new GridConstraints(15, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1,
+ null, null, null, 0, false));
+ final Spacer spacer3 = new Spacer();
+ contentPane.add(spacer3,
+ new GridConstraints(15, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1,
+ null, null, null, 0, false));
+ final JPanel panel1 = new JPanel();
+ panel1.setLayout(new GridLayoutManager(1, 2, new Insets(0, 0, 0, 0), -1, -1));
+ contentPane.add(panel1, new GridConstraints(14, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false));
+ guardarButton = new JButton();
+ guardarButton.setText("Guardar");
+ panel1.add(guardarButton, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1),
+ null, 0, false));
+ volverButton = new JButton();
+ volverButton.setText("Volver");
+ panel1.add(volverButton, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1),
+ null, 0, false));
+ rutField = new JTextField();
+ contentPane.add(rutField,
+ new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW,
+ GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false));
+ final JLabel label4 = new JLabel();
+ label4.setText("Rut:");
+ contentPane.add(label4, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED,
+ GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ final JLabel label5 = new JLabel();
+ label5.setText("Fecha Contrato:");
+ contentPane.add(label5, new GridConstraints(8, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED,
+ GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ fechaContratoPicker = new DatePicker();
+ contentPane.add(fechaContratoPicker,
+ new GridConstraints(9, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW,
+ GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(400, -1), null, 0, false));
+ final JLabel label6 = new JLabel();
+ label6.setText("Nombre de usuario:");
+ contentPane.add(label6, new GridConstraints(10, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED,
+ GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ usernameField = new JTextField();
+ contentPane.add(usernameField,
+ new GridConstraints(11, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW,
+ GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false));
+ passField = new JPasswordField();
+ contentPane.add(passField,
+ new GridConstraints(13, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW,
+ GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false));
+ final JLabel label7 = new JLabel();
+ label7.setText("Contraseña:");
+ contentPane.add(label7, new GridConstraints(12, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED,
+ GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ }
+
+ /**
+ * @noinspection ALL
+ */
+ public JComponent $$$getRootComponent$$$() {
+ return contentPane;
+ }
+
+}
diff --git a/src/main/java/xyz/danielcortes/views/trabajador/TrabajadorSearchPanel.form b/src/main/java/xyz/danielcortes/views/trabajador/TrabajadorSearchPanel.form
new file mode 100644
index 0000000..d20b423
--- /dev/null
+++ b/src/main/java/xyz/danielcortes/views/trabajador/TrabajadorSearchPanel.form
@@ -0,0 +1,96 @@
+
+
diff --git a/src/main/java/xyz/danielcortes/views/trabajador/TrabajadorSearchPanel.java b/src/main/java/xyz/danielcortes/views/trabajador/TrabajadorSearchPanel.java
new file mode 100644
index 0000000..bd13f90
--- /dev/null
+++ b/src/main/java/xyz/danielcortes/views/trabajador/TrabajadorSearchPanel.java
@@ -0,0 +1,154 @@
+package xyz.danielcortes.views.trabajador;
+
+import com.intellij.uiDesigner.core.GridConstraints;
+import com.intellij.uiDesigner.core.GridLayoutManager;
+import java.awt.Dimension;
+import java.awt.Insets;
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.JTextField;
+import javax.swing.ListSelectionModel;
+import xyz.danielcortes.framework.BasePanel;
+import xyz.danielcortes.framework.BaseTableModel;
+import xyz.danielcortes.models.Trabajador;
+
+public class TrabajadorSearchPanel extends BasePanel {
+
+ private JPanel contentPane;
+ private JTable trabajadorTable;
+ private JTextField searchField;
+ private JButton buscarButton;
+ private JButton verButton;
+ private JButton eliminarButton;
+ private JButton editarButton;
+ private JButton crearButton;
+ private BaseTableModel trabajadorModel;
+
+ public JPanel getContentPane() {
+ return contentPane;
+ }
+
+ public JTable getTrabajadorTable() {
+ return trabajadorTable;
+ }
+
+ public JTextField getSearchField() {
+ return searchField;
+ }
+
+ public JButton getBuscarButton() {
+ return buscarButton;
+ }
+
+ public JButton getVerButton() {
+ return verButton;
+ }
+
+ public JButton getEliminarButton() {
+ return eliminarButton;
+ }
+
+ public JButton getEditarButton() {
+ return editarButton;
+ }
+
+ public JButton getCrearButton() {
+ return crearButton;
+ }
+
+ public BaseTableModel getTrabajadorModel() {
+ return trabajadorModel;
+ }
+
+ private void createUIComponents() {
+ this.createTrabajadorTable();
+ }
+
+ private void createTrabajadorTable() {
+ // @formatter:off
+ this.trabajadorModel= new BaseTableModel<>(
+ new String[]{"Rut", "Nombre", "Apellido Paterno", "Apellido Materno", "Fecha Contrato"},
+ (row, rowIndex, colIndex) -> {
+ switch (colIndex) {
+ case 0: return row.get(rowIndex).getRut();
+ case 1: return row.get(rowIndex).getNombre();
+ case 2: return row.get(rowIndex).getApellidoPaterno();
+ case 3: return row.get(rowIndex).getApellidoMaterno();
+ case 4: return row.get(rowIndex).getFechaContrato();
+ default: return null;
+ }
+ }
+ );
+ // @formatter:on
+ this.trabajadorTable = new JTable(this.trabajadorModel);
+ this.trabajadorTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+ }
+
+ {
+// GUI initializer generated by IntelliJ IDEA GUI Designer
+// >>> IMPORTANT!! <<<
+// DO NOT EDIT OR ADD ANY CODE HERE!
+ $$$setupUI$$$();
+ }
+
+ /**
+ * Method generated by IntelliJ IDEA GUI Designer >>> IMPORTANT!! <<< DO NOT edit this method OR call it in your code!
+ *
+ * @noinspection ALL
+ */
+ private void $$$setupUI$$$() {
+ createUIComponents();
+ contentPane = new JPanel();
+ contentPane.setLayout(new GridLayoutManager(3, 2, new Insets(20, 20, 20, 20), -1, -1));
+ final JScrollPane scrollPane1 = new JScrollPane();
+ contentPane.add(scrollPane1, new GridConstraints(1, 0, 1, 2, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, new Dimension(400, -1), null, 0, false));
+ scrollPane1.setViewportView(trabajadorTable);
+ searchField = new JTextField();
+ contentPane.add(searchField,
+ new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW,
+ GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false));
+ buscarButton = new JButton();
+ buscarButton.setText("Buscar");
+ contentPane.add(buscarButton, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1),
+ null, 0, false));
+ final JPanel panel1 = new JPanel();
+ panel1.setLayout(new GridLayoutManager(1, 4, new Insets(0, 0, 0, 0), -1, -1));
+ contentPane.add(panel1, new GridConstraints(2, 0, 1, 2, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false));
+ verButton = new JButton();
+ verButton.setText("Ver");
+ panel1.add(verButton, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1),
+ null, 0, false));
+ eliminarButton = new JButton();
+ eliminarButton.setText("Eliminar");
+ panel1.add(eliminarButton, new GridConstraints(0, 3, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1),
+ null, 0, false));
+ editarButton = new JButton();
+ editarButton.setText("Editar");
+ panel1.add(editarButton, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1),
+ null, 0, false));
+ crearButton = new JButton();
+ crearButton.setText("Crear");
+ panel1.add(crearButton, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1),
+ null, 0, false));
+ }
+
+ /**
+ * @noinspection ALL
+ */
+ public JComponent $$$getRootComponent$$$() {
+ return contentPane;
+ }
+
+}
diff --git a/src/main/java/xyz/danielcortes/views/trabajador/TrabajadorUpdatePanel.form b/src/main/java/xyz/danielcortes/views/trabajador/TrabajadorUpdatePanel.form
new file mode 100644
index 0000000..79b1884
--- /dev/null
+++ b/src/main/java/xyz/danielcortes/views/trabajador/TrabajadorUpdatePanel.form
@@ -0,0 +1,138 @@
+
+
diff --git a/src/main/java/xyz/danielcortes/views/trabajador/TrabajadorUpdatePanel.java b/src/main/java/xyz/danielcortes/views/trabajador/TrabajadorUpdatePanel.java
new file mode 100644
index 0000000..be32697
--- /dev/null
+++ b/src/main/java/xyz/danielcortes/views/trabajador/TrabajadorUpdatePanel.java
@@ -0,0 +1,151 @@
+package xyz.danielcortes.views.trabajador;
+
+import com.github.lgooddatepicker.components.DatePicker;
+import com.intellij.uiDesigner.core.GridConstraints;
+import com.intellij.uiDesigner.core.GridLayoutManager;
+import com.intellij.uiDesigner.core.Spacer;
+import java.awt.Dimension;
+import java.awt.Insets;
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import xyz.danielcortes.framework.BasePanel;
+
+public class TrabajadorUpdatePanel extends BasePanel {
+
+ private JTextField nombreField;
+ private JTextField apellidoPaternoField;
+ private JTextField apellidoMaternoField;
+ private JButton actualizarButton;
+ private JPanel contentPane;
+ private JButton volverButton;
+ private JTextField rutField;
+ private DatePicker fechaContratoField;
+
+ public JTextField getNombreField() {
+ return nombreField;
+ }
+
+ public JTextField getApellidoPaternoField() {
+ return apellidoPaternoField;
+ }
+
+ public JTextField getApellidoMaternoField() {
+ return apellidoMaternoField;
+ }
+
+ public JButton getActualizarButton() {
+ return actualizarButton;
+ }
+
+ @Override
+ public JPanel getContentPane() {
+ return contentPane;
+ }
+
+ public JButton getVolverButton() {
+ return volverButton;
+ }
+
+ public JTextField getRutField() {
+ return rutField;
+ }
+
+ public DatePicker getFechaContratoField() {
+ return fechaContratoField;
+ }
+
+ {
+// GUI initializer generated by IntelliJ IDEA GUI Designer
+// >>> IMPORTANT!! <<<
+// DO NOT EDIT OR ADD ANY CODE HERE!
+ $$$setupUI$$$();
+ }
+
+ /**
+ * Method generated by IntelliJ IDEA GUI Designer >>> IMPORTANT!! <<< DO NOT edit this method OR call it in your code!
+ *
+ * @noinspection ALL
+ */
+ private void $$$setupUI$$$() {
+ contentPane = new JPanel();
+ contentPane.setLayout(new GridLayoutManager(12, 3, new Insets(20, 20, 20, 20), -1, -1));
+ nombreField = new JTextField();
+ contentPane.add(nombreField,
+ new GridConstraints(3, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW,
+ GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(400, -1), null, 0, false));
+ final JLabel label1 = new JLabel();
+ label1.setText("Apellido Paterno:");
+ contentPane.add(label1, new GridConstraints(4, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED,
+ GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ apellidoPaternoField = new JTextField();
+ contentPane.add(apellidoPaternoField,
+ new GridConstraints(5, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW,
+ GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(400, -1), null, 0, false));
+ apellidoMaternoField = new JTextField();
+ contentPane.add(apellidoMaternoField,
+ new GridConstraints(7, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW,
+ GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(400, -1), null, 0, false));
+ final JLabel label2 = new JLabel();
+ label2.setText("Apellido Materno:");
+ contentPane.add(label2, new GridConstraints(6, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED,
+ GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ final Spacer spacer1 = new Spacer();
+ contentPane.add(spacer1,
+ new GridConstraints(11, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null,
+ null, null, 0, false));
+ final Spacer spacer2 = new Spacer();
+ contentPane.add(spacer2,
+ new GridConstraints(11, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1,
+ null, null, null, 0, false));
+ final Spacer spacer3 = new Spacer();
+ contentPane.add(spacer3,
+ new GridConstraints(11, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1,
+ null, null, null, 0, false));
+ final JPanel panel1 = new JPanel();
+ panel1.setLayout(new GridLayoutManager(1, 2, new Insets(0, 0, 0, 0), -1, -1));
+ contentPane.add(panel1, new GridConstraints(10, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false));
+ volverButton = new JButton();
+ volverButton.setText("Volver");
+ panel1.add(volverButton, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1),
+ null, 0, false));
+ actualizarButton = new JButton();
+ actualizarButton.setText("Actualizar");
+ panel1.add(actualizarButton, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1),
+ null, 0, false));
+ final JLabel label3 = new JLabel();
+ label3.setText("Nombre:");
+ contentPane.add(label3, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED,
+ GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ final JLabel label4 = new JLabel();
+ label4.setText("Rut:");
+ contentPane.add(label4, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED,
+ GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ final JLabel label5 = new JLabel();
+ label5.setText("Fecha contrato:");
+ contentPane.add(label5, new GridConstraints(8, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED,
+ GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ fechaContratoField = new DatePicker();
+ contentPane.add(fechaContratoField,
+ new GridConstraints(9, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW,
+ GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(400, -1), null, 0, false));
+ rutField = new JTextField();
+ contentPane.add(rutField,
+ new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW,
+ GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false));
+ }
+
+ /**
+ * @noinspection ALL
+ */
+ public JComponent $$$getRootComponent$$$() {
+ return contentPane;
+ }
+
+}
diff --git a/src/main/java/xyz/danielcortes/views/trabajador/TrabajadorViewPanel.form b/src/main/java/xyz/danielcortes/views/trabajador/TrabajadorViewPanel.form
new file mode 100644
index 0000000..8ebe293
--- /dev/null
+++ b/src/main/java/xyz/danielcortes/views/trabajador/TrabajadorViewPanel.form
@@ -0,0 +1,141 @@
+
+
diff --git a/src/main/java/xyz/danielcortes/views/trabajador/TrabajadorViewPanel.java b/src/main/java/xyz/danielcortes/views/trabajador/TrabajadorViewPanel.java
new file mode 100644
index 0000000..aa93b3e
--- /dev/null
+++ b/src/main/java/xyz/danielcortes/views/trabajador/TrabajadorViewPanel.java
@@ -0,0 +1,155 @@
+package xyz.danielcortes.views.trabajador;
+
+import com.github.lgooddatepicker.components.DatePicker;
+import com.intellij.uiDesigner.core.GridConstraints;
+import com.intellij.uiDesigner.core.GridLayoutManager;
+import com.intellij.uiDesigner.core.Spacer;
+import java.awt.Dimension;
+import java.awt.Insets;
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import xyz.danielcortes.framework.BasePanel;
+
+public class TrabajadorViewPanel extends BasePanel {
+
+ private JTextField nombreField;
+ private JTextField apellidoPaternoField;
+ private JTextField apellidoMaternoField;
+ private JButton volverButton;
+ private JPanel contentPane;
+ private JTextField rutField;
+ private DatePicker fechaContratoPicker;
+ private JTextField usernameField;
+
+ public JTextField getNombreField() {
+ return nombreField;
+ }
+
+ public JTextField getApellidoPaternoField() {
+ return apellidoPaternoField;
+ }
+
+ public JTextField getApellidoMaternoField() {
+ return apellidoMaternoField;
+ }
+
+ public JButton getVolverButton() {
+ return volverButton;
+ }
+
+ @Override
+ public JPanel getContentPane() {
+ return contentPane;
+ }
+
+ public JTextField getRutField() {
+ return rutField;
+ }
+
+ public DatePicker getFechaContratoPicker() {
+ return fechaContratoPicker;
+ }
+
+ public JTextField getUsernameField() {
+ return usernameField;
+ }
+
+ {
+// GUI initializer generated by IntelliJ IDEA GUI Designer
+// >>> IMPORTANT!! <<<
+// DO NOT EDIT OR ADD ANY CODE HERE!
+ $$$setupUI$$$();
+ }
+
+ /**
+ * Method generated by IntelliJ IDEA GUI Designer >>> IMPORTANT!! <<< DO NOT edit this method OR call it in your code!
+ *
+ * @noinspection ALL
+ */
+ private void $$$setupUI$$$() {
+ contentPane = new JPanel();
+ contentPane.setLayout(new GridLayoutManager(14, 3, new Insets(20, 20, 20, 20), -1, -1));
+ final JLabel label1 = new JLabel();
+ label1.setText("Nombre:");
+ contentPane.add(label1, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED,
+ GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ nombreField = new JTextField();
+ nombreField.setEditable(false);
+ nombreField.setEnabled(true);
+ contentPane.add(nombreField,
+ new GridConstraints(3, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW,
+ GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(400, -1), null, 0, false));
+ final JLabel label2 = new JLabel();
+ label2.setText("Apellido Paterno:");
+ contentPane.add(label2, new GridConstraints(4, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED,
+ GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ apellidoPaternoField = new JTextField();
+ apellidoPaternoField.setEditable(false);
+ apellidoPaternoField.setEnabled(true);
+ contentPane.add(apellidoPaternoField,
+ new GridConstraints(5, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW,
+ GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(400, -1), null, 0, false));
+ final JLabel label3 = new JLabel();
+ label3.setText("Apellido Materno:");
+ contentPane.add(label3, new GridConstraints(6, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED,
+ GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ apellidoMaternoField = new JTextField();
+ apellidoMaternoField.setEditable(false);
+ apellidoMaternoField.setEnabled(true);
+ contentPane.add(apellidoMaternoField,
+ new GridConstraints(7, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW,
+ GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(400, -1), null, 0, false));
+ final Spacer spacer1 = new Spacer();
+ contentPane.add(spacer1,
+ new GridConstraints(13, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null,
+ null, null, 0, false));
+ final Spacer spacer2 = new Spacer();
+ contentPane.add(spacer2,
+ new GridConstraints(13, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1,
+ null, null, null, 0, false));
+ final Spacer spacer3 = new Spacer();
+ contentPane.add(spacer3,
+ new GridConstraints(13, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1,
+ null, null, null, 0, false));
+ volverButton = new JButton();
+ volverButton.setText("Volver");
+ contentPane.add(volverButton, new GridConstraints(12, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE,
+ GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1),
+ null, 0, false));
+ final JLabel label4 = new JLabel();
+ label4.setText("Rut:");
+ contentPane.add(label4, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED,
+ GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ final JLabel label5 = new JLabel();
+ label5.setText("Fecha Contrato:");
+ contentPane.add(label5, new GridConstraints(8, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED,
+ GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ rutField = new JTextField();
+ contentPane.add(rutField,
+ new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW,
+ GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false));
+ fechaContratoPicker = new DatePicker();
+ contentPane.add(fechaContratoPicker,
+ new GridConstraints(9, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW,
+ GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ final JLabel label6 = new JLabel();
+ label6.setText("Nombre de usuario:");
+ contentPane.add(label6, new GridConstraints(10, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED,
+ GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ usernameField = new JTextField();
+ contentPane.add(usernameField,
+ new GridConstraints(11, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW,
+ GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false));
+ }
+
+ /**
+ * @noinspection ALL
+ */
+ public JComponent $$$getRootComponent$$$() {
+ return contentPane;
+ }
+
+}