[Bio] / WebApplication / DataHandler / Babel.pm Repository:
ViewVC logotype

View of /WebApplication/DataHandler/Babel.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (download) (as text) (annotate)
Wed Jul 21 19:13:44 2010 UTC (9 years, 7 months ago) by tharriso
Branch: MAIN
CVS Tags: mgrast_dev_08112011, mgrast_dev_08022011, rast_rel_2014_0912, mgrast_dev_03052011, mobedac_release_05302012, mgrast_dev_05262011, mgrast_dev_04082011, rast_rel_2010_0928, mgrast_version_3_2, mgrast_dev_12152011, mgrast_dev_06072011, rast_rel_2014_0729, mgrast_dev_02212011, rast_rel_2010_1206, mgrast_release_3_0, mgrast_dev_03252011, rast_rel_2011_0119, mgrast_release_3_0_4, mgrast_release_3_0_2, mgrast_release_3_0_3, mgrast_release_3_0_1, mgrast_dev_03312011, mgrast_release_3_1_2, mgrast_release_3_1_1, mgrast_release_3_1_0, mgrast_dev_04132011, mgrast_dev_04012011, rast_rel_2010_0827, myrast_33, rast_rel_2011_0928, mgrast_dev_04052011, mgrast_dev_02222011, mgrast_dev_10262011, HEAD
Changes since 1.1: +22 -32 lines
made defaults less confusing, changed non-PPO db type to variable

package DataHandler::Babel;

# DataHandler::Babel - data handler to the Babel database



use strict;
#use warnings;

use base qw( DataHandler );

use DBMaster;
use DBI;
use FIG_Config;


=pod

=head1 NAME

DataHandler::ACH - data handler to the Babel database

=head1 DESCRIPTION

This module returns the DBMaster object to the Babel database stored in the root
job directory of a ACH server. It requires the FIG_Config.pm to specify the  
$rast_jobs directory.

Refer to WebApplication/DataHandler.pm for the full documentation.

=head1 METHODS

=over 4

=item * B<handle> ()

Returns the enclosed data handle. Returns undef if it fails to open the Jobs database

=cut

sub handle {
  
  unless (exists $_[0]->{_handle}) {
    
    my $user    = "";
    my $dbpass  = "";
    my $db      = "";
    my $dbhost  = "";
    my $backend = "";
    my $type    = "SQL"; # default is not PPO
    my $dbsock  = $FIG_Config::dbsock || "";
    my $dbport  = $FIG_Config::dbsock || "";
    
    if ($WebConfig::BABELDB) {
      $user    = $WebConfig::BABELUSER      || "ach"; 
      $dbpass  = $WebConfig::BABELDBPASS    || "";
      $db      = $WebConfig::BABELDB;
      $dbhost  = $WebConfig::BABELDBHOST;
      $backend = $WebConfig::BABELDBBACKEND || "MySQL"; # for PPO only
      $type    = $WebConfig::BABELDBPTYPE   if ($WebConfig::BABELDBTYPE);
      $dbsock  = $WebConfig::BABELDBSOCK    if ($WebConfig::BABELDBSOCK);
      $dbport  = $WebConfig::BABELDBPORT    if ($WebConfig::BABELDBPORT);
    }
    elsif ($FIG_Config::babel_db) {
      $user    = $FIG_Config::babel_dbuser    || "ach";
      $dbpass  = $FIG_Config::babel_dbpass    || "";
      $db      = $FIG_Config::babel_db;
      $dbhost  = $FIG_Config::babel_dbhost;
      $backend = $FIG_Config::babel_dbbackend || "MySQL"; # for PPO only
      $type    = $FIG_Config::babel_dbtype    if ($FIG_Config::babel_dbtype);
      $dbsock  = $FIG_Config::babel_dbsock    if ($FIG_Config::babel_dbsock);
      $dbport  = $FIG_Config::babel_dbport    if ($FIG_Config::babel_dbport);

    }
    else {
      	warn "Unable to read DataHandler::Babel database: can't find FIG_Config.pm or Babel.pm\n";
	return undef;
    }

    if ($type eq "PPO") {
      eval {
	$_[0]->{_handle} = DBMaster->new( -database => $db,
					  -host     => $dbhost,
					  -user     => $user,
					  -backend  => $backend,
					);
      };
    }
    else {
      if ($dbhost) {
	$_[0]->{_handle} = DBI->connect("DBI:$type:dbname=$db;host=$dbhost", $user, $dbpass);
      }
      print STDERR $_[0]->{_handle} . "\n";
      unless ( $_[0]->{_handle} ) {
	print STDERR "Error , " , DBI->error , "\n";
      }
    }
    
    if ($@) {
      warn "Unable to read DataHandler::Babel : $@\n";
      $_[0]->{_handle} = undef;
    }
  }
  return $_[0]->{_handle};
}

1;

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3