#!/usr/bin/perl -w

use Bio::Seq;
use Bio::SeqIO;
use Bio::SeqFeature::Generic;
use Bio::SeqIO::genbank;
use DBI;
use DBD::mysql;

use strict;
use warnings;

our $DB_NAME;
our $DB_HOST;
our $DB_USER;
our $DB_PASS;

require '../lib/config.pl';

my $mtg = shift;
my $orfId = shift;
my $infile = shift;

my $dbh = DBI->connect("DBI:mysql:$DB_NAME:$DB_HOST",$DB_USER,$DB_PASS,{RaiseError => 1});

my $seq_in = Bio::SeqIO->new('-file' => "<$infile",
			     '-format' => 'GenBank');

my $seq = $seq_in->next_seq();

my %annot;

for my $feat_object ($seq->get_SeqFeatures) {
	if ($feat_object->primary_tag =~ /^CDS$/ || $feat_object->primary_tag =~ /^Protein$/){
		if ($feat_object->has_tag('product')){
			($annot{'product'}) = $feat_object->get_tag_values('product');
		}
		if ($feat_object->has_tag('function')){
			($annot{'function'}) = $feat_object->get_tag_values('function');
		}
		if ($feat_object->has_tag('gene')){
			($annot{'orfName'}) = $feat_object->get_tag_values('gene');
		}
	}
}

if (keys %annot > 0){
	update($dbh, $mtg, $orfId, %annot);
}

sub update{
	my ($dbh, $mtg, $orfId, %data) = @_;

	my @table;my @value;my $q;my $tbl;my $vle;

	
	$q = "UPDATE anotacao SET ";
	print "Imported data:\n";
	for my $k (keys %data){
		print "$k\n";
		$q .= "$k = '".$data{$k}."',";
	}

	$q =~ s/,$//;

	$q .= " WHERE idMontagem='$mtg' and id='$orfId'";

	$dbh->do($q);
}
