Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
4
respuestas

[Queja] Archivos faltantes

Si tienen problemas como yo en el caso de que no encuentren los archivos que no explico en clases anteriores, tienen 3 opciones.

  • van al github y descargan el proyecto nuevamente y lo importan en su IDE.
  • Descargan el archivo "LoadRecords" en el github en la seccion "src/main/java/com/latam/alura/tienda/prueba/" y tambien los archivos categoria.txt, cliente.txt y producto.txt de la direccion "src/main/resources/utils/" y los mandan a la carpeta "C:\Users\Public\Alura\jpa" si han seguido el curso (tambien pueden modificar esa linea en el archivo LoadRecords la cual se encuentra en la funcion ReadFile).
  • La otra opcion es que hagan las clases y los txt, copiando lo siguente: LoadRecords
package com.latam.alura.tienda.prueba;

import java.io.File;
import java.io.FileNotFoundException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import javax.persistence.EntityManager;
import com.latam.alura.tienda.dao.CategoriaDao;
import com.latam.alura.tienda.dao.ClienteDao;
import com.latam.alura.tienda.dao.PedidoDao;
import com.latam.alura.tienda.dao.ProductoDao;
import com.latam.alura.tienda.modelo.Categoria;
import com.latam.alura.tienda.modelo.Cliente;
import com.latam.alura.tienda.modelo.ItemsPedido;
import com.latam.alura.tienda.modelo.Pedido;
import com.latam.alura.tienda.modelo.Producto;
import com.latam.alura.tienda.utils.JPAUtils;


public class LoadRecords {
    public static void cargarRegistros() throws FileNotFoundException {
        EntityManager em = JPAUtils.getEntityManager();
        CategoriaDao categoriaDao = new CategoriaDao(em);
        ProductoDao productoDao = new ProductoDao(em);
        ClienteDao clienteDao = new ClienteDao(em);
        PedidoDao pedidoDao = new PedidoDao(em);
        em.getTransaction().begin();

        loadCategoria("categoria",categoriaDao,em);

        loadProducto("producto",productoDao,categoriaDao,em);

        loadCliente("cliente",clienteDao,em);

        List<Cliente> clientesList = clienteDao.consultarTodos();
        List<Pedido> pedidoList= new ArrayList<>();

        for(Cliente cl:clientesList) {
            pedidoList.add(new Pedido(cl));
        }

        for(int i=0;i<pedidoList.size();i++) {
            pedidoList.get(i).agregarItems(new ItemsPedido(i+1,productoDao.consultaPorId((long) (i+1)),pedidoList.get(i)));
            pedidoDao.guardar(pedidoList.get(i));
        }

        em.getTransaction().commit();
        em.close();

    }

    private static void loadProducto(String type, ProductoDao productoDao,CategoriaDao categoriaDao, EntityManager em) throws FileNotFoundException {
        List<String> productosTxt =readFile(type);
        for(int i=0;i<productosTxt.size();i++) {
            String[] line = productosTxt.get(i).split(";");
            if(line.length>1) {
                Categoria categoria=categoriaDao.consultaPorNombre(line[3]);
                Producto producto = new Producto(line[4],line[0],new BigDecimal(line[1]),categoria);
                productoDao.guardar(producto);
                em.flush();
            }
        }
    }

    private static void loadCategoria(String type, CategoriaDao categoriaDao,EntityManager em) throws FileNotFoundException {
        List<String> categoriasTxt =readFile(type);        
        for(int i=0;i<categoriasTxt.size();i++) {
            String[] line = categoriasTxt.get(i).split(";");
            if(line.length==1) {
                Categoria categoria = new Categoria(categoriasTxt.get(i));
                categoriaDao.guardar(categoria);
                em.flush();    
            }
        }
    }

    private static void loadCliente(String type, ClienteDao clienteDao,EntityManager em) throws FileNotFoundException {
        List<String> clientesTxt =readFile(type);        
        for(int i=0;i<clientesTxt.size();i++) {
            String[] line = clientesTxt.get(i).split("~");
            System.out.println(line[0]+line[1]);
            if(line.length>1) {
                Cliente cliente= new Cliente(line[0],line[1]);
                clienteDao.guardar(cliente);
                em.flush();    
            }
        }
    }

    private static List<String> readFile(String type) throws FileNotFoundException {
        File file = new File("C:\\Users\\Public\\Alura\\jpa\\"+type+".txt");
        Scanner scan = new Scanner(file);
        List<String> pedido= new ArrayList<>();
        while(scan.hasNextLine()){
            pedido.add(scan.nextLine());
        }
        scan.close();
        return pedido;
    }


}

Y los TXT serian: categoria.txt

CELULARES
LIBROS
PANTALLAS
ESTUCHES
CARGADORES
ELECTRONICOS
MONITORES
CAMARA

cliente.txt

Juan~12jb42ww
Maria~h23jb54e
Antonio~rsf32sfgt6
Carlos~kjb3244
Rodrigo~lkj3265lm
Gustavo~kn12hcg2
Estefani~kjb21okp1
Cristina~jn234k234

producto.txt

usado;5000;2023-03-03;CELULARES;samsun
nuevo;2500;2023-03-04;PANTALLAS;Samsung
repues;3000;2023-03-05;CELULARES;iphone
usado;1500;2023-03-06;CAMARAS;Kodak
nuevo;750;2023-03-07;PANTALLAS;Samsung
nuevo;2000;2023-03-08;CARGADORES;iphone
nuevo;3000;2023-03-09;CARGADORES;samsung
repue;1000;2023-03-10;CELULARES;samsungA20
nuevo;3000;2023-03-09;CARGADORES;samsung
repue;1000;2023-03-10;CELULARES;samsungA20
4 respuestas
solución!

Hola

Entiendo que has tenido problemas para encontrar los archivos que no se explicaron en clases anteriores. Gracias por compartir las opciones que encontraste para solucionar este problema.

Si alguien más está teniendo el mismo problema, puede seguir tus sugerencias para solucionarlo. También es importante mencionar que es normal tener dificultades en el aprendizaje y que siempre hay opciones para resolver cualquier problema.

Espero que esta información te sea útil y que puedas continuar con el curso sin más inconvenientes. Si necesitas ayuda adicional, no dudes en preguntar.

¡Espero haber ayudado y buenos estudios!

Muchas gracias al compañero por ese gesto de colaboración para así tratar de cumplir de la mejor manera con el compromiso adquirido antes de iniciar este grandioso programa que muy generosamente nos ha ofrecido Oracle Corporation.

Buenas Tardes:

Yo que estoy siguiendo el curso tuve que incluir en la clase CategoriaDao lo siguiente (no lo tenía en mi proyecto pero en el de GitHub si está):

`    
public Categoria consultaPorNombre(String nombre){
    String jpql =" SELECT C FROM Categoria AS C WHERE C.nombre=:nombre ";
    return em.createQuery(jpql,Categoria.class).setParameter("nombre", nombre).getSingleResult();
}
`

Igualmente pregunto, el directorio que mencionas "C:\Users\Public\Alura\jpa" es el mismo que tenemos en persistence.xml?

Gracias por la información suministrada y de antemano gracias por atender a mis consultas.

Muy bueno el aporte.