Java tutorial
//OK! /* * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ /* * Copyright (C) 2012-2013 LaLiC */ package anotadorderelacoes.model; import org.json.simple.JSONObject; /** * Representa um termo de interesse na sentena. * <p> * Um termo uma sequncia de tokens, ento s precisa guardar as posies do * token de incio e do token final. * <p> * O termo em si guardado na classe em formato de texto por questes de * convenincia * <p> * Em formato JSON: * <ul> * <li>de : posio do token de incio do termo * <li>ate : posio do token de fim do termo * </ul> * * @see Relacao * @see Token */ public class Termo implements Comparable<Termo> { private Integer de; private Integer ate; private String termo; //<editor-fold defaultstate="collapsed" desc="Getters e setters"> public void setDe(int d) { de = d; } public int getDe() { return de; } public void setAte(int a) { ate = a; } public int getAte() { return ate; } //</editor-fold> public Termo(int de, int ate, String termo) { this.de = de; this.ate = ate; this.termo = termo; } public Termo(Termo t) { this(t.de, t.ate, t.termo); } @Override public String toString() { return termo; } @Override public int compareTo(Termo t) { return this.de - t.de; } // Pegadinha! O objeto Integer at 127 eh imutavel, por isso esta // verificao de igualdade dava errada para termos com ndice alto. // Sempre use o mtodo .equals para comparar objetos, mesmo os que fazem // autoboxing (Integer, Byte, etc). @Override public boolean equals(Object o) { if (!(o instanceof Termo)) return false; Termo t = (Termo) o; if (this.de.equals(t.de) && this.ate.equals(t.ate)) return true; return false; } @Override public int hashCode() { int hash = 3; hash = 23 * hash + this.de; hash = 23 * hash + this.ate; return hash; } /** * Retorna uma representao em formato JSON deste termo * * @return Objeto JSONObject que representa este termo */ public JSONObject toJson() { JSONObject o = new JSONObject(); o.put("de", de); o.put("ate", ate); return o; } }