aboutsummaryrefslogtreecommitdiff
path: root/lib/WebCoso
diff options
context:
space:
mode:
authordakkar <dakkar@luxion>2006-02-21 14:16:59 +0000
committerdakkar <dakkar@luxion>2006-02-21 14:16:59 +0000
commit05cf426e43ebbc4aa167a07129284b38d636ed7f (patch)
tree34b87db0a12c38813c7c36dd304b80d93cb750fb /lib/WebCoso
parent r1349@narval: dakkar | 2006-02-21 12:47:25 +0100 (diff)
downloadWebCoso-05cf426e43ebbc4aa167a07129284b38d636ed7f.tar.gz
WebCoso-05cf426e43ebbc4aa167a07129284b38d636ed7f.tar.bz2
WebCoso-05cf426e43ebbc4aa167a07129284b38d636ed7f.zip
r1350@narval: dakkar | 2006-02-21 13:05:07 +0100
fatto il naming, almeno alla buona git-svn-id: svn://luxion/repos/WebCoso/trunk@203 fcb26f47-9200-0410-b104-b98ab5b095f3
Diffstat (limited to 'lib/WebCoso')
-rw-r--r--lib/WebCoso/Config.pm41
-rw-r--r--lib/WebCoso/X.pm10
2 files changed, 49 insertions, 2 deletions
diff --git a/lib/WebCoso/Config.pm b/lib/WebCoso/Config.pm
index 1b4d6d8..018c3c7 100644
--- a/lib/WebCoso/Config.pm
+++ b/lib/WebCoso/Config.pm
@@ -9,6 +9,8 @@ use utf8;
my @resources;
my $collections=WebCoso::Collections->new();
my %resource_to_pipeline;
+my %name_to_resource;
+my %name_to_collection;
sub read_scalar {
my ($class,$content,$filename)=@_;
@@ -25,9 +27,18 @@ EOF
nested => $@,
);
}
- else {
- return 1;
+ my $symbols=\%WEBCOSO::CONFIG::;
+ for my $name (keys %$symbols) {
+ my $object=${*{$symbols->{$name}}{SCALAR}};
+ my $type=ref($object);
+ if ($type eq 'WebCoso::Resource') {
+ $name_to_resource{$name}=$object;
+ }
+ elsif ($type eq 'WebCoso::Collection') {
+ $name_to_collection{$name}=$object;
+ }
}
+ return 1;
}
sub add_resource {
@@ -39,6 +50,19 @@ sub get_all_resources {
return @resources;
}
+sub get_res_by_name {
+ my ($class,$name)=@_;
+
+ if (exists $name_to_resource{$name}) {
+ return $name_to_resource{$name};
+ }
+ else {
+ WebCoso::X::NoSuchResource->throw(
+ resource => $name
+ );
+ }
+}
+
sub add_collection {
my ($class,$collection)=@_;
$collections->add_collection($collection);
@@ -48,6 +72,19 @@ sub get_collections {
return $collections;
}
+sub get_coll_by_name {
+ my ($class,$name)=@_;
+
+ if (exists $name_to_collection{$name}) {
+ return $name_to_collection{$name};
+ }
+ else {
+ WebCoso::X::NoSuchCollection->throw(
+ collection => $name
+ );
+ }
+}
+
sub get_pipeline_for {
my ($class, $resource)=@_;
diff --git a/lib/WebCoso/X.pm b/lib/WebCoso/X.pm
index 57acd58..a882709 100644
--- a/lib/WebCoso/X.pm
+++ b/lib/WebCoso/X.pm
@@ -37,6 +37,11 @@ use Exception::Class
fields => [ 'resource' ],
description => 'è stata richiesta una risorsa ignota',
},
+ 'WebCoso::X::NoSuchCollection' => {
+ isa => 'WebCoso::X::Base',
+ fields => [ 'collection' ],
+ description => 'è stata richiesta una collezione ignota',
+ },
'WebCoso::X::NoSuchStep' => {
isa => 'WebCoso::X::Base',
fields => [ 'pipeline', 'step' ],
@@ -76,6 +81,11 @@ sub WebCoso::X::NoSuchResource::full_message {
return 'Risorsa ignota: ' . $self->resource();
}
+sub WebCoso::X::NoSuchCollection::full_message {
+ my ($self)=@_;
+ return 'Collezione ignota: ' . $self->collection();
+}
+
sub WebCoso::X::NoSuchStep::full_message {
my ($self)=@_;