summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/utilities/optionhandling/OptionID.java
diff options
context:
space:
mode:
authorAndrej Shadura <andrewsh@debian.org>2019-03-09 22:30:28 +0000
committerAndrej Shadura <andrewsh@debian.org>2019-03-09 22:30:28 +0000
commitcde76aeb42240f7270bc6605c606ae07d2dc5a7d (patch)
treec3ebf1d7745224f524da31dbabc5d76b9ea75916 /src/de/lmu/ifi/dbs/elki/utilities/optionhandling/OptionID.java
Import Upstream version 0.4.0~beta1
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/utilities/optionhandling/OptionID.java')
-rw-r--r--src/de/lmu/ifi/dbs/elki/utilities/optionhandling/OptionID.java188
1 files changed, 188 insertions, 0 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/utilities/optionhandling/OptionID.java b/src/de/lmu/ifi/dbs/elki/utilities/optionhandling/OptionID.java
new file mode 100644
index 00000000..d1f292fc
--- /dev/null
+++ b/src/de/lmu/ifi/dbs/elki/utilities/optionhandling/OptionID.java
@@ -0,0 +1,188 @@
+package de.lmu.ifi.dbs.elki.utilities.optionhandling;
+/*
+This file is part of ELKI:
+Environment for Developing KDD-Applications Supported by Index-Structures
+
+Copyright (C) 2011
+Ludwig-Maximilians-Universität München
+Lehr- und Forschungseinheit für Datenbanksysteme
+ELKI Development Team
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero 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 Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+import de.lmu.ifi.dbs.elki.utilities.ConstantObject;
+
+/**
+ * An OptionID is used by option handlers as a unique identifier for specific
+ * options. There is no option possible without a specific OptionID defined
+ * within this class.
+ *
+ * @author Elke Achtert
+ */
+public final class OptionID extends ConstantObject<OptionID> {
+ /**
+ * Flag to obtain help-message.
+ * <p>
+ * Key: {@code -h}
+ * </p>
+ */
+ public static final OptionID HELP = new OptionID("h", "Request a help-message, either for the main-routine or for any specified algorithm. " + "Causes immediate stop of the program.");
+
+ /**
+ * Flag to obtain help-message.
+ * <p>
+ * Key: {@code -help}
+ * </p>
+ */
+ public static final OptionID HELP_LONG = new OptionID("help", "Request a help-message, either for the main-routine or for any specified algorithm. " + "Causes immediate stop of the program.");
+
+ /**
+ * OptionID for {@link de.lmu.ifi.dbs.elki.workflow.AlgorithmStep}
+ */
+ public static final OptionID ALGORITHM = new OptionID("algorithm", "Algorithm to run.");
+
+ /**
+ * Optional Parameter to specify a class to obtain a description for.
+ * <p>
+ * Key: {@code -description}
+ * </p>
+ */
+ public static final OptionID DESCRIPTION = new OptionID("description", "Class to obtain a description of. " + "Causes immediate stop of the program.");
+
+ /**
+ * Optional Parameter to specify a class to enable debugging for.
+ * <p>
+ * Key: {@code -enableDebug}
+ * </p>
+ */
+ public static final OptionID DEBUG = new OptionID("enableDebug", "Parameter to enable debugging for particular packages.");
+
+ /**
+ * OptionID for {@link de.lmu.ifi.dbs.elki.workflow.InputStep}
+ */
+ public static final OptionID DATABASE = new OptionID("db", "Database class.");
+
+ /**
+ * OptionID for {@link de.lmu.ifi.dbs.elki.workflow.InputStep}
+ */
+ // TODO: move to database class?
+ public static final OptionID DATABASE_CONNECTION = new OptionID("dbc", "Database connection class.");
+
+ /**
+ * OptionID for {@link de.lmu.ifi.dbs.elki.workflow.EvaluationStep}
+ */
+ public static final OptionID EVALUATOR = new OptionID("evaluator", "Class to evaluate the results with.");
+
+ /**
+ * OptionID for {@link de.lmu.ifi.dbs.elki.workflow.OutputStep}
+ */
+ public static final OptionID RESULT_HANDLER = new OptionID("resulthandler", "Result handler class.");
+
+ /**
+ * OptionID for the application output file/folder
+ */
+ public static final OptionID OUTPUT = new OptionID("out", "Directory name (or name of an existing file) to write the obtained results in. " + "If this parameter is omitted, per default the output will sequentially be given to STDOUT.");
+
+ /**
+ * Flag to allow verbose messages while running the application.
+ * <p>
+ * Key: {@code -verbose}
+ * </p>
+ */
+ public static final OptionID VERBOSE_FLAG = new OptionID("verbose", "Enable verbose messages.");
+
+ /**
+ * The description of the OptionID.
+ */
+ private String description;
+
+ /**
+ * Provides a new OptionID of the given name and description.
+ * <p/>
+ * All OptionIDs are unique w.r.t. their name. An OptionID provides
+ * additionally a description of the option.
+ *
+ * @param name the name of the option
+ * @param description the description of the option
+ */
+ private OptionID(final String name, final String description) {
+ super(name);
+ this.description = description;
+ }
+
+ /**
+ * Returns the description of this OptionID.
+ *
+ * @return the description of this OptionID
+ */
+ public String getDescription() {
+ return description;
+ }
+
+ /**
+ * Sets the description of this OptionID.
+ *
+ * @param description the description to be set
+ */
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ /**
+ * Gets or creates the OptionID for the given class and given name. The
+ * OptionID usually is named as the classes name (lowercase) as name-prefix
+ * and the given name as suffix of the complete name, separated by a dot. For
+ * example, the parameter {@code epsilon} for the class
+ * {@link de.lmu.ifi.dbs.elki.algorithm.clustering.DBSCAN} will be named
+ * {@code dbscan.epsilon}.
+ *
+ * @param name the name
+ * @param description the description is also set if the named OptionID does
+ * exist already
+ * @return the OptionID for the given name
+ */
+ public static OptionID getOrCreateOptionID(final String name, final String description) {
+ OptionID optionID = getOptionID(name);
+ if(optionID == null) {
+ optionID = new OptionID(name, description);
+ }
+ else {
+ optionID.setDescription(description);
+ }
+ return optionID;
+ }
+
+ /**
+ * Returns the OptionID for the given name if it exists, null otherwise.
+ *
+ * @param name name of the desired OptionID
+ * @return the OptionID for the given name
+ */
+ public static OptionID getOptionID(final String name) {
+ return OptionID.lookup(OptionID.class, name);
+ }
+
+ /**
+ * Returns the name of this OptionID.
+ *
+ * @return the name
+ * @see java.lang.Object#toString()
+ */
+ @Override
+ public String toString() {
+ return getName();
+ }
+
+} \ No newline at end of file