Changeset 16216


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

First attempt at a "-split_using_hierarchy_separator" option.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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
Note: See TracChangeset for help on using the changeset viewer.