Ejemplo switch


public class EjemplosSwitch {

	public static void main(String[] args) {
		int diaSemana = 3;
		// switch(variable)
		// case valor1: case valor2: break para parar default:
		switch (diaSemana) {
		case 1:
			System.out.println("Lunes");
			break;
		case 2:
			System.out.println("Martes");
			break;
		case 3:
			System.out.println("Miércoles");
			break;
		case 4:
			System.out.println("Jueves");
			break;
		case 5:
			System.out.println("Viernes");
			break;
		case 6:
			System.out.println("Sábado");
			break;
		case 7:
			System.out.println("Domingo");
			break;
		default:
			System.out.println("Día de la semana no válido");
		}
		switch (diaSemana) {
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
			System.out.println("Entre semana buff....");
			break;
		case 6:
		case 7:
			System.out.println("Fin de semana ¡Yupi!");
			break;
		default:
			System.out.println("Día de la semana no válido");
		}
		
		
	}

}

Ejemplos ifs en Java

int edad = 18;
		int altura = 180;
		// La misma sintaxis que en JS
		// if (condicion){bloque si cierto} else {bloque si falso}
		if (edad >= 18) {
			System.out.println("Eres mayor de edad");
		} else {
			System.out.println("Eres menor de edad");
		}

		// Puedo tener if else if
		if (edad < 18) {
			System.out.println("Eres menor de edad");
		} else if (edad < 65) {
			System.out.println("Eres mayor de edad");
		} else {
			System.out.println("Estás jubilado");
		}

		if (edad > 100) {
			System.out.println("Enhorabuena, eres centenario");
		}

		// Puedo tener if anidados, if dentro de ifs
		if (edad < 18) {
			if (edad % 2 == 0) {
				System.out.println("Menor de edad y par");
			}
		}
		// Condiciones > >= < <= == !=
		// Operadores condicionales: && || !

		if (edad >= 18 || altura > 180) {
			System.out.println("Mayor de edad o entra por altura");
		}

		if (edad == 18 && altura == 180) {
			System.out.println("Mides lo mismo que tu edad");
		}

		// Para dar el pase VIP tiene que tener más de 20 años y medir más de 180
		// o medir más de 200

		if (edad >= 20 && altura >= 180 || altura >= 200) {

		}
		if ((edad >= 20 && altura >= 180) || altura >= 200) {

		}

		// Si yo quiero que la edad sea menor de 18 o mayor de 65
		// y mida más de 180

		if (edad < 18 || edad > 65 && altura > 180) { // esto está mal

		}
		if ((edad < 18 || edad > 65) && altura > 180) { // esto está bien

		}

// Por ejemplo que la edad sea menor de 10 y la altura menor de 140
		// O la edad sea mayor de 80 y la altura mayor de 180
		if ((edad<10 && altura<140) || (edad>80 && altura>180)) {
			
		}

Pasos para crear Hibernate

Crear un proyecto Maven

Escogemos maven-archetype-quickstart
En principio el de org.apache

Añadimos las dependencias de ‘Hibernate’ y ‘Mysql’. Os las pongo aquí.

 <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.32</version>
		</dependency>
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-core</artifactId>
			<version>5.6.15.Final</version>
		</dependency>
  </dependencies>

Después dentro de src/main creamos la carpeta ‘resources’: New folder

Dentro de resources creamos el archivo hibernate.cfg.xml, y dentro colocamos lo siguiente:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "https://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory>
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="connection.url">jdbc:mysql://localhost/sakila</property>
		<property name="connection.username">root</property>
		<property name="connection.password">root</property>
		<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
		<property name="hibernate.show_sql">true</property>

		<mapping class="com.trifulcas.models.Actor" />
	
	</session-factory>
</hibernate-configuration>

Creamos un paquete com.trifulcas.models y dentro metemos nuestro POJO:

package com.trifulcas.models;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;


@Entity  
@Table(name= "actor")   
public class Actor {

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private int actor_id;
	
	private String first_name;
	private String last_name;
	
	public Actor() {
		
	}
	/**
	 * @return the actor_id
	 */
	public int getActor_id() {
		return actor_id;
	}
	/**
	 * @param actor_id the actor_id to set
	 */
	public void setActor_id(int actor_id) {
		this.actor_id = actor_id;
	}
	/**
	 * @return the first_name
	 */
	public String getFirst_name() {
		return first_name;
	}
	/**
	 * @param first_name the first_name to set
	 */
	public void setFirst_name(String first_name) {
		this.first_name = first_name;
	}
	/**
	 * @return the last_name
	 */
	public String getLast_name() {
		return last_name;
	}
	/**
	 * @param last_name the last_name to set
	 */
	public void setLast_name(String last_name) {
		this.last_name = last_name;
	}
	@Override
	public String toString() {
	return "Actor id=" + actor_id + ",nombre=" + first_name+" "+last_name + "]";
	}
}

Y por último probaríamos que todo va bien, este código debería funcionar:

	StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml").build();
		Metadata meta = new MetadataSources(ssr).getMetadataBuilder().build();

		SessionFactory factory = meta.getSessionFactoryBuilder().build();
		Session session = factory.openSession();
		try {
			Actor penelope = session.get(Actor.class, 1);
			
			System.out.println(penelope.getFirst_name() + " " + penelope.getLast_name());
			List<Actor> lista = session.createQuery("from Actor a where a.first_name like '%ar%' ").getResultList();
			for (Actor a : lista) {
				System.out.println(a);
			}
			
			
		} catch (Exception ex) {
			System.out.println(ex);
		}
		factory.close();
		session.close();

DAO comienzo

public class ActorDAO {
	private Connection con;

	public ActorDAO() {
		try {
			// Registrar el driver mysql
			Class.forName("com.mysql.cj.jdbc.Driver");
			// Conectarme a la base de datos
			 con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sakila", "root", "root");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public ArrayList<Actor> getActorAll() {
		try {
			String sql="select * from actor";
			PreparedStatement psmt=con.prepareStatement(sql);
			ResultSet res=psmt.executeQuery();
			ArrayList<Actor> actores= new ArrayList<Actor>();
			while (res.next()) {
				actores.add( new Actor(res.getInt("actor_id"),
						res.getString("first_name"),
						res.getString("last_name")));
			}
			return actores;
		}catch(Exception ex) {
			ex.printStackTrace();
			return null;
		}
	}

	public Actor getActor(int id) {
		try {
			String sql="select * from actor where actor_id=?";
			PreparedStatement psmt=con.prepareStatement(sql);
			psmt.setInt(1, id);
			ResultSet res=psmt.executeQuery();
			if (res.next()) {
				return new Actor(res.getInt("actor_id"),
						res.getString("first_name"),
						res.getString("last_name"));
			}
			else {
				return null;
			}
		}catch(Exception ex) {
			ex.printStackTrace();
			return null;
		}
	}
	public boolean addActor(String first_name, String last_name) {
		try {
			String sql="insert into actor (first_name,last_name) values (?,?)";
			PreparedStatement psmt=con.prepareStatement(sql);
			psmt.setString(1, first_name);
			psmt.setString(2, last_name);
			int res=psmt.executeUpdate();
			return res==1;
		}catch(Exception ex) {
			ex.printStackTrace();
			return false;
		}
	}
	public boolean addActor(Actor actor) {
		try {
			String sql="insert into actor (first_name,last_name) values (?,?)";
			PreparedStatement psmt=con.prepareStatement(sql);
			psmt.setString(1, actor.getFirst_name());
			psmt.setString(2, actor.getLast_name());
			int res=psmt.executeUpdate();
			return res==1;
		}catch(Exception ex) {
			ex.printStackTrace();
			return false;
		}
	}

}
	public static void main(String[] args) {
		try {
			// El objeto DAO que me permite trabajar con la BD
			ActorDAO dao=new ActorDAO();
			// Utilizar  una de las propiedades: add
			for(int i=0;i<10000;i++) {
				dao.addActor("John"+i, "Travolta");
			}
			//dao.addActor("John", "Travolta");
			
			Actor eva=new Actor(0,"Eva","Wuig");
		//	dao.addActor(eva);
			
			System.out.println(dao.getActor(1));
			System.out.println(dao.getActorAll());
			
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

Ejemplos JDBC

try {
			// Registrar el driver mysql
			Class.forName("com.mysql.cj.jdbc.Driver");
			// Conectarme a la base de datos
			Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sakila", "root", "root");
			String nombre="Ana";
			// Creo a partir de la conexión un comando
			Statement stmt = con.createStatement();
			stmt.execute("insert into actor(first_name,last_name) values ('"+nombre+"','pi')");
			
			 // Los interrogantes son los parámetros
            PreparedStatement psmt=con.prepareStatement("insert into actor (first_name,last_name) values (?,?)");
            psmt.setString(1, "Pep");
            psmt.setString(2, "Pérez");
            psmt.executeUpdate();
            psmt.setString(1, "Pepa");
            psmt.setString(2, "Pérez");
            psmt.executeUpdate();
			// Ejecuto un select y lo guardo en un resultset
            ResultSet rs = stmt.executeQuery("select * from actor where actor_id>20");
            
            // Recorro el resultset y con get obtengo los valores
            while (rs.next()) {
                System.out.println(rs.getInt("actor_id") + "  " + rs.getString(2) + "  " + rs.getString(3));
            }
			
           
            stmt.close();
            con.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

Solucion Solid

package com.trifulcas.juegoPPTLSID;

import java.util.Arrays;

public class JuegoColores implements ILogica{
	private String[] jugadas = { "verde","azul","amarillo","naranja","rojo" };

	public JuegoColores() {

	}

	@Override
	public int comprobar(String jugada1, String jugada2) {
		int pos1 = Arrays.asList(jugadas).indexOf(jugada1.toLowerCase());
		int pos2 = Arrays.asList(jugadas).indexOf(jugada2.toLowerCase());
		if ((pos1 + 1) % jugadas.length == pos2)
			return 1;
		if ((pos2 + 1) % jugadas.length == pos1)
			return 2;
		return 0;
	}

	@Override
	public String[] validas() {

		return this.jugadas;
	}
}


package com.trifulcas.juegoPPTLSID;

public interface IMostrar {
	 void mostrar(String res);
}


package com.trifulcas.juegoPPTLSID;

public class Juego {
	private Jugador jugador1;
	private Jugador jugador2;
	private ILogica _iLogica;
	private IMostrar _iMostrar;

	private String[] jugadas;

	public String[] getJugadas() {
		return jugadas;
	}

	public void setJugadas(String[] jugadas) {
		this.jugadas = jugadas;
	}

	public Jugador getJugador1() {
		return jugador1;
	}

	public void setJugador1(Jugador jugador1) {
		this.jugador1 = jugador1;
	}

	public Jugador getJugador2() {
		return jugador2;
	}

	public void setJugador2(Jugador jugador2) {
		this.jugador2 = jugador2;
	}

	public Juego(Jugador jugador1, Jugador jugador2, ILogica ilogica, IMostrar imostrar) {
		this.jugador1 = jugador1;
		this.jugador2 = jugador2;
		_iLogica = ilogica;
		jugadas = _iLogica.validas();
		_iMostrar = imostrar;
	}

	public Juego(Jugador jugador1, Jugador jugador2, ILogica ilogica) {
		this(jugador1, jugador2, ilogica, new Consola());
	}

	public String jugar() {
		jugador1.pedirJugada(jugadas);
		jugador2.pedirJugada(jugadas);
		_iMostrar.mostrar(jugador1.getNombre() + " elige " + jugador1.getJugada());
		_iMostrar.mostrar(jugador2.getNombre() + " elige " + jugador2.getJugada());
		int res = _iLogica.comprobar(jugador1.getJugada(), jugador2.getJugada());
		String resultado="Empate";
		if (res == 1) {
			resultado= jugador1.getNombre();
		}
		if (res == 2) {
			resultado= jugador2.getNombre();
		}
		_iMostrar.mostrar(resultado);
		return resultado;
	}
}

package com.trifulcas.juegoPPTLSID;

public class Consola implements IMostrar {

	@Override
	public void mostrar(String res) {
		System.out.println(res);
	}

}


package com.trifulcas.juegoPPTLSID;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;

public class Fichero implements IMostrar {

	@Override
	public void mostrar(String res) {
		Path path = Paths.get("resultado.txt");
		try {
			if (!Files.exists(path))
				Files.createFile(path);
			Files.writeString(path, res+"\r\n", StandardOpenOption.APPEND);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}

Soluciones ejercicios SOLID

package com.trifulcas.ejerciciosSolid;

public class Article {
	private String Title;
	private String Content;

	public void setTitle(String title) {
		this.Title = title;
	}

	public void setContent(String content) {
		this.Content = content;
	}
}


package com.trifulcas.ejerciciosSolid;

public class GenerateSummary {
	
	public String generateSummary(String content) {
		// Logic to generate a summary from the content
		return content.substring(0, 100) + "..."; // just a simple example
	}
}

package com.trifulcas.ejerciciosSolid;

import com.trifulcas.juego.Enemigo;

public class SaveToDatabase {
	// Cosas del tipo conexión a BD
	// etc...

	public void saveToDatabase(Article article) {
		// Logic to save the article to a database
	}
	public void saveToDatabase(Enemigo enemigo) {
		// Logic to save the article to a database
	}
}


package com.trifulcas.ejerciciosSolid;

public abstract class ReportGenerator {
	public abstract void generateReport(String data); 
}

package com.trifulcas.ejerciciosSolid;

public class ReportGeneratorPDF extends ReportGenerator {

	@Override
	public void generateReport(String data) {
		System.out.println("Aquí va el código de generar PDF");
	}

}

package com.trifulcas.ejerciciosSolid;

public class ReportGeneratorCSV extends ReportGenerator {

	@Override
	public void generateReport(String data) {
		System.out.println("Código para generar CSV");
	}

}


package com.trifulcas.ejerciciosSolid;

public interface IReportGenerator {
	public void generateReport(String data); 
}


package com.trifulcas.ejerciciosSolid;

public class ReportGeneratorXML implements IReportGenerator {

	@Override
	public void generateReport(String data) {
		System.out.println("Lógica para generar XML");
	}

}


package com.trifulcas.ejerciciosSolid;

public class ReportGeneratorID {
	IReportGenerator reportGenerator;
	
	public ReportGeneratorID(IReportGenerator reportGenerator) {
		this.reportGenerator = reportGenerator;
	}
	
	public void generateReport(String data) {
		reportGenerator.generateReport(data);
	}
	
}


package com.trifulcas.ejerciciosSolid;

public class ProbarReports {

	public static void main(String[] args) {
		String datos="Hola que tal";
		
		// Generar un PDF
		ReportGeneratorPDF rgp=new ReportGeneratorPDF();
		rgp.generateReport(datos);
		
		// Generar un XML con ID
		ReportGeneratorXML rgx=new ReportGeneratorXML();
		
		ReportGeneratorID rgid=new ReportGeneratorID(rgx);
		
		rgid.generateReport(datos);
		
		rgid=new ReportGeneratorID(rgx);
		
		rgid.generateReport(datos);
	}

}


package com.trifulcas.ejerciciosSolid;

public interface IClean {
	 void Clean();
}


package com.trifulcas.ejerciciosSolid;

public class Apartment implements IClean {

	@Override
	public void Clean() {
	       System.out.println("Apartment cleaned.");
	}

}

package com.trifulcas.ejerciciosSolid;

import java.util.Date;

public interface IRoom 	{
	void Reserve(Date from, Date to);
    void CheckInventory();
}

package com.trifulcas.ejerciciosSolid;

public interface IInventory {
	void CheckInventory();
}

package com.trifulcas.ejerciciosSolid;

import java.util.Date;

public interface IReserve {
	void Reserve(Date from, Date to);
	   
}