franta-hg@15: /** franta-hg@15: * Free Telco Dictionary franta-hg@15: * Copyright © 2013 František Kučera (frantovo.cz) franta-hg@15: * franta-hg@15: * This program is free software: you can redistribute it and/or modify franta-hg@15: * it under the terms of the GNU General Public License as published by franta-hg@151: * the Free Software Foundation, version 3 of the License. franta-hg@15: * franta-hg@15: * This program is distributed in the hope that it will be useful, franta-hg@15: * but WITHOUT ANY WARRANTY; without even the implied warranty of franta-hg@15: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the franta-hg@15: * GNU General Public License for more details. franta-hg@15: * franta-hg@15: * You should have received a copy of the GNU General Public License franta-hg@15: * along with this program. If not, see . franta-hg@15: */ franta-hg@15: package cz.frantovo.telco.dictionary; franta-hg@15: franta-hg@17: import java.io.DataOutputStream; franta-hg@17: import java.io.IOException; franta-hg@17: import java.nio.charset.StandardCharsets; franta-hg@17: import java.util.Objects; franta-hg@17: franta-hg@15: /** franta-hg@130: * Represents one item in StarDict synonyms file (.syn) franta-hg@130: * links the synonym term (string) to the position of the base term in index file franta-hg@130: * franta-hg@15: * @author Ing. František Kučera (frantovo.cz) franta-hg@15: */ franta-hg@15: public class SynonymsEntry implements Comparable { franta-hg@15: franta-hg@17: private IndexEntry base; franta-hg@17: private String name; franta-hg@17: franta-hg@17: public SynonymsEntry(IndexEntry base, String name) { franta-hg@17: this.base = base; franta-hg@17: this.name = name; franta-hg@17: } franta-hg@17: franta-hg@17: public void serialize(DataOutputStream synonymOutputStream) throws IOException { franta-hg@17: synonymOutputStream.write(name.getBytes(StandardCharsets.UTF_8)); franta-hg@17: synonymOutputStream.write(0); franta-hg@17: synonymOutputStream.writeInt((int) base.getOrdinal()); // unsigned int 32 franta-hg@17: } franta-hg@17: franta-hg@15: @Override franta-hg@15: public int compareTo(SynonymsEntry o) { franta-hg@17: int nameDiff = name.compareTo(o.name); franta-hg@17: if (nameDiff == 0) { franta-hg@17: return base.compareTo(o.base); franta-hg@17: } else { franta-hg@17: return nameDiff; franta-hg@17: } franta-hg@17: } franta-hg@17: franta-hg@17: @Override franta-hg@17: public boolean equals(Object o) { franta-hg@17: return o instanceof IndexEntry && compareTo((SynonymsEntry) o) == 0; franta-hg@17: } franta-hg@17: franta-hg@17: @Override franta-hg@17: public int hashCode() { franta-hg@17: int hash = 3; franta-hg@17: hash = 47 * hash + Objects.hashCode(this.base); franta-hg@17: hash = 47 * hash + Objects.hashCode(this.name); franta-hg@17: return hash; franta-hg@15: } franta-hg@15: }