my ($class, $dbconn_part, $driver, $user, $pass, $host, $port, $dbname, $conn_params) = @_;
if($driver eq 'mysql') {
$user ||= 'ensro';
$pass ||= '';
$host ||= '';
$port ||= 3306;
}
my $type = $conn_params->{'type'};
my $discon = $conn_params->{'discon'};
my $nosqlvc = $conn_params->{'nosqlvc'};
my $connectionKey = "$driver://$user:$pass\@$host:$port/$dbname;$type";
my $dba = $_URLFactory_global_instance->{$connectionKey};
unless($dba) {
my $module = {
'hive' => 'Bio::EnsEMBL::Hive::DBSQL::DBAdaptor',
'compara' => 'Bio::EnsEMBL::Compara::DBSQL::DBAdaptor',
'core' => 'Bio::EnsEMBL::DBSQL::DBAdaptor',
'pipeline' => 'Bio::EnsEMBL::Pipeline::DBSQL::DBAdaptor',
}->{$type};
eval "require $module";
$_URLFactory_global_instance->{$connectionKey} = $dba =
$type eq 'hive'
? $module->new(
-url => $dbconn_part,
-disconnect_when_inactive => $discon,
-no_sql_schema_version_check => $nosqlvc,
) : $module->new(
-driver => $driver,
-host => $host,
-port => $port,
-user => $user,
-pass => $pass,
-dbname => $dbname,
-species => $dbname,
-disconnect_when_inactive => $discon,
);
}
return $dba;
}