diff --git a/pom.xml b/pom.xml index b693c34..0fe2887 100644 --- a/pom.xml +++ b/pom.xml @@ -133,6 +133,11 @@ poi-ooxml 5.2.0 + + commons-io + commons-io + 2.16.1 + diff --git a/src/main/java/mx/gob/jumapacelaya/Application.java b/src/main/java/mx/gob/jumapacelaya/Application.java index 185a08f..d95efaf 100644 --- a/src/main/java/mx/gob/jumapacelaya/Application.java +++ b/src/main/java/mx/gob/jumapacelaya/Application.java @@ -19,11 +19,6 @@ public class Application implements AppShellConfigurator { public static void main(String[] args) { SpringApplication.run(Application.class, args); - - DatabaseService databaseService = new DatabaseService(); - String archivo = "C:/Users/mramirezg/Documents/MRAMIREZG/Libro1 PRUEBA.xlsx"; - - databaseService.insertarDesdeExcel(archivo); } } diff --git a/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java b/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java index c2a8fc1..7f2b8a0 100644 --- a/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java +++ b/src/main/java/mx/gob/jumapacelaya/services/DatabaseService.java @@ -7,6 +7,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; import javax.swing.plaf.PanelUI; import java.io.FileInputStream; import java.io.IOException; +import java.io.InputStream; import java.sql.*; import java.time.LocalDate; import java.util.ArrayList; @@ -230,14 +231,14 @@ public class DatabaseService { } - public void insertarDesdeExcel(String rutaArchivoExcel) { + public void insertarDesdeExcel(InputStream inputStream) { String query = "INSERT INTO MTTOPROGRAMADOS (NOMEQUIPO, DEPARTAMENTO, MONITOR, TECLADO, MOUSE, " + "REGULADOR, CPU, IMPRESORA, MINIPRINT, LAPTOP, ESCANER, FECHAPROG, TECNICOSMT, ESTADO) " + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; try (Connection connection = getConnection(); - FileInputStream file = new FileInputStream(rutaArchivoExcel); - Workbook workbook = new XSSFWorkbook(file)) { + //FileInputStream file = new FileInputStream(rutaArchivoExcel); + Workbook workbook = new XSSFWorkbook(inputStream)) { Sheet sheet = workbook.getSheetAt(0); // Primera hoja del archivo Excel diff --git a/src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java b/src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java index 1443d26..e9ec58a 100644 --- a/src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java +++ b/src/main/java/mx/gob/jumapacelaya/ui/PlanAnualView.java @@ -8,14 +8,19 @@ import com.vaadin.flow.component.html.H5; 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.HorizontalLayout; import com.vaadin.flow.component.orderedlayout.VerticalLayout; 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.router.PageTitle; import com.vaadin.flow.router.Route; import jakarta.annotation.security.PermitAll; import mx.gob.jumapacelaya.models.PlanAnual; +import mx.gob.jumapacelaya.services.DatabaseService; +import java.io.InputStream; import java.lang.reflect.Array; import java.time.LocalDate; import java.util.Arrays; @@ -30,6 +35,7 @@ public class PlanAnualView extends VerticalLayout { HorizontalLayout header = new HorizontalLayout(); H4 titulo = new H4(); H5 titulo1 = new H5(); + DatabaseService databaseService = new DatabaseService(); public PlanAnualView() { VerticalLayout headerLayout = new VerticalLayout(); @@ -50,6 +56,25 @@ public class PlanAnualView extends VerticalLayout { headerLayout.add(titulo, titulo1); + + // Componente UPLOAD para subir archivos + MemoryBuffer buffer = new MemoryBuffer(); + Upload upload = new Upload(buffer); + upload.setAcceptedFileTypes(".xls", ".xlsx"); + upload.setMaxFiles(1); + upload.setDropLabel(new com.vaadin.flow.component.html.Span("Arrastra un archivo Excel aquĆ­ o selecciona uno")); + + upload.addSucceededListener(event -> { + try { + InputStream inputStream = buffer.getInputStream(); + databaseService.insertarDesdeExcel(inputStream); + Notification.show("Archivo insertado correctamente").addThemeVariants(NotificationVariant.LUMO_SUCCESS); + } catch (Exception e) { + Notification.show("Error al insertar el archivo: " + e.getMessage()).addThemeVariants(NotificationVariant.LUMO_ERROR); + } + }); + + Grid planAnualGrid = new Grid<>(); planAnualGrid.addColumn(PlanAnual::getNumero).setHeader("No."); planAnualGrid.addColumn(PlanAnual::getNomEquipo).setHeader("Equipo").setAutoWidth(true); @@ -100,7 +125,7 @@ public class PlanAnualView extends VerticalLayout { this.setPadding(false); this.setMargin(false); this.setSpacing(false); - add(headerLayout, gridLayout); + add(headerLayout, gridLayout, upload); } private Icon getIcon(String value) {