Pessoal Help!
criei um método no meu programa que pesquisa em um arquivo texto coordenadas latitude longitude e para cada coordenada ele adiciona tbm uma informacao num mês e ano no banco d dados.
até aí tá td certinho
só que eu quero criar uma maneira para que caso já exista no banco uma informação para uma coordenada num certo mês e ano essa informação não seja adicionada.
estou usando o Hibernate.
segue o código:
public boolean importar() {
int x = 1;
//para cada linha do arquivo
try {
BufferedReader lerArquivo = null;
FileReader fr = null;
Coordenada coord = null;
Coordenada coordTemp = null;
Informacao info = null;
int mes = 0;
int ano = 0;
if (arquivo == null || !arquivo.exists()) {
return false;
} else {
fr = new FileReader(arquivo);
lerArquivo = new BufferedReader(fr);
}
String linha = null;
StringTokenizer st = null;
int i = 0;
Date inicio = new Date();
Date fim = null;
while ((linha = lerArquivo.readLine()) != null) {
i++;
if (i == 4) {
String letras = linha;
if (letras.substring(22, 25).equals("Jan")) {
mes = 1;
} else if (letras.substring(22, 25).equals("Feb")) {
mes = 2;
} else if (letras.substring(22, 25).equals("Mar")) {
mes = 3;
} else if (letras.substring(22, 25).equals("Apr")) {
mes = 4;
} else if (letras.substring(22, 25).equals("May")) {
mes = 5;
} else if (letras.substring(22, 25).equals("Jun")) {
mes = 6;
} else if (letras.substring(22, 25).equals("Jul")) {
mes = 7;
} else if (letras.substring(22, 25).equals("Aug")) {
mes = 8;
} else if (letras.substring(22, 25).equals("Sep")) {
mes = 9;
} else if (letras.substring(22, 25).equals("Oct")) {
mes = 10;
} else if (letras.substring(22, 25).equals("Nov")) {
mes = 11;
} else if (letras.substring(22, 25).equals("Dec")) {
mes = 12;
}
ano = Integer.parseInt(letras.substring(25, 29));
} else if (i >= 10) {
//instaciar uma coordenada
coord = new Coordenada();
st = new StringTokenizer(linha);
coord.setLatitude(new BigDecimal(st.nextToken()));
coord.setLongitude(new BigDecimal(st.nextToken()));
//instaciar uma informação
info = new Informacao();
info.setMes(mes);
info.setAno(ano);
info.setTemperatura(new BigDecimal(st.nextToken()));
coordTemp = daoCoordenada.obter(coord);
if (coordTemp != null) {
//se a coordenada já está no banco grava-se apenas a informação
if (coordTemp.getInformacaoList() == null) {
coordTemp.setInformacaoList(new ArrayList<Informacao>());
}
info.setCoordenada(coordTemp);
coordTemp.getInformacaoList().add(info);
if (!daoCoordenada.criar(coordTemp)) {
return false;
}
} else {
//senão grava-se a coordenada e a informação
coordTemp = coord;
if (coordTemp.getInformacaoList() == null) {
coordTemp.setInformacaoList(new ArrayList<Informacao>());
}
info.setCoordenada(coordTemp);
coordTemp.getInformacaoList().add(info);
if (!daoCoordenada.criar(coordTemp)) {
return false;
}
}
if (i % 250 == 0) {
fim = new Date();
System.out.println("250 registros foram importados");
System.out.println("Tempo (s): " + (fim.getTime() - inicio.getTime()) / 1000F);
System.out.println("Remessa de Dados nº: " + (x++));
inicio = new Date();
}
}
}
lerArquivo.close();
return true;
} catch (Exception ex) {
System.err.println("Erro: " + ex);
return false;
}
}