aboutsummaryrefslogtreecommitdiff
path: root/lib/WebCoso
diff options
context:
space:
mode:
authordakkar <dakkar@luxion>2005-11-05 11:48:32 +0000
committerdakkar <dakkar@luxion>2005-11-05 11:48:32 +0000
commit34018d3ad054574694774f892e2f4fede107be09 (patch)
tree7b1aece18444878fd036bc56514d81eb6b281f9a /lib/WebCoso
parentnormalizzati i nomi dei metodi, aggiunti test per controllo duplicati (diff)
downloadWebCoso-34018d3ad054574694774f892e2f4fede107be09.tar.gz
WebCoso-34018d3ad054574694774f892e2f4fede107be09.tar.bz2
WebCoso-34018d3ad054574694774f892e2f4fede107be09.zip
aggiunta gestione pipeline e test relativi
git-svn-id: svn://luxion/repos/WebCoso/trunk@21 fcb26f47-9200-0410-b104-b98ab5b095f3
Diffstat (limited to 'lib/WebCoso')
-rw-r--r--lib/WebCoso/Config.pm41
-rw-r--r--lib/WebCoso/Config/Resource.pm1
-rw-r--r--lib/WebCoso/Pipeline.pm11
-rw-r--r--lib/WebCoso/Pipeline/Id.pm8
-rw-r--r--lib/WebCoso/X.pm10
5 files changed, 64 insertions, 7 deletions
diff --git a/lib/WebCoso/Config.pm b/lib/WebCoso/Config.pm
index f8dee5a..a72e49c 100644
--- a/lib/WebCoso/Config.pm
+++ b/lib/WebCoso/Config.pm
@@ -2,10 +2,12 @@ package WebCoso::Config;
use strict;
use warnings;
use WebCoso::Config::Collections;
+use WebCoso::Pipeline;
use WebCoso::X;
my @resources;
my $collections=WebCoso::Config::Collections->new();
+my %resource_to_pipeline;
sub read_scalar {
my ($class,$content,$filename)=@_;
@@ -19,7 +21,8 @@ EOF
if ($@) {
WebCoso::X::ConfigError->throw(
filename => $filename,
- error => $@);
+ error => $@,
+ );
}
else {
return 1;
@@ -44,9 +47,20 @@ sub get_collections {
return $collections;
}
+sub get_pipeline_for {
+ my ($class, $resource)=@_;
+
+ WebCoso::X::NoSuchResource->throw(
+ resource => $resource,
+ ) unless exists $resource_to_pipeline{$resource};
+
+ return $resource_to_pipeline{$resource};
+}
+
sub clear {
@resources=();
$collections=WebCoso::Config::Collections->new();
+ %resource_to_pipeline=();
}
package WebCoso::Config::Helpers;
@@ -60,7 +74,7 @@ use vars qw($FILENAME @EXPORT);
sub res {
my $dest_filename=pop @_;
- my $pipeline_name=pop @_;
+ my $short_pipeline_name=pop @_;
my @source_files=@_;
my $config_dir=file($FILENAME)->parent->absolute;
@@ -72,26 +86,41 @@ sub res {
if (!-e $abs_name) {
WebCoso::X::FileNotFound->throw(
filename => $_,
- abs_filename => $abs_name);
+ abs_filename => $abs_name,
+ );
};
$abs_name;
} @source_files;
- WebCoso::Config::Resource->new({
+ my $pipeline_name="WebCoso::Pipeline::$short_pipeline_name";
+ if (! $pipeline_name->can('process') ) {
+ WebCoso::X::NoSuchPipeline->throw(
+ pipeline => $short_pipeline_name,
+ );
+ };
+
+ my $resource=WebCoso::Config::Resource->new({
sources=>[@abs_source_files],
- pipeline=>$pipeline_name,
destination=>$dest_filename
});
+
+ # brutto!
+ $resource_to_pipeline{$resource}=$pipeline_name;
+
+ return $resource;
}
sub coll {
my ($name,$parents,$children,$resources)=@_;
- WebCoso::Config::Collection->new({
+
+ my $collection=WebCoso::Config::Collection->new({
name=>$name,
parents=>$parents||[],
children=>$children||[],
resources=>$resources||[],
});
+
+ return $collection;
}
1;
diff --git a/lib/WebCoso/Config/Resource.pm b/lib/WebCoso/Config/Resource.pm
index b21bdcd..96a1d33 100644
--- a/lib/WebCoso/Config/Resource.pm
+++ b/lib/WebCoso/Config/Resource.pm
@@ -10,7 +10,6 @@ use WebCoso::X;
{
my %sources_of :ATTR( :init_arg<sources> :get<sources>);
-my %pipelines_of :ATTR( :init_arg<pipeline> :get<pipeline>);
my %dest_of :ATTR( :init_arg<destination> :get<destination>);
my %collections_of :ATTR( :get<collections_ref> );
diff --git a/lib/WebCoso/Pipeline.pm b/lib/WebCoso/Pipeline.pm
new file mode 100644
index 0000000..d3e811a
--- /dev/null
+++ b/lib/WebCoso/Pipeline.pm
@@ -0,0 +1,11 @@
+package WebCoso::Pipeline;
+use strict;
+use warnings;
+use Module::Pluggable::Fast
+ name => '_pipelines',
+ search => [ 'WebCoso::Pipeline' ],
+ require => 1;
+
+my @pipelines=_pipelines();
+
+1;
diff --git a/lib/WebCoso/Pipeline/Id.pm b/lib/WebCoso/Pipeline/Id.pm
new file mode 100644
index 0000000..bcd5615
--- /dev/null
+++ b/lib/WebCoso/Pipeline/Id.pm
@@ -0,0 +1,8 @@
+package WebCoso::Pipeline::Id;
+use strict;
+use warnings;
+
+sub process {
+}
+
+1;
diff --git a/lib/WebCoso/X.pm b/lib/WebCoso/X.pm
index 9376d73..cd0c888 100644
--- a/lib/WebCoso/X.pm
+++ b/lib/WebCoso/X.pm
@@ -1,5 +1,7 @@
package WebCoso::X;
use utf8;
+use strict;
+use warnings;
use Exception::Class
(
@@ -20,6 +22,14 @@ use Exception::Class
isa => 'WebCoso::X::FileError',
description => ' non è stato possibile aprire un file',
},
+ 'WebCoso::X::NoSuchPipeline' => {
+ fields => [ 'pipeline' ],
+ description => 'è stata richiesta una pipeline ignota',
+ },
+ 'WebCoso::X::NoSuchResource' => {
+ fields => [ 'resource' ],
+ description => 'è stata richiesta una risorsa ignota',
+ },
);
1;