Sim
Experimente, temporariamente, colocar o caminho completo ao arquivo.
Entendi.
A sua Classe Chamados tem que estar assim:
public class Chamados {
private String chamadoID;
private String Descricao;
private String DataAbertura;
private String Custo;
public Chamados() {
}
public Chamados(String chamadoID, String Descricao, String DataAbertura, String Custo) {
this.chamadoID = chamadoID;
this.Descricao = Descricao;
this.DataAbertura = DataAbertura;
this.Custo = Custo;
}
public String getChamadoID() {
return chamadoID;
}
public void setChamadoID(String chamadoID) {
this.chamadoID = chamadoID;
}
public String getDescricao() {
return Descricao;
}
public void setDescricao(String Descricao) {
this.Descricao = Descricao;
}
public String getDataAbertura() {
return DataAbertura;
}
public void setDataAbertura(String DataAbertura) {
this.DataAbertura = DataAbertura;
}
public String getCusto() {
return Custo;
}
public void setCusto(String Custo) {
this.Custo = Custo;
}
Agora sim.
Deveria trazer para a tela o resultado o método mostraChamados. Dá uma conferida nos parâmetros.
Depois, vai precisar partir para a Classe ConsultaLancamentos onde irá fazer a mesma coisa que fez para a Classe Chamados e trazer os métodos para o case 1, após os métodos da ConsultaChamados.
Oi, neste ponto está errado. Deveria estar assim:
while ((linha = arquivo.readLine()) != null) {
String[] dados = linha.split(separador);
if (dados.length > 0) {
Chamados chamados = new Chamados();
...
Perfeito,
try
{scan = new BufferedReader(new FileReader(chamadosCSV)); while((linha = scan.readLine()) != null) { String[] dados = linha.split(delimitador); if (dados.length > 0) { Chamados chamados = new Chamados(); chamados.setChamadoID(dados[0]); chamados.setDescricao(dados[1]); chamados.setDataAbertura(dados[2]); chamados.setCusto(dados[3]); listaChamados.add(chamados); }
retorno
Partindo pra cima dos lancamentos
Segue a minha classe de lista de lancamentos
package modelo;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;import entidade.Lancamentos;
public class ConsultaLancamentos {
public List lerLancamentosCSV(String chamadoID, String lancamentosCSV)
{ boolean ResultadoEncontrado = false; List<Lancamentos> listaLancamentos = new ArrayList<>(); String linha = ""; String delimitador = ";"; BufferedReader scan = null; try { scan = new BufferedReader(new FileReader(lancamentosCSV)); while((linha = scan.readLine()) != null) { String[] dados = linha.split(delimitador); if (dados.length > 0) { Lancamentos lancamentos = new Lancamentos(); lancamentos.setChamadoID(dados[0]); lancamentos.setDataLancamento(dados[1]); lancamentos.setStatusID(dados[2]); listaLancamentos.add(lancamentos); } } } catch(Exception E) { System.out.println("ERRO: " + E.getMessage()); } return listaLancamentos; }
public void mostraLancamentos(String chamadoID, List listaLancamentos)
{
for (int i = 0; i < listaLancamentos.size(); i++)
{
Lancamentos lancamentos = (Lancamentos) listaLancamentos.get(i);if (lancamentos.getChamadoID().equals(chamadoID)) { System.out.println ( "\n" + "ID: " + lancamentos.getChamadoID() + "\n" + "Data de lançamento do chamado: " + lancamentos.getDataLancamento() + "\n" + "Status do chamado: " + lancamentos.getStatusID() ); } } }
}
Os getters e os setters:
package entidade;
public class Lancamentos {
private String chamadoID;
private String DataLancamento;
private String StatusID;public Lancamentos() {
}public Lancamentos(String chamadoID, String DataLancamento, String StatusID) {
this.chamadoID = chamadoID; this.DataLancamento = DataLancamento; this.StatusID = StatusID;
}
public String getChamadoID() {
return chamadoID;
}public void setChamadoID(String chamadoID) {
this.chamadoID = chamadoID;
}public String getDataLancamento() {
return DataLancamento;
}public void setDataLancamento(String DataLancamento) {
this.DataLancamento = DataLancamento;
}public String getStatusID() {
return StatusID;
}public void setStatusID(String StatusID) {
this.StatusID = StatusID;
}}
e o menu
package visao;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;import entidade.Chamados;
import entidade.Lancamentos;
import modelo.ConsultaChamados;
import modelo.ConsultaLancamentos;public class Menu {
public static void main(String[] args) {
ConsultaChamados consultaChamados = new ConsultaChamados(); ConsultaLancamentos consultaLancamentos = new ConsultaLancamentos(); String chamadosCSV = "Chamados.csv"; String lancamentosCSV = "Lançamentos.csv"; Scanner scan = new Scanner(System.in); System.out.println("------------------------------------------------"); System.out.println(" Bemvindo ao sistema de consulta de chamados "); System.out.println("------------------------------------------------\n"); System.out.println("Selecione uma opção para continuar: \n"); System.out.println("Digite 1 para consultar "); System.out.println("Digite 2 para salvar "); System.out.println("Digite 3 para carregar "); System.out.println("Digite 4 para sair \n"); int opcao = scan.nextInt(); boolean opcaoValida = true; while(opcao == 0 || opcao > 4) { System.out.println("Digite uma opção válida ! \n"); opcao = scan.nextInt(); } if(opcao > 0 || opcao <= 4) { switch(opcao){ //Caso 1 - Chama função que recupera os dados do arquivo CSV case 1: { //Pede ao usuário para informar o ID do chamado System.out.println("Por favor, informe o ID do chamado: "); //A variavel aqui chama scan2 pois já existe outra variável com o nome scan Scanner scan2 = new Scanner(System.in); //Pegamos o ID em forma de INT e transformamos em String String chamadoID = Integer.toString(scan2.nextInt()); //Criamos nosso ArrayList List<Chamados> listaChamados = new ArrayList<>(); List<Lancamentos> listaLancamentos = new ArrayList<>(); //Recebemos o resultado da classe e o armazenamos na ArrayList //Lista e exibe Chamados listaChamados = consultaChamados.lerChamadosCSV(chamadoID, chamadosCSV); consultaChamados.mostraChamados(chamadoID, listaChamados); //Lista e exibe Lancamentos listaLancamentos = consultaLancamentos.lerLancamentosCSV(chamadoID, lancamentosCSV); consultaLancamentos.mostraLancamentos(chamadoID, listaChamados); break; } case 2:{ System.out.println("Opcao 2 selecionada"); break; } case 3:{ System.out.println("Opcao 3 selecionada"); break; } case 4:{ System.out.println("Obrigado por utilizar minha aplicação, saindo... \n"); opcaoValida = false; } default:{ System.out.println("Erro desconhecido \n"); opcaoValida = false; } } }
}
}
Ao rodar eu recebo um erro
Não entendo, qual o problema com este cast?
O problema está na linha 59 da ConsultaLancamentos.
Sim, ele me diz que é um problema com o cast type mas , eu não entendi aonde
Lancamentos lancamentos = (Lancamentos) listaLancamentos.get(i);
Eu poderia tirar o cast e ele entenderia que é do tipo lancamentos ?
lancamentos = listaLancamentos.get(i);
Esta é a linha 59?
Desculpe arrumei, o problema era no menu, ao invez de listaLancamentos eu coloquei Chamados
consultaLancamentos.mostraLancamentos(chamadoID, listaChamados);
Segue o retorno do console:
Bom, agora é que vem o pulo do gato, preciso filtrar este status do chamado e carregar o Status.csv
OK.
O pulo do gato é que a Classe Status você não utiliza no menu mas na Classe ConsultaLancamentos.
Faz do mesmo jeito que para as outras classes Consulta, mas ao invés de chamar o método mostraStatus no menu vc chama-o no mostraLancamentos após o System.out.println.
Entendeu? Faz aí e me avisa.
Me surgiu uma dúvida, no caso creio que não vá precisar passar como paramêtro a este metodo o chamadoID, eu preciso do ID que esta no arquivo lancamento, então no caso eu poderia tira-lo da li e substitui-lo por statusID ? E ai eu preencheria com o dado que vem do arquivo Lancamento.csv
Isto mesmo.
Então a classe ficou assim:
package modelo;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;import entidade.Lancamentos;
import entidade.StatusID;public class ConsultaStatus
{
public List lerStatusCSV(String StatusID, String StatusCSV)
{ boolean ResultadoEncontrado = false; List<StatusID> listaStatusID = new ArrayList<>(); String linha = ""; String delimitador = ";"; BufferedReader scan = null; try { scan = new BufferedReader(new FileReader(StatusCSV)); while((linha = scan.readLine()) != null) { String[] dados = linha.split(delimitador); if (dados.length > 0) { StatusID statusID = new StatusID(); statusID.setStatusID(dados[0]); statusID.setDescricao(dados[1]); listaStatusID.add(statusID); } } } catch(Exception E) { System.out.println("ERRO: " + E.getMessage()); } return listaStatusID; }
public void mostraStatus(String statusID, List listaStatus)
{
for (int i = 0; i < listaStatus.size(); i++)
{
StatusID status = (StatusID) listaStatus.get(i);if (status.getStatusID().equals(statusID)) { System.out.println ( "\n" + "Status do chamado: " + status.getDescricao() ); } } }
}
E os getters e setters:
package entidade;
public class StatusID
{
private String statusID;
private String descricao;public StatusID(){
this.statusID = statusID;
this.descricao = descricao;
}public void setStatusID(String statusID) {
this.statusID = statusID;
}public void setDescricao(String descricao) {
this.descricao = descricao;
}public Object getStatusID() {
return statusID;
}public String getDescricao() {
return descricao;
}}
e na ConsultaLancamentos eu to chamando ela
package modelo;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;import entidade.Lancamentos;
public class ConsultaLancamentos
{
public List lerLancamentosCSV(String chamadoID, String lancamentosCSV)
{ boolean ResultadoEncontrado = false; List<Lancamentos> listaLancamentos = new ArrayList<>(); String linha = ""; String delimitador = ";"; BufferedReader scan = null; try { scan = new BufferedReader(new FileReader(lancamentosCSV)); while((linha = scan.readLine()) != null) { String[] dados = linha.split(delimitador); if (dados.length > 0) { Lancamentos lancamentos = new Lancamentos(); lancamentos.setChamadoID(dados[0]); lancamentos.setDataLancamento(dados[1]); lancamentos.setStatusID(dados[2]); listaLancamentos.add(lancamentos); } } } catch(Exception E) { System.out.println("ERRO: " + E.getMessage()); } return listaLancamentos; }
public void mostraLancamentos(String chamadoID, List listaLancamentos)
{
for (int i = 0; i < listaLancamentos.size(); i++)
{
Lancamentos lancamentos = (Lancamentos) listaLancamentos.get(i);if (lancamentos.getChamadoID().equals(chamadoID)) { System.out.println ( "\n" + "ID: " + lancamentos.getChamadoID() + "\n" + "Data de lançamento do chamado: " + lancamentos.getDataLancamento() + "\n" + "Status do chamado: " + lancamentos.getStatusID() ); String StatusID = lancamentos.getStatusID(); String StatusCSV = "Status.csv"; ConsultaStatus consultaStatus = new ConsultaStatus(); consultaStatus.lerStatusCSV(StatusID, StatusCSV); } } }
}
Rodei o código aqui mas não me trouxe as descricoes do chamado
Neste ponto faz assim:
String StatusCSV = "Status.csv"; // este aqui pode fixar na própria Classe ConsultaStatus
ConsultaStatus consultaStatus = new ConsultaStatus();
Faltou instanciar a List e chamar o método de consultaStatus
Depois este:
consultaStatus.lerStatusCSV(lancamentos.getStatusID(), listaStatus);
Sim. Está faltando o List.
Olha como fez no menu que vai ver que está faltando obter a lista.