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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.4 - (show 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 ## --------------------------------------------------------------------------------
2 ## $Id: Map.pm,v 1.3 2003/02/21 01:49:24 joko Exp $
3 ## --------------------------------------------------------------------------------
4 ## $Log: Map.pm,v $
5 ## Revision 1.3 2003/02/21 01:49:24 joko
6 ## renamed core function
7 ##
8 ## Revision 1.2 2003/02/14 12:54:30 joko
9 ## + established first code here
10 ##
11 ## Revision 1.1 2003/01/19 03:27:33 joko
12 ## + initial check-in
13 ##
14 ## --------------------------------------------------------------------------------
15
16
17 package Data::Mungle::Transform::Map;
18
19 use strict;
20 use warnings;
21
22 use base 'DesignPattern::Object';
23
24
25 use Data::Dumper;
26 use XML::Simple;
27 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
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 utf8_to_latin($data);
47 $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
89 1;
90 __END__

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