1 package org.gnomekr.potron.data;
2
3 import java.io.Serializable;
4 import java.util.ArrayList;
5 import java.util.List;
6 import java.util.Set;
7 import java.util.StringTokenizer;
8
9 import org.apache.commons.lang.StringUtils;
10 import org.apache.commons.lang.builder.EqualsBuilder;
11 import org.apache.commons.lang.builder.HashCodeBuilder;
12 import org.apache.commons.lang.builder.ToStringBuilder;
13 import org.gnomekr.potron.parser.ParserEntry;
14
15 /***
16 * Entry.java
17 * @author Xavier Cho
18 * @version $Revision 1.1 $ $Date: 2005/09/11 05:49:44 $
19 * @hibernate.class table = "POTRON_TEMPL_ENTRY"
20 * @hibernate.cache usage = "nonstrict-read-write"
21 */
22 public class Entry implements Serializable {
23
24 private static final long serialVersionUID = 4346200335447050646L;
25
26 private long id = -1;
27 private String occurrences;
28 private String key;
29 private String pluralKey;
30 private String comment;
31 private Template template;
32 private Set<TranslatedEntry> translatedEntries;
33
34 public Entry() {
35 }
36
37 /***
38 * @param entry
39 */
40 public Entry(ParserEntry entry, Template template) {
41 if (entry != null) {
42 this.occurrences = entry.getReferences();
43 this.key = entry.getMsgId();
44 this.pluralKey = entry.getMsgIdPlural();
45 this.comment = entry.getComment();
46 }
47 this.template = template;
48 }
49
50 /***
51 * @return Returns the id.
52 * @hibernate.id
53 * column = "entry_id"
54 * length = "20"
55 * unsaved-value = "-1"
56 * generator-class = "native"
57 * @hibernate.generator-param
58 * name = "sequence"
59 * value = "POTRON_SEQ_ENTRY"
60 */
61 public long getId() {
62 return id;
63 }
64
65 /***
66 * @return
67 * @hibernate.property
68 * column = "entry_name"
69 * update = "false"
70 * not-null = "true"
71 * type = "text"
72 */
73 public String getKey() {
74 return key;
75 }
76
77 /***
78 * @return
79 * @hibernate.property
80 * column = "entry_pl_name"
81 * update = "false"
82 * not-null = "false"
83 * type = "text"
84 */
85 public String getPluralKey() {
86 return pluralKey;
87 }
88
89 /***
90 * @return
91 * @hibernate.property
92 * column = "entry_refs"
93 * length = "100"
94 * update = "true"
95 * not-null = "false"
96 */
97 public String getOccurrences() {
98 return occurrences;
99 }
100
101 public List<String> getOccurrencesList() {
102 List<String> list = new ArrayList<String>();
103
104 if (occurrences != null) {
105 StringTokenizer tokenizer = new StringTokenizer(occurrences);
106 while (tokenizer.hasMoreTokens()) {
107 list.add(tokenizer.nextToken());
108 }
109 }
110
111 return list;
112 }
113
114 /***
115 * @return
116 * @hibernate.property
117 * column = "comment"
118 * update = "true"
119 * not-null = "true"
120 * type = "text"
121 */
122 public String getComment() {
123 return comment;
124 }
125
126 /***
127 * @return
128 * @hibernate.many-to-one
129 * class = "org.gnomekr.potron.data.Template"
130 * column = "template_id"
131 */
132 public Template getTemplate() {
133 return template;
134 }
135
136 /***
137 * @return Returns the translatedEntries.
138 * @hibernate.collection-one-to-many
139 * class = "org.gnomekr.potron.data.TranslatedEntry"
140 * @hibernate.collection-key
141 * column = "entry_id"
142 * @hibernate.set
143 * lazy = "true"
144 * inverse = "true"
145 * cascade = "all-delete-orphan"
146 */
147 public Set<TranslatedEntry> getTranslatedEntries() {
148 return translatedEntries;
149 }
150
151 public int getLetterCount() {
152 return key.length();
153 }
154
155 public int getWordCount() {
156 return StringUtils.split(key).length;
157 }
158
159 /***
160 * @param comment
161 */
162 public void setComment(String comment) {
163 this.comment = comment;
164 }
165
166 /***
167 * @param key
168 */
169 public void setKey(String key) {
170 this.key = key;
171 }
172
173 /***
174 * @param pluralKey
175 */
176 public void setPluralKey(String pluralKey) {
177 this.pluralKey = pluralKey;
178 }
179
180 /***
181 * @param id The id to set.
182 */
183 public void setId(long id) {
184 this.id = id;
185 }
186
187 /***
188 * @param occurrences
189 */
190 public void setOccurrences(String references) {
191 this.occurrences = references;
192 }
193
194 /***
195 * @param template
196 */
197 public void setTemplate(Template template) {
198 this.template = template;
199 }
200
201 /***
202 * @param translatedEntries The translatedEntries to set.
203 */
204 public void setTranslatedEntries(Set<TranslatedEntry> translatedEntries) {
205 this.translatedEntries = translatedEntries;
206 }
207
208 /***
209 * @see java.lang.Object#equals(java.lang.Object)
210 */
211 public boolean equals(final Object object) {
212 if (object instanceof Entry) {
213 Entry entry = (Entry) object;
214
215 EqualsBuilder builder = new EqualsBuilder();
216 builder.append(id, entry.getId());
217 builder.append(key, entry.getKey());
218 builder.append(pluralKey, entry.getPluralKey());
219 builder.append(comment, entry.getComment());
220 builder.append(occurrences, entry.getOccurrences());
221
222 return builder.isEquals();
223 }
224
225 return false;
226 }
227
228 /***
229 * @see java.lang.Object#toString()
230 */
231 public String toString() {
232 ToStringBuilder builder = new ToStringBuilder(this);
233 builder.append("id", id);
234 builder.append("key", key);
235 builder.append("occurrences", occurrences);
236
237 return builder.toString();
238 }
239
240 /***
241 * @see java.lang.Object#hashCode()
242 */
243 public int hashCode() {
244 HashCodeBuilder builder = new HashCodeBuilder();
245 builder.append(id);
246 builder.append(key);
247 builder.append(pluralKey);
248 builder.append(comment);
249 builder.append(occurrences);
250
251 return builder.toHashCode();
252 }
253 }