#!/usr/bin/perl
package Feat_gene_info;

#####################################################################
# Author : Shuai Weng
# Date   : July 2001
# 
# See documentation for the usage details. 
#    
# http:///usr/local/dicty/www_dictybase/db/lib/html/dictyBase/programmer/Feat_gene_info.html
#
#####################################################################

use strict;
use DBI;
use Carp;
use vars qw (@ISA %allowedConstructors);
use dictyBase_Table;
@ISA = qw (dictyBase_Table); # base class

# Class Globals

# put column names in the hash below, that are able to uniquely
# specify a row in the table

%allowedConstructors = ('feature_no:reference_no:literature_topic'=>undef);

####################################################################
sub GetTopicArrayRefBYrefNoFeatNo {
####################################################################
    my ($self, %args) = @_;
    my $dbh = $args{'dbh'} || die "A database handle must be passed to 'GetTopicArrayRefBYrefNoFeatNo' method";
    my $schema = $self->schema;
    my $sth = $dbh->prepare("
         SELECT literature_topic
         FROM   $schema.feat_gene_info
         WHERE  reference_no = ?
         AND    feature_no = ?
    ");
    $sth->execute($args{'reference_no'}, $args{'feature_no'});   
    my $arrayRef = $sth->fetchall_arrayref();
    $sth->finish;
    return $arrayRef;
}

####################################################################
sub DeleteEntryBYrefNoFeatNo {
####################################################################
    my ($self, %args) = @_;
    my $dbh = $args{'dbh'} || die "A database handle must be passed to 'DeleteEntryBYrefNoFeatNo' method";
    my $schema = $self->schema;
    my $sth = $dbh->prepare("
        DELETE from $schema.feat_gene_info
        WHERE  reference_no = ?
        AND    feature_no = ?
    ");
    $sth->execute($args{'reference_no'}, $args{'feature_no'});
    $sth->finish;
}

####################################################################
sub DESTROY{
####################################################################
# nothing needs to be done 

}


####################################################################
1; #################################################################
####################################################################

=pod

=head1 Name

Feat_gene_info.pm

=head1 Description

This perl object (Feat_gene_info.pm) acts as container for Feat_gene_info info in oracle database. Once an object has been instantiated, several methods are available to retrieve the attributes of the object. 


=head1 Instantiating a New Feat_gene_info Object

To instantiate a new Feat_gene_info object, you may use following syntax: 

my $Obj = Feat_gene_info->new(dbh=>$dbh,
			       feature_no=>$featNo,
			       reference_no=>$refNo,
			       literature_topic=>$topic);


where $dbh is a valid database handle to either dictyBase or SDEV. All passed in values must be valid values for the columns that were provided, otherwise the script will die, with an appropriate error message.
 

=head1 getRow method

Usage:

my $row = $obj->getRow;

This method returns a tab-delimited row from feat_locus_info table.

=head1 Insert and delete Methods

You can also use 'Insert' class method and 'delete' 
instance method for inserting new row into database or 
deleting info for a specified row. 

See dictyBase_Table documentation for usage details :

Insert : http:///usr/local/dicty/www_dictybase/db/lib/staff/dictyBase/programmer/dictyBase_Table.html#Insert_Method

Delete : http:///usr/local/dicty/www_dictybase/db/lib/staff/dictyBase/programmer/dictyBase_Table.html#Delete_Method

=head1 GetTopicArrayRefBYrefNoFeatNo

Usage :

my $arrayRef = Feat_gene_info->GetTopicArrayRefBYrefNoFeatNo(dbh=>$dbh,
						   feature_no=>$featNo,
						   reference_no=>$refNo);


foreach my $rowRef (@$arrayRef) {

    my ($topic) = @$rowRef;

    #####

}

This method returns arrayRef for literature_topics associated with specified
feature_no and reference_no.


=head1 DeleteEntryBYrefNoFeatNo

Usage :

eval {

    Feat_gene_info->DeleteEntryBYrefNoFeatNo(dbh=>$dbh,
					     feature_no=>$featNo,
					     reference_no=>$refNo);

};

This method will delete associated rows in feat_gene_info table for a specified reference_no and feature_no.


=head1 Author

Shuai Weng

shuai@genome.stanford.edu

=cut











