/* * 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/>. */ /* * Tag.java * Copyright (C) 1999-2012 University of Waikato, Hamilton, New Zealand * */ package weka.core; import java.io.Serializable; /** * A <code>Tag</code> simply associates a numeric ID with a String description. * * @author <a href="mailto:len@reeltwo.com">Len Trigg</a> * @version $Revision: 8034 $ */ public class Tag implements Serializable, RevisionHandler { /** for serialization. */ private static final long serialVersionUID = 3326379903447135320L; /** The ID */ protected int m_ID; /** The unique string for this tag, doesn't have to be numeric */ protected String m_IDStr; /** The descriptive text */ protected String m_Readable; /** * Creates a new default Tag * */ public Tag() { this(0, "A new tag", "A new tag", true); } /** * Creates a new <code>Tag</code> instance. * * @param ident the ID for the new Tag. * @param readable the description for the new Tag. */ public Tag(int ident, String readable) { this(ident, "", readable); } /** * Creates a new <code>Tag</code> instance. * * @param ident the ID for the new Tag. * @param identStr the ID string for the new Tag (case-insensitive). * @param readable the description for the new Tag. */ public Tag(int ident, String identStr, String readable) { this(ident, identStr, readable, true); } public Tag(int ident, String identStr, String readable, boolean upperCase) { m_ID = ident; if (identStr.length() == 0) { m_IDStr = "" + ident; } else { m_IDStr = identStr; if (upperCase) { m_IDStr = identStr.toUpperCase(); } } m_Readable = readable; } /** * Gets the numeric ID of the Tag. * * @return the ID of the Tag. */ public int getID() { return m_ID; } /** * Sets the numeric ID of the Tag. * * @param id the ID of the Tag. */ public void setID(int id) { m_ID = id; } /** * Gets the string ID of the Tag. * * @return the string ID of the Tag. */ public String getIDStr() { return m_IDStr; } /** * Sets the string ID of the Tag. * * @param str the string ID of the Tag. */ public void setIDStr(String str) { m_IDStr = str; } /** * Gets the string description of the Tag. * * @return the description of the Tag. */ public String getReadable() { return m_Readable; } /** * Sets the string description of the Tag. * * @param r the description of the Tag. */ public void setReadable(String r) { m_Readable = r; } /** * returns the IDStr * * @return the IDStr */ public String toString() { return m_IDStr; } /** * returns a list that can be used in the listOption methods to list all * the available ID strings, e.g.: <0|1|2> or <what|ever> * * @param tags the tags to create the list for * @return a list of all ID strings */ public static String toOptionList(Tag[] tags) { String result; int i; result = "<"; for (i = 0; i < tags.length; i++) { if (i > 0) result += "|"; result += tags[i]; } result += ">"; return result; } /** * returns a string that can be used in the listOption methods to list all * the available options, i.e., "\t\tID = Text\n" for each option * * @param tags the tags to create the string for * @return a string explaining the tags */ public static String toOptionSynopsis(Tag[] tags) { String result; int i; result = ""; for (i = 0; i < tags.length; i++) { result += "\t\t" + tags[i].getIDStr() + " = " + tags[i].getReadable() + "\n"; } return result; } /** * Returns the revision string. * * @return the revision */ public String getRevision() { return RevisionUtils.extract("$Revision: 8034 $"); } }