greenstone.org greenstone wiki greenstone trac planet greenstone

Changeset 16215

Show
Ignore:
Timestamp:
2008-06-26 17:03:14 (7 months 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 ("|").

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • 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