Changeset 16215


Ignore:
Timestamp:
2008-06-26T17:03:14+12:00 (16 years ago)
Author:
mdewsnip
Message:

Tidied up the grouping stuff some more and changed the grouping node separator to "." to make it distinct from the hierarchy separators ("|").

File:
1 edited

Legend:

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

    r16214 r16215  
    183183    text_t selected_grouping_node_OID = output_hlist_classifier_nodes (current_classifier_node_OID, current_metadata_value_filter, "substr(value,1,1)", classifier_options, args, collectproto, browsers, disp, outconvert, textout, logout);
    184184
    185     current_classifier_node_OID = selected_grouping_node_OID + "|";
     185    current_classifier_node_OID = selected_grouping_node_OID + ".";
    186186    current_metadata_value_filter = selected_grouping_node_OID + "*";
    187187  }
     
    197197  // args["dcn"] may have been modified by output_hlist_classifier_nodes() above
    198198  text_t classifier_node_OID = args["dcn"];
    199   text_t classifier_node_metadata_value = classifier_node_OID;
     199
     200  // If grouping is enabled remove the grouping node bit from the start of the OID
     201  text_t classifier_node_OID_sans_grouping = classifier_node_OID;
     202  if (classifier_options["-group_by_first_character"] == "1")
     203  {
     204    text_t::iterator grouping_node_separator = findchar (classifier_node_OID.begin(), classifier_node_OID.end(), '.');
     205    if (grouping_node_separator != classifier_node_OID.end())
     206    {
     207      classifier_node_OID_sans_grouping = substr (grouping_node_separator + 1, classifier_node_OID.end());
     208    }
     209    else
     210    {
     211      classifier_node_OID_sans_grouping = "";
     212    }
     213  }
     214
     215  // Split the classifier node OID into its hierarchical parts, then remove any we've already dealt with (HLists)
     216  text_tlist classifier_node_OID_parts_remaining;
     217  splitchar(classifier_node_OID_sans_grouping.begin(), classifier_node_OID_sans_grouping.end(), '|', classifier_node_OID_parts_remaining);
     218  if (classifier_options["-use_hlist_at_top"] == "1")
     219  {
     220    classifier_node_OID_parts_remaining.pop_front();
     221  }
     222
     223  text_t classifier_node_metadata_value = classifier_node_OID_sans_grouping;
    200224  text_t classifier_node_metadata_value_filter = classifier_node_metadata_value + "|*";
    201 
    202   // Split the classifier node OID into its components, then remove any we've already dealt with
    203   text_tlist classifier_node_OID_parts_remaining;
    204   splitchar(classifier_node_OID.begin(), classifier_node_OID.end(), '|', classifier_node_OID_parts_remaining);
    205   if (classifier_options["-group_by_first_character"] == "1")
    206   {
    207     classifier_node_OID_parts_remaining.pop_front();
    208 
    209     // Update classifier_node_metadata_value (and consequently the filter) to remove the grouping node component
    210     joinchar (classifier_node_OID_parts_remaining, '|', classifier_node_metadata_value);
    211     classifier_node_metadata_value_filter = classifier_node_metadata_value + "|*";
    212   }
    213   if (classifier_options["-use_hlist_at_top"] == "1")
    214   {
    215     classifier_node_OID_parts_remaining.pop_front();
    216   }
    217225
    218226  // If "-split_greenstone_dates" is on the metadata value and filter doesn't quite match the OID -- fix this
Note: See TracChangeset for help on using the changeset viewer.