jueves, 26 de enero de 2023

Gestionar multiples versiones de JAVA CON JEnv

Gestionar multiples versiones de JAVA CON JEnv
===============================================
Clonar Repositorio con la terminal de Git Bash
$> mkdir /c/'Program Files'/JEnv
$> cd /c/'Program Files'/JEnv
$> git clone https://github.com/FelixSelter/JEnv-for-Windows.git
$> cd JEnv-for-Windows

Configurar variables de entorno
Variables de Usuario -> path -> New : C:\Program Files\JEnv\JEnv-for-Windows
 path -> New : C:\Program Files\Java\Amazon Corretto\jdk11.0.18_10\bin
Agregar JAVA_HOME -> New : C:\Program Files\Java\Amazon Corretto\jdk11.0.18_10

Otra Forma:
Desde Consola de windows, Agregar la ruta:
$> [Environment]::SetEnvironmentVariable("Path", [Environment]::GetEnvironmentVariable("Path", "User") + ";C:\Program Files\JEnv\JEnv-for-Windows", "User")

Reiniciar equipo 
Desde la consola de windows Ejecutar:
$> jenv

Añadir JDK
$> jenv add jdk-11.0.18.10  "C:\Program Files\Java\Amazon Corretto\jdk11.0.18_10"
$> jenv list

Establecer Versión Global de Java JDK
$> jenv use jdk-11.0.18.10
$> java -version

Cambiar de Versión de Java
$> jenv change jdk-17.0.6.10

Remover JDK de la lista JEnv
$> jenv remove jdk-7

lunes, 23 de enero de 2023

POSTGRESQL

POSTGRESQL
==============

Crear Usuario Postgresql
====================

Desde la consola:
Ingresar con el usuario postgres
$> psql -U postgres -h localhost -W

CREAR USUARIO
$> CREATE ROLE nameUser WITH SUPERUSER PASSWORD 'password'

Crear una base de datos con un usuario específico como propietario
$> CREATE DATABASE nameDatabase WITH OWNER nameUser;
$> GRANT ALL PRIVILEGES ON DATABASE nameDatabase TO nameUser;


Para ver la estructura de una tabla tenemos que ejecutar la siguiente consulta:
$> select column_name, data_type, is_nullable, character_maximum_length, column_default from INFORMATION_SCHEMA.COLUMNS where table_name = 'posts';


Crear  Tabla en POSTGRESQL
==================================

CREATE TABLE post(
    id BIGINT PRIMARY KEY NOT NULL,
    title VARCHAR(50) NOT NULL UNIQUE,
    description VARCHAR(150) NOT NULL,
    content VARCHAR(255) NOT NULL,
    status CHAR(1) DEFAULT '1' NOT NULL
);
CREATE SEQUENCE seq_post START 1;

INSERT INTO post(id,title,description,content) VALUES(nextval('seq_post'),'My New first Post','First Post description','This is my new first post');

INSERT INTO post(id,title,description,content) VALUES(nextval('seq_post'),'My second Post','Second Post description','This is my new second post');

UPDATE post 
set description='FOURTH POST DESCRIPTION' 
WHERE id=2;

domingo, 22 de enero de 2023

Plantilla THYMELEAF


<!DOCTYPE html>
<html lang="es" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

</body>
</html>

sábado, 21 de enero de 2023

Anotaciones de JPA

Anotaciones de JPA
================
@Entity
@Table
@Id
@Column
@GeneratedValue
@Enumerated
@Temporal
@Transient
@OneToMany
@ManyToOne
@OneToOne
@ManyToMany

jueves, 19 de enero de 2023

Configuración de Entity Framework Core



Configuración de Entity Framework Core 
=================================
Instalar Microsoft.EntityFrameworkCore
Instalar Microsoft.EntityFrameworkCore.SqlServer
Instalar Microsoft.EntityFrameworkCore.Tools


//Crear Cadena de conexión
"ConnectionStrings": {
    "ConexionSQL": "Server=TI;Database=demoDB;Integrated Security=True;TrustServerCertificate=True"
  },

//Configuracion de la conexion SQL Server
builder.Services.AddDbContext<ApplicationDbContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("ConexionSQL"))
);

Crear migracion
$> add-migration CreacionTablaCategoriaBD

Ejecutar migracion
$> update-database


martes, 17 de enero de 2023

LinQ Sintaxis de Metodos C#


LinQ Sintaxis de Metodos 
=====================

1. int[] numeros = { 2, 3,  5, 6, 7, 8, 9, 10,12,14,15,16 };
Del arreglo muestre los números pares y que sean mayores  a 10.

Solucion:

List<int> consulta = numeros.Where(n => n % 2 == 0 && n>10).ToList();

foreach (int c in consulta)
     Console.WriteLine(c);  // 12 14 16

2. Se tiene una lista de objetos de tipo persona, crear la clase Persona con las siguientes          propiedades: Nombre, Edad, FechaIngresoEmpresa, Soltero.

List<Persona> personas = new List<Persona>()
            {
                new Persona {Nombre = "Eduardo",Edad=30,FechaIngresoEmpresa = new DateTime(2021,1,2),Soltero=true},
                new Persona {Nombre = "Nidia",Edad=19,FechaIngresoEmpresa = new DateTime(2015,11,12),Soltero=true},
                new Persona {Nombre = "Alejandro",Edad=45,FechaIngresoEmpresa = new DateTime(2020,4,12),Soltero=false},
                new Persona {Nombre = "Valentina",Edad=24,FechaIngresoEmpresa = new DateTime(2021,7,8),Soltero=false},
                new Persona {Nombre = "Roberto",Edad=61,FechaIngresoEmpresa = DateTime.Now.AddDays(-1),Soltero=false}
            };

a)  Listar el nombre y la edad de las personas menores o iguales de 25.
b)  Listar el nombre de las personas que son solteras. 
c)  Listar el nombre y la edad de las personas que son solteras y menores o iguales de 25. 
d)  Listar el nombre de las personas con menos de 3 meses en la empresa.
e)  Listar el nombre y la edad de las personas ordenadas por su edad de manera ascendente.
f)  Listar solo el nombre de las personas
g)  Listar el nombre y la edad de las personas, ordenadas por el nombre de manera ascendente.

Solución:

a)
            List<Persona> listPersons = personas.Where(p => p.Edad <= 25).ToList();

            foreach (Persona p in listPersons)
                Console.WriteLine($"{p.Nombre} {p.Edad}"); //Nidia

b)
            List<Persona> listPersons = personas.Where(p => p.Soltero).ToList();

            foreach (Persona p in listPersons)
                Console.WriteLine($"{p.Nombre}");

c)
            List<Persona> listPersons = personas.Where(p => p.Soltero && p.Edad<=25).ToList();

            foreach (Persona p in listPersons)
                Console.WriteLine($"{p.Nombre} {p.Edad}");


d)
            List<Persona> listPersons = personas.Where(p => p.FechaIngreso>=DateTime.Today.AddMonths(-3)).ToList();

            foreach (Persona p in listPersons)
                Console.WriteLine($"{p.Nombre}");

e)
           var result = personas.OrderBy(p=>p.Edad);

            foreach (Persona p in result)
                Console.WriteLine($"{p.Nombre} {p.Edad}");

f)
           var result = personas.Select(p=>p.Nombre);

            foreach (var nombre in result)
                Console.WriteLine(nombre);

g)
           var result = personas.OrderBy(p=>p.Nombre).Select(p=>new
           {
                Nombre = p.Nombre,
                Edad = p.Edad
            });

            foreach (var p in result)
                Console.WriteLine($"{p.Nombre} {p.Edad}");

3.  Se tiene una lista de empleados, donde tiene 3 propiedades el IdEmpleado, Nombre y el IdModalidad.

            List<Empleado> listaEmpleado = new List<Empleado>
            {
                new Empleado {IdEmpleado=1, Nombre="Pedro", IdModalidad=1},
                new Empleado {IdEmpleado=2, Nombre="Maria", IdModalidad=2},
                new Empleado {IdEmpleado=3, Nombre="Luis", IdModalidad=1},
                new Empleado {IdEmpleado=4, Nombre="Andrea", IdModalidad=3}
            };

Obtener una lista con los nombres de los empleados cuya IdModalidad es igual a 1.

Solución:
List<Empleado> listaEmpleado = new List<Empleado>
    {
        new Empleado {IdEmpleado=1, Nombre="Pedro", IdModalidad=1},
        new Empleado {IdEmpleado=2, Nombre="Maria", IdModalidad=2},
        new Empleado {IdEmpleado=3, Nombre="Luis", IdModalidad=1},
        new Empleado {IdEmpleado=4, Nombre="Andrea", IdModalidad=3}
    };

    var result = listaEmpleado.Where(e => e.IdModalidad == 1).ToList();

    foreach (var e in result)
    {
        Console.WriteLine($"{e.Nombre}");  // Pedro Luis
    }

------------------------------------------------------------------------------------------------------------------
LINQ INNER JOIN

1. Dadas las siguientes 2 listas de objetos, 
   Crear la clase Empleado con las siguientes propiedades: IdEmpleado, Nombre y el IdModalidad
   Crear la clase Modalidad Contrato con las siguientes propiedades: IdModalidad y el NombreM
             List<Empleado> listaEmpleado = new List<Empleado>
            {
                new Empleado {IdEmpleado=1, Nombre="Pedro",IdModalidad=1},
                new Empleado {IdEmpleado=2, Nombre="Jorge",IdModalidad=2},
                new Empleado {IdEmpleado=3, Nombre="Luis",IdModalidad=1},
                new Empleado {IdEmpleado=4, Nombre="Julio",IdModalidad=3},
            };

            List<ModalidadContrato> listaModalidad = new List<ModalidadContrato>
            {
                new ModalidadContrato {IdModalidad=1, NombreModalidad="CAS"},
                new ModalidadContrato {IdModalidad=2, NombreModalidad="TEMPORAL"},
                new ModalidadContrato {IdModalidad=3, NombreModalidad="INDEFINIDO"}
            };

Mediante una consulta linq Imprimir el siguiente resultado:
El empleado "nombre empleado" y el "nombre modalidad". 

Solución:

var consulta = listaModalidad.Join(
                listaEmpleado,
                m => m.IdModalidad,
                e => e.IdModalidad,
                (m, e) => new{NombreModalidad = m.NombreModalidad,NombreEmpleado = e.Nombre});

foreach (var c in consulta)
    Console.WriteLine($"{c.NombreEmpleado} {c.NombreModalidad}");

2. Dadas las siguientes 3 listas de objetos, 
   Crear la clase Empleado con las siguientes propiedades: IdEmpleado, NombreEmpleado y el IdModalidad
   Crear la clase ModalidadContrato con las siguientes propiedades: IdModalidad y el NombreM
   Crear la clase Producto con las siguientes propiedades: IdProducto,NombreProducto, Id

    List<Categoria> listaCategoria = new List<Categoria>
    {
    new Categoria{IdCategoria=1 , NombreCategoria="Fruta"},
    new Categoria {IdCategoria=2 ,NombreCategoria="Verdura"}
    };
List<Proveedor> listaProveedor = new List<Proveedor>
      {
new Proveedor{IdProveedor=1 , NombreProveedor="ABC"},
new Proveedor {IdProveedor=2 , NombreProveedor="XYZ"}
       };
List<Producto> listaProducto = new List<Producto>
    {
    new Producto{IdProducto=1 , NombreProducto="Fresa" , IdCategoria=1 , IdProveedor=2},
    new Producto {IdProducto=2 , NombreProducto="Tomate" , IdCategoria=2 , IdProveedor=1}
    };

Listar el nombre del producto, el nombre de la categoria y el nombre del proveedor.

Solucion:

var result = listaCategoria.Join(
    listaProducto,
    cat => cat.IdCategoria,
    prod => prod.IdCategoria,
    (cat, prod) => new { Categoria = cat, Producto = prod }
    ).Join(
    listaProveedor,
    prodcat => prodcat.Producto.IdProveedor,
    prov => prov.IdProveedor,
    (prodcat, prov) => new { ProductoCategoria = prodcat, Proveedor = prov }
    );

foreach (var c in result)
        Console.WriteLine($"{c.ProductoCategoria.Producto.NombreProducto} {c.ProductoCategoria.Categoria.NombreCategoria} {c.Proveedor.NombreProveedor}");



CONST Y ENUM EN C#



CONST Y ENUM EN C#
====================
Un enum es una coleccion de constantes.
No se pueden asignar valores de tipo cadena.
Se recomienda no asignar valores, solo mantener sus valores por defecto

Ejemplo ENUM:

public enum Meses
{
   Enero = 1,
   Febrero = 2,
   Marzo = 3,
   Abril  = 4,
   Mayo 
= 5, 
   Junio = 6,
   Julio = 7,
   Agosto = 8,
   Setiembre = 9,
   Octubre = 10,
   Noviembre = 11,
   Diciembre = 12
}

public class Program
{
    public static int Main()
   {
     Meses mes = Meses.Enero;
    Console.WriteLine((int)mes);   //1
    }
}

Ejemplo CONST:

public class TipoAfiliacion
 {
    public const double DescuentoAFP = 0.11;
    public const double DescuentoSNP = 0.06;
    public const double DescuentoESSALUD = 0.03;
 }

public class Program
{
public static int Main()
{
double a = TipoAfiliacion.DescuentoAFP ;
        double b = TipoAfiliacion.DescuentoAFP ;
        double c = TipoAfiliacion.DescuentoAFP ;
        Console.WriteLine(a);  //0.11
        Console.WriteLine(b);  //0.06
        Console.WriteLine(c);  //0.03
}
}



lunes, 16 de enero de 2023

Migración a Spring boot 3 - JAVA 17


Migración a Spring boot 3 - JAVA 17
=============================
1. Cambiar versión de Spring boot version 3.0.x en pom.xml
2. Cambiar el nombre del paquete de javax a jakarta
3. Eliminar y crear nueva database
4. Insertar registros en las tablas

Restablecer el puerto 8080


Restablecer el puerto 8080

$> netstat -ano | findstr :8080
     TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 6804

$> taskkill /PID 6804 /F

Instalar Powershell 7

Instalar Powershell Version 7 -------------------------------------- $> winget search powershell $> winget install Microsoft.Powershe...