Changeset 21453

Show
Ignore:
Timestamp:
14.01.2010 16:08:59 (9 years ago)
Author:
ak19
Message:

Dr Bainbridge improved some code by adding the helper method collection_is_collect_group().

Location:
main/trunk/greenstone2/runtime-src/src/colservr
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/runtime-src/src/colservr/collectset.cpp

    r21415 r21453  
    251251} 
    252252 
     253bool collectset::collection_is_collect_group (const text_t& collect_dir) 
     254{ 
     255  text_t is_collect_group_str = "false"; 
     256  text_t collect_cfg = filename_cat(collect_dir, "etc", "collect.cfg"); 
     257 
     258  if (file_exists(collect_cfg)) { 
     259    char *collect_cfgc = collect_cfg.getcstr(); 
     260    ifstream confin(collect_cfgc); 
     261 
     262    if (confin) { 
     263      text_tarray cfgline; 
     264 
     265      while (read_cfg_line(confin, cfgline) >= 0) { 
     266    if (cfgline.size() == 2) { 
     267      text_t key = cfgline[0]; 
     268      cfgline.erase(cfgline.begin()); 
     269      if (key == "collectgroup") { 
     270        is_collect_group_str = cfgline[0]; 
     271        break; 
     272      } 
     273    } 
     274      } 
     275 
     276      confin.close(); 
     277    } 
     278 
     279    delete []collect_cfgc; 
     280  } 
     281 
     282  bool is_collect_group = (is_collect_group_str == "true") ? true : false; 
     283 
     284  return is_collect_group; 
     285} 
     286 
     287 
    253288// add_collection sets up the collectionserver and calls 
    254289// add_collectserver 
     
    257292                 const text_t& collecthome)  
    258293{ 
    259  
    260   this->remove_collection(collection); 
    261    
    262294  // read config file to see if built with mg, mgpp, or lucene 
    263295  text_t buildtype = "mg"; // mg is default 
    264296  text_t infodbtype = "gdbm"; // gdbm is default 
    265297 
     298  this->remove_collection(collection); 
     299   
    266300  collectserver *cserver = NULL; 
    267  
    268   text_tarray cfgline; 
    269   text_t key; 
    270301 
    271302  text_t build_cfg = filename_cat(collecthome, collection, "index", "build.cfg"); 
     
    275306     
    276307    if (confin) { 
     308      text_tarray cfgline; 
     309 
    277310      while (read_cfg_line(confin, cfgline) >= 0) { 
    278311    if (cfgline.size() == 2) { 
    279       key = cfgline[0]; 
     312      text_t key = cfgline[0]; 
    280313      cfgline.erase(cfgline.begin()); 
    281314      if (key == "buildtype") { 
     
    407440  else { 
    408441    // see if it is a collectgroup col 
    409  
    410  
    411     // This routine essentially exists twice in the code now (see add_collection_group) 
    412     // factor out as support routine 
    413  
    414     text_t collect_cfg = filename_cat(collecthome, collection, "etc", "collect.cfg"); 
    415     if (file_exists (collect_cfg)) { 
    416       char *collect_cfgc = collect_cfg.getcstr(); 
    417       ifstream confin(collect_cfgc);      
    418  
    419       text_t is_collect_group = "false"; 
    420  
    421       if (confin) { 
    422     while (read_cfg_line(confin, cfgline) >= 0) { 
    423       if (cfgline.size() == 2) { 
    424         key = cfgline[0]; 
    425          
    426         cfgline.erase(cfgline.begin()); 
    427         if (key == "collectgroup") { 
    428           is_collect_group = cfgline[0]; 
    429         } 
    430       } 
    431     } 
    432     confin.close(); 
    433       } 
    434       delete []collect_cfgc; 
    435        
    436       if (is_collect_group != "true") { 
    437     // an unbuilt leaf collection 
    438     return; 
    439       } 
    440  
    441       // by this point we know we will need a cserver 
    442       cserver = new collectserver(); 
    443  
    444     } 
    445     else { 
    446       // no collect.cfg => filter it out from list of collections added 
    447       return; 
    448     } 
    449   } 
    450  
    451   // inform collection server and everything it contains about its 
    452   // collection name 
    453   cserver->configure ("collection", collection); 
    454   cserver->configure ("gsdlhome", gsdlhome); 
    455   cserver->configure ("collecthome", collecthome);  
    456   cservers.addcollectserver (cserver); 
     442    text_t this_collect_dir = filename_cat(collecthome, collection); 
     443    if (collection_is_collect_group(this_collect_dir)) { 
     444    // by this point we know we will need a cserver 
     445    cserver = new collectserver(); 
     446    } 
     447    // else not a collect group, or there was no collect.cfg  
     448    // => leave cserver as NULL so it will not be added into cservers 
     449  } 
     450 
     451  if (cserver != NULL) { 
     452    // inform collection server and everything it contains about its 
     453    // collection name 
     454    cserver->configure ("collection", collection); 
     455    cserver->configure ("gsdlhome", gsdlhome); 
     456    cserver->configure ("collecthome", collecthome);  
     457    cservers.addcollectserver (cserver); 
     458  } 
    457459} 
    458460 
     
    488490 
    489491  // need to read collect.cfg for 'collectgroup' as class hasn't been initialised through 'init' yet 
    490   text_t is_collect_group; 
    491   text_tarray cfgline; 
    492   text_t key; 
    493   text_t collect_cfg = filename_cat(collect_group_dir, "etc", "collect.cfg"); 
    494   char *collect_cfgc = collect_cfg.getcstr(); 
    495   ifstream confin(collect_cfgc); 
    496  
    497   if (confin) { 
    498     while (read_cfg_line(confin, cfgline) >= 0) { 
    499       if (cfgline.size() == 2) { 
    500     key = cfgline[0]; 
    501     cfgline.erase(cfgline.begin()); 
    502     if (key == "collectgroup") { 
    503       is_collect_group = cfgline[0]; 
    504       break; 
    505     } 
    506       } 
    507     } 
    508     confin.close(); 
    509   } 
    510   delete []collect_cfgc; 
    511  
    512   if (is_collect_group == "true") { 
     492  if (collection_is_collect_group(collect_group_dir)) { 
    513493    if (read_dir (collect_group_dir, group)) { 
    514494       
  • main/trunk/greenstone2/runtime-src/src/colservr/collectset.h

    r21324 r21453  
    8787      return cservers.getcollectserver(collection); 
    8888    } 
     89 
     90 protected: 
     91  bool collection_is_collect_group (const text_t& collect_dir); 
    8992}; 
    9093