source: trunk/gli/src/org/greenstone/gatherer/cdm/CollectionMeta.java@ 4675

Last change on this file since 4675 was 4675, checked in by jmt12, 21 years ago

Sunday's work

  • Property svn:keywords set to Author Date Id Revision
File size: 7.0 KB
Line 
1/**
2 *#########################################################################
3 *
4 * A component of the Gatherer application, part of the Greenstone digital
5 * library suite from the New Zealand Digital Library Project at the
6 * University of Waikato, New Zealand.
7 *
8 * <BR><BR>
9 *
10 * Author: John Thompson, Greenstone Digital Library, University of Waikato
11 *
12 * <BR><BR>
13 *
14 * Copyright (C) 1999 New Zealand Digital Library Project
15 *
16 * <BR><BR>
17 *
18 * This program is free software; you can redistribute it and/or modify
19 * it under the terms of the GNU General Public License as published by
20 * the Free Software Foundation; either version 2 of the License, or
21 * (at your option) any later version.
22 *
23 * <BR><BR>
24 *
25 * This program is distributed in the hope that it will be useful,
26 * but WITHOUT ANY WARRANTY; without even the implied warranty of
27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28 * GNU General Public License for more details.
29 *
30 * <BR><BR>
31 *
32 * You should have received a copy of the GNU General Public License
33 * along with this program; if not, write to the Free Software
34 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
35 *########################################################################
36 */
37
38
39
40
41
42
43/* GPL_HEADER */
44package org.greenstone.gatherer.cdm;
45/**************************************************************************************
46 * Title: Gatherer
47 * Description: The Gatherer: a tool for gathering and enriching a digital collection.
48 * Copyright: Copyright (c) 2001
49 * Company: The University of Waikato
50 * Written: /05/02
51 * Revised: 22/08/02 Revamped, Optimized and Commented.
52 **************************************************************************************/
53import org.greenstone.gatherer.cdm.Index;
54import org.greenstone.gatherer.cdm.Language;
55import org.greenstone.gatherer.util.Utility;
56/** This class encapsulates a single collection level metadata assignment, which constitutes a name, language and value.
57 * @author John Thompson, Greenstone Digital Library, University of Waikato
58 * @version 2.3
59 */
60public class CollectionMeta
61 implements Comparable {
62 /** A reference to the collection design manager for access to the language manager. */
63 private CollectionDesignManager manager = null;
64 /** The language of this metadata. Should be a two letter code. */
65 private Language language = null;
66 /** The name of the thing this metadata is assigned to, which may also refer to an Index or a Partition. */
67 private Object name = null;
68 /** The value of this metadata. */
69 private String value = null;
70 /** Constructor.
71 * @param name The object the metadata is assigned to as an <strong>Object</strong>.
72 * @param language The language of the metadata as a <strong>Language</strong>. Should be a two letter code.
73 * @param value The value of this metadata, as a <strong>String</strong>.
74 */
75 public CollectionMeta(CollectionDesignManager manager, Object name, Language language, String value) {
76 this.language = language;
77 this.manager = manager;
78 this.name = name;
79 this.value = value;
80 }
81 /** Method to compare two collection metadata objects to calculate their respective ordering.
82 * @param object The other metadata to compare to, as an <strong>Object</strong>.
83 * @return An <i>int</i> which is less than 0 if this object proceeds the given object, 0 if they are equal and greater than 0 otherwise.
84 * @see org.greenstone.gatherer.cdm.Language
85 */
86 public int compareTo(Object object) {
87 if(object instanceof CollectionMeta) {
88 CollectionMeta metadata = (CollectionMeta) object;
89 int result = name.toString().compareTo(metadata.getName().toString());
90 if(result == 0) {
91 Language other_language = metadata.getLanguage();
92 if(language != null && other_language != null) {
93 result = language.compareTo(metadata.getLanguage());
94 if(result == 0) {
95 return value.compareTo(metadata.getValue());
96 }
97 }
98 else if(language != null) {
99 return -1;
100 }
101 else if(other_language != null) {
102 return 1;
103 }
104 }
105 return result;
106 }
107 return toString().compareTo(object.toString());
108 }
109 /** Method to compare two collection metadata objects for equality.
110 * @param object The other metadata to compare to, as an <strong>Object</strong>.
111 * @return A <i>boolean</i> value of <i>true</i> if the object are equal, <i>false</i> otherwise.
112 */
113 public boolean equals(Object object) {
114 if(compareTo(object) == 0) {
115 return true;
116 }
117 return false;
118 }
119 /** Method to retrieve the value of language.
120 * @return The value of language as a <strong>Language</strong>.
121 */
122 public Language getLanguage() {
123 return language;
124 }
125 /** Method to retrieve the value of name.
126 * @return The value of name as an <strong>Object</strong>.
127 */
128 public Object getName() {
129 return name;
130 }
131 /** Method to retrieve the value of value (well great choice of name there).
132 * @return The value of value as a <strong>String</strong>.
133 */
134 public String getValue() {
135 return value;
136 }
137 /** Method to print out this class as it would appear within the collection configuration file.
138 * @return A <strong>String</strong> containing the text value of this class.
139 */
140 public String toString() {
141 String text = "collectionmeta ";
142 if(name instanceof Index) {
143 text = text + ".";
144 Index index = (Index)name;
145 text = text + index.toStringConfig() + " ";
146 }
147 else if(name instanceof SubIndex) {
148 text = text + ".";
149 SubIndex index = (SubIndex)name;
150 text = text + index.toString() + " ";
151 }
152 else {
153 text = text + name.toString() + " ";
154 }
155 if(language != null && manager.languages.size() > 0 && !manager.languages.isDefaultLanguage(language)) {
156 text = text + "[l=" + language.getCode() + "] ";
157 }
158 text = text + "\"" + Utility.encodeGreenstone(value) + "\"\n";
159 return text;
160 }
161 /** Used to update the contents of this collection level metadata to the given 'new' values.
162 * @param name The new name of the metadata, as a <strong>Object</strong>.
163 * @param language The new <strong>Language</strong> of the metadata.
164 * @param value And the value the metadata is assigned, as a <strong>String</strong>.
165 */
166 public void update(Object name, Language language, String value) {
167 this.name = name;
168 this.language = language;
169 this.value = value;
170 }
171
172 /** Change the value of value.
173 * @param value the new value as a String.
174 */
175 public void setValue(String value) {
176 this.value = value;
177 }
178
179 /** Ensure this is a valid metadata entry by checking that the value is non-null and non-zero length (after having removed whitespace).
180 * @return <i>true</i> if this metadata has a valid value and should be added to the config, <i>false</i> otherwise.
181 */
182 public boolean valid() {
183 return(value != null && value.trim().length() > 0);
184 }
185}
186
187
188
189
Note: See TracBrowser for help on using the repository browser.