Changeset 14754


Ignore:
Timestamp:
2007-11-01T12:04:20+13:00 (16 years ago)
Author:
qq6
Message:

updated convert script

File:
1 edited

Legend:

Unmodified
Added
Removed
  • greenstone3/trunk/bin/script/convert_coll_from_gs2.pl

    r13917 r14754  
    128128    my $collwriter = new XML::Writer(OUTPUT => $colloutput, NEWLINES => 1);
    129129   
    130     $collwriter->startTag('collectionConfig', 'xmlns:gsf'=>"http://www.greenstone.org/greenstone3/schema/ConfigFormat", 'xmlns:xsl'=>'http://www.w3.org/1999/XSL/Transform');
     130    $collwriter->startTag('CollectionConfig', 'xmlns:gsf'=>"http://www.greenstone.org/greenstone3/schema/ConfigFormat", 'xmlns:xsl'=>'http://www.w3.org/1999/XSL/Transform');
    131131   
    132132    #output the collection metadata to the collectionConfig file
     
    134134   
    135135    my $creator = $collectcfg->{'creator'};
    136     &output_metadata($collwriter, 'creator', $creator);
     136    &output_metadata($collwriter,'default', 'creator', $creator);
    137137    my $public =$collectcfg->{'public'};
    138     &output_metadata($collwriter, 'public', $public);
     138    &output_metadata($collwriter,'default', 'public', $public);
     139   
    139140    $collwriter->endTag('metadataList');
    140141
     
    169170    my $numdocs = $buildcfg->{'numdocs'};
    170171    $buildwriter->startTag('metadataList');
    171     &output_metadata($buildwriter, 'numDocs', $numdocs);
    172     &output_metadata($buildwriter, 'buildType', $buildtype);
     172    &output_metadata($buildwriter,'', 'numDocs', $numdocs);
     173    &output_metadata($buildwriter,'', 'buildType', $buildtype);
    173174    $buildwriter->endTag('metadataList');
    174175   
     
    191192        $indexmap->{$k} = $v;
    192193        push @indexlist, $k;
    193         if ($first) {
    194         $defaultindex = $v;
     194        if ($first == 1) {
     195        $defaultindex = $k;
    195196        $first = 0;
    196197        }   
     
    202203    if (defined $collectcfg->{'defaultindex'}) {
    203204    $defaultindex = $collectcfg->{'defaultindex'};
    204     $defaultindex = $indexmap->{$defaultindex};
     205    #$defaultindex = $indexmap->{$defaultindex};
    205206    }
    206207   
     
    209210    my @levellist = ();
    210211    my $default_search_level = "";
     212    my $default_search_level_shortname = "";
    211213    my $default_retrieve_level = "Sec";
    212214    $first = 1;
     
    219221        push @levellist, $k;
    220222        if ($first) {
    221             $default_search_level = $v;
     223            $default_search_level = $k;
     224            $default_search_level_shortname = $v;
    222225            $first = 0;
    223226        }
     
    227230    if (defined $collectcfg->{'defaultlevel'}) {
    228231        $default_search_level = $collectcfg->{'defaultlevel'};
    229         $default_search_level = $levelmap->{$default_search_level};
     232        #$default_search_level = $levelmap->{$default_search_level};
     233        $default_search_level_shortname = $levelmap->{$default_search_level};
    230234    }
    231235    if (defined $buildcfg->{'textlevel'}) {
     
    237241
    238242    #output the search stuff to coll cfg
    239     $collwriter->startTag('search');
     243    $collwriter->startTag('search','type'=>$buildtype);
    240244    foreach my $i (keys %$indexmap) {
    241245    $collwriter->startTag('index', 'name'=>$i);
     
    244248    foreach my $lang (keys %{$collectionmeta->{$indexdisplay}}) {
    245249        my $value = $collectionmeta->{$indexdisplay}->{$lang};
    246         output_display($collwriter, 'name', $lang, $value);
     250        output_display($collwriter, 'name', $lang, $i);
    247251    }
    248252    $collwriter->endTag('index');
     253    }
     254
     255    #output the defaultIndex to coll cfg
     256    $collwriter->emptyTag('defaultIndex','name'=>$defaultindex);
     257
     258    #indexSubcollection
     259    my $indexsubcollections = $collectcfg->{'indexsubcollections'};
     260   
     261    if (defined $indexsubcollections) {
     262    my $indexsubcollections_t= $collectcfg->{'indexsubcollections'};
     263    foreach my $i ( @$indexsubcollections_t) {
     264        $collwriter->startTag('indexSubcollection', 'name'=>$i);
     265        &output_display($collwriter, 'name', $defaultlang, $i);
     266        $collwriter->endTag('indexSubcollection');
     267    }
     268    }
     269
     270    #subcollection
     271    my $subcollection = $collectcfg->{'subcollection'};
     272    if (defined $subcollection){
     273    foreach my $entry (keys %$subcollection){
     274        my $value = $subcollection->{$entry};
     275        $collwriter->emptyTag('subcollection','filter'=>$value,'name'=>$entry);
     276    }
     277    }
     278
     279    #indexlanguage
     280    my $languages = $collectcfg->{'languages'};
     281    if (defined $languages){
     282    my $languages_t = $collectcfg->{'languages'};
     283    foreach my $i (@$languages_t){
     284        $collwriter->startTag('indexLanguage','name'=>$i);
     285         &output_display($collwriter, 'name', $defaultlang, $i);
     286        $collwriter->endTag('indexLanguage');
     287    }
    249288    }
    250289
     
    261300        $collwriter->endTag('level');
    262301    }
    263     }
     302    $collwriter->emptyTag('defaultLevel', 'name'=>$default_search_level);
     303    }
     304   
     305    # add in the search type
     306    if (defined $format->{'SearchTypes'}){
     307    $collwriter->startTag('format', 'name'=>"searchType");
     308    $collwriter->charactersXML($format->{'SearchTypes'});
     309    $collwriter->endTag('format');
     310    }
     311
    264312    # add in the format stuff
    265313    if (defined $format->{'SearchVList'}) {
     
    276324   
    277325    $collwriter->endTag('search');
    278    
     326
     327    # import plugins
     328 
     329    my $plugins = $collectcfg->{'plugin'};
     330   
     331    if (defined $plugins){
     332    $collwriter->startTag('import');
     333    $collwriter->startTag('pluginList');
     334    foreach my $pl (@$plugins) {
     335        my ($pluginname) = @$pl[0];
     336        $collwriter->startTag('plugin','name'=>$pluginname);
     337
     338        for (my $i=1; $i<scalar(@$pl); $i++) {
     339        my $arg =@$pl[$i];
     340        if ($arg =~ /^-/){
     341            my $option_name=@$pl[$i];
     342            my $option_value=@$pl[$i+1];
     343            if (defined $option_value){
     344            if ($option_value =~ /^-/){
     345                $collwriter->startTag('option','name'=>$option_name);
     346                $collwriter->endTag('option');
     347            }else{
     348                $collwriter->startTag('option','name'=>$option_name,'value'=>$option_value);
     349                $collwriter->endTag('option');
     350            }
     351            }
     352        }
     353        }
     354        $collwriter->endTag('plugin');
     355    }
     356    $collwriter->endTag('pluginList');
     357    $collwriter->endTag('import');
     358    }
     359
    279360    $buildwriter->startTag('serviceRackList');
    280361   
     
    288369    }
    289370
     371 #indexSubcollectionList
     372
     373    my $subcollectionmap = $buildcfg->{'subcollectionmap'};
     374    my $firstsubcollection = 1;
     375    my $defaultsubcollection = "";
     376    my @subcollist;
     377    my $subcolmap = {};
     378
     379    if (defined $buildcfg->{'subcollectionmap'}) {
     380    my $subcolmap_t = $buildcfg->{'subcollectionmap'};
     381
     382    foreach my $l (@$subcolmap_t) {
     383        my @pair = split(/->/, $l);
     384        $subcolmap->{$pair[0]} = $pair[1];
     385        push @subcollist, $pair[0];
     386        if ($firstsubcollection==1) {
     387        $defaultsubcollection = $pair[1];
     388        $firstsubcollection = 0;
     389        }   
     390    }
     391
     392    }
     393
     394
    290395    #do the retrieve service
    291396    $buildwriter->startTag('serviceRack', 'name'=>"GS2".$service_type."Retrieve");
     
    294399    } elsif ($buildtype eq "mg") {
    295400    $buildwriter->emptyTag('defaultIndex', 'shortname'=>$defaultindex);
    296    
    297     }
     401    }
     402   
     403    if ((defined $defaultsubcollection) && ($defaultsubcollection ne "")) {
     404    $buildwriter->emptyTag('defaultIndexSubcollection', 'shortname'=>$defaultsubcollection);
     405    }
     406
    298407    if (defined $indexstem) {
    299408    $buildwriter->emptyTag('indexStem', 'name'=>$indexstem);
     
    362471        if ($horizontalAtTop) {
    363472        $buildwriter->emptyTag('classifier', 'name'=>$name, 'content'=>$content, 'horizontalAtTop'=>'true');
     473
    364474        } else {
    365475        $buildwriter->emptyTag('classifier', 'name'=>$name, 'content'=>$content);
     
    367477       
    368478       
    369         $collwriter->startTag('classifier', 'name'=>$name);
     479       # $collwriter->startTag('classifier', 'name'=>$name);
     480        $collwriter->startTag('classifier', 'name'=>$classname);
     481        for (my $i=1; $i<scalar(@$cl); $i++) {
     482        my $arg =@$cl[$i];
     483        if ($arg =~ /^-/){
     484            my $option_name=@$cl[$i];
     485            my $option_value=@$cl[$i+1];
     486            if (defined $option_value){
     487            if ($option_value=~ /^-/){
     488                $collwriter->startTag('option','name'=>$option_name);
     489                $collwriter->endTag('option');
     490            }else{
     491                $collwriter->startTag('option','name'=>$option_name,'value'=>$option_value);
     492                $collwriter->endTag('option');
     493            }
     494            }
     495        }
     496        }
     497
    370498        my $vlist = $name."VList";
    371499        my $hlist = $name."HList";
     
    411539    # do the search service
    412540    $buildwriter->startTag('serviceRack', 'name'=>'GS2'.$service_type.'Search');
    413     $buildwriter->emptyTag('defaultIndex', 'shortname'=>$defaultindex);
     541    #$buildwriter->emptyTag('defaultIndex', 'shortname'=>$defaultindex);
    414542    $buildwriter->startTag('indexList');
    415543    #for each index
     
    444572       
    445573    # level info
    446     $buildwriter->emptyTag('defaultLevel', 'shortname'=>$default_search_level);
     574    $buildwriter->emptyTag('defaultLevel', 'shortname'=>$default_search_level_shortname);
    447575    $buildwriter->emptyTag('defaultGDBMLevel', 'shortname'=>$default_retrieve_level);
    448576    $buildwriter->startTag('levelList');
     
    474602    }
    475603   
    476 
    477    
     604    #indexLanguageList
     605    my $indexlanguages = $collectcfg->{'languages'};
     606    my $firstindexlanguage = 1;
     607    my $defaultindexlanguage_shortname;
     608    if (defined $indexlanguages){
     609    $buildwriter->startTag('indexLanguageList');
     610    my $languages_t = $collectcfg->{'languages'};
     611    foreach my $i (@$languages_t){
     612        $buildwriter->startTag('indexLanguage','name'=>$i);
     613         &output_display($buildwriter, 'name', $i, $i);
     614        $buildwriter->endTag('indexLanguage');
     615        if ($firstindexlanguage==1){
     616        $defaultindexlanguage_shortname = $i;
     617        $firstindexlanguage=0;
     618        }
     619    }
     620    $buildwriter->endTag('indexLanguageList');
     621    $buildwriter->startTag('defaultIndexLanguage', 'name'=>$defaultindexlanguage_shortname,'shortname'=>$defaultindexlanguage_shortname);
     622    $buildwriter->endTag('defaultIndexLanguage');
     623    }
     624
     625  #  my $defaultsubcollection = "";
     626   # my @subcollist;
     627
     628    if (scalar(@subcollist)>0){
     629
     630    $buildwriter->startTag('indexSubcollectionList');
     631    foreach my $i (keys %$subcolmap){
     632        my $short_name = $subcolmap->{$i};
     633        $buildwriter->emptyTag('indexSubcollection', 'name'=>$i, 'shortname'=>$short_name);
     634    }
     635
     636    $buildwriter->endTag('indexSubcollectionList');
     637    $buildwriter->emptyTag('defaultIndexSubcollection', 'shortname'=>$defaultsubcollection);
     638    }
     639
     640   
    478641    $buildwriter->endTag('serviceRack');
    479642   
     
    484647    # collection
    485648    $collwriter->emptyTag('replaceListRef', 'id'=>'gs2-standard');
    486     $collwriter->endTag('collectionConfig');
     649    $collwriter->endTag('CollectionConfig');
    487650    $collwriter->end();
    488651    $buildwriter->end();
     
    494657
    495658sub output_metadata {
    496     my ($writer, $metaname,  $metavalue) = @_;
    497     $writer->startTag('metadata',  'name'=>$metaname);
     659    my ($writer, $lang, $metaname,  $metavalue) = @_;
     660    $lang = 'en' if $lang eq 'default';
     661    if ($lang ne ""){
     662    $writer->startTag('metadata', 'lang'=>$lang, 'name'=>$metaname);
     663    }else{
     664    $writer->startTag('metadata', 'name'=>$metaname);
     665    }
    498666    $writer->characters($metavalue);
    499667    $writer->endTag('metadata');
     
    506674    ($lang) = $lang =~ /\[l=(.*)\]/;
    507675    }
     676
    508677    $writer->startTag('displayItem', 'name'=>$name, 'lang'=>$lang);
    509678    $writer->characters($value);
Note: See TracChangeset for help on using the changeset viewer.