package leituradados.ariane;
import java.net.*;
import java.io.*;
import java.sql.*;
import java.util.Calendar;
import java.util.Date;
import java.util.ArrayList;
import java.text.SimpleDateFormat;
//importa as estacoes do modelo de simulação cadastrado com código 3
public class ImportaAriane {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd00");
SimpleDateFormat sdfDateTime = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
SimpleDateFormat sdfJul = new SimpleDateFormat("yyyyDDD");
SimpleDateFormat sdfTime = new SimpleDateFormat("HH:mm:ss");
String v_sigla="", v_estacaoOrg="";
int v_atualizado=0;
public void ImportaAriane()
{
ArrayList dadosEstacoes = new ArrayList();
String sql="", vcaminho="", linha="", varquivo="", v_variavel="", v_tipoDados="", sql1="", v_operadorConversao="";
ResultSet rs_estacoes, rs_modelos, rs_cod;
int vmodelo, vtipo_importacao, vignorar, vinicial, vfinal, vflag, v_nroDias, v_horasDia, vflag1, v_cod=0, v_estacao = 0;
int v_faixaEstacao;
Double vvalor=0.0, v_conversao;
ArrayList conteudo1 = new ArrayList();
Statement s_busca;
Statement s_busca1;
try{
sql="select caminho_arquivos, codigo from modelos_simulacoes where codigo=3";
//
PoolCon.conecta();
//
rs_modelos = PoolCon.executeQuery(sql);
while (rs_modelos.next())
{
vcaminho = rs_modelos.getString("caminho_arquivos");
vmodelo = rs_modelos.getInt("codigo");
//
s_busca = PoolCon.getStatement();
//
sql="";
sql+="select caminho_arquivos, posicao_inicial, posicao_final, conversao, operador_conversao, ";
sql+="tipo_importacao, linhas_iniciais, estrutura_arquivo, nro_dias, horas_dia, tipo_dado, variavel ";
sql+="from modelos_simulacoes ms, modelos_simulacoes_variaveis msv, variaveis";
sql+=" where ms.codigo=msv.modelo_simulacao and msv.variavel=variaveis.codigo and msv.importa='S' and ms.codigo="+vmodelo;
rs_modelos = s_busca.executeQuery(sql);
System.out.println("foi 56");
//
vflag=0;
vflag1=0;
String fileName = v_sigla + "_" + sdfDateTime.format(new Date()) + ".dat";
//
s_busca = PoolCon.getStatement();
//
sql="select nextval('id_dados_climaticos_previsoes');";
rs_cod = s_busca.executeQuery(sql);
rs_cod.next();
v_cod=0;
v_cod = rs_cod.getInt("nextval");
v_estacao = vmodelo;
Calendar cale= Calendar.getInstance();
sql = "insert into dados_climaticos_previsoes (codigo,modelo_simulacao, estacao, data_importacao, hora_importacao) values ";
sql+= "("+ v_cod + "," + vmodelo + "," + v_estacao + ", '";
sql+= cale.get(Calendar.DAY_OF_MONTH)+"/"+(cale.get(Calendar.MONTH)+1)+"/"+cale.get(Calendar.YEAR)+"', '";
sql+= sdfTime.format(cale.getTime())+"')";
s_busca.execute(sql);
System.out.println("foi linha 79");
while (rs_modelos.next())
{
int v_tamanhoarquivo=0;
varquivo = rs_modelos.getString("estrutura_arquivo");
vtipo_importacao=rs_modelos.getInt("tipo_importacao");
vcaminho=rs_modelos.getString("caminho_arquivos");
vignorar=rs_modelos.getInt("linhas_iniciais");
vinicial=rs_modelos.getInt("posicao_inicial");
vfinal=rs_modelos.getInt("posicao_final");
v_nroDias=rs_modelos.getInt("nro_dias");
v_horasDia = rs_modelos.getInt("horas_dia");
v_tipoDados = rs_modelos.getString("tipo_dado");
v_variavel = rs_modelos.getString("variavel");
v_conversao = rs_modelos.getDouble("conversao");
v_operadorConversao = rs_modelos.getString("operador_conversao");
if ((vtipo_importacao==1) && (vflag==0)) //trata como um arquivo de acesso local
{
System.out.println(vcaminho+fileName);
conteudo1 = lerLocal(vcaminho+fileName);
vflag=1;
}
if ((vtipo_importacao==2) && (vflag==0)) //trata como uma url
{
conteudo1 = readDataURL(vcaminho, fileName);
vflag=1;
}
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.add(Calendar.HOUR_OF_DAY, 1);
int v_data=0;
int vhora=0;
int cont=0;
Calendar h=Calendar.getInstance();
s_busca1 = PoolCon.getStatement();
System.out.println("foi linha 131");
for (int i = vignorar; i < conteudo1.size(); i++){
linha = conteudo1.get(i).toString();
v_data=0;
v_data = (int) cont/v_horasDia;
vhora = cont - (v_data*v_horasDia);
System.out.println("foi linha 141");
Calendar c= Calendar.getInstance();
c.add(Calendar.DATE, v_data);
h.set(Calendar.HOUR_OF_DAY,vhora);
sql="insert into dados_climaticos_variaveis";
sql+="(dado_climatico, variavel, tipo_dado, valor_dado, data, hora)";
sql+=" values (" + v_cod + ", " + v_variavel + ", " + v_tipoDados+", ";
System.out.println("foi linha 152");
if (v_tipoDados.equals("1")) //data
{
}
if (v_tipoDados.equals("2")) //inteiro
{
}
if (v_tipoDados.equals("3")) //double
{
vvalor = Double.parseDouble(linha.substring(vinicial , vfinal));
if (v_conversao!=0)
vvalor = conversao(vvalor,v_operadorConversao,v_conversao);
sql+= "row("+ 0 +","+vvalor+","+null+","+null+","+null+")";
}
if (v_tipoDados.equals("4")) //text
{
}
if (v_tipoDados.equals("5")) //hora
{
}
sql+=",'"+c.get(Calendar.DAY_OF_MONTH)+"/"+(c.get(Calendar.MONTH)+1)+"/"+c.get(Calendar.YEAR)+"', '"+ h.get(Calendar.HOUR_OF_DAY)+":00" +"')";
cont=cont+1;
s_busca1.execute(sql);
} //fecha o for
System.out.println("fim do for ok");
} //fecha o while
PoolCon.desconecta();
}
}
catch (Exception e){
}
System.out.println("fim!");
}
public ArrayList lerLocal(String vcaminho)
{
ArrayList conteudo = new ArrayList();
try
{
File f = new File(vcaminho);
BufferedReader in = new BufferedReader(new FileReader(vcaminho));
String inputLine;
while ((inputLine = in.readLine()) != null)
{
if (!inputLine.trim().equals(""))
{
conteudo.add(inputLine);
}
}
in.close();
}
catch (Exception e) { }
return conteudo;
}
public Double conversao(Double valor, String operador, Double valorConversao)
{
if (operador.equals("-") )
valor=valor - valorConversao;
if (operador.equals("*") )
valor=valor - valorConversao;
if (operador.equals("/") )
valor=valor / valorConversao;
if (operador.equals("+") )
valor=valor + valorConversao;
return valor;
}
public ArrayList readDataURL(String vcaminho, String vfileName)
{
ArrayList conteudo = new ArrayList();
String linha = "";
try
{
String fileName = (vcaminho + vfileName);
URL yahoo = new URL(fileName);
BufferedReader in = new BufferedReader(new InputStreamReader(yahoo.openStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
if (!inputLine.trim().equals("")) {
conteudo.add(inputLine);
}
}
in.close();
} catch (Exception e)
{
System.out.println("Erro lendo URL: " + e);
}
return conteudo;
}
public static void main(String[] args)
{
ImportaAriane r = new ImportaAriane();
r.ImportaAriane();
}
}