2 * Free Telco Dictionary
3 * Copyright © 2013 František Kučera (frantovo.cz)
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 package cz.frantovo.telco.dictionary;
20 import java.io.DataOutputStream;
21 import java.io.IOException;
22 import java.nio.charset.StandardCharsets;
23 import java.util.Objects;
26 * Represents one item in StarDict synonyms file (.syn)
27 * links the synonym term (string) to the position of the base term in index file
29 * @author Ing. František Kučera (frantovo.cz)
31 public class SynonymsEntry implements Comparable<SynonymsEntry> {
33 private IndexEntry base;
36 public SynonymsEntry(IndexEntry base, String name) {
41 public void serialize(DataOutputStream synonymOutputStream) throws IOException {
42 synonymOutputStream.write(name.getBytes(StandardCharsets.UTF_8));
43 synonymOutputStream.write(0);
44 synonymOutputStream.writeInt((int) base.getOrdinal()); // unsigned int 32
48 public int compareTo(SynonymsEntry o) {
49 int nameDiff = name.compareTo(o.name);
51 return base.compareTo(o.base);
58 public boolean equals(Object o) {
59 return o instanceof IndexEntry && compareTo((SynonymsEntry) o) == 0;
63 public int hashCode() {
65 hash = 47 * hash + Objects.hashCode(this.base);
66 hash = 47 * hash + Objects.hashCode(this.name);