Olá Pessoal!
Estou desesperado, alguém me ajuda por favor…
O objetivo final é ler um arquivo.csv e gerar um grafico (através do jFreechart). Pois bem. Eu consegui ler o arquivo normalmente, mas estou muito confuso em relação à como fazer o relacionamento entre as classes. Segue o código:
Classe Controller - Pacote principal:
ublic class Controller {
public static void main(String[] args) {
LeitorDeArquivo leitor = new LeitorDeArquivo();
leitor.lerArquivo(“H:\Programação\Java\Projetos\ProjetoIntegrado\dados.csv”);
imprimeLista();
}
}
Pacote model - Classe Pais:
private String ranking;
private String pais;
private static ArrayList<Pais> listaPais= new ArrayList<Pais>();
private static ArrayList<Pib> pibs = new ArrayList<Pib>();
public Pais(String ranking, String pais) {
this.ranking = ranking;
this.pais = pais;
listaPais.add(this);
}
public static void ano_pib(int ano, String pib){
pibs.add(new Pib(ano, pib));
}
public static void imprimeLista(){
/* for(Pais i : listaPais){
System.out.println(i.getRanking() + "\t" + i.getPais() + "\t");
}*/
for(Pib i : pibs){
System.out.println(i.getAno() + "\t" + i.getPib());
}
}
public String getRanking() {
return ranking;
}
public String getPais() {
return pais;
}
}
Pacote model - Classe Pib:
public class Pib {
private int ano;
private String Pib;
private static ArrayList listaPib = new ArrayList();
public Pib(int ano, String Pib) {
this.ano = ano;
this.Pib = Pib;
this.listaPib.add(this);
}
public ArrayList<Pib> getListaPib() {
return listaPib;
}
public int getAno() {
return ano;
}
public String getPib() {
return Pib;
}
}
Pacote util - Classe LeitorDeArquivo:
public class LeitorDeArquivo {
private static ArrayList<String> lista = new ArrayList<String>(); // lista que armazena os dados obtidos
private static ArrayList<Integer> listaAno = new ArrayList<Integer>(); // lista que armazena os anos
public LeitorDeArquivo() { //construtor
}
public void lerArquivo(String nome){
File arquivo = new File(nome);
BufferedReader br = null;
String linha = "";
String csvDivisor = ";";
try {
int inc_linha = 0;
int ano = 0;
br = new BufferedReader(new FileReader(arquivo));
while((linha = br.readLine()) != null){
String[] itens = linha.split(csvDivisor);
for(int i = 0; i <= 1; i++){ //varre as linhas
itens[i] = itens[i].replace("..", "0");
Pais pais = new Pais(itens[0], itens[1]);
}
for( int j = 2; j < itens.length; j++){
ano = Integer.parseInt(itens[j]);
Pais.ano_pib(ano, (itens[j])); //pega a coluna 2, 3, 4....
}
inc_linha++;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
} finally{
if(br != null){
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
O problema é o seguinte: minha tabela segue a seguinte estrutura:
HDI Rank;Country;1980;1985;1990;2000;2005;2006;2007;2008;2009;2010;2011;2012
1;Norway;5.8;5.4;6.4;6.6;7.0;6.5;6.7;6.4;7.3;6.9;…;6.9
2;Australia;5.7;5.4;4.7;4.9;4.9;4.8;4.7;4.6;5.1;…;…;5.1
3;Switzerland;4.6;4.5;4.8;5.1;5.5;5.3;5.0;5.1;5.4;…;…;5.4
4;Netherlands;6.4;5.9;5.6;5.0;5.5;5.5;5.3;5.5;5.9;6.0;…;6.0
5;United States;…;…;5.0;…;5.3;5.6;5.5;5.5;5.4;5.6;…;5.6
6;Germany;…;…;…;…;…;4.4;4.5;4.6;5.1;…;…;5.1
Entao meio que há três variáveis: o Ano, o pais e o pib em si. Sei que devo fazer algo como criar um objeto Ano e dentro dele botar todos os Pibs, mas nao sei como fazer isso… alguém me ajuda por favor!!!