#!/usr/bin/perl
use strict;
use warnings;

use Digest::MD5 qw(md5 md5_hex md5_base64);
use MIME::Parser;
use MIME::Entity;
use MIME::Body;
use Getopt::Long;

use lib qw(Core);
use lib qw(Classes);

use LocalConfiguration;
use GroupsManager;
use StatusManager;
use Logger;
use SplitByParent;

my $SCRIPTNAME = 'create_tarball_for_servers_only.pl';

my $target_name = '';
my $isparams = GetOptions(
	"target|f=s" => \$target_name
);

### USED FOR SITUATIONS WHERE ONLY SERVER PREDICTIONS SHOULD BE INCLUDED IN TARBALL
### AND FILES SHOULDN'T HAVE GROUP NAMES

#my $logger = new Logger();

my $status_manager = new StatusManager();
my $predictions_manager = new PredictionsManager();
my $groups_manager = new GroupsManager();
my $split_by_parent = new SplitByParent();

#
#SERVERS TARBALLS

        my @predictions = $predictions_manager->tarballs_predictions($target_name, "server");
        
        my $tarball_name = sprintf("%s.tar.gz", $target_name);
                
        my $download_area = sprintf("/data/CASPROL/TARBALLS/predictions/%s", $tarball_name);
        if (!(-e $download_area)) {

            my $new_dir = sprintf("%s/%s", $LOCAL_CONFIG->{TARBALLS_ALL_PREDICTIONS_DIR}, $target_name);
            my $old_dir = sprintf("%s/%s", $LOCAL_CONFIG->{CLEAN_PREDICTIONS_DIR}, $target_name);
            if(!(-e $new_dir)) {
                system(sprintf("mkdir %s", $new_dir));
                system(sprintf("chmod a+rwx %s", $new_dir));                
            }

            for(my $p_count = 0; $p_count < scalar(@predictions); $p_count++) {
               	my $new_file = sprintf("%s/%s%s%s_%s", $new_dir, $predictions[$p_count]->{TARGET}, $predictions[$p_count]->{PFRMAT}, $predictions[$p_count]->{GROUP_CODE}, $predictions[$p_count]->{MODEL});
                
               	my $old_file = sprintf("%s/%s_%s%s%s", $old_dir, $predictions[$p_count]->{GROUP}, $predictions[$p_count]->{PFRMAT}, $predictions[$p_count]->{MODEL}, (($predictions[$p_count]->{PFRMAT} eq "AL")?".pdb":""));
                               
      		system(sprintf("cp %s %s", $old_file, $new_file));
               	system(sprintf("chmod a+r %s", $new_file));
                
                
               	#split by PARAMETERS
              	$split_by_parent->process($new_file);

            }

            system(sprintf("cd %s; tar -czf %s %s", $LOCAL_CONFIG->{TARBALLS_ALL_PREDICTIONS_DIR}, $tarball_name, $target_name));
            
            system(sprintf("mv %s/%s %s", $LOCAL_CONFIG->{TARBALLS_ALL_PREDICTIONS_DIR}, $tarball_name, $download_area));
        }
        #/www/download_area/CASPROL/server_predictions
