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

Diff of /nfo/perl/libs/Data/Transfer/Sync.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.7 by joko, Fri Dec 13 21:49:34 2002 UTC revision 1.11 by joko, Mon Dec 23 07:10:59 2002 UTC
# Line 6  Line 6 
6  ##  ##
7  ##    ----------------------------------------------------------------------------------------  ##    ----------------------------------------------------------------------------------------
8  ##    $Log$  ##    $Log$
9    ##    Revision 1.11  2002/12/23 07:10:59  joko
10    ##    + using MD5 for checksum generation again - the 32-bit integer hash from DBI seems to be too lazy
11    ##
12    ##    Revision 1.10  2002/12/19 01:07:16  joko
13    ##    + fixed output done via $logger
14    ##
15    ##    Revision 1.9  2002/12/16 07:02:34  jonen
16    ##    + added comment
17    ##
18    ##    Revision 1.8  2002/12/15 02:03:09  joko
19    ##    + fixed logging-messages
20    ##    + additional metadata-checks
21    ##
22  ##    Revision 1.7  2002/12/13 21:49:34  joko  ##    Revision 1.7  2002/12/13 21:49:34  joko
23  ##    + sub configure  ##    + sub configure
24  ##    + sub checkOptions  ##    + sub checkOptions
# Line 117  sub prepareOptions { Line 130  sub prepareOptions {
130    $opts->{erase} ||= 0;    $opts->{erase} ||= 0;
131    #$opts->{import} ||= 0;    #$opts->{import} ||= 0;
132        
133    $logger->info( __PACKAGE__ . "->prepareOptions( source_node $opts->{source_node} mode $opts->{mode} erase $opts->{erase} prepare $opts->{prepare} )");    $logger->notice( __PACKAGE__ . "->prepareOptions( source_node $opts->{source_node} mode $opts->{mode} erase $opts->{erase} prepare $opts->{prepare} )");
134    
135    if (!$opts->{mapping} || !$opts->{mapping_module}) {    if (!$opts->{mapping} || !$opts->{mapping_module}) {
136      $logger->warning( __PACKAGE__ . "->prepareOptions: No mapping supplied - please check key 'mappings' in BizWorks/Config.pm");      $logger->warning( __PACKAGE__ . "->prepareOptions: No mapping supplied - please check key 'mappings' in BizWorks/Config.pm");
# Line 319  sub syncNodes { Line 332  sub syncNodes {
332        
333    # check partners/nodes: does partner exist / is node available?    # check partners/nodes: does partner exist / is node available?
334    foreach my $partner (keys %{$self->{meta}}) {    foreach my $partner (keys %{$self->{meta}}) {
335      next if $self->{meta}->{$partner}->{storage}->{locator}->{type} eq 'DBI';    # for DBD::CSV - re-enable for others      
336        # 1. check partners & storages
337        if (!$self->{meta}->{$partner}) {
338          $logger->critical( __PACKAGE__ . "->syncNodes: Could not find partner '$partner' in configuration metadata." );
339          return;
340        }
341    
342        my $dbkey = $self->{meta}->{$partner}->{dbkey};
343    
344        if (!$self->{meta}->{$partner}->{storage}) {
345          $logger->critical( __PACKAGE__ . "->syncNodes: Could not access storage of partner '$partner' (named '$dbkey'), looks like a configuration-error." );
346          return;
347        }
348        
349        # TODO:
350        # 2. check if partners (and nodes?) are actually available....
351        # eventually pre-check mode of access-attempt (read/write) here to provide an "early-croak" if possible
352        
353        # 3. check nodes
354        next if $self->{meta}->{$partner}->{storage}->{locator}->{type} eq 'DBI';    # HACK for DBD::CSV - re-enable for others
355        # get node-name
356      my $node = $self->{meta}->{$partner}->{node};      my $node = $self->{meta}->{$partner}->{node};
357      if (!$self->{meta}->{$partner}->{storage}->existsChildNode($node)) {      if (!$self->{meta}->{$partner}->{storage}->existsChildNode($node)) {
358        $logger->critical( __PACKAGE__ . "->syncNodes: Could not reach \"$node\" at \"$partner\"." );        $logger->critical( __PACKAGE__ . "->syncNodes: Could not reach node \"$node\" at partner \"$partner\"." );
359        return;        return;
360      }      }
361        
362    }    }
363    
364    # TODO:    # TODO:
# Line 620  sub _syncNodes { Line 654  sub _syncNodes {
654  }  }
655    
656    
657    # refactor this as some core-function to do a generic dump resolving data-encapsulations of e.g. Set::Object
658  sub _dumpCompact {  sub _dumpCompact {
659    my $self = shift;    my $self = shift;
660    
# Line 683  sub _calcChecksum { Line 718  sub _calcChecksum {
718      #$logger->dump( __PACKAGE__ . ": " . $dump );      #$logger->dump( __PACKAGE__ . ": " . $dump );
719        
720    # calculate checksum from dump    # calculate checksum from dump
721        # note: the 32-bit integer hash from DBI seems
722        # to generate duplicates with small payloads already in ranges of hundreds of items/rows!!!
723        # try to avoid to use it or try to use it only for payloads greater than, hmmm, let's say 30 chars?
724        # (we had about 15 chars average per item (row))
725    
726      # md5-based fingerprint, base64 encoded (from Digest::MD5)      # md5-based fingerprint, base64 encoded (from Digest::MD5)
727        #my $checksum_cur = md5_base64($objdump) . '==';        $self->{node}->{$descent}->{checksum} = md5_base64($dump) . '==';
728      # 32-bit integer "hash" value (maybe faster?) (from DBI)      # 32-bit integer "hash" value (maybe faster?) (from DBI)
729        $self->{node}->{$descent}->{checksum} = DBI::hash($dump, 1);        #$self->{node}->{$descent}->{checksum} = DBI::hash($dump, 1);
730    
731    # signal good    # signal good
732    return 1;    return 1;

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.11

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