OBO::CCO::CCO_ID_Set - An implementation of a set of OBO::CCO::CCO_ID objects.


ONTO-PERL documentation Contained in the ONTO-PERL distribution.

Index


Code Index:

NAME

Top

OBO::CCO::CCO_ID_Set - An implementation of a set of OBO::CCO::CCO_ID objects.

SYNOPSIS

Top

use OBO::CCO::CCO_ID_Set;

use OBO::CCO::CCO_ID;

$cco_id_set = OBO::CCO::CCO_ID_Set->new();

$id = OBO::CCO::CCO_ID->new();

$size = $cco_id_set->size();

if ($cco_id_set->add($id)) { ... }

$new_id = $cco_id_set->get_new_id("CCO", "C");

$other_id = $cco_id_set->get_new_id("CCO", "Ca");

DESCRIPTION

Top

The OBO::CCO::CCO_ID_Set class implements a Cell-Cycle Ontology identifiers set.

AUTHOR

Top

Erick Antezana, <erick.antezana -@- gmail.com>

COPYRIGHT AND LICENSE

Top

add_as_string

  Usage    - $set->add_as_string($id)
  Returns  - the added id (OBO::CCO::CCO_ID)
  Args     - the CCO id (string) to be added
  Function - adds an CCO_ID to this set

get_new_id

  Usage    - $set->get_new_id($local_idspace, $subnamespace)
  Returns  - a new CCO id (string)
  Args     - none
  Function - returns a new CCO ID as string and adds this id to the set


ONTO-PERL documentation Contained in the ONTO-PERL distribution.
# $Id: CCO_ID_Set.pm 2010-11-29 erick.antezana $
#
# Module  : CCO_ID_Set.pm
# Purpose : A set of CCO id's.
# License : Copyright (c) 2006-2011 by Erick Antezana. All rights reserved.
#           This program is free software; you can redistribute it and/or
#           modify it under the same terms as Perl itself.
# Contact : Erick Antezana <erick.antezana -@- gmail.com>
#

package OBO::CCO::CCO_ID_Set;


our @ISA = qw(OBO::XO::OBO_ID_Set);
use OBO::XO::OBO_ID_Set;
use OBO::CCO::CCO_ID;

use strict;
use warnings;
use Carp;

sub add_as_string () {
	my ($self, $id_as_string) = @_;
	my $result;
	if ($id_as_string) {
		my $new_obo_id_obj = OBO::CCO::CCO_ID->new();
		$new_obo_id_obj->id_as_string($id_as_string);
		$result = $self->add($new_obo_id_obj);
	}
	return $result;
}

sub get_new_id {
	my ($self, $local_idspace, $subnamespace) = @_;
	my $new_cco_id = OBO::CCO::CCO_ID->new();
	confess "The idspace is invalid: ", $local_idspace if ($local_idspace !~ /[A-Z][A-Z][A-Z]/);
	$new_cco_id->idspace($local_idspace);
	confess "The subnamespace is invalid: ", $subnamespace if ($subnamespace !~ /[A-Z][a-z]?/);
	$new_cco_id->subnamespace($subnamespace);
	# get the last 'localID'
	if ($self->is_empty()){
		$new_cco_id->localID("0000001");
	} else {
		my @arr = sort {$a cmp $b} keys %{$self->{MAP}};
		$new_cco_id->localID( $self->{MAP}->{$arr[$#arr]}->localID() );
	}
	while (!defined ($self -> add( $new_cco_id = $new_cco_id->next_id() ))) {}
	return $new_cco_id->id_as_string ();
}

1;