Changeset 15941


Ignore:
Timestamp:
2008-06-09T17:15:24+12:00 (16 years ago)
Author:
mdewsnip
Message:

(Adding dynamic classifiers) Added a new "metadata value filter" argument to the SQL browse filter requests, in order to support hierarchical dynamic classifiers.

Location:
gsdl/trunk/src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • gsdl/trunk/src/colservr/sqlbrowsefilter.cpp

    r15836 r15941  
    110110  {
    111111    text_t metadata_element_name = "";
     112    text_t metadata_value_filter = "";
    112113    OptionValue_tarray::const_iterator options_iterator = request.filterOptions.begin();
    113114    while (options_iterator != request.filterOptions.end())
     
    117118    metadata_element_name = (*options_iterator).value;
    118119      }
     120      if ((*options_iterator).name == "MetadataValueFilter")
     121      {
     122    metadata_value_filter = (*options_iterator).value;
     123      }
    119124      options_iterator++;
    120125    }
    121126
    122     text_tarray metadata_values = sql_db_ptr->get_metadata_values (metadata_element_name);
     127    text_tarray metadata_values = sql_db_ptr->get_metadata_values (metadata_element_name, metadata_value_filter);
    123128
    124129    // Create a map from metadata value to ResultDocInfo_t, to remove duplicate values and obtain occurrence counts
  • gsdl/trunk/src/lib/sqldbclass.h

    r15836 r15941  
    4848
    4949  // returns array of values
    50   virtual text_tarray get_metadata_values (const text_t &metadata_element_name) = 0;
     50  virtual text_tarray get_metadata_values (const text_t &metadata_element_name,
     51                       const text_t &metadata_value_filter) = 0;
    5152};
    5253
  • gsdl/trunk/src/lib/sqlitedbclass.cpp

    r15849 r15941  
    193193
    194194// returns array of values
    195 text_tarray sqlitedbclass::get_metadata_values (const text_t &metadata_element_name)
     195text_tarray sqlitedbclass::get_metadata_values (const text_t &metadata_element_name,
     196                        const text_t &metadata_value_filter)
    196197{
    197198  text_tarray metadata_values;
     
    205206  // Get the entries in the "document_metadata" table where the element matches that specified
    206207  text_t sql_cmd = "SELECT value FROM document_metadata WHERE element='" + sqlite_safe(metadata_element_name) + "'";
     208
     209  // Add value filter, if one has been defined
     210  if (metadata_value_filter != "")
     211  {
     212    sql_cmd += " AND value LIKE '" + metadata_value_filter + "'";
     213  }
     214
    207215  vector<text_tmap> sql_results;
    208216  if (!sqlgetarray(sql_cmd, sql_results) || sql_results.size() == 0)
  • gsdl/trunk/src/lib/sqlitedbclass.h

    r15849 r15941  
    6060
    6161  // returns array of values
    62   text_tarray get_metadata_values (const text_t &metadata_element_name);
     62  text_tarray get_metadata_values (const text_t &metadata_element_name,
     63                   const text_t &metadata_value_filter);
    6364
    6465  // returns true on success
  • gsdl/trunk/src/protocol/recptprototools.cpp

    r15836 r15941  
    251251
    252252
    253 bool get_metadata_values (const text_t metadata_element_name, const text_t &collection,
    254               recptproto *collectproto, FilterResponse_t &response, ostream &logout)
     253bool get_metadata_values (const text_t metadata_element_name, const text_t metadata_value_filter,
     254              const text_t &collection, recptproto *collectproto,
     255              FilterResponse_t &response, ostream &logout)
    255256{
    256257  response.clear();
     
    267268  request_option.value = metadata_element_name;
    268269  request.filterOptions.push_back (request_option);
     270  request_option.name = "MetadataValueFilter";
     271  request_option.value = metadata_value_filter;
     272  request.filterOptions.push_back (request_option);
    269273
    270274  assert (collectproto != NULL);
  • gsdl/trunk/src/protocol/recptprototools.h

    r15836 r15941  
    6868           ostream &logout);
    6969
    70 bool get_metadata_values (const text_t metadata_element_name, const text_t &collection,
    71               recptproto *collectproto, FilterResponse_t &response, ostream &logout);
     70bool get_metadata_values (const text_t metadata_element_name, const text_t metadata_value_filter,
     71              const text_t &collection, recptproto *collectproto,
     72              FilterResponse_t &response, ostream &logout);
    7273
    7374bool get_documents_with_metadata_value (const text_t metadata_element_name, const text_t metadata_value,
Note: See TracChangeset for help on using the changeset viewer.