#!/usr/bin/perl

########################################################
# Autor(a): Lucas Moreira de Araujo Conçalves          #
#------------------------------------------------------#
# Data: //2008                                         #
#------------------------------------------------------#
# Descricao:                                           #
#                                                      #
#                                     #                #
#------------------------------------------------------#
# Modificacoes:                                        #
#                                                      #
#                                                      #
########################################################

# Bibliotecas Utilizadas
#-----------------------

#use strict;     # Obriga a declarar todas as variaveis
use Env::Sourced ("/home/gempak/NAWIPS/Gemenviron.profile");

use Getopt::Std;   # Biblioteca para argumentos de linha de comando
use Time::Local;   # Biblioteca padrao para processar data e hora
                   # Exemplo $time=timelocal($seg,$min,$horas,$dia,$mes-1,$ano-1900);
                   #     OU  $time=timegm($seg,$min,$horas,$dia,$mes-1,$ano-1900);
                   #
                   # Exemplo 2 > Somando 24 horas a uma data
                   # my $newtime=$time + 60*60*24;
                   #
                   #Exemplo 3 < subtraindo 10 minutos
                   # my $newtime=$time -60*10;
                   #
                   # Exemplo 4 Imprimindo a data
                   # print scalar(localtime($timei)),"\n";
                   #
                   # Exemplo 5 Comparando datas
                   #   if (($timef > $time) && ($timei< $time)  {
                   #
use Cwd;           # biblioteca para obter o path ou diretorio de trabalho
use Glib;          # Biblioteca de  de subrotinas de uso geral
use Convert_arc;   # Modulo para conversao de arquivos de diferentes formatos
use POSIX;
use Date::Manip;

        use vars qw($opt_t); # opcao para entrar com data maunalmente
        use vars qw($opt_s); # Opcao para roda com data do sistema

        my $ano;
        my $mes;
        my $dia;
        my $hora;
        my $minuto;
        my $obsdate; # Data da obsevacao no calendario juliano a partir do ano de 1900
        my $tipo_dado;
        my $timewindow;
        my $narq;
	my $data1;
        my $data2;
        #my $hf;
        my $hratual;
        my $date1;
        my $date2;



#---------------------------

#my $arq_out="$ENV{HOME}/resultados";

#----------------------------------------------------------------------------------------
 &getopts('t:s') ||die "Erro: Nao existe essa opcao! Digite -h para Ajuda\n";

 # Opcao  -T ( Roda o programa para uma data especifica )
        #------------------------------------------------------
        if("$opt_t")
        {
                my $anomesdia=$opt_t;
                print "$0,$1,$2\n";
                print "$opt_t,$anomesdia\n";
                $anomesdia=~ /(\d\d\d\d)(\d\d)(\d\d)(\d\d)/;
                #$ano="$1";
                #$mes="$2";
                #$dia="$3";
                #$hora="$4";
                #$obsdate=timelocal(0,0,$hora,$dia,$mes-1,$ano-1900);
                $arqent="/data/ldm/gempak/syn/".$anomesdia."_syn.gem";
                $narq="$anomesdia";
		#$data=
        }

 # {Opcao -S [ Roda o programa para a data do sistema (horario sinoptico mais proximo)]
    #------------------------------------------------------------------------------------
        # -Obtem a data e hora do sistema
        # -Converte a hora para horario sinotico mais proximo
        # -Converte data para calendario juliano

        if("$opt_s")
        {

                $mes = strftime('%m', gmtime(time));
                $ano = strftime('%Y', gmtime(time));
                $dia = strftime('%d', gmtime(time));
                $hora= strftime('%H', gmtime(time));
                $arqent="SYNOP";
                #$narq=SYN.$ano.$mes.$dia.$hora;


		$hratual=$ano.$mes.$dia.$hora.":00".":00";
                print "$teste\n";

                $date1 = DateCalc("$hratual","- 6 hour",\$err);
                $date2 = DateCalc("$hratual","- 3 hour",\$err);

                $date1 =~ /(\d{4})(\d{2})(\d{2})(\d{2}):\d{2}:\d{2}/;
                $a6=$1;
                $m6=$2;
                $d6=$3;
                $h6=$4;
                $date2 =~ /(\d{4})(\d{2})(\d{2})(\d{2}):\d{2}:\d{2}/;
                $a3=$1;
                $m3=$2;
                $d3=$3;
                $h3=$4;

                #print "$a6 -- $m6\n";
                #print "$d6 -- $h6\n";

                #$ano=~ s/\d\d(\d\d)/$1/;
                #$hf=$date1;
                #if ($hora=="21")
                #       {
                #               $hf eq "LAST";
                #       }

                $hf=$h3-1;
			if ($hf<=9)
				{
					$hf="0"."$hf";
				}

                $data1=$d6."/".$h6."-$d3/"."$hf"."59";
                $data2=$d3."/".$h3."-$dia/".$hora;

                print "C: $d6  DIA: $dia\n";
		$arqent="/data/ldm/gempak/syn/".$ano.$mes.$dia."_syn.gem";

                if ($d6 != $dia)
                {
                        print "ENTROU aqui\n";
                        $arq="/data/ldm/gempak/syn/".$a6.$m6.$d6."_syn.gem";
                        $h{$data1}=$arq;
                }else
                {


                        $h{$data1} = $arqent ;
                }

                $h{$data2} = $arqent ;
                print "$data1\n";
                print "$data2\n";
                #$narq=$ano.$mes.$dia.$hora;
		
		$arqapdd="resultados/uair/apdd/".$d6.$h6."-".$dia.$hora.".txt";
                print "$arqapdd\n\n";



        }


#---------------------------
# Insere os dados no GEMPAK
# --------------------------

while (($k, $v) = each (%h))
{
        print "$k => $v\n";
$teste=$k;
$teste=~ s/\//_/g;
$teste=~ s/-/_/g;

$narq1="$teste"."_syn.txt";
#$teste=$k;
#$teste=~ /(\d\d)\/\d\d-\d\d\/\d\d/;
$teste=$1;
print "TESTE $teste\n";


push (@apd,"resultados/uair/"."$narq1");



system(` $ENV{'GEMEXE'}/sflist << EOF
 SFFILE  = $v
 AREA    = DSET   
 DATTIM  = $k
 SFPARM  = SLAT;SLON;SELV;PRES;PMSL;UWND;VWND;TMPK;DWPK;TOST
 OUTPUT  = f /resultados/syn/$narq1 
 IDNTYP  = STNM

 r

 e
EOF`);
}

#----------------------------------
#Apendando arquivos a cada 6 horas
#----------------------------------

system(` cat @apd  >> $arqapdd`);

