package gcom.gui.micromedicao;
import gcom.gui.GcomAction;
import gcom.micromedicao.FiltroTelemetriaRetMot;
import gcom.micromedicao.TelemetriaLog;
import gcom.micromedicao.TelemetriaRetMot;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* Action utilizado
*
*
*
* @author Rodrigo Silveira , Thiago Nascimento e Yara Taciane
* @since 28/07/2008
*/
public class ProcessarRequisicaoTelemetriaAction extends GcomAction {
/**
* Action que captura as requisi��es vindas da Telametria.
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest request,
HttpServletResponse response) {
ActionForward actionForward = null;
String dadosTelemetria = request.getParameter("dadosTelemetria");
TelemetriaLog telemetriaLog=
this.getFachada().processarLeituraViaTelemetria(dadosTelemetria);
// 2*2008-07-25 15:25:00*2008-07-25
// 15:00:00;123456;987654;11111;3333;1*2008-07-25
// 14:00:00;55555;77777;4444;2222;1
// quantidade de consumidores
// data/hora de envio
// data/hora de leitura
// inscri��o
// matr�cula
// leitura
// n�mero do hidrometro
// Tipo de Medi��o (1 - �gua | 2 - Po�o)
/*Vector<DadosMovimentacao> v = new Vector<DadosMovimentacao>();
String dadosTelemetria = request.getParameter("dadosTelemetria");
String[] dados = dadosTelemetria.split("\\*");
int quantidadeConsumidores = 0;
SimpleDateFormat formatacaoData = new SimpleDateFormat("yyyy-MM-dd");
System.out.println("____________________________________________________________________________________");
// QuantidadeConsumidores
quantidadeConsumidores = Integer.parseInt(dados[0]);
System.out
.println("quantidadeConsumidores = " + quantidadeConsumidores);
// Data Envio
Date dataEnvio = null;
try {
dataEnvio = formatacaoData.parse(dados[1]);
System.out.println("dataEnvio = " + Util.formatarData(dataEnvio));
} catch (ParseException e1) {
e1.printStackTrace();
}
System.out.println("........................................................");
// Apartir da posi��o 2 do vetor.
// Processar o resto dos dados
for (int i = 2; i < dados.length; i++) {
String medicao = dados[i];
String[] medicaoDados = medicao.split(";");
Date dataLeitura = null;
try {
dataLeitura = formatacaoData.parse(medicaoDados[0]);
} catch (ParseException e) {
e.printStackTrace();
}
String matricula = medicaoDados[2];
System.out.println("matricula = " + matricula);
int leitura = Integer.parseInt(medicaoDados[3]);
int tipoMedicao = Integer.parseInt(medicaoDados[5]);
v.add(new DadosMovimentacao(new Integer(matricula), new Integer(
leitura), new Integer(0), dataLeitura, null, new Byte(
(byte) 0), new Integer(tipoMedicao)));
}
System.out.println("........................................................");
*/
try {
//Fachada.getInstancia().atualizarLeituraTelemetria(v);
URL url = new URL("http", "192.168.1.10", 33128,
"http://www.smartok.com.br/fechamento/retorno.php");
System.out.println("conectando : " + url);
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
OutputStreamWriter writer = new OutputStreamWriter(connection
.getOutputStream(), "UTF-8");
FiltroTelemetriaRetMot retorno = new FiltroTelemetriaRetMot();
retorno.adicionarParametro(
new ParametroSimples(FiltroTelemetriaRetMot.ID,
telemetriaLog.getTelemetriaRetMot().getId()));
Collection colecaoRetorno =
this.getFachada().pesquisar(retorno, TelemetriaRetMot.class.getName());
TelemetriaRetMot telemetriaRetMot =
(TelemetriaRetMot) Util.retonarObjetoDeColecao(colecaoRetorno);
String msgRetorno = "";
if(telemetriaRetMot != null){
msgRetorno = telemetriaRetMot.getDescricaoRetorno();
}
writer.write("retornoDado=" + dadosTelemetria + " " + msgRetorno);
writer.flush();
writer.close();
String line = "";
BufferedReader reader = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
writer.close();
reader.close();
connection.disconnect();
System.out.println("disconectado");
} catch (IOException e) {
System.out.println("Erro: " + e.getMessage());
} catch (Exception e) {
System.out.println("Erro: " + e.getMessage());
}
return actionForward;
}
}