Changeset 95


Ignore:
Timestamp:
12/03/05 02:19:31 (19 years ago)
Author:
thauvin
Message:
  • merge class
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/soft/ObsData/ObsData/Repository.pm

    • Property cvs2svn:cvs-rev changed from 1.32 to 1.33
    r93 r95  
    304304# Sub data function: 
    305305 
     306sub data_lastcheck { 
     307    my ($self, $datafile) = @_; 
     308    my $last_process = $self->{status}->val($self->{archivefile}, "data_processtime_$datafile"); 
     309    if ($last_process) { 
     310        $self->loging(0, "%s/%s has been already processed at %s", 
     311            $self->{archivefile}, 
     312            $datafile, 
     313            scalar(localtime($last_process)), 
     314        ); 
     315    } 
     316    $last_process 
     317} 
     318 
    306319sub get_data_dest { 
    307320    my ($self, $datafile) = @_; 
     
    328341    $self->load_archive or return 0; 
    329342    my $ltime = time; 
    330      
     343 
     344    $self->{status}->newval( 
     345        $self->{archivefile}, 
     346        "data_processtime_$datafile", 
     347        $ltime 
     348    ); 
     349    $self->{status}->newval( 
     350        $self->{archivefile}, 
     351        "data_processversion_$datafile", 
     352        $ObsData::VERSION 
     353    ); 
     354 
     355    $self->{status}->SetParameterComment( 
     356        $self->{archivefile},  
     357        "data_processtime_$datafile", 
     358        scalar(localtime($ltime)) . 
     359        ", $ObsData::VERSION: $ObsData::CVSREV, $ObsData::Repository::CVSREV", 
     360    ); 
     361    
    331362    if (!$destfile) { 
    332363        $self->loging(3, 
     
    374405    } 
    375406 
    376         $self->{status}->newval( 
    377         $self->{archivefile}, 
    378         "data_processtime_$datafile", 
    379         $ltime 
    380     ); 
    381     $self->{status}->newval( 
    382         $self->{archivefile}, 
    383         "data_processversion_$datafile", 
    384         $ObsData::VERSION 
    385     ); 
    386  
    387     $self->{status}->SetParameterComment( 
    388         $self->{archivefile},  
    389         "data_processtime_$datafile", 
    390         scalar(localtime($ltime)) . 
    391         ", $ObsData::VERSION: $ObsData::CVSREV, $ObsData::Repository::CVSREV", 
    392     ); 
    393  
    394407    return 1; 
    395408} 
     
    403416 
    404417    foreach my $data ($self->list_archive) { 
     418        if ($self->data_lastcheck($data)) { 
     419            $self->loging(0, 
     420                "%s/%s has allready processed, skipping", 
     421                $self->{archivefile}, 
     422                $data 
     423            ); 
     424            next; 
     425        } 
    405426        $self->extract_data($data, $self->get_data_dest($data)); 
    406427    } 
     
    411432} 
    412433 
    413 package ObsData::Repository::dir::archive::data; 
    414  
    415 our @ISA = qw(ObsData::Repository); 
    416  
    417 sub new { 
    418     my ($class, $infos, %param) = @_; 
    419  
    420     my $or = ObsData::Repository->new($infos, %param); 
    421     # dir directory to parse 
    422     # patern glob() over file 
    423     $or->{datafile} or die "No datafile given"; 
    424  
    425     bless($or, $class); 
    426 } 
    427  
    428 #sub DESTROY { 
    429 #    my ($self) = @_; 
    430 #    $self->loging(0, "Destroy ObsData::Repository::archive for %s", ref($self)); 
    431 #    $self->SUPER::DESTROY(); 
    432 #} 
    433  
    434 # TODO Define return code for this function, storing result somewhere to 
    435 # pass to child. 
    436 sub data_need_parse { 
    437     my ($self) = @_; 
    438     my $last_process = $self->{status}->val($self->{archivefile}, "data_processtime_$self->{datafile}"); 
    439     if ($last_process) { 
    440         $self->loging(0, "%s/%s has been already processed at %s, skipping", 
    441             $self->{archivefile}, 
    442             $self->{datafile}, 
    443             scalar(localtime($last_process)), 
    444         ); 
    445         return; 
    446     } 
    447     return 1; 
    448 } 
    449  
    450 sub dispatch { 
    451     my ($self) = @_; 
    452  
    453     $self->data_need_parse or return; 
    454      
    455     my ($datatype, $destfile) = $self->{obsdata}->build_dest_filename( 
    456         $self->{datafile},  
    457         $self->{datatype} 
    458     ); 
    459      
    460     $self->loging(0, "%s/%s file, datatype %s, destination %s", 
    461         $self->{archivefile}, 
    462         $self->{datafile}, 
    463         $datatype || '(none)', 
    464         $destfile || '(none)', 
    465     ); 
    466  
    467     my $ltime = time; 
    468      
    469     if (!$datatype) { 
    470         $self->loging(3, 
    471             "I don't know what to do of %s/%s", 
    472             $self->{archivefile}, 
    473             $self->{datafile} 
    474         ); 
    475     } elsif ($destfile) { 
    476         $self->loging(0, 
    477             "Extracting %s/%s to %s", $self->{archivefile}, 
    478             $self->{datafile}, 
    479             $destfile 
    480         ); 
    481  
    482         my ($dirname) = $destfile =~ m!(?:(.*)/)?(.*)$!; #! vim syntax 
    483         if ($dirname && ! -d $dirname) { 
    484             $self->loging(0, "Creating directory %s", $dirname); 
    485             if( ! File::Path::mkpath($dirname)) {  
    486                 $self->loging( 
    487                     4, "Can't create directory %s",  
    488                     $dirname 
    489                 ); 
    490                 return; 
    491             } 
    492         } 
    493  
    494         if ($self->{Oarchive}->extract($self->{datafile}, $destfile)) { 
    495             $self->{status}->newval($self->{archivefile}, "data_type_$self->{datafile}", $datatype); 
    496             $self->{status}->newval($self->{archivefile}, "data_dest_$self->{datafile}", $destfile); 
    497             $self->loging( 
    498                 1, "Extraction of %s/%s done as %s (%s)", 
    499                 $self->{archivefile}, 
    500                 $self->{datafile}, 
    501                 $destfile, 
    502                 $datatype 
    503             ); 
    504                  
    505         } else { 
    506             $self->loging( 
    507                 4, "Can't extract %s/%s to %s: %s", 
    508                 $self->{archivefile}, $self->{datafile}, $destfile, 
    509                 $self->{Oarchive}->error, 
    510             ); 
    511             return; 
    512         } 
    513          
    514     } else { 
    515         $self->loging(3, 
    516             "%s/%s has type %s but no destination", 
    517             $self->{archivefile}, $self->{datafile}, $datatype 
    518         ); 
    519     } 
    520  
    521     $self->{status}->newval( 
    522         $self->{archivefile}, 
    523         "data_processtime_$self->{datafile}", 
    524         $ltime 
    525     ); 
    526     $self->{status}->newval( 
    527         $self->{archivefile}, 
    528         "data_processversion_$self->{datafile}", 
    529         $ObsData::VERSION 
    530     ); 
    531  
    532     $self->{status}->SetParameterComment( 
    533         $self->{archivefile},  
    534         "data_processtime_$self->{datafile}", 
    535         scalar(localtime($ltime)) . ", $ObsData::VERSION: $ObsData::CVSREV, $ObsData::Repository::CVSREV", 
    536     ); 
    537 } 
    538  
    5394341; 
Note: See TracChangeset for help on using the changeset viewer.