/[cvs]/nfo/perl/libs/Data/Mungle/Transform/Map.pm
ViewVC logotype

Annotation of /nfo/perl/libs/Data/Mungle/Transform/Map.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (hide annotations)
Fri Feb 14 12:54:30 2003 UTC (21 years, 4 months ago) by joko
Branch: MAIN
Changes since 1.1: +69 -2 lines
+ established first code here

1 joko 1.1 ## --------------------------------------------------------------------------------
2 joko 1.2 ## $Id: Map.pm,v 1.1 2003/01/19 03:27:33 joko Exp $
3 joko 1.1 ## --------------------------------------------------------------------------------
4 joko 1.2 ## $Log: Map.pm,v $
5     ## Revision 1.1 2003/01/19 03:27:33 joko
6     ## + initial check-in
7     ##
8 joko 1.1 ## --------------------------------------------------------------------------------
9    
10    
11     package Data::Transform::Map;
12    
13     use strict;
14     use warnings;
15    
16     use base 'DesignPattern::Object';
17    
18    
19 joko 1.2 use Data::Dumper;
20     use XML::Simple;
21     use Data::Transform::Encode qw( var2utf8 var_utf2iso );
22     use Data::Compare::Struct qw( getRelations getDifference );
23     use Data::Transform::Deep qw( deep_copy );
24    
25    
26     sub _init {
27     my $self = shift;
28     }
29    
30     sub _touch {
31     my $self = shift;
32     if (!$self->{__meta}->{touched}++) {
33     $self->_readSelectDb();
34     }
35     }
36    
37     sub _readSelectDb {
38     my $self = shift;
39     my $data = XMLin($self->{filename});
40     var_utf2iso($data);
41     $self->{db} = $data;
42     }
43    
44     sub getKeys {
45     my $self = shift;
46     my $source_key = shift;
47     my $source_type = shift;
48    
49     $self->_touch();
50    
51     my $selection = $self->{db}->{source}->{$source_key}->{select} if $source_key;
52     if ($selection) {
53     my @selections = keys %$selection;
54    
55     # TODO: filter @selections by $source_type
56    
57     return @selections;
58     }
59     }
60    
61     sub applyKeyFilter {
62    
63     my $self = shift;
64     my $filterlist = shift;
65    
66     my $data = deep_copy($self->{payload});
67    
68     # calculate intersection
69     my @list = keys %{$data};
70     my $diff = getDifference(\@list, $filterlist);
71    
72     # populate new (filtered) result just using intersected elements
73     my $result;
74     foreach my $elem (@{$diff}) {
75     #$result->{$elem} = $memory->{sports}->{$elem};
76     delete $data->{$elem};
77     }
78    
79     return $data;
80    
81     }
82 joko 1.1
83     1;
84 joko 1.2 __END__

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed