source: trunk/gli/src/org/greenstone/gatherer/metadata/MetadataElement.java@ 8123

Last change on this file since 8123 was 8123, checked in by mdewsnip, 20 years ago

More improvements to the new metadata code, including hfile writing.

  • Property svn:keywords set to Author Date Id Revision
File size: 3.5 KB
Line 
1package org.greenstone.gatherer.metadata;
2
3
4import java.io.File;
5import org.greenstone.gatherer.util.XMLTools;
6import org.w3c.dom.*;
7
8
9/** This class represents one Metadata element */
10public class MetadataElement
11{
12 private String metadata_element_name_full = null;
13 private Element metadata_element_element = null;
14 private MetadataValueTreeModel metadata_value_tree_model = null;
15
16
17 public MetadataElement(String metadata_element_name_full, Element metadata_element_element)
18 {
19 this.metadata_element_name_full = metadata_element_name_full;
20 this.metadata_element_element = metadata_element_element;
21 this.metadata_value_tree_model = new MetadataValueTreeModel(this);
22 }
23
24
25 public MetadataValueTreeNode addMetadataValue(String metadata_value)
26 {
27 return metadata_value_tree_model.addMetadataValue(metadata_value);
28 }
29
30
31 public String getAttribute(String attribute_name, String language_code)
32 {
33 // Some extracted metadata elements may not be in ex.mds, and so have no attributes
34 if (metadata_element_element == null) {
35 return null;
36 }
37
38 Element parent_element = metadata_element_element;
39 boolean language_matches = false;
40
41 NodeList language_elements_nodelist = metadata_element_element.getElementsByTagName("Language");
42 for (int i = 0; i < language_elements_nodelist.getLength(); i++) {
43 Element current_language_element = (Element) language_elements_nodelist.item(i);
44 String current_language_element_code = current_language_element.getAttribute("code");
45 if (current_language_element_code.equals(language_code)) {
46 // Found language; use it for the next step
47 parent_element = current_language_element;
48 language_matches = true;
49 break;
50 }
51 }
52
53 NodeList attribute_elements_nodelist = parent_element.getElementsByTagName("Attribute");
54 for (int i = 0; i < attribute_elements_nodelist.getLength(); i++) {
55 Element current_attribute_element = (Element) attribute_elements_nodelist.item(i);
56 String current_attribute_element_name = current_attribute_element.getAttribute("name");
57 if (!current_attribute_element_name.equals(attribute_name)) {
58 // Move on to the next Attribute element if the name doesn't match
59 continue;
60 }
61
62 // Check if the language matches
63 String current_attribute_element_language = current_attribute_element.getAttribute("language");
64 if (language_matches || current_attribute_element_language.equals(language_code)) {
65 // Found attribute; returns its value
66 return XMLTools.getElementTextValue(current_attribute_element);
67 }
68 }
69
70 return null;
71 }
72
73
74 public MetadataValueTreeModel getMetadataValueTreeModel()
75 {
76 return metadata_value_tree_model;
77 }
78
79
80 public MetadataValueTreeNode getMetadataValueTreeNode(String metadata_value)
81 {
82 return metadata_value_tree_model.getMetadataValueTreeNode(metadata_value);
83 }
84
85
86 public String getFullName()
87 {
88 return metadata_element_name_full;
89 }
90
91
92 public String getNamespace()
93 {
94 return MetadataTools.getMetadataSetNamespace(metadata_element_name_full);
95 }
96
97
98 public String getName()
99 {
100 return MetadataTools.getMetadataElementName(metadata_element_name_full);
101 }
102
103
104 public boolean isExtractedMetadata()
105 {
106 return getNamespace().equals(MetadataSetManager.EXTRACTED_METADATA_NAMESPACE);
107 }
108
109
110 /** This is used to display the element in the metadata value table */
111 public String toString()
112 {
113 return metadata_element_name_full;
114 }
115
116
117 public void writeHierarchyFile(File hierarchy_file)
118 {
119 metadata_value_tree_model.writeHierarchyFile(hierarchy_file);
120 }
121}
Note: See TracBrowser for help on using the repository browser.