| 219 | | output_child_classifier_nodes (classifier_node_OID, classifier_node_metadata_value, current_metadata_value_filter, classifier_node_indent, classifier_options, args, collectproto, browsers, disp, outconvert, textout, logout); |
|---|
| | 229 | output_child_classifier_nodes (classifier_node_OID, "", current_metadata_value_filter, classifier_node_indent, classifier_options, args, collectproto, browsers, disp, outconvert, textout, logout); |
|---|
| 229 | | text_t metadata_value_filter = classifier_node_metadata_value + "|*"; |
|---|
| 230 | | output_child_classifier_nodes (classifier_node_OID, classifier_node_metadata_value, metadata_value_filter, classifier_node_indent, classifier_options, args, collectproto, browsers, disp, outconvert, textout, logout); |
|---|
| | 239 | 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); |
|---|
| 318 | | text_t metadata_value = (*metadata_value_iterator).OID; |
|---|
| 319 | | |
|---|
| 320 | | // Is this metadata value hierarchical? |
|---|
| 321 | | text_t::iterator hierarchy_split_position = findchar(metadata_value.begin(), metadata_value.end(), '|'); |
|---|
| 322 | | if (hierarchy_split_position != metadata_value.end()) |
|---|
| 323 | | { |
|---|
| 324 | | // Yes, so use the first part of the hierarchy only |
|---|
| 325 | | metadata_value = substr(metadata_value.begin(), hierarchy_split_position); |
|---|
| 326 | | } |
|---|
| 327 | | |
|---|
| 328 | | // Create a node for this metadata value if we haven't seen it before |
|---|
| 329 | | if (hlist_classifier_nodes.find(metadata_value) == hlist_classifier_nodes.end()) |
|---|
| 330 | | { |
|---|
| 331 | | hlist_classifier_nodes[metadata_value] = 0; |
|---|
| | 327 | text_t hierarchical_metadata_value = split_metadata_value ((*metadata_value_iterator).OID, classifier_options); |
|---|
| | 328 | |
|---|
| | 329 | // Assume for now we're always at the top |
|---|
| | 330 | text_t hlist_metadata_value = hierarchical_metadata_value; |
|---|
| | 331 | |
|---|
| | 332 | // Determine the label for the hlist classifier node from the metadata value |
|---|
| | 333 | text_tarray hlist_metadata_value_parts; |
|---|
| | 334 | splitchar (hlist_metadata_value.begin(), hlist_metadata_value.end(), '|', hlist_metadata_value_parts); |
|---|
| | 335 | text_t hlist_classifier_node_label = hlist_metadata_value_parts.front(); |
|---|
| | 336 | |
|---|
| | 337 | // Create a node for this value if we haven't seen it before |
|---|
| | 338 | if (hlist_classifier_nodes.find(hlist_classifier_node_label) == hlist_classifier_nodes.end()) |
|---|
| | 339 | { |
|---|
| | 340 | hlist_classifier_nodes[hlist_classifier_node_label] = 0; |
|---|
| 451 | | text_t child_metadata_value = metadata_value; |
|---|
| 452 | | if (starts_with(metadata_value, classifier_node_metadata_value + "|")) |
|---|
| 453 | | { |
|---|
| 454 | | child_metadata_value = substr(metadata_value.begin() + (classifier_node_metadata_value + "|").size(), metadata_value.end()); |
|---|
| | 461 | text_t child_metadata_value = hierarchical_metadata_value; |
|---|
| | 462 | if (starts_with(hierarchical_metadata_value, classifier_node_hierarchical_metadata_value + "|")) |
|---|
| | 463 | { |
|---|
| | 464 | child_metadata_value = substr(hierarchical_metadata_value.begin() + (classifier_node_hierarchical_metadata_value + "|").size(), hierarchical_metadata_value.end()); |
|---|
| | 511 | text_t dynamicclassifieraction::split_metadata_value (text_t metadata_value, text_tmap classifier_options) |
|---|
| | 512 | { |
|---|
| | 513 | text_t hierarchical_metadata_value = metadata_value; |
|---|
| | 514 | |
|---|
| | 515 | // Add hierarchy separators into Greenstone date values (YYYYMMDD -> YYYY|MM|DD) |
|---|
| | 516 | if (classifier_options["-split_greenstone_dates"] == "1") |
|---|
| | 517 | { |
|---|
| | 518 | if (metadata_value.size() == 4 || metadata_value.size() == 6 || metadata_value.size() == 8) |
|---|
| | 519 | { |
|---|
| | 520 | // Add year |
|---|
| | 521 | hierarchical_metadata_value = substr(metadata_value.begin(), metadata_value.begin() + 4); |
|---|
| | 522 | if (metadata_value.size() == 6 || metadata_value.size() == 8) |
|---|
| | 523 | { |
|---|
| | 524 | // Add month |
|---|
| | 525 | hierarchical_metadata_value += "|" + substr(metadata_value.begin() + 4, metadata_value.begin() + 6); |
|---|
| | 526 | if (metadata_value.size() == 8) |
|---|
| | 527 | { |
|---|
| | 528 | // Add day |
|---|
| | 529 | hierarchical_metadata_value += "|" + substr(metadata_value.begin() + 6, metadata_value.begin() + 8); |
|---|
| | 530 | } |
|---|
| | 531 | } |
|---|
| | 532 | } |
|---|
| | 533 | } |
|---|
| | 534 | |
|---|
| | 535 | return hierarchical_metadata_value; |
|---|
| | 536 | } |
|---|
| | 537 | |
|---|
| | 538 | |
|---|