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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

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