#!/usr/bin/perl -w
#procedura za insertiranje in updatanje v tabelo
#use strict;

use Pg;

use lib "/home/zorkec/perllib/lib/site_perl/5.005/";
use Net::FTP;

my ($pot, $ftp, $pot_ksebi);
my ($i, $ime,$kon,$dolzina);

#definiram $pot, kjer bom pobral datoteko in $pot_k_sebi, kamor jo bom prenesel
$pot='sinob$:[arhiv]';
$pot_ksebi="/db/base_home/VNOS/DEPESE";


#prvi del procedure: koledarček, izpiše vse datume od začetnega vnešenega datuma do končnega datuma, izpisuje po urah
#prodcudera naredi še seznam datotek, ki jih bomo potem s ftp-jem s kappe prenesli na virgo:
print "\n Perl procedura za prenos depes iz kape na virgo v tabelo depese_dekodirane v bazi ameba.\n";
print "Vpisite zacetno leto ter zacetni mesec prenosa (npr:7.julij 2005 ob 12.00 -> 2005-07-07-12)";
$datum1 = <STDIN>; chomp($datum1);
print "Vpisite koncno leto ter koncni mesec prenosa (npr:23.december 2006 ob 00 -> 2006-12-23-00)";
$datum2 = <STDIN>; chomp($datum2);

#obdelava datumov
@datum11=split("-",$datum1);
@datum22=split("-",$datum2);

($_,$leto_zac)=($datum11[0]=~/(..)(..)/);
$mes_zac=$datum11[1]*1;
$dan_zac=$datum11[2]*1;
$ura_zac=$datum11[3]*1;
($_,$leto_kon)=($datum22[0]=~/(..)(..)/);
$mes_kon=$datum22[1]*1;
$dan_kon=$datum22[2]*1;
$ura_kon=$datum22[3]*1;
$leto_zac = $leto_zac * 1;
$leto_kon = $leto_kon * 1;$leto1 = $leto_zac;$mesec1=$mes_zac;$dan1=$dan_zac;$ura1=$ura_zac;

if(($leto_kon < $leto_zac) || (($leto_kon==$leto_zac)&&($mes_kon<$mes_zac))||(($leto_kon==$leto_zac)&&($mes_kon==$mes_zac)&&($dan_kon<$dan_zac))||
($leto_kon==$leto_zac)&&($mes_kon==$mes_zac)&&($dan_kon==$dan_zac)&&($ura_kon<$ura_zac)) {
print "Vnesli ste napacni datum????";}
elsif (($leto1 == $leto_kon) && ($mesec1 == $mes_kon) && ($dan1 == $dan_kon) && ($ura1 == $ura_kon)){
                             if($mesec1 < 10) {$mesec1 = "0".$mesec1;}
                             if($leto1 < 10) {$leto1 = "0".$leto1;}
                             if($dan1 < 10) {$dan1 = "0".$dan1;}
                             if($ura1 < 10) {$ura1 = "0".$ura1;}
                             $ime = $leto1.$mesec1.$dan1.$ura1;
                             $datoteka=$ime.".bil";
                     $seznam_datotek[0]="$datoteka";
                     $mesec1=$mesec1*1;$leto1=$leto1*1;$dan1=$dan1*1;$ura1=$ura1*1;}
else { $i=0;
                     if($mesec1 < 10) {$mesec1 = "0".$mesec1;}
                             if($leto1 < 10) {$leto1 = "0".$leto1;}
                             if($dan1 < 10) {$dan1 = "0".$dan1;}
                             if($ura1 < 10) {$ura1 = "0".$ura1;}
                             $ime = $leto1.$mesec1.$dan1.$ura1;
                             $datoteka=$ime.".bil";
                     $seznam_datotek[0]="$datoteka";
                     $mesec1=$mesec1*1;$leto1=$leto1*1;$dan1=$dan1*1;$ura1=$ura1*1;
         $i=1;
        INNER:
        if($ura1 <= 23) {$ura1 = $ura1 + 1;if($ura1 == 24) {$ura1 = 0;}}
        if($ura1 == 0) {$dan1 = $dan1 + 1;
             if($mesec1 == 1) {if($dan1 == 32) {$dan1 = 1;$mesec1=$mesec1+1;}}
             if($mesec1 == 2) {if($leto1 % 4 == 0) {if($dan1==30) {$dan1=1;$mesec1=$mesec1+1;}}}
             if($mesec1 == 2) {if($leto1 % 4 != 0) {if($dan1==29) {$dan1=1;$mesec1=$mesec1+1;}}}
             if($mesec1 == 3) {if($dan1 == 32) {$dan1 = 1;$mesec1=$mesec1+1;}}
             if($mesec1 == 4) {if($dan1 == 31) {$dan1 = 1;$mesec1=$mesec1+1;}}
             if($mesec1 == 5) {if($dan1 == 32) {$dan1 = 1;$mesec1=$mesec1+1;}}
             if($mesec1 == 6) {if($dan1 == 31) {$dan1 = 1;$mesec1=$mesec1+1;}}
             if($mesec1 == 7) {if($dan1 == 32) {$dan1 = 1;$mesec1=$mesec1+1;}}
             if($mesec1 == 8) {if($dan1 == 32) {$dan1 = 1;$mesec1=$mesec1+1;}}
             if($mesec1 == 9) {if($dan1 == 31) {$dan1 = 1;$mesec1=$mesec1+1;}}
             if($mesec1 == 10) {if($dan1 == 32) {$dan1 = 1;$mesec1=$mesec1+1;}}
             if($mesec1 == 11) {if($dan1 == 31) {$dan1 = 1;$mesec1=$mesec1+1;}}
             if($mesec1 == 12) {if($dan1 == 32) {$dan1 = 1;$mesec1=$mesec1+1;if($mesec1==13){$mesec1=1;$leto1=$leto1+1;}}}}


                     if($mesec1 < 10) {$mesec1 = "0".$mesec1;}
                     if($leto1 < 10) {$leto1 = "0".$leto1;}
                     if($dan1 < 10) {$dan1 = "0".$dan1;}
                     if($ura1 < 10) {$ura1 = "0".$ura1;}
                     #sestavimo še ime 
                     $ime = $leto1.$mesec1.$dan1.$ura1;
                     $datoteka=$ime.".bil";
         $seznam_datotek[$i]="$datoteka";
         $mesec1=$mesec1*1;$leto1=$leto1*1;$dan1=$dan1*1;$ura1=$ura1*1;$i=$i+1;
         unless(($leto1 == $leto_kon) && ($mesec1 == $mes_kon) && ($dan1 == $dan_kon) && ($ura1 == $ura_kon)) {goto INNER;}
         }


#logiranje na amebo;
$conn = Pg::connectdb("host=virga port=5432 dbname=ameba user=base password=abcdefghijklmno");
        ( PGRES_CONNECTION_OK eq $conn->status ) or die "!!!PROBLEM PRI POVEZAVI Z BAZO: ",$conn->errorMessage;

#logiranje na kappo;
$ftp = Net::FTP->new("hmljk.rzs-hm.si", Debug => 0);

if (defined($ftp) ) {

$ftp->login("vicar","zvuxxx") or  die("logiranje na HMLJK ni uspelo!!! \n");
$ftp->cwd($pot) or die("problem pri spremembi poti na HMLJK \n");

foreach $datoteka (@seznam_datotek) {
#najprej vzamemo depešo iz baze kappa
$ftp->get("$datoteka",$pot_ksebi."/$datoteka") or die("Problemi pri prenosu $datoteka !!!!!!!!");

print "-Prenasam datoteko $datoteka------------";
  }
 }

#drugi del procedure: vnašanje vrednosti v arrayu v tabelo na amebi, ki jo moramo predčasno še narediti.
#tabeli v moji proceduri je ime depese_dekodirane, imeti pa mora tri stolpce

@vrstica = ("a1","b1","c1");
@vrstica1 = ("a2","b2","c2");

#definiram query; v narekovajih je ukaz, ki se izvede (SQL), v tabelo insertira vrednosti v arrayu @vrstica
$query = "INSERT INTO depese_dekodirane VALUES ( ".join(',',@vrstica)." )";

$result = $conn->exec($query);
 if ( !( $result->resultStatus eq PGRES_COMMAND_OK ) ) {
        print "-----tezave z insertiranjem.\n"; }
        

$stari_="stolpec1='$vrstica[0]' and stolpec2='$vrstica[1]' and stolpec3='$vrstica[2]'";
$stari_="stolpec1='$vrstica1[0]' and stolpec2='$vrstica1[1]' and stolpec3='$vrstica1[2]'";

#updatanje podatkov: namesto $stari bomo sedaj insertirali $novo
$zamenjaj="UPDATE depese_dekodirane SET $novi WHERE $stari";
        
        #Izvedi ukaz: update v tabeli depese_dekodirane
	$result3=$conn->exec($zamenjaj);
print "zamenjujem podatke v tabeli depese_dekodirane \n";
        



$ftp->quit;

exit(0);

