diff options
author | dakkar <dakkar@luxion> | 2006-02-04 16:40:52 +0000 |
---|---|---|
committer | dakkar <dakkar@luxion> | 2006-02-04 16:40:52 +0000 |
commit | 1289e62a8d1a1a5b94b0b502e2aacdb2cb6d501d (patch) | |
tree | 3b966f66e4b15fbc3e4650757ac8df2b0e5a4da8 /lib/WebCoso | |
parent | passa tutti i test. mancano i controlli per evitare la sovrapopoplazione degl... (diff) | |
download | WebCoso-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.pm | 28 | ||||
-rw-r--r-- | lib/WebCoso/Config/Collection.pm | 2 | ||||
-rw-r--r-- | lib/WebCoso/Config/Collections.pm | 4 | ||||
-rw-r--r-- | lib/WebCoso/Config/Resource.pm | 92 | ||||
-rw-r--r-- | lib/WebCoso/Resource.pm | 24 |
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)=@_; |