Browse Source

limpieza de codigo siguiendo buenas paracticas y tambien se cambiaron los logs con un sistema mas robusto

pull/1/head
mramirezg 1 month ago
parent
commit
dd94512a1b
12 changed files with 102 additions and 149 deletions
  1. +16
    -56
      src/main/java/mx/gob/jumapacelaya/api/RedmineClient.java
  2. +16
    -11
      src/main/java/mx/gob/jumapacelaya/controller/SecurityConfiguration.java
  3. +33
    -35
      src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java
  4. +1
    -1
      src/main/java/mx/gob/jumapacelaya/services/EmailService.java
  5. +1
    -1
      src/main/java/mx/gob/jumapacelaya/services/LdapService.java
  6. +4
    -10
      src/main/java/mx/gob/jumapacelaya/ui/ActDiariaView.java
  7. +5
    -1
      src/main/java/mx/gob/jumapacelaya/ui/DetallesMantView.java
  8. +6
    -6
      src/main/java/mx/gob/jumapacelaya/ui/MantCorrectivoView.java
  9. +7
    -11
      src/main/java/mx/gob/jumapacelaya/ui/MantenimientoView.java
  10. +10
    -13
      src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java
  11. +0
    -3
      src/main/java/mx/gob/jumapacelaya/ui/login/LoginView.java
  12. +3
    -1
      src/main/resources/application.properties

+ 16
- 56
src/main/java/mx/gob/jumapacelaya/api/RedmineClient.java View File

@ -7,6 +7,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
@ -84,10 +85,10 @@ public class RedmineClient {
if (response.statusCode() == 200) {
tickets.addAll(parseTickets(response.body()));
} else {
System.err.println("Error en la respuesta: " + response.statusCode());
log.error("Error al obtener tickets. Codigo de estado: {}", response.statusCode());
}
} catch (Exception e) {
e.printStackTrace();
log.error("Ocurrió una excepción al procesar la respuesta del servidor: ", e);
}
return tickets;
@ -135,55 +136,15 @@ public class RedmineClient {
JsonObject jsonObject = JsonParser.parseString(response.body()).getAsJsonObject();
return jsonObject.get("total_count").getAsInt();
} else {
System.err.println("Error en la respuesta: " + response.statusCode());
log.error("Error al obtener los tickets. Codigo de estado: {}", response.statusCode());
}
} catch (Exception e) {
e.printStackTrace();
log.error("Ocurrió un error al procesar l respuesta del servidor", e);
}
return 0;
}
//AQUI OBTENGO LOS TICKETS DESDE REDMINE
/*public List<Ticket> getTicketsAuthor(RedmineUser user, boolean includeClosed) {
List<Ticket> tickets = new ArrayList<>();
HttpClient client = HttpClient.newHttpClient();
int offset = 0;
// Si includeClose es true, incluira todos los tikets si no, incluira solo los que estan abiertos
String statusFilter = includeClosed ? "&status_id=*" : "&status_id=open";
while (true) {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(REDMINE_URL + "/issues.json?key=" + user.getKey() + "&author_id=" + user.getId() + statusFilter + "&offset=" + offset))
.header("Content-Type", "application/json")
.build();
try {
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 200) {
String responseBody = response.body();
List<Ticket> pageTickets = parseTickets(responseBody);
tickets.addAll(pageTickets);
if (pageTickets.size() < PAGE_SIZE) {
break;
}
offset += PAGE_SIZE;
} else {
System.err.println("Error en la respuesta: " + response.statusCode());
break;
}
} catch (Exception e) {
e.printStackTrace();
break;
}
}
System.out.println("Total tickets obtenidos: " + tickets.size());
return tickets;
}*/
// Aquí se parsean todos los tickets que existen y se les da un formato con los campos a mostrarse
private List<Ticket> parseTickets(String json) {
List<Ticket> tickets = new ArrayList<>();
@ -254,11 +215,10 @@ public class RedmineClient {
tickets.add(ticketObj);
}
} else {
System.out.println("La respuesta JSON no contiene la clave 'issues'");
log.info("La respuesta JSON no contiene la clave 'issues'. Respuesta completa: {}", json);
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("Ocurrió un error al parsear los tickets: " + e.getMessage());
log.error("Ocurrió un error al parsear los tickets: ", e);
}
return tickets;
}
@ -290,7 +250,7 @@ public class RedmineClient {
//return response.body();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
log.error("Error al obtener la cuenta del usuario: {}", e);
return null;
}
}
@ -331,7 +291,7 @@ public class RedmineClient {
return newUser;
} catch (Exception e) {
e.printStackTrace();
log.error("Error al crear el usuario: {}", e);
return null;
}
}
@ -350,13 +310,13 @@ public class RedmineClient {
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 200) {
String responseBody = response.body();
System.out.println("Datos del usuario " + responseBody);
log.info("Datos del usuario " + responseBody);
return parseUser(responseBody);
} else {
System.err.println("Error en la respuesta: " + response.statusCode());
log.error("Error en la respuesta {}", response.statusCode());
}
} catch (Exception e) {
e.printStackTrace();
log.error("Error al obtener el usuario por nombre de usuario: {}", e);
}
return null;
}
@ -398,10 +358,10 @@ public class RedmineClient {
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 204) {
String responseBody = response.body();
System.out.println("Ticket " + ticketId + " cerrado correctamente.");
log.info("Ticket " + ticketId + " cerrado correctamente.");
} else {
System.err.println("Error al cerrar el ticket: " + response.statusCode());
System.err.println(response.body());
log.error("Error al cerrar el ticket: {}", response.statusCode());
log.error(response.body());
}
}
@ -433,7 +393,7 @@ public class RedmineClient {
return LocalDateTime.parse(dateStr);
}
} catch (DateTimeParseException ex) {
System.err.println("Error al parsear fecha '" + fieldName + "': " + dateStr);
log.error("Error al parsear fecha '" + fieldName + "': " + dateStr);
return null;
}
}


+ 16
- 11
src/main/java/mx/gob/jumapacelaya/controller/SecurityConfiguration.java View File

@ -19,6 +19,21 @@ import org.springframework.ldap.core.support.LdapContextSource;
public class SecurityConfiguration extends VaadinWebSecurity {
@Value("${spring.ldap.domain}")
private String ldapDomain;
@Value("${spring.ldap.urls}")
private String ldapUrls;
@Value("${spring.ldap.url}")
private String ldapUrl;
@Value("${spring.ldap.base}")
private String ldapBase;
@Value("${spring.ldap.password}")
private String ldapPassword;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeHttpRequests(auth -> auth
@ -40,23 +55,13 @@ public class SecurityConfiguration extends VaadinWebSecurity {
// !Esta es la real autenticacion con ldap
@Autowired
public void configure(AuthenticationManagerBuilder auth) throws Exception {
ActiveDirectoryLdapAuthenticationProvider provider = new ActiveDirectoryLdapAuthenticationProvider("JUMAPACELAYA.GOB.MX", "ldap://172.16.0.1");
ActiveDirectoryLdapAuthenticationProvider provider = new ActiveDirectoryLdapAuthenticationProvider(ldapDomain, ldapUrl);
provider.setConvertSubErrorCodesToExceptions(true);
provider.setUseAuthenticationRequestCredentials(true);
auth.authenticationProvider(provider);
}
@Value("${spring.ldap.urls}")
private String ldapUrls;
@Value("${spring.ldap.base}")
private String ldapBase;
@Value("${spring.ldap.password}")
private String ldapPassword;
@Bean
public LdapContextSource ldapContextSource() {
LdapContextSource contextSource = new LdapContextSource();


+ 33
- 35
src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java View File

@ -4,18 +4,18 @@ import mx.gob.jumapacelaya.models.*;
import mx.gob.jumapacelaya.models.encuestas.MantenimientosSinEncuesta;
import mx.gob.jumapacelaya.models.encuestas.Pregunta;
import mx.gob.jumapacelaya.models.encuestas.Respuesta;
import oracle.jdbc.OracleConnection;
import oracle.jdbc.OraclePreparedStatement;
import oracle.sql.CLOB;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.security.interfaces.RSAKey;
import java.sql.*;
import java.time.LocalDate;
import java.util.ArrayList;
@ -25,6 +25,7 @@ import java.util.UUID;
@Service
public class DatabaseService {
private static final Logger logger = LoggerFactory.getLogger(DatabaseService.class);
@Value("${db.url}")
private String dbUrl;
@ -63,7 +64,7 @@ public class DatabaseService {
tiposDeMantenimientos.add(tipo);
}
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error al obtener tipos de mantenimientos: ", e);
}
return tiposDeMantenimientos;
}
@ -84,8 +85,7 @@ public class DatabaseService {
}
} catch (SQLException e) {
e.printStackTrace();
System.err.println("Error al obtener nomenclatura: " + e.getMessage());
logger.error("Error al obtener nomenclatura: ", e);
}
return nomenclatura;
}
@ -109,7 +109,7 @@ public class DatabaseService {
usuarios.add(usuario);
}
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error al obtener usuarios: ", e);
}
return usuarios;
}
@ -131,7 +131,7 @@ public class DatabaseService {
departamentos.add(departamentosModel);
}
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error al obtener departamentos: ", e);
}
return departamentos;
}
@ -153,7 +153,7 @@ public class DatabaseService {
tiposHardware.add(tiposHardwareModel);
}
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error al obtener tipos de hardware: ", e);
}
return tiposHardware;
}
@ -206,7 +206,7 @@ public class DatabaseService {
}
System.out.println("Registros obtenidos: " + planAnualList.size());
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error al obtener plan anual: ", e);
}
return planAnualList;
}
@ -257,7 +257,7 @@ public class DatabaseService {
}
}
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error al obtener plan anual por id: ", e);
}
return null;
}
@ -312,7 +312,7 @@ public class DatabaseService {
}
}
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error al obtener detalles del mantenimiento por plan anual id: ", e);
}
return null;
@ -372,7 +372,7 @@ public class DatabaseService {
));
}
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error al obtener mantenimientos sin encuesta respondida por periodo: ", e);
}
return lista;
@ -405,7 +405,7 @@ public class DatabaseService {
}
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error al obtener detalles del hardaware por ID: ", e);
}
return detalles;
}
@ -434,7 +434,7 @@ public class DatabaseService {
}
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error al obtener las actualizaciones de seguridad: ", e);
}
return actualizaciones;
}
@ -480,7 +480,7 @@ public class DatabaseService {
}
}
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error al obtener los mantenimientos correctivos: ", e);
}
return mantCorrectivos;
}
@ -565,14 +565,13 @@ public class DatabaseService {
connection.commit();
} catch (SQLException e) {
System.err.println("Error al insertar mantenimiento: " + e.getMessage());
e.printStackTrace();
logger.error("Error al insertar mantenimiento: ", e);
// En caso de error, se hace rollback
if (connection != null) {
try {
connection.rollback();
} catch (SQLException rollbackEx) {
System.err.println("Error al hacer rollback: " + rollbackEx.getMessage());
logger.error("Error al hacer rollback: ", rollbackEx);
}
}
} finally {
@ -608,7 +607,7 @@ public class DatabaseService {
int rowsAffected = preparedStatement.executeUpdate();
isInserted = rowsAffected > 0;
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error al insertar hardware: ", e);
}
return isInserted;
}
@ -624,7 +623,7 @@ public class DatabaseService {
}
}
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error al obtener el ultimo id de mantenimiento: ", e);
}
return ultimoId;
}
@ -832,7 +831,7 @@ public class DatabaseService {
stmt.setInt(2, planAnualId);
return stmt.executeUpdate() > 0;
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error al actualizar el plan anual: ", e);
return false;
}
}
@ -859,7 +858,7 @@ public class DatabaseService {
stmt.setInt(8, mantenimientoId);
return stmt.executeUpdate() > 0;
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error al actualizar el mantenimiento: ", e);
return false;
}
}
@ -875,7 +874,7 @@ public class DatabaseService {
stmt.setInt(4, detalle.getHardwareDetId());
return stmt.executeUpdate() > 0;
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error al actualizar el detalle del hardware: ", e);
return false;
}
}
@ -889,7 +888,7 @@ public class DatabaseService {
stmt.setInt(2, actualizacion.getActualizacionsegId());
return stmt.executeUpdate() > 0;
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error al actualizar la actualización de seguridad: ", e);
return false;
}
}
@ -905,7 +904,7 @@ public class DatabaseService {
stmt.setString(4, motivo);
return stmt.executeUpdate() > 0;
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error al insertar en bitacora: ", e);
return false;
}
}
@ -921,7 +920,7 @@ public class DatabaseService {
stmt.setString(4, motivo);
return stmt.executeUpdate() > 0;
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error al insertar en bitacora de eliminacion de equipos: ", e);
return false;
}
}
@ -940,8 +939,7 @@ public class DatabaseService {
System.out.println("No se encontró el equipo con ID: " + planAnualId);
}
} catch (SQLException e) {
System.err.println("Error al eliminar el equipo de PLANANUAL: " + e.getMessage());
e.printStackTrace();
logger.error("Error al eliminar el equipo de PLANANUAL: ", e);
}
}
@ -971,7 +969,7 @@ public class DatabaseService {
preguntas.add(pregunta);
}
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error al obtener las preguntas de la encuesta: ", e);
}
return preguntas;
}
@ -1053,7 +1051,7 @@ public class DatabaseService {
stmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error al crear el token de encuesta: ", e);
}
return token;
}
@ -1070,7 +1068,7 @@ public class DatabaseService {
return rs.getInt("MANTENIMIENTOID");
}
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error al validar el token de encuesta: ", e);
}
return null;
}


+ 1
- 1
src/main/java/mx/gob/jumapacelaya/services/EmailService.java View File

@ -36,7 +36,7 @@ public class EmailService {
} catch (Exception e) {
e.printStackTrace();
log.error("Error al enviar el correo: ", e);
throw new RuntimeException("Error al enviar el correo: " + e.getMessage());
}
}


+ 1
- 1
src/main/java/mx/gob/jumapacelaya/services/LdapService.java View File

@ -25,7 +25,7 @@ public class LdapService {
SearchControls searchControls = new SearchControls();
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
searchControls.setReturningAttributes(new String[]{"givenName", "sn", "mail"});
searchControls.setReturningObjFlag(true);
searchControls.setReturningObjFlag(false);
List<CustomUserDetails> result = ldapTemplate.search("", filter.encode(), searchControls, (Attributes attrs) -> {
String firstName = getAttribute(attrs, "givenName");


+ 4
- 10
src/main/java/mx/gob/jumapacelaya/ui/ActDiariaView.java View File

@ -11,9 +11,7 @@ import com.vaadin.flow.component.dependency.CssImport;
import com.vaadin.flow.component.dialog.Dialog;
import com.vaadin.flow.component.grid.Grid;
import com.vaadin.flow.component.grid.GridVariant;
import com.vaadin.flow.component.html.Anchor;
import com.vaadin.flow.component.html.Div;
import com.vaadin.flow.component.html.H3;
import com.vaadin.flow.component.html.Span;
import com.vaadin.flow.component.icon.Icon;
import com.vaadin.flow.component.icon.VaadinIcon;
@ -22,13 +20,11 @@ import com.vaadin.flow.component.notification.NotificationVariant;
import com.vaadin.flow.component.orderedlayout.FlexComponent;
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.component.page.Push;
import com.vaadin.flow.component.popover.Popover;
import com.vaadin.flow.component.popover.PopoverPosition;
import com.vaadin.flow.component.progressbar.ProgressBar;
import com.vaadin.flow.component.richtexteditor.RichTextEditor;
import com.vaadin.flow.data.renderer.ComponentRenderer;
import com.vaadin.flow.function.SerializableBiConsumer;
import com.vaadin.flow.router.PageTitle;
import com.vaadin.flow.router.Route;
import com.vaadin.flow.server.StreamRegistration;
@ -36,10 +32,8 @@ import com.vaadin.flow.server.StreamResource;
import jakarta.annotation.security.PermitAll;
import mx.gob.jumapacelaya.api.RedmineClient;
import mx.gob.jumapacelaya.api.ServerProperties;
import mx.gob.jumapacelaya.models.ActividadDiaria;
import mx.gob.jumapacelaya.models.RedmineUser;
import mx.gob.jumapacelaya.models.Ticket;
import mx.gob.jumapacelaya.services.LdapService;
import mx.gob.jumapacelaya.services.UserService;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.*;
@ -50,17 +44,17 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.vaadin.lineawesome.LineAwesomeIcon;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import java.util.stream.Stream;
@ -394,7 +388,7 @@ public class ActDiariaView extends VerticalLayout {
UI.getCurrent().getPage().executeJs("setTimeout(() => { window.location.reload(); }, 3000);");
} catch (IOException | InterruptedException e) {
e.printStackTrace();
log.error("Error al cerrar el ticket " + ticket.getId(), e);
Notification.show("Error al cerrar el ticket " + ticket.getId());
}
}


+ 5
- 1
src/main/java/mx/gob/jumapacelaya/ui/DetallesMantView.java View File

@ -14,6 +14,8 @@ import com.vaadin.flow.server.StreamRegistration;
import com.vaadin.flow.server.StreamResource;
import mx.gob.jumapacelaya.services.EmailService;
import mx.gob.jumapacelaya.services.ReportService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
@ -53,6 +55,8 @@ import mx.gob.jumapacelaya.services.SecurityService;
@CssImport("./themes/sistema-mantenimiento/styles.css")
public class DetallesMantView extends VerticalLayout implements BeforeEnterObserver {
private static final Logger logger = LoggerFactory.getLogger(DetallesMantView.class);
@Value("${app.base-url}")
private String baseUrl;
@ -296,7 +300,7 @@ public class DetallesMantView extends VerticalLayout implements BeforeEnterObser
} catch (Exception ex) {
Notification.show("Error al generar el reporte: " + ex.getMessage(), 4000, Notification.Position.MIDDLE)
.addThemeVariants(NotificationVariant.LUMO_ERROR);
ex.printStackTrace();
logger.error("Error al generar el reporte: ", ex);
}
});


+ 6
- 6
src/main/java/mx/gob/jumapacelaya/ui/MantCorrectivoView.java View File

@ -1,6 +1,5 @@
package mx.gob.jumapacelaya.ui;
import com.vaadin.flow.component.Text;
import com.vaadin.flow.component.UI;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.button.ButtonVariant;
@ -24,9 +23,6 @@ import com.vaadin.flow.component.radiobutton.RadioButtonGroup;
import com.vaadin.flow.component.textfield.TextArea;
import com.vaadin.flow.component.textfield.TextField;
import com.vaadin.flow.data.renderer.ComponentRenderer;
import com.vaadin.flow.function.ValueProvider;
import com.vaadin.flow.router.BeforeEnterEvent;
import com.vaadin.flow.router.BeforeEnterObserver;
import com.vaadin.flow.router.PageTitle;
import com.vaadin.flow.router.Route;
import de.f0rce.signaturepad.SignaturePad;
@ -36,6 +32,8 @@ import mx.gob.jumapacelaya.services.DatabaseService;
import mx.gob.jumapacelaya.services.EmailService;
import mx.gob.jumapacelaya.services.SecurityService;
import mx.gob.jumapacelaya.services.UserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.vaadin.lineawesome.LineAwesomeIcon;
import java.time.LocalDate;
@ -48,6 +46,8 @@ import java.util.*;
@CssImport("./themes/sistema-mantenimiento/styles.css")
public class MantCorrectivoView extends VerticalLayout {
private static final Logger logger = LoggerFactory.getLogger(MantCorrectivoView.class);
private VerticalLayout mainLayout;
private final SecurityService securityService;
private final VerticalLayout controlsLayout;
@ -592,7 +592,7 @@ public class MantCorrectivoView extends VerticalLayout {
} catch (Exception e) {
Notification.show("Error al enviar el correo", 4000, Notification.Position.MIDDLE)
.addThemeVariants(NotificationVariant.LUMO_ERROR);
e.printStackTrace();
logger.error("Error al enviar correo: ", e);
}
// Limpiar campos
@ -622,7 +622,7 @@ public class MantCorrectivoView extends VerticalLayout {
} catch (Exception ex) {
Notification.show("Ocurrio un error inesperado: " + ex.getMessage(), 5000, Notification.Position.MIDDLE)
.addThemeVariants(NotificationVariant.LUMO_ERROR);
ex.printStackTrace();
logger.error("Error al insertar mantenimiento: ", ex);
}
}


+ 7
- 11
src/main/java/mx/gob/jumapacelaya/ui/MantenimientoView.java View File

@ -1,29 +1,24 @@
package mx.gob.jumapacelaya.ui;
import com.vaadin.flow.component.Component;
import com.vaadin.flow.component.UI;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.button.ButtonVariant;
import com.vaadin.flow.component.checkbox.CheckboxGroup;
import com.vaadin.flow.component.combobox.ComboBox;
import com.vaadin.flow.component.datepicker.DatePicker;
import com.vaadin.flow.component.dependency.CssImport;
import com.vaadin.flow.component.dialog.Dialog;
import com.vaadin.flow.component.html.H1;
import com.vaadin.flow.component.html.H2;
import com.vaadin.flow.component.html.Image;
import com.vaadin.flow.component.html.Span;
import com.vaadin.flow.component.icon.Icon;
import com.vaadin.flow.component.icon.VaadinIcon;
import com.vaadin.flow.component.notification.Notification;
import com.vaadin.flow.component.notification.NotificationVariant;
import com.vaadin.flow.component.orderedlayout.FlexComponent;
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.component.radiobutton.RadioButtonGroup;
import com.vaadin.flow.component.textfield.NumberField;
import com.vaadin.flow.component.textfield.TextArea;
import com.vaadin.flow.component.textfield.TextField;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.router.BeforeEnterEvent;
import com.vaadin.flow.router.BeforeEnterObserver;
import com.vaadin.flow.router.PageTitle;
@ -35,9 +30,8 @@ import mx.gob.jumapacelaya.services.DatabaseService;
import mx.gob.jumapacelaya.services.EmailService;
import mx.gob.jumapacelaya.services.SecurityService;
import mx.gob.jumapacelaya.services.UserService;
import oracle.net.aso.h;
import org.springframework.beans.factory.annotation.Autowired;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.vaadin.lineawesome.LineAwesomeIcon;
import java.time.LocalDate;
@ -50,6 +44,8 @@ import java.util.*;
@CssImport("./themes/sistema-mantenimiento/styles.css")
public class MantenimientoView extends VerticalLayout implements BeforeEnterObserver {
private static final Logger logger = LoggerFactory.getLogger(MantenimientoView.class);
private final SecurityService securityService;
private final VerticalLayout controlsLayout;
private final DatabaseService databaseService;
@ -717,7 +713,7 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
} catch (Exception e) {
Notification.show("Error al enviar el correo", 4000, Notification.Position.MIDDLE)
.addThemeVariants(NotificationVariant.LUMO_ERROR);
e.printStackTrace();
logger.error("Error al enviar el correo", e);
}
// Limpiar campos
@ -747,7 +743,7 @@ public class MantenimientoView extends VerticalLayout implements BeforeEnterObse
} catch (Exception ex) {
Notification.show("Ocurrio un error inesperado: " + ex.getMessage(), 5000, Notification.Position.MIDDLE)
.addThemeVariants(NotificationVariant.LUMO_ERROR);
ex.printStackTrace();
logger.error("Error al insertar mantenimiento", ex);
}
}


+ 10
- 13
src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java View File

@ -1,19 +1,15 @@
package mx.gob.jumapacelaya.ui;
import com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator;
import com.vaadin.flow.component.Component;
import com.vaadin.flow.component.UI;
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.button.ButtonVariant;
import com.vaadin.flow.component.checkbox.Checkbox;
import com.vaadin.flow.component.checkbox.CheckboxGroup;
import com.vaadin.flow.component.checkbox.CheckboxGroupVariant;
import com.vaadin.flow.component.combobox.ComboBox;
import com.vaadin.flow.component.confirmdialog.ConfirmDialog;
import com.vaadin.flow.component.datepicker.DatePicker;
import com.vaadin.flow.component.dependency.CssImport;
import com.vaadin.flow.component.dialog.Dialog;
import com.vaadin.flow.component.formlayout.FormLayout;
import com.vaadin.flow.component.grid.Grid;
import com.vaadin.flow.component.grid.GridVariant;
import com.vaadin.flow.component.grid.HeaderRow;
@ -29,12 +25,10 @@ import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.component.popover.Popover;
import com.vaadin.flow.component.popover.PopoverPosition;
import com.vaadin.flow.component.radiobutton.RadioButtonGroup;
import com.vaadin.flow.component.textfield.NumberField;
import com.vaadin.flow.component.textfield.TextField;
import com.vaadin.flow.component.upload.Upload;
import com.vaadin.flow.component.upload.receivers.MemoryBuffer;
import com.vaadin.flow.data.provider.ListDataProvider;
import com.vaadin.flow.data.renderer.ComponentRenderer;
import com.vaadin.flow.data.value.ValueChangeMode;
import com.vaadin.flow.function.ValueProvider;
@ -48,19 +42,20 @@ import mx.gob.jumapacelaya.models.encuestas.MantenimientosSinEncuesta;
import mx.gob.jumapacelaya.services.DatabaseService;
import mx.gob.jumapacelaya.services.EmailService;
import mx.gob.jumapacelaya.services.ReportService;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.vaadin.lineawesome.LineAwesomeIcon;
import java.io.*;
import java.lang.reflect.Array;
import java.sql.Date;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.time.LocalDate;
import java.time.Year;
import java.time.format.DateTimeFormatter;
@ -75,6 +70,8 @@ import java.util.stream.IntStream;
@CssImport("./themes/sistema-mantenimiento/styles.css")
public class PlanAnualView extends VerticalLayout {
private static final Logger logger = LoggerFactory.getLogger(PlanAnualView.class);
private final EmailService emailService;
@Value("${app.base-url}")
private String baseUrl;
@ -712,7 +709,7 @@ public class PlanAnualView extends VerticalLayout {
} catch (Exception ex) {
Notification.show("Error al genrar el reporte: " + ex.getMessage(), 5000, Notification.Position.MIDDLE)
.addThemeVariants(NotificationVariant.LUMO_ERROR);
ex.printStackTrace();
logger.error("Error al generar el reporte", ex);
}
});
@ -926,7 +923,7 @@ public class PlanAnualView extends VerticalLayout {
} catch (Exception ex) {
Notification.show("Error al generar el reporte: " + ex.getMessage(), 5000, Notification.Position.MIDDLE)
.addThemeVariants(NotificationVariant.LUMO_ERROR);
ex.printStackTrace();
logger.error("Error al generar el reporte", ex);
}
});


+ 0
- 3
src/main/java/mx/gob/jumapacelaya/ui/login/LoginView.java View File

@ -22,9 +22,6 @@ public class LoginView extends VerticalLayout implements BeforeEnterObserver {
private static final Logger log = LoggerFactory.getLogger(LoginView.class);
private final LoginForm login = new LoginForm();
// Usuario local para demostracion
private final String localUser = "admin";
private final String localPassword = "admin";
public LoginView(){


+ 3
- 1
src/main/resources/application.properties View File

@ -13,7 +13,9 @@ spring.jpa.defer-datasource-initialization = true
#Configuracion LDAP
spring.ldap.urls=ldap://172.1.0.1:389
spring.ldap.urls=ldap://172.16.0.1:389
spring.ldap.url=ldap://172.16.0.1
spring.ldap.domain=JUMAPACELAYA.GOB.MX
spring.ldap.base=DC=JUMAPACELAYA,DC=GOB,DC=MX
spring.ldap.username=administrator
spring.ldap.password=Dr3na$134%4guA


Loading…
Cancel
Save