Changeset 26696 for gs3-extensions


Ignore:
Timestamp:
2013-01-11T18:30:22+13:00 (11 years ago)
Author:
davidb
Message:

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

File:
1 edited

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");
Note: See TracChangeset for help on using the changeset viewer.