Changeset 19806
- Timestamp:
- 2009-06-11T14:35:45+12:00 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
gsdl/trunk/runtime-src/src/colservr/collectset.cpp
r19788 r19806 237 237 text_t infodbtype = "gdbm"; // gdbm is default 238 238 239 collectserver *cserver = NULL; 240 239 241 text_tarray cfgline; 240 242 text_t key; 241 243 242 244 text_t build_cfg = filename_cat(collecthome, collection, "index", "build.cfg"); 243 if (!file_exists (build_cfg)) { 244 // don't add in unbuilt collections 245 return; 246 } 247 char *build_cfgc = build_cfg.getcstr(); 248 ifstream confin(build_cfgc); 249 250 if (confin) { 251 while (read_cfg_line(confin, cfgline) >= 0) { 252 if (cfgline.size() == 2) { 253 key = cfgline[0]; 254 cfgline.erase(cfgline.begin()); 255 if (key == "buildtype") { 256 buildtype = cfgline[0]; 245 if (file_exists (build_cfg)) { 246 char *build_cfgc = build_cfg.getcstr(); 247 ifstream confin(build_cfgc); 248 249 if (confin) { 250 while (read_cfg_line(confin, cfgline) >= 0) { 251 if (cfgline.size() == 2) { 252 key = cfgline[0]; 253 cfgline.erase(cfgline.begin()); 254 if (key == "buildtype") { 255 buildtype = cfgline[0]; 256 } 257 if (key == "infodbtype") { 258 infodbtype = cfgline[0]; 259 } 257 260 } 258 if (key == "infodbtype") { 259 infodbtype = cfgline[0]; 260 } 261 } 262 } 263 confin.close(); 264 } 265 delete []build_cfgc; 266 267 collectserver *cserver = new collectserver(); 268 269 // Create a dbclass of the correct type 270 dbclass *db_ptr = NULL; 261 } 262 confin.close(); 263 } 264 delete []build_cfgc; 265 266 cserver = new collectserver(); 267 268 // Create a dbclass of the correct type 269 dbclass *db_ptr = NULL; 271 270 272 271 #ifdef USE_SQLITE 273 if (infodbtype == "sqlite")274 {275 276 277 278 279 280 281 282 }272 if (infodbtype == "sqlite") 273 { 274 sqlitedbclass *sql_db_ptr = new sqlitedbclass(); 275 db_ptr = sql_db_ptr; 276 277 // add a sql browse filter 278 sqlbrowsefilterclass *sqlbrowsefilter = new sqlbrowsefilterclass(); 279 sqlbrowsefilter->set_sql_db_ptr(sql_db_ptr); 280 cserver->add_filter (sqlbrowsefilter); 281 } 283 282 #endif 284 283 285 284 #ifdef USE_MSSQL 286 if (infodbtype == "mssql")287 {288 289 290 291 292 293 294 295 }285 if (infodbtype == "mssql") 286 { 287 mssqldbclass *mssql_db_ptr = new mssqldbclass(); 288 db_ptr = mssql_db_ptr; 289 290 // add a sql browse filter 291 sqlbrowsefilterclass *sqlbrowsefilter = new sqlbrowsefilterclass(); 292 sqlbrowsefilter->set_sql_db_ptr(mssql_db_ptr); 293 cserver->add_filter (sqlbrowsefilter); 294 } 296 295 #endif 297 296 298 // Use GDBM if the infodb type is empty or not one of the values above 299 if (db_ptr == NULL) 300 { 301 db_ptr = new gdbmclass(); 302 } 303 304 // add a null filter 305 filterclass *filter = new filterclass (); 306 cserver->add_filter (filter); 297 // Use GDBM if the infodb type is empty or not one of the values above 298 if (db_ptr == NULL) { 299 db_ptr = new gdbmclass(); 300 } 301 302 // add a null filter 303 filterclass *filter = new filterclass (); 304 cserver->add_filter (filter); 305 306 // add a browse filter 307 browsefilterclass *browsefilter = new browsefilterclass(); 308 browsefilter->set_db_ptr(db_ptr); 309 cserver->add_filter (browsefilter); 310 311 if (buildtype == "mg") { 312 mgsearch = new mgsearchclass(); 313 314 // add a query filter 315 mgqueryfilterclass *queryfilter = new mgqueryfilterclass(); 316 queryfilter->set_db_ptr(db_ptr); 317 queryfilter->set_textsearchptr (mgsearch); 318 cserver->add_filter (queryfilter); 319 320 // add a mg source 321 mgsourceclass *mgsource = new mgsourceclass (); 322 mgsource->set_db_ptr(db_ptr); 323 mgsource->set_textsearchptr (mgsearch); 324 cserver->add_source (mgsource); 325 } 326 else if (buildtype == "mgpp") { 327 mgppsearch = new mgppsearchclass(); 328 329 // add a query filter 330 mgppqueryfilterclass *queryfilter = new mgppqueryfilterclass(); 331 queryfilter->set_db_ptr(db_ptr); 332 queryfilter->set_textsearchptr (mgppsearch); 333 cserver->add_filter (queryfilter); 307 334 308 // add a browse filter 309 browsefilterclass *browsefilter = new browsefilterclass(); 310 browsefilter->set_db_ptr(db_ptr); 311 cserver->add_filter (browsefilter); 312 313 if (buildtype == "mg") { 314 mgsearch = new mgsearchclass(); 315 316 // add a query filter 317 mgqueryfilterclass *queryfilter = new mgqueryfilterclass(); 318 queryfilter->set_db_ptr(db_ptr); 319 queryfilter->set_textsearchptr (mgsearch); 320 cserver->add_filter (queryfilter); 321 322 // add a mg source 323 mgsourceclass *mgsource = new mgsourceclass (); 324 mgsource->set_db_ptr(db_ptr); 325 mgsource->set_textsearchptr (mgsearch); 326 cserver->add_source (mgsource); 327 } 328 else if (buildtype == "mgpp") { 329 mgppsearch = new mgppsearchclass(); 330 331 // add a query filter 332 mgppqueryfilterclass *queryfilter = new mgppqueryfilterclass(); 333 queryfilter->set_db_ptr(db_ptr); 334 queryfilter->set_textsearchptr (mgppsearch); 335 cserver->add_filter (queryfilter); 335 // add a mg source 336 mgsourceclass *mgsource = new mgsourceclass (); 337 mgsource->set_db_ptr(db_ptr); 338 mgsource->set_textsearchptr (mgppsearch); 339 cserver->add_source (mgsource); 340 } 341 else if (buildtype == "lucene") { 342 lucenesearch = new lucenesearchclass(); 343 lucenesearch->set_gsdlhome(gsdlhome); 344 345 // add a query filter 346 lucenequeryfilterclass *queryfilter = new lucenequeryfilterclass(); 347 queryfilter->set_db_ptr(db_ptr); 348 queryfilter->set_textsearchptr (lucenesearch); 349 cserver->add_filter (queryfilter); 336 350 337 // add a mg source 338 mgsourceclass *mgsource = new mgsourceclass (); 339 mgsource->set_db_ptr(db_ptr); 340 mgsource->set_textsearchptr (mgppsearch); 341 cserver->add_source (mgsource); 342 } 343 else if (buildtype == "lucene") { 344 lucenesearch = new lucenesearchclass(); 345 lucenesearch->set_gsdlhome(gsdlhome); 346 347 // add a query filter 348 lucenequeryfilterclass *queryfilter = new lucenequeryfilterclass(); 349 queryfilter->set_db_ptr(db_ptr); 350 queryfilter->set_textsearchptr (lucenesearch); 351 cserver->add_filter (queryfilter); 351 // add a lucene source 352 lucenesourceclass *lucenesource = new lucenesourceclass (); 353 lucenesource->set_db_ptr(db_ptr); 354 lucenesource->set_textsearchptr (lucenesearch); 355 cserver->add_source (lucenesource); 356 } 357 else { 358 cerr << "Warning: unrecognized buildtype" << buildtype << endl; 359 } 360 361 } 362 else { 363 // see if it is a collectgroup col 364 365 366 // This routine essentially exists twice in the code now (see add_collection_group) 367 // factor out as support routine 368 369 text_t collect_cfg = filename_cat(collecthome, collection, "etc", "collect.cfg"); 370 if (file_exists (collect_cfg)) { 371 char *collect_cfgc = collect_cfg.getcstr(); 372 ifstream confin(collect_cfgc); 373 374 text_t is_collect_group = "false"; 375 376 if (confin) { 377 while (read_cfg_line(confin, cfgline) >= 0) { 378 if (cfgline.size() == 2) { 379 key = cfgline[0]; 380 381 cfgline.erase(cfgline.begin()); 382 if (key == "collectgroup") { 383 is_collect_group = cfgline[0]; 384 } 385 } 386 } 387 confin.close(); 388 } 389 delete []collect_cfgc; 352 390 353 // add a lucene source 354 lucenesourceclass *lucenesource = new lucenesourceclass (); 355 lucenesource->set_db_ptr(db_ptr); 356 lucenesource->set_textsearchptr (lucenesearch); 357 cserver->add_source (lucenesource); 391 if (is_collect_group != "true") { 392 // an unbuilt leaf collection 393 return; 394 } 395 396 // by this point we know we will need a cserver 397 cserver = new collectserver(); 398 399 } 400 else { 401 // no collect.cfg => filter it out from list of collections added 402 return; 403 } 358 404 } 359 405
Note:
See TracChangeset
for help on using the changeset viewer.