#!/usr/bin/perl

# require '/genome/web/cgi-bin/HS/config.pl';

use Bio::Seq;
use Bio::SeqIO;
use Bio::SeqFeature::Generic;
use Bio::SeqIO::genbank;
use strict;
use warnings;

# require '/genome/web/cgi-bin/HS/config.pl';
my $usage = "getGBinfo.pl <infile> <outfile> <dbName>";
my $infile = shift or die $usage;
my $outfile = shift or die $usage;
# my $dbName = shift or die $usage;
# my $outfile = \*STDOUT;

# $DB_NAME = 'annotV1';
# 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 $fastaSEQ= Bio::SeqIO->new('-file' => ">$outfile",
# 			      '-format' => 'Fasta');

# my $dbh = createDB($dbName);

my %gene;
my $dbh='';
my $seq = $seq_in->next_seq();

# $fastaSEQ->write_seq($seq);
my $i=0;
open ARQ, ">$outfile";
print ARQ "<?php\n";
close ARQ;
for my $feat_object ($seq->get_SeqFeatures) {
	if (    ($feat_object->primary_tag =~ /^gene$/)
	     || ($feat_object->primary_tag =~ /^CDS$/)){

		$gene{'start'} = $feat_object->start;
		$gene{'end'} = $feat_object->end;
		$gene{'length'} = $feat_object->length;
		$gene{'strand'} = $feat_object->strand;

		for my $tag ($feat_object->get_all_tags) {
			($gene{$tag}) = $feat_object->get_tag_values($tag);
		}

		if ($gene{'locus_tag'}){
			$i = $gene{'locus_tag'};
		}elsif ($gene{'gene'}){
			$i = $gene{'gene'};
		}elsif ($gene{'gene_id'}){
			$i = $gene{'gene_id'};
		}

# 		insert($dbh,  'gene', %gene);
		geraArq($outfile, $i,%gene);
# 		print "<BR>";

	}elsif ($feat_object->primary_tag =~ /^source$/){
		open ARQ, ">>$outfile";
		print ARQ "\$ctgLength=".$feat_object->length.";\n";
		close ARQ;
	}
}

open ARQ, ">>$outfile";
print ARQ "\n?>";
close ARQ;

# sub createDB{
# 	my ($dbName) = @_;
# 
# 	my $query{'contigs'} = 
# 	"
# 	CREATE TABLE  `$dbNname`.`contigs` (
# 	`contig_num` int(10) unsigned NOT NULL default '0',
# 	`reads` int(10) unsigned default '0',
# 	`bp_untrim` int(10) unsigned default '0',
# 	`bp_trim` int(10) unsigned default '0',
# 	`qual_med` float default '0',
# 	`data` date NOT NULL default '0000-00-00',
# 	PRIMARY KEY  (`contig_num`,`data`)
# 	) ENGINE=MyISAM DEFAULT CHARSET=latin1
# 	";
# 
# 	$query{'annot'} = 
# 	"
# 	CREATE TABLE  `annotV1`.`annot` (
# 	`id` varchar(10) NOT NULL default '',
# 	`orf_name` varchar(100) default '',
# 	`validation` varchar(100) NOT NULL default '',
# 	`product` varchar(255) default '',
# 	`synonym` varchar(100) default '',
# 	`EC_number` varchar(15) default '',
# 	`frameshift` varchar(100) default '',
# 	`category1` varchar(100) default '',
# 	`category2` varchar(100) default '',
# 	`note` varchar(255) default '',
# 	`orf_id_20030818` varchar(10) default '',
# 	`EC_number2` varchar(15) default '',
# 	`function` varchar(255) default '',
# 	`relatorio` varchar(255) default '',
# 	`anotador` varchar(50) default '',
# 	`revisor` varchar(50) default '',
# 	`functionCOG` tinyint(1) default '0',
# 	`cog_num` varchar(7) default '',
# 	KEY `valid` (`validation`),
# 	KEY `anotador` (`anotador`),
# 	KEY `synonym` (`synonym`),
# 	KEY `revisor` (`revisor`),
# 	KEY `orf_name` (`orf_name`)
# 	) ENGINE=MyISAM DEFAULT CHARSET=latin1
# 	";
# gene_id = ORFID286.1638
# function = C;R - Energy production and conversion;General function prediction only
# note = VALIDATION:valid|FRAMESHIFT:no|CATEGORY1:1.4.3|CATE GORY2:
# end = 1077
# length = 1029
# strand = 1
# product = quinone oxidoreductase protein
# start = 49
# EC_number = 1.6.5
# 	$query{'contigs'} = 
# 	"
# 	CREATE TABLE  `$dbNname`.`contigs` (
# 	`contig_num` int(10) unsigned NOT NULL default '0',
# 	`reads` int(10) unsigned default '0',
# 	`bp_untrim` int(10) unsigned default '0',
# 	`bp_trim` int(10) unsigned default '0',
# 	`qual_med` float default '0',
# 	`data` date NOT NULL default '0000-00-00',
# 	PRIMARY KEY  (`contig_num`,`data`)
# 	) ENGINE=MyISAM DEFAULT CHARSET=latin1
# 	";
# 
# 	$query{'contigs'} = 
# 	"
# 	CREATE TABLE  `$dbNname`.`contigs` (
# 	`contig_num` int(10) unsigned NOT NULL default '0',
# 	`reads` int(10) unsigned default '0',
# 	`bp_untrim` int(10) unsigned default '0',
# 	`bp_trim` int(10) unsigned default '0',
# 	`qual_med` float default '0',
# 	`data` date NOT NULL default '0000-00-00',
# 	PRIMARY KEY  (`contig_num`,`data`)
# 	) ENGINE=MyISAM DEFAULT CHARSET=latin1
# 	";
# 
# 	$query{'contigs'} = 
# 	"
# 	CREATE TABLE  `$dbNname`.`contigs` (
# 	`contig_num` int(10) unsigned NOT NULL default '0',
# 	`reads` int(10) unsigned default '0',
# 	`bp_untrim` int(10) unsigned default '0',
# 	`bp_trim` int(10) unsigned default '0',
# 	`qual_med` float default '0',
# 	`data` date NOT NULL default '0000-00-00',
# 	PRIMARY KEY  (`contig_num`,`data`)
# 	) ENGINE=MyISAM DEFAULT CHARSET=latin1
# 	";
# 
# 
# }

sub geraArq{
	my ($outfile, $i, %dados) = @_;

	open (ARQ, ">>$outfile");
	
	foreach my $key (keys %dados){
		print ARQ "\$orf['$i']['$key']='$dados{$key}';\n";
	}

	close (ARQ);

}

sub insert{
	my ($dbh, $tipo, %data) = @_;

	my %dados = %data;


	if ($tipo =~ /gene/){
	
		my $q = "INSERT INTO VALUES (";
	
		foreach my $key (keys %dados){
			my $d = "$key='".$dados{$key}."'";
			$q .= "$d, ";
			print "$key = $dados{$key}<br>";
		}
	
		$q .= ")";
		$q =~ s/\,\ \)/\)/;
# 	 	print $q."\n";
# 		$dbh->do($q);
	}
}

