Exemplo n.º 1
0
  @Test
  public void insereHorasNaTabelaHora() {

    // zera a tabela de medicao_hora
    query.execute("delete from medicao_hora");

    // dias entre a maior e a menor data de captura no banco de dados
    // deve-se deletar os dados da tabela medicao_dia
    // select extract(epoch from ( select age(min(data)::date, now()::date)
    // from altitude )) / (60 * 60 *24 )

    TabelaAuxiliar tabelaHora;

    for (int j = DIAS_; j > 0; j--) {

      Boolean deveContinuar = true;
      List<TabelaAuxiliar> horas = new ArrayList<TabelaAuxiliar>();

      for (VariacaoStringModel vsm : sentidoVentoService.getVentosHoraEspecificoDiasAtras(j)) {
        tabelaHora = new TabelaAuxiliar();
        if (Check.naoNulo(vsm.getData())) {
          tabelaHora.setModaVento(vsm.getModa());
          tabelaHora.setQtdVentoModa(vsm.getQtdModa());

          tabelaHora.setMediaVento(vsm.getMedia());
          tabelaHora.setQtdVentoMedia(vsm.getQtdMedia());

          tabelaHora.setMedianaVento(vsm.getMediana());
          tabelaHora.setQtdVento(vsm.getQtd());

          tabelaHora.setData(vsm.getData());
          horas.add(tabelaHora);
        } else {
          deveContinuar = false;
          break;
        }
      }
      if (deveContinuar) {
        List<VariacaoStringModel> chuvas =
            chuvaService.getChuvasHorasDiaAnteriorEspecificoDiaAtras(j);

        if (!chuvas.isEmpty()) {
          for (int i = 0; i < horas.size(); i++) {

            // estão no mesmo intervalo de tempo (mesma hora de
            // captura)
            if (Check.mesmaData(chuvas.get(i).getData(), horas.get(i).getData())) {
              horas.get(i).setModaChuva(chuvas.get(i).getModa());
              horas.get(i).setQtdChuvaModa(chuvas.get(i).getQtdModa());

              horas.get(i).setMediaChuva(chuvas.get(i).getMedia());
              horas.get(i).setQtdChuvaMedia(chuvas.get(i).getQtdMedia());

              horas.get(i).setMedianaChuva(chuvas.get(i).getMediana());
              horas.get(i).setQtdChuva(chuvas.get(i).getQtd());
            }
          }
        }

        List<VariacaoNumberModel> temperaturas =
            temperaturaService.getTemperaturasHoraEspecificoDiasAtras(j);
        if (!temperaturas.isEmpty()) {
          for (int i = 0; i < horas.size(); i++) {

            // estão no mesmo intervalo de tempo (mesma hora de
            // captura)
            if (Check.mesmaData(temperaturas.get(i).getData(), horas.get(i).getData())) {
              horas.get(i).setMaxTemp(new BigDecimal(temperaturas.get(i).getMax()));
              horas.get(i).setMedTemp(new BigDecimal(temperaturas.get(i).getMed()));
              horas.get(i).setMinTemp(new BigDecimal(temperaturas.get(i).getMin()));
            }
          }
        }

        List<VariacaoNumberModel> umidades = umidadeService.getUmidadesHoraEspecificoDiasAtras(j);
        if (!umidades.isEmpty()) {
          for (int i = 0; i < horas.size(); i++) {

            // estão no mesmo intervalo de tempo (mesma hora de
            // captura)
            if (Check.mesmaData(umidades.get(i).getData(), horas.get(i).getData())) {
              horas.get(i).setMaxUmid(new BigDecimal(umidades.get(i).getMax()));
              horas.get(i).setMedUmid(new BigDecimal(umidades.get(i).getMed()));
              horas.get(i).setMinUmid(new BigDecimal(umidades.get(i).getMin()));
            }
          }
        }

        List<VariacaoNumberModel> rotacoes = rotacoesService.getRotacoesHoraEspecificoDiasAtras(j);
        if (!rotacoes.isEmpty()) {
          for (int i = 0; i < horas.size(); i++) {

            // estão no mesmo intervalo de tempo (mesma hora de
            // captura)
            if (Check.mesmaData(rotacoes.get(i).getData(), horas.get(i).getData())) {
              horas.get(i).setMaxRota(new BigDecimal(rotacoes.get(i).getMax()));
              horas.get(i).setMedRota(new BigDecimal(rotacoes.get(i).getMed()));
              horas.get(i).setMinRota(new BigDecimal(rotacoes.get(i).getMin()));
            }
          }
        }

        List<VariacaoNumberModel> velocidades =
            velocidadeVentoService.getVelocidadesHoraEspecificoDiasAtras(j);
        if (!velocidades.isEmpty()) {
          for (int i = 0; i < horas.size(); i++) {

            // estão no mesmo intervalo de tempo (mesma hora de
            // captura)
            if (Check.mesmaData(velocidades.get(i).getData(), horas.get(i).getData())) {
              horas.get(i).setMaxVelo(new BigDecimal(velocidades.get(i).getMax()));
              horas.get(i).setMedVelo(new BigDecimal(velocidades.get(i).getMed()));
              horas.get(i).setMinVelo(new BigDecimal(velocidades.get(i).getMin()));
            }
          }
        }

        List<VariacaoNumberModel> pressoes =
            pressaoAtmosfericaService.getPressoesHoraEspecificoDiasAtras(j);
        if (!pressoes.isEmpty()) {
          for (int i = 0; i < horas.size(); i++) {

            // estão no mesmo intervalo de tempo (mesma hora de
            // captura)
            if (Check.mesmaData(pressoes.get(i).getData(), horas.get(i).getData())) {
              horas.get(i).setMaxPres(Integer.parseInt(pressoes.get(i).getMax()));
              horas.get(i).setMedPres(Integer.parseInt(pressoes.get(i).getMed()));
              horas.get(i).setMinPres(Integer.parseInt(pressoes.get(i).getMin()));
            }
          }
        }

        String sql =
            "insert into medicao_hora (estacao_id, data, "
                // + "altitude_minima, altitude_media, altitude_maxima,"
                + "chuva, chuva_mediana, chuva_moda,"
                + "pressao_minima, pressao_media, pressao_maxima,"
                + "rotacao_minima, rotacao_media, rotacao_maxima,"
                + "velocidade_minima, velocidade_media, velocidade_maxima,"
                + "temperatura_minima, temperatura_media, temperatura_maxima,"
                + "umidade_minima, umidade_media, umidade_maxima,"
                + "sentidovento, sentidovento_mediana, sentidovento_moda,"
                + "sentidovento_qtd, sentidovento_qtdmediana, sentidovento_qtdmoda, "
                + "chuva_qtd, chuva_qtdmediana, chuva_qtdmoda) values ("
                + "%d,'%s',"
                + "'%s','%s','%s',"
                + "%s,%s,%s,"
                + "%s,%s,%s,"
                + "%s,%s,%s,"
                + "%s,%s,%s,"
                + "%s,%s,%s,"
                + "'%s','%s','%s', %d, %d, %d, %d, %d, %d);";

        for (TabelaAuxiliar ta : horas) {

          query.execute(
              String.format(
                  sql,
                  1,
                  ta.getData(),
                  ta.getMedianaChuva(),
                  ta.getMediaChuva(),
                  ta.getModaChuva(),
                  ta.getMinPres(),
                  ta.getMedPres(),
                  ta.getMaxPres(),
                  ta.getMinRota(),
                  ta.getMedRota(),
                  ta.getMaxRota(),
                  ta.getMinVelo(),
                  ta.getMedVelo(),
                  ta.getMaxVelo(),
                  ta.getMinTemp(),
                  ta.getMedTemp(),
                  ta.getMaxTemp(),
                  ta.getMinUmid(),
                  ta.getMedUmid(),
                  ta.getMaxUmid(),
                  ta.getMedianaVento(),
                  ta.getMediaVento(),
                  ta.getModaVento(),
                  ta.getQtdVento(),
                  ta.getQtdVentoMedia(),
                  ta.getQtdVentoModa(),
                  ta.getQtdChuva(),
                  ta.getQtdChuvaMedia(),
                  ta.getQtdChuvaModa()));
        }
      }
    }
  }