#!/usr/bin/perl

#########################################
# Script para actualização das vistas em /home/www/htdocs/FS
# Rui Vilela
#########################################
use LWP::Simple;
use HTML::Template;
use Config::YAML;

$dir_programas='/home/ruivilela/FS/vistas_FS';
$dir_scripts='/home/ruivilela/FS/scripts_vistas_FS';
$dir_temp='/tmp';
$dir_html='/home/www/htdocs/FS';

my $c = Config::YAML->new( config => "/usr/share/foo/globalconf",
                     output => "~/.foorc",
                     param1 => value1,
                     param2 => value2,
                     paramN => valueN,
);

sub estat{
	sprintf("%.1f MB",(((stat "/home/www/htdocs/FS/$_[0]")[7])/1048576));
}

sub loging{
	unless (open (REG_LOG, ">> actividade.log")){ 
		die "Não foi possivel escrever o log !";}
	$data=`date`;
	chomp $data;
	print {REG_LOG} "$data - $_[0]\n"; 
	close REG_LOG;
}

@meses=qw /Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro /;

$pagina = get("http://acdc.linguateca.pt/treebank/PaginaFloresta.html");

if ($pagina=~/Bosque_CF_(\d).(\d)_ad.visl.txt/){
	$vers="$1.$2";
} else{
	exit;
}

#Colocar a $versao no ficheiro de configuração

unless (open(ULTIMA_VERS, "< last_vers.log")){
	unless (open(ULTIMA_VERS, "> last_vers.log")){
		loging "Problema com a manipulação do ficheiro de controlo de versão !";	
		die "Ficheiro last_vers.log ?!\n";	
	}else{
		loging "Iniciada a actualização com versão $vers !";	
		print {ULTIMA_VERS} $vers;	
	}
	
}else{
    while (<ULTIMA_VERS>){ 
    chomp;	
	if ($vers=~/$_/){
        	loging "Sem necessidade de actualização !";
        	exit 0;
	}else{
	        close ULTIMA_VERS;
		unless (open(ULTIMA_VERS, "> last_vers.log")){
			loging "Não foi possível escrever controlo de versão !";
		}else{
			print {ULTIMA_VERS} $vers;
		}
		loging "Iniciada a actualização com versão $vers, substituindo $_ !";
		last;
	}
}}


close(ULTIMA_VERS);
	
#system ("Converte_FS_outros",$vers); ##Implementar em Perl

$n_bosques=8; #Numero de Bosques que sao esperados no directorio anterior

@Florestas=glob "$dir_html/Bosque*";
s!.*/(.*)$!$1! foreach (@Florestas);
#print "$_\n" foreach (@Florestas);

if (@Florestas!=$n_bosques){
	loging "O Numero de bosques processado é diferente do esperado !";
}

$dia =(gmtime)[3];
$mes =((gmtime)[4]);
$ano =1900+(gmtime)[5];
$data= "$dia de ".@meses[$mes]." de $ano";

my $template = HTML::Template->new(filename => 'fvistas_FS.template');

# Não haverá maneira de fazer o seguinte numa só linha ?
$template->param(
      CPPTB1 => &estat ("Bosque_CP_".$vers."_ad.PennTreeBank.txt"),
      CPPTB2 => &estat ("Bosque_CP_".$vers."_ad.PennTreeBank.txt.gz"),
      CFPTB1 => &estat ("Bosque_CF_".$vers."_ad.PennTreeBank.txt"),
      CFPTB2 => &estat ("Bosque_CF_".$vers."_ad.PennTreeBank.txt.gz"),
      CPTX1 => &estat ("Bosque_CP_".$vers."_ad.TigerXML.xml"),
      CPTX2 => &estat ("Bosque_CP_".$vers."_ad.TigerXML.xml.gz"),
      CFTX1 => &estat ("Bosque_CF_".$vers."_ad.TigerXML.xml"),
      CFTX2 => &estat ("Bosque_CF_".$vers."_ad.TigerXML.xml.gz"),
      DATA => $data,
      VERS => $vers,
  );


open(VISTAS_HTML, ">", "/home/www/htdocs/FS/fvistas_FS.html") or die ":(";

print {VISTAS_HTML} $template->output;

close(VISTAS_HTML);

loging "Finalizada actualização !";

