/[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.4 - (hide annotations)
Thu Mar 27 15:17:07 2003 UTC (21 years, 3 months ago) by joko
Branch: MAIN
CVS Tags: HEAD
Changes since 1.3: +8 -5 lines
namespace fixes for Data::Mungle::*

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

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