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

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

use ResultsUploadManager;
use ImagesManager;


if (scalar(@ARGV) == 0){
   &usage();
}

my $target = $ARGV[0]; #'T0865';
my $protein_pdb = "/local/CASP13/TARGETS/$target.pdb";

if (! -f $protein_pdb) {
   warn "File $protein_pdb doesn't exist!\n";
   &usage();
}
my $image_type = 'prot';
if (scalar(@ARGV) > 1){
   $image_type = $ARGV[1];
}
unless (defined($image_type) && ($image_type =~ m/^gdt$/i || $image_type =~ m/^al$/i)) {
   $image_type = 'prot';
}

if ($image_type eq 'prot'){
  my $output_big_image_png = "/local/CASP13/PLOTS/STR/$target.big.png";
  #my $output_small_image_png = "/local/CASP13/PLOTS/STR/$target.small.png";
  
  my $images_manager = new ImagesManager();
  $images_manager->protein_image($protein_pdb, $output_big_image_png, 500, 500);
  #$images_manager->protein_image($protein_pdb, $output_small_image_png, 74, 74);
} elsif ($image_type eq 'gdt'){
  my $resultsupload_manager = new ResultsUploadManager();
  $resultsupload_manager->generate_gdt_images($target);
} elsif ($image_type eq 'al'){
  my $resultsupload_manager = new ResultsUploadManager();
  $resultsupload_manager->generate_al_small_images($target);
}
print 1;

sub usage{
  warn "USAGE:\n";
  warn "\t $0 <TARGET> [<IMAGE_TYPE>]\n";
  warn "<IMAGE_TYPE> takes over values (prot, gdt, al), default=\"prot\"\n";
  exit;
}
