aboutsummaryrefslogtreecommitdiff
path: root/lib/WebCoso
diff options
context:
space:
mode:
authordakkar <dakkar@luxion>2006-02-04 16:40:52 +0000
committerdakkar <dakkar@luxion>2006-02-04 16:40:52 +0000
commit1289e62a8d1a1a5b94b0b502e2aacdb2cb6d501d (patch)
tree3b966f66e4b15fbc3e4650757ac8df2b0e5a4da8 /lib/WebCoso
parentpassa tutti i test. mancano i controlli per evitare la sovrapopoplazione degl... (diff)
downloadWebCoso-1289e62a8d1a1a5b94b0b502e2aacdb2cb6d501d.tar.gz
WebCoso-1289e62a8d1a1a5b94b0b502e2aacdb2cb6d501d.tar.bz2
WebCoso-1289e62a8d1a1a5b94b0b502e2aacdb2cb6d501d.zip
integrate le nuove resources al posto delle vecchie config::resources
git-svn-id: svn://luxion/repos/WebCoso/trunk@150 fcb26f47-9200-0410-b104-b98ab5b095f3
Diffstat (limited to 'lib/WebCoso')
-rw-r--r--lib/WebCoso/Config.pm28
-rw-r--r--lib/WebCoso/Config/Collection.pm2
-rw-r--r--lib/WebCoso/Config/Collections.pm4
-rw-r--r--lib/WebCoso/Config/Resource.pm92
-rw-r--r--lib/WebCoso/Resource.pm24
5 files changed, 50 insertions, 100 deletions
diff --git a/lib/WebCoso/Config.pm b/lib/WebCoso/Config.pm
index 187602e..78c9dbe 100644
--- a/lib/WebCoso/Config.pm
+++ b/lib/WebCoso/Config.pm
@@ -66,7 +66,7 @@ sub clear {
package WebCoso::Config::Helpers;
use Path::Class;
-use WebCoso::Config::Resource;
+use WebCoso::Resource;
use WebCoso::Config::Collection;
use Exporter::Lite;
use vars qw($FILENAME @EXPORT);
@@ -101,10 +101,18 @@ sub res {
);
};
- my $resource=WebCoso::Config::Resource->new({
- sources=>[@abs_source_files],
- destination=>$dest_filename
- });
+ my $resource=WebCoso::Resource->new();
+ $resource->set_property(sources=>[@abs_source_files]);
+ $resource->set_property(destination=>$dest_filename);
+
+ for my $filename (@abs_source_files) {
+ $resource->set_property(
+ {filename=>$filename},
+ datastream => _open_file($filename),
+ );
+ }
+
+ WebCoso::Config->add_resource($resource);
# brutto!
$resource_to_pipeline{$resource}=$pipeline_name;
@@ -125,4 +133,14 @@ sub coll {
return $collection;
}
+sub _open_file {
+ my ($filename)=@_;
+
+ open my $fh,'<:raw',$filename
+ or WebCoso::X::OpenError->throw(
+ filename => $filename,
+ error => $!);
+ return $fh;
+}
+
1;
diff --git a/lib/WebCoso/Config/Collection.pm b/lib/WebCoso/Config/Collection.pm
index 961bc55..23b1aea 100644
--- a/lib/WebCoso/Config/Collection.pm
+++ b/lib/WebCoso/Config/Collection.pm
@@ -39,7 +39,7 @@ sub get_axes {
return 'language';
}
-sub get_axis_value {
+sub get_axis_values {
my ($self,$axis_name)=@_;
if ($axis_name eq 'language') {
return grep { $_ } keys %{ $self->get_names() }
diff --git a/lib/WebCoso/Config/Collections.pm b/lib/WebCoso/Config/Collections.pm
index 9cb3bbe..7c70e64 100644
--- a/lib/WebCoso/Config/Collections.pm
+++ b/lib/WebCoso/Config/Collections.pm
@@ -46,7 +46,7 @@ sub get_axes {
return 'language';
}
-sub get_axis_value {
+sub get_axis_values {
my ($self,$axis_name)=@_;
if ($axis_name eq 'language') {
return $self->_get_languages();
@@ -61,7 +61,7 @@ sub _get_languages {
my %langs=();
for my $collection ($self->get_all_collections()) {
- @langs{ $collection->get_axis_value('language') } = ();
+ @langs{ $collection->get_axis_values('language') } = ();
}
delete $langs{''};
diff --git a/lib/WebCoso/Config/Resource.pm b/lib/WebCoso/Config/Resource.pm
deleted file mode 100644
index 96a1d33..0000000
--- a/lib/WebCoso/Config/Resource.pm
+++ /dev/null
@@ -1,92 +0,0 @@
-package WebCoso::Config::Resource;
-use strict;
-use warnings;
-use Class::Std;
-use Scalar::Util 'weaken';
-use List::MoreUtils 'any';
-use WebCoso::Config;
-use WebCoso::X;
-
-{
-
-my %sources_of :ATTR( :init_arg<sources> :get<sources>);
-my %dest_of :ATTR( :init_arg<destination> :get<destination>);
-my %collections_of :ATTR( :get<collections_ref> );
-
-sub BUILD {
- my ($self,$ident,$args_ref)=@_;
-
- $collections_of{$ident}=[];
-
- WebCoso::Config->add_resource($self);
-
- return;
-}
-
-sub get_axes {
- return 'filename';
-}
-
-sub get_axis_value {
- my ($self,$axis_name)=@_;
- if ($axis_name eq 'filename') {
- return @{ $self->get_sources() };
- }
- else {
- return;
- }
-}
-
-sub get_datastream {
- my ($self,$axis_name,$axis_value,@rest)=@_;
- if (@rest==0 and $axis_name eq 'filename') {
- if ( grep { $_ eq $axis_value }
- @{ $self->get_sources() }
- ) {
- return _read_file($axis_value);
- }
- }
- else {
- return;
- }
-}
-
-sub get_properties {
- return ();
-}
-
-sub get_collections {
- my ($self)=@_;
-
- return @{ $self->get_collections_ref() };
-}
-
-sub add_coll {
- my ($self, $collection)=@_;
-
- return if any { $_ eq $collection } @{ $self->get_collections_ref() };
-
- my $weak_collection = $collection;
- weaken $weak_collection;
-
- push @{ $self->get_collections_ref() }, $weak_collection;
-
- $collection->add_res($self);
-
- return;
-}
-
-sub _read_file :PRIVATE {
- my ($filename)=@_;
-
- local $/;
- open my $fh,'<:raw',$filename
- or WebCoso::X::OpenError->throw(
- filename => $filename,
- error => $!);
- return scalar <$fh>;
-}
-
-}
-
-1;
diff --git a/lib/WebCoso/Resource.pm b/lib/WebCoso/Resource.pm
index 29146f2..077c577 100644
--- a/lib/WebCoso/Resource.pm
+++ b/lib/WebCoso/Resource.pm
@@ -2,6 +2,8 @@ package WebCoso::Resource;
use strict;
use warnings;
use Class::Std;
+use Scalar::Util 'weaken';
+use List::MoreUtils 'any';
#use WebCoso::X;
#use Smart::Comments;$Data::Dumper::Useqq=1;
@@ -9,6 +11,7 @@ use Class::Std;
my %values_of :ATTR(:default<{}>);
my %propnames_of :ATTR(:default<{}>);
my %axes_of :ATTR(:default<{}>);
+my %collections_of :ATTR(:get<collections_ref> :default<[]>);
sub get_axes {
my ($self)=@_;
@@ -67,6 +70,27 @@ sub get_property {
return;
}
+sub get_collections {
+ my ($self)=@_;
+
+ return @{ $self->get_collections_ref() };
+}
+
+sub add_coll {
+ my ($self, $collection)=@_;
+
+ return if any { $_ eq $collection } @{ $self->get_collections_ref() };
+
+ my $weak_collection = $collection;
+ weaken $weak_collection;
+
+ push @{ $self->get_collections_ref() }, $weak_collection;
+
+ $collection->add_res($self);
+
+ return;
+}
+
sub _populate_axes_from {
my ($self,$axes_spec)=@_;