#!/usr/bin/perl
#
# $Id: GetObjectDefinition.pl,v 1.1 2008/02/21 00:14:33 kawas Exp $
# $Source: /home/repository/moby/moby-live/Perl/MOBY-Client/scripts/GetObjectDefinition.pl,v $
#
use strict;
use Getopt::Std;
use FileHandle;
use MOBY::Client::Central;
# Get options.
my %opts;
getopt('oc', \%opts);
my $central;
print "\n";
if ( $opts{'c'} ) {
my ($central_uri, $central_url) = split '@', $opts{'c'};
print "Using BioMOBY Central:\n\t$central_uri @ $central_url\n\n";
# set this to wherever your MOBY Central is.
$central = MOBY::Client::Central->new(
Registries => {
mobycentral => {
URL => $central_url,
URI => $central_uri
}
}
);
} else {
print "Using default BioMOBY Central.\n\n";
$central = MOBY::Client::Central->new;
}
# Check if the essential options are set
if ( !$opts{'o'} && !$opts{'l'} ) {
print "Usage: GetObjectDefinition.pl [options]\n";
print "available options are:\n";
print "\n";
print "-c [Central] Specify which BioMOBY Central to use.\n";
print " [Central] = [CentralURI]@[CentralURL].\n";
print "-l Get a list of all registered objects.\n";
print "-o [object] Get the definition for a specific object.\n\n";
}
if ( $opts{'l'} ) {
my $object;
my $description;
format LIST =
@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<... ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$object $description
~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$description
~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$description
~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$description
~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$description
~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<...
$description
.
STDOUT->format_name("LIST");
my $names = $central->MOBY::Client::Central::retrieveObjectNames();
print "Registered objects:\n";
foreach $object (sort keys %{$names}) {
$description = ${$names}{$object};
write;
}
} elsif ( $opts{'o'} ) {
my $object = $opts{'o'};
# A simple MOBY_Central call to get the definition of an BioMOBY object.
my $definitions = $central->MOBY::Client::Central::retrieveObjectDefinition(objectType => $object);
#use Data::Dumper;
#my $dumper = Data::Dumper->new($definitions);
#print $dumper->Dump;
unless ($definitions) {
print "No definition found for object $object\n";
exit(1);
}
my $relation;
format OBJECT =
@<<<<<<<<<<<<<<<<<<<<<<<<<... @<<<<<<<<<<<<<<<<<<<<<<<<<... @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<...
${$relation}{object} ${$relation}{articleName} ${$relation}{lsid}
.
STDOUT->format_name("OBJECT");
print "Object definition for $object:\n";
while (my ($type, $def) = each %{$definitions}){
if ($type =~ m/XML/i) {
#print "$type:\t$def\n";
} elsif ($type =~ m/Relationships/i) {
print "$type:\n";
while (my ($relation_type, $relation_object) = each %{$def}){
print " $relation_type\n";
print " ObjectName: ArticleName: LSID:\n";
foreach $relation (@{$relation_object}) {
write;
}
}
} else {
print "$type:\t$def\n";
}
}
}