Ignore:
Timestamp:
1999-12-13T15:54:11+13:00 (25 years ago)
Author:
davidb
Message:

Support for cross collection searching (CCS)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl/src/recpt/queryaction.cpp

    r800 r828  
    2828/*
    2929   $Log$
     30   Revision 1.32  1999/12/13 02:54:11  davidb
     31   Support for cross collection searching (CCS)
     32
    3033   Revision 1.31  1999/12/05 21:22:33  sjboddie
    3134   tidied up cross-collection searching a bit
     
    551554
    552555  text_tset collections;
    553   text_t arg_cc = args["cc"];
    554   decode_cgi_arg (arg_cc);
    555   splitchar (arg_cc.begin(), arg_cc.end(), ',', collections);
     556  text_t arg_c = args["c"];
     557
     558  // get collect info for 'c'
     559  bool found_arg_c = false;
     560  recptprotolistclass::iterator rprotolist_here = protos->begin();
     561  const recptprotolistclass::iterator rprotolist_end = protos->end(); 
     562  while (rprotolist_here != rprotolist_end)
     563    {
     564      if ((*rprotolist_here).p != NULL)
     565    {
     566      (*rprotolist_here).p->get_collectinfo (arg_c, cinfo, err, logout);
     567      if (err == noError && (cinfo.buildDate > 0))
     568        {
     569          text_tarray::iterator collist_here = cinfo.ccsCols.begin();
     570          const text_tarray::iterator collist_end = cinfo.ccsCols.end();
     571          while (collist_here != collist_end) {
     572        collections.insert(*collist_here);
     573        collist_here++;
     574          }
     575          found_arg_c = true;
     576          break;
     577        }
     578       
     579    }
     580      rprotolist_here ++;
     581    }
     582
     583  if (!found_arg_c)
     584    {
     585      // if no collection is found, let ccs be across all collections
     586      rprotolist_here = protos->begin();
     587      while (rprotolist_here != rprotolist_end)
     588    {
     589      if ((*rprotolist_here).p != NULL)
     590        {
     591          (*rprotolist_here).p->get_collectinfo (arg_c, cinfo, err, logout);
     592          if (err == noError && (cinfo.buildDate > 0))
     593
     594        {
     595          text_tarray collist;
     596          (*rprotolist_here).p->get_collection_list (collist, err, logout);
     597
     598          text_tarray::iterator collist_here = collist.begin();
     599          text_tarray::iterator collist_end = collist.end();
     600          while (collist_here != collist_end)
     601            {
     602              collections.insert(*collist_here);
     603              collist_here++;
     604            }       
     605        }
     606        }
     607      rprotolist_here ++;
     608    }
     609    }
    556610
    557611  textout << outconvert << disp << "_query:header_\n"
     
    570624      << "<tr><td>\n";
    571625 
    572   recptprotolistclass::iterator rprotolist_here = protos->begin();
    573   recptprotolistclass::iterator rprotolist_end = protos->end();
     626  rprotolist_here = protos->begin();
    574627  while (rprotolist_here != rprotolist_end) {
    575628    if ((*rprotolist_here).p != NULL) {
     
    583636     
    584637      (*rprotolist_here).p->get_collectinfo (*collist_here, cinfo, err, logout);
    585       //      if (err == noError && cinfo.isPublic && (cinfo.buildDate > 0)) {
    586638      if (err == noError && (cinfo.buildDate > 0)) {
    587639       
     640        text_tset::const_iterator t = collections.find (*collist_here);
     641        if (t == collections.end()) {collist_here++; continue;}
     642
    588643        (*rprotolist_here).p->get_filteroptions (*collist_here, frequest, fresponse, err, logout);
    589644        if (err == noError) {
     
    629684
    630685          text_tset::const_iterator t = collections.find (*collist_here);
    631           if (t != collections.end()) textout << " checked";
     686          if (t != collections.end()) textout << " checked"; // already know this is true
    632687
    633688          textout << outconvert
Note: See TracChangeset for help on using the changeset viewer.