Changeset 26696 for gs3-extensions

Show
Ignore:
Timestamp:
11.01.2013 18:30:22 (6 years ago)
Author:
davidb
Message:

Now obtains the correct frame number when exporting a document to an Expeditee frame.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • gs3-extensions/html-to-expeditee/trunk/src/perllib/cgiactions/ExpediteeExportAction.pm

    r26629 r26696  
    5151{ 
    5252        "generate-frame"     => { 'compulsory-args' => [ "fn", "json" ], 
    53                   'optional-args'   => [] },  
     53                  'optional-args'   => ['assoc'] },  
    5454}; 
    5555 
     
    7373    my $gsdlhome  = $self->{'gsdlhome'}; 
    7474 
     75    my $assocfilepath = $self->{'assoc'}; 
     76     
    7577    my $site = $self->{'site'}; 
    7678    my $collect_dir = $gsdl_cgi->get_collection_dir($site); 
     
    7981     
    8082    my $json_str_unicode = $self->{'json'};  
    81      
    82     my $found = $self->{'found'}; 
    8383     
    8484     if (!Encode::is_utf8( $json_str_unicode )) { 
     
    9797 
    9898    my $expeditee_frame_io = new ExpediteeFrameIO($output_dir,"kgas1A"); 
     99     $expeditee_frame_io->buildFrame($exp_frame_tree); 
    99100     
    100      $expeditee_frame_io->buildFrame($exp_frame_tree); 
     101    my $last = 0;   #check if new frame is replacing/will be the last frame in the frameset. 
     102      
     103     if($fn == -1){ 
     104        #get last frame number and add 1. 
     105        #BUT what if a matching frame already exists for this document but we just haven't 
     106        #created a frameID metadata for that document yet - sol'n: at this stage, just use 
     107        #original code of reading file names 
     108         
     109        my $export_dir = &util::filename_cat($collect_dir,$collect,"export"); 
     110        my $frameInf = "$export_dir\\frame.inf"; 
     111        my $getFn = ""; 
     112        my @files; 
     113         
     114        opendir DIR, $output_dir or die "cannot open output directory $output_dir: $!"; 
     115        @files = readdir DIR; 
     116        closedir DIR; 
     117         
     118        my $found = 0; 
     119        my $frameNumString; 
     120        for my $file(@files){ 
     121            if($file =~ m/\d/){ 
     122                 
     123                my $fullFile = "$export_dir\\$file"; 
     124                open FILE, $fullFile or die $!; 
     125                my @lines = <FILE>; 
     126                my $numLines = scalar (@lines); 
     127                my $counter = 1; 
     128                 
     129                for my $line(@lines){ 
     130                     
     131                    if($line eq "T \@assocfilepath $assocfilepath\n"){ 
     132                        $frameNumString = $fullFile; 
     133                         
     134                        #extract frame number out of file name 
     135                        my @getFrameNumArray = split('\\\\',$frameNumString); 
     136                        @getFrameNumArray = reverse(@getFrameNumArray); 
     137                         
     138                        $fn = $getFrameNumArray[0]; 
     139                         
     140                        $found = 1; 
     141                         
     142                        if($counter == $numLines){ 
     143                            $last = 1; 
     144                        } 
     145                    } 
     146                     
     147                    $counter = $counter + 1; 
     148                } 
     149                 
     150                close(FILE); 
     151            } 
     152        } 
     153         
     154        unless($found){ 
     155            #try to get frame number from frame.inf. 
     156            if(-e $frameInf){ 
     157                 
     158                open FRAME_INF, $frameInf or die $!; 
     159                my @lines = <FRAME_INF>; 
     160                 
     161                $fn = $lines[0]; 
     162                 
     163                #get number from string 
     164                $fn =~ s/[^0-9]//g; 
     165                $fn = $fn + 1; 
     166                 
     167                $last = 1; 
     168            }else{ 
     169                printf "$frameInf not found\n"; 
     170                $fn = 1; 
     171                $last = 1; 
     172            } 
     173        } 
     174 
     175     } 
     176      
     177      
    101178      
    102179     if($expeditee_frame_io->saveFrame("$fn.exp")){ 
    103         #need to determine if $fn is followed by another number or $fn is the last number in the frameset. 
    104       
    105         #if $fn is last number, write out next free frame num 
    106         unless($found){ 
    107             #write out next free frame num 
    108             $expeditee_frame_io->saveLastFrameNumber($fn); 
     180         
     181        printf "*** $fn"; 
     182         
     183        if($last){ 
     184            #update last frame number 
     185            $expeditee_frame_io->saveLastFrameNumber($fn,$collect); 
    109186        } 
    110                  
    111         #otherwise just carry on. 
    112187         
    113         $gsdl_cgi->generate_message("Item Exported to Expeditee $fn"); 
     188        $gsdl_cgi->generate_message("Document Exported to Expeditee $fn"); 
    114189     }else{ 
    115190        $gsdl_cgi->generate_error("Failed to save frame number $fn");