Changeset 58


Ignore:
Timestamp:
11/25/05 13:42:01 (19 years ago)
Author:
thauvin
Message:
  • add file_need_parse function
File:
1 edited

Legend:

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

    • Property cvs2svn:cvs-rev changed from 1.6 to 1.7
    r57 r58  
    6262 
    6363 
    64  
    6564sub parse_files { 
    6665    my ($self) = @_; 
     
    7271            } 
    7372 
    74             if ($self->{status}->SectionExists($file)) { 
    75             } else { 
    76                 $self->loging(0, "%s is new files", $file); 
    77                 $self->{status}->AddSection($file); 
     73            if (! $self->file_need_parse($file)) { 
     74                next; 
    7875            } 
    7976 
    80              
    8177            my ($datatype, $destfile) = $self->{obsdata}->build_dest_filename($file, $self->{datatype}); 
    8278            $self->loging(0, "%s file, datatype %s, destination %s", 
     
    8581                $destfile || '(none)', 
    8682            ); 
     83 
    8784        } 
    8885        close($dirhandle); 
     
    9289} 
    9390 
     91sub file_need_parse { 
     92    my ($self, $file) = @_; 
     93 
     94    my @filestats = stat("$self->{dir}/$file"); 
     95             
     96    if ($self->{status}->SectionExists($file)) { 
     97        $self->loging(0, "File %s found in status, checking...", $file); 
     98        my ($mtimeok, $sizeok) = (0, 0); 
     99        my $olddatatype = $self->{status}->val($file, 'datatype'); 
     100        my $oldmtime = $self->{status}->val($file, 'mtime'); 
     101        my $oldsize = $self->{status}->val($file, 'size'); 
     102        if ($oldmtime) { 
     103            if ($oldmtime == $filestats[9]) { 
     104                $mtimeok = 1; 
     105            } elsif ($oldmtime > $filestats[9]) { 
     106                $self->loging(3,  
     107                    "Wahou, %s is older than my reference: %d => %d",  
     108                    $oldmtime, 
     109                    $filestats[9], 
     110                ); 
     111            } else { 
     112                # Nothing special to say, file is simply more recent     
     113            } 
     114        } 
     115        if (defined($oldsize)) { 
     116            if ($oldsize == $filestats[7]) { 
     117                $sizeok = 1; 
     118            } else { 
     119                # Nothing to say, size differ 
     120            } 
     121        } 
     122         
     123        if ($olddatatype) { 
     124            if (! ($sizeok && $mtimeok)) { 
     125                $self->loging(3, "File %s allready processed but has changed:%s%s, skipping", 
     126                    $file, 
     127                    ($sizeok ? "" : sprintf(" size %d => %d", $oldsize, $filestats[7])), 
     128                    ($sizeok ? "" : sprintf(" mtime %d => %d", $oldmtime, $filestats[9])), 
     129                ); 
     130            } 
     131            $self->loging(0, "%s has been allready processed: was %s", $file, $olddatatype); 
     132            return 0; 
     133        } else { 
     134            if ($sizeok && $mtimeok) { 
     135                $self->loging(0, "%s was not take into acount, no change skipping", $file); 
     136                return 0; 
     137            } else { 
     138                $self->loging(0, "%s file has not been processed, but change, retrying", $file); 
     139                return 1; 
     140            } 
     141        } 
     142         
     143    } else { 
     144        $self->loging(0, "%s is new files", $file); 
     145        $self->{status}->AddSection($file); 
     146        $self->{status}->newval($file, 'mtime', $filestats[9]); 
     147        $self->{status}->newval($file, 'size', $filestats[7]); 
     148        return 1; 
     149    } 
     150} 
     151 
    941521; 
Note: See TracChangeset for help on using the changeset viewer.