/[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.2 - (show 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 ## --------------------------------------------------------------------------------
2 ## $Id: Map.pm,v 1.1 2003/01/19 03:27:33 joko Exp $
3 ## --------------------------------------------------------------------------------
4 ## $Log: Map.pm,v $
5 ## Revision 1.1 2003/01/19 03:27:33 joko
6 ## + initial check-in
7 ##
8 ## --------------------------------------------------------------------------------
9
10
11 package Data::Transform::Map;
12
13 use strict;
14 use warnings;
15
16 use base 'DesignPattern::Object';
17
18
19 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
83 1;
84 __END__

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