greenstone.org greenstone wiki greenstone trac planet greenstone

Changeset 16216

Show
Ignore:
Timestamp:
2008-06-26 17:34:51 (5 months ago)
Author:
mdewsnip
Message:

First attempt at a "-split_using_hierarchy_separator" option.

Files:

Legend:

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

    r16215 r16216  
    176176  text_t current_classifier_node_OID = ""; 
    177177  text_t current_metadata_value_filter = ""; 
     178  text_t classifier_node_separator = classifier_options["-split_using_hierarchy_separator"]; 
    178179  int classifier_node_indent = 0; 
    179180 
     
    192193    text_t selected_hlist_node_OID = output_hlist_classifier_nodes (current_classifier_node_OID, current_metadata_value_filter, "", classifier_options, args, collectproto, browsers, disp, outconvert, textout, logout); 
    193194 
    194     current_classifier_node_OID = selected_hlist_node_OID + "|"
     195    current_classifier_node_OID = selected_hlist_node_OID + classifier_node_separator
    195196  } 
    196197 
     
    215216  // Split the classifier node OID into its hierarchical parts, then remove any we've already dealt with (HLists) 
    216217  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  splitword (classifier_node_OID_sans_grouping.begin(), classifier_node_OID_sans_grouping.end(), classifier_node_separator, classifier_node_OID_parts_remaining); 
    218219  if (classifier_options["-use_hlist_at_top"] == "1") 
    219220  { 
     
    222223 
    223224  text_t classifier_node_metadata_value = classifier_node_OID_sans_grouping; 
    224   text_t classifier_node_metadata_value_filter = classifier_node_metadata_value + "|*"; 
     225  text_t classifier_node_metadata_value_filter = classifier_node_metadata_value + classifier_node_separator + "*"; 
    225226 
    226227  // If "-split_greenstone_dates" is on the metadata value and filter doesn't quite match the OID -- fix this 
     
    229230    classifier_node_metadata_value.replace("|", ""); 
    230231    classifier_node_metadata_value_filter = classifier_node_metadata_value; 
    231     classifier_node_metadata_value_filter += ((classifier_node_metadata_value_filter.size() == 8) ? "|*" : "*"); 
     232    if (classifier_node_metadata_value_filter.size() == 8) 
     233    { 
     234      classifier_node_metadata_value_filter += classifier_node_separator; 
     235    } 
     236    classifier_node_metadata_value_filter += "*"; 
    232237  } 
    233238 
     
    245250 
    246251    // Output the child classifier nodes 
    247     output_child_classifier_nodes (classifier_node_OID + "|", classifier_node_metadata_value, classifier_node_metadata_value_filter, classifier_node_indent, classifier_options, args, collectproto, browsers, disp, outconvert, textout, logout); 
     252    current_classifier_node_OID = classifier_node_OID + classifier_node_separator; 
     253    output_child_classifier_nodes (current_classifier_node_OID, classifier_node_metadata_value, classifier_node_metadata_value_filter, classifier_node_indent, classifier_options, args, collectproto, browsers, disp, outconvert, textout, logout); 
    248254 
    249255    // Get the document nodes at this level 
     
    270276{ 
    271277  text_tmap classifier_options; 
     278 
     279  // Default values 
     280  classifier_options["-split_using_hierarchy_separator"] = "|"; 
    272281 
    273282  // Split the classifier specification string by spaces 
     
    339348 
    340349    // Determine the label for the hlist classifier node from the metadata value 
    341     text_tarray hlist_metadata_value_parts; 
    342     splitchar (hlist_metadata_value.begin(), hlist_metadata_value.end(), '|', hlist_metadata_value_parts); 
     350    text_tlist hlist_metadata_value_parts; 
     351    text_t hlist_node_separator = classifier_options["-split_using_hierarchy_separator"]; 
     352    splitword (hlist_metadata_value.begin(), hlist_metadata_value.end(), hlist_node_separator, hlist_metadata_value_parts); 
    343353    text_t hlist_classifier_node_label = hlist_metadata_value_parts.front(); 
    344354 
     
    427437    classifier_node_indent++; 
    428438 
    429     upper_classifier_node_OID += "|"
     439    upper_classifier_node_OID += classifier_options["-split_using_hierarchy_separator"]
    430440    upper_classifier_node_labels_iterator++; 
    431441  } 
     
    464474    // We need to remove the current position from the metadata value to leave the child metadata value 
    465475    text_t child_metadata_value = hierarchical_metadata_value; 
    466     if (starts_with(hierarchical_metadata_value, classifier_node_hierarchical_metadata_value + "|")) 
    467     { 
    468       child_metadata_value = substr(hierarchical_metadata_value.begin() + (classifier_node_hierarchical_metadata_value + "|").size(), hierarchical_metadata_value.end()); 
     476    text_t child_node_separator = classifier_options["-split_using_hierarchy_separator"]; 
     477    if (starts_with(hierarchical_metadata_value, classifier_node_hierarchical_metadata_value + child_node_separator)) 
     478    { 
     479      child_metadata_value = substr(hierarchical_metadata_value.begin() + (classifier_node_hierarchical_metadata_value + child_node_separator).size(), hierarchical_metadata_value.end()); 
    469480    } 
    470481 
    471482    // Determine the label for the child classifier node from the metadata value 
    472     text_tarray child_metadata_value_parts; 
    473     splitchar (child_metadata_value.begin(), child_metadata_value.end(), '|', child_metadata_value_parts); 
     483    text_tlist child_metadata_value_parts; 
     484    splitword (child_metadata_value.begin(), child_metadata_value.end(), child_node_separator, child_metadata_value_parts); 
    474485    text_t child_classifier_node_label = child_metadata_value_parts.front(); 
    475486