From 0a08cb9943fc5b3c37d8f4bbbbc8d35172c9a7b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isidoro=20Nevares=20Mart=C3=ADn?= Date: Mon, 10 Nov 2025 10:05:16 +0100 Subject: [PATCH] primer commit --- .classpath | 41 +++++ .gitignore | 2 + .project | 23 +++ .settings/org.eclipse.core.resources.prefs | 2 + .settings/org.eclipse.jdt.core.prefs | 8 + .settings/org.eclipse.m2e.core.prefs | 4 + pom.xml | 31 ++++ .../proyectos/AppProyectosLaPalomaSwing.java | 164 ++++++++++++++++++ 8 files changed, 275 insertions(+) create mode 100644 .classpath create mode 100644 .gitignore create mode 100644 .project create mode 100644 .settings/org.eclipse.core.resources.prefs create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 .settings/org.eclipse.m2e.core.prefs create mode 100644 pom.xml create mode 100644 src/main/java/org/lapaloma/gui/proyectos/AppProyectosLaPalomaSwing.java diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..51a6fca --- /dev/null +++ b/.classpath @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9f1d3ca --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target/ +*.class \ No newline at end of file diff --git a/.project b/.project new file mode 100644 index 0000000..e071ba5 --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + ProyectosIES-GUI-Swing + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..2f5cc74 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,8 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..61aa834 --- /dev/null +++ b/pom.xml @@ -0,0 +1,31 @@ + + 4.0.0 + ConcesionarioGUI-Swing + ConcesionarioGUI-Swing + 0.0.1-SNAPSHOT + + + + + com.fasterxml.jackson.core + jackson-databind + 2.15.2 + + + + + org.apache.httpcomponents + httpclient + 4.5.13 + + + + + org.projectlombok + lombok + 1.18.36 + provided + + + + \ No newline at end of file diff --git a/src/main/java/org/lapaloma/gui/proyectos/AppProyectosLaPalomaSwing.java b/src/main/java/org/lapaloma/gui/proyectos/AppProyectosLaPalomaSwing.java new file mode 100644 index 0000000..936be05 --- /dev/null +++ b/src/main/java/org/lapaloma/gui/proyectos/AppProyectosLaPalomaSwing.java @@ -0,0 +1,164 @@ +package org.lapaloma.gui.proyectos; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.Insets; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; +import java.util.ArrayList; + +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; + + +public class AppProyectosLaPalomaSwing { + + // Clase interna para representar el objetos con Clave y Valor (para curso y + // proyecto) + static class ClaseClaveValor { + private String codigo; + private String nombre; + + public ClaseClaveValor(String nombre, String codigo) { + this.nombre = nombre; + this.codigo = codigo; + } + + public String getNombre() { + return nombre; + } + + public String getCodigo() { + return codigo; + } + + @Override + public String toString() { + // Esto define cómo se mostrará en el JComboBox + return nombre; + } + } + + public static void main(String[] args) { + // Crear la ventana principal + JFrame frame = new JFrame("Selección de Curso y Proyecto"); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + // Establecer el tamaño de la ventana a 600x400 píxeles + frame.setSize(600, 400); + + // Centrar la ventana en la pantalla + frame.setLocationRelativeTo(null); + + // Configurar el layout del frame + frame.setLayout(new BorderLayout()); + + // Crear panel para los JComboBox (Curso y Proyecto) + JPanel panelComboBoxes = new JPanel(); + panelComboBoxes.setLayout(new GridBagLayout()); // Usar GridBagLayout para mayor control de los márgenes + GridBagConstraints gbc = new GridBagConstraints(); + + // Crear los cursos con su nombre y código + ArrayList cursosAcademicos = new ArrayList<>(); + cursosAcademicos.add(new ClaseClaveValor("Curso 2022/2023", "2022-2023")); + cursosAcademicos.add(new ClaseClaveValor("Curso 2023/2024", "2023-2024")); + + // Crear JComboBox para cursos académicos usando los objetos Curso + JComboBox comboCursos = new JComboBox<>(cursosAcademicos.toArray(new ClaseClaveValor[0])); + comboCursos.setPreferredSize(new Dimension(150, 25)); + + // Crear los proyectos con su nombre y código + ArrayList proyectos = new ArrayList<>(); + proyectos.add(new ClaseClaveValor("Hiperbaric", "1")); + proyectos.add(new ClaseClaveValor("EcoMotors", "2")); + proyectos.add(new ClaseClaveValor("Speedster", "3")); + + // Crear JComboBox para proyectos usando los objetos Proyecto + JComboBox comboProyectos = new JComboBox<>(proyectos.toArray(new ClaseClaveValor[0])); + comboProyectos.setPreferredSize(new Dimension(150, 25)); + + // Establecer los márgenes entre los componentes con GridBagConstraints + gbc.insets = new Insets(15, 0, 15, 0); // Espacio de 15px entre filas + + // Añadir componentes al panel con GridBagLayout + gbc.gridx = 0; + gbc.gridy = 0; + panelComboBoxes.add(new JLabel("Curso Académico: "), gbc); + + gbc.gridx = 1; + panelComboBoxes.add(comboCursos, gbc); + + gbc.gridx = 0; + gbc.gridy = 1; + panelComboBoxes.add(new JLabel(" Proyecto: "), gbc); + + gbc.gridx = 1; + panelComboBoxes.add(comboProyectos, gbc); + + // Crear panel para el botón y centrarlo + JPanel panelBoton = new JPanel(); + panelBoton.setLayout(new FlowLayout(FlowLayout.CENTER)); // Centrar el botón + + // Crear botón "Migrar a MongoDB" + JButton botonMigrar = new JButton("Migrar a MongoDB"); + + // Añadir ActionListener al botón + botonMigrar.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + // Obtener el curso y el proyecto seleccionados + String codigoProyecto = ((ClaseClaveValor) comboProyectos.getSelectedItem()).getCodigo(); + String codigoCursoSeleccionado = ((ClaseClaveValor) comboCursos.getSelectedItem()).getCodigo(); + + migrarProyectoCursoMongoDB(codigoProyecto, codigoCursoSeleccionado); + } + }); + + // Añadir el botón al panel + panelBoton.add(botonMigrar); + + // Añadir los paneles al frame + frame.add(panelComboBoxes, BorderLayout.CENTER); // Panel con los JComboBox en el centro + frame.add(panelBoton, BorderLayout.SOUTH); // Panel con el botón en la parte inferior + + // Hacer visible la ventana + frame.setVisible(true); + } + + private static void migrarProyectoCursoMongoDB(String codigoProyecto, String codigoCurso) { + // Define the endpoint URL (Replace with your actual URL) + String urlPeticion = "https://proylapaloma.decieloytierra.es/api/ingresos/proyecto/" + codigoProyecto + + "/curso/" + codigoCurso; + System.out.println(urlPeticion); + + try { + // Crear un cliente HTTP + HttpClient client = java.net.http.HttpClient.newHttpClient(); + + // Crear una solicitud GET a la API + HttpRequest request = HttpRequest.newBuilder().uri(URI.create(urlPeticion)).build(); + + // Enviar la solicitud y obtener la respuesta + HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); + + // Comprobar si la respuesta fue exitosa + if (response.statusCode() == 200) { + System.out.println(response.body()); + } else { + System.out.println("Error al obtener los coches: " + response.statusCode()); + } + } catch (Exception e) { + e.printStackTrace(); + } + } +}