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@15: * the Free Software Foundation, either version 3 of the License, or
franta-hg@15: * (at your option) any later version.
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@15: *
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: }