/[cvs]/nfo/perl/libs/Data/Transfer/Sync/Metadata/V1.pm
ViewVC logotype

Annotation of /nfo/perl/libs/Data/Transfer/Sync/Metadata/V1.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations)
Sun Feb 9 05:04:57 2003 UTC (21 years, 5 months ago) by joko
Branch: MAIN
CVS Tags: HEAD
+ initial commit

1 joko 1.1 ## -------------------------------------------------------------------------
2     ##
3     ## $Id: Sync.pm,v 1.15 2003/01/20 16:58:07 joko Exp $
4     ##
5     ## Copyright (c) 2002, 2003 Andreas Motl <andreas.motl@ilo.de>
6     ##
7     ## This module is licensed under the same terms as Perl itself.
8     ##
9     ## -------------------------------------------------------------------------
10     ## $Log: Sync.pm,v $
11     ## -------------------------------------------------------------------------
12    
13    
14     package Data::Transfer::Sync::Metadata::V1;
15    
16     use strict;
17     use warnings;
18    
19     use mixin::with qw( Data::Transfer::Sync );
20    
21    
22     # start here
23    
24     use Data::Dumper;
25    
26     # get logger instance
27     my $logger = Log::Dispatch::Config->instance;
28    
29    
30     # TODO: refactor!!! take this list from already established/given metadata
31     sub buildMetadata {
32     my $self = shift;
33    
34     $logger->debug( __PACKAGE__ . "->buildMetadata");
35    
36     # decompose identifiers for each partner
37     foreach ('source', 'target') {
38    
39     # get/set metadata for further processing
40    
41     # Partner and Node (e.g.: "L:Country" or "R:countries.csv")
42     if (my $item = $self->{args}->{$_}) {
43     my @item = split(':', $item);
44     $self->{meta}->{$_}->{dbkey} = $item[0];
45     $self->{meta}->{$_}->{node} = $item[1];
46     }
47    
48     # Filter
49     if (my $item_filter = $self->{args}->{$_ . '_filter'}) {
50     $self->{meta}->{$_}->{filter} = $item_filter;
51     }
52    
53     # IdentProvider
54     if (my $item_ident = $self->{args}->{$_ . '_ident'}) {
55     my @item_ident = split(':', $item_ident);
56     $self->{meta}->{$_}->{IdentProvider} = { method => $item_ident[0], arg => $item_ident[1] };
57     }
58    
59     print Dumper($self);
60     exit;
61    
62     # TODO: ChecksumProvider
63    
64     # exclude properties/subnodes
65     if (my $item_exclude = $self->{args}->{$_ . '_exclude'}) {
66     $self->{meta}->{$_}->{subnodes_exclude} = $item_exclude;
67     }
68    
69     # TypeProvider
70     if (my $item_type = $self->{args}->{$_ . '_type'}) {
71     my @item_type = split(':', $item_type);
72     $self->{meta}->{$_}->{TypeProvider} = { method => $item_type[0], arg => $item_type[1] };
73     }
74    
75     # Callbacks - writers (will be triggered _before_ writing to target)
76     if (my $item_writers = $self->{args}->{$_ . '_callbacks_write'}) {
77     my $descent = $_; # this is important since the following code inside the map wants to use its own context variables
78     map { $self->{meta}->{$descent}->{Callback}->{write}->{$_}++; } @$item_writers;
79     }
80    
81     # Callbacks - readers (will be triggered _after_ reading from source)
82     if (my $item_readers = $self->{args}->{$_ . '_callbacks_read'}) {
83     my $descent = $_;
84     map { $self->{meta}->{$descent}->{Callback}->{read}->{$_}++; } @$item_readers;
85     }
86    
87     # resolve storage objects
88     #$self->{$_} = $self->{container}->{storage}->{$self->{meta}->{$_}->{dbkey}};
89     # relink references to metainfo
90     $self->{meta}->{$_}->{storage} = $self->{container}->{storage}->{$self->{meta}->{$_}->{dbkey}};
91     #print "iiiiisprov: ", Dumper($self->{meta}->{$_}->{storage}), "\n";
92     }
93    
94     }
95    
96    
97     sub buildFieldmapping {
98     my $self = shift;
99    
100     #print Dumper($self);
101     #exit;
102    
103     $logger->debug( __PACKAGE__ . "->buildFieldmapping");
104    
105     # build mapping
106     # incoming: and Array of node map entries (Array or Hash) - e.g.
107     # [ 'source:item_name' => 'target:class_val' ]
108     # { source => 'event->startDateTime', target => 'begindate' }
109     #foreach (@{$self->{args}->{mapping}}) {
110     foreach (@{$self->{options}->{details}}) {
111     if (ref $_ eq 'ARRAY') {
112     my @entry1 = split(':', $_->[0]);
113     my @entry2 = split(':', $_->[1]);
114     my $descent = [];
115     my $node = [];
116     $descent->[0] = $entry1[0];
117     $descent->[1] = $entry2[0];
118     $node->[0] = $entry1[1];
119     $node->[1] = $entry2[1];
120     push @{$self->{meta}->{$descent->[0]}->{childnodes}}, $node->[0];
121     push @{$self->{meta}->{$descent->[1]}->{childnodes}}, $node->[1];
122     } elsif (ref $_ eq 'HASH') {
123     foreach my $entry_key (keys %$_) {
124     my $entry_val = $_->{$entry_key};
125     push @{$self->{meta}->{$entry_key}->{childnodes}}, $entry_val;
126     }
127     }
128    
129     }
130    
131     #print Dumper($self);
132     #exit;
133    
134     return 1;
135    
136     }
137    
138    
139     1;

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