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; + } + +}