From 57720c2153de8f0c8724ef94d37b9fc51ce244b3 Mon Sep 17 00:00:00 2001 From: fireDevelop Date: Sat, 19 Oct 2024 08:39:47 +0200 Subject: [PATCH 1/8] . . --- eclipse/.metadata/.log | 23 +++++ .../.plugins/org.eclipse.m2e.logback/0.log | 98 +++++++++++++++++++ eclipse/.metadata/version.ini | 2 +- intelliJ/.idea/misc.xml | 2 +- .../DatabaseConnection.java | 6 ++ intelliJ/src/j0037_if_else/Main.java | 13 +++ intelliJ/src/j0038_Read_file/Main.java | 30 ++++++ intelliJ/src/j0038_Read_file/test.txt | 6 ++ intelliJ/src/j0040_06_get_set/Main.java | 41 ++++++++ intelliJ/src/j0040_UF4_PAC1_2/Main.java | 2 + intelliJ/src/j0040_UF4_PAC1_6/Main.java | 27 +++++ intelliJ/src/j0040_UF4_PAC3_1/Employee.java | 21 ++++ intelliJ/src/j0040_UF4_PAC3_1/Main.java | 8 ++ .../j0041_VT03_Ejercicio1/Calculadora.java | 51 ++++++++++ intelliJ/src/j0041_VT03_Ejercicio1/Main.java | 23 +++++ intelliJ/src/j0041_VT03_Ejercicio3/Libro.java | 87 ++++++++++++++++ intelliJ/src/j0041_VT03_Ejercicio3/Main.java | 11 +++ intelliJ/src/j0041_VT3/Main.java | 11 +++ intelliJ/src/j0041_VT3/Persona.java | 58 +++++++++++ intelliJ/src/module-info.java | 1 + intelliJ/test.txt | 2 - 21 files changed, 519 insertions(+), 4 deletions(-) create mode 100644 intelliJ/src/j0037_if_else/Main.java create mode 100644 intelliJ/src/j0038_Read_file/Main.java create mode 100644 intelliJ/src/j0038_Read_file/test.txt create mode 100644 intelliJ/src/j0040_06_get_set/Main.java create mode 100644 intelliJ/src/j0040_UF4_PAC1_2/Main.java create mode 100644 intelliJ/src/j0040_UF4_PAC1_6/Main.java create mode 100644 intelliJ/src/j0040_UF4_PAC3_1/Employee.java create mode 100644 intelliJ/src/j0040_UF4_PAC3_1/Main.java create mode 100644 intelliJ/src/j0041_VT03_Ejercicio1/Calculadora.java create mode 100644 intelliJ/src/j0041_VT03_Ejercicio1/Main.java create mode 100644 intelliJ/src/j0041_VT03_Ejercicio3/Libro.java create mode 100644 intelliJ/src/j0041_VT03_Ejercicio3/Main.java create mode 100644 intelliJ/src/j0041_VT3/Main.java create mode 100644 intelliJ/src/j0041_VT3/Persona.java delete mode 100644 intelliJ/test.txt diff --git a/eclipse/.metadata/.log b/eclipse/.metadata/.log index 8c0b95b..58e0be5 100644 --- a/eclipse/.metadata/.log +++ b/eclipse/.metadata/.log @@ -128,3 +128,26 @@ user global configuration and to define the default location to store repositori not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and EGit might behave differently since they see different configuration options. This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. +!SESSION 2024-10-10 09:56:38.798 ----------------------------------------------- +eclipse.buildId=4.32.0.20240606-1231 +java.version=21.0.1 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY ch.qos.logback.classic 1 0 2024-10-10 09:56:58.111 +!MESSAGE Activated before the state location was initialized. Retry after the state location is initialized. + +!ENTRY org.eclipse.core.resources 2 10035 2024-10-10 09:56:58.781 +!MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes. + +!ENTRY ch.qos.logback.classic 1 0 2024-10-10 09:56:59.084 +!MESSAGE Logback config file: C:\Users\it77\Documents\GitHub\Java\eclipse\.metadata\.plugins\org.eclipse.m2e.logback\logback.2.6.1.20240411-1122.xml + +!ENTRY org.eclipse.egit.ui 2 0 2024-10-10 09:57:04.814 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\it77'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. diff --git a/eclipse/.metadata/.plugins/org.eclipse.m2e.logback/0.log b/eclipse/.metadata/.plugins/org.eclipse.m2e.logback/0.log index fbaf10a..c37efd8 100644 --- a/eclipse/.metadata/.plugins/org.eclipse.m2e.logback/0.log +++ b/eclipse/.metadata/.plugins/org.eclipse.m2e.logback/0.log @@ -203,3 +203,101 @@ 2024-07-25 18:54:26,368 [main] INFO org.burningwave.core.Cache - (Cache.java:76) - Building cache 2024-07-25 18:54:26,394 [main] INFO o.b.c.a.StaticComponentContainer - (StaticComponentContainer.java:443) - org.burningwave.core.assembler.StaticComponentContainer initialized in 0.1051614 seconds 2024-07-25 18:54:29,288 [Worker-7: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update. +2024-10-10 09:57:02,725 [main] INFO o.b.c.a.StaticComponentContainer - (StaticComponentContainer.java:368) - Instantiated org.burningwave.core.SLF4JManagedLoggerRepository +2024-10-10 09:57:02,728 [main] INFO o.b.c.a.StaticComponentContainer - (StaticComponentContainer.java:369) - + + Configuration values for static components: + + background-executor.all-tasks-monitoring.enabled=\ + true + background-executor.all-tasks-monitoring.interval=\ + 30000 + background-executor.all-tasks-monitoring.logger.enabled=\ + false + background-executor.all-tasks-monitoring.minimum-elapsed-time-to-consider-a-task-as-probable-dead-locked=\ + 300000 + background-executor.all-tasks-monitoring.probable-dead-locked-tasks-handling.policy=\ + log only + background-executor.queued-task-executor[0].name=\ + Low priority tasks + background-executor.queued-task-executor[0].priority=\ + 1 + background-executor.queued-task-executor[1].name=\ + Normal priority tasks + background-executor.queued-task-executor[1].priority=\ + 5 + background-executor.queued-task-executor[2].name=\ + High priority tasks + background-executor.queued-task-executor[2].priority=\ + 10 + background-executor.task-creation-tracking.enabled=\ + ${background-executor.all-tasks-monitoring.enabled} + banner.additonal-informations=\ + ${Implementation-Title} ${Implementation-Version} + banner.additonal-informations.retrieve-from-manifest-file-with-implementation-title=\ + Burningwave Core + banner.file=\ + org/burningwave/banner.bwb + banner.hide=\ + true + buffer-handler.default-allocation-mode=\ + ByteBuffer::allocateDirect + buffer-handler.default-buffer-size=\ + 1024 + group-name-for-named-elements=\ + Burningwave + iterable-object-helper.default-values-separator=\ + ; + iterable-object-helper.parallel-iteration.applicability.default-minimum-collection-size=\ + 2 + iterable-object-helper.parallel-iteration.applicability.max-runtime-thread-count-threshold=\ + autodetect + iterable-object-helper.parallel-iteration.applicability.output-collection-enabled-types=\ + java.util.concurrent.ConcurrentHashMap$CollectionView;\ + java.util.Collections$SynchronizedCollection;\ + java.util.concurrent.CopyOnWriteArrayList;\ + java.util.concurrent.CopyOnWriteArraySet;\ + java.util.concurrent.BlockingQueue;\ + java.util.concurrent.ConcurrentSkipListSet;\ + java.util.concurrent.ConcurrentSkipListMap$EntrySet;\ + java.util.concurrent.ConcurrentSkipListMap$KeySet;\ + java.util.concurrent.ConcurrentSkipListMap$Values; + jvm.driver.init=\ + false + managed-logger.repository=\ + autodetect + managed-logger.repository.enabled=\ + true + managed-logger.repository.logging.warn.disabled-for=\ + org.burningwave.core.assembler.ComponentContainer$ClassLoader;\ + org.burningwave.core.classes.MemoryClassLoader;\ + org.burningwave.core.classes.PathScannerClassLoader; + modules.export-all-to-all=\ + true + resource-releaser.enabled=\ + true + synchronizer.all-threads-monitoring.enabled=\ + false + synchronizer.all-threads-monitoring.interval=\ + 90000 + thread-supplier.default-daemon-flag-value=\ + true + thread-supplier.default-thread-priority=\ + 5 + thread-supplier.max-detached-thread-count=\ + ${thread-supplier.max-poolable-thread-count} + thread-supplier.max-detached-thread-count.elapsed-time-threshold-from-last-increase-for-gradual-decreasing-to-initial-value=\ + 30000 + thread-supplier.max-detached-thread-count.increasing-step=\ + autodetect + thread-supplier.max-poolable-thread-count=\ + autodetect + thread-supplier.poolable-thread-request-timeout=\ + 6000 + + +2024-10-10 09:57:02,729 [main] INFO o.b.core.jvm.BufferHandler - (BufferHandler.java:127) - default buffer size: 1024 bytes +2024-10-10 09:57:02,730 [main] INFO o.b.core.jvm.BufferHandler - (BufferHandler.java:141) - default allocation mode: ByteBuffer::allocateDirect +2024-10-10 09:57:02,732 [main] INFO org.burningwave.core.Cache - (Cache.java:76) - Building cache +2024-10-10 09:57:02,748 [main] INFO o.b.c.a.StaticComponentContainer - (StaticComponentContainer.java:443) - org.burningwave.core.assembler.StaticComponentContainer initialized in 0.0842295 seconds +2024-10-10 09:57:04,646 [Worker-6: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update. diff --git a/eclipse/.metadata/version.ini b/eclipse/.metadata/version.ini index fcfd049..f04b102 100644 --- a/eclipse/.metadata/version.ini +++ b/eclipse/.metadata/version.ini @@ -1,3 +1,3 @@ -#Thu Jul 25 18:54:21 CEST 2024 +#Thu Oct 10 09:56:58 CEST 2024 org.eclipse.core.runtime=2 org.eclipse.platform=4.32.0.v20240601-0610 diff --git a/intelliJ/.idea/misc.xml b/intelliJ/.idea/misc.xml index 6f29fee..20b12ed 100644 --- a/intelliJ/.idea/misc.xml +++ b/intelliJ/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/intelliJ/src/j0036_MySQL_Connection/DatabaseConnection.java b/intelliJ/src/j0036_MySQL_Connection/DatabaseConnection.java index f8b251f..9195a4c 100644 --- a/intelliJ/src/j0036_MySQL_Connection/DatabaseConnection.java +++ b/intelliJ/src/j0036_MySQL_Connection/DatabaseConnection.java @@ -1,3 +1,4 @@ +/* package j0036_MySQL_Connection; import java.sql.Connection; @@ -190,3 +191,8 @@ public String toString() { '}'; } } + + + + + */ \ No newline at end of file diff --git a/intelliJ/src/j0037_if_else/Main.java b/intelliJ/src/j0037_if_else/Main.java new file mode 100644 index 0000000..14f850c --- /dev/null +++ b/intelliJ/src/j0037_if_else/Main.java @@ -0,0 +1,13 @@ +package j0037_if_else; +public class Main { + public static void main(String[] args) { + int calificacion = 40; + + if(calificacion >= 50){ + System.out.printf("Aprobado"); + } + else { + System.out.printf("Insuficiente"); + } + } +} \ No newline at end of file diff --git a/intelliJ/src/j0038_Read_file/Main.java b/intelliJ/src/j0038_Read_file/Main.java new file mode 100644 index 0000000..7100a30 --- /dev/null +++ b/intelliJ/src/j0038_Read_file/Main.java @@ -0,0 +1,30 @@ +package j0038_Read_file; + +import java.io.FileWriter; +import java.io.IOException; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +public class Main { + public static final String pathFile = "src/j0038_Read_file/test.txt"; + + public static void main(String[] args) { + Escribir escribir = new Escribir(); + escribir.escribir(); + } + + static class Escribir { + public void escribir(){ + // Generate timestamp + LocalDateTime now = LocalDateTime.now(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + String timestamp = "\n" + now.format(formatter); + + try(FileWriter doc = new FileWriter(Main.pathFile, true) ){ + doc.write(timestamp); + } catch (IOException e){ + e.printStackTrace(); + } + } + } +} \ No newline at end of file diff --git a/intelliJ/src/j0038_Read_file/test.txt b/intelliJ/src/j0038_Read_file/test.txt new file mode 100644 index 0000000..5465342 --- /dev/null +++ b/intelliJ/src/j0038_Read_file/test.txt @@ -0,0 +1,6 @@ + +2024-09-21 10:36:26 +2024-09-21 10:36:50 +2024-09-21 10:37:00 +2024-09-21 10:37:02 +2024-d09-21 10:37:03 \ No newline at end of file diff --git a/intelliJ/src/j0040_06_get_set/Main.java b/intelliJ/src/j0040_06_get_set/Main.java new file mode 100644 index 0000000..2d35e67 --- /dev/null +++ b/intelliJ/src/j0040_06_get_set/Main.java @@ -0,0 +1,41 @@ +package j0040_06_get_set; + +public class Main { + public static void main(String[] args) { + Profesores profesor = new Profesores(); + profesor.setNombre("john"); + profesor.setCurso("Java"); + + double nota = profesor.Evaluar(10.00); + System.out.println(profesor.getNombre()); + System.out.println(profesor.getCurso()); + System.out.println(profesor.Evaluar(nota)); + + } +} + +class Profesores { // Clase no pública + private String nombre; + private String curso; + + public String getNombre() { + return nombre; + } + + public void setNombre(String nombre) { + this.nombre = nombre; + } + + public String getCurso() { + return curso; + } + + public void setCurso(String curso) { + this.curso = curso; + } + + public double Evaluar(double nota) { + nota = nota * 0.8; + return nota; + } +} diff --git a/intelliJ/src/j0040_UF4_PAC1_2/Main.java b/intelliJ/src/j0040_UF4_PAC1_2/Main.java new file mode 100644 index 0000000..9a64d87 --- /dev/null +++ b/intelliJ/src/j0040_UF4_PAC1_2/Main.java @@ -0,0 +1,2 @@ +package j0040_UF4_PAC1_2; + diff --git a/intelliJ/src/j0040_UF4_PAC1_6/Main.java b/intelliJ/src/j0040_UF4_PAC1_6/Main.java new file mode 100644 index 0000000..395f04f --- /dev/null +++ b/intelliJ/src/j0040_UF4_PAC1_6/Main.java @@ -0,0 +1,27 @@ +package j0040_UF4_PAC1_6; + +public class Main { + private String nombre; + private int edad; + private String carrera; + + public Main(String nombre, int edad, String carrera){ + this.nombre = nombre; + this.edad = edad; + this.carrera = carrera; + } + public void obternerInformacion() { + System.out.println("Nombre: " + nombre); + System.out.println("Edad: " + edad + " años"); + System.out.println("Carrera: " + carrera); + } + public void saludarProfesor(){ + System.out.println("Hola profesor, soy " + nombre + ". Hi man! \n"); + } + + public static void main(String[] args) { + Main fernando = new Main("Fernando", 43, "Ingeniero Informatico"); + fernando.obternerInformacion(); + fernando.saludarProfesor(); + } +} \ No newline at end of file diff --git a/intelliJ/src/j0040_UF4_PAC3_1/Employee.java b/intelliJ/src/j0040_UF4_PAC3_1/Employee.java new file mode 100644 index 0000000..d584d7f --- /dev/null +++ b/intelliJ/src/j0040_UF4_PAC3_1/Employee.java @@ -0,0 +1,21 @@ +package j0040_UF4_PAC3_1; + +public class Employee{ + private String name; + private int age; + private String rol; + + public Employee(String name, int age, String rol){ + this.name = name; + this.age = age; + this.rol = rol; + } + public void getEmployee(){ + System.out.println("Name: " + name); + System.out.println("Age: " + age); + System.out.println("Rol: " + rol); + } + public void sayHello(){ + System.out.println("Hello " + name); + } +} \ No newline at end of file diff --git a/intelliJ/src/j0040_UF4_PAC3_1/Main.java b/intelliJ/src/j0040_UF4_PAC3_1/Main.java new file mode 100644 index 0000000..e211d1d --- /dev/null +++ b/intelliJ/src/j0040_UF4_PAC3_1/Main.java @@ -0,0 +1,8 @@ +package j0040_UF4_PAC3_1; +public class Main{ + public static void main(String[] args) { + Employee employee = new Employee("john", 45, "it"); + employee.getEmployee(); + employee.sayHello(); + } +} \ No newline at end of file diff --git a/intelliJ/src/j0041_VT03_Ejercicio1/Calculadora.java b/intelliJ/src/j0041_VT03_Ejercicio1/Calculadora.java new file mode 100644 index 0000000..92a674c --- /dev/null +++ b/intelliJ/src/j0041_VT03_Ejercicio1/Calculadora.java @@ -0,0 +1,51 @@ +package j0041_VT03_Ejercicio1; + +public class Calculadora{ + private int total = 0; + private int num1; + private int num2; + private String operador; + + public Calculadora (int num1, int num2){ + this.num1 = num1; + this.num2 = num2; + this.setMultiplicacion(num1,num2); + } + public Calculadora(int num1, int num2, String operador){ + this.num1 = num1; + this.num2 = num2; + this.operador = operador; + this.setOperacion(num1, num2, operador); + } + + public void setMultiplicacion(int num1, int num2){ + total = num1 * num2; + } + public void getMultiplicacion(){ + System.out.println("Multiplicacion: " + total); + } + public void setOperacion(int num1, int num2, String operador){ + this.num1 = num1; + this.num2 = num2; + this.operador = operador; + + switch (operador){ + case "sumar": + total = num1 + num2; + break; + case "restar": + total = num1 - num2; + break; + default: + System.out.println("Introduce oerador válido sumar o restar"); + total = 0; + break; + } + } + public void getOperacion(){ + if(total !=0 || operador.equals("sumar") || operador.equals("restart")){ + System.out.println("Operacion = " + total); + } + + } +} diff --git a/intelliJ/src/j0041_VT03_Ejercicio1/Main.java b/intelliJ/src/j0041_VT03_Ejercicio1/Main.java new file mode 100644 index 0000000..a43d5f4 --- /dev/null +++ b/intelliJ/src/j0041_VT03_Ejercicio1/Main.java @@ -0,0 +1,23 @@ +package j0041_VT03_Ejercicio1; +import java.util.Scanner; + +public class Main{ + +public static void main(String[] args) { + Scanner scan = new Scanner(System.in); + System.out.println("Introduce operador:"); + String operador = scan.nextLine(); + System.out.println("has escrito: " + operador); + scan.close(); + + int counter = 0; + Calculadora calculadora = new Calculadora(2,4); + Calculadora calculadora1 = new Calculadora(1,3, operador); + calculadora.getMultiplicacion(); + System.out.println("Counter: " + ++counter); + calculadora1.getOperacion(); + System.out.println("Counter: " + ++counter); + + +} +} diff --git a/intelliJ/src/j0041_VT03_Ejercicio3/Libro.java b/intelliJ/src/j0041_VT03_Ejercicio3/Libro.java new file mode 100644 index 0000000..e552915 --- /dev/null +++ b/intelliJ/src/j0041_VT03_Ejercicio3/Libro.java @@ -0,0 +1,87 @@ +package j0041_VT03_Ejercicio3; + +import java.util.Scanner; + +public class Libro { + private String ISBN; + private String autor; + private String titulo; + private int year; + private String editorial; + private int numeroPaginas; + + public Libro(String ISBN, String autor, String titulo, int year, String editorial, int numeroPaginas) { + this.ISBN = ISBN; + this.autor = autor; + this.titulo = titulo; + this.year = year; + this.editorial = editorial; + this.numeroPaginas = numeroPaginas; + } + + public void getLibro(){ + System.out.println("ISBN: " + ISBN); + System.out.println("autor: " + autor); + System.out.println("titulo: " + titulo); + System.out.println("year: " + year); + System.out.println("editorial: " + editorial ); + System.out.println("numeroPaginas: " + numeroPaginas + "\n"); + } + + public void setCrearLibro(){ + Scanner scan = new Scanner(System.in); + System.out.println("Intro ISBN:"); + String ISBN = scan.nextLine(); + System.out.println("Intro Autor:"); + String autor = scan.nextLine(); + System.out.println("Intro titulo:"); + String titulo = scan.nextLine(); + System.out.println("Intro year:"); + int year = scan.nextInt(); + + System.out.println("Intro editorial:"); + String editorial = scan.nextLine(); + System.out.println("Intro numeroPaginas"); + int numeroPaginas = scan.nextInt(); + + Libro libro3 = new Libro(ISBN, autor, titulo, year, editorial, numeroPaginas); + libro3.getLibro(); + } + + public String getISBN(){ + return ISBN; + } + public void setISBN(String ISBN){ + this.ISBN = ISBN; + } + public String getAutor(){ + return autor; + } + public void setAutor(){ + this.autor = autor; + } + public String getTitulo(){ + return titulo; + } + public void setTitulo(String titulo){ + this.titulo = titulo; + } + public int getYear(){ + return year; + } + public void setYear(int year){ + this.year = year; + } + public String getEditorial(){ + return editorial; + } + public void setEditorial(String editorial){ + this.editorial = editorial; + } + public int getNumeroPaginas(){ + return numeroPaginas; + } + public void setNumeroPaginas(int numeroPaginas){ + this.numeroPaginas = numeroPaginas; + } +} \ No newline at end of file diff --git a/intelliJ/src/j0041_VT03_Ejercicio3/Main.java b/intelliJ/src/j0041_VT03_Ejercicio3/Main.java new file mode 100644 index 0000000..8f713f2 --- /dev/null +++ b/intelliJ/src/j0041_VT03_Ejercicio3/Main.java @@ -0,0 +1,11 @@ +package j0041_VT03_Ejercicio3; + +public class Main{ + public static void main(String[] args) { + Libro libro = new Libro("1234", "Garcia Marquez", "Cien años", 1990, "sm", 200); + Libro libro2 = new Libro("222", "Garcia Marquez", "Cien años", 1990, "sm", 200); + libro.getLibro(); + libro2.getLibro(); + libro.setCrearLibro(); + } +} \ No newline at end of file diff --git a/intelliJ/src/j0041_VT3/Main.java b/intelliJ/src/j0041_VT3/Main.java new file mode 100644 index 0000000..13b0ae0 --- /dev/null +++ b/intelliJ/src/j0041_VT3/Main.java @@ -0,0 +1,11 @@ +package j0041_VT3; + +public class Main { + + public static void main(String[] args) { + Persona profe = new Persona("Fernando", "Méndez", "Castellar", 'H', 43); + profe.mostrarDatos(); + profe.mayorEdad(); + } + +} diff --git a/intelliJ/src/j0041_VT3/Persona.java b/intelliJ/src/j0041_VT3/Persona.java new file mode 100644 index 0000000..6d7b509 --- /dev/null +++ b/intelliJ/src/j0041_VT3/Persona.java @@ -0,0 +1,58 @@ +package j0041_VT3; + +public class Persona { + public String nombre; + private String apellido1; + private String apellido2; + private char sexo; + private int edad; + + // Constructor con 1 parámetro de tipo String + public Persona(String n) { + this.nombre = n; + } + + // Constructor con 3 parámetros de tipo String + public Persona(String n, String a1, String a2) { + this.nombre = n; + this.apellido1 = a1; + this.apellido2 = a2; + } + // Constructor con 5 parámetros + public Persona(String n, String a1, String a2, char s, int e) { + this.nombre = n; + this.apellido1 = a1; + this.apellido2 = a2; + this.setSexo(s); + this.setEdad(e); + } + + // Getters y Setters que nos interesan + public String getNombre() { return nombre; } + public String getApellido1() { return apellido1; } + public String getApellido2() { return apellido2; } + public char getSexo() { return sexo; } + public void setSexo(char sexo) { this.sexo = sexo; } + public int getEdad() { return edad; } + public void setEdad(int edad) { this.edad = edad; } + + //Resto de métodos + public void mayorEdad() { + if (this.getEdad() >= 18) { + System.out.println("Es mayor de edad"); + } + else { + System.out.println("Es menor de edad"); + } + } + + public void mostrarDatos() { + System.out.println("Nombre: "+this.getNombre()); + System.out.println("Apellidos: "+this.getApellido1()+ " "+ this.getApellido2()); + System.out.println("Sexo: "+this.getSexo()); + System.out.println("Edad: "+this.getEdad()); + } + + +} + diff --git a/intelliJ/src/module-info.java b/intelliJ/src/module-info.java index 311b7ad..628603e 100644 --- a/intelliJ/src/module-info.java +++ b/intelliJ/src/module-info.java @@ -7,4 +7,5 @@ module intelliJ { requires jdk.compiler; requires java.sql; + requires java.desktop; } \ No newline at end of file diff --git a/intelliJ/test.txt b/intelliJ/test.txt deleted file mode 100644 index 086ee2d..0000000 --- a/intelliJ/test.txt +++ /dev/null @@ -1,2 +0,0 @@ - -2024-07-20 17:35:14 \ No newline at end of file From a6432606b676813861bae0fa6eba68ae1e24c269 Mon Sep 17 00:00:00 2001 From: fireDevelop Date: Sat, 19 Oct 2024 08:56:45 +0200 Subject: [PATCH 2/8] . . --- .../Calculadora.java | 2 +- .../{j0041_VT03_Ejercicio1 => j0042_VT03_Ejercicio1}/Main.java | 2 +- .../{j0041_VT03_Ejercicio3 => j0043_VT03_Ejercicio2}/Libro.java | 2 +- .../{j0041_VT03_Ejercicio3 => j0043_VT03_Ejercicio2}/Main.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) rename intelliJ/src/{j0041_VT03_Ejercicio1 => j0042_VT03_Ejercicio1}/Calculadora.java (97%) rename intelliJ/src/{j0041_VT03_Ejercicio1 => j0042_VT03_Ejercicio1}/Main.java (95%) rename intelliJ/src/{j0041_VT03_Ejercicio3 => j0043_VT03_Ejercicio2}/Libro.java (98%) rename intelliJ/src/{j0041_VT03_Ejercicio3 => j0043_VT03_Ejercicio2}/Main.java (91%) diff --git a/intelliJ/src/j0041_VT03_Ejercicio1/Calculadora.java b/intelliJ/src/j0042_VT03_Ejercicio1/Calculadora.java similarity index 97% rename from intelliJ/src/j0041_VT03_Ejercicio1/Calculadora.java rename to intelliJ/src/j0042_VT03_Ejercicio1/Calculadora.java index 92a674c..d231654 100644 --- a/intelliJ/src/j0041_VT03_Ejercicio1/Calculadora.java +++ b/intelliJ/src/j0042_VT03_Ejercicio1/Calculadora.java @@ -1,4 +1,4 @@ -package j0041_VT03_Ejercicio1; +package j0042_VT03_Ejercicio1; public class Calculadora{ private int total = 0; diff --git a/intelliJ/src/j0041_VT03_Ejercicio1/Main.java b/intelliJ/src/j0042_VT03_Ejercicio1/Main.java similarity index 95% rename from intelliJ/src/j0041_VT03_Ejercicio1/Main.java rename to intelliJ/src/j0042_VT03_Ejercicio1/Main.java index a43d5f4..f5f79c7 100644 --- a/intelliJ/src/j0041_VT03_Ejercicio1/Main.java +++ b/intelliJ/src/j0042_VT03_Ejercicio1/Main.java @@ -1,4 +1,4 @@ -package j0041_VT03_Ejercicio1; +package j0042_VT03_Ejercicio1; import java.util.Scanner; public class Main{ diff --git a/intelliJ/src/j0041_VT03_Ejercicio3/Libro.java b/intelliJ/src/j0043_VT03_Ejercicio2/Libro.java similarity index 98% rename from intelliJ/src/j0041_VT03_Ejercicio3/Libro.java rename to intelliJ/src/j0043_VT03_Ejercicio2/Libro.java index e552915..3c1d7ed 100644 --- a/intelliJ/src/j0041_VT03_Ejercicio3/Libro.java +++ b/intelliJ/src/j0043_VT03_Ejercicio2/Libro.java @@ -1,4 +1,4 @@ -package j0041_VT03_Ejercicio3; +package j0043_VT03_Ejercicio2; import java.util.Scanner; diff --git a/intelliJ/src/j0041_VT03_Ejercicio3/Main.java b/intelliJ/src/j0043_VT03_Ejercicio2/Main.java similarity index 91% rename from intelliJ/src/j0041_VT03_Ejercicio3/Main.java rename to intelliJ/src/j0043_VT03_Ejercicio2/Main.java index 8f713f2..b76eef8 100644 --- a/intelliJ/src/j0041_VT03_Ejercicio3/Main.java +++ b/intelliJ/src/j0043_VT03_Ejercicio2/Main.java @@ -1,4 +1,4 @@ -package j0041_VT03_Ejercicio3; +package j0043_VT03_Ejercicio2; public class Main{ public static void main(String[] args) { From c1b7d0e69adc9d2389e741b702f8b60e5b46a24c Mon Sep 17 00:00:00 2001 From: fireDevelop Date: Sat, 19 Oct 2024 14:53:55 +0200 Subject: [PATCH 3/8] . . --- intelliJ/src/J0049_VT04_PAC/Main.java | 37 +++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 intelliJ/src/J0049_VT04_PAC/Main.java diff --git a/intelliJ/src/J0049_VT04_PAC/Main.java b/intelliJ/src/J0049_VT04_PAC/Main.java new file mode 100644 index 0000000..f182292 --- /dev/null +++ b/intelliJ/src/J0049_VT04_PAC/Main.java @@ -0,0 +1,37 @@ +package J0049_VT04_PAC; +public class Main{ + public static void main (String[] args){ + + // declara un array de enteros. + + int[] arr; + + // asignando memoria para 5 enteros. + + arr = new int[ 5 ]; + + // inicializa el primer elemento del array + + arr[ 0 ] = 10; + + // inicializa el segundo elemento del array + + arr[ 1 ] = 20; + + // y así... + + arr[ 2 ] = 30; + + arr[ 3 ] = 40; + + arr[ 4 ] = 50; + + // accediendo a los elementos del array + + for (int i = 0; i < arr.length; i++) + + System.out.println("Elemento en el índice " + i + " : "+ arr[ i ]); + + } + +} \ No newline at end of file From 533737af0ed2db8e3719bbf664d331a40752b831 Mon Sep 17 00:00:00 2001 From: fireDevelop Date: Sat, 16 Nov 2024 10:59:20 +0100 Subject: [PATCH 4/8] . . --- eclipse/.metadata/.log | 23 ++ .../.plugins/org.eclipse.m2e.logback/0.log | 98 ++++++ eclipse/.metadata/version.ini | 2 +- eclipse/eclipse/src/j0037_papyrus/.gitignore | 1 + .../.classpath | 7 + .../.gitignore | 1 + .../.project | 34 ++ .../org.eclipse.core.resources.prefs | 2 + .../.settings/org.eclipse.core.runtime.prefs | 2 + .../.settings/org.eclipse.jdt.core.prefs | 319 ++++++++++++++++++ .../.settings/org.eclipse.jdt.ui.prefs | 127 +++++++ .../.settings/org.eclipse.pde.api.tools.prefs | 104 ++++++ .../META-INF/MANIFEST.MF | 33 ++ .../build.properties | 7 + .../icons/full/obj16/uml4metamodels.png | Bin 0 -> 461 bytes .../icons/full/obj16/uml4metamodels@2x.png | Bin 0 -> 912 bytes .../icons/full/obj16/uml4metamodels_grey.png | Bin 0 -> 423 bytes .../full/obj16/uml4metamodels_grey@2x.png | Bin 0 -> 800 bytes .../model/uml4metamodels.architecture | 96 ++++++ .../model/uml4metamodels.creationmenumodel | 6 + .../uml4metamodels.elementtypesconfigurations | 266 +++++++++++++++ .../model/uml4metamodels.paletteconfiguration | 12 + ...l4metamodels_di.elementtypesconfigurations | 7 + .../plugin.xml | 17 + .../umlformetamodels/internal/Activator.java | 65 ++++ .../advice/AssociationEditAdvice.java | 218 ++++++++++++ .../internal/advice/AssociationEndAdvice.java | 66 ++++ .../advice/CreateDefaultMetaclassAdvice.java | 47 +++ .../advice/DataTypeDeletionAdvice.java | 142 ++++++++ .../MetamodelRequiredAttributesAdvice.java | 66 ++++ .../internal/advice/NewMetaclassAdvice.java | 84 +++++ .../advice/RequiredVisibilityAdvice.java | 120 +++++++ .../commands/CreateUMLMetamodelCommand.java | 115 +++++++ .../matchers/MustBePrivateMatcher.java | 55 +++ .../matchers/MustBePublicMatcher.java | 79 +++++ .../internal/types/MetamodelElementTypes.java | 43 +++ .../src/j0037_papyrus/project_UML/.project | 11 + .../org.eclipse.core.resources.prefs | 2 + .../src/j0037_papyrus/project_UML/model.di | 2 + .../j0037_papyrus/project_UML/model.notation | 9 + .../src/j0037_papyrus/project_UML/model.uml | 6 + .../j0037_papyrus/project_UML/project_UML.di | 2 + .../project_UML/project_UML.notation | 2 + .../j0037_papyrus/project_UML/project_UML.uml | 6 + intelliJ/src/J0049_VT04_PAC/Main.java | 21 +- .../src/j0005_ClaseDerivada/Business.java | 11 +- .../src/j0005_ClaseDerivada/Employee.java | 15 +- intelliJ/src/j0005_ClaseDerivada/MainApp.java | 28 +- intelliJ/src/j0005_ClaseDerivada/test | 7 - intelliJ/src/j0040_UF4_PAC1_2/Main.java | 2 - intelliJ/src/j0040_UF4_PAC1_6/Main.java | 3 +- intelliJ/src/j0041_VT3/Persona.java | 4 +- intelliJ/src/j0043_VT03_Ejercicio2/Libro.java | 2 +- .../Main.java | 76 +++++ .../Geometria.java | 18 + .../j0051_VT06_Ejercicio9_Geometria/Main.java | 55 +++ .../Empleado.java | 29 ++ .../j0052_VT06_Ejercicio10_Empleado/Main.java | 40 +++ .../Main.java | 73 ++++ intelliJ/src/j0054_T08_Extends/Main.java | 16 + .../j0054_T08_Extends/ProfesorInterino.java | 22 ++ .../j0054_T08_Extends/ProfesorOficial.java | 29 ++ intelliJ/src/test/ErrorLoginException.java | 21 -- intelliJ/src/test/Main.java | 9 + intelliJ/src/test/PI.java | 0 intelliJ/src/test/PO.java | 23 ++ intelliJ/src/test/test.txt | 7 - 67 files changed, 2745 insertions(+), 70 deletions(-) create mode 100644 eclipse/eclipse/src/j0037_papyrus/.gitignore create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.classpath create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.gitignore create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.project create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.core.resources.prefs create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.core.runtime.prefs create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.jdt.core.prefs create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.jdt.ui.prefs create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.pde.api.tools.prefs create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/META-INF/MANIFEST.MF create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/build.properties create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels.png create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels@2x.png create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels_grey.png create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels_grey@2x.png create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.architecture create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.creationmenumodel create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.elementtypesconfigurations create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.paletteconfiguration create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels_di.elementtypesconfigurations create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/plugin.xml create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/Activator.java create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/AssociationEditAdvice.java create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/AssociationEndAdvice.java create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/CreateDefaultMetaclassAdvice.java create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/DataTypeDeletionAdvice.java create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/MetamodelRequiredAttributesAdvice.java create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/NewMetaclassAdvice.java create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/RequiredVisibilityAdvice.java create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/commands/CreateUMLMetamodelCommand.java create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/matchers/MustBePrivateMatcher.java create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/matchers/MustBePublicMatcher.java create mode 100644 eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/types/MetamodelElementTypes.java create mode 100644 eclipse/eclipse/src/j0037_papyrus/project_UML/.project create mode 100644 eclipse/eclipse/src/j0037_papyrus/project_UML/.settings/org.eclipse.core.resources.prefs create mode 100644 eclipse/eclipse/src/j0037_papyrus/project_UML/model.di create mode 100644 eclipse/eclipse/src/j0037_papyrus/project_UML/model.notation create mode 100644 eclipse/eclipse/src/j0037_papyrus/project_UML/model.uml create mode 100644 eclipse/eclipse/src/j0037_papyrus/project_UML/project_UML.di create mode 100644 eclipse/eclipse/src/j0037_papyrus/project_UML/project_UML.notation create mode 100644 eclipse/eclipse/src/j0037_papyrus/project_UML/project_UML.uml delete mode 100644 intelliJ/src/j0040_UF4_PAC1_2/Main.java create mode 100644 intelliJ/src/j0050_VT06_Ejercicio_08_Procesador_Cadenas/Main.java create mode 100644 intelliJ/src/j0051_VT06_Ejercicio9_Geometria/Geometria.java create mode 100644 intelliJ/src/j0051_VT06_Ejercicio9_Geometria/Main.java create mode 100644 intelliJ/src/j0052_VT06_Ejercicio10_Empleado/Empleado.java create mode 100644 intelliJ/src/j0052_VT06_Ejercicio10_Empleado/Main.java create mode 100644 intelliJ/src/j0053_VT06_Ejercicio_11_Matriz_Aleatoria/Main.java create mode 100644 intelliJ/src/j0054_T08_Extends/Main.java create mode 100644 intelliJ/src/j0054_T08_Extends/ProfesorInterino.java create mode 100644 intelliJ/src/j0054_T08_Extends/ProfesorOficial.java delete mode 100644 intelliJ/src/test/ErrorLoginException.java create mode 100644 intelliJ/src/test/PI.java create mode 100644 intelliJ/src/test/PO.java delete mode 100644 intelliJ/src/test/test.txt diff --git a/eclipse/.metadata/.log b/eclipse/.metadata/.log index 58e0be5..1d02bef 100644 --- a/eclipse/.metadata/.log +++ b/eclipse/.metadata/.log @@ -151,3 +151,26 @@ user global configuration and to define the default location to store repositori not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and EGit might behave differently since they see different configuration options. This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. +!SESSION 2024-11-06 19:17:11.895 ----------------------------------------------- +eclipse.buildId=4.32.0.20240606-1231 +java.version=21.0.1 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY ch.qos.logback.classic 1 0 2024-11-06 19:17:35.326 +!MESSAGE Activated before the state location was initialized. Retry after the state location is initialized. + +!ENTRY org.eclipse.core.resources 2 10035 2024-11-06 19:17:36.068 +!MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes. + +!ENTRY ch.qos.logback.classic 1 0 2024-11-06 19:17:36.387 +!MESSAGE Logback config file: C:\Users\it77\Documents\GitHub\Java\eclipse\.metadata\.plugins\org.eclipse.m2e.logback\logback.2.6.1.20240411-1122.xml + +!ENTRY org.eclipse.egit.ui 2 0 2024-11-06 19:17:43.347 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\it77'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. diff --git a/eclipse/.metadata/.plugins/org.eclipse.m2e.logback/0.log b/eclipse/.metadata/.plugins/org.eclipse.m2e.logback/0.log index c37efd8..475203f 100644 --- a/eclipse/.metadata/.plugins/org.eclipse.m2e.logback/0.log +++ b/eclipse/.metadata/.plugins/org.eclipse.m2e.logback/0.log @@ -301,3 +301,101 @@ 2024-10-10 09:57:02,732 [main] INFO org.burningwave.core.Cache - (Cache.java:76) - Building cache 2024-10-10 09:57:02,748 [main] INFO o.b.c.a.StaticComponentContainer - (StaticComponentContainer.java:443) - org.burningwave.core.assembler.StaticComponentContainer initialized in 0.0842295 seconds 2024-10-10 09:57:04,646 [Worker-6: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update. +2024-11-06 19:17:40,479 [main] INFO o.b.c.a.StaticComponentContainer - (StaticComponentContainer.java:368) - Instantiated org.burningwave.core.SLF4JManagedLoggerRepository +2024-11-06 19:17:40,482 [main] INFO o.b.c.a.StaticComponentContainer - (StaticComponentContainer.java:369) - + + Configuration values for static components: + + background-executor.all-tasks-monitoring.enabled=\ + true + background-executor.all-tasks-monitoring.interval=\ + 30000 + background-executor.all-tasks-monitoring.logger.enabled=\ + false + background-executor.all-tasks-monitoring.minimum-elapsed-time-to-consider-a-task-as-probable-dead-locked=\ + 300000 + background-executor.all-tasks-monitoring.probable-dead-locked-tasks-handling.policy=\ + log only + background-executor.queued-task-executor[0].name=\ + Low priority tasks + background-executor.queued-task-executor[0].priority=\ + 1 + background-executor.queued-task-executor[1].name=\ + Normal priority tasks + background-executor.queued-task-executor[1].priority=\ + 5 + background-executor.queued-task-executor[2].name=\ + High priority tasks + background-executor.queued-task-executor[2].priority=\ + 10 + background-executor.task-creation-tracking.enabled=\ + ${background-executor.all-tasks-monitoring.enabled} + banner.additonal-informations=\ + ${Implementation-Title} ${Implementation-Version} + banner.additonal-informations.retrieve-from-manifest-file-with-implementation-title=\ + Burningwave Core + banner.file=\ + org/burningwave/banner.bwb + banner.hide=\ + true + buffer-handler.default-allocation-mode=\ + ByteBuffer::allocateDirect + buffer-handler.default-buffer-size=\ + 1024 + group-name-for-named-elements=\ + Burningwave + iterable-object-helper.default-values-separator=\ + ; + iterable-object-helper.parallel-iteration.applicability.default-minimum-collection-size=\ + 2 + iterable-object-helper.parallel-iteration.applicability.max-runtime-thread-count-threshold=\ + autodetect + iterable-object-helper.parallel-iteration.applicability.output-collection-enabled-types=\ + java.util.concurrent.ConcurrentHashMap$CollectionView;\ + java.util.Collections$SynchronizedCollection;\ + java.util.concurrent.CopyOnWriteArrayList;\ + java.util.concurrent.CopyOnWriteArraySet;\ + java.util.concurrent.BlockingQueue;\ + java.util.concurrent.ConcurrentSkipListSet;\ + java.util.concurrent.ConcurrentSkipListMap$EntrySet;\ + java.util.concurrent.ConcurrentSkipListMap$KeySet;\ + java.util.concurrent.ConcurrentSkipListMap$Values; + jvm.driver.init=\ + false + managed-logger.repository=\ + autodetect + managed-logger.repository.enabled=\ + true + managed-logger.repository.logging.warn.disabled-for=\ + org.burningwave.core.assembler.ComponentContainer$ClassLoader;\ + org.burningwave.core.classes.MemoryClassLoader;\ + org.burningwave.core.classes.PathScannerClassLoader; + modules.export-all-to-all=\ + true + resource-releaser.enabled=\ + true + synchronizer.all-threads-monitoring.enabled=\ + false + synchronizer.all-threads-monitoring.interval=\ + 90000 + thread-supplier.default-daemon-flag-value=\ + true + thread-supplier.default-thread-priority=\ + 5 + thread-supplier.max-detached-thread-count=\ + ${thread-supplier.max-poolable-thread-count} + thread-supplier.max-detached-thread-count.elapsed-time-threshold-from-last-increase-for-gradual-decreasing-to-initial-value=\ + 30000 + thread-supplier.max-detached-thread-count.increasing-step=\ + autodetect + thread-supplier.max-poolable-thread-count=\ + autodetect + thread-supplier.poolable-thread-request-timeout=\ + 6000 + + +2024-11-06 19:17:40,484 [main] INFO o.b.core.jvm.BufferHandler - (BufferHandler.java:127) - default buffer size: 1024 bytes +2024-11-06 19:17:40,484 [main] INFO o.b.core.jvm.BufferHandler - (BufferHandler.java:141) - default allocation mode: ByteBuffer::allocateDirect +2024-11-06 19:17:40,487 [main] INFO org.burningwave.core.Cache - (Cache.java:76) - Building cache +2024-11-06 19:17:40,504 [main] INFO o.b.c.a.StaticComponentContainer - (StaticComponentContainer.java:443) - org.burningwave.core.assembler.StaticComponentContainer initialized in 0.0850735 seconds +2024-11-06 19:17:43,181 [Worker-1: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update. diff --git a/eclipse/.metadata/version.ini b/eclipse/.metadata/version.ini index f04b102..4dfc90a 100644 --- a/eclipse/.metadata/version.ini +++ b/eclipse/.metadata/version.ini @@ -1,3 +1,3 @@ -#Thu Oct 10 09:56:58 CEST 2024 +#Wed Nov 06 19:17:35 CET 2024 org.eclipse.core.runtime=2 org.eclipse.platform=4.32.0.v20240601-0610 diff --git a/eclipse/eclipse/src/j0037_papyrus/.gitignore b/eclipse/eclipse/src/j0037_papyrus/.gitignore new file mode 100644 index 0000000..e10e727 --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/.gitignore @@ -0,0 +1 @@ +/.metadata/ diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.classpath b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.classpath new file mode 100644 index 0000000..81fe078 --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.gitignore b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.gitignore new file mode 100644 index 0000000..ae3c172 --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.project b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.project new file mode 100644 index 0000000..dde07ba --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.project @@ -0,0 +1,34 @@ + + + org.eclipse.papyrus.toolsmiths.example.umlformetamodels + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + org.eclipse.papyrus.plugin.builder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + org.eclipse.papyrus.plugin.nature + + diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.core.resources.prefs b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.core.runtime.prefs b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.core.runtime.prefs new file mode 100644 index 0000000..5a0ad22 --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.core.runtime.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +line.separator=\n diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.jdt.core.prefs b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..a8cc7ef --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,319 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=17 +org.eclipse.jdt.core.formatter.align_type_members_on_columns=false +org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_assignment=0 +org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16 +org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 +org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 +org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16 +org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 +org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 +org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16 +org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 +org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_after_package=1 +org.eclipse.jdt.core.formatter.blank_lines_before_field=0 +org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 +org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 +org.eclipse.jdt.core.formatter.blank_lines_before_method=1 +org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 +org.eclipse.jdt.core.formatter.blank_lines_before_package=0 +org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 +org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 +org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false +org.eclipse.jdt.core.formatter.comment.format_block_comments=true +org.eclipse.jdt.core.formatter.comment.format_header=false +org.eclipse.jdt.core.formatter.comment.format_html=true +org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true +org.eclipse.jdt.core.formatter.comment.format_line_comments=true +org.eclipse.jdt.core.formatter.comment.format_source_code=true +org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true +org.eclipse.jdt.core.formatter.comment.indent_root_tags=true +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert +org.eclipse.jdt.core.formatter.comment.line_length=260 +org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true +org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true +org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false +org.eclipse.jdt.core.formatter.compact_else_if=true +org.eclipse.jdt.core.formatter.continuation_indentation=2 +org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 +org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off +org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on +org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true +org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_empty_lines=false +org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true +org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indentation.size=4 +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert +org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert +org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert +org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert +org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert +org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert +org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert +org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.join_lines_in_comments=false +org.eclipse.jdt.core.formatter.join_wrapped_lines=false +org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false +org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false +org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false +org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false +org.eclipse.jdt.core.formatter.lineSplit=260 +org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false +org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false +org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 +org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=5 +org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true +org.eclipse.jdt.core.formatter.tabulation.char=tab +org.eclipse.jdt.core.formatter.tabulation.size=4 +org.eclipse.jdt.core.formatter.use_on_off_tags=false +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false +org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true +org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true +org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true +org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true +org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true +org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true +org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.jdt.ui.prefs b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 0000000..ba7542e --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,127 @@ +cleanup.add_default_serial_version_id=true +cleanup.add_generated_serial_version_id=false +cleanup.add_missing_annotations=true +cleanup.add_missing_deprecated_annotations=true +cleanup.add_missing_methods=false +cleanup.add_missing_nls_tags=false +cleanup.add_missing_override_annotations=true +cleanup.add_missing_override_annotations_interface_methods=true +cleanup.add_serial_version_id=false +cleanup.always_use_blocks=true +cleanup.always_use_parentheses_in_expressions=false +cleanup.always_use_this_for_non_static_field_access=false +cleanup.always_use_this_for_non_static_method_access=false +cleanup.convert_functional_interfaces=false +cleanup.convert_to_enhanced_for_loop=false +cleanup.correct_indentation=false +cleanup.format_source_code=false +cleanup.format_source_code_changes_only=false +cleanup.insert_inferred_type_arguments=false +cleanup.make_local_variable_final=true +cleanup.make_parameters_final=false +cleanup.make_private_fields_final=true +cleanup.make_type_abstract_if_missing_method=false +cleanup.make_variable_declarations_final=false +cleanup.never_use_blocks=false +cleanup.never_use_parentheses_in_expressions=true +cleanup.organize_imports=false +cleanup.qualify_static_field_accesses_with_declaring_class=false +cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true +cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true +cleanup.qualify_static_member_accesses_with_declaring_class=true +cleanup.qualify_static_method_accesses_with_declaring_class=false +cleanup.remove_private_constructors=true +cleanup.remove_redundant_type_arguments=true +cleanup.remove_trailing_whitespaces=true +cleanup.remove_trailing_whitespaces_all=true +cleanup.remove_trailing_whitespaces_ignore_empty=false +cleanup.remove_unnecessary_casts=true +cleanup.remove_unnecessary_nls_tags=true +cleanup.remove_unused_imports=true +cleanup.remove_unused_local_variables=false +cleanup.remove_unused_private_fields=true +cleanup.remove_unused_private_members=false +cleanup.remove_unused_private_methods=true +cleanup.remove_unused_private_types=true +cleanup.sort_members=false +cleanup.sort_members_all=false +cleanup.use_anonymous_class_creation=false +cleanup.use_blocks=true +cleanup.use_blocks_only_for_return_and_throw=false +cleanup.use_lambda=true +cleanup.use_parentheses_in_expressions=false +cleanup.use_this_for_non_static_field_access=false +cleanup.use_this_for_non_static_field_access_only_if_necessary=true +cleanup.use_this_for_non_static_method_access=false +cleanup.use_this_for_non_static_method_access_only_if_necessary=true +cleanup.use_type_arguments=false +cleanup_profile=_Papyrus +cleanup_settings_version=2 +eclipse.preferences.version=1 +editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true +formatter_profile=_Papyrus +formatter_settings_version=12 +org.eclipse.jdt.ui.ignorelowercasenames=true +org.eclipse.jdt.ui.importorder=java;javax;org;com; +org.eclipse.jdt.ui.javadoc=true +org.eclipse.jdt.ui.ondemandthreshold=99 +org.eclipse.jdt.ui.staticondemandthreshold=99 +org.eclipse.jdt.ui.text.custom_code_templates= +sp_cleanup.add_default_serial_version_id=true +sp_cleanup.add_generated_serial_version_id=false +sp_cleanup.add_missing_annotations=true +sp_cleanup.add_missing_deprecated_annotations=true +sp_cleanup.add_missing_methods=false +sp_cleanup.add_missing_nls_tags=false +sp_cleanup.add_missing_override_annotations=true +sp_cleanup.add_missing_override_annotations_interface_methods=true +sp_cleanup.add_serial_version_id=false +sp_cleanup.always_use_blocks=true +sp_cleanup.always_use_parentheses_in_expressions=false +sp_cleanup.always_use_this_for_non_static_field_access=false +sp_cleanup.always_use_this_for_non_static_method_access=false +sp_cleanup.convert_functional_interfaces=false +sp_cleanup.convert_to_enhanced_for_loop=false +sp_cleanup.correct_indentation=false +sp_cleanup.format_source_code=true +sp_cleanup.format_source_code_changes_only=false +sp_cleanup.insert_inferred_type_arguments=false +sp_cleanup.make_local_variable_final=true +sp_cleanup.make_parameters_final=false +sp_cleanup.make_private_fields_final=true +sp_cleanup.make_type_abstract_if_missing_method=false +sp_cleanup.make_variable_declarations_final=false +sp_cleanup.never_use_blocks=false +sp_cleanup.never_use_parentheses_in_expressions=true +sp_cleanup.on_save_use_additional_actions=true +sp_cleanup.organize_imports=true +sp_cleanup.qualify_static_field_accesses_with_declaring_class=false +sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true +sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true +sp_cleanup.qualify_static_member_accesses_with_declaring_class=false +sp_cleanup.qualify_static_method_accesses_with_declaring_class=false +sp_cleanup.remove_private_constructors=true +sp_cleanup.remove_redundant_modifiers=false +sp_cleanup.remove_redundant_type_arguments=true +sp_cleanup.remove_trailing_whitespaces=true +sp_cleanup.remove_trailing_whitespaces_all=true +sp_cleanup.remove_trailing_whitespaces_ignore_empty=false +sp_cleanup.remove_unnecessary_casts=true +sp_cleanup.remove_unnecessary_nls_tags=true +sp_cleanup.remove_unused_imports=true +sp_cleanup.remove_unused_local_variables=false +sp_cleanup.remove_unused_private_fields=true +sp_cleanup.remove_unused_private_members=false +sp_cleanup.remove_unused_private_methods=true +sp_cleanup.remove_unused_private_types=true +sp_cleanup.sort_members=false +sp_cleanup.sort_members_all=false +sp_cleanup.use_anonymous_class_creation=false +sp_cleanup.use_blocks=true +sp_cleanup.use_blocks_only_for_return_and_throw=false +sp_cleanup.use_lambda=true +sp_cleanup.use_parentheses_in_expressions=false +sp_cleanup.use_this_for_non_static_field_access=false +sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true +sp_cleanup.use_this_for_non_static_method_access=false +sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.pde.api.tools.prefs b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.pde.api.tools.prefs new file mode 100644 index 0000000..b2260f8 --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.pde.api.tools.prefs @@ -0,0 +1,104 @@ +ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error +ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error +ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error +ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error +ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error +ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error +API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error +API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Warning +API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Warning +API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error +API_USE_SCAN_FIELD_SEVERITY=Error +API_USE_SCAN_METHOD_SEVERITY=Error +API_USE_SCAN_TYPE_SEVERITY=Error +CLASS_ELEMENT_TYPE_ADDED_FIELD=Warning +CLASS_ELEMENT_TYPE_ADDED_METHOD=Error +CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error +CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error +CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error +CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error +CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error +CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error +CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error +CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error +CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error +CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error +CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error +CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error +CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error +CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error +CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error +CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error +CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error +ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error +ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error +ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error +ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error +ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error +ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error +FIELD_ELEMENT_TYPE_ADDED_VALUE=Warning +FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error +FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error +FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error +FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error +FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error +FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error +FIELD_ELEMENT_TYPE_CHANGED_VALUE=Warning +FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error +FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error +ILLEGAL_EXTEND=Warning +ILLEGAL_IMPLEMENT=Warning +ILLEGAL_INSTANTIATE=Warning +ILLEGAL_OVERRIDE=Warning +ILLEGAL_REFERENCE=Warning +INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Warning +INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Ignore +INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error +INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error +INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error +INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error +INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error +INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error +INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error +INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error +INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error +INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error +INVALID_ANNOTATION=Ignore +INVALID_JAVADOC_TAG=Ignore +INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore +LEAK_EXTEND=Warning +LEAK_FIELD_DECL=Warning +LEAK_IMPLEMENT=Warning +LEAK_METHOD_PARAM=Warning +LEAK_METHOD_RETURN_TYPE=Warning +METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error +METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error +METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error +METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error +METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error +METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error +METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error +METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error +METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error +METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error +MISSING_EE_DESCRIPTIONS=Error +TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error +TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error +TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error +TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error +TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error +TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error +UNUSED_PROBLEM_FILTERS=Warning +automatically_removed_unused_problem_filters=Enabled +changed_execution_env=Warning +eclipse.preferences.version=1 +incompatible_api_component_version=Warning +incompatible_api_component_version_include_major_without_breaking_change=Disabled +incompatible_api_component_version_include_minor_without_api_change=Disabled +incompatible_api_component_version_report_major_without_breaking_change=Error +incompatible_api_component_version_report_minor_without_api_change=Error +invalid_since_tag_version=Error +malformed_since_tag=Error +missing_since_tag=Error +report_api_breakage_when_major_version_incremented=Disabled +report_resolution_errors_api_component=Warning diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/META-INF/MANIFEST.MF b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/META-INF/MANIFEST.MF new file mode 100644 index 0000000..abe69ca --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/META-INF/MANIFEST.MF @@ -0,0 +1,33 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: UML for Metamodels +Bundle-SymbolicName: org.eclipse.papyrus.toolsmiths.example.umlformetamodels;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-Vendor: Eclipse Modeling Project +Automatic-Module-Name: org.eclipse.papyrus.toolsmiths.example.umlformetamodels +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: org.eclipse.papyrus.infra.core;bundle-version="[4.0.0,5.0.0)", + org.eclipse.papyrus.infra.architecture;bundle-version="[3.0.0,4.0.0)", + org.eclipse.papyrus.infra.emf.types;bundle-version="[5.0.0,6.0.0)", + org.eclipse.papyrus.infra.types.core;bundle-version="[5.0.0,6.0.0)", + org.eclipse.papyrus.infra.types;bundle-version="[5.0.0,6.0.0)", + org.eclipse.uml2.uml;bundle-version="[5.5.0,6.0.0)", + org.eclipse.uml2.uml.profile.standard;bundle-version="[1.5.0,2.0.0)", + org.eclipse.uml2.uml.resources;bundle-version="[5.5.0,6.0.0)", + org.eclipse.papyrus.uml.architecture;bundle-version="[2.0.0,3.0.0)", + org.eclipse.papyrus.uml.diagram.common;bundle-version="[5.0.0,6.0.0)", + org.eclipse.papyrus.uml.diagram.clazz;bundle-version="[5.0.0,6.0.0)", + org.eclipse.gmf.runtime.emf.type.core;bundle-version="[1.9.0,2.0.0)", + org.eclipse.papyrus.infra.services.edit;bundle-version="[4.0.0,5.0.0)", + org.eclipse.papyrus.infra.core.log;bundle-version="[2.0.0,3.0.0)", + org.eclipse.papyrus.infra.newchild;bundle-version="[5.0.0,6.0.0)", + org.eclipse.papyrus.infra.emf;bundle-version="[4.0.0,5.0.0)", + org.eclipse.papyrus.uml.service.types;bundle-version="[5.0.0,6.0.0)", + org.eclipse.ui;bundle-version="[3.100.0,4.0.0)" +Bundle-ActivationPolicy: lazy +Bundle-Activator: org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.Activator +Export-Package: org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal;x-internal:=true, + org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.advice;x-internal:=true, + org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.commands;x-internal:=true, + org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.matchers;x-internal:=true, + org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.types;x-internal:=true diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/build.properties b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/build.properties new file mode 100644 index 0000000..262d8c4 --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/build.properties @@ -0,0 +1,7 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + plugin.xml,\ + icons/,\ + model/ diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels.png b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels.png new file mode 100644 index 0000000000000000000000000000000000000000..caf940ec3fb3254a5d66ca29782c69604c25f96e GIT binary patch literal 461 zcmV;;0W$uHP)z5oC_cYeNheZB(;Km-ax0tY_=2tZg} zlmZ4o00uw=3PTDQy#N4B1_?q02tWf6o+viJ2M0a`2|_SEzX1$-1QNap2|@rCyh2XD zc7DD96~6=(zClgD1Qomk6TAcyyaW}$2p7Nq`@a48zSq{h($c=f#lBl*zNV?ZbbP-5 z`o5y3zKoK-UTD6MmA`p_zLS`~($T(OXueuxzE)tr{`^T!00vK$jO?fCp1RL79<}QC*XPMGp*k z8QAqrb#-l68N|4RxY*d(^@t6&lY35ZKd z!L%^(@e7NHO32C^8yXs#X@F!wKt@rC0|ZndTqF_zh}IGb?LFnI00000NkvXXu0mjf DyKJyL literal 0 HcmV?d00001 diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels@2x.png b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..35463d8923e38b274d8e30c8f93e53cca82e2e6c GIT binary patch literal 912 zcmW+zdrVtZ7(e&b+k0sTw70aB+7$z(1=lSGmttJFy%f7H3>a&f4|HWywk*b=BQpjc zr8;zjxH&iYM-$ipH~&DgC6l$i=X3@eO&^)HWeQVaL&FGL*fdKQo%3k&J@UPN-|I+g zvq#Mvc>sXgyVc!>wdFrnQdqjjj>Z8XqODE7Mo)JWt4Dkp0vbqa5v_{>O$->5j4o`n zBA}=TKxFs^0K94=0;YIb**20DDWwZL309;z2^3&cDldPQ;Uz)XLMZBWIzRT)oQqK6 zT8ZSIp>#1uKmY^@ZH#0kS_lJB$Lhkxk48w1%=3*D=Q5et2UX^*H zY_P$aI#gnXlmM?Uz{2$?k$}??I6o)%KIi-eU&`0h*1Qws--=ud=lD%RTA5=7&YHP4 z3*&~Uezr8ON+lDSKTbu+`R`?}vT(rI&NW7(M1)SxTz=g7MazX9^6{nI-_q?u>fS_t z9x2$oZO<}6eXRf4h99xf>vs8^#d`xI2KxR%3$qrFc(Fcimr@D;p3^!i>>lC`~e z7Izh0{`$zMWp8FCpU;ntEzK?s2fk_WfV->J)!C)Z`CzY|;;x z4E=VsXJUMNIusk}@nqHwb*SN8&+#>U3d(oXlQ6~ zaBz5dcwk^)Utb@Pl#q}B%8HANi-?E-Ng!8DObp1#%*+%O6_t{b0;&g+l9G}@MrvxR zgM$N54Nxj6DJefc-_OraMn=ZKzyN4+P*6}_US2>z0FVs?KYsl9_U+rHOP9`{KY#e} z;o92TwQJY*_V%t`y?V}^Ira7R^XJcBxNzZw2@}qpJJ-|!TJ}*(ZD!`*{)9P7VwCtUuIzD+tIMAb=|t16W8g)FgUa3F>+d}si}#EvYGiBJVMF$NJs!lZEbBJ z1E^9=OiV{d2Ph&hFAo#}>H@NXT7YaNB_*KAKr?|3015&P0g4070ZPfr%0jq62S8*Y zBv2X9K%gLy0W=DzQd(LXXbVs=&@?G2DTp$ll!=K6&@>=`xXshk)7RJc|Ns9GV^^(O z_2b8n$B!Q`Sg-)-hSjTA1MOYAcJ1-w$5T>L-o1Nw^5n_b*x0D3s8gp-6&Du+ZOqTl zKYjXiQc@By9Cq*CT~JW)^5x5hhK9nz!l_fIu359@(W6JpmoLA2_wL-eb8p?cb?@H2 zqN1XiGiOelHtp%tr!g@x(b3UB_dI|8JUl%7&Ye5gu3ZcGyxs!nV&9S=zhH)|HM{Tp z*u^DcaP=I=HFnP1dpOlD?YYBqOyZdMKFKp@Pw&3;dFo!Ki`}aHVN$MVcC#E|oM7=} z@8)-_ocqpj`Y34sE^(*z`E287563JOX} zwzx8ONnhgBxeRBGP f=kDSQXYeyTm{sehAm4Ec81@XFu6{1-oD!M + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.creationmenumodel b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.creationmenumodel new file mode 100644 index 0000000..4086d51 --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.creationmenumodel @@ -0,0 +1,6 @@ + + + + + + diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.elementtypesconfigurations b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.elementtypesconfigurations new file mode 100644 index 0000000..fab0778 --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.elementtypesconfigurations @@ -0,0 +1,266 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + StandardProfile::Metamodel + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + StandardProfile::Metaclass + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.paletteconfiguration b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.paletteconfiguration new file mode 100644 index 0000000..6775dde --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.paletteconfiguration @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels_di.elementtypesconfigurations b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels_di.elementtypesconfigurations new file mode 100644 index 0000000..fbaa852 --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels_di.elementtypesconfigurations @@ -0,0 +1,7 @@ + + + + + + + diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/plugin.xml b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/plugin.xml new file mode 100644 index 0000000..f46e548 --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/plugin.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/Activator.java b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/Activator.java new file mode 100644 index 0000000..46bc4bf --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/Activator.java @@ -0,0 +1,65 @@ +/***************************************************************************** + * Copyright (c) 2021 Christian W. Damus, CEA LIST, and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Christian W. Damus - Initial API and implementation + * + *****************************************************************************/ + +package org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal; + +import org.eclipse.core.runtime.Plugin; +import org.eclipse.papyrus.infra.core.log.LogHelper; +import org.osgi.framework.BundleContext; + +/** + * OSGi bundle activator. + */ +public class Activator extends Plugin { + + /** The bundle symbolic name (plug-in ID). */ + public static final String PLUGIN_ID = "org.eclipse.papyrus.toolsmiths.example.umlformetamodels"; //$NON-NLS-1$ + + /** The activator instance. */ + private static Activator plugin; + + /** Logging helper */ + public static LogHelper log; + + public Activator() { + super(); + } + + @Override + public void start(BundleContext context) throws Exception { + super.start(context); + + plugin = this; + log = new LogHelper(this); + } + + @Override + public void stop(BundleContext context) throws Exception { + log = null; + plugin = null; + + super.stop(context); + } + + /** + * Obtain the activator instance. + * + * @return the activator instance + */ + public static Activator getDefault() { + return plugin; + } + +} diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/AssociationEditAdvice.java b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/AssociationEditAdvice.java new file mode 100644 index 0000000..d181161 --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/AssociationEditAdvice.java @@ -0,0 +1,218 @@ +/***************************************************************************** + * Copyright (c) 2021 Christian W. Damus, CEA LIST, and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Christian W. Damus - Initial API and implementation + * + *****************************************************************************/ + +package org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.advice; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EReference; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.gmf.runtime.common.core.command.CompositeCommand; +import org.eclipse.gmf.runtime.common.core.command.ICommand; +import org.eclipse.gmf.runtime.emf.type.core.IElementType; +import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice; +import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyDependentsRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.IEditCommandRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.MoveRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; +import org.eclipse.papyrus.infra.emf.requests.UnsetRequest; +import org.eclipse.papyrus.infra.services.edit.service.ElementEditServiceUtils; +import org.eclipse.papyrus.infra.services.edit.service.IElementEditService; +import org.eclipse.papyrus.uml.service.types.utils.RequestParameterUtils; +import org.eclipse.uml2.uml.Association; +import org.eclipse.uml2.uml.Property; +import org.eclipse.uml2.uml.UMLPackage; + +/** + * Advice for the editing of associations. + */ +public class AssociationEditAdvice extends AbstractEditHelperAdvice { + + /** + * Associations must be binary. Do not permit creating or adding a third end. + */ + @Override + public boolean approveRequest(IEditCommandRequest request) { + if (request instanceof CreateElementRequest) { + return approveCreateElementRequest((CreateElementRequest) request); + } else if (request instanceof SetRequest) { + return approveSetRequest((SetRequest) request); + } else if (request instanceof MoveRequest) { + return approveMoveRequest((MoveRequest) request); + } else { + return super.approveRequest(request); + } + } + + /** + * Deny creation of a member end if the association already has two ends. + */ + protected boolean approveCreateElementRequest(CreateElementRequest request) { + boolean result = true; + + EObject container = request.getContainer(); + if (container instanceof Association && ((Association) container).getMemberEnds().size() >= 2) { + IElementType typeToCreate = request.getElementType(); + result = (typeToCreate == null) || !UMLPackage.Literals.PROPERTY.isSuperTypeOf(typeToCreate.getEClass()); + } + + return result; + } + + /** + * Deny setting the member ends of an association to some number of ends other than two. + */ + protected boolean approveSetRequest(SetRequest request) { + boolean result = true; + + if (request.getFeature() == UMLPackage.Literals.ASSOCIATION__MEMBER_END + || request.getFeature() == UMLPackage.Literals.ASSOCIATION__OWNED_END) { + + Association association = (Association) request.getElementToEdit(); + + result = !isBreakingMultiplicity(association, request.getFeature(), 2, 2, request.getValue()); + } + + return result; + } + + /** + * Deny moving a property into the member ends of an association that already has two ends. + */ + protected boolean approveMoveRequest(MoveRequest request) { + boolean result = true; + + EObject container = request.getTargetContainer(); + if (container instanceof Association) { + Association association = (Association) container; + int endCount = association.getMemberEnds().size(); + + @SuppressWarnings("unchecked") + Map moves = request.getElementsToMove(); + for (Map.Entry next : moves.entrySet()) { + if (next.getKey() instanceof Property) { + endCount = endCount + 1; + result = endCount <= 2; + + if (!result) { + break; + } + } + } + } + + return result; + } + + /** + * Query whether a {@code value} to be added to or set into a {@code feature} of an {@code owner} would break + * our multiplicity constraint for the {@code feature}. + * + * @param owner + * the object that owns the {@code feature} being edited + * @param feature + * the feature of the {@code owner} that is being edited + * @param minSize + * the minimal size that the {@code feature} must have + * @param maxSize + * the maximal size that the {@code feature} may have + * @param value + * the value to be added (if not a collection) or set (if a collection), according to the contract of the + * {@link SetRequest} API + * @return whether this {@code value} would break the multiplicity constraint on the {@code feature} + */ + protected boolean isBreakingMultiplicity(EObject owner, EStructuralFeature feature, int minSize, int maxSize, Object value) { + Object currentValue = owner.eGet(feature); + int existingSize = feature.isMany() ? ((Collection) currentValue).size() : currentValue == null ? 0 : 1; + + // If it's not a collection, then it is a value to be added + boolean result = !(value instanceof Collection) && existingSize >= maxSize; + + if (!result) { + // Is the collection to replace the existing collection a collection of invalid size? + int newSize = ((Collection) value).size(); + + result = newSize < minSize || newSize > maxSize; + } + + return result; + } + + @Override + protected ICommand getBeforeDestroyDependentsCommand(DestroyDependentsRequest request) { + ICommand result = null; + + if (request.getElementToDestroy() instanceof Association) { + // The association advice following this will attempt to destroy the member ends, so block that + Association association = (Association) request.getElementToDestroy(); + protectMemberEnds(association, request); + + // But as these ends will no longer be in an association, they should not be subsets + for (Property end : association.getMemberEnds()) { + if (end.getOwningAssociation() != association && end.eIsSet(UMLPackage.Literals.PROPERTY__SUBSETTED_PROPERTY)) { + result = CompositeCommand.compose(result, getUnsetCommand(request, end, UMLPackage.Literals.PROPERTY__SUBSETTED_PROPERTY)); + } + } + } + + return CompositeCommand.compose(result, super.getBeforeDestroyDependentsCommand(request)); + } + + /** + * Configure the dependents to keep parameter of the {@code request} to preserve the + * member ends of the {@code association} that it does not own. + * + * @param association + * an association being destroyed + * @param request + * the gathering dependencies of the {@code association} that also should be destroyed + */ + protected void protectMemberEnds(Association association, DestroyDependentsRequest request) { + List dependentsToKeep = RequestParameterUtils.getDependentsToKeep(request, true); + + for (Property end : association.getMemberEnds()) { + if (end.getOwningAssociation() != association) { + dependentsToKeep.add(end); + } + } + } + + /** + * Create a command to unset the given {@code feature} of an {@code owner} of that feature. + * + * @param parentRequest + * the request in which edit context we are fetching a corollary command + * @param owner + * the object that owns the {@code feature} to unset + * @param feature + * the feature to unset in the {@code owner} + * @return the unset command, or {@code null} if no relevant command can be obtained + */ + protected ICommand getUnsetCommand(IEditCommandRequest parentRequest, EObject owner, EStructuralFeature feature) { + ICommand result = null; + + IElementEditService edit = ElementEditServiceUtils.getCommandProvider(owner, parentRequest.getClientContext()); + if (edit != null) { + result = edit.getEditCommand(new UnsetRequest(parentRequest.getEditingDomain(), owner, feature)); + } + + return result; + } + +} diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/AssociationEndAdvice.java b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/AssociationEndAdvice.java new file mode 100644 index 0000000..52c9fdb --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/AssociationEndAdvice.java @@ -0,0 +1,66 @@ +/***************************************************************************** + * Copyright (c) 2021 Christian W. Damus, CEA LIST, and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Christian W. Damus - Initial API and implementation + * + *****************************************************************************/ + +package org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.advice; + +import java.util.Collection; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice; +import org.eclipse.gmf.runtime.emf.type.core.requests.IEditCommandRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; +import org.eclipse.uml2.uml.Property; +import org.eclipse.uml2.uml.UMLPackage; + +/** + * Advice that constrains the editing of association ends in UML metamodels. + */ +public class AssociationEndAdvice extends AbstractEditHelperAdvice { + + @Override + public boolean approveRequest(IEditCommandRequest request) { + if (request instanceof SetRequest) { + return approveSetRequest((SetRequest) request); + } else { + return super.approveRequest(request); + } + } + + /** + * Deny a request that would set subsetted properties of a {@link Property} that is not an + * end of some {@link Association}. + */ + protected boolean approveSetRequest(SetRequest request) { + boolean result = true; + + if (request.getFeature() == UMLPackage.Literals.PROPERTY__SUBSETTED_PROPERTY) { + // Unconditionally allow an unset + result = isAssociationEnd(request.getElementToEdit()) || isEmpty(request.getValue()); + } + + return result; + } + + /** Query whether a {@code property} is an association end. */ + protected final boolean isAssociationEnd(EObject property) { + return (property instanceof Property) && ((Property) property).getAssociation() != null; + } + + /** Query whether a {@code value} is {@code null} or an empty collection. */ + protected boolean isEmpty(Object value) { + return value == null || (value instanceof Collection && ((Collection) value).isEmpty()); + } + +} diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/CreateDefaultMetaclassAdvice.java b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/CreateDefaultMetaclassAdvice.java new file mode 100644 index 0000000..d02b67c --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/CreateDefaultMetaclassAdvice.java @@ -0,0 +1,47 @@ +/***************************************************************************** + * Copyright (c) 2021 Christian W. Damus, CEA LIST, and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Christian W. Damus - Initial API and implementation + * + *****************************************************************************/ + +package org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.advice; + +import org.eclipse.gmf.runtime.common.core.command.ICommand; +import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice; +import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; +import org.eclipse.papyrus.infra.services.edit.service.ElementEditServiceUtils; +import org.eclipse.papyrus.infra.services.edit.service.IElementEditService; +import org.eclipse.papyrus.infra.services.edit.utils.RequestParameterConstants; +import org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.types.MetamodelElementTypes; +import org.eclipse.uml2.uml.Package; + +/** + * Advice that creates the default metaclass in a new metamodel package. + */ +public class CreateDefaultMetaclassAdvice extends AbstractEditHelperAdvice { + + /** + * Create a metaclass in a new metamodel as a "starter kit" for designing the metamodel. + */ + @Override + protected ICommand getAfterConfigureCommand(ConfigureRequest request) { + Package metamodel = (Package) request.getElementToConfigure(); + + CreateElementRequest createRequest = new CreateElementRequest(metamodel, MetamodelElementTypes.getMetaclassType()); + createRequest.setParameter(RequestParameterConstants.NAME_TO_SET, "Element"); //$NON-NLS-1$ + + IElementEditService edit = ElementEditServiceUtils.getCommandProvider(metamodel); + return (edit == null) ? null : edit.getEditCommand(createRequest); + } + +} diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/DataTypeDeletionAdvice.java b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/DataTypeDeletionAdvice.java new file mode 100644 index 0000000..5739f4c --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/DataTypeDeletionAdvice.java @@ -0,0 +1,142 @@ +/***************************************************************************** + * Copyright (c) 2021 Christian W. Damus, CEA LIST, and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Christian W. Damus - Initial API and implementation + * + *****************************************************************************/ + +package org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.advice; + +import java.util.Collection; +import java.util.stream.Collectors; + +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.gmf.runtime.common.core.command.AbstractCommand; +import org.eclipse.gmf.runtime.common.core.command.CommandResult; +import org.eclipse.gmf.runtime.common.core.command.CompositeCommand; +import org.eclipse.gmf.runtime.common.core.command.ICommand; +import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice; +import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyDependentsRequest; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.uml2.common.util.CacheAdapter; +import org.eclipse.uml2.uml.DataType; +import org.eclipse.uml2.uml.NamedElement; +import org.eclipse.uml2.uml.TypedElement; +import org.eclipse.uml2.uml.UMLPackage; + +/** + * Advice for the deletion of datatypes to delete also attributes of that type (pursuant to user confirmation). + */ +public class DataTypeDeletionAdvice extends AbstractEditHelperAdvice { + + /** + * When destroying a {@link DataType}, destroy also any properties or operation parameters + * typed by it, with interactive user confirmation. + */ + @Override + protected ICommand getBeforeDestroyDependentsCommand(DestroyDependentsRequest request) { + ICommand result = null; + + // This covers the enumerations and primitive types that we can use in metamodels + if (request.getElementToDestroy() instanceof DataType) { + // Find attributes typed by this data type + DataType dataType = (DataType) request.getElementToDestroy(); + + // The UML Cache Adapter maintains an inverse reference map. We need to find + // objects that reference our DataType; the DataType does not reference them + CacheAdapter cache = CacheAdapter.getCacheAdapter(dataType); + if (cache != null) { + Collection settings = cache.getInverseReferences(dataType, UMLPackage.Literals.TYPED_ELEMENT__TYPE, true); + if (!settings.isEmpty()) { + result = deleteOwners(settings, request); + } + } + } + + return CompositeCommand.compose(result, super.getBeforeDestroyDependentsCommand(request)); + } + + /** + * Obtain a command to delete the owners of reference {@code settings}. + * + * @param settings + * settings of references to the object being deleted + * @param request + * the request gathering dependents of the the object to delete that also should be deleted + * @return a command to delete the objects that own the reference {@code settings} + */ + private ICommand deleteOwners(Collection settings, DestroyDependentsRequest request) { + Collection typedElements = settings.stream().map(EStructuralFeature.Setting::getEObject) + .map(TypedElement.class::cast).distinct().collect(Collectors.toList()); + + String listOfNames = typedElements.stream().map(NamedElement::getQualifiedName).collect(Collectors.joining(", ")); + String prompt = NLS.bind("The following elements will also be deleted. Proceed?\n{0}.", listOfNames); + + // If this returns a cancel result, then the framework will undo any changes performed by earlier commands + ICommand promptToConfirm = new PromptToConfirmCommand("Delete Typed Elements", prompt); + ICommand destroyTypedElements = request.getDestroyDependentsCommand(typedElements); + + return CompositeCommand.compose(promptToConfirm, destroyTypedElements); + } + + // + // Nested types + // + + /** + * A command that, when executed, shows the user a prompt message and asks for confirmation to proceed. + * If the user elects not to proceed, then command execution is cancelled. + */ + private static final class PromptToConfirmCommand extends AbstractCommand { + private final String dialogTitle; + private final String prompt; + + PromptToConfirmCommand(String dialogTitle, String prompt) { + super("Prompt to Confirm"); + + this.dialogTitle = dialogTitle; + this.prompt = prompt; + } + + @Override + public boolean canExecute() { + return true; + } + + @Override + protected CommandResult doExecuteWithResult(IProgressMonitor progressMonitor, IAdaptable info) throws ExecutionException { + Shell parentShell = (info == null) ? Display.getCurrent().getActiveShell() : info.getAdapter(Shell.class); + return MessageDialog.openConfirm(parentShell, dialogTitle, prompt) + ? CommandResult.newOKCommandResult() + : CommandResult.newCancelledCommandResult(); // The framework will undo any changes performed by earlier commands + } + + @Override + protected CommandResult doRedoWithResult(IProgressMonitor progressMonitor, IAdaptable info) throws ExecutionException { + // Nothing to confirm on undo + return CommandResult.newOKCommandResult(); + } + + @Override + protected CommandResult doUndoWithResult(IProgressMonitor progressMonitor, IAdaptable info) throws ExecutionException { + // Nothing to confirm on redo + return CommandResult.newOKCommandResult(); + } + + } + +} diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/MetamodelRequiredAttributesAdvice.java b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/MetamodelRequiredAttributesAdvice.java new file mode 100644 index 0000000..e3a7024 --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/MetamodelRequiredAttributesAdvice.java @@ -0,0 +1,66 @@ +/***************************************************************************** + * Copyright (c) 2021 Christian W. Damus, CEA LIST, and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Christian W. Damus - Initial API and implementation + * + *****************************************************************************/ + +package org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.advice; + +import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice; +import org.eclipse.gmf.runtime.emf.type.core.requests.IEditCommandRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; +import org.eclipse.papyrus.infra.emf.requests.UnsetRequest; +import org.eclipse.uml2.uml.UMLPackage; + +/** + * Advice that prevents unsetting of required attributes of UML metamodels. + */ +public class MetamodelRequiredAttributesAdvice extends AbstractEditHelperAdvice { + + @Override + public boolean approveRequest(IEditCommandRequest request) { + if (request instanceof SetRequest) { + return approveSetRequest((SetRequest) request); + } else if (request instanceof UnsetRequest) { + return approveUnsetRequest((UnsetRequest) request); + } else { + return super.approveRequest(request); + } + } + + /** + * Deny a request that would set the package URI to a {@code null} or blank value. + */ + protected boolean approveSetRequest(SetRequest request) { + boolean result = true; + + if (request.getFeature() == UMLPackage.Literals.PACKAGE__URI) { + result = request.getValue() != null && !String.valueOf(request.getValue()).isBlank(); + } + + return result; + } + + /** + * Deny a request that would unset the package URI. + */ + protected boolean approveUnsetRequest(UnsetRequest request) { + boolean result = true; + + if (request.getFeature() == UMLPackage.Literals.PACKAGE__URI) { + result = false; + } + + return result; + } + +} diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/NewMetaclassAdvice.java b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/NewMetaclassAdvice.java new file mode 100644 index 0000000..7cf68d2 --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/NewMetaclassAdvice.java @@ -0,0 +1,84 @@ +/***************************************************************************** + * Copyright (c) 2021 Christian W. Damus, CEA LIST, and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Christian W. Damus - Initial API and implementation + * + *****************************************************************************/ + +package org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.advice; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.gmf.runtime.common.core.command.CompositeCommand; +import org.eclipse.gmf.runtime.common.core.command.ICommand; +import org.eclipse.gmf.runtime.emf.type.core.commands.DeferredSetValueCommand; +import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice; +import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.IEditCommandRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; +import org.eclipse.papyrus.infra.services.edit.service.ElementEditServiceUtils; +import org.eclipse.papyrus.infra.services.edit.service.IElementEditService; +import org.eclipse.papyrus.infra.services.edit.utils.RequestParameterConstants; +import org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.types.MetamodelElementTypes; +import org.eclipse.uml2.uml.Type; +import org.eclipse.uml2.uml.UMLPackage; +import org.eclipse.uml2.uml.resource.UMLResource; + +/** + * Advice that configures a new metaclass upon its creation in the model. + */ +public class NewMetaclassAdvice extends AbstractEditHelperAdvice { + + /** + * Create a new property "name" of string type in the new metaclass. Because we use the Element Types + * framework to create that property, the required visibility advice will assign it public visibility without + * this metaclass advice having to be concerned with it. + */ + @Override + protected ICommand getAfterConfigureCommand(ConfigureRequest request) { + org.eclipse.uml2.uml.Class metaclass = (org.eclipse.uml2.uml.Class) request.getElementToConfigure(); + + // Create a new property + CreateElementRequest createRequest = new CreateElementRequest(metaclass, MetamodelElementTypes.getPropertyType()); + createRequest.setParameter(RequestParameterConstants.NAME_TO_SET, "name"); //$NON-NLS-1$ + + // Use the edit service to ensure that creation of the property, itself, is advised by element types + IElementEditService edit = ElementEditServiceUtils.getCommandProvider(metaclass); + ICommand createProperty = edit.getEditCommand(createRequest); + + // The type of the new property can only be set once the property exists, so defer setting it until then + SetRequest setTypeRequest = new SetRequest(request.getEditingDomain(), null, + UMLPackage.Literals.TYPED_ELEMENT__TYPE, getStringType(request)); + ICommand setType = new DeferredSetValueCommand(setTypeRequest) { + @Override + protected EObject getElementToEdit() { + return createRequest.getNewElement(); + } + }; + + return CompositeCommand.compose(createProperty, setType); + } + + /** + * Get the String type from the UML Primitive Types library in the context of the + * given edit {@code request}. + * + * @param request + * an edit request bearing the editing domain context + * @return the UML String type + */ + protected Type getStringType(IEditCommandRequest request) { + URI uri = URI.createURI(UMLResource.UML_PRIMITIVE_TYPES_LIBRARY_URI).appendFragment("String"); //$NON-NLS-1$ + return (Type) request.getEditingDomain().getResourceSet().getEObject(uri, true); + } + +} diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/RequiredVisibilityAdvice.java b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/RequiredVisibilityAdvice.java new file mode 100644 index 0000000..82e1cb9 --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/RequiredVisibilityAdvice.java @@ -0,0 +1,120 @@ +/***************************************************************************** + * Copyright (c) 2021 Christian W. Damus, CEA LIST, and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Christian W. Damus - Initial API and implementation + * + *****************************************************************************/ + +package org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.advice; + +import org.eclipse.gmf.runtime.emf.type.core.IElementMatcher; +import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice; +import org.eclipse.gmf.runtime.emf.type.core.requests.IEditCommandRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; +import org.eclipse.papyrus.infra.emf.requests.UnsetRequest; +import org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.matchers.MustBePrivateMatcher; +import org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.matchers.MustBePublicMatcher; +import org.eclipse.uml2.uml.Enumeration; +import org.eclipse.uml2.uml.EnumerationLiteral; +import org.eclipse.uml2.uml.InstanceValue; +import org.eclipse.uml2.uml.UMLPackage; +import org.eclipse.uml2.uml.VisibilityKind; + +/** + * Advice that prevents setting an illegal visibility of a named element in an UML metamodel. + */ +public class RequiredVisibilityAdvice extends AbstractEditHelperAdvice { + + private final IElementMatcher mustBePublic = new MustBePublicMatcher(); + private final IElementMatcher mustBePrivate = new MustBePrivateMatcher(); + + @Override + public boolean approveRequest(IEditCommandRequest request) { + if (request instanceof SetRequest) { + return approveSetRequest((SetRequest) request); + } else if (request instanceof UnsetRequest) { + return approveUnsetRequest((UnsetRequest) request); + } else { + return super.approveRequest(request); + } + } + + /** + * Deny a request that would set the visibility of an element to anything other than the + * value that it must have, if it is restricted to some value. + */ + protected boolean approveSetRequest(SetRequest request) { + boolean result = true; + + if (request.getFeature() == UMLPackage.Literals.NAMED_ELEMENT__VISIBILITY) { + VisibilityKind visibility = getVisibilityKind(request.getValue()); + if (visibility != VisibilityKind.PUBLIC_LITERAL && mustBePublic.matches(request.getElementToEdit())) { + result = false; + } + if (visibility != VisibilityKind.PRIVATE_LITERAL && mustBePrivate.matches(request.getElementToEdit())) { + result = false; + } + } + + return result; + } + + /** + * Deny a request that would unset the visibility of an element if it is required to have some value. + */ + protected boolean approveUnsetRequest(UnsetRequest request) { + boolean result = true; + + if (request.getFeature() == UMLPackage.Literals.NAMED_ELEMENT__VISIBILITY) { + // Unset a visibility makes it public + if (mustBePrivate.matches(request.getElementToEdit())) { + result = false; + } + } + + return result; + } + + /** + * Infer by any means available the visibility kind intended by a {@code value}. + * + * @param value + * a value requested to be set into the visibility of an element + * @return the inferred visibility enumeration literal, or {@code null} if none can be determined + */ + private VisibilityKind getVisibilityKind(Object value) { + VisibilityKind result = null; + + if (value instanceof VisibilityKind) { + result = (VisibilityKind) value; + } else if (value instanceof InstanceValue) { + InstanceValue instance = (InstanceValue) value; + if (instance.getInstance() instanceof EnumerationLiteral) { + result = getVisibilityKind(instance.getInstance()); + } + } else if (value instanceof EnumerationLiteral) { + EnumerationLiteral literal = (EnumerationLiteral) value; + Enumeration enumeration = literal.getEnumeration(); + if (enumeration != null && "UML::VisibilityKind".equals(enumeration.getQualifiedName())) { //$NON-NLS-1$ + result = getVisibilityKind(literal.getName()); + } + } else if (value instanceof String) { + try { + result = VisibilityKind.valueOf(((String) value).toLowerCase()); + } catch (Exception e) { + // Not a value of this enumeration + } + } + + return result; + } + +} diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/commands/CreateUMLMetamodelCommand.java b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/commands/CreateUMLMetamodelCommand.java new file mode 100644 index 0000000..7b810ac --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/commands/CreateUMLMetamodelCommand.java @@ -0,0 +1,115 @@ +/***************************************************************************** + * Copyright (c) 2021 Christian W. Damus, CEA LIST, and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Christian W. Damus - Initial API and implementation + * + *****************************************************************************/ + +package org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.commands; + +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.gmf.runtime.common.core.command.ICommand; +import org.eclipse.gmf.runtime.emf.type.core.IClientContext; +import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest; +import org.eclipse.papyrus.infra.core.resource.ModelSet; +import org.eclipse.papyrus.infra.core.services.ServiceException; +import org.eclipse.papyrus.infra.services.edit.context.TypeContext; +import org.eclipse.papyrus.infra.services.edit.service.ElementEditServiceUtils; +import org.eclipse.papyrus.infra.services.edit.service.IElementEditService; +import org.eclipse.papyrus.infra.services.edit.utils.RequestParameterConstants; +import org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.Activator; +import org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.types.MetamodelElementTypes; +import org.eclipse.papyrus.uml.diagram.common.commands.ModelCreationCommandBase; +import org.eclipse.uml2.common.util.UML2Util; +import org.eclipse.uml2.uml.Package; +import org.eclipse.uml2.uml.Profile; +import org.eclipse.uml2.uml.UMLFactory; +import org.eclipse.uml2.uml.UMLPackage; +import org.eclipse.uml2.uml.resource.UMLResource; + +/** + * Command that creates a new UML Metamodel. + */ +public class CreateUMLMetamodelCommand extends ModelCreationCommandBase { + + private final ThreadLocal modelSet = new ThreadLocal<>(); + + public CreateUMLMetamodelCommand() { + super(); + } + + @Override + public void createModel(ModelSet modelSet) { + this.modelSet.set(modelSet); + + try { + super.createModel(modelSet); + } finally { + this.modelSet.remove(); + } + } + + @Override + protected EObject createRootElement() { + return UMLFactory.eINSTANCE.createModel(); + } + + @Override + protected void initializeModel(EObject owner) { + // This is done after attachment of the package to the resource, and thus the resource set, + // which is required for the edit commands to work. + + Package metamodel = (Package) owner; + + // This is require a priori for various profile-based element-types to work + applyProfile(metamodel); + + try { + // Use the Element Types framework to configure the new root element using the + // advice defined in this context + IClientContext clientContext = TypeContext.getContext(modelSet.get()); + ConfigureRequest configureRequest = new ConfigureRequest(metamodel, MetamodelElementTypes.getMetamodelType()); + configureRequest.setClientContext(clientContext); + configureRequest.setEditingDomain(modelSet.get().getTransactionalEditingDomain()); + + // Papyrus provides an advice that sets a default name for a new NamedElement. Tell it a + // specific name to set + URI uri = metamodel.eResource().getURI(); + while (!uri.equals(uri.trimFileExtension())) { + uri = uri.trimFileExtension(); + } + configureRequest.setParameter(RequestParameterConstants.NAME_TO_SET, uri.lastSegment()); + + // Obtain and execute the configure command + IElementEditService edit = ElementEditServiceUtils.getCommandProvider(MetamodelElementTypes.getMetamodelType(), clientContext); + ICommand configureCommand = edit.getEditCommand(configureRequest); + if (configureCommand != null && configureCommand.canExecute()) { + configureCommand.execute(new NullProgressMonitor(), null); + } + } catch (ServiceException | ExecutionException e) { + Activator.log.error("Failed to initialize new metamodel.", e); + } + } + + /** Apply the UML Standard Profile to the new metamodel. */ + private void applyProfile(Package package_) { + Profile standardProfile = (Profile) UML2Util.load(modelSet.get(), URI.createURI(UMLResource.STANDARD_PROFILE_URI), UMLPackage.Literals.PROFILE); + if (standardProfile != null) { + package_.applyProfile(standardProfile); + } else { + Activator.log.error("UML Standard Profile is not available.", null); + } + } + +} diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/matchers/MustBePrivateMatcher.java b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/matchers/MustBePrivateMatcher.java new file mode 100644 index 0000000..53f8312 --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/matchers/MustBePrivateMatcher.java @@ -0,0 +1,55 @@ +/***************************************************************************** + * Copyright (c) 2021 Christian W. Damus, CEA LIST, and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Christian W. Damus - Initial API and implementation + * + *****************************************************************************/ + +package org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.matchers; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.util.Switch; +import org.eclipse.gmf.runtime.emf.type.core.IElementMatcher; +import org.eclipse.uml2.uml.Association; +import org.eclipse.uml2.uml.util.UMLSwitch; + +/** + * A matcher for elements that must have private visibility in an UML metamodel. + */ +public class MustBePrivateMatcher implements IElementMatcher { + + private final Switch mustBePrivate = new MustBePrivate(); + + @Override + public boolean matches(EObject eObject) { + return mustBePrivate.doSwitch(eObject); + } + + // + // Nested types + // + + /** Associations must be private; nothing else must. */ + private static class MustBePrivate extends UMLSwitch { + + @Override + public Boolean caseAssociation(Association object) { + return true; + } + + @Override + public Boolean defaultCase(EObject object) { + return false; + } + + } + +} diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/matchers/MustBePublicMatcher.java b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/matchers/MustBePublicMatcher.java new file mode 100644 index 0000000..d7e5994 --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/matchers/MustBePublicMatcher.java @@ -0,0 +1,79 @@ +/***************************************************************************** + * Copyright (c) 2021 Christian W. Damus, CEA LIST, and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Christian W. Damus - Initial API and implementation + * + *****************************************************************************/ + +package org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.matchers; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.util.Switch; +import org.eclipse.gmf.runtime.emf.type.core.IElementMatcher; +import org.eclipse.uml2.uml.Association; +import org.eclipse.uml2.uml.Classifier; +import org.eclipse.uml2.uml.EnumerationLiteral; +import org.eclipse.uml2.uml.Feature; +import org.eclipse.uml2.uml.Parameter; +import org.eclipse.uml2.uml.util.UMLSwitch; + +/** + * A matcher for elements that must have public visibility in an UML metamodel. + */ +public class MustBePublicMatcher implements IElementMatcher { + + private final Switch mustBePublic = new MustBePublic(); + + @Override + public boolean matches(EObject eObject) { + return mustBePublic.doSwitch(eObject); + } + + // + // Nested types + // + + /** Classifiers that are not associations must be public, as must features, operation parameters, and enumeration literals. */ + private static class MustBePublic extends UMLSwitch { + + @Override + public Boolean caseAssociation(Association object) { + return false; + } + + @Override + public Boolean caseClassifier(Classifier object) { + return true; + } + + @Override + public Boolean caseFeature(Feature object) { + return true; + } + + @Override + public Boolean caseParameter(Parameter object) { + return true; + } + + @Override + public Boolean caseEnumerationLiteral(EnumerationLiteral object) { + return true; + } + + @Override + public Boolean defaultCase(EObject object) { + return false; + } + + } + +} diff --git a/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/types/MetamodelElementTypes.java b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/types/MetamodelElementTypes.java new file mode 100644 index 0000000..37a4436 --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/types/MetamodelElementTypes.java @@ -0,0 +1,43 @@ +/***************************************************************************** + * Copyright (c) 2021 Christian W. Damus, CEA LIST, and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Christian W. Damus - Initial API and implementation + * + *****************************************************************************/ + +package org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.types; + +import org.eclipse.gmf.runtime.emf.type.core.ElementTypeRegistry; +import org.eclipse.gmf.runtime.emf.type.core.IElementType; +import org.eclipse.papyrus.uml.service.types.element.UMLElementTypes; + +/** + * Convenient access to the element types for UML Metamodeling. + */ +public class MetamodelElementTypes { + + private static final String PREFIX = "org.eclipse.papyrus.toolsmiths.example.umlformetamodels."; //$NON-NLS-1$ + private static final String METAMODEL = PREFIX + "Metamodel"; //$NON-NLS-1$ + private static final String METACLASS = PREFIX + "Metaclass"; //$NON-NLS-1$ + + public static IElementType getMetamodelType() { + return ElementTypeRegistry.getInstance().getType(METAMODEL); + } + + public static IElementType getMetaclassType() { + return ElementTypeRegistry.getInstance().getType(METACLASS); + } + + public static IElementType getPropertyType() { + return UMLElementTypes.PROPERTY; + } + +} diff --git a/eclipse/eclipse/src/j0037_papyrus/project_UML/.project b/eclipse/eclipse/src/j0037_papyrus/project_UML/.project new file mode 100644 index 0000000..681ca43 --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/project_UML/.project @@ -0,0 +1,11 @@ + + + project_UML + + + + + + + + diff --git a/eclipse/eclipse/src/j0037_papyrus/project_UML/.settings/org.eclipse.core.resources.prefs b/eclipse/eclipse/src/j0037_papyrus/project_UML/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/project_UML/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/eclipse/eclipse/src/j0037_papyrus/project_UML/model.di b/eclipse/eclipse/src/j0037_papyrus/project_UML/model.di new file mode 100644 index 0000000..8c549ee --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/project_UML/model.di @@ -0,0 +1,2 @@ + + diff --git a/eclipse/eclipse/src/j0037_papyrus/project_UML/model.notation b/eclipse/eclipse/src/j0037_papyrus/project_UML/model.notation new file mode 100644 index 0000000..f9860ad --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/project_UML/model.notation @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/eclipse/eclipse/src/j0037_papyrus/project_UML/model.uml b/eclipse/eclipse/src/j0037_papyrus/project_UML/model.uml new file mode 100644 index 0000000..1971335 --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/project_UML/model.uml @@ -0,0 +1,6 @@ + + + + + + diff --git a/eclipse/eclipse/src/j0037_papyrus/project_UML/project_UML.di b/eclipse/eclipse/src/j0037_papyrus/project_UML/project_UML.di new file mode 100644 index 0000000..8c549ee --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/project_UML/project_UML.di @@ -0,0 +1,2 @@ + + diff --git a/eclipse/eclipse/src/j0037_papyrus/project_UML/project_UML.notation b/eclipse/eclipse/src/j0037_papyrus/project_UML/project_UML.notation new file mode 100644 index 0000000..bf9abab --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/project_UML/project_UML.notation @@ -0,0 +1,2 @@ + + diff --git a/eclipse/eclipse/src/j0037_papyrus/project_UML/project_UML.uml b/eclipse/eclipse/src/j0037_papyrus/project_UML/project_UML.uml new file mode 100644 index 0000000..3d725c4 --- /dev/null +++ b/eclipse/eclipse/src/j0037_papyrus/project_UML/project_UML.uml @@ -0,0 +1,6 @@ + + + + + + diff --git a/intelliJ/src/J0049_VT04_PAC/Main.java b/intelliJ/src/J0049_VT04_PAC/Main.java index f182292..4655333 100644 --- a/intelliJ/src/J0049_VT04_PAC/Main.java +++ b/intelliJ/src/J0049_VT04_PAC/Main.java @@ -1,6 +1,7 @@ package J0049_VT04_PAC; -public class Main{ - public static void main (String[] args){ + +public class Main { + public static void main(String[] args) { // declara un array de enteros. @@ -8,29 +9,29 @@ public static void main (String[] args){ // asignando memoria para 5 enteros. - arr = new int[ 5 ]; + arr = new int[5]; // inicializa el primer elemento del array - arr[ 0 ] = 10; + arr[0] = 10; // inicializa el segundo elemento del array - arr[ 1 ] = 20; + arr[1] = 20; // y así... - arr[ 2 ] = 30; + arr[2] = 30; - arr[ 3 ] = 40; + arr[3] = 40; - arr[ 4 ] = 50; + arr[4] = 50; // accediendo a los elementos del array - for (int i = 0; i < arr.length; i++) + for (int i = 0; i < arr.length; i++) - System.out.println("Elemento en el índice " + i + " : "+ arr[ i ]); + System.out.println("Elemento en el índice " + i + " : " + arr[i]); } diff --git a/intelliJ/src/j0005_ClaseDerivada/Business.java b/intelliJ/src/j0005_ClaseDerivada/Business.java index b3e1091..728dc1a 100644 --- a/intelliJ/src/j0005_ClaseDerivada/Business.java +++ b/intelliJ/src/j0005_ClaseDerivada/Business.java @@ -8,21 +8,24 @@ public class Business { protected int phone; // Cambiado a protected para el acceso en ClaseDerivada protected String address; // Cambiado a protected para el acceso en ClaseDerivada - // Constructores + // Constructor 0 parametres public Business() { employee = new Employee(); - phone = 900730222; - address = "Gran Via 33"; + phone = 222; + address = "Gran Via 222"; } + // Constructor 1 parametres. (Employee employee) en el constructor Business significa que, para crear un objeto Business, debes pasar un objeto de tipo Employee como argumento. public Business(Employee employee) { this(employee, 900730222, "Sol 1"); } + // Constructor 2 parametres public Business(int phone, String address) { this(new Employee(), phone, address); } + // Constructor 3 parametres public Business(Employee employee, int phone, String address) { this.employee = employee; this.phone = phone; @@ -39,4 +42,4 @@ public Date fechaNac(String fecha) throws ParseException { SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy"); return formato.parse(fecha); } -} +} \ No newline at end of file diff --git a/intelliJ/src/j0005_ClaseDerivada/Employee.java b/intelliJ/src/j0005_ClaseDerivada/Employee.java index c2c6652..ed2120a 100644 --- a/intelliJ/src/j0005_ClaseDerivada/Employee.java +++ b/intelliJ/src/j0005_ClaseDerivada/Employee.java @@ -2,20 +2,21 @@ import java.util.Date; public class Employee { - // Atributos +// Atributos private String passport; private String name; private double salary; - private Date birthDay; + private Date birthDay; - // Constructor por Defecto +// Constructor por Defecto public Employee() { this.passport = "100200300"; this.name = "John"; this.salary = 1000; this.birthDay = new Date(); } - // Constructor Parametrizado + +// Constructor Parametrizado public Employee(String passport, String name, double salary, Date fn) { this.passport = passport; this.name = name; @@ -23,7 +24,7 @@ public Employee(String passport, String name, double salary, Date fn) { this.birthDay = fn; } - // Métodos GET y SET +// Métodos GET y SET public String getPassport() { return passport; } public void setPassport(String passport) { this.passport = passport; } public String getName() { return name; } @@ -33,10 +34,12 @@ public Employee(String passport, String name, double salary, Date fn) { public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } - // Métodos +// Métodos public double horasExtras(double horas) { double PrecioHora = 11; double extras = horas * PrecioHora; return extras; } } + + diff --git a/intelliJ/src/j0005_ClaseDerivada/MainApp.java b/intelliJ/src/j0005_ClaseDerivada/MainApp.java index 53eb7da..37fe112 100644 --- a/intelliJ/src/j0005_ClaseDerivada/MainApp.java +++ b/intelliJ/src/j0005_ClaseDerivada/MainApp.java @@ -7,11 +7,20 @@ public static void main(String[] args) { Employee employee1 = new Employee(); System.out.println("Empleado1: " + employee1.getName() + ", " + employee1.getPassport() + ", " + employee1.getSalary() + ", " + employee1.getBirthDay()); - Date birthDay = new Date(); Employee employee2 = new Employee("12345678A", "Mery", 2000, birthDay); System.out.println("Empleado2: " + employee2.getName() + ", " + employee2.getPassport() + ", " + employee2.getSalary() + ", " + employee2.getBirthDay()); + // Instance Constructor 0 parametres + Business business0parametres = new Business(); + System.out.println( + "business0parametres phone: " + + business0parametres.phone + + "business0parametres name: " + + business0parametres.employee.getName() + ); + + // Instance Constructor 3 parametres Business business = new Business(employee2, 123456789, "Wall Street 100"); System.out.println("Empresa: " + business.employee.getName() + ", " + business.phone + ", " + business.address); @@ -20,19 +29,24 @@ public static void main(String[] args) { double horasExtras2 = employee1.horasExtras(10); System.out.println("Horas extras2: " + horasExtras2); + // Instance 3 1 + employee1.setName("Peter"); + System.out.println( + "Name: " + employee1.getName() + + " Phone: " + business.phone + ); + try { Date fechaFormateada = business.fechaNac("15/06/1985"); System.out.println("Fecha formateada: " + fechaFormateada); - } catch (ParseException e) { - e.printStackTrace(); - } + } catch (ParseException e) { + e.printStackTrace(); + } // Crear una instancia de ClaseDerivada y mostrar la información ClaseDerivada claseDerivada = new ClaseDerivada( employee2, 987654321, "Quinta Avenida 10"); claseDerivada.mostrarInformacion(); - ClaseDerivada claseDerivadaDefault = new ClaseDerivada(); - } -} +} \ No newline at end of file diff --git a/intelliJ/src/j0005_ClaseDerivada/test b/intelliJ/src/j0005_ClaseDerivada/test index 1eac04a..e69de29 100644 --- a/intelliJ/src/j0005_ClaseDerivada/test +++ b/intelliJ/src/j0005_ClaseDerivada/test @@ -1,7 +0,0 @@ -https://d138wa8fwgcz2d.cloudfront.net -/downloadable_products/ -es_ES -/ebooks/ -books/ -nuevo-corazon-de-la-sabiduria-67289shye4323/ -nuevocorazondelasabiduria_v_2.epub diff --git a/intelliJ/src/j0040_UF4_PAC1_2/Main.java b/intelliJ/src/j0040_UF4_PAC1_2/Main.java deleted file mode 100644 index 9a64d87..0000000 --- a/intelliJ/src/j0040_UF4_PAC1_2/Main.java +++ /dev/null @@ -1,2 +0,0 @@ -package j0040_UF4_PAC1_2; - diff --git a/intelliJ/src/j0040_UF4_PAC1_6/Main.java b/intelliJ/src/j0040_UF4_PAC1_6/Main.java index 395f04f..a9a24d3 100644 --- a/intelliJ/src/j0040_UF4_PAC1_6/Main.java +++ b/intelliJ/src/j0040_UF4_PAC1_6/Main.java @@ -15,7 +15,8 @@ public void obternerInformacion() { System.out.println("Edad: " + edad + " años"); System.out.println("Carrera: " + carrera); } - public void saludarProfesor(){ + + public void saludarProfesor() { System.out.println("Hola profesor, soy " + nombre + ". Hi man! \n"); } diff --git a/intelliJ/src/j0041_VT3/Persona.java b/intelliJ/src/j0041_VT3/Persona.java index 6d7b509..5d2918a 100644 --- a/intelliJ/src/j0041_VT3/Persona.java +++ b/intelliJ/src/j0041_VT3/Persona.java @@ -45,14 +45,12 @@ public void mayorEdad() { System.out.println("Es menor de edad"); } } - + public void mostrarDatos() { System.out.println("Nombre: "+this.getNombre()); System.out.println("Apellidos: "+this.getApellido1()+ " "+ this.getApellido2()); System.out.println("Sexo: "+this.getSexo()); System.out.println("Edad: "+this.getEdad()); } - - } diff --git a/intelliJ/src/j0043_VT03_Ejercicio2/Libro.java b/intelliJ/src/j0043_VT03_Ejercicio2/Libro.java index 3c1d7ed..72b9bd5 100644 --- a/intelliJ/src/j0043_VT03_Ejercicio2/Libro.java +++ b/intelliJ/src/j0043_VT03_Ejercicio2/Libro.java @@ -14,7 +14,6 @@ public Libro(String ISBN, String autor, String titulo, int year, String editoria this.ISBN = ISBN; this.autor = autor; this.titulo = titulo; - this.year = year; this.editorial = editorial; this.numeroPaginas = numeroPaginas; } @@ -22,6 +21,7 @@ public Libro(String ISBN, String autor, String titulo, int year, String editoria public void getLibro(){ System.out.println("ISBN: " + ISBN); System.out.println("autor: " + autor); + this.year = year; System.out.println("titulo: " + titulo); System.out.println("year: " + year); System.out.println("editorial: " + editorial ); diff --git a/intelliJ/src/j0050_VT06_Ejercicio_08_Procesador_Cadenas/Main.java b/intelliJ/src/j0050_VT06_Ejercicio_08_Procesador_Cadenas/Main.java new file mode 100644 index 0000000..1d37413 --- /dev/null +++ b/intelliJ/src/j0050_VT06_Ejercicio_08_Procesador_Cadenas/Main.java @@ -0,0 +1,76 @@ +package j0050_VT06_Ejercicio_08_Procesador_Cadenas; + +import java.util.Scanner; + +public class Main { + private String cadena; + + // Constructor que inicializa la cadena ingresada por el usuario + public Main(String cadena) { + this.cadena = cadena; + } + + // Método para contar el número de vocales en la cadena + public int contarVocales() { + int contador = 0; + for (int i = 0; i < cadena.length(); i++) { + char caracter = cadena.charAt(i); + if (Character.toLowerCase(caracter) == 'a' || Character.toLowerCase(caracter) == 'e' + || Character.toLowerCase(caracter) == 'i' || Character.toLowerCase(caracter) == 'o' + || Character.toLowerCase(caracter) == 'u') { + contador++; + } + } + return contador; + } + + // Método para invertir la cadena + public String invertirCadena() { + StringBuilder resultado = new StringBuilder(); + for (int i = cadena.length() - 1; i >= 0; i--) { + resultado.append(cadena.charAt(i)); + } + return resultado.toString(); + } + + // Método para contar el número de apariciones de un carácter en la cadena + public int contarApariciones(char caracter) { + int contador = 0; + for (int i = 0; i < cadena.length(); i++) { + if (cadena.charAt(i) == caracter) { + contador++; + } + } + return contador; + } + + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + // Pedir al usuario una cadena de caracteres + System.out.print("Introduce una cadena de caracteres: "); + String entrada = scanner.nextLine(); + + // Crear un objeto ProcesadorCadenas con la cadena ingresada + Main procesador = new Main(entrada); + + // Contar el número de vocales en la cadena + int numVocales = procesador.contarVocales(); + System.out.println("La cadena tiene " + numVocales + " vocales."); + + // Mostrar la cadena invertida + String cadenaInvertida = procesador.invertirCadena(); + System.out.println("La cadena invertida es: " + cadenaInvertida); + + // Pedir al usuario un carácter para buscar en la cadena + System.out.print("Introduce un carácter para buscar en la cadena: "); + char caracter = scanner.next().charAt(0); + + // Contar el número de apariciones del carácter en la cadena + int numApariciones = procesador.contarApariciones(caracter); + System.out.println("El carácter '" + caracter + "' aparece " + numApariciones + " veces en la cadena."); + + scanner.close(); + } +} + diff --git a/intelliJ/src/j0051_VT06_Ejercicio9_Geometria/Geometria.java b/intelliJ/src/j0051_VT06_Ejercicio9_Geometria/Geometria.java new file mode 100644 index 0000000..e914736 --- /dev/null +++ b/intelliJ/src/j0051_VT06_Ejercicio9_Geometria/Geometria.java @@ -0,0 +1,18 @@ +package j0051_VT06_Ejercicio9_Geometria; + +public class Geometria { + public static double areaCuadrado(int lado) { + return lado * lado; + } + + // Método para calcular el área de un círculo + public static double areaCirculo(int radio) { + return Math.PI * radio * radio; + } + + // Método para calcular el área de un triángulo + public static double areaTriangulo(int base, int altura) { + return (base * altura)/2; + } + +} diff --git a/intelliJ/src/j0051_VT06_Ejercicio9_Geometria/Main.java b/intelliJ/src/j0051_VT06_Ejercicio9_Geometria/Main.java new file mode 100644 index 0000000..63582a7 --- /dev/null +++ b/intelliJ/src/j0051_VT06_Ejercicio9_Geometria/Main.java @@ -0,0 +1,55 @@ +package j0051_VT06_Ejercicio9_Geometria; + +import java.util.Scanner; + +public class Main { + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + // Array para almacenar los resultados + int[] lado = new int[10]; + int[] radio = new int[10]; + int[][] baseAltura = new int[10][2]; + + // Solicitar al usuario los datos + System.out.println("Introduce los lados de los 10 cuadrados:"); + for (int i = 0; i < 10; i++) { + System.out.print("Lado " + i + ": "); + lado[i] = scanner.nextInt(); + System.out.println(); + } + System.out.println("Introduce los radios de los 10 círculos:"); + for (int i = 0; i < 10; i++) { + System.out.print("Radio " + i + ": "); + radio[i] = scanner.nextInt(); + System.out.println(); + } + System.out.println("Introduce las bases y alturas de los 10 triángulos:"); + for (int i = 0; i < 10; i++) { + System.out.print("Base " + i + ": "); + baseAltura[i][0] = scanner.nextInt(); + System.out.print("\tAltura: " + i + ": "); + baseAltura[i][1] = scanner.nextInt(); + System.out.println(); + } + + // Mostrar los resultados por consola + System.out.println("Áreas de los cuadrados:"); + for (int i = 0; i < 10; i++) { + System.out.print("Área Cuadrado " + i + ": "); + System.out.println(Geometria.areaCuadrado(lado[i])); + } + + System.out.println("Áreas de los círculos:"); + for (int i = 0; i < 10; i++) { + System.out.print("Área Círculo " + i + ": "); + System.out.println(Geometria.areaCirculo(radio[i])); + } + + System.out.println("Áreas de los triángulos:"); + for (int i = 0; i < 10; i++) { + System.out.print("Área Triángulo " + i + ": "); + System.out.println(Geometria.areaTriangulo(baseAltura[i][0],baseAltura[i][1])); + } + } +} diff --git a/intelliJ/src/j0052_VT06_Ejercicio10_Empleado/Empleado.java b/intelliJ/src/j0052_VT06_Ejercicio10_Empleado/Empleado.java new file mode 100644 index 0000000..fb3d6f5 --- /dev/null +++ b/intelliJ/src/j0052_VT06_Ejercicio10_Empleado/Empleado.java @@ -0,0 +1,29 @@ +package j0052_VT06_Ejercicio10_Empleado; + +public class Empleado { + private String nombre; + private double sueldo; + + // Constructor + public Empleado(String nombre, double sueldo) { + this.nombre = nombre; + this.sueldo = sueldo; + } + + // Getters y setters + public String getNombre() { + return nombre; + } + + public void setNombre(String nombre) { + this.nombre = nombre; + } + + public double getSueldo() { + return sueldo; + } + + public void setSueldo(double sueldo) { + this.sueldo = sueldo; + } +} \ No newline at end of file diff --git a/intelliJ/src/j0052_VT06_Ejercicio10_Empleado/Main.java b/intelliJ/src/j0052_VT06_Ejercicio10_Empleado/Main.java new file mode 100644 index 0000000..a6905f9 --- /dev/null +++ b/intelliJ/src/j0052_VT06_Ejercicio10_Empleado/Main.java @@ -0,0 +1,40 @@ +package j0052_VT06_Ejercicio10_Empleado; + +import java.util.Scanner; + +public class Main { + + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + // Crear un array para almacenar los empleados + Empleado[] empleados = new Empleado[5]; + + // Solicitar al usuario que ingrese el nombre y el sueldo de cada empleado + for (int i = 0; i < empleados.length; i++) { + System.out.println("Introduzca el nombre del empleado " + (i + 1) + ":"); + String nombre = scanner.nextLine(); + + System.out.println("Introduzcael sueldo del empleado " + (i + 1) + ":"); + double sueldo = scanner.nextDouble(); + scanner.nextLine(); // Limpiar el buffer del scanner + + // Crear un nuevo objeto Empleado y agregarlo al array + empleados[i] = new Empleado(nombre, sueldo); + } + + // Encontrar el empleado con el mayor sueldo + Empleado empleadoMayorSueldo = empleados[0]; + for (int i = 1; i < empleados.length; i++) { + if (empleados[i].getSueldo() > empleadoMayorSueldo.getSueldo()) { + empleadoMayorSueldo = empleados[i]; + } + } + + // Imprimir el nombre y el sueldo del empleado con mayor sueldo + System.out.println("Empleado con mayor sueldo:"); + System.out.println("Nombre: " + empleadoMayorSueldo.getNombre()); + System.out.println("Sueldo: " + empleadoMayorSueldo.getSueldo()); + } + +} diff --git a/intelliJ/src/j0053_VT06_Ejercicio_11_Matriz_Aleatoria/Main.java b/intelliJ/src/j0053_VT06_Ejercicio_11_Matriz_Aleatoria/Main.java new file mode 100644 index 0000000..ab80103 --- /dev/null +++ b/intelliJ/src/j0053_VT06_Ejercicio_11_Matriz_Aleatoria/Main.java @@ -0,0 +1,73 @@ +package j0053_VT06_Ejercicio_11_Matriz_Aleatoria; +import java.util.Random; + +public class Main { + private int[][] matriz; + + // Constructor que rellena la matriz con números aleatorios + public Main() { + matriz = new int[2][3]; + Random rand = new Random(); + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 3; j++) { + matriz[i][j] = rand.nextInt(10); // Números aleatorios entre 0 y 9 + } + } + } + + // Método para imprimir la matriz por consola + public void imprimirMatriz() { + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 3; j++) { + System.out.print(matriz[i][j] + "\t"); + } + System.out.println(); + } + } + + // Método para imprimir la matriz junto con la suma de sus elementos + public void imprimirMatrizConSumas() { + int total = 0; + for (int i = 0; i < 2; i++) { + for (int j = 0; j < 3; j++) { + System.out.print(matriz[i][j] + "\t"); + } + System.out.println(" | " + sumarFila(i)); + } + for (int j = 0; j < 30; j++) { + System.out.print("-"); + } + System.out.println(); + for (int j = 0; j < 3; j++) { + System.out.print(sumarColumna(j) + "\t"); + total += sumarColumna(j); + } + System.out.println(" | " + total); + } + + // Método para sumar los elementos de una fila + private int sumarFila(int fila) { + int suma = 0; + for (int j = 0; j < 3; j++) { + suma += matriz[fila][j]; + } + return suma; + } + + // Método para sumar los elementos de una columna + private int sumarColumna(int columna) { + int suma = 0; + for (int i = 0; i < 2; i++) { + suma += matriz[i][columna]; + } + return suma; + } + + public static void main(String[] args) { + Main main = new Main(); + System.out.println("Matriz:"); + main.imprimirMatriz(); + System.out.println("\nMatriz con sumas:"); + main.imprimirMatrizConSumas(); + } +} diff --git a/intelliJ/src/j0054_T08_Extends/Main.java b/intelliJ/src/j0054_T08_Extends/Main.java new file mode 100644 index 0000000..c284362 --- /dev/null +++ b/intelliJ/src/j0054_T08_Extends/Main.java @@ -0,0 +1,16 @@ +package j0054_T08_Extends; +public class Main { + protected String dni; + protected String nombre; + protected int edad; + + // Método para calcular la media de 3 notas + public double pacs(double pac1, double pac2, double pac3) { + return (pac1 + pac2 + pac3) / 3; + } + + // Método para calcular la media de 4 notas + public double pacs(double pac1, double pac2, double pac3, double pac4) { + return (pac1 + pac2 + pac3 + pac4) / 4; + } +} \ No newline at end of file diff --git a/intelliJ/src/j0054_T08_Extends/ProfesorInterino.java b/intelliJ/src/j0054_T08_Extends/ProfesorInterino.java new file mode 100644 index 0000000..2fe32b0 --- /dev/null +++ b/intelliJ/src/j0054_T08_Extends/ProfesorInterino.java @@ -0,0 +1,22 @@ +package j0054_T08_Extends; +public class ProfesorInterino extends Main { + // Constructor + public ProfesorInterino() { + super.dni = "45633254L"; + super.nombre = "Adrián García"; + super.edad = 29; + } + + // Método para calcular la nota media de 3 evaluaciones + public double getNotaMedia(double pac1, double pac2, double pac3) { + double notaMedia = super.pacs(pac1, pac2, pac3); + System.out.println("Nota media del Profesor Interino: " + notaMedia); + return notaMedia; + } + + // Main para pruebas + public static void main(String[] args) { + ProfesorInterino p = new ProfesorInterino(); + System.out.println(p.getNotaMedia(6.5, 7, 8)); + } +} diff --git a/intelliJ/src/j0054_T08_Extends/ProfesorOficial.java b/intelliJ/src/j0054_T08_Extends/ProfesorOficial.java new file mode 100644 index 0000000..d670b97 --- /dev/null +++ b/intelliJ/src/j0054_T08_Extends/ProfesorOficial.java @@ -0,0 +1,29 @@ +package j0054_T08_Extends; +public class ProfesorOficial extends Main { + // Constructor + public ProfesorOficial() { + super.dni = "48566221F"; + super.nombre = "Ana Gomez"; + super.edad = 35; + } + + // Método para calcular la nota media de 4 evaluaciones + public double getNotaMedia(double pac1, double pac2, double pac3, double pac4) { + double notaMedia = pacs(pac1, pac2, pac3, pac4); + System.out.println("Nota media del Profesor Oficial: " + notaMedia); + return notaMedia; + } + + // Método sobrescrito de la clase padre, es el 60% de la nota final + @Override + public double pacs(double pac1, double pac2, double pac3, double pac4) { + double notaFinal = ((pac1 + pac2 + pac3 + pac4) / 4) * 0.6; + return notaFinal; + } + + // Main para pruebas + public static void main(String[] args) { + ProfesorOficial p = new ProfesorOficial(); + p.getNotaMedia(7.5, 8, 9, 10); + } +} diff --git a/intelliJ/src/test/ErrorLoginException.java b/intelliJ/src/test/ErrorLoginException.java deleted file mode 100644 index e159b1d..0000000 --- a/intelliJ/src/test/ErrorLoginException.java +++ /dev/null @@ -1,21 +0,0 @@ -package test; - -// Definición de la excepción personalizada para errores de login -class ErrorLoginException extends Exception { - String sms; - - // Constructor por defecto con un mensaje predefinido - public ErrorLoginException() { - this.sms = "El usuario o contraseña no son válidos"; - } - - // Constructor que permite personalizar el mensaje de error - public ErrorLoginException(String sms) { - this.sms = sms; - } - - @Override - public String getMessage() { - return sms; - } -} diff --git a/intelliJ/src/test/Main.java b/intelliJ/src/test/Main.java index e69de29..b17d8b9 100644 --- a/intelliJ/src/test/Main.java +++ b/intelliJ/src/test/Main.java @@ -0,0 +1,9 @@ +package test; +public class Main{ + protected String dni; + protected String name; + + public double pacs(double pac1, double pac2, double pac3, double pac4){ + return (pac1 + pac2 + pac3)/3; + } +} \ No newline at end of file diff --git a/intelliJ/src/test/PI.java b/intelliJ/src/test/PI.java new file mode 100644 index 0000000..e69de29 diff --git a/intelliJ/src/test/PO.java b/intelliJ/src/test/PO.java new file mode 100644 index 0000000..77f1be3 --- /dev/null +++ b/intelliJ/src/test/PO.java @@ -0,0 +1,23 @@ +package test; +public class PO extends Main{ + public PO(){ + super.dni = "123"; + super.name = "john"; + } + public double getNotaMedia(double pac1, double pac2, double pac3, double pac4){ + double notaMedia = pacs(pac1, pac2, pac3, pac4); + System.out.println("nota media: " + notaMedia); + return notaMedia; + } + + @Override + public double pacs(double pac1, double pac2, double pac3, double pac4){ + double notaFinal = ((pac1 + pac2 + pac3 + pac4) / 4) * 0.6; + return notaFinal; + } + + public static void main(String[] args) { + PO p = new PO(); + p.getNotaMedia(7,8,9,10); + } +} \ No newline at end of file diff --git a/intelliJ/src/test/test.txt b/intelliJ/src/test/test.txt deleted file mode 100644 index 4b469a9..0000000 --- a/intelliJ/src/test/test.txt +++ /dev/null @@ -1,7 +0,0 @@ - -2024-07-19 18:23:16 -2024-07-19 18:23:29 -2024-07-20 17:35:29 -2024-07-20 17:35:36 -2024-07-20 17:35:53 -2024-07-20 17:35:56 From 982c4b7eca18561ba4befc69fde1cfc33be296aa Mon Sep 17 00:00:00 2001 From: fireDevelop Date: Sun, 17 Nov 2024 14:01:40 +0100 Subject: [PATCH 5/8] . . --- .../.idea/libraries/KotlinJavaRuntime.xml | 7 +++ intelliJ/src/j0000_INDEX/INDEX.txt | 3 ++ .../Main.java | 2 +- .../ProfesorInterino.java | 2 +- .../ProfesorOficial.java | 2 +- .../Animal.java | 25 +++++++++ .../Gato.java | 18 +++++++ .../Main.java | 19 +++++++ .../Perro.java | 27 ++++++++++ .../Animal.java | 20 +++++++ .../ComportamientoAnimal.java | 7 +++ .../Gato.java | 19 +++++++ .../Main.java | 20 +++++++ .../Perro.java | 33 ++++++++++++ .../README.md | 31 +++++++++++ .../Main.java | 2 +- .../Geometria.java | 2 +- .../Main.java | 2 +- .../j0052_VT06_Ejercicio10_Empleado/Main.java | 40 -------------- .../Empleado.java | 2 +- .../Main.java | 50 ++++++++++++++++++ .../SueldoNoValidoException.java | 11 ++++ .../Main.java | 2 +- .../Main.java | 44 ++++++++++++++++ .../Main.java | 45 ++++++++++++++++ .../Main.java | 52 +++++++++++++++++++ .../Main.java | 45 ++++++++++++++++ .../README.md | 2 + 28 files changed, 486 insertions(+), 48 deletions(-) create mode 100644 intelliJ/.idea/libraries/KotlinJavaRuntime.xml create mode 100644 intelliJ/src/j0000_INDEX/INDEX.txt rename intelliJ/src/{j0054_T08_Extends => j0049_T08_Extends}/Main.java (94%) rename intelliJ/src/{j0054_T08_Extends => j0049_T08_Extends}/ProfesorInterino.java (96%) rename intelliJ/src/{j0054_T08_Extends => j0049_T08_Extends}/ProfesorOficial.java (97%) create mode 100644 intelliJ/src/j0050_T08_VT06_Ejercicio04_Animal/Animal.java create mode 100644 intelliJ/src/j0050_T08_VT06_Ejercicio04_Animal/Gato.java create mode 100644 intelliJ/src/j0050_T08_VT06_Ejercicio04_Animal/Main.java create mode 100644 intelliJ/src/j0050_T08_VT06_Ejercicio04_Animal/Perro.java create mode 100644 intelliJ/src/j0050_T08_VT06_Ejercicio07_Animal/Animal.java create mode 100644 intelliJ/src/j0050_T08_VT06_Ejercicio07_Animal/ComportamientoAnimal.java create mode 100644 intelliJ/src/j0050_T08_VT06_Ejercicio07_Animal/Gato.java create mode 100644 intelliJ/src/j0050_T08_VT06_Ejercicio07_Animal/Main.java create mode 100644 intelliJ/src/j0050_T08_VT06_Ejercicio07_Animal/Perro.java create mode 100644 intelliJ/src/j0050_T08_VT06_Ejercicio07_Animal/README.md rename intelliJ/src/{j0050_VT06_Ejercicio_08_Procesador_Cadenas => j0051_T09_VT06_Ejercicio08_Procesador_Cadenas}/Main.java (97%) rename intelliJ/src/{j0051_VT06_Ejercicio9_Geometria => j0052_T09_VT06_Ejercicio09_Geometria}/Geometria.java (90%) rename intelliJ/src/{j0051_VT06_Ejercicio9_Geometria => j0052_T09_VT06_Ejercicio09_Geometria}/Main.java (97%) delete mode 100644 intelliJ/src/j0052_VT06_Ejercicio10_Empleado/Main.java rename intelliJ/src/{j0052_VT06_Ejercicio10_Empleado => j0053_T09_VT06_Ejercicio10_Empleado}/Empleado.java (92%) create mode 100644 intelliJ/src/j0053_T09_VT06_Ejercicio10_Empleado/Main.java create mode 100644 intelliJ/src/j0053_T09_VT06_Ejercicio10_Empleado/SueldoNoValidoException.java rename intelliJ/src/{j0053_VT06_Ejercicio_11_Matriz_Aleatoria => j0054_T09_VT06_Ejercicio_11A_Matriz_Aleatoria}/Main.java (97%) create mode 100644 intelliJ/src/j0055_T09_VT06_Ejercicio_11B_ArrayList/Main.java create mode 100644 intelliJ/src/j0056_T09_VT06_Ejercicio_11C_LinkedList/Main.java create mode 100644 intelliJ/src/j0057_T09_VT06_Ejercicio_11D_ArrayList_LinkedList_Iterator/Main.java create mode 100644 intelliJ/src/j0059_T10_VT07_Ejercicio_12B_Exception_Mail/Main.java create mode 100644 intelliJ/src/j0060_T10_VT07_Ejercicio_12A_Exceptions/README.md diff --git a/intelliJ/.idea/libraries/KotlinJavaRuntime.xml b/intelliJ/.idea/libraries/KotlinJavaRuntime.xml new file mode 100644 index 0000000..d2eaa8c --- /dev/null +++ b/intelliJ/.idea/libraries/KotlinJavaRuntime.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/intelliJ/src/j0000_INDEX/INDEX.txt b/intelliJ/src/j0000_INDEX/INDEX.txt new file mode 100644 index 0000000..a62544c --- /dev/null +++ b/intelliJ/src/j0000_INDEX/INDEX.txt @@ -0,0 +1,3 @@ +Main Packages to study: + +j0050_T08_VT06_Ejercicio07_Animal \ No newline at end of file diff --git a/intelliJ/src/j0054_T08_Extends/Main.java b/intelliJ/src/j0049_T08_Extends/Main.java similarity index 94% rename from intelliJ/src/j0054_T08_Extends/Main.java rename to intelliJ/src/j0049_T08_Extends/Main.java index c284362..eda5b64 100644 --- a/intelliJ/src/j0054_T08_Extends/Main.java +++ b/intelliJ/src/j0049_T08_Extends/Main.java @@ -1,4 +1,4 @@ -package j0054_T08_Extends; +package j0049_T08_Extends; public class Main { protected String dni; protected String nombre; diff --git a/intelliJ/src/j0054_T08_Extends/ProfesorInterino.java b/intelliJ/src/j0049_T08_Extends/ProfesorInterino.java similarity index 96% rename from intelliJ/src/j0054_T08_Extends/ProfesorInterino.java rename to intelliJ/src/j0049_T08_Extends/ProfesorInterino.java index 2fe32b0..59231ab 100644 --- a/intelliJ/src/j0054_T08_Extends/ProfesorInterino.java +++ b/intelliJ/src/j0049_T08_Extends/ProfesorInterino.java @@ -1,4 +1,4 @@ -package j0054_T08_Extends; +package j0049_T08_Extends; public class ProfesorInterino extends Main { // Constructor public ProfesorInterino() { diff --git a/intelliJ/src/j0054_T08_Extends/ProfesorOficial.java b/intelliJ/src/j0049_T08_Extends/ProfesorOficial.java similarity index 97% rename from intelliJ/src/j0054_T08_Extends/ProfesorOficial.java rename to intelliJ/src/j0049_T08_Extends/ProfesorOficial.java index d670b97..f2594d3 100644 --- a/intelliJ/src/j0054_T08_Extends/ProfesorOficial.java +++ b/intelliJ/src/j0049_T08_Extends/ProfesorOficial.java @@ -1,4 +1,4 @@ -package j0054_T08_Extends; +package j0049_T08_Extends; public class ProfesorOficial extends Main { // Constructor public ProfesorOficial() { diff --git a/intelliJ/src/j0050_T08_VT06_Ejercicio04_Animal/Animal.java b/intelliJ/src/j0050_T08_VT06_Ejercicio04_Animal/Animal.java new file mode 100644 index 0000000..d754138 --- /dev/null +++ b/intelliJ/src/j0050_T08_VT06_Ejercicio04_Animal/Animal.java @@ -0,0 +1,25 @@ +package j0050_T08_VT06_Ejercicio04_Animal; +public class Animal { + private String color; + private String nombre; + private int edad; + + // Constructor + public Animal(String color, String nombre, int edad) { + this.color = color; + this.nombre = nombre; + this.edad = edad; + } + + public void comer() { + System.out.println("Comiendo..."); + } + + public void dormir() { + System.out.println("ZzZzZz"); + } + + public void emitirSonido() { + System.out.println("Sonido!"); + } +} \ No newline at end of file diff --git a/intelliJ/src/j0050_T08_VT06_Ejercicio04_Animal/Gato.java b/intelliJ/src/j0050_T08_VT06_Ejercicio04_Animal/Gato.java new file mode 100644 index 0000000..136e3b7 --- /dev/null +++ b/intelliJ/src/j0050_T08_VT06_Ejercicio04_Animal/Gato.java @@ -0,0 +1,18 @@ +package j0050_T08_VT06_Ejercicio04_Animal; +public class Gato extends Animal { + public Gato(String color, String nombre, int edad) { + super(color, nombre, edad); + } + + // Sobrescribir emitirSonido + @Override + public void emitirSonido() { + System.out.println("Miau!"); + } + + // Sobrescribir comer + @Override + public void comer() { + System.out.println("Comiendo pescado"); + } +} \ No newline at end of file diff --git a/intelliJ/src/j0050_T08_VT06_Ejercicio04_Animal/Main.java b/intelliJ/src/j0050_T08_VT06_Ejercicio04_Animal/Main.java new file mode 100644 index 0000000..cb6f492 --- /dev/null +++ b/intelliJ/src/j0050_T08_VT06_Ejercicio04_Animal/Main.java @@ -0,0 +1,19 @@ +package j0050_T08_VT06_Ejercicio04_Animal; +// Clase principal con método main +public class Main { + public static void main(String[] args) { + // Instanciar un perro + Perro perro = new Perro("Marrón", "Bobby", 3, "Labrador"); + System.out.println("=== Perro ==="); + perro.comer(); + perro.dormir(); + perro.emitirSonido(); + + // Instanciar un gato + Gato gato = new Gato("Negro", "Michi", 2); + System.out.println("\n=== Gato ==="); + gato.comer(); + gato.dormir(); + gato.emitirSonido(); + } +} \ No newline at end of file diff --git a/intelliJ/src/j0050_T08_VT06_Ejercicio04_Animal/Perro.java b/intelliJ/src/j0050_T08_VT06_Ejercicio04_Animal/Perro.java new file mode 100644 index 0000000..0a3661e --- /dev/null +++ b/intelliJ/src/j0050_T08_VT06_Ejercicio04_Animal/Perro.java @@ -0,0 +1,27 @@ +package j0050_T08_VT06_Ejercicio04_Animal; +// Clase derivada Perro +public class Perro extends Animal { + private String raza; + + // Constructor con raza + public Perro(String color, String nombre, int edad, String raza) { + super(color, nombre, edad); + this.raza = raza; + } + + // Constructor sin raza + public Perro(String color, String nombre, int edad) { + super(color, nombre, edad); + } + + // Getter para raza + public String getRaza() { + return raza; + } + + // Sobrescribir emitirSonido + @Override + public void emitirSonido() { + System.out.println("Guau!"); + } +} diff --git a/intelliJ/src/j0050_T08_VT06_Ejercicio07_Animal/Animal.java b/intelliJ/src/j0050_T08_VT06_Ejercicio07_Animal/Animal.java new file mode 100644 index 0000000..1721449 --- /dev/null +++ b/intelliJ/src/j0050_T08_VT06_Ejercicio07_Animal/Animal.java @@ -0,0 +1,20 @@ +package j0050_T08_VT06_Ejercicio07_Animal; + +// Clase abstracta base +public abstract class Animal { + private String color; + private String nombre; + private int edad; + + // Constructor + public Animal(String color, String nombre, int edad) { + this.color = color; + this.nombre = nombre; + this.edad = edad; + } + + // Método común para todas las clases derivadas + public void dormir() { + System.out.println("ZzZzZz"); + } +} diff --git a/intelliJ/src/j0050_T08_VT06_Ejercicio07_Animal/ComportamientoAnimal.java b/intelliJ/src/j0050_T08_VT06_Ejercicio07_Animal/ComportamientoAnimal.java new file mode 100644 index 0000000..da9cd16 --- /dev/null +++ b/intelliJ/src/j0050_T08_VT06_Ejercicio07_Animal/ComportamientoAnimal.java @@ -0,0 +1,7 @@ +package j0050_T08_VT06_Ejercicio07_Animal; + +// Interfaz para comportamientos de animales +public interface ComportamientoAnimal { + void comer(); + void emitirSonido(); +} diff --git a/intelliJ/src/j0050_T08_VT06_Ejercicio07_Animal/Gato.java b/intelliJ/src/j0050_T08_VT06_Ejercicio07_Animal/Gato.java new file mode 100644 index 0000000..d7566f8 --- /dev/null +++ b/intelliJ/src/j0050_T08_VT06_Ejercicio07_Animal/Gato.java @@ -0,0 +1,19 @@ +package j0050_T08_VT06_Ejercicio07_Animal; + +// Clase Gato que hereda de Animal e implementa ComportamientoAnimal +public class Gato extends Animal implements ComportamientoAnimal { + public Gato(String color, String nombre, int edad) { + super(color, nombre, edad); + } + + // Implementación de los métodos de la interfaz + @Override + public void emitirSonido() { + System.out.println("Miau!"); + } + + @Override + public void comer() { + System.out.println("Comiendo pescado"); + } +} diff --git a/intelliJ/src/j0050_T08_VT06_Ejercicio07_Animal/Main.java b/intelliJ/src/j0050_T08_VT06_Ejercicio07_Animal/Main.java new file mode 100644 index 0000000..e4d7cf1 --- /dev/null +++ b/intelliJ/src/j0050_T08_VT06_Ejercicio07_Animal/Main.java @@ -0,0 +1,20 @@ +package j0050_T08_VT06_Ejercicio07_Animal; + +// Clase principal con método main +public class Main { + public static void main(String[] args) { + // Instanciar un perro + Perro perro = new Perro("Marrón", "Bobby", 3, "Labrador"); + System.out.println("=== Perro ==="); + perro.comer(); + perro.dormir(); + perro.emitirSonido(); + + // Instanciar un gato + Gato gato = new Gato("Negro", "Michi", 2); + System.out.println("\n=== Gato ==="); + gato.comer(); + gato.dormir(); + gato.emitirSonido(); + } +} \ No newline at end of file diff --git a/intelliJ/src/j0050_T08_VT06_Ejercicio07_Animal/Perro.java b/intelliJ/src/j0050_T08_VT06_Ejercicio07_Animal/Perro.java new file mode 100644 index 0000000..77405cd --- /dev/null +++ b/intelliJ/src/j0050_T08_VT06_Ejercicio07_Animal/Perro.java @@ -0,0 +1,33 @@ +package j0050_T08_VT06_Ejercicio07_Animal; + +// Clase Perro que hereda de Animal e implementa ComportamientoAnimal +public class Perro extends Animal implements ComportamientoAnimal { + private String raza; + + // Constructor con raza + public Perro(String color, String nombre, int edad, String raza) { + super(color, nombre, edad); + this.raza = raza; + } + + // Constructor sin raza + public Perro(String color, String nombre, int edad) { + super(color, nombre, edad); + } + + // Getter para raza + public String getRaza() { + return raza; + } + + // Implementación de los métodos de la interfaz + @Override + public void emitirSonido() { + System.out.println("Guau!"); + } + + @Override + public void comer() { + System.out.println("Comiendo..."); + } +} diff --git a/intelliJ/src/j0050_T08_VT06_Ejercicio07_Animal/README.md b/intelliJ/src/j0050_T08_VT06_Ejercicio07_Animal/README.md new file mode 100644 index 0000000..c76a70b --- /dev/null +++ b/intelliJ/src/j0050_T08_VT06_Ejercicio07_Animal/README.md @@ -0,0 +1,31 @@ + +¿Por qué la clase Animal es abstracta? + +La clase `Animal` es abstracta porque sirve como una clase base genérica que +define características comunes para otras clases más específicas (como `Perro` y `Gato`), +pero no tiene sentido instanciarla directamente. En otras palabras, `Animal` es un +concepto general que actúa como una plantilla para las clases derivadas. + +Puntos clave: +1. **Propiedades comunes**: + - `color` + - `nombre` + - `edad` + Estas propiedades son relevantes para cualquier tipo de animal, pero no son + específicas como para justificar la creación de una instancia de `Animal`. + +2. **Método concreto común**: + - `dormir()`: Todos los animales comparten la capacidad de dormir, por lo que este + comportamiento está implementado directamente en la clase `Animal`. + +3. **Clase abstracta en lugar de concreta**: + - Aunque `Animal` no contiene métodos abstractos (métodos que deben implementar las subclases), + se declara como `abstract` para evitar que pueda ser instanciada directamente. + - Cualquier intento de crear una instancia de `Animal` (por ejemplo, `new Animal(...)`) + generará un error de compilación. Esto asegura que los desarrolladores utilicen las + clases derivadas específicas como `Perro` o `Gato` para crear objetos. + +Este diseño combina la herencia para compartir características generales (`Animal`) con +la flexibilidad de definir comportamientos específicos en las subclases a través de la interfaz +`ComportamientoAnimal` y las implementaciones respectivas en cada subclase. + diff --git a/intelliJ/src/j0050_VT06_Ejercicio_08_Procesador_Cadenas/Main.java b/intelliJ/src/j0051_T09_VT06_Ejercicio08_Procesador_Cadenas/Main.java similarity index 97% rename from intelliJ/src/j0050_VT06_Ejercicio_08_Procesador_Cadenas/Main.java rename to intelliJ/src/j0051_T09_VT06_Ejercicio08_Procesador_Cadenas/Main.java index 1d37413..233bf66 100644 --- a/intelliJ/src/j0050_VT06_Ejercicio_08_Procesador_Cadenas/Main.java +++ b/intelliJ/src/j0051_T09_VT06_Ejercicio08_Procesador_Cadenas/Main.java @@ -1,4 +1,4 @@ -package j0050_VT06_Ejercicio_08_Procesador_Cadenas; +package j0051_T09_VT06_Ejercicio08_Procesador_Cadenas; import java.util.Scanner; diff --git a/intelliJ/src/j0051_VT06_Ejercicio9_Geometria/Geometria.java b/intelliJ/src/j0052_T09_VT06_Ejercicio09_Geometria/Geometria.java similarity index 90% rename from intelliJ/src/j0051_VT06_Ejercicio9_Geometria/Geometria.java rename to intelliJ/src/j0052_T09_VT06_Ejercicio09_Geometria/Geometria.java index e914736..d2a14fe 100644 --- a/intelliJ/src/j0051_VT06_Ejercicio9_Geometria/Geometria.java +++ b/intelliJ/src/j0052_T09_VT06_Ejercicio09_Geometria/Geometria.java @@ -1,4 +1,4 @@ -package j0051_VT06_Ejercicio9_Geometria; +package j0052_T09_VT06_Ejercicio09_Geometria; public class Geometria { public static double areaCuadrado(int lado) { diff --git a/intelliJ/src/j0051_VT06_Ejercicio9_Geometria/Main.java b/intelliJ/src/j0052_T09_VT06_Ejercicio09_Geometria/Main.java similarity index 97% rename from intelliJ/src/j0051_VT06_Ejercicio9_Geometria/Main.java rename to intelliJ/src/j0052_T09_VT06_Ejercicio09_Geometria/Main.java index 63582a7..29ee664 100644 --- a/intelliJ/src/j0051_VT06_Ejercicio9_Geometria/Main.java +++ b/intelliJ/src/j0052_T09_VT06_Ejercicio09_Geometria/Main.java @@ -1,4 +1,4 @@ -package j0051_VT06_Ejercicio9_Geometria; +package j0052_T09_VT06_Ejercicio09_Geometria; import java.util.Scanner; diff --git a/intelliJ/src/j0052_VT06_Ejercicio10_Empleado/Main.java b/intelliJ/src/j0052_VT06_Ejercicio10_Empleado/Main.java deleted file mode 100644 index a6905f9..0000000 --- a/intelliJ/src/j0052_VT06_Ejercicio10_Empleado/Main.java +++ /dev/null @@ -1,40 +0,0 @@ -package j0052_VT06_Ejercicio10_Empleado; - -import java.util.Scanner; - -public class Main { - - public static void main(String[] args) { - Scanner scanner = new Scanner(System.in); - - // Crear un array para almacenar los empleados - Empleado[] empleados = new Empleado[5]; - - // Solicitar al usuario que ingrese el nombre y el sueldo de cada empleado - for (int i = 0; i < empleados.length; i++) { - System.out.println("Introduzca el nombre del empleado " + (i + 1) + ":"); - String nombre = scanner.nextLine(); - - System.out.println("Introduzcael sueldo del empleado " + (i + 1) + ":"); - double sueldo = scanner.nextDouble(); - scanner.nextLine(); // Limpiar el buffer del scanner - - // Crear un nuevo objeto Empleado y agregarlo al array - empleados[i] = new Empleado(nombre, sueldo); - } - - // Encontrar el empleado con el mayor sueldo - Empleado empleadoMayorSueldo = empleados[0]; - for (int i = 1; i < empleados.length; i++) { - if (empleados[i].getSueldo() > empleadoMayorSueldo.getSueldo()) { - empleadoMayorSueldo = empleados[i]; - } - } - - // Imprimir el nombre y el sueldo del empleado con mayor sueldo - System.out.println("Empleado con mayor sueldo:"); - System.out.println("Nombre: " + empleadoMayorSueldo.getNombre()); - System.out.println("Sueldo: " + empleadoMayorSueldo.getSueldo()); - } - -} diff --git a/intelliJ/src/j0052_VT06_Ejercicio10_Empleado/Empleado.java b/intelliJ/src/j0053_T09_VT06_Ejercicio10_Empleado/Empleado.java similarity index 92% rename from intelliJ/src/j0052_VT06_Ejercicio10_Empleado/Empleado.java rename to intelliJ/src/j0053_T09_VT06_Ejercicio10_Empleado/Empleado.java index fb3d6f5..ff80206 100644 --- a/intelliJ/src/j0052_VT06_Ejercicio10_Empleado/Empleado.java +++ b/intelliJ/src/j0053_T09_VT06_Ejercicio10_Empleado/Empleado.java @@ -1,4 +1,4 @@ -package j0052_VT06_Ejercicio10_Empleado; +package j0053_T09_VT06_Ejercicio10_Empleado; public class Empleado { private String nombre; diff --git a/intelliJ/src/j0053_T09_VT06_Ejercicio10_Empleado/Main.java b/intelliJ/src/j0053_T09_VT06_Ejercicio10_Empleado/Main.java new file mode 100644 index 0000000..b28ebcc --- /dev/null +++ b/intelliJ/src/j0053_T09_VT06_Ejercicio10_Empleado/Main.java @@ -0,0 +1,50 @@ +package j0053_T09_VT06_Ejercicio10_Empleado; + +import java.util.InputMismatchException; +import java.util.Scanner; + +public class Main { + + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + // Crear un array para almacenar los empleados + Empleado[] empleados = new Empleado[5]; + + // Solicitar al usuario que ingrese el nombre y el sueldo de cada empleado + for (int i = 0; i < empleados.length; i++) { + try { + System.out.println("Introduzca el nombre del empleado " + (i + 1) + ":"); + String nombre = scanner.nextLine(); + + System.out.println("Introduzca el sueldo del empleado " + (i + 1) + ":"); + if (!scanner.hasNextDouble()) { + throw new SueldoNoValidoException("El sueldo introducido no es un número válido."); + } + double sueldo = scanner.nextDouble(); + scanner.nextLine(); // Limpiar el buffer del scanner + + // Crear un nuevo objeto Empleado y agregarlo al array + empleados[i] = new Empleado(nombre, sueldo); + + } catch (SueldoNoValidoException | InputMismatchException e) { + System.out.println("Error: " + e.getMessage()); + scanner.nextLine(); // Limpiar el buffer si hay un error + i--; // Repetir el ciclo para el mismo empleado + } + } + + // Encontrar el empleado con el mayor sueldo + Empleado empleadoMayorSueldo = empleados[0]; + for (int i = 1; i < empleados.length; i++) { + if (empleados[i].getSueldo() > empleadoMayorSueldo.getSueldo()) { + empleadoMayorSueldo = empleados[i]; + } + } + + // Imprimir el nombre y el sueldo del empleado con mayor sueldo + System.out.println("Empleado con mayor sueldo:"); + System.out.println("Nombre: " + empleadoMayorSueldo.getNombre()); + System.out.println("Sueldo: " + empleadoMayorSueldo.getSueldo()); + } +} diff --git a/intelliJ/src/j0053_T09_VT06_Ejercicio10_Empleado/SueldoNoValidoException.java b/intelliJ/src/j0053_T09_VT06_Ejercicio10_Empleado/SueldoNoValidoException.java new file mode 100644 index 0000000..a5db2ac --- /dev/null +++ b/intelliJ/src/j0053_T09_VT06_Ejercicio10_Empleado/SueldoNoValidoException.java @@ -0,0 +1,11 @@ +package j0053_T09_VT06_Ejercicio10_Empleado; + +public class SueldoNoValidoException extends Exception { + public SueldoNoValidoException() { + super("Sueldo no válido."); + } + + public SueldoNoValidoException(String mensaje) { + super(mensaje); + } +} diff --git a/intelliJ/src/j0053_VT06_Ejercicio_11_Matriz_Aleatoria/Main.java b/intelliJ/src/j0054_T09_VT06_Ejercicio_11A_Matriz_Aleatoria/Main.java similarity index 97% rename from intelliJ/src/j0053_VT06_Ejercicio_11_Matriz_Aleatoria/Main.java rename to intelliJ/src/j0054_T09_VT06_Ejercicio_11A_Matriz_Aleatoria/Main.java index ab80103..a921987 100644 --- a/intelliJ/src/j0053_VT06_Ejercicio_11_Matriz_Aleatoria/Main.java +++ b/intelliJ/src/j0054_T09_VT06_Ejercicio_11A_Matriz_Aleatoria/Main.java @@ -1,4 +1,4 @@ -package j0053_VT06_Ejercicio_11_Matriz_Aleatoria; +package j0054_T09_VT06_Ejercicio_11A_Matriz_Aleatoria; import java.util.Random; public class Main { diff --git a/intelliJ/src/j0055_T09_VT06_Ejercicio_11B_ArrayList/Main.java b/intelliJ/src/j0055_T09_VT06_Ejercicio_11B_ArrayList/Main.java new file mode 100644 index 0000000..95789ec --- /dev/null +++ b/intelliJ/src/j0055_T09_VT06_Ejercicio_11B_ArrayList/Main.java @@ -0,0 +1,44 @@ +package j0055_T09_VT06_Ejercicio_11B_ArrayList; + +import java.util.ArrayList; + +public class Main { + public static void main(String[] args) { + // Declarar un ArrayList de caracteres + ArrayList lista = new ArrayList<>(); + + // Insertar tres caracteres: c, d y f + lista.add('c'); + lista.add('d'); + lista.add('f'); + System.out.println("Lista inicial: " + lista); + + // Añadir los caracteres a y b al principio de la lista + lista.add(0, 'b'); + lista.add(0, 'a'); + System.out.println("Lista después de añadir a y b al principio: " + lista); + + // Añadir un carácter g al final de la lista + lista.add('g'); + System.out.println("Lista después de añadir g al final: " + lista); + + // Añadir un carácter e entre los caracteres d y f + lista.add(4, 'e'); // Índice 4 entre d (índice 3) y f (índice 4 original) + System.out.println("Lista después de añadir e entre d y f: " + lista); + + // Eliminar el carácter de la tercera posición (índice 2) + lista.remove(2); + System.out.println("Lista después de eliminar el carácter en la posición 3 (índice 2): " + lista); + } +} + +/* +OUTPUT: +Lista inicial: [c, d, f] +Lista después de añadir a y b al principio: [a, b, c, d, f] +Lista después de añadir g al final: [a, b, c, d, f, g] +Lista después de añadir e entre d y f: [a, b, c, d, e, f, g] +Lista después de eliminar el carácter en la posición 3 (índice 2): [a, b, d, e, f, g] + + + */ \ No newline at end of file diff --git a/intelliJ/src/j0056_T09_VT06_Ejercicio_11C_LinkedList/Main.java b/intelliJ/src/j0056_T09_VT06_Ejercicio_11C_LinkedList/Main.java new file mode 100644 index 0000000..07cba42 --- /dev/null +++ b/intelliJ/src/j0056_T09_VT06_Ejercicio_11C_LinkedList/Main.java @@ -0,0 +1,45 @@ +package j0056_T09_VT06_Ejercicio_11C_LinkedList; + +import java.util.LinkedList; + +public class Main { + public static void main(String[] args) { + // Declarar un LinkedList de caracteres + LinkedList lista = new LinkedList<>(); + + // Insertar tres caracteres: c, d y f + lista.add('c'); + lista.add('d'); + lista.add('f'); + System.out.println("Lista inicial: " + lista); + + // Añadir los caracteres a y b al principio de la lista + lista.addFirst('b'); + lista.addFirst('a'); + System.out.println("Lista después de añadir a y b al principio: " + lista); + + // Añadir un carácter g al final de la lista + lista.addLast('g'); + System.out.println("Lista después de añadir g al final: " + lista); + + // Añadir un carácter e entre los caracteres d y f + lista.add(4, 'e'); // Índice 4 entre d (índice 3) y f (índice 4 original) + System.out.println("Lista después de añadir e entre d y f: " + lista); + + // Eliminar el carácter de la tercera posición (índice 2) + lista.remove(2); + System.out.println("Lista después de eliminar el carácter en la posición 3 (índice 2): " + lista); + } +} + + +/* +OUTPUT: + +Lista inicial: [c, d, f] +Lista después de añadir a y b al principio: [a, b, c, d, f] +Lista después de añadir g al final: [a, b, c, d, f, g] +Lista después de añadir e entre d y f: [a, b, c, d, e, f, g] +Lista después de eliminar el carácter en la posición 3 (índice 2): [a, b, d, e, f, g] + + */ \ No newline at end of file diff --git a/intelliJ/src/j0057_T09_VT06_Ejercicio_11D_ArrayList_LinkedList_Iterator/Main.java b/intelliJ/src/j0057_T09_VT06_Ejercicio_11D_ArrayList_LinkedList_Iterator/Main.java new file mode 100644 index 0000000..81ea376 --- /dev/null +++ b/intelliJ/src/j0057_T09_VT06_Ejercicio_11D_ArrayList_LinkedList_Iterator/Main.java @@ -0,0 +1,52 @@ +package j0057_T09_VT06_Ejercicio_11D_ArrayList_LinkedList_Iterator; + +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.Iterator; + +public class Main { + public static void main(String[] args) { + // Crear y rellenar ArrayList + ArrayList arrayList = new ArrayList<>(); + arrayList.add('a'); + arrayList.add('b'); + arrayList.add('d'); + arrayList.add('e'); + arrayList.add('f'); + arrayList.add('g'); + + // Crear y rellenar LinkedList + LinkedList linkedList = new LinkedList<>(); + linkedList.add('a'); + linkedList.add('b'); + linkedList.add('d'); + linkedList.add('e'); + linkedList.add('f'); + linkedList.add('g'); + + // Recorrer ArrayList con un Iterador + System.out.println("Recorriendo ArrayList con un Iterador:"); + Iterator arrayIterator = arrayList.iterator(); + while (arrayIterator.hasNext()) { + System.out.print(arrayIterator.next() + " "); + } + System.out.println(); + + // Recorrer LinkedList con un Iterador + System.out.println("Recorriendo LinkedList con un Iterador:"); + Iterator linkedIterator = linkedList.iterator(); + while (linkedIterator.hasNext()) { + System.out.print(linkedIterator.next() + " "); + } + System.out.println(); + } +} + +/* +OUTPUT: +Recorriendo ArrayList con un Iterador: +a b d e f g +Recorriendo LinkedList con un Iterador: +a b d e f g + + */ \ No newline at end of file diff --git a/intelliJ/src/j0059_T10_VT07_Ejercicio_12B_Exception_Mail/Main.java b/intelliJ/src/j0059_T10_VT07_Ejercicio_12B_Exception_Mail/Main.java new file mode 100644 index 0000000..a0ac13d --- /dev/null +++ b/intelliJ/src/j0059_T10_VT07_Ejercicio_12B_Exception_Mail/Main.java @@ -0,0 +1,45 @@ +package j0059_T10_VT07_Ejercicio_12B_Exception_Mail; + +import java.util.Scanner; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +// Clase principal +public class Main { + public static void main(String[] args) { + Scanner scan = new Scanner(System.in); + System.out.println("Por favor, introduce tu email: "); + String emailUsuario = scan.nextLine(); + scan.close(); // Cierra el Scanner para liberar recursos + + try { + // Verifica el email ingresado + verificarEmail(emailUsuario); + System.out.println("La dirección es válida"); + } catch (EmailNoValidoException excep) { + System.out.println(excep.getMessage()); + } + } + + // Método para verificar si el email es válido + public static void verificarEmail(String email) throws EmailNoValidoException { + String expresion = "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$"; // Expresión mejorada + Pattern patron = Pattern.compile(expresion); + Matcher comparador = patron.matcher(email); + + if (!comparador.matches()) { + throw new EmailNoValidoException("La dirección " + email + " no es válida"); + } + } +} + +// Clase personalizada para excepciones de email +class EmailNoValidoException extends Exception { + public EmailNoValidoException() { + super("Email no válido"); + } + + public EmailNoValidoException(String mensaje) { + super(mensaje); + } +} diff --git a/intelliJ/src/j0060_T10_VT07_Ejercicio_12A_Exceptions/README.md b/intelliJ/src/j0060_T10_VT07_Ejercicio_12A_Exceptions/README.md new file mode 100644 index 0000000..d5a6bb4 --- /dev/null +++ b/intelliJ/src/j0060_T10_VT07_Ejercicio_12A_Exceptions/README.md @@ -0,0 +1,2 @@ +Para ver este ejercicio resuelto mira el ejercicio: +j0053_T09_VT06_Ejercicio10_Empleado \ No newline at end of file From 33682488d221c1476a32176a45eaf1440254333d Mon Sep 17 00:00:00 2001 From: fireDevelop Date: Mon, 18 Nov 2024 08:16:48 +0100 Subject: [PATCH 6/8] . . --- .../Main.java | 93 +++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 intelliJ/src/j0061_T10_VT07_Ejercicio_12C_ArithmeticException/Main.java diff --git a/intelliJ/src/j0061_T10_VT07_Ejercicio_12C_ArithmeticException/Main.java b/intelliJ/src/j0061_T10_VT07_Ejercicio_12C_ArithmeticException/Main.java new file mode 100644 index 0000000..348caf1 --- /dev/null +++ b/intelliJ/src/j0061_T10_VT07_Ejercicio_12C_ArithmeticException/Main.java @@ -0,0 +1,93 @@ +package j0061_T10_VT07_Ejercicio_12C_ArithmeticException; + +import java.util.Scanner; + +public class Main { + public static void main(String[] args) { + int[] ints = new int[5]; + Scanner scanner = new Scanner(System.in); + int i; + + do { + System.out.println("Introduce otro número. Para salir, introduce -1:"); + try { + if (!scanner.hasNextInt()) { + throw new IllegalArgumentException("Entrada no válida. Debes introducir un número."); + } + + i = scanner.nextInt(); + + if (i == -1) { + break; // Salir del bucle si el usuario introduce -1 + } + + if (i > 4) { // Cambiar la validación de rango a <= 4 porque el array tiene índices de 0 a 4 + throw new ArithmeticException("Número demasiado grande. Debes introducir un número entre 0 y 4."); + } + + ints[i] = i; // Asignar el número al array + + } catch (ArithmeticException ex) { + System.out.println("Error aritmético: " + ex.getMessage()); + i = 0; // Asegurar que `i` tiene un valor válido para no afectar el flujo + } catch (IndexOutOfBoundsException ex) { + System.out.println("Excepción fuera de índice: " + ex.getMessage()); + i = 0; // Misma precaución que antes + } catch (IllegalArgumentException ex) { + System.out.println("Error: " + ex.getMessage()); + scanner.next(); // Consumir el token no válido para evitar un bucle infinito + i = 0; + } finally { + System.out.println("Última entrada procesada."); + } + } while (true); + + scanner.close(); + + System.out.println("Números introducidos en el array:"); + for (int j = 0; j < ints.length; j++) { + System.out.println("Índice " + j + ": " + ints[j]); + } + } +} + + +/* +*** ENTRADA VALIDA: +Introduce otro número. Para salir, introduce -1: +2 +Última entrada procesada. +Introduce otro número. Para salir, introduce -1: +4 +Última entrada procesada. +Introduce otro número. Para salir, introduce -1: +-1 +Última entrada procesada. +Números introducidos en el array: +Índice 0: 0 +Índice 1: 0 +Índice 2: 2 +Índice 3: 0 +Índice 4: 4 + +*** ENTRADA INVALIDA: +Introduce otro número. Para salir, introduce -1: +abc +Error: Entrada no válida. Debes introducir un número. +Última entrada procesada. +Introduce otro número. Para salir, introduce -1: +5 +Error aritmético: Número demasiado grande. Debes introducir un número entre 0 y 4. +Última entrada procesada. +Introduce otro número. Para salir, introduce -1: +-1 +Última entrada procesada. +Números introducidos en el array: +Índice 0: 0 +Índice 1: 0 +Índice 2: 0 +Índice 3: 0 +Índice 4: 0 + + */ + From 2b4b689a110ffd6c47281188ec672879b58bab52 Mon Sep 17 00:00:00 2001 From: fireDevelop Date: Sun, 1 Dec 2024 11:27:03 +0100 Subject: [PATCH 7/8] . . --- eclipse/.metadata/.log | 184 +++++ .../.root/.indexes/properties.index | Bin 202 -> 202 bytes .../.root/.markers.snap | Bin 102 -> 0 bytes .../.safetable/org.eclipse.core.resources | Bin 2367 -> 1106 bytes .../.plugins/org.eclipse.m2e.logback/0.log | 204 +++++ eclipse/.metadata/version.ini | 2 +- eclipse/eclipse/src/test/PAC de desarrollo.di | 2 + .../src/test/PAC de desarrollo.notation | 766 ++++++++++++++++++ .../eclipse/src/test/PAC de desarrollo.uml | 202 +++++ .../Main.java | 3 +- .../Regex_Check_ID_Card.java | 2 +- intelliJ/src/codigo/Animal.java | 31 + intelliJ/src/codigo/Main.java | 19 + intelliJ/src/codigo/README.md | 58 ++ intelliJ/src/j0000_INDEX/INDEX.md | 17 + intelliJ/src/j0000_INDEX/INDEX.txt | 3 - intelliJ/src/j0000_INDEX/index.html | 15 + .../List_LinkedList.java | 52 -- intelliJ/src/j0028_Collection_List/Main.java | 29 - intelliJ/src/j0062_T10_Arrays_3D/Main.java | 27 + .../Main.java | 2 +- .../List_01_ArrayList.java} | 8 +- .../List_02_LinkedList.java | 29 + .../List_03_Vector.java} | 4 +- .../Set_01_HashSet.java} | 6 +- .../Set_02_TreeSet.java} | 4 +- .../Set_03_TreeSet.java} | 4 +- .../Queue_01_ArrayDeque.java} | 4 +- .../Queue_02_ArrayDeque.java} | 4 +- .../Map_01_Methods.java} | 4 +- .../Map_02_HashMap.java} | 4 +- .../Iterator.java | 2 +- .../Iterator2.java | 2 +- intelliJ/src/j0070_GUI_Swing_AWT/Main.java | 25 + intelliJ/src/test/Main.java | 19 +- intelliJ/src/test/PI.java | 0 intelliJ/src/test/PO.java | 23 - 37 files changed, 1619 insertions(+), 141 deletions(-) delete mode 100644 eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.markers.snap create mode 100644 eclipse/eclipse/src/test/PAC de desarrollo.di create mode 100644 eclipse/eclipse/src/test/PAC de desarrollo.notation create mode 100644 eclipse/eclipse/src/test/PAC de desarrollo.uml rename intelliJ/src/{J0032_Regex => J0069_T10_Regex}/Main.java (87%) rename intelliJ/src/{J0032_Regex => J0069_T10_Regex}/Regex_Check_ID_Card.java (98%) create mode 100644 intelliJ/src/codigo/Animal.java create mode 100644 intelliJ/src/codigo/Main.java create mode 100644 intelliJ/src/codigo/README.md create mode 100644 intelliJ/src/j0000_INDEX/INDEX.md delete mode 100644 intelliJ/src/j0000_INDEX/INDEX.txt create mode 100644 intelliJ/src/j0000_INDEX/index.html delete mode 100644 intelliJ/src/j0028_Collection_List/List_LinkedList.java delete mode 100644 intelliJ/src/j0028_Collection_List/Main.java create mode 100644 intelliJ/src/j0062_T10_Arrays_3D/Main.java rename intelliJ/src/{j0027_String_Methods => j0063_T10_String_Methods}/Main.java (99%) rename intelliJ/src/{j0028_Collection_List/List_ArrayList.java => j0064_T10_Collection_LIST/List_01_ArrayList.java} (82%) create mode 100644 intelliJ/src/j0064_T10_Collection_LIST/List_02_LinkedList.java rename intelliJ/src/{j0028_Collection_List/List_Vector.java => j0064_T10_Collection_LIST/List_03_Vector.java} (95%) rename intelliJ/src/{j0028_Collection_List/List_HashSet2.java => j0065_T10_Collection_SET/Set_01_HashSet.java} (94%) rename intelliJ/src/{j0028_Collection_List/List_TreeSet3.java => j0065_T10_Collection_SET/Set_02_TreeSet.java} (95%) rename intelliJ/src/{j0028_Collection_List/List_TreeSet2.java => j0065_T10_Collection_SET/Set_03_TreeSet.java} (93%) rename intelliJ/src/{j0029_Collection_Queue/Queue_ArrayDeque2.java => j0066_T10_Collection_QUEUE/Queue_01_ArrayDeque.java} (95%) rename intelliJ/src/{j0029_Collection_Queue/Queue_ArrayDeque.java => j0066_T10_Collection_QUEUE/Queue_02_ArrayDeque.java} (93%) rename intelliJ/src/{j0030_Collection_Map/MapMethods.java => j0067_T10_Collection_MAP/Map_01_Methods.java} (95%) rename intelliJ/src/{j0030_Collection_Map/Map_HashMap.java => j0067_T10_Collection_MAP/Map_02_HashMap.java} (93%) rename intelliJ/src/{j0031_Collection_Iterator => j0068_T10_Collection_ITERATOR}/Iterator.java (93%) rename intelliJ/src/{j0031_Collection_Iterator => j0068_T10_Collection_ITERATOR}/Iterator2.java (96%) create mode 100644 intelliJ/src/j0070_GUI_Swing_AWT/Main.java delete mode 100644 intelliJ/src/test/PI.java delete mode 100644 intelliJ/src/test/PO.java diff --git a/eclipse/.metadata/.log b/eclipse/.metadata/.log index 1d02bef..00bf0fe 100644 --- a/eclipse/.metadata/.log +++ b/eclipse/.metadata/.log @@ -174,3 +174,187 @@ user global configuration and to define the default location to store repositori not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and EGit might behave differently since they see different configuration options. This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. +!SESSION 2024-11-25 00:23:11.874 ----------------------------------------------- +eclipse.buildId=4.32.0.20240606-1231 +java.version=21.0.1 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY ch.qos.logback.classic 1 0 2024-11-25 00:23:32.712 +!MESSAGE Activated before the state location was initialized. Retry after the state location is initialized. + +!ENTRY org.eclipse.core.resources 2 10035 2024-11-25 00:23:33.385 +!MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes. + +!ENTRY ch.qos.logback.classic 1 0 2024-11-25 00:23:33.670 +!MESSAGE Logback config file: C:\Users\it77\Documents\GitHub\Java\eclipse\.metadata\.plugins\org.eclipse.m2e.logback\logback.2.6.1.20240411-1122.xml + +!ENTRY org.eclipse.egit.ui 2 0 2024-11-25 00:23:39.960 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\it77'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. +!SESSION 2024-11-25 00:29:00.267 ----------------------------------------------- +eclipse.buildId=4.32.0.20240606-1231 +java.version=21.0.1 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product -data file:/C:/Users/it77/Documents/GitHub/Java/eclipse/ + +!ENTRY ch.qos.logback.classic 1 0 2024-11-25 00:29:04.668 +!MESSAGE Activated before the state location was initialized. Retry after the state location is initialized. + +!ENTRY ch.qos.logback.classic 1 0 2024-11-25 00:29:06.480 +!MESSAGE Logback config file: C:\Users\it77\Documents\GitHub\Java\eclipse\.metadata\.plugins\org.eclipse.m2e.logback\logback.2.6.1.20240411-1122.xml + +!ENTRY org.eclipse.egit.ui 2 0 2024-11-25 00:29:13.139 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\it77'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.ecf.provider.filetransfer.httpclient5 4 0 2024-11-25 00:29:18.371 +!MESSAGE FrameworkEvent ERROR +!STACK 0 +org.osgi.framework.ServiceException: Exception in org.apache.felix.scr.impl.manager.SingleComponentManager.getService() + at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:236) + at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.getService(ServiceFactoryUse.java:118) + at org.eclipse.osgi.internal.serviceregistry.ServiceConsumer$2.getService(ServiceConsumer.java:48) + at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:580) + at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getService(ServiceRegistry.java:548) + at org.eclipse.osgi.internal.framework.BundleContextImpl.getService(BundleContextImpl.java:672) + at org.osgi.util.tracker.ServiceTracker.addingService(ServiceTracker.java:419) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:947) + at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:1) + at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:257) + at org.osgi.util.tracker.AbstractTracked.trackInitial(AbstractTracked.java:184) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:324) + at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:267) + at org.eclipse.ecf.internal.provider.filetransfer.httpclient5.Activator.getHttpClientFactory(Activator.java:243) + at org.eclipse.ecf.internal.provider.filetransfer.httpclient5.Activator.registerHttpClient(Activator.java:290) + at org.eclipse.ecf.internal.provider.filetransfer.httpclient5.Activator.getRetrieveHttpClient(Activator.java:281) + at org.eclipse.ecf.provider.filetransfer.httpclient5.HttpClientRetrieveFileTransferFactory.newInstance(HttpClientRetrieveFileTransferFactory.java:25) + at org.eclipse.ecf.internal.provider.filetransfer.Activator.getFileTransfer(Activator.java:614) + at org.eclipse.ecf.provider.filetransfer.retrieve.MultiProtocolRetrieveAdapter.sendRetrieveRequest(MultiProtocolRetrieveAdapter.java:94) + at org.eclipse.oomph.setup.internal.core.util.ECFURIHandlerImpl$InputStreamConnectionHandler.sendConnectionRequest(ECFURIHandlerImpl.java:1943) + at org.eclipse.oomph.setup.internal.core.util.ECFURIHandlerImpl$ConnectionHandler.process(ECFURIHandlerImpl.java:1642) + at org.eclipse.oomph.setup.internal.core.util.ECFURIHandlerImpl.createInputStream(ECFURIHandlerImpl.java:321) + at org.eclipse.emf.ecore.resource.impl.ExtensibleURIConverterImpl.createInputStream(ExtensibleURIConverterImpl.java:358) + at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1314) + at org.eclipse.oomph.setup.internal.core.util.SetupCoreUtil.handleArchiveRedirection(SetupCoreUtil.java:696) + at org.eclipse.oomph.setup.internal.core.util.SetupCoreUtil.configureResourceSet(SetupCoreUtil.java:474) + at org.eclipse.oomph.setup.internal.core.util.SetupCoreUtil.configureResourceSet(SetupCoreUtil.java:268) + at org.eclipse.oomph.setup.internal.core.util.SetupCoreUtil.createResourceSet(SetupCoreUtil.java:262) + at org.eclipse.oomph.setup.ui.recorder.RecorderManager.(RecorderManager.java:121) + at org.eclipse.oomph.setup.ui.SetupUIPlugin.performStartup(SetupUIPlugin.java:218) + at org.eclipse.oomph.setup.ui.EarlyStartup.earlyStartup(EarlyStartup.java:23) + at org.eclipse.oomph.internal.ui.EarlyStart.run(EarlyStart.java:119) + at org.eclipse.oomph.internal.ui.EarlyStart$1.run(EarlyStart.java:98) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) +Caused by: java.lang.LinkageError: loader constraint violation: loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @670fafcf wants to load class org.apache.hc.client5.http.impl.classic.HttpClientBuilder. A different class with the same name was previously loaded by org.eclipse.osgi.internal.loader.EquinoxClassLoader @7fe0f4a0. (org.apache.hc.client5.http.impl.classic.HttpClientBuilder is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @7fe0f4a0, parent loader 'platform') + at java.base/java.lang.Class.getDeclaredConstructors0(Native Method) + at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3549) + at java.base/java.lang.Class.getConstructors(Class.java:2227) + at org.apache.felix.scr.impl.inject.internal.ComponentConstructorImpl.(ComponentConstructorImpl.java:98) + at org.apache.felix.scr.impl.inject.internal.ComponentMethodsImpl.initComponentMethods(ComponentMethodsImpl.java:110) + at org.apache.felix.scr.impl.manager.AbstractComponentManager.initDependencyManagers(AbstractComponentManager.java:1029) + at org.apache.felix.scr.impl.manager.AbstractComponentManager.collectDependencies(AbstractComponentManager.java:1057) + at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:955) + at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:920) + at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse$1.run(ServiceFactoryUse.java:226) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:319) + at org.eclipse.osgi.internal.serviceregistry.ServiceFactoryUse.factoryGetService(ServiceFactoryUse.java:223) + ... 33 more + +!ENTRY org.eclipse.oomph.ui 4 0 2024-11-25 00:29:18.371 +!MESSAGE loader constraint violation: loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @670fafcf wants to load class org.apache.hc.client5.http.impl.classic.HttpClientBuilder. A different class with the same name was previously loaded by org.eclipse.osgi.internal.loader.EquinoxClassLoader @7fe0f4a0. (org.apache.hc.client5.http.impl.classic.HttpClientBuilder is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @7fe0f4a0, parent loader 'platform') +!STACK 0 +java.lang.LinkageError: loader constraint violation: loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @670fafcf wants to load class org.apache.hc.client5.http.impl.classic.HttpClientBuilder. A different class with the same name was previously loaded by org.eclipse.osgi.internal.loader.EquinoxClassLoader @7fe0f4a0. (org.apache.hc.client5.http.impl.classic.HttpClientBuilder is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @7fe0f4a0, parent loader 'platform') + at org.eclipse.ecf.internal.provider.filetransfer.httpclient5.Activator.getHttpClientFactory(Activator.java:247) + at org.eclipse.ecf.internal.provider.filetransfer.httpclient5.Activator.registerHttpClient(Activator.java:290) + at org.eclipse.ecf.internal.provider.filetransfer.httpclient5.Activator.getRetrieveHttpClient(Activator.java:281) + at org.eclipse.ecf.provider.filetransfer.httpclient5.HttpClientRetrieveFileTransferFactory.newInstance(HttpClientRetrieveFileTransferFactory.java:25) + at org.eclipse.ecf.internal.provider.filetransfer.Activator.getFileTransfer(Activator.java:614) + at org.eclipse.ecf.provider.filetransfer.retrieve.MultiProtocolRetrieveAdapter.sendRetrieveRequest(MultiProtocolRetrieveAdapter.java:94) + at org.eclipse.oomph.setup.internal.core.util.ECFURIHandlerImpl$InputStreamConnectionHandler.sendConnectionRequest(ECFURIHandlerImpl.java:1943) + at org.eclipse.oomph.setup.internal.core.util.ECFURIHandlerImpl$ConnectionHandler.process(ECFURIHandlerImpl.java:1642) + at org.eclipse.oomph.setup.internal.core.util.ECFURIHandlerImpl.createInputStream(ECFURIHandlerImpl.java:321) + at org.eclipse.emf.ecore.resource.impl.ExtensibleURIConverterImpl.createInputStream(ExtensibleURIConverterImpl.java:358) + at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1314) + at org.eclipse.oomph.setup.internal.core.util.SetupCoreUtil.handleArchiveRedirection(SetupCoreUtil.java:696) + at org.eclipse.oomph.setup.internal.core.util.SetupCoreUtil.configureResourceSet(SetupCoreUtil.java:474) + at org.eclipse.oomph.setup.internal.core.util.SetupCoreUtil.configureResourceSet(SetupCoreUtil.java:268) + at org.eclipse.oomph.setup.internal.core.util.SetupCoreUtil.createResourceSet(SetupCoreUtil.java:262) + at org.eclipse.oomph.setup.ui.recorder.RecorderManager.(RecorderManager.java:121) + at org.eclipse.oomph.setup.ui.SetupUIPlugin.performStartup(SetupUIPlugin.java:218) + at org.eclipse.oomph.setup.ui.EarlyStartup.earlyStartup(EarlyStartup.java:23) + at org.eclipse.oomph.internal.ui.EarlyStart.run(EarlyStart.java:119) + at org.eclipse.oomph.internal.ui.EarlyStart$1.run(EarlyStart.java:98) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) + +!ENTRY org.eclipse.ui.ide 4 4 2024-11-25 00:29:20.311 +!MESSAGE Not properly disposed SWT resource +!STACK 0 +java.lang.Error: SWT Resource was not properly disposed + at org.eclipse.swt.graphics.Resource.initNonDisposeTracking(Resource.java:172) + at org.eclipse.swt.graphics.Resource.(Resource.java:120) + at org.eclipse.swt.graphics.Font.(Font.java:126) + at org.eclipse.jface.resource.ArrayFontDescriptor.createFont(ArrayFontDescriptor.java:78) + at com.yattasolutions.obf.no.b.createDialogArea(SourceFile:67) + at org.eclipse.jface.dialogs.Dialog.createContents(Dialog.java:766) + at org.eclipse.jface.window.Window.create(Window.java:431) + at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1092) + at org.eclipse.jface.window.Window.open(Window.java:788) + at com.yattasolutions.obf.np.a$1.run(SourceFile:91) + at org.eclipse.ui.internal.PendingSyncExec.run(PendingSyncExec.java:68) + at org.eclipse.ui.internal.UILockListener.doPendingWork(UILockListener.java:166) + at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40) + at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:132) + at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4058) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3676) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:152) + at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605) + at org.eclipse.equinox.launcher.Main.run(Main.java:1481) + +!ENTRY org.eclipse.ui.workbench 4 2 2024-11-25 02:30:01.688 +!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.ui.workbench". +!STACK 0 +java.lang.NullPointerException: Cannot invoke "org.eclipse.swt.widgets.Display.asyncExec(java.lang.Runnable)" because the return value of "com.yattasolutions.obf.ni.c.aBw()" is null + at com.yattasolutions.obf.nr.a.earlyStartup(SourceFile:42) + at org.eclipse.ui.internal.EarlyStartupRunnable.runEarlyStartup(EarlyStartupRunnable.java:79) + at org.eclipse.ui.internal.EarlyStartupRunnable.run(EarlyStartupRunnable.java:55) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.ui.internal.Workbench$39.run(Workbench.java:2706) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) + +!ENTRY org.eclipse.ui 4 0 2024-11-25 02:30:01.689 +!MESSAGE Unable to execute early startup code for the org.eclipse.ui.IStartup extension contributed by the 'com.yattasolutions.umllab.ui' plug-in. +!STACK 0 +java.lang.NullPointerException: Cannot invoke "org.eclipse.swt.widgets.Display.asyncExec(java.lang.Runnable)" because the return value of "com.yattasolutions.obf.ni.c.aBw()" is null + at com.yattasolutions.obf.nr.a.earlyStartup(SourceFile:42) + at org.eclipse.ui.internal.EarlyStartupRunnable.runEarlyStartup(EarlyStartupRunnable.java:79) + at org.eclipse.ui.internal.EarlyStartupRunnable.run(EarlyStartupRunnable.java:55) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47) + at org.eclipse.ui.internal.Workbench$39.run(Workbench.java:2706) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index index dd18f24a2de07333a7fe004ed4dd9ba86fb2b332..45a4839c9cf96b57af064b4c4c70ff4f3d08eeb9 100644 GIT binary patch delta 74 zcmV~$u@!(Y2nE2Gi9|y9(z%CKK$u5sH_BArt+v{8ok&zS8c6SiT@J)74pyibMOU9D UtR%plQKli7tWwSuX5;;~9~{FKFaQ7m delta 74 zcmWN`u@!(I3%JhM(`Udf8ak_Is$!k3uyl;D W5&D1SOzbwH0#P9gDRZ>)yvGMg5Ec^v diff --git a/eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.markers.snap b/eclipse/.metadata/.plugins/org.eclipse.core.resources/.root/.markers.snap deleted file mode 100644 index 1c38b2123a12962918bc13068cd33112179219dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102 zcmZ?R*xjhShe1S2b=vdAllRFnFfcGNFzN#-h6545KZB(LKlfDcEX<=kwXl7_O*^%9dibl&K Z8O_UeAmaCDAt$*_<5YptzoQmmF;m3I*-rCKhy)YjUR1YZ5LOv^Y8ICin&X1f3Oe z@~ij(I=W~Yi4^n_K?*|lhxgyZ`|HoHuUe05>l<5lulKi4o2>~?wNOCwkrcMoIut(G z%OoH!z=XM!VFY#t2SY#*acyfGY9&Mu+m7v0}VBZ6(hlZyZK}x#)z58WT>YavDL+)3X$o&Hem%gNr0o zT!(SAbjEUV+$Ok#+g*$tL~ZN&=xx5xw?DtRd^msUuTJL)muU^3W~|(+8Y_&}$@TekWMuU;#47;>5~HKa``)R;-%e(4YSmH114|J%PDj + diff --git a/eclipse/eclipse/src/test/PAC de desarrollo.notation b/eclipse/eclipse/src/test/PAC de desarrollo.notation new file mode 100644 index 0000000..d13818a --- /dev/null +++ b/eclipse/eclipse/src/test/PAC de desarrollo.notation @@ -0,0 +1,766 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eclipse/eclipse/src/test/PAC de desarrollo.uml b/eclipse/eclipse/src/test/PAC de desarrollo.uml new file mode 100644 index 0000000..14353d9 --- /dev/null +++ b/eclipse/eclipse/src/test/PAC de desarrollo.uml @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + + +
+ + + + + + +
+ + + + + + + +
+ + + + + + + + + + +
+ + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
+ + + + + + + + + + + + diff --git a/intelliJ/src/J0032_Regex/Main.java b/intelliJ/src/J0069_T10_Regex/Main.java similarity index 87% rename from intelliJ/src/J0032_Regex/Main.java rename to intelliJ/src/J0069_T10_Regex/Main.java index 3bb765a..10088a8 100644 --- a/intelliJ/src/J0032_Regex/Main.java +++ b/intelliJ/src/J0069_T10_Regex/Main.java @@ -1,4 +1,4 @@ -package J0032_Regex;// Se importa el paquete java.util.regex +package J0069_T10_Regex;// Se importa el paquete java.util.regex import java.util.regex.*; public class Main { @@ -12,5 +12,4 @@ public static void main(String[] args) { System.out.println(resultado); } - } diff --git a/intelliJ/src/J0032_Regex/Regex_Check_ID_Card.java b/intelliJ/src/J0069_T10_Regex/Regex_Check_ID_Card.java similarity index 98% rename from intelliJ/src/J0032_Regex/Regex_Check_ID_Card.java rename to intelliJ/src/J0069_T10_Regex/Regex_Check_ID_Card.java index 655e70c..c568dde 100644 --- a/intelliJ/src/J0032_Regex/Regex_Check_ID_Card.java +++ b/intelliJ/src/J0069_T10_Regex/Regex_Check_ID_Card.java @@ -1,4 +1,4 @@ -package J0032_Regex; +package J0069_T10_Regex; import java.util.regex.*; diff --git a/intelliJ/src/codigo/Animal.java b/intelliJ/src/codigo/Animal.java new file mode 100644 index 0000000..9a43634 --- /dev/null +++ b/intelliJ/src/codigo/Animal.java @@ -0,0 +1,31 @@ +package codigo; + +public class Animal { + private String nombre; + private int distancia; + + public Animal(String nombre) { + this.nombre = nombre; + this.distancia = 0; + } + + public String getNombre() { + return nombre; + } + + public void setNombre(String nombre) { + this.nombre = nombre; + } + + public int getDistancia() { + return distancia; + } + + public void setDistancia(int distancia) { + this.distancia = distancia; + } + + public void correr(int metros) { + this.distancia += metros; + } +} diff --git a/intelliJ/src/codigo/Main.java b/intelliJ/src/codigo/Main.java new file mode 100644 index 0000000..fcbb984 --- /dev/null +++ b/intelliJ/src/codigo/Main.java @@ -0,0 +1,19 @@ +package codigo; +import java.util.Random; + +public class Main { + public static void main(String[] args) { + Animal gato = new Animal("Simba"); + Animal perro = new Animal("Luna"); + Animal zorro = new Animal("Thor"); + Random rn = new Random(); + for (int turno = 1; turno <= 10; turno++) { + gato.correr(rn.nextInt(9)+1); + perro.correr(rn.nextInt(9)+1); + zorro.correr(rn.nextInt(9)+1); + } + System.out.println(gato.getNombre() + " " + gato.getDistancia() + " metros"); + System.out.println(perro.getNombre() + " " + perro.getDistancia() + " metros"); + System.out.println(zorro.getNombre() + " " + zorro.getDistancia() + " metros"); + } +} \ No newline at end of file diff --git a/intelliJ/src/codigo/README.md b/intelliJ/src/codigo/README.md new file mode 100644 index 0000000..b2aa9da --- /dev/null +++ b/intelliJ/src/codigo/README.md @@ -0,0 +1,58 @@ +1. ENUNCIADO DE LA ACTIVIDAD + +Vas a crear un juego de azar donde van a competir en una carrera varios animales. Para +ello vamos a tener una clase Animal con las siguientes características: +- + Un atributo String para el nombre +- + Un atributo int para la distancia recorrida durante la carrera +Y en cuanto al comportamiento de Animal, habrá: +- + Un constructor que recibirá el nombre y que inicializará la distancia recorrida a 0. +El método no mostrará nada en consola. +- + Un método correr que recibe un valor entero (la distancia recorrida en metros). El +método sumará dicha nueva cantidad de metros al atributo de distancia recorrida +en los turnos anteriores. El método no mostrará nada en consola. +Esa clase deberá funcionar con el siguiente método Main.java: + +package codigo; +import java.util.Random; +public class Main { +public static void main(String[] args) { +Animal gato = new Animal("Simba"); +Animal perro = new Animal("Luna"); +Animal zorro = new Animal("Thor"); +Random rn = new Random(); +for (int turno = 1; turno <= 10; turno++) { +gato.correr(rn.nextInt(9)+1); +perro.correr(rn.nextInt(9)+1); +zorro.correr(rn.nextInt(9)+1); +} +System.out.println(gato.getNombre() + " " + gato.getDistancia() + " metros"); +System.out.println(perro.getNombre() + " " + perro.getDistancia() + " metros"); +System.out.println(zorro.getNombre() + " " + zorro.getDistancia() + " metros"); +} +} + +Presta especial atención a los detalles, como el nombre del paquete o los nombres de los +métodos que se emplean en el método main para construir tu clase Animal. En caso de +error, el programa no funcionará, suponiendo un suspenso. + +2. EJEMPLO DE EJECUCIÓN DE MAIN.JAVA +A continuación podemos ver un ejemplo de ejecución de una carrera. Dado que los +números son aleatorios, el resultado puede variar de una ejecución a otra. +Este es el Output: +Simba 62 metros +Luna 58 metros +Thor 42 metros + + +3. EVALUACION +La evaluación de esta actividad se realizará siguiendo la siguiente rúbrica: +1. Compilación (2 puntos). El programa compila correctamente. +2. Clase Animal (8 puntos) distribuidos de la siguiente forma: +a. Creación de atributos (2 puntos). Creación correcta de atributos. +b. Creación del método constructor (2 puntos). Método constructor correcto. +c. Creación de getters y setters (2 puntos). Getters y setters correctos. +d. Creación del método correr (2 puntos). Creación correcta del método. diff --git a/intelliJ/src/j0000_INDEX/INDEX.md b/intelliJ/src/j0000_INDEX/INDEX.md new file mode 100644 index 0000000..f268286 --- /dev/null +++ b/intelliJ/src/j0000_INDEX/INDEX.md @@ -0,0 +1,17 @@ +Main Packages to study: + +j0050_T08_VT06_Ejercicio07_Animal + +- List + - AbtractList + - AbstractSequentialList + - ArrayList + - get(int) + - indexOf(Object) + - AtributeList + - LinkedList + - Vector + - CopyOnWriteArrayList + - Stack + - RoleList + - RoleUnresolvedList \ No newline at end of file diff --git a/intelliJ/src/j0000_INDEX/INDEX.txt b/intelliJ/src/j0000_INDEX/INDEX.txt deleted file mode 100644 index a62544c..0000000 --- a/intelliJ/src/j0000_INDEX/INDEX.txt +++ /dev/null @@ -1,3 +0,0 @@ -Main Packages to study: - -j0050_T08_VT06_Ejercicio07_Animal \ No newline at end of file diff --git a/intelliJ/src/j0000_INDEX/index.html b/intelliJ/src/j0000_INDEX/index.html new file mode 100644 index 0000000..e320c3f --- /dev/null +++ b/intelliJ/src/j0000_INDEX/index.html @@ -0,0 +1,15 @@ + + + + + + Document + + +
    +
  • hi
  • +
  • hi
  • +
  • hoo
  • +
+ + \ No newline at end of file diff --git a/intelliJ/src/j0028_Collection_List/List_LinkedList.java b/intelliJ/src/j0028_Collection_List/List_LinkedList.java deleted file mode 100644 index 2b3fe62..0000000 --- a/intelliJ/src/j0028_Collection_List/List_LinkedList.java +++ /dev/null @@ -1,52 +0,0 @@ -package j0028_Collection_List; -import java.util.HashSet; -import java.util.LinkedList; - -public class List_LinkedList { - public static void main(String[] args) { - // Instancia de tipo Genérico - LinkedList listaEnlazada = new LinkedList<>(); - listaEnlazada.add(3); - listaEnlazada.add(4.52); - listaEnlazada.add("Amaia"); - System.out.println(listaEnlazada); - - listaEnlazada.removeFirst(); - listaEnlazada.addFirst("Laura"); - listaEnlazada.addLast(72); - System.out.println(listaEnlazada); - - // Instancia de tipo específico - LinkedList listaEnl = new LinkedList<>(); - listaEnl.add("Pablo"); - listaEnl.add("Carlos"); - listaEnl.add("Ruben"); - - System.out.print(listaEnl.getFirst() + " "); - System.out.println(listaEnl.getLast()); - } - - public static class List_HashSet { - public static void main(String[] args){ - //Instancia de tipo Genérico - HashSet colSet = new HashSet(); - colSet.add(3); - colSet.add(5.8); - colSet.add("Hello world"); - //Como utilizar los métodos isEmpty() y el método clear() - while(!colSet.isEmpty()){ - System.out.println(colSet); - colSet.clear(); - } - //Instancia de tipo específico - HashSet colSetInt =new HashSet(); - colSetInt.add(23.10); - colSetInt.add(32.00); - colSetInt.add(83.24); - //Recorrer la colección con un bucle for each - for(Double s : colSetInt){ - System.out.println(s); - } - } - } -} diff --git a/intelliJ/src/j0028_Collection_List/Main.java b/intelliJ/src/j0028_Collection_List/Main.java deleted file mode 100644 index a52d701..0000000 --- a/intelliJ/src/j0028_Collection_List/Main.java +++ /dev/null @@ -1,29 +0,0 @@ -package j0028_Collection_List; -import java.util.ArrayList; -import java.util.List; - -public class Main { - public static void main(String[] args) { - // Instancia de tipo Genérico - List array = new ArrayList<>(); - array.add(2); // Valor entero - array.add(4.3); // Valor decimal - array.add("Hello World"); // Valor texto - - // Recorremos la colección con el método size() - for (int i = 0; i < array.size(); i++) { - System.out.println(array.get(i)); - } - - // Instancia de tipo específico - List arrayEnteros = new ArrayList<>(); - arrayEnteros.add(2); - arrayEnteros.add(3); - arrayEnteros.add(4); - - // Recorremos la colección específica con el método size() - for (int i = 0; i < arrayEnteros.size(); i++) { - System.out.println(arrayEnteros.get(i)); - } - } -} diff --git a/intelliJ/src/j0062_T10_Arrays_3D/Main.java b/intelliJ/src/j0062_T10_Arrays_3D/Main.java new file mode 100644 index 0000000..cb37baf --- /dev/null +++ b/intelliJ/src/j0062_T10_Arrays_3D/Main.java @@ -0,0 +1,27 @@ +package j0062_T10_Arrays_3D; +public class Main { + public static void main(String[] args) { + int[][][] matriz = new int[3][3][3]; + + // Llenar la matriz tridimensional + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + for (int k = 0; k < 3; k++) { + + matriz[i][j][k] = i + 1 + j * 3; + } + } + } + + // Imprimir la matriz tridimensional + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + for (int s = 0; s < 3; s++) { + System.out.print(matriz[s][j][i] + " "); + } + System.out.println(); + } + System.out.println(); + } + } +} diff --git a/intelliJ/src/j0027_String_Methods/Main.java b/intelliJ/src/j0063_T10_String_Methods/Main.java similarity index 99% rename from intelliJ/src/j0027_String_Methods/Main.java rename to intelliJ/src/j0063_T10_String_Methods/Main.java index eb852df..85cc882 100644 --- a/intelliJ/src/j0027_String_Methods/Main.java +++ b/intelliJ/src/j0063_T10_String_Methods/Main.java @@ -1,4 +1,4 @@ -package j0027_String_Methods; +package j0063_T10_String_Methods; public class Main { public static void main(String[] args) { diff --git a/intelliJ/src/j0028_Collection_List/List_ArrayList.java b/intelliJ/src/j0064_T10_Collection_LIST/List_01_ArrayList.java similarity index 82% rename from intelliJ/src/j0028_Collection_List/List_ArrayList.java rename to intelliJ/src/j0064_T10_Collection_LIST/List_01_ArrayList.java index 0c6971b..94212f8 100644 --- a/intelliJ/src/j0028_Collection_List/List_ArrayList.java +++ b/intelliJ/src/j0064_T10_Collection_LIST/List_01_ArrayList.java @@ -1,8 +1,8 @@ -package j0028_Collection_List; +package j0064_T10_Collection_LIST; import java.util.ArrayList; // get | indexOf | isEmpty | set | toArray -public class List_ArrayList { +public class List_01_ArrayList { public static void main(String[] args) { // Crear una instancia de ArrayList ArrayList list = new ArrayList<>(); @@ -30,9 +30,9 @@ public static void main(String[] args) { System.out.println("List after setting index 1 to 'Blueberry': " + list); // Convertir la lista a un array (toArray) - Object[] array = list.toArray(); + Object[] array = list.toArray(); // convierte list en un array de objetos System.out.println("Array contents:"); - for (Object obj : array) { + for (Object obj : array) { // obj es la variable que contiene cada elemento del array en cada iteración. System.out.println(obj); } } diff --git a/intelliJ/src/j0064_T10_Collection_LIST/List_02_LinkedList.java b/intelliJ/src/j0064_T10_Collection_LIST/List_02_LinkedList.java new file mode 100644 index 0000000..ad22600 --- /dev/null +++ b/intelliJ/src/j0064_T10_Collection_LIST/List_02_LinkedList.java @@ -0,0 +1,29 @@ +package j0064_T10_Collection_LIST; + +import java.util.LinkedList; + +public class List_02_LinkedList { + public static void main(String[] args) { + // Instancia de tipo Genérico + LinkedList listaEnlazada = new LinkedList<>(); + listaEnlazada.add(3); + listaEnlazada.add(4.52); + listaEnlazada.add("Amaia"); + System.out.println(listaEnlazada); + + listaEnlazada.removeFirst(); + listaEnlazada.addFirst("Laura"); + listaEnlazada.addLast(72); + System.out.println(listaEnlazada); + + // Instancia de tipo específico + LinkedList listaEnl = new LinkedList<>(); + listaEnl.add("Pablo"); + listaEnl.add("Carlos"); + listaEnl.add("Ruben"); + + System.out.print(listaEnl.getFirst() + " "); + System.out.println(listaEnl.getLast()); + } + + } diff --git a/intelliJ/src/j0028_Collection_List/List_Vector.java b/intelliJ/src/j0064_T10_Collection_LIST/List_03_Vector.java similarity index 95% rename from intelliJ/src/j0028_Collection_List/List_Vector.java rename to intelliJ/src/j0064_T10_Collection_LIST/List_03_Vector.java index be4c7f3..3bada0b 100644 --- a/intelliJ/src/j0028_Collection_List/List_Vector.java +++ b/intelliJ/src/j0064_T10_Collection_LIST/List_03_Vector.java @@ -1,7 +1,7 @@ -package j0028_Collection_List; +package j0064_T10_Collection_LIST; import java.util.Vector; -public class List_Vector { +public class List_03_Vector { public static void main(String[] args) { // Crear un Vector Vector vector = new Vector<>(); diff --git a/intelliJ/src/j0028_Collection_List/List_HashSet2.java b/intelliJ/src/j0065_T10_Collection_SET/Set_01_HashSet.java similarity index 94% rename from intelliJ/src/j0028_Collection_List/List_HashSet2.java rename to intelliJ/src/j0065_T10_Collection_SET/Set_01_HashSet.java index 15c84ca..fcc69cb 100644 --- a/intelliJ/src/j0028_Collection_List/List_HashSet2.java +++ b/intelliJ/src/j0065_T10_Collection_SET/Set_01_HashSet.java @@ -1,7 +1,7 @@ -package j0028_Collection_List; +package j0065_T10_Collection_SET; import java.util.HashSet; -public class List_HashSet2 { +public class Set_01_HashSet { public static void main(String[] args) { // Crear una instancia de HashSet HashSet conjunto = new HashSet<>(); @@ -29,4 +29,4 @@ public static void main(String[] args) { // Mostrar el conjunto original después de limpiarlo System.out.println("Conjunto original después de clear(): " + conjunto); } -} +} \ No newline at end of file diff --git a/intelliJ/src/j0028_Collection_List/List_TreeSet3.java b/intelliJ/src/j0065_T10_Collection_SET/Set_02_TreeSet.java similarity index 95% rename from intelliJ/src/j0028_Collection_List/List_TreeSet3.java rename to intelliJ/src/j0065_T10_Collection_SET/Set_02_TreeSet.java index f326e33..cb63f19 100644 --- a/intelliJ/src/j0028_Collection_List/List_TreeSet3.java +++ b/intelliJ/src/j0065_T10_Collection_SET/Set_02_TreeSet.java @@ -1,7 +1,7 @@ -package j0028_Collection_List; +package j0065_T10_Collection_SET; import java.util.TreeSet; -public class List_TreeSet3 { +public class Set_02_TreeSet { public static void main(String[] args) { // Crear una instancia de TreeSet TreeSet numeros = new TreeSet<>(); diff --git a/intelliJ/src/j0028_Collection_List/List_TreeSet2.java b/intelliJ/src/j0065_T10_Collection_SET/Set_03_TreeSet.java similarity index 93% rename from intelliJ/src/j0028_Collection_List/List_TreeSet2.java rename to intelliJ/src/j0065_T10_Collection_SET/Set_03_TreeSet.java index 3bb5988..b1c656e 100644 --- a/intelliJ/src/j0028_Collection_List/List_TreeSet2.java +++ b/intelliJ/src/j0065_T10_Collection_SET/Set_03_TreeSet.java @@ -1,7 +1,7 @@ -package j0028_Collection_List; +package j0065_T10_Collection_SET; import java.util.TreeSet; -public class List_TreeSet2 { +public class Set_03_TreeSet { public static void main(String[] args) { // Instancia de tipo Genérico TreeSet arbolPersonas = new TreeSet<>(); diff --git a/intelliJ/src/j0029_Collection_Queue/Queue_ArrayDeque2.java b/intelliJ/src/j0066_T10_Collection_QUEUE/Queue_01_ArrayDeque.java similarity index 95% rename from intelliJ/src/j0029_Collection_Queue/Queue_ArrayDeque2.java rename to intelliJ/src/j0066_T10_Collection_QUEUE/Queue_01_ArrayDeque.java index 6a97b3e..4717c4b 100644 --- a/intelliJ/src/j0029_Collection_Queue/Queue_ArrayDeque2.java +++ b/intelliJ/src/j0066_T10_Collection_QUEUE/Queue_01_ArrayDeque.java @@ -1,8 +1,8 @@ -package j0029_Collection_Queue; +package j0066_T10_Collection_QUEUE; import java.util.ArrayDeque; -public class Queue_ArrayDeque2 { +public class Queue_01_ArrayDeque { public static void main(String[] args) { // Instancia de ArrayDeque como Queue ArrayDeque deque = new ArrayDeque<>(); diff --git a/intelliJ/src/j0029_Collection_Queue/Queue_ArrayDeque.java b/intelliJ/src/j0066_T10_Collection_QUEUE/Queue_02_ArrayDeque.java similarity index 93% rename from intelliJ/src/j0029_Collection_Queue/Queue_ArrayDeque.java rename to intelliJ/src/j0066_T10_Collection_QUEUE/Queue_02_ArrayDeque.java index 7703a31..a34aada 100644 --- a/intelliJ/src/j0029_Collection_Queue/Queue_ArrayDeque.java +++ b/intelliJ/src/j0066_T10_Collection_QUEUE/Queue_02_ArrayDeque.java @@ -1,7 +1,7 @@ -package j0029_Collection_Queue; +package j0066_T10_Collection_QUEUE; import java.util.ArrayDeque; -public class Queue_ArrayDeque { +public class Queue_02_ArrayDeque { public static void main(String[] args) { // Instancia de tipo Genérico ArrayDeque cola = new ArrayDeque<>(); diff --git a/intelliJ/src/j0030_Collection_Map/MapMethods.java b/intelliJ/src/j0067_T10_Collection_MAP/Map_01_Methods.java similarity index 95% rename from intelliJ/src/j0030_Collection_Map/MapMethods.java rename to intelliJ/src/j0067_T10_Collection_MAP/Map_01_Methods.java index eaabc1c..a07b9b3 100644 --- a/intelliJ/src/j0030_Collection_Map/MapMethods.java +++ b/intelliJ/src/j0067_T10_Collection_MAP/Map_01_Methods.java @@ -1,10 +1,10 @@ -package j0030_Collection_Map; +package j0067_T10_Collection_MAP; import java.util.HashMap; import java.util.Map; import java.util.Set; import java.util.Collection; -public class MapMethods { +public class Map_01_Methods { public static void main(String[] args) { // Crear un mapa Map map = new HashMap<>(); diff --git a/intelliJ/src/j0030_Collection_Map/Map_HashMap.java b/intelliJ/src/j0067_T10_Collection_MAP/Map_02_HashMap.java similarity index 93% rename from intelliJ/src/j0030_Collection_Map/Map_HashMap.java rename to intelliJ/src/j0067_T10_Collection_MAP/Map_02_HashMap.java index 9363b31..6e7ecf1 100644 --- a/intelliJ/src/j0030_Collection_Map/Map_HashMap.java +++ b/intelliJ/src/j0067_T10_Collection_MAP/Map_02_HashMap.java @@ -1,7 +1,7 @@ -package j0030_Collection_Map; +package j0067_T10_Collection_MAP; import java.util.Map; import java.util.HashMap; -public class Map_HashMap{ +public class Map_02_HashMap { public static void main(String[]args){ //Instancia de tipo genérico HashMap alumno = new HashMap(); diff --git a/intelliJ/src/j0031_Collection_Iterator/Iterator.java b/intelliJ/src/j0068_T10_Collection_ITERATOR/Iterator.java similarity index 93% rename from intelliJ/src/j0031_Collection_Iterator/Iterator.java rename to intelliJ/src/j0068_T10_Collection_ITERATOR/Iterator.java index 3c04c3f..7bc6449 100644 --- a/intelliJ/src/j0031_Collection_Iterator/Iterator.java +++ b/intelliJ/src/j0068_T10_Collection_ITERATOR/Iterator.java @@ -1,4 +1,4 @@ -package j0031_Collection_Iterator; +package j0068_T10_Collection_ITERATOR; import java.util.LinkedList; diff --git a/intelliJ/src/j0031_Collection_Iterator/Iterator2.java b/intelliJ/src/j0068_T10_Collection_ITERATOR/Iterator2.java similarity index 96% rename from intelliJ/src/j0031_Collection_Iterator/Iterator2.java rename to intelliJ/src/j0068_T10_Collection_ITERATOR/Iterator2.java index 11e8161..22d3d7a 100644 --- a/intelliJ/src/j0031_Collection_Iterator/Iterator2.java +++ b/intelliJ/src/j0068_T10_Collection_ITERATOR/Iterator2.java @@ -1,4 +1,4 @@ -package j0031_Collection_Iterator; +package j0068_T10_Collection_ITERATOR; import java.util.Iterator; import java.util.LinkedList; diff --git a/intelliJ/src/j0070_GUI_Swing_AWT/Main.java b/intelliJ/src/j0070_GUI_Swing_AWT/Main.java new file mode 100644 index 0000000..1834d8e --- /dev/null +++ b/intelliJ/src/j0070_GUI_Swing_AWT/Main.java @@ -0,0 +1,25 @@ +package j0070_GUI_Swing_AWT; + +import javax.swing.*; +import java.awt.*; + +public class Main extends JFrame { + + private Container panel; + private JButton miboton; + + public Main() { + super("Ejemplo 01 con botón"); + miboton = new JButton("Aceptar"); + panel = getContentPane(); + panel.add(miboton); + + setSize(400, 200); + setVisible(true); + setDefaultCloseOperation(EXIT_ON_CLOSE); + } + + public static void main(String args[]) { + Main aplicacion = new Main(); + } +} diff --git a/intelliJ/src/test/Main.java b/intelliJ/src/test/Main.java index b17d8b9..d210206 100644 --- a/intelliJ/src/test/Main.java +++ b/intelliJ/src/test/Main.java @@ -1,9 +1,16 @@ package test; -public class Main{ - protected String dni; - protected String name; +import java.util.regex.*; - public double pacs(double pac1, double pac2, double pac3, double pac4){ - return (pac1 + pac2 + pac3)/3; +public class Main { + public static void main(String[] args) { + String cadena = "aabb"; // Cadena a evaluar + Pattern pat = Pattern.compile("(a|b)+"); + Matcher mat = pat.matcher(cadena); + + if (mat.matches()) { + System.out.println("SI"); + } else { + System.out.println("NO"); + } } -} \ No newline at end of file +} diff --git a/intelliJ/src/test/PI.java b/intelliJ/src/test/PI.java deleted file mode 100644 index e69de29..0000000 diff --git a/intelliJ/src/test/PO.java b/intelliJ/src/test/PO.java deleted file mode 100644 index 77f1be3..0000000 --- a/intelliJ/src/test/PO.java +++ /dev/null @@ -1,23 +0,0 @@ -package test; -public class PO extends Main{ - public PO(){ - super.dni = "123"; - super.name = "john"; - } - public double getNotaMedia(double pac1, double pac2, double pac3, double pac4){ - double notaMedia = pacs(pac1, pac2, pac3, pac4); - System.out.println("nota media: " + notaMedia); - return notaMedia; - } - - @Override - public double pacs(double pac1, double pac2, double pac3, double pac4){ - double notaFinal = ((pac1 + pac2 + pac3 + pac4) / 4) * 0.6; - return notaFinal; - } - - public static void main(String[] args) { - PO p = new PO(); - p.getNotaMedia(7,8,9,10); - } -} \ No newline at end of file From 5285e6fe6af06952685b11aa66a446408b3fd399 Mon Sep 17 00:00:00 2001 From: fireDevelop Date: Tue, 31 Dec 2024 10:17:57 +0100 Subject: [PATCH 8/8] . . --- intelliJ/src/j0071_GUI_Cine/Cartelera.java | 132 ++++++++++++++++++ intelliJ/src/j0071_GUI_Cine/images/accion.jpg | Bin 0 -> 13621 bytes .../src/j0071_GUI_Cine/images/comedia.jpg | Bin 0 -> 13648 bytes .../src/j0071_GUI_Cine/images/misterio.jpg | Bin 0 -> 8096 bytes .../src/j0071_GUI_Cine/images/romantica.jpg | Bin 0 -> 9364 bytes intelliJ/src/j0071_GUI_Cine/images/terror.jpg | Bin 0 -> 8833 bytes intelliJ/src/j0071_T11_FileReader/Main.java | 25 ++++ .../src/j0072_T13_Conexion_BBDD/Main.java | 42 ++++++ .../src/j0073_T13_Conexion_BBDD/Main.java | 59 ++++++++ 9 files changed, 258 insertions(+) create mode 100644 intelliJ/src/j0071_GUI_Cine/Cartelera.java create mode 100644 intelliJ/src/j0071_GUI_Cine/images/accion.jpg create mode 100644 intelliJ/src/j0071_GUI_Cine/images/comedia.jpg create mode 100644 intelliJ/src/j0071_GUI_Cine/images/misterio.jpg create mode 100644 intelliJ/src/j0071_GUI_Cine/images/romantica.jpg create mode 100644 intelliJ/src/j0071_GUI_Cine/images/terror.jpg create mode 100644 intelliJ/src/j0071_T11_FileReader/Main.java create mode 100644 intelliJ/src/j0072_T13_Conexion_BBDD/Main.java create mode 100644 intelliJ/src/j0073_T13_Conexion_BBDD/Main.java diff --git a/intelliJ/src/j0071_GUI_Cine/Cartelera.java b/intelliJ/src/j0071_GUI_Cine/Cartelera.java new file mode 100644 index 0000000..b11930b --- /dev/null +++ b/intelliJ/src/j0071_GUI_Cine/Cartelera.java @@ -0,0 +1,132 @@ +package j0071_GUI_Cine; + +import javax.swing.*; +import javax.swing.border.EmptyBorder; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class Cartelera extends JFrame { + + private static final long serialVersionUID = 1L; + private JPanel frameCartelera; + private JTextField campoTexto; + + /** + * Launch the application. + */ + public static void main(String[] args) { + EventQueue.invokeLater(new Runnable() { + public void run() { + try { + Cartelera frame = new Cartelera(); + frame.setVisible(true); + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + } + + /** + * Create the frame. + */ + public Cartelera() { + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setBounds(100, 100, 960, 320); + frameCartelera = new JPanel(); + frameCartelera.setBorder(new EmptyBorder(5, 5, 5, 5)); + + setContentPane(frameCartelera); + frameCartelera.setLayout(null); + + JLabel labelPregunta = new JLabel("¿Qué te apetece ver hoy?"); + labelPregunta.setBounds(10, 58, 363, 27); + labelPregunta.setForeground(new Color(0, 0, 255)); + labelPregunta.setFont(new Font("Broadway", Font.PLAIN, 23)); + frameCartelera.add(labelPregunta); + + JRadioButton rbRomantica = new JRadioButton("Romántica"); + rbRomantica.setBounds(355, 19, 169, 33); + frameCartelera.add(rbRomantica); + rbRomantica.setFont(new Font("Consolas", Font.ITALIC, 21)); + + JRadioButton rbMisterio = new JRadioButton("Misterio"); + rbMisterio.setBounds(355, 227, 158, 33); + frameCartelera.add(rbMisterio); + rbMisterio.setFont(new Font("Consolas", Font.ITALIC, 21)); + + JRadioButton rbTerror = new JRadioButton("Terror"); + rbTerror.setBounds(355, 71, 169, 33); + frameCartelera.add(rbTerror); + rbTerror.setFont(new Font("Consolas", Font.ITALIC, 21)); + + JRadioButton rbComedia = new JRadioButton("Comedia"); + rbComedia.setBounds(355, 123, 158, 33); + frameCartelera.add(rbComedia); + rbComedia.setFont(new Font("Consolas", Font.ITALIC, 21)); + + JRadioButton rbAccion = new JRadioButton("Acción"); + rbAccion.setBounds(355, 175, 158, 33); + frameCartelera.add(rbAccion); + rbAccion.setFont(new Font("Consolas", Font.ITALIC, 21)); + + ButtonGroup bgGeneroPelis = new ButtonGroup(); + bgGeneroPelis.add(rbAccion); + bgGeneroPelis.add(rbComedia); + bgGeneroPelis.add(rbMisterio); + bgGeneroPelis.add(rbRomantica); + bgGeneroPelis.add(rbTerror); + + JPanel panel = new JPanel(); + panel.setBounds(615, 10, 248, 241); + frameCartelera.add(panel); + panel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5)); + + JLabel labelImagen = new JLabel(""); + panel.add(labelImagen); + + campoTexto = new JTextField(); + campoTexto.setBounds(73, 95, 149, 45); + frameCartelera.add(campoTexto); + campoTexto.setColumns(10); + + JTextArea areaTexto = new JTextArea(); + areaTexto.setBounds(73, 186, 169, 74); + frameCartelera.add(areaTexto); +/* + rbAccion.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + labelImagen.setIcon(new ImageIcon("images/accion.jpg")); + } + }); +*/ + + + ActionListener actionListener = new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (e.getSource()==rbAccion) + labelImagen.setIcon(new ImageIcon("images/accion.jpg")); + else if (e.getSource()==rbComedia) + labelImagen.setIcon(new ImageIcon("images/comedia.jpg")); + else if (e.getSource()==rbTerror) + labelImagen.setIcon(new ImageIcon("images/terror.jpg")); + else if (e.getSource()==rbMisterio) + labelImagen.setIcon(new ImageIcon("images/misterio.jpg")); + else if (e.getSource()==rbRomantica) + labelImagen.setIcon(new ImageIcon("images/romantica.jpg")); + + areaTexto.setText(campoTexto.getText()); + } + }; + + rbAccion.addActionListener(actionListener); + rbComedia.addActionListener(actionListener); + rbTerror.addActionListener(actionListener); + rbMisterio.addActionListener(actionListener); + rbRomantica.addActionListener(actionListener); + + } +} diff --git a/intelliJ/src/j0071_GUI_Cine/images/accion.jpg b/intelliJ/src/j0071_GUI_Cine/images/accion.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d47b0caa63801c3e00a6a210855dc8dcbf34d7a0 GIT binary patch literal 13621 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 W|HgrnlacDjPirS9C%u4w*Zv1&WyHAv literal 0 HcmV?d00001 diff --git a/intelliJ/src/j0071_GUI_Cine/images/comedia.jpg b/intelliJ/src/j0071_GUI_Cine/images/comedia.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e7b7e6cfc79d34ef6d40ade323d5f7660e1d12e3 GIT binary patch literal 13648 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 QS{J80J=rHjI1lsx4;psvbN~PV literal 0 HcmV?d00001 diff --git a/intelliJ/src/j0071_GUI_Cine/images/romantica.jpg b/intelliJ/src/j0071_GUI_Cine/images/romantica.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5137024dec288fb6425300f2af695a19df840534 GIT binary patch literal 9364 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 " + + cantidad; // En blanco 4 + + // Execute the update + st.executeUpdate(sql2); // En blanco 5 + System.out.println("Update successful!"); + + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (rs != null) rs.close(); + if (st != null) st.close(); + if (cn != null) cn.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } +}