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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

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

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

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