diff options
Diffstat (limited to 'lib/WebCoso/Config/Collection.pm')
-rw-r--r-- | lib/WebCoso/Config/Collection.pm | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/lib/WebCoso/Config/Collection.pm b/lib/WebCoso/Config/Collection.pm index c4b6347..6108623 100644 --- a/lib/WebCoso/Config/Collection.pm +++ b/lib/WebCoso/Config/Collection.pm @@ -28,7 +28,11 @@ sub BUILD { $children_of{$ident}=$children; $_->add_parent($self) for @$children; + $resources_of{$ident}=[]; + WebCoso::Config->add_collection($self); + + return; } sub axes { @@ -74,6 +78,8 @@ sub add_child { push @{ $self->get_children_ref() },$child; $child->add_parent($self); + + return; } sub add_parent { my ($self,$parent)=@_; @@ -85,6 +91,28 @@ sub add_parent { push @{ $self->get_parents_ref() },$weak_parent; $parent->add_child($self); + + return; +} +sub add_res { + my ($self, @resources)=@_; + + # creo una tabellina di look-up per evitare i duplicati + # NOTA: le chiavi sono stringhe, non ref, non si può usare per + # pescare gli oggetti + my %res_key; + @res_key{ @{ $self->get_resources_ref() } } = (); + + RESOURCES: + for my $res (@resources) { + next RESOURCES if exists $res_key{$res}; + + push @{ $self->get_resources_ref() }, $res; + $res_key{$res}=undef; + $res->add_coll($self); + } + + return; } sub get_parents { |