Compare commits

..

12 Commits

Author SHA1 Message Date
cda052c201 Ejercicios capítulo 9 bloque 1 2025-03-17 13:24:58 +01:00
c6cf4cc521 Ejercicios capítulo 8 bloque 2 2025-03-03 23:05:34 +01:00
4bd06846e9 Borrado de archivos innecesarios 2025-02-24 22:37:42 +01:00
50c9861107 Ejercicios capítulo 8 bloque 1 2025-02-24 22:37:18 +01:00
78e1844de0 Librerías y config BBDD 2025-02-24 22:36:29 +01:00
d7786fbc87 Ejercicios Capitulo 7 bloque 5 2025-01-26 12:20:40 +01:00
f2e65af1e8 Corrección de una comparación 2025-01-24 23:43:17 +01:00
ace5b8314a Ejercicios Capitulo 7 bloque 4 2025-01-24 23:06:30 +01:00
905014d150 Ejercicios Capitulo 7 bloque 3 2025-01-21 20:57:51 +01:00
0c733fbd4e Ejercicios Capitulo 7 bloque 2 2025-01-19 17:12:38 +01:00
d9548b68b2 Ejercicios Capitulo 7 bloque 1 2025-01-17 12:53:47 +01:00
5a112e42b0 Ejercicios Capitulo 7 bloque 1 2025-01-17 12:50:33 +01:00
66 changed files with 1982 additions and 257 deletions

7
.idea/jpa.xml generated Normal file
View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JpaBuddyIdeaProjectConfig">
<option name="defaultUnitInitialized" value="true" />
<option name="renamerInitialized" value="true" />
</component>
</project>

26
.idea/libraries/librerias.xml generated Normal file
View File

@@ -0,0 +1,26 @@
<component name="libraryTable">
<library name="librerias">
<CLASSES>
<root url="jar://$PROJECT_DIR$/librerias/JDBC_Oracle_Connection_Pool/ucp.jar!/" />
<root url="jar://$PROJECT_DIR$/librerias/Driver_MySQL_Connector_J/mysql-connector-java-8.0.19.jar!/" />
<root url="jar://$PROJECT_DIR$/librerias/mongoDB-Java-driver/mongo-java-driver-3.12.12.jar!/" />
<root url="jar://$PROJECT_DIR$/librerias/EclipseLink2.5.2/jlib/eclipselink.jar!/" />
<root url="jar://$PROJECT_DIR$/librerias/EclipseLink2.5.2/jlib/jpa/org.eclipse.persistence.jpars_2.5.2.v20140319-9ad6abd.jar!/" />
<root url="jar://$PROJECT_DIR$/librerias/EclipseLink2.5.2/jlib/jpa/org.eclipse.persistence.jpa.modelgen_2.5.2.v20140319-9ad6abd.jar!/" />
<root url="jar://$PROJECT_DIR$/librerias/EclipseLink2.5.2/jlib/jpa/javax.persistence_2.1.0.v201304241213.jar!/" />
<root url="jar://$PROJECT_DIR$/librerias/EclipseLink2.5.2/jlib/moxy/javax.xml.stream_1.0.1.v201004272200.jar!/" />
<root url="jar://$PROJECT_DIR$/librerias/EclipseLink2.5.2/jlib/moxy/javax.xml.bind_2.2.0.v201105210648.jar!/" />
<root url="jar://$PROJECT_DIR$/librerias/EclipseLink2.5.2/jlib/moxy/javax.mail_1.4.0.v201005080615.jar!/" />
<root url="jar://$PROJECT_DIR$/librerias/EclipseLink2.5.2/jlib/moxy/javax.activation_1.1.0.v201108011116.jar!/" />
<root url="jar://$PROJECT_DIR$/librerias/EclipseLink2.5.2/jlib/moxy/com.sun.xml.bind_2.2.0.v201004141950.jar!/" />
<root url="jar://$PROJECT_DIR$/librerias/EclipseLink2.5.2/jlib/moxy/com.sun.tools.xjc_2.2.0.jar!/" />
<root url="jar://$PROJECT_DIR$/librerias/Jackson/jackson-databind-2.9.5.jar!/" />
<root url="jar://$PROJECT_DIR$/librerias/Jackson/jackson-core-2.9.5.jar!/" />
<root url="jar://$PROJECT_DIR$/librerias/Jackson/jackson-annotations-2.9.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$PROJECT_DIR$/librerias/EclipseLink2.5.2/jlib/moxy/com.sun.tools.xjc_2.2.0.jar!/1.0" />
</SOURCES>
</library>
</component>

3
.idea/misc.xml generated
View File

@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" /> <component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="JavadocGenerationManager"> <component name="JavadocGenerationManager">
<option name="OUTPUT_DIRECTORY" value="$USER_HOME$/Downloads/javadoc" /> <option name="OUTPUT_DIRECTORY" value="$USER_HOME$/Downloads/javadoc" />
<option name="OPTION_INCLUDE_LIBS" value="true" /> <option name="OPTION_INCLUDE_LIBS" value="true" />
</component> </component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_23" default="true" project-jdk-name="homebrew-22" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_23" default="true" project-jdk-name="homebrew-23" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" /> <output url="file://$PROJECT_DIR$/out" />
</component> </component>
</project> </project>

3
.idea/uiDesigner.xml generated
View File

@@ -121,4 +121,7 @@
</item> </item>
</group> </group>
</component> </component>
<component name="uidesigner-configuration">
<option name="DEFAULT_LAYOUT_MANAGER" value="BorderLayout" />
</component>
</project> </project>

9
Ejercicios.eml Normal file
View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<component inherit-compiler-output="true" inheritJdk="true">
<output-test url="file://$MODULE_DIR$/out/test/Ejercicios"/>
<exclude-output/>
<contentEntry url="file://$MODULE_DIR$"/>
<levels>
<level name="librerias" value="project"/>
</levels>
</component>

View File

@@ -7,5 +7,6 @@
</content> </content>
<orderEntry type="inheritedJdk" /> <orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="librerias" level="project" />
</component> </component>
</module> </module>

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<eclipse-userlibraries>
<library name="librerias">
<archive path="/Users/h4ckx0r/IdeaProjects/EjerciciosProgramacion/librerias/JDBC_Oracle_Connection_Pool/ucp.jar" />
<archive path="/Users/h4ckx0r/IdeaProjects/EjerciciosProgramacion/librerias/Driver_MySQL_Connector_J/mysql-connector-java-8.0.19.jar" />
<archive path="/Users/h4ckx0r/IdeaProjects/EjerciciosProgramacion/librerias/mongoDB-Java-driver/mongo-java-driver-3.12.12.jar" />
<archive path="/Users/h4ckx0r/IdeaProjects/EjerciciosProgramacion/librerias/EclipseLink2.5.2/jlib/eclipselink.jar" />
<archive path="/Users/h4ckx0r/IdeaProjects/EjerciciosProgramacion/librerias/EclipseLink2.5.2/jlib/jpa/org.eclipse.persistence.jpars_2.5.2.v20140319-9ad6abd.jar" />
<archive path="/Users/h4ckx0r/IdeaProjects/EjerciciosProgramacion/librerias/EclipseLink2.5.2/jlib/jpa/org.eclipse.persistence.jpa.modelgen_2.5.2.v20140319-9ad6abd.jar" />
<archive path="/Users/h4ckx0r/IdeaProjects/EjerciciosProgramacion/librerias/EclipseLink2.5.2/jlib/jpa/javax.persistence_2.1.0.v201304241213.jar" />
<archive path="/Users/h4ckx0r/IdeaProjects/EjerciciosProgramacion/librerias/EclipseLink2.5.2/jlib/moxy/javax.xml.stream_1.0.1.v201004272200.jar" />
<archive path="/Users/h4ckx0r/IdeaProjects/EjerciciosProgramacion/librerias/EclipseLink2.5.2/jlib/moxy/javax.xml.bind_2.2.0.v201105210648.jar" />
<archive path="/Users/h4ckx0r/IdeaProjects/EjerciciosProgramacion/librerias/EclipseLink2.5.2/jlib/moxy/javax.mail_1.4.0.v201005080615.jar" />
<archive path="/Users/h4ckx0r/IdeaProjects/EjerciciosProgramacion/librerias/EclipseLink2.5.2/jlib/moxy/javax.activation_1.1.0.v201108011116.jar" />
<archive path="/Users/h4ckx0r/IdeaProjects/EjerciciosProgramacion/librerias/EclipseLink2.5.2/jlib/moxy/com.sun.xml.bind_2.2.0.v201004141950.jar" />
<archive path="/Users/h4ckx0r/IdeaProjects/EjerciciosProgramacion/librerias/EclipseLink2.5.2/jlib/moxy/com.sun.tools.xjc_2.2.0.jar" />
<archive path="/Users/h4ckx0r/IdeaProjects/EjerciciosProgramacion/librerias/Jackson/jackson-databind-2.9.5.jar" />
<archive path="/Users/h4ckx0r/IdeaProjects/EjerciciosProgramacion/librerias/Jackson/jackson-core-2.9.5.jar" />
<archive path="/Users/h4ckx0r/IdeaProjects/EjerciciosProgramacion/librerias/Jackson/jackson-annotations-2.9.0.jar" />
</library>
</eclipse-userlibraries>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,9 @@
package capitulo07.bloque01;
public class HexNums {
public static void main(String[] args) {
for (int i = 0; i <= 100; i++) { // Son 101 números, pero bueno, quería incluir el 0 y el 100
System.out.println("Dec: " + i + " | Hex: " + Integer.toHexString(i));
}
}
}

View File

@@ -0,0 +1,31 @@
package capitulo07.bloque01;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.Properties;
public class LeerFicheroPropiedades {
public static void main(String[] args) {
Properties propiedades = new Properties();
try {
File archivo = new File("./src/capitulo07/bloque01/ficheroPropiedades.properties");
propiedades.load(new FileReader(archivo, StandardCharsets.UTF_8));
} catch (FileNotFoundException e) {
System.out.println("No se ha encontrado el fichero");
} catch (IOException e) {
System.out.println("Error al leer el fichero");
}
System.out.println(Charset.availableCharsets());
System.out.println( "Nombre: " + propiedades.getProperty("NOMBRE"));
System.out.println( "Apellidos: " + propiedades.getProperty("APELLIDOS"));
System.out.println( "Edad: " + Integer.valueOf(propiedades.getProperty("EDAD")));
System.out.println( "Altura: " + Float.valueOf(propiedades.getProperty("ALTURA")));
System.out.println( "Soltero: " + Boolean.valueOf(propiedades.getProperty("SOLTERO")));
}
}

View File

@@ -0,0 +1,35 @@
package capitulo07.bloque01;
public class ListaWrappers {
public static void main(String[] args) {
System.out.println("Integer:");
System.out.println("\tBytes: " + Integer.BYTES);
System.out.println("\tValor Máximo: " + Integer.MAX_VALUE);
System.out.println("\tValor Mínimo: " + Integer.MIN_VALUE);
System.out.println("\nByte:");
System.out.println("\tBytes: " + Byte.BYTES);
System.out.println("\tValor Máximo: " + Byte.MAX_VALUE);
System.out.println("\tValor Mínimo: " + Byte.MIN_VALUE);
System.out.println("\nShort:");
System.out.println("\tBytes: " + Short.BYTES);
System.out.println("\tValor Máximo: " + Short.MAX_VALUE);
System.out.println("\tValor Mínimo: " + Short.MIN_VALUE);
System.out.println("\nLong:");
System.out.println("\tBytes: " + Long.BYTES);
System.out.println("\tValor Máximo: " + Long.MAX_VALUE);
System.out.println("\tValor Mínimo: " + Long.MIN_VALUE);
System.out.println("\nFloat:");
System.out.println("\tBytes: " + Float.BYTES);
System.out.println("\tValor Máximo: " + Float.MAX_VALUE);
System.out.println("\tValor Mínimo: " + Float.MIN_VALUE);
System.out.println("\nDouble:");
System.out.println("\tBytes: " + Double.BYTES);
System.out.println("\tValor Máximo: " + Double.MAX_VALUE);
System.out.println("\tValor Mínimo: " + Double.MIN_VALUE);
}
}

View File

@@ -0,0 +1,34 @@
package capitulo07.bloque01;
import static capitulo04.utils.Utils.*;
public class Password {
public static void main(String[] args) {
boolean mayuscula;
boolean minuscula;
boolean digito;
boolean caracter;
do {
mayuscula = false;
minuscula = false;
digito = false;
caracter = false;
String password = solicitarStringScannerInline("Introduzca una contraseña: ");
for (Character c : password.toCharArray()) {
if (Character.isUpperCase(c)) mayuscula = true;
if (Character.isLowerCase(c)) minuscula = true;
if (Character.isDigit(c)) digito = true;
if (!Character.isLetterOrDigit(c)) caracter = true;
}
if (!mayuscula) System.out.println("La contraseña tiene que tener una mayúscula");
if (!minuscula) System.out.println("La contraseña tiene que tener una minúscula");
if (!digito) System.out.println("La contraseña tiene que tener un digito");
if (!caracter) System.out.println("La contraseña tiene que tener un carácter no alfanumérico");
} while (!(mayuscula && minuscula && digito && caracter));
System.out.println("Contraseña guardada correctamente");
}
}

View File

@@ -0,0 +1,6 @@
# Datos del usuario en uso
NOMBRE=Natanael
APELLIDOS=G<EFBFBD>mez Ortiz
EDAD=18
ALTURA=160.6
SOLTERO=true

View File

@@ -0,0 +1,19 @@
package capitulo07.bloque02;
public class Ejercicio01 {
public static void main(String[] args) {
double x = 0.0;
double y1;
double y2;
do {
x += 0.00001;
y1 = Math.sqrt(x);
y2 = -Math.log(x);
} while (Math.abs(y1 - y2) > 0.001);
System.out.println("El valor de x es: " + x);
System.out.println("El valor de y1 es: " + y1);
System.out.println("El valor de y2 es: " + y2);
}
}

View File

@@ -0,0 +1,19 @@
package capitulo07.bloque02;
public class Ejercicio02 {
public static void main(String[] args) {
double pi = 0;
boolean suma = true;
for (int i = 1; true; i+=2) {
if (suma) {
pi += 4.0/i;
} else {
pi -= 4.0/i;
}
suma = !suma;
System.out.println((Math.PI) + " | " + pi);
if (Math.abs(Math.PI - pi) < 0.00001) break;
}
}
}

View File

@@ -0,0 +1,7 @@
package capitulo07.bloque02;
public class Ejercicio03 {
public static void main(String[] args) {
System.out.println(Math.hypot(4,5));
}
}

View File

@@ -0,0 +1,65 @@
package capitulo07.bloque02;
import javax.swing.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;
public class Ejercicio04 {
public static void main(String[] args) {
String fecha = JOptionPane.showInputDialog("Mete una fecha con el siguiente formato: dd/MM/yyyy");
SimpleDateFormat formatoFecha = new SimpleDateFormat("dd/MM/yyyy");
Date fechaFormateada = null;
Calendar fechaCalendar = null;
try {
fechaFormateada = formatoFecha.parse(fecha);
fechaCalendar = new GregorianCalendar();
fechaCalendar.setTimeInMillis(fechaFormateada.getTime());
} catch (ParseException e) {
System.err.println("No se ha introducido la fecha en un formato válido");
}
System.out.println("Date:");
System.out.println("\tAño: " + new SimpleDateFormat("yyyy").format(fechaFormateada));
System.out.println("\tMes: " + new SimpleDateFormat("MM").format(fechaFormateada));
System.out.println("\tDía: " + new SimpleDateFormat("dd").format(fechaFormateada));
System.out.println("\tHora: " + new SimpleDateFormat("HH").format(fechaFormateada));
System.out.println("\tMinutos: " + new SimpleDateFormat("mm").format(fechaFormateada));
System.out.println("\tSegundos: " + new SimpleDateFormat("ss").format(fechaFormateada));
System.out.println("Calendar:");
System.out.println("\tAño: " + fechaCalendar.get(Calendar.YEAR));
System.out.println("\tMes: " + (1 +fechaCalendar.get(Calendar.MONTH)));
System.out.println("\tDía: " + fechaCalendar.get(Calendar.DAY_OF_MONTH));
System.out.println("\tHora: " + fechaCalendar.get(Calendar.HOUR));
System.out.println("\tMinutos: " + fechaCalendar.get(Calendar.MINUTE));
System.out.println("\tSegundos: " + fechaCalendar.get(Calendar.SECOND));
System.out.println("Operaciones Fechas:");
Calendar fechaActual = Calendar.getInstance();
fechaActual.add(Calendar.DAY_OF_MONTH, 3);
System.out.println("\tSuma 3 días: " + fechaActual.getTime());
fechaActual.add(Calendar.WEEK_OF_MONTH, -2);
System.out.println("\tResta 2 semanas: " + fechaActual.getTime());
fechaActual.add(Calendar.DAY_OF_MONTH, 300);
System.out.println("\tSuma 300 días: " + fechaActual.getTime());
fechaActual.add(Calendar.YEAR, 4);
System.out.println("\tSuma 4 años: " + fechaActual.getTime());
Calendar horaItalia = Calendar.getInstance(TimeZone.getTimeZone("Europe/Rome"));
Calendar horaWashington = Calendar.getInstance(TimeZone.getTimeZone("America/New_York"));
System.out.println("Hora en Italia: " + horaItalia.get(Calendar.HOUR_OF_DAY));
System.out.println("Hora en Washington: " + horaWashington.get(Calendar.HOUR_OF_DAY));
System.out.println("Diferencia horaria: " + (horaItalia.get(Calendar.HOUR_OF_DAY)-horaWashington.get(Calendar.HOUR_OF_DAY)) + " horas");
}
}

View File

@@ -0,0 +1,27 @@
package capitulo07.bloque03.ejercicio01;
import capitulo07.bloque03.ejercicio01.exeptions.OddException;
import java.util.Scanner;
public class PeticionNumeros {
static Scanner sc = new Scanner(System.in);
public static int pideNumeroPar() throws OddException {
System.out.print("Escriba un número par: ");
int num = sc.nextInt();
if (num % 2 != 0) throw new OddException("El número dado es impar.");
return num;
}
public static void main(String[] args) {
int num = 0;
do {
try {
num = pideNumeroPar();
} catch (OddException e) {
System.err.println("El número dado es impar por lo que ha provocado la siguiente Exception: ");
e.printStackTrace();
}
} while (num != 0);
}
}

View File

@@ -0,0 +1,7 @@
package capitulo07.bloque03.ejercicio01.exeptions;
public class OddException extends Exception{
public OddException(String message) {
super(message);
}
}

View File

@@ -0,0 +1,50 @@
package capitulo07.bloque03.ejercicio02;
import capitulo07.bloque03.ejercicio02.exceptions.StringContienePalabraProhibidaException;
import capitulo07.bloque03.ejercicio02.exceptions.StringEnBlancoException;
import capitulo07.bloque03.ejercicio02.exceptions.StringMenosTresPalabrasException;
import capitulo07.bloque03.ejercicio02.exceptions.StringSinPalabraRequeridaException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
static Scanner sc = new Scanner(System.in);
public static String pedirFraseConPalabra(String palabra) throws StringEnBlancoException, StringMenosTresPalabrasException, StringSinPalabraRequeridaException, StringContienePalabraProhibidaException {
String textoIntroducido;
String[] palabrasProhibidas = new String[]{"tonto", "tonta", "idiota"};
System.out.print("Introduzca una frase con la palabra " + palabra + ": ");
textoIntroducido = sc.nextLine();
if (textoIntroducido.isBlank())
throw new StringEnBlancoException("La cadena de texto está vacía o sólo tiene espacios en Blanco");
int conteoEspacios = 0;
for (char c : textoIntroducido.trim().toCharArray()) {
if (c == ' ') conteoEspacios++;
}
if (conteoEspacios <= 1)
throw new StringMenosTresPalabrasException("La cadena de texto tiene menos de 3 palabras");
if (!textoIntroducido.toLowerCase().contains(palabra))
throw new StringSinPalabraRequeridaException("La cadena de texto no contiene la palabra requerida");
for (String str : palabrasProhibidas) {
if (textoIntroducido.toLowerCase().contains(str))
throw new StringContienePalabraProhibidaException("La cadena de texto contiene una palabra prohibida");
}
return textoIntroducido;
}
public static void main(String[] args) {
try {
String stringIntroducido = pedirFraseConPalabra("bombilla");
} catch (StringEnBlancoException | StringMenosTresPalabrasException | StringSinPalabraRequeridaException | StringContienePalabraProhibidaException e) {
System.err.println(e.getMessage());
}
}
}

View File

@@ -0,0 +1,7 @@
package capitulo07.bloque03.ejercicio02.exceptions;
public class StringContienePalabraProhibidaException extends RuntimeException {
public StringContienePalabraProhibidaException(String message) {
super(message);
}
}

View File

@@ -0,0 +1,7 @@
package capitulo07.bloque03.ejercicio02.exceptions;
public class StringEnBlancoException extends Exception {
public StringEnBlancoException(String message) {
super(message);
}
}

View File

@@ -0,0 +1,7 @@
package capitulo07.bloque03.ejercicio02.exceptions;
public class StringMenosTresPalabrasException extends RuntimeException {
public StringMenosTresPalabrasException(String message) {
super(message);
}
}

View File

@@ -0,0 +1,7 @@
package capitulo07.bloque03.ejercicio02.exceptions;
public class StringSinPalabraRequeridaException extends RuntimeException {
public StringSinPalabraRequeridaException(String message) {
super(message);
}
}

View File

@@ -0,0 +1,37 @@
package capitulo07.bloque04;
import capitulo07.bloque04.listener.Calculadora;
import capitulo07.bloque04.listener.OperacionEvent;
import capitulo07.bloque04.listener.OperacionesListener;
public class AvisosCalculo implements OperacionesListener {
public AvisosCalculo() {
Calculadora.addOperationsListener(this);
}
@Override
public void sumaMayor1000(OperacionEvent event) {
System.out.println("La suma ha sobrepasado 1000 con el valor " + event.getResultado());
}
@Override
public void multiplicacionMayor1000(OperacionEvent event) {
System.out.println("La multiplicación ha sobrepasado 1000 con el valor " + event.getResultado());
}
@Override
public void restaNegativa(OperacionEvent event) {
System.out.println("El resultado de la resta es negativo: " + event.getResultado());
}
@Override
public void divisor0(OperacionEvent event) {
System.out.println("No es posible dividir por 0");
}
@Override
public void raizNegativa(OperacionEvent event) {
System.out.println("No se puede calcular la raiz cuadrada de un número negativo");
}
}

View File

@@ -0,0 +1,57 @@
package capitulo07.bloque04;
import capitulo07.bloque04.listener.Calculadora;
import static capitulo04.utils.Utils.solicitarFloatScannerInline;
import static capitulo04.utils.Utils.solicitarIntScannerInline;
public class Main {
public static void main(String[] args) {
int opcion = 0;
new AvisosCalculo();
do {
System.out.println("Calculadora (0 para salir):" +
"\n 1 - Suma" +
"\n 2 - Resta" +
"\n 3 - Multiplicación" +
"\n 4 - División" +
"\n 5 - Raiz Cuadrada");
opcion = solicitarIntScannerInline("> ");
float num1 = 0;
float num2 = 0;
switch (opcion) {
case 1:
num1 = solicitarFloatScannerInline("Introduzca el primer sumando: ");
num2 = solicitarFloatScannerInline("Introduzca el segundo sumando: ");
System.out.println("Resultado de la suma: " + Calculadora.suma(num1, num2));
break;
case 2:
num1 = solicitarFloatScannerInline("Introduzca el minuendo: ");
num2 = solicitarFloatScannerInline("Introduzca el sustraendo: ");
System.out.println("Resultado de la resta: " + Calculadora.resta(num1,num2));
break;
case 3:
num1 = solicitarFloatScannerInline("Introduzca el primer factor: ");
num2 = solicitarFloatScannerInline("Introduzca el segundo factor: ");
System.out.println("Resultado de la multiplicación: " + Calculadora.multiplica(num1,num2));
break;
case 4:
num1 = solicitarFloatScannerInline("Introduzca el dividendo: ");
num2 = solicitarFloatScannerInline("Introduzca el divisor: ");
System.out.println("Resultado de la división: " + Calculadora.divide(num1, num2));
break;
case 5:
num1 = solicitarFloatScannerInline("Introduzca el radicando: ");
System.out.println("Resultado de la raiz cuadrada: " + Calculadora.hazRaizCuadrada(num1));
break;
}
} while (opcion != 0);
}
}

View File

@@ -0,0 +1,87 @@
package capitulo07.bloque04.listener;
import java.util.ArrayList;
import java.util.List;
public class Calculadora {
static List<OperacionesListener> listeners = new ArrayList<OperacionesListener>();
public static void addOperationsListener(OperacionesListener l) {
listeners.add(l);
}
public static void removeOperationsListener(OperacionesListener l) {
listeners.remove(l);
}
private static void fireSumaMayor1000(float resultado) {
for (OperacionesListener opl : listeners) {
opl.sumaMayor1000(new OperacionEvent(resultado));
}
}
private static void fireMultiplicacionMayor1000(float resultado) {
for (OperacionesListener opl : listeners) {
opl.multiplicacionMayor1000(new OperacionEvent(resultado));
}
}
private static void fireRestaNegativa(float resultado) {
for (OperacionesListener opl : listeners) {
opl.restaNegativa(new OperacionEvent(resultado));
}
}
private static void fireDivision0(float resultado) {
for (OperacionesListener opl : listeners) {
opl.divisor0(new OperacionEvent(resultado));
}
}
private static void fireRaizNegativa(float resultado) {
for (OperacionesListener opl : listeners) {
opl.raizNegativa(new OperacionEvent(resultado));
}
}
public static float suma(float num1, float num2) {
float resultado = num1 + num2;
if (resultado > 1000) fireSumaMayor1000(resultado);
return resultado;
}
public static float multiplica(float num1, float num2) {
float resultado = num1 * num2;
if (resultado > 1000) fireMultiplicacionMayor1000(resultado);
return resultado;
}
public static float resta(float num1, float num2) {
float resultado = num1 - num2;
if (resultado < 0) fireRestaNegativa(resultado);
return resultado;
}
public static float divide(float num1, float num2) {
if (num2 == 0) {
fireDivision0(num2);
return num2;
} else {
return num1 / num2;
}
}
public static float hazRaizCuadrada(float num) {
if (num < 0) {
fireRaizNegativa(num);
return num;
} else {
return (float) Math.sqrt(num);
}
}
}

View File

@@ -0,0 +1,24 @@
package capitulo07.bloque04.listener;
public class OperacionEvent {
private float resultado;
public OperacionEvent(float resultado) {
this.resultado = resultado;
}
public float getResultado() {
return resultado;
}
public void setResultado(float resultado) {
this.resultado = resultado;
}
@Override
public String toString() {
return "OperacionEvent{" +
"resultado=" + resultado +
'}';
}
}

View File

@@ -0,0 +1,14 @@
package capitulo07.bloque04.listener;
public interface OperacionesListener {
public void sumaMayor1000(OperacionEvent event);
public void multiplicacionMayor1000(OperacionEvent event);
public void restaNegativa(OperacionEvent event);
public void divisor0(OperacionEvent event);
public void raizNegativa(OperacionEvent event);
}

View File

@@ -0,0 +1,17 @@
package capitulo07.bloque05;
public class ConteoRegresivo {
public static void main(String[] args) {
int n = 10;
System.out.println("El conteo regresivo de " + n + " es:");
contar(n);
}
public static void contar(int n) {
if (n > 0) {
System.out.print(n + " ");
contar(n - 1);
} else {
System.out.println("Fin del conteo regresivo");
}
}
}

View File

@@ -0,0 +1,17 @@
package capitulo07.bloque05;
public class Fibonacci {
public static void main(String[] args) {
int n = 10;
System.out.println("El numero " + n + " de la secuencia de Fibonacci es el " + fibonacci(n));
}
public static int fibonacci(int n) {
if (n == 0) {
return 0;
} else if (n == 1) {
return 1;
}
return fibonacci(n - 1) + fibonacci(n - 2);
}
}

View File

@@ -0,0 +1,16 @@
package capitulo07.bloque05;
public class PotenciaRecursiva {
public static void main(String[] args) {
int base = 2;
int exponente = 10;
System.out.println(base + " elevado a " + exponente + " es igual a " + potencia(base, exponente));
}
public static int potencia(int base, int exponente) {
if (exponente == 0) {
return 1;
} else {
return base * potencia(base, exponente - 1);
}
}
}

View File

@@ -0,0 +1,389 @@
package capitulo08.bloque01y02;
import capitulo08.bloque01y02.operaciones.Delete;
import capitulo08.bloque01y02.operaciones.Insert;
import capitulo08.bloque01y02.operaciones.Select;
import capitulo08.bloque01y02.operaciones.Update;
import java.sql.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
import static capitulo04.utils.Utils.solicitarIntScannerInline;
import static capitulo04.utils.Utils.solicitarStringScannerInline;
public class Main {
public static void main(String[] args) {
int opcion = 0;
Connection conn = null;
try {
conn = getConexion();
} catch (SQLException | ClassNotFoundException e) {
throw new RuntimeException(e);
}
do {
System.out.println(
"\n¿Qué quieres administrar?:\n" +
"0 - Salir del programa\n" +
"1 - Coches\n" +
"2 - Fabricantes\n" +
"3 - Concesionarios\n" +
"4 - Clientes\n" +
"5 - Ventas");
opcion = solicitarIntScannerInline("> ");
switch (opcion) {
case 1:
menuCoches(conn);
break;
case 2:
menuFabricantes(conn);
break;
case 3:
menuConcesionarios(conn);
break;
case 4:
menuClientes(conn);
break;
case 5:
menuVentas(conn);
break;
}
} while (opcion != 0);
try {
conn.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
private static Connection getConexion() throws ClassNotFoundException, SQLException {
//Class.forName(PropiedadesBBDD.getMySQLDriver());
return DriverManager.getConnection(PropiedadesBBDD.getMySQLConnectionString());
}
private static void menuFabricantes(Connection conn) {
int opcion = 0;
do {
System.out.println(
"\nSeleccione una operación:\n" +
"0 - Volver atrás\n" +
"1 - Mostrar todos los fabricantes\n" +
"2 - Añadir un fabricante\n" +
"3 - Actualizar un fabricante\n" +
"4 - Eliminar un fabricante");
opcion = solicitarIntScannerInline("> ");
try {
switch (opcion) {
case 1: {
Select.mostrarTabla(conn, "fabricante");
break;
}
case 2: {
Insert.addFabricante(conn,
solicitarStringScannerInline("Introduzca el CIF: "),
solicitarStringScannerInline("Introduzca el Nombre: "));
break;
}
case 3: {
int id;
do {
id = solicitarIntScannerInline("Introduzca el ID del fabricante: ");
} while (!Select.isIdValid(conn, "fabricante", id));
String cifNuevo = solicitarStringScannerInline("Introduzca el nuevo CIF (en blanco para no cambiar): ");
String nombreNuevo = solicitarStringScannerInline("Introduzca el nuevo Nombre (en blanco para no cambiar): ");
Update.actualizarFabricante(conn, id, cifNuevo, nombreNuevo);
break;
}
case 4: {
int id;
do {
id = solicitarIntScannerInline("Introduzca el ID del fabricante: ");
} while (!Select.isIdValid(conn, "fabricante", id));
Delete.eliminarRegistro(conn, "fabricante", id);
break;
}
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
} while (opcion != 0);
}
private static void menuCoches(Connection conn) {
int opcion = 0;
do {
System.out.println(
"\nSeleccione una operación:\n" +
"0 - Volver atrás\n" +
"1 - Mostrar todos los coches\n" +
"2 - Añadir un coche\n" +
"3 - Actualizar un coche\n" +
"4 - Eliminar un coche");
opcion = solicitarIntScannerInline("> ");
try {
switch (opcion) {
case 1: {
Select.mostrarTabla(conn, "coche");
break;
}
case 2: {
Insert.addCoche(conn,
solicitarIntScannerInline("Introduzca el ID del fabricante: "),
solicitarStringScannerInline("Introduzca número del bastidor: "),
solicitarStringScannerInline("Introduzca el modelo: "),
solicitarStringScannerInline("Introduzca el color: "));
break;
}
case 3: {
int id;
int idFabricante;
do {
id = solicitarIntScannerInline("Introduzca el ID del coche: ");
} while (!Select.isIdValid(conn, "coche", id));
do {
idFabricante = solicitarIntScannerInline("Introduzca el nuevo id del Fabricante (0 para no cambiar): ");
} while (!Select.isIdValid(conn, "fabricante", idFabricante) && !(idFabricante == 0));
String numBastidor = solicitarStringScannerInline("Introduzca el nuevo número de bastidor (en blanco para no cambiar): ");
String modelo = solicitarStringScannerInline("Introduzca el nuevo modelo (en blanco para no cambiar): ");
String color = solicitarStringScannerInline("Introduzca el nuevo color (en blanco para no cambiar): ");
Update.actualizarCoche(conn, id, idFabricante, numBastidor, modelo, color);
break;
}
case 4: {
int id;
do {
id = solicitarIntScannerInline("Introduzca el ID del coche: ");
} while (!Select.isIdValid(conn, "coche", id));
Delete.eliminarRegistro(conn, "coche", id);
break;
}
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
} while (opcion != 0);
}
private static void menuConcesionarios(Connection conn) {
int opcion = 0;
do {
System.out.println(
"\nSeleccione una operación:\n" +
"0 - Volver atrás\n" +
"1 - Mostrar todos los concesionarios\n" +
"2 - Añadir un concesionario\n" +
"3 - Actualizar un concesionario\n" +
"4 - Eliminar un concesionario");
opcion = solicitarIntScannerInline("> ");
try {
switch (opcion) {
case 1: {
Select.mostrarTabla(conn, "concesionario");
break;
}
case 2: {
Insert.addConcesionario(conn,
solicitarStringScannerInline("Introduzca el CIF: "),
solicitarStringScannerInline("Introduzca el Nombre: "),
solicitarStringScannerInline("Introduzca la Localidad: "));
break;
}
case 3: {
int id;
do {
id = solicitarIntScannerInline("Introduzca el ID del concesionario: ");
} while (!Select.isIdValid(conn, "concesionario", id));
String cifNuevo = solicitarStringScannerInline("Introduzca el nuevo CIF (en blanco para no cambiar): ");
String nombreNuevo = solicitarStringScannerInline("Introduzca el nuevo Nombre (en blanco para no cambiar): ");
String localidadNueva = solicitarStringScannerInline("Introduzca la nueva Localidad (en blanco para no cambiar): ");
Update.actualizarConcesionario(conn, id, cifNuevo, nombreNuevo, localidadNueva);
break;
}
case 4: {
int id;
do {
id = solicitarIntScannerInline("Introduzca el ID del concesionario: ");
} while (!Select.isIdValid(conn, "concesionario", id));
Delete.eliminarRegistro(conn, "concesionario", id);
break;
}
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
} while (opcion != 0);
}
private static void menuClientes(Connection conn) {
int opcion = 0;
do {
System.out.println(
"\nSeleccione una operación:\n" +
"0 - Volver atrás\n" +
"1 - Mostrar todos los clientes\n" +
"2 - Añadir un cliente\n" +
"3 - Actualizar un cliente\n" +
"4 - Eliminar un cliente");
opcion = solicitarIntScannerInline("> ");
try {
switch (opcion) {
case 1: {
Select.mostrarTabla(conn, "cliente");
break;
}
case 2: {
Insert.addCliente(conn,
solicitarStringScannerInline("Introduzca el Nombre: "),
solicitarStringScannerInline("Introduzca los Apellidos: "),
solicitarStringScannerInline("Introduzca la Localidad: "),
solicitarStringScannerInline("Introduzca el DNI/NIE: "),
solicitarFechaInline("fecha de nacimiento", "dd/MM/yyyy"),
solicitarIntScannerInline("Introduzca el estado (0 -> NO o 1 -> SÍ): "));
break;
}
case 3: {
int id;
do {
id = solicitarIntScannerInline("Introduzca el ID del cliente: ");
} while (!Select.isIdValid(conn, "cliente", id));
String nuevoNombre = solicitarStringScannerInline("Introduzca el nuevo Nombre (en blanco para no cambiar): ");
String nuevosApellidos = solicitarStringScannerInline("Introduzca los Apellidos (en blanco para no cambiar): ");
String nuevaLocalidad = solicitarStringScannerInline("Introduzca la Localidad (en blanco para no cambiar): ");
String nuevoDNI = solicitarStringScannerInline("Introduzca el DNI/NIE (en blanco para no cambiar): ");
Date nuevaFecha = solicitarFechaInline("fecha de nacimiento", "dd/MM/yyyy");
int nuevoEstado = solicitarIntScannerInline("Introduzca el estado (0 -> NO o 1 -> SÍ): ");
Update.actualizarCliente(conn, id, nuevoNombre, nuevosApellidos, nuevaLocalidad, nuevoDNI, nuevaFecha, nuevoEstado);
break;
}
case 4: {
int id;
do {
id = solicitarIntScannerInline("Introduzca el ID del cliente: ");
} while (!Select.isIdValid(conn, "cliente", id));
Delete.eliminarRegistro(conn, "cliente", id);
break;
}
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
} while (opcion != 0);
}
private static void menuVentas(Connection conn) {
int opcion = 0;
do {
System.out.println(
"\nSeleccione una operación:\n" +
"0 - Volver atrás\n" +
"1 - Mostrar todas las ventas\n" +
"2 - Añadir una venta\n" +
"3 - Actualizar una venta\n" +
"4 - Eliminar una venta");
opcion = solicitarIntScannerInline("> ");
try {
switch (opcion) {
case 1: {
Select.mostrarTabla(conn, "venta");
break;
}
case 2: {
int idCliente;
int idConcesionario;
int idCoche;
do {
idCliente = solicitarIntScannerInline("Introduzca el ID del Cliente: ");
} while (!Select.isIdValid(conn, "cliente", idCliente));
do {
idConcesionario = solicitarIntScannerInline("Introduzca el ID del Concesionario: ");
} while (!Select.isIdValid(conn, "concesionario", idConcesionario));
do {
idCoche = solicitarIntScannerInline("Introduzca el ID del Coche: ");
} while (!Select.isIdValid(conn, "coche", idCoche));
Insert.addVenta(conn,
idCliente,
idConcesionario,
idCoche,
solicitarFechaInline("fecha de venta", "dd/MM/yyyy"),
solicitarIntScannerInline("Introduzca el precio de Venta: "));
break;
}
case 3: {
int id;
do {
id = solicitarIntScannerInline("Introduzca el ID de la venta: ");
} while (!Select.isIdValid(conn, "venta", id));
int nuevoIdCliente;
int nuevoIdConcesionario;
int nuevoIdCoche;
do {
nuevoIdCliente = solicitarIntScannerInline("Introduzca el nuevo ID del Cliente (0 para no cambiar): ");
} while (!(nuevoIdCliente == 0 || Select.isIdValid(conn, "cliente", nuevoIdCliente)));
do {
nuevoIdConcesionario = solicitarIntScannerInline("Introduzca el nuevo ID del Concesionario (0 para no cambiar): ");
} while (!(nuevoIdConcesionario == 0 || Select.isIdValid(conn, "concesionario", nuevoIdConcesionario)));
do {
nuevoIdCoche = solicitarIntScannerInline("Introduzca el nuevo ID del Coche (0 para no cambiar): ");
} while (!(nuevoIdCoche == 0 || Select.isIdValid(conn, "coche", nuevoIdCoche)));
Date nuevaFecha = solicitarFechaInline("fecha de nacimiento", "dd/MM/yyyy");
int nuevoPrecio = solicitarIntScannerInline("Introduzca el nuevo precio de Venta (0 para no cambiar): ");
Update.actualizarVenta(conn, id, nuevoIdCliente, nuevoIdConcesionario, nuevoIdCoche, nuevaFecha, nuevoPrecio);
break;
}
case 4: {
int id;
do {
id = solicitarIntScannerInline("Introduzca el ID de la venta: ");
} while (!Select.isIdValid(conn, "venta", id));
Delete.eliminarRegistro(conn, "venta", id);
break;
}
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
} while (opcion != 0);
}
public static Date solicitarFechaInline(String solicitud, String formato) {
Scanner sc = new Scanner(System.in);
SimpleDateFormat formatoFecha = new SimpleDateFormat(formato);
while (true) {
System.out.print("Introduzca una " + solicitud + " con este formato ( " + formato + " ) > ");
String fechaIntroducida = sc.nextLine();
try {
return formatoFecha.parse(fechaIntroducida);
} catch (ParseException e) {
System.out.println("\nVuelva a introducir la fecha, en el formato correcto: " + formato);
}
}
}
}

View File

@@ -0,0 +1,44 @@
package capitulo08.bloque01y02;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;
public class PropiedadesBBDD {
private static Properties propiedades;
private static Properties getPropiedades() {
if (propiedades == null) {
propiedades = new Properties();
try {
File file = new File("./out/production/Ejercicios/capitulo08/bloque01y02/mysql.properties");
propiedades.load(new FileReader(file));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
return propiedades;
}
public static String getMySQLConnectionString() {
String host = getProperty("MYSQL_HOST");
String schema = getProperty("MYSQL_SCHEMA_NAME");
String properties = getProperty("MYSQL_PROPERTIES");
String user = getProperty("MYSQL_USER");
String password = getProperty("MYSQL_PASSWORD");
return "jdbc:mysql://" + user + ":" + password + "@" + host + "/" + schema + properties;
}
public static String getMySQLDriver() {
return getProperty("MYSQL_DRIVER_CLASS");
}
public static String getProperty(String nombrePropiedad) {
return getPropiedades().getProperty(nombrePropiedad);
}
}

View File

@@ -0,0 +1,6 @@
MYSQL_DRIVER_CLASS=com.mysql.cj.jdbc.Driver
MYSQL_USER=root
MYSQL_PASSWORD=1234
MYSQL_HOST=127.0.0.1:3310
MYSQL_SCHEMA_NAME=tutorialjavacoches
MYSQL_PROPERTIES=?autoReconnect=true&serverTimezone=Europe/Madrid&useSSL=False&allowPublicKeyRetrieval=TRUE

View File

@@ -0,0 +1,12 @@
package capitulo08.bloque01y02.operaciones;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
public class Delete {
public static int eliminarRegistro(Connection conn, String tabla, int id) throws SQLException {
Statement st = conn.createStatement();
return st.executeUpdate("delete from tutorialjavacoches." + tabla + " where id=" + id + ";");
}
}

View File

@@ -0,0 +1,46 @@
package capitulo08.bloque01y02.operaciones;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Insert {
public static int addFabricante(Connection conn, String cif, String nombre) throws SQLException {
Statement st = conn.createStatement();
return st.executeUpdate("insert into tutorialjavacoches.fabricante (id, cif, nombre) values (" +
Select.getNextId(conn, "fabricante") + ",'" + cif + "','" + nombre + "');");
}
public static int addCoche(Connection conn, int idFabricante, String numBastidor, String modelo, String color) throws SQLException {
Statement st = conn.createStatement();
if (Select.isIdValid(conn, "fabricante", idFabricante)) {
return st.executeUpdate("insert into tutorialjavacoches.coche (id, idfabricante, bastidor, modelo, color) values (" +
Select.getNextId(conn, "coche") + "," + idFabricante + ",'" + numBastidor + "','" + modelo + "','" + color + "');");
}
return 0;
}
public static int addConcesionario(Connection conn, String cif, String nombre, String localidad) throws SQLException {
Statement st = conn.createStatement();
return st.executeUpdate("insert into tutorialjavacoches.concesionario (id, cif, nombre, localidad) values (" +
Select.getNextId(conn, "concesionario") + ",'" + cif + "','" + nombre + "','" + localidad + "');");
}
public static int addCliente(Connection conn, String nombre, String apellidos, String localidad, String dni, Date fechaNac, int activo) throws SQLException {
Statement st = conn.createStatement();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return st.executeUpdate("insert into tutorialjavacoches.cliente (id, nombre, apellidos, localidad, dniNie, fechaNac, activo) values (" +
Select.getNextId(conn, "cliente") + ",'" + nombre + "','" + apellidos + "','" + localidad + "','" + dni + "','" + sdf.format(fechaNac) + "'," + activo + ");");
}
public static int addVenta(Connection conn, int idCliente, int idConcesionario, int idCoche, Date fecha, int precioVenta) throws SQLException {
Statement st = conn.createStatement();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return st.executeUpdate("insert into tutorialjavacoches.venta (id, idCliente, idConcesionario, idCoche, fecha, precioVenta) values (" +
Select.getNextId(conn, "venta") + "," + idCliente + "," + idConcesionario + "," + idCoche + ",'" + sdf.format(fecha) + "'," + precioVenta + ");");
}
}

View File

@@ -0,0 +1,67 @@
package capitulo08.bloque01y02.operaciones;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Select {
public static void mostrarTabla(Connection conn, String tabla) throws SQLException {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from tutorialjavacoches." + tabla + ";");
switch (tabla) {
case "fabricante": {
System.out.println("ID\t | CIF\t\t\t | Nombre");
while (rs.next()) {
System.out.println(rs.getInt(1) + "\t | " + rs.getString(2) + "\t | " + rs.getString(3));
}
break;
}
case "coche": {
System.out.println("ID\t | ID F\t | Nº Bastidor\t | Modelo\t | Color");
while (rs.next()) {
System.out.println(rs.getInt(1) + "\t | " + rs.getInt(2) + "\t | " + rs.getString(3) + "\t | " + rs.getString(4) + "\t | " + rs.getString(5));
}
break;
}
case "concesionario": {
System.out.println("ID\t | CIF\t\t\t | Nombre\t\t\t\t | Localidad");
while (rs.next()) {
System.out.println(rs.getInt(1) + "\t | " + rs.getString(2) + "\t | " + rs.getString(3) + "\t | " + rs.getString(4));
}
break;
}
case "cliente": {
System.out.println("ID\t | Nombre\t\t | Apellidos\t | Localidad\t | DNI\t | Fecha Nacimiento\t | Activo");
while (rs.next()) {
System.out.println(rs.getInt(1) + "\t | " + rs.getString(2) + "\t\t | " + rs.getString(3) + "\t | " + rs.getString(4) + "\t | " + rs.getString(5) + "\t | " + rs.getDate(6) + "\t | " + rs.getInt(7));
}
}
case "venta": {
System.out.println("ID\t | ID Cliente\t | ID Concesionario\t | ID Coche\t | Fecha\t | Precio Venta");
while (rs.next()) {
System.out.println(rs.getInt(1) + "\t | " + rs.getInt(2) + "\t | " + rs.getInt(3) + "\t | " + rs.getInt(4) + "\t | " + rs.getDate(5) + "\t | " + rs.getInt(6));
}
}
}
}
public static int getNextId(Connection conn, String tabla) throws SQLException {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select max(id) from tutorialjavacoches." + tabla + ";");
rs.next();
return (rs.getInt(1) + 1);
}
public static boolean isIdValid(Connection conn, String tabla, int id) throws SQLException {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select id from tutorialjavacoches." + tabla + " where id=" + id + ";");
if (rs.next()) {
return rs.getInt(1) == id;
} else {
return false;
}
}
}

View File

@@ -0,0 +1,106 @@
package capitulo08.bloque01y02.operaciones;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Objects;
public class Update {
public static void actualizarFabricante(Connection conn, int id, String cif, String nombre) throws SQLException {
if (!(Objects.equals(cif, "") || cif == null)) {
actualizarCampoString(conn, "fabricante", id, "cif", cif);
}
if (!(Objects.equals(nombre, "") || nombre == null)) {
actualizarCampoString(conn, "fabricante", id, "nombre", nombre);
}
}
public static void actualizarCoche(Connection conn, int id, int idFabricante, String numBastidor, String modelo, String color) throws SQLException {
if (idFabricante != 0) {
actualizarCampoInt(conn, "coche", id, "idfabricante", idFabricante);
}
if (!(Objects.equals(numBastidor, "") || numBastidor == null)) {
actualizarCampoString(conn, "coche", id, "bastidor", numBastidor);
}
if (!(Objects.equals(modelo, "") || modelo == null)) {
actualizarCampoString(conn, "coche", id, "modelo", modelo);
}
if (!(Objects.equals(color, "") || color == null)) {
actualizarCampoString(conn, "coche", id, "color", color);
}
}
public static void actualizarConcesionario(Connection conn, int id, String cif, String nombre, String localidad) throws SQLException {
if (!(Objects.equals(cif, "") || cif == null)) {
actualizarCampoString(conn, "concesionario", id, "cif", cif);
}
if (!(Objects.equals(nombre, "") || nombre == null)) {
actualizarCampoString(conn, "concesionario", id, "nombre", nombre);
}
if (!(Objects.equals(localidad, "") || localidad == null)) {
actualizarCampoString(conn, "concesionario", id, "localidad", localidad);
}
}
public static void actualizarCliente(Connection conn, int id, String nombre, String apellidos, String localidad, String dniNie, Date fechaNac, int activo) throws SQLException {
if (!(Objects.equals(nombre, "") || nombre == null)) {
actualizarCampoString(conn, "cliente", id, "nombre", nombre);
}
if (!(Objects.equals(apellidos, "") || apellidos == null)) {
actualizarCampoString(conn, "cliente", id, "apellidos", apellidos);
}
if (!(Objects.equals(localidad, "") || localidad == null)) {
actualizarCampoString(conn, "cliente", id, "localidad", localidad);
}
if (!(Objects.equals(dniNie, "") || dniNie == null)) {
actualizarCampoString(conn, "cliente", id, "dniNie", dniNie);
}
if (fechaNac != null) {
actualizarCampoDate(conn, "cliente", id, "fechaNac", fechaNac);
}
if ((activo == 0 || activo == 1)) {
actualizarCampoInt(conn, "cliente", id, "activo", activo);
}
}
public static void actualizarVenta(Connection conn, int id, int idCliente, int idConcesionario, int idCoche, Date fecha, int precioVenta) throws SQLException {
if (idCliente != 0) {
actualizarCampoInt(conn, "venta", id, "idCliente", idCliente);
}
if (idConcesionario != 0) {
actualizarCampoInt(conn, "venta", id, "idConcesionario", idConcesionario);
}
if (idCoche != 0) {
actualizarCampoInt(conn, "venta", id, "idCoche", idCoche);
}
if (fecha != null) {
actualizarCampoDate(conn, "venta", id, "fecha", fecha);
}
if (precioVenta != 0) {
actualizarCampoInt(conn, "venta", id, "precioVenta", precioVenta);
}
}
private static int actualizarCampoString(Connection conn, String tabla, int id, String campo, String nuevoValor) throws SQLException {
Statement st = conn.createStatement();
return st.executeUpdate("update tutorialjavacoches." + tabla + " set " + campo + "='" + nuevoValor + "' where id=" + id + ";");
}
private static int actualizarCampoInt(Connection conn, String tabla, int id, String campo, int nuevoValor) throws SQLException {
Statement st = conn.createStatement();
return st.executeUpdate("update tutorialjavacoches." + tabla + " set " + campo + "=" + nuevoValor + " where id=" + id + ";");
}
private static int actualizarCampoDate(Connection conn, String tabla, int id, String campo, Date nuevoValor) throws SQLException {
Statement st = conn.createStatement();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return st.executeUpdate("update tutorialjavacoches." + tabla + " set " + campo + "='" + sdf.format(nuevoValor) + "' where id=" + id + ";");
}}

View File

@@ -0,0 +1,96 @@
package capitulo09.bloque01.controlador;
import capitulo09.bloque01.modelo.Cliente;
import java.sql.*;
public class ControladorCliente {
public static Cliente getPrimerCliente() {
return getClienteInterno(-1);
}
public static Cliente getUltimoCliente() {
return getClienteInterno(-2);
}
public static Cliente getCliente(int id) {
return getClienteInterno(id);
}
private static Cliente getClienteInterno(int id) {
Connection conn = PropiedadesBBDD.getConnection();
ResultSet res = null;
try {
PreparedStatement stId = conn.prepareStatement("select * from cliente where id = ? limit 1");
Statement stPrimeroUltimo = conn.createStatement();
if (id == -1) {
res = stPrimeroUltimo.executeQuery("select * from cliente order by id asc limit 1");
} else if (id == -2) {
res = stPrimeroUltimo.executeQuery("select * from cliente order by id desc limit 1");
} else {
stId.setInt(1, id);
res = stId.executeQuery();
}
while (res.next()) {
return new Cliente(res.getInt("id"), res.getString("nombre"), res.getString("apellidos"), res.getString("localidad"), res.getString("dniNie"), res.getDate("fechaNac"), res.getBoolean("activo"));
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
return null;
}
public static int actualizarCliente(Cliente cliente) {
Connection conn = PropiedadesBBDD.getConnection();
try {
PreparedStatement ps = conn.prepareStatement("update cliente set nombre = ?, apellidos = ?, localidad = ?, dniNie = ?, fechaNac = ?, activo = ? where id = ?");
ps.setString(1, cliente.getNombre());
ps.setString(2, cliente.getApellidos());
ps.setString(3, cliente.getLocalidad());
ps.setString(4, cliente.getDniNie());
ps.setDate(5, new Date(cliente.getFechaNac().getTime()));
ps.setBoolean(6, cliente.isActivo());
ps.setInt(7, cliente.getId());
return ps.executeUpdate();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
public static int nuevoCliente(Cliente cliente) {
Connection conn = PropiedadesBBDD.getConnection();
try {
PreparedStatement ps = conn.prepareStatement("insert into cliente (id, nombre, apellidos, localidad, dniNie, fechaNac, activo) values (?, ?, ?, ?, ?, ?, ?)");
ps.setInt(1, cliente.getId());
ps.setString(2, cliente.getNombre());
ps.setString(3, cliente.getApellidos());
ps.setString(4, cliente.getLocalidad());
ps.setString(5, cliente.getDniNie());
ps.setDate(6, new Date(cliente.getFechaNac().getTime()));
ps.setBoolean(7, cliente.isActivo());
return ps.executeUpdate();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
public static int eliminarCliente(int id) {
Connection conn = PropiedadesBBDD.getConnection();
try {
PreparedStatement ps = conn.prepareStatement("delete from cliente where id = ?");
ps.setInt(1, id);
return ps.executeUpdate();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}

View File

@@ -0,0 +1,58 @@
package capitulo09.bloque01.controlador;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;
public class PropiedadesBBDD {
private static Properties propiedades;
private static Connection openConnection;
private static Properties getPropiedades() {
if (propiedades == null) {
propiedades = new Properties();
try {
File file = new File("./out/production/Ejercicios/capitulo09/bloque01/controlador/mysql.properties");
propiedades.load(new FileReader(file));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
return propiedades;
}
private static String getMySQLConnectionString() {
String host = getProperty("MYSQL_HOST");
String schema = getProperty("MYSQL_SCHEMA_NAME");
String properties = getProperty("MYSQL_PROPERTIES");
String user = getProperty("MYSQL_USER");
String password = getProperty("MYSQL_PASSWORD");
return "jdbc:mysql://" + user + ":" + password + "@" + host + "/" + schema + properties;
}
public static Connection getConnection() {
if (openConnection == null) {
try {
openConnection = DriverManager.getConnection(getMySQLConnectionString());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
return openConnection;
}
public static String getMySQLDriver() {
return getProperty("MYSQL_DRIVER_CLASS");
}
private static String getProperty(String nombrePropiedad) {
return getPropiedades().getProperty(nombrePropiedad);
}
}

View File

@@ -0,0 +1,6 @@
MYSQL_DRIVER_CLASS=com.mysql.cj.jdbc.Driver
MYSQL_USER=root
MYSQL_PASSWORD=1234
MYSQL_HOST=127.0.0.1:3310
MYSQL_SCHEMA_NAME=tutorialjavacoches
MYSQL_PROPERTIES=?autoReconnect=true&serverTimezone=Europe/Madrid&useSSL=False&allowPublicKeyRetrieval=TRUE

View File

@@ -0,0 +1,95 @@
package capitulo09.bloque01.modelo;
import java.util.Date;
public class Cliente {
private int id;
private String nombre;
private String apellidos;
private String localidad;
private String dniNie;
private Date fechaNac;
private boolean activo;
public Cliente() {
}
public Cliente(int id, String nombre, String apellidos, String localidad, String dniNie, Date fechaNac, boolean activo) {
this.id = id;
this.nombre = nombre;
this.apellidos = apellidos;
this.localidad = localidad;
this.dniNie = dniNie;
this.fechaNac = fechaNac;
this.activo = activo;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getApellidos() {
return apellidos;
}
public void setApellidos(String apellidos) {
this.apellidos = apellidos;
}
public String getLocalidad() {
return localidad;
}
public void setLocalidad(String localidad) {
this.localidad = localidad;
}
public String getDniNie() {
return dniNie;
}
public void setDniNie(String dniNie) {
this.dniNie = dniNie;
}
public Date getFechaNac() {
return fechaNac;
}
public void setFechaNac(Date fechaNac) {
this.fechaNac = fechaNac;
}
public boolean isActivo() {
return activo;
}
public void setActivo(boolean activo) {
this.activo = activo;
}
@Override
public String toString() {
return "Cliente{" +
"id=" + id +
", nombre='" + nombre + '\'' +
", apellidos='" + apellidos + '\'' +
", localidad='" + localidad + '\'' +
", dniNie='" + dniNie + '\'' +
", fechaNac=" + fechaNac +
", activo=" + activo +
'}';
}
}

View File

@@ -0,0 +1,381 @@
package capitulo09.bloque01.vista;
import capitulo09.bloque01.controlador.ControladorCliente;
import capitulo09.bloque01.modelo.Cliente;
import java.awt.EventQueue;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Font;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class GestionCliente extends JFrame {
Cliente clienteActual;
private static final long serialVersionUID = 1L;
private JPanel contentPane;
private JTextField jtfNombre;
private JTextField jtfApellidos;
private JTextField jtfLocalidad;
private JTextField jtfDniNie;
private JTextField jtfFechaNac;
private JTextField jtfId;
private JCheckBox checkBoxEstado;
private JButton btnPrimero;
private JButton btnAnterior;
private JButton btnSiguiente;
private JButton btnUltimo;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
GestionCliente frame = new GestionCliente();
frame.actualizarDatosEnPantalla(ControladorCliente.getPrimerCliente());
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
private void actualizarDatosEnPantalla(Cliente cliente) {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
jtfId.setText("" + cliente.getId());
jtfNombre.setText(cliente.getNombre());
jtfApellidos.setText(cliente.getApellidos());
jtfLocalidad.setText(cliente.getLocalidad());
jtfDniNie.setText(cliente.getDniNie());
jtfFechaNac.setText(sdf.format(cliente.getFechaNac()));
checkBoxEstado.setSelected(cliente.isActivo());
clienteActual = cliente;
if (cliente.getId() == ControladorCliente.getPrimerCliente().getId()) {
btnPrimero.setEnabled(false);
btnAnterior.setEnabled(false);
btnSiguiente.setEnabled(true);
btnUltimo.setEnabled(true);
} else if (cliente.getId() == ControladorCliente.getUltimoCliente().getId()) {
btnPrimero.setEnabled(true);
btnAnterior.setEnabled(true);
btnSiguiente.setEnabled(false);
btnUltimo.setEnabled(false);
} else {
btnPrimero.setEnabled(true);
btnAnterior.setEnabled(true);
btnSiguiente.setEnabled(true);
btnUltimo.setEnabled(true);
}
}
/**
* Create the frame.
*/
public GestionCliente() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 500, 350);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new BorderLayout(0, 0));
JPanel panel_1 = new JPanel();
contentPane.add(panel_1, BorderLayout.NORTH);
panel_1.setLayout(new BoxLayout(panel_1, BoxLayout.Y_AXIS));
JLabel lblTitulo = new JLabel("Gestión de Clientes");
lblTitulo.setFont(new Font("Verdana", Font.BOLD, 18));
lblTitulo.setAlignmentX(Component.CENTER_ALIGNMENT);
panel_1.add(lblTitulo);
JPanel panel = new JPanel();
panel_1.add(panel);
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
btnPrimero = new JButton("Primero");
btnPrimero.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
actualizarDatosEnPantalla(ControladorCliente.getPrimerCliente());
}
});
btnPrimero.setToolTipText("Muestra en pantalla el primer cliente de la base de datos");
panel.add(btnPrimero);
btnAnterior = new JButton("Anterior");
btnAnterior.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
actualizarDatosEnPantalla(ControladorCliente.getCliente((clienteActual.getId() - 1)));
}
});
btnAnterior.setToolTipText("Muestra en pantalla el cliente anterior al actual");
panel.add(btnAnterior);
btnSiguiente = new JButton("Siguiente");
btnSiguiente.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
actualizarDatosEnPantalla(ControladorCliente.getCliente((clienteActual.getId() + 1)));
}
});
btnSiguiente.setToolTipText("Muestra en pantalla el cliente siguiente al actual");
panel.add(btnSiguiente);
btnUltimo = new JButton("Último");
btnUltimo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
actualizarDatosEnPantalla(ControladorCliente.getUltimoCliente());
}
});
btnUltimo.setToolTipText("Muestra en pantalla el ultimo cliente de la base de datos");
panel.add(btnUltimo);
JSeparator separator = new JSeparator();
panel_1.add(separator);
JPanel panel_2 = new JPanel();
contentPane.add(panel_2, BorderLayout.CENTER);
GridBagLayout gbl_panel_2 = new GridBagLayout();
gbl_panel_2.columnWidths = new int[]{0, 0, 0, 0};
gbl_panel_2.rowHeights = new int[]{0, 0, 0, 0, 0, 0, 0};
gbl_panel_2.columnWeights = new double[]{0.8, 0.5, 1.0, 0.8};
gbl_panel_2.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
panel_2.setLayout(gbl_panel_2);
JLabel lblNewLabel = new JLabel("Id");
GridBagConstraints gbc_lblNewLabel = new GridBagConstraints();
gbc_lblNewLabel.anchor = GridBagConstraints.EAST;
gbc_lblNewLabel.insets = new Insets(0, 0, 5, 5);
gbc_lblNewLabel.gridx = 1;
gbc_lblNewLabel.gridy = 0;
panel_2.add(lblNewLabel, gbc_lblNewLabel);
jtfId = new JTextField();
jtfId.setEditable(false);
GridBagConstraints gbc_textField = new GridBagConstraints();
gbc_textField.insets = new Insets(0, 0, 5, 5);
gbc_textField.fill = GridBagConstraints.HORIZONTAL;
gbc_textField.gridx = 2;
gbc_textField.gridy = 0;
panel_2.add(jtfId, gbc_textField);
jtfId.setColumns(10);
JLabel lblNewLabel_1 = new JLabel("Nombre");
lblNewLabel_1.setHorizontalAlignment(SwingConstants.RIGHT);
GridBagConstraints gbc_lblNewLabel_1 = new GridBagConstraints();
gbc_lblNewLabel_1.anchor = GridBagConstraints.EAST;
gbc_lblNewLabel_1.insets = new Insets(0, 0, 5, 5);
gbc_lblNewLabel_1.gridx = 1;
gbc_lblNewLabel_1.gridy = 1;
panel_2.add(lblNewLabel_1, gbc_lblNewLabel_1);
jtfNombre = new JTextField();
GridBagConstraints gbc_textField_1 = new GridBagConstraints();
gbc_textField_1.insets = new Insets(0, 0, 5, 5);
gbc_textField_1.fill = GridBagConstraints.HORIZONTAL;
gbc_textField_1.gridx = 2;
gbc_textField_1.gridy = 1;
panel_2.add(jtfNombre, gbc_textField_1);
jtfNombre.setColumns(10);
JLabel lblNewLabel_2 = new JLabel("Apellidos");
GridBagConstraints gbc_lblNewLabel_2 = new GridBagConstraints();
gbc_lblNewLabel_2.anchor = GridBagConstraints.EAST;
gbc_lblNewLabel_2.insets = new Insets(0, 0, 5, 5);
gbc_lblNewLabel_2.gridx = 1;
gbc_lblNewLabel_2.gridy = 2;
panel_2.add(lblNewLabel_2, gbc_lblNewLabel_2);
jtfApellidos = new JTextField();
GridBagConstraints gbc_textField_2 = new GridBagConstraints();
gbc_textField_2.insets = new Insets(0, 0, 5, 5);
gbc_textField_2.fill = GridBagConstraints.HORIZONTAL;
gbc_textField_2.gridx = 2;
gbc_textField_2.gridy = 2;
panel_2.add(jtfApellidos, gbc_textField_2);
jtfApellidos.setColumns(10);
JLabel lblNewLabel_3 = new JLabel("Localidad");
GridBagConstraints gbc_lblNewLabel_3 = new GridBagConstraints();
gbc_lblNewLabel_3.anchor = GridBagConstraints.EAST;
gbc_lblNewLabel_3.insets = new Insets(0, 0, 5, 5);
gbc_lblNewLabel_3.gridx = 1;
gbc_lblNewLabel_3.gridy = 3;
panel_2.add(lblNewLabel_3, gbc_lblNewLabel_3);
jtfLocalidad = new JTextField();
GridBagConstraints gbc_textField_3 = new GridBagConstraints();
gbc_textField_3.insets = new Insets(0, 0, 5, 5);
gbc_textField_3.fill = GridBagConstraints.HORIZONTAL;
gbc_textField_3.gridx = 2;
gbc_textField_3.gridy = 3;
panel_2.add(jtfLocalidad, gbc_textField_3);
jtfLocalidad.setColumns(10);
JLabel lblNewLabel_4 = new JLabel("DNI/NIE");
GridBagConstraints gbc_lblNewLabel_4 = new GridBagConstraints();
gbc_lblNewLabel_4.anchor = GridBagConstraints.EAST;
gbc_lblNewLabel_4.insets = new Insets(0, 0, 5, 5);
gbc_lblNewLabel_4.gridx = 1;
gbc_lblNewLabel_4.gridy = 4;
panel_2.add(lblNewLabel_4, gbc_lblNewLabel_4);
jtfDniNie = new JTextField();
GridBagConstraints gbc_textField_4 = new GridBagConstraints();
gbc_textField_4.insets = new Insets(0, 0, 5, 5);
gbc_textField_4.fill = GridBagConstraints.HORIZONTAL;
gbc_textField_4.gridx = 2;
gbc_textField_4.gridy = 4;
panel_2.add(jtfDniNie, gbc_textField_4);
jtfDniNie.setColumns(10);
JLabel lblNewLabel_5 = new JLabel("Fecha de Nacimiento");
GridBagConstraints gbc_lblNewLabel_5 = new GridBagConstraints();
gbc_lblNewLabel_5.anchor = GridBagConstraints.EAST;
gbc_lblNewLabel_5.insets = new Insets(0, 0, 5, 5);
gbc_lblNewLabel_5.gridx = 1;
gbc_lblNewLabel_5.gridy = 5;
panel_2.add(lblNewLabel_5, gbc_lblNewLabel_5);
jtfFechaNac = new JTextField();
GridBagConstraints gbc_textField_5 = new GridBagConstraints();
gbc_textField_5.insets = new Insets(0, 0, 5, 5);
gbc_textField_5.fill = GridBagConstraints.HORIZONTAL;
gbc_textField_5.gridx = 2;
gbc_textField_5.gridy = 5;
panel_2.add(jtfFechaNac, gbc_textField_5);
jtfFechaNac.setColumns(10);
JLabel lblNewLabel_6 = new JLabel("Estado");
GridBagConstraints gbc_lblNewLabel_6 = new GridBagConstraints();
gbc_lblNewLabel_6.anchor = GridBagConstraints.EAST;
gbc_lblNewLabel_6.insets = new Insets(0, 0, 0, 5);
gbc_lblNewLabel_6.gridx = 1;
gbc_lblNewLabel_6.gridy = 6;
panel_2.add(lblNewLabel_6, gbc_lblNewLabel_6);
checkBoxEstado = new JCheckBox("");
GridBagConstraints gbc_chckbxNewCheckBox = new GridBagConstraints();
gbc_chckbxNewCheckBox.anchor = GridBagConstraints.WEST;
gbc_chckbxNewCheckBox.insets = new Insets(0, 0, 0, 5);
gbc_chckbxNewCheckBox.gridx = 2;
gbc_chckbxNewCheckBox.gridy = 6;
panel_2.add(checkBoxEstado, gbc_chckbxNewCheckBox);
JPanel panel_3 = new JPanel();
contentPane.add(panel_3, BorderLayout.SOUTH);
panel_3.setLayout(new BoxLayout(panel_3, BoxLayout.Y_AXIS));
JSeparator separator_1 = new JSeparator();
panel_3.add(separator_1);
JPanel panel_4 = new JPanel();
panel_3.add(panel_4);
panel_4.setLayout(new BoxLayout(panel_4, BoxLayout.X_AXIS));
JButton btnNewButton = new JButton("Nuevo");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Cliente clienteVacio = new Cliente(ControladorCliente.getUltimoCliente().getId() + 1,
"",
"",
"",
"",
new Date(),
true);
actualizarDatosEnPantalla(clienteVacio);
}
});
btnNewButton.setToolTipText("Limpia la pantalla para crear un nuevo cliente");
panel_4.add(btnNewButton);
btnNewButton.setAlignmentX(Component.CENTER_ALIGNMENT);
JButton btnNewButton_1 = new JButton("Guardar");
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date fecha = null;
try {
fecha = sdf.parse(jtfFechaNac.getText());
} catch (ParseException ex) {
JOptionPane.showMessageDialog(null, "La fecha introducida no es correcta");
//throw new RuntimeException(ex);
}
Cliente updateClient = new Cliente(clienteActual.getId(),
jtfNombre.getText(),
jtfApellidos.getText(),
jtfLocalidad.getText(),
jtfDniNie.getText(),
fecha,
checkBoxEstado.isSelected());
if (clienteActual.getId() > ControladorCliente.getUltimoCliente().getId()) {
if (ControladorCliente.nuevoCliente(updateClient) > 0) {
JOptionPane.showMessageDialog(null, "El cliente se ha añadido correctamente");
} else {
JOptionPane.showMessageDialog(null, "El cliente no se ha podido añadir");
}
} else {
if (ControladorCliente.actualizarCliente(updateClient) > 0) {
JOptionPane.showMessageDialog(null, "El cliente se ha actualizado correctamente");
} else {
JOptionPane.showMessageDialog(null, "El cliente no se ha podido actualizar");
}
}
actualizarDatosEnPantalla(ControladorCliente.getCliente(clienteActual.getId()));
}
});
btnNewButton_1.setToolTipText("Guarda los cambios realizados en el registro que se ve en pantalla");
panel_4.add(btnNewButton_1);
btnNewButton_1.setAlignmentX(Component.CENTER_ALIGNMENT);
JButton btnNewButton_2 = new JButton("Eliminar");
btnNewButton_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int respuesta = JOptionPane.showConfirmDialog(null, "¿Seguro que desea eliminar el cliente?", "Confirmación", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION) {
Cliente clienteAnterior = ControladorCliente.getCliente(clienteActual.getId() - 1);
Cliente clienteSiguiente = ControladorCliente.getCliente(clienteActual.getId() + 1);
if (ControladorCliente.eliminarCliente(clienteActual.getId()) > 0) {
JOptionPane.showMessageDialog(null, "El cliente se ha eliminado correctamente");
if (clienteAnterior != null) {
actualizarDatosEnPantalla(clienteAnterior);
} else if (clienteSiguiente != null) {
actualizarDatosEnPantalla(clienteSiguiente);
} else {
btnNewButton.doClick();
}
} else {
JOptionPane.showMessageDialog(null, "El cliente no se ha podido eliminar");
}
}
}
});
btnNewButton_2.setToolTipText("Elimina el registro que se ve en pantalla");
panel_4.add(btnNewButton_2);
btnNewButton_2.setAlignmentX(Component.CENTER_ALIGNMENT);
}
}

View File

@@ -1,21 +0,0 @@
package otros.arkanoid;
import capitulo04.utils.Utils;
public class Juego {
public static void main(String[] args) {
Ladrillo[] ladrillos = new Ladrillo[20];
Pelota pelota = new Pelota();
for (int i = 0; i < ladrillos.length; i++) {
ladrillos[i] = new Ladrillo();
}
while (true) {
pelota.setX(Utils.generarIntAleatorioEntreLimites(0,800));
pelota.setY(Utils.generarIntAleatorioEntreLimites(0,800));
}
}
}

View File

@@ -1,103 +0,0 @@
package otros.arkanoid;
import capitulo04.utils.Utils;
public class Ladrillo {
private String color;
private int x;
private int y;
private int ancho;
private int alto;
private int puntosVida;
public Ladrillo() {
this.x = Utils.generarIntAleatorioEntreLimites(0, 800);
this.y = Utils.generarIntAleatorioEntreLimites(0, 500);
this.ancho = 100;
this.alto = 50;
this.puntosVida = Utils.generarIntAleatorioEntreLimites(1, 3);
String[] colores = new String[]{"rojo", "verde", "azul"};
if (puntosVida == 1) {
int colorEscogido = Utils.generarIntAleatorioEntreLimites(0, 2);
this.color = colores[colorEscogido];
} else if (puntosVida == 2) {
this.color = "plateado";
} else {
this.color = "dorado";
}
}
/**
* @param p Pelota
* @return Devuelve si tiene vida o se ha quedado a 0
*/
public boolean pelotaChocaEnLadrillo(Pelota p) {
if (p.getX() > this.x
&& p.getY() > this.y) {
}
return false;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public int getAncho() {
return ancho;
}
public void setAncho(int ancho) {
this.ancho = ancho;
}
public int getAlto() {
return alto;
}
public void setAlto(int alto) {
this.alto = alto;
}
public int getPuntosVida() {
return puntosVida;
}
public void setPuntosVida(int puntosVida) {
this.puntosVida = puntosVida;
}
@Override
public String toString() {
return "Ladrillo{" +
"color='" + color + '\'' +
", x=" + x +
", y=" + y +
", ancho=" + ancho +
", alto=" + alto +
", puntosVida=" + puntosVida +
'}';
}
}

View File

@@ -1,33 +0,0 @@
package otros.arkanoid;
public class Pelota {
private int x;
private int y;
public Pelota() {
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
@Override
public String toString() {
return "Pelota{" +
"x=" + x +
", y=" + y +
'}';
}
}

View File

@@ -1,49 +0,0 @@
package otros.cromos;
public class Cromo {
private String nombreJugador;
private int puntuacion;
private String equipo;
public Cromo() {
}
public Cromo(String nombreJugador, int puntuacion, String equipo) {
this.nombreJugador = nombreJugador;
this.puntuacion = puntuacion;
this.equipo = equipo;
}
public String getNombreJugador() {
return nombreJugador;
}
public void setNombreJugador(String nombreJugador) {
this.nombreJugador = nombreJugador;
}
private int getPuntuacion() {
return puntuacion;
}
public void setPuntuacion(int puntuacion) {
this.puntuacion = puntuacion;
}
public String getEquipo() {
return equipo;
}
public void setEquipo(String equipo) {
this.equipo = equipo;
}
@Override
public String toString() {
return "Cromo{" +
"nombre='" + nombreJugador + '\'' +
", puntuacion=" + puntuacion +
", equipo='" + equipo + '\'' +
'}';
}
}

View File

@@ -1,31 +0,0 @@
package otros.cromos;
public class CromoBaloncesto extends Cromo{
private int altura;
public CromoBaloncesto() {
}
public CromoBaloncesto(String nombreJugador, int puntuacion, String equipo) {
super(nombreJugador, puntuacion, equipo);
}
public CromoBaloncesto(String nombreJugador, int puntuacion, String equipo, int altura) {
super(nombreJugador, puntuacion, equipo);
this.altura = altura;
}
public int getAltura() {
return altura;
}
public void setAltura(int altura) {
this.altura = altura;
}
public void prueba() {
}
}

View File

@@ -1,10 +0,0 @@
package otros.cromos;
public class CromoFutbol extends Cromo{
public CromoFutbol() {
}
public CromoFutbol(String nombreJugador, int puntuacion, String equipo) {
super(nombreJugador, puntuacion, equipo);
}
}

View File

@@ -1,9 +0,0 @@
package otros.cromos;
public class Principal {
public static void main(String[] args) {
CromoBaloncesto pepe = new CromoBaloncesto("Hola", 70, "pepe");
//System.out.println(pepe/*.getPuntuacion()*/);
}
}