package Microarray::Config;
# License information (the MIT license)
# Copyright (c) 2003 Christian Rees, Janos Demeter, John Matese, Gavin
# Sherlock; Stanford University
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation files
# (the "Software"), to deal in the Software without restriction,
# including without limitation the rights to use, copy, modify, merge,
# publish, distribute, sublicense, and/or sell copies of the Software,
# and to permit persons to whom the Software is furnished to do so,
# subject to the following conditions:
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
# This package is to be used by microarray softare for the GMOD
# project, to get file paths and other configurations, so that
# programs can be easily be moved about
use strict;
my $VERSION = "0.1";
my $PACKAGE = 'Microarray::Config';
my $kRootPath = $PACKAGE.'::__serverPath';
my $kBinPath = $PACKAGE.'::__binPath';
my $kRootURL = $PACKAGE.'::__serverUrl';
my $kTmpPath = $PACKAGE.'::__tmpPath';
my $kTmpURL = $PACKAGE.'::__tmpURL';
my $kGxHtmlPath = $PACKAGE.'::__gxHtmlPath';
my $kGxImagesPath = $PACKAGE.'::__gxImagesPath';
my $kGxDataPath = $PACKAGE.'::__gxDataPath';
my $kGxURL = $PACKAGE.'::__gxURL';
my $kGxImagesURL = $PACKAGE.'::__gxImagesURL';
my $kDataPath = $PACKAGE.'::__dataPath';
my $kHtmlPath = $PACKAGE.'::__htmlPath';
my $kGxRootWord = $PACKAGE.'::__gxRootword'; # just to store a key directory name
#########################################################################
sub new{
#########################################################################
# This simple constructor initializes a few variables, and returns a
# object reference, which can then be used to call the various methods
#
# Microarray::Config makes some very strict assumptions about the layout of the
# file system. It assumes you will provide it a rootpath, and a rooturl, and that below
# the rootpath will be the following directories:
#
# html, html/tmp, html/explorer, html/images, data, data/explorer, bin
#
# it assumes that the rooturl points to the rootpath/html/
#
#
# Usage my $config = Microarray::Config->new(rootpath => $rootpath,
# rooturl => $rooturl);
# my $path = $config->gxHtmlPath;
my $self = {};
bless $self, shift;
$self->__init(@_);
return $self;
}
#########################################################################
sub __init {
#########################################################################
my ($self, %args) = @_;
# ROOTWORDS below
$self->{$kGxRootWord} = 'explorer'; # key directory for explorer
# FILEPATHS BELOW
$self->{$kRootPath} = $args{'rootpath'} || die "You must provide a rootpath";
$self->{$kBinPath} = $self->{$kRootPath}.'bin/';
$self->{$kDataPath} = $self->{$kRootPath}.'data/';
$self->{$kGxDataPath} = $self->{$kDataPath}.$self->{$kGxRootWord}.'/';
$self->{$kHtmlPath} = $self->{$kRootPath}.'html/';
$self->{$kTmpPath} = $self->{$kHtmlPath}.'tmp/';
$self->{$kGxHtmlPath} = $self->{$kHtmlPath}.$self->{$kGxRootWord}.'/';
$self->{$kGxImagesPath} = $self->{$kGxHtmlPath}.'images/';
# URLS BELOW
$self->{$kRootURL} = $args{'rooturl'} || die "You must supply a rooturl";
$self->{$kTmpURL} = $self->{$kRootURL}.'/tmp/';
$self->{$kGxURL} = $self->{$kRootURL}.'/'.$self->{$kGxRootWord}.'/';
$self->{$kGxImagesURL} = $self->{$kGxURL}.'images/';
return $self;
}
#########################################################################
#
# ACCESSOR METHODS
#
#########################################################################
#########################################################################
sub serverRootPath {
#########################################################################
return $_[0]->{$kRootPath};
}
#########################################################################
sub tmpPath{
#########################################################################
# This method returns the filepath of the tmp directory to be used by
# microarray cgi's
return $_[0]->{$kTmpPath};
}
#########################################################################
sub gxHtmlPath {
#########################################################################
# returns the filesystem path to the explorer html directory stem,
# suitable for appending the project name and dataset name
# (directories)
return $_[0]->{$kGxHtmlPath};
}
#########################################################################
sub gxImagesPath {
#########################################################################
# returns the filesystem path to the explorer images directory stem,
# home of those images accompanying the distribution
return $_[0]->{$kGxImagesPath};
}
#########################################################################
sub gxDataPath {
#########################################################################
# returns the filesystem path to the explorer data directory stem,
# suitable for appending the project name and dataset name
# (directories)
return $_[0]->{$kGxDataPath};
}
#########################################################################
sub binPath{
#########################################################################
# This method returns the path of the directory contianing the binary
# scripts
return $_[0]->{$kBinPath};
}
#########################################################################
sub tmpUrl{
#########################################################################
# This method returns the URL of the tmp directory to be used by
# microarray cgi's
return $_[0]->{$kTmpURL};
}
#########################################################################
sub gxRootWord {
#########################################################################
return $_[0]->{$kGxRootWord};
}
#########################################################################
sub gxURL {
#########################################################################
# returns the stem URL for the explorer documents, suitable for appending
# the project name and dataset name (directories)
return $_[0]->{$kGxURL};
}
#########################################################################
sub gxImagesURL {
#########################################################################
# returns the stem URL for the explorer images, including scalebars,
# background images, and other images included within the distribution
return $_[0]->{$kGxImagesURL};
}
#########################################################################
sub ColorSchemeTranslationHash {
#########################################################################
# This public class method returns a colorscheme lookup hash, so that
# the myriad of user imput, client software, and class expectations
# can be tranlated to a simple, standardized two letter code for the
# colorscheme. This could be added to in the future, if required.
return ('red/green' =>'rg',
'green/red' =>'rg',
'rg' =>'rg',
'gr' =>'rg',
'blue/yellow' =>'yb',
'yellow/blue' =>'yb',
'yb' =>'yb',
'by' =>'yb');
}
#########################################################################
sub ImageType {
#########################################################################
# this public class simply return the type of image that is likely
# being written by GD, based on the GD version
my $kImgType = ($GD::VERSION > 1.19) ? "png" : "gif";
return $kImgType;
}
1;