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

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

More new metadata code: metadata elements now have definitions and comments.

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