Raw content of BioMart::Configuration::Location # $Id # # BioMart module for BioMart::Configuration::Location # # You may distribute this module under the same terms as perl itself # POD documentation - main docs before the code =head1 NAME BioMart::Configuration::Location =head1 SYNOPSIS Base Class for all BioMart location objects. =head1 DESCRIPTION Base Class for BioMart location objects defined within the registry XML configguration =head1 AUTHOR - Damian Smedley =head1 CONTACT This module is part of the BioMart project http://www.biomart.org Questions can be posted to the mart-dev mailing list: mart-dev@ebi.ac.uk =head1 METHODS =cut package BioMart::Configuration::Location; use strict; use warnings; use base qw(BioMart::Root); use constant NAME => "name"; use constant DISPLAYNAME => "displayName"; use constant HOST => "host"; use constant PORT => "port"; use constant DEFAULT => "default"; use constant VISIBLE => "visible"; use constant INCLUDEDATASETS => "includeDatasets"; use constant MARTUSER => "martUser"; use constant SCHEMA => "schema"; use constant DATABASETYPE => "databaseType"; use constant DATABASE => "database"; use constant USER => "user"; use constant PASSWORD => "password"; use constant PROXY => "proxy"; use constant PATH =>"path"; use constant SERVERVIRTUALSCHEMA => "serverVirtualSchema"; use constant TITLES => [ NAME, DISPLAYNAME, HOST, PORT, DEFAULT, VISIBLE, INCLUDEDATASETS, MARTUSER, SCHEMA, DATABASETYPE, DATABASE, USER, PASSWORD, PROXY, PATH, SERVERVIRTUALSCHEMA ]; =head2 _new Usage : my $location_obj = BioMart::Configuration::Location_implementation->new(); Description: create a new Location object Returntype : BioMart::Configuration::Location Exceptions : none Caller : general =cut sub _new { my ($self, @param) = @_; $self->SUPER::_new(@param); $self->addParams(TITLES, @param); $self->attr('dsn', undef); $self->attr('datasets', { }); $self->attr('datasetNumber', undef); $self->attr('visibleDatasetNames', []); $self->attr('visibleDatasetDisplayNames', []); } =head2 name Usage : my $name = $location->name; $location->name($newName); Description: get/set for the name of the location Returntype : scalar $name Exceptions : none Caller : caller =cut sub name { my ($self, $value) = @_; if ($value){ $self->setParam(NAME, $value); } return $self->getParam(NAME); } =head2 displayName Usage : my $displayName = $location->displayName; $location->displayName($newName); Description: get/set for the displayName of the location Returntype : scalar $displayName Exceptions : none Caller : caller =cut sub displayName { my ($self, $value) = @_; if ($value){ $self->setParam(DISPLAYNAME, $value); } return $self->getParam(DISPLAYNAME); } =head2 host Usage : my $host = $location->host; $location->host($newName); Description: get/set for the host of the location Returntype : scalar $host Exceptions : none Caller : caller =cut sub host { my ($self, $value) = @_; if ($value){ $self->setParam(HOST, $value); } return $self->getParam(HOST); } =head2 port Usage : my $port = $location->port; $location->port($newName); Description: get/set for the port of the location Returntype : scalar $port Exceptions : none Caller : caller =cut sub port { my ($self, $value) = @_; if ($value){ $self->setParam(PORT, $value); } return $self->getParam(PORT); } =head2 martUser Usage : my $martUser = $location->martUser; $location->martUser($newName); Description: get/set for the martUser of the location Returntype : scalar $martUser Exceptions : none Caller : caller =cut sub martUser { my ($self, $value) = @_; if ($value){ $self->setParam(MARTUSER, $value); } return $self->getParam(MARTUSER); } =head2 includeDatasets Usage : my $includeDatasets = $location->includeDatasets; $location->includeDatasets($newName); Description: get/set for the includeDatasets of the location Returntype : scalar $includeDatasets Exceptions : none Caller : caller =cut sub includeDatasets { my ($self, $value) = @_; if ($value){ $self->setParam(INCLUDEDATASETS, $value); } return $self->getParam(INCLUDEDATASETS); } =head2 visible Usage : my $visible = $filt->visible; $location->visible($visible); Description: get/set the visible flag associated with this location Returntype : scalar $visible Exceptions : none Caller : caller =cut sub visible { my ($self,$visible) = @_; if ($visible) { $self->setParam(VISIBLE,$visible); } return $self->getParam(VISIBLE); } =head2 default Usage : my $default = $location->default; $location->default($newName); Description: get/set for the default of the location Returntype : scalar $default Exceptions : none Caller : caller =cut sub default { my ($self, $value) = @_; if ($value){ $self->setParam(DEFAULT, $value); } return $self->getParam(DEFAULT); } =head2 schema Usage : my $schema = $location->schema; $location->schema($newName); Description: get/set for the schema of the location Returntype : scalar $schema Exceptions : none Caller : caller =cut sub schema { my ($self, $value) = @_; if ($value){ $self->setParam(SCHEMA, $value); } return $self->getParam(SCHEMA); } =head2 databaseType Usage : my $databaseType = $location->databaseType; $location->name($databaseType); Description: get/set for the databaseType of the location Returntype : scalar $databaseType Exceptions : none Caller : caller =cut sub databaseType { my ($self, $value) = @_; if ($value){ $self->setParam(DATABASETYPE, $value); } return $self->getParam(DATABASETYPE); } =head2 database Usage : my $database = $location->database; $location->database($newName); Description: get/set for the database of the location Returntype : scalar $database Exceptions : none Caller : caller =cut sub database { my ($self, $value) = @_; if ($value){ $self->setParam(DATABASE, $value); } return $self->getParam(DATABASE); } =head2 user Usage : my $user = $location->user; $location->user($newName); Description: get/set for the user of the location Returntype : scalar $user Exceptions : none Caller : caller =cut sub user { my ($self, $value) = @_; if ($value){ $self->setParam(USER, $value); } return $self->getParam(USER); } =head2 password Usage : my $password = $location->password; $location->password($newName); Description: get/set for the password of the location Returntype : scalar $password Exceptions : none Caller : caller =cut sub password { my ($self, $value) = @_; if ($value){ $self->setParam(PASSWORD, $value); } return $self->getParam(PASSWORD); } =head2 proxy Usage : my $proxy = $location->proxy; $location->proxy($newName); Description: get/set for the proxy of the location Returntype : scalar $proxy Exceptions : none Caller : caller =cut sub proxy { my ($self, $value) = @_; if ($value){ $self->setParam(PROXY, $value); } return $self->getParam(PROXY); } =head2 path Usage : my $path = $location->path; $location->path($newName); Description: get/set for the path of the location Returntype : scalar $path Exceptions : none Caller : caller =cut sub path { my ($self, $value) = @_; if ($value){ $self->setParam(PATH, $value); } return $self->getParam(PATH); } =head2 serverVirtualSchema Usage : my $serverVirtualSchema = $location->serverVirtualSchema; $location->serverVirtualSchema($newName); Description: get/set for the serverVirtualSchema of the location Returntype : scalar $serverVirtualSchema Exceptions : none Caller : caller =cut sub serverVirtualSchema { my ($self, $value) = @_; if ($value){ $self->setParam(SERVERVIRTUALSCHEMA, $value); } return $self->getParam(SERVERVIRTUALSCHEMA); } =head2 dsn Usage : my $dsn = $location->dsn; $location->dsn($newName); Description: get/set for the dsn of the location Returntype : scalar $dsn Exceptions : none Caller : caller =cut sub dsn { my ($self, $value) = @_; if ($value){ $self->set('dsn', $value); } return $self->get('dsn'); } =head2 datasetNumber Usage : my $dsNo = $location->datasetNumber; $location->dsn($newNumber); Description: get/set for the datasetNumber of the location Returntype : scalar $datasetNumber Exceptions : none Caller : caller =cut sub datasetNumber { my ($self, $value) = @_; if ($value){ $self->set('datasetNumber', $value); } return $self->get('datasetNumber'); } =head2 addDataset Usage : usage Description: Description Returntype : Exceptions : none Caller : caller =cut sub addDataset { my ($self, $dataset) = @_; my $dataSetName = $dataset->name(); my $dataSetHash = $self->get('datasets'); my $dataSetEntry = $dataSetHash->{$dataSetName}; if (defined $dataSetEntry) { BioMart::Exception::Configuration->throw("Can not add dataset '$dataSetName', already added"); } $dataSetHash->{$dataSetName} = $dataset; if ($dataset->visible == 1){ my $datasetNames = $self->get('visibleDatasetNames'); my $datasetDisplayNames = $self->get('visibleDatasetDisplayNames'); push @$datasetNames,$dataSetName; push @$datasetDisplayNames, $dataset->displayName(); $self->set('visibleDatasetNames', $datasetNames); $self->set('visibleDatasetDisplayNames', $datasetDisplayNames); } $self->set('datasets', $dataSetHash); } =head2 removeDataset Usage : usage Description: Description Returntype : Exceptions : none Caller : caller =cut sub removeDataset { my ($self,$dataset) = @_; my $datasets = $self->getAllDatasets; my $i = 0; foreach my $dset (@$datasets){ if ($dset->name eq $dataset->name){ splice @$datasets,$i,1; last; } $i++; } } =head2 getAllVisibleDatasetNames Usage : usage Description: Description Returntype : Exceptions : none Caller : caller =cut sub getAllVisibleDatasetNames { my $self = shift; return $self->get('visibleDatasetNames'); } =head2 getAllVisibleDatasetDisplayNames Usage : usage Description: Description Returntype : Exceptions : none Caller : caller =cut sub getAllVisibleDatasetDisplayNames { my $self = shift; return $self->get('visibleDatasetDisplayNames'); } =head2 getAllDatasets Usage : usage Description: Description Returntype : Exceptions : none Caller : caller =cut sub getAllDatasets { my ($self, $visible ) = @_; my $datasetHash = $self->get('datasets'); my @datasets = values %{$datasetHash}; if(!$visible) { return \@datasets; } my $visibleDS; if ($visible == 1) { foreach my $vDS (@datasets) { if ($vDS->visible == 1) { push @{$visibleDS}, $vDS; } } return $visibleDS; } #return $self->get('datasets'); } =head2 getDatasetByName Usage : usage Description: Description Returntype : Exceptions : none Caller : caller =cut sub getDatasetByName { my ($self,$dataSetName) = @_; my $dataSetHash = $self->get('datasets'); my $dataSetEntry = $dataSetHash->{$dataSetName}; return $dataSetEntry; } =head2 retrieveDatasetInfo Usage : my $datasets_info = $location->retrieveDatasets; Description: Retrieves the dataset informations for a Location object. Returntype : SQL string Exceptions : none Caller : caller =cut sub retrieveDatasetInfo { my ($self,@param) = @_; if ($self->can("_retrieveDatasetInfo")) { return $self->_retrieveDatasetInfo(@param); } $self->unimplemented_method; } sub configureMessage { my ($self,$virtualSchema,$dataSetName,$type,$dsCounter)=@_; my $counter; if (defined $dsCounter){ my $datasets=$self->datasetNumber; if (length ($dsCounter)==1){$dsCounter="00".$dsCounter;} if (length ($dsCounter)==2){$dsCounter="0".$dsCounter;} if (length ($datasets)==1){$datasets="00".$datasets;} if (length ($datasets)==2){$datasets="0".$datasets;} $counter= $dsCounter."/".$datasets; } else { $counter=""; } my $displayName; if (defined $self->displayName){ $displayName=$self->displayName; } else { $displayName=""; } my $param0=10; my $param1=50; my $param2=25; my $param3=30; my $param4=10; my $buffer0 = $self->_buffer($param0,$counter); my $buffer1 = $self->_buffer($param1,$virtualSchema." ".$dataSetName); my $buffer2 = $self->_buffer($param2,$displayName); my $buffer3 = $self->_buffer($param3,$self->host.":".$self->port); my $buffer4 = $self->_buffer($param4,$virtualSchema); print STDERR $virtualSchema.$buffer4.$displayName.$buffer2.$counter.$buffer0.$dataSetName. $buffer1."(".$type.") ".$self->host.":".$self->port.$buffer3; } sub _buffer { my ($self,$param,$field)=@_; my $buffer=" "; if ($param>length($field)){ for (my $i=0;$i<$param-length($field);$i++){ $buffer=$buffer."."; } } else { $buffer =" ... "; } $buffer=$buffer." "; return $buffer; } 1;