summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/TrackParameters.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/TrackParameters.java')
-rw-r--r--src/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/TrackParameters.java66
1 files changed, 31 insertions, 35 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/TrackParameters.java b/src/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/TrackParameters.java
index 5a20bd9e..a9ccda98 100644
--- a/src/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/TrackParameters.java
+++ b/src/de/lmu/ifi/dbs/elki/utilities/optionhandling/parameterization/TrackParameters.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization;
This file is part of ELKI:
Environment for Developing KDD-Applications Supported by Index-Structures
- Copyright (C) 2013
+ Copyright (C) 2014
Ludwig-Maximilians-Universität München
Lehr- und Forschungseinheit für Datenbanksysteme
ELKI Development Team
@@ -32,11 +32,9 @@ import java.util.Map;
import de.lmu.ifi.dbs.elki.logging.LoggingUtil;
import de.lmu.ifi.dbs.elki.utilities.ClassGenericsUtil;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.InternalParameterizationErrors;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.ParameterException;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.constraints.GlobalParameterConstraint;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Parameter;
-import de.lmu.ifi.dbs.elki.utilities.pairs.Pair;
/**
* Utility wrapper to track parameters for a configuration session.
@@ -54,7 +52,7 @@ public class TrackParameters implements Parameterization {
/**
* Tracking storage
*/
- List<Pair<Object, Parameter<?>>> options = new ArrayList<>();
+ List<TrackedParameter> options = new ArrayList<>();
/**
* Tree information: parent links
@@ -70,7 +68,7 @@ public class TrackParameters implements Parameterization {
/**
* Current parent for nested parameterization
*/
- Object cur = null;
+ Object owner = null;
/**
* Constructor.
@@ -83,18 +81,30 @@ public class TrackParameters implements Parameterization {
}
/**
+ * Constructor.
+ *
+ * @param inner Inner parameterization to wrap.
+ * @param owner Class/instance owning the parameter
+ */
+ public TrackParameters(Parameterization inner, Object owner) {
+ super();
+ this.inner = inner;
+ this.owner = owner;
+ }
+
+ /**
* Internal constructor, for nested tracking.
*
* @param inner Inner parameterization
- * @param option Option
+ * @param owner Object owning the current parameters
* @param options List of options
* @param parents Parent map
* @param children Child map
*/
- private TrackParameters(Parameterization inner, Object option, List<Pair<Object, Parameter<?>>> options, Map<Object, Object> parents, Map<Object, List<Object>> children) {
+ private TrackParameters(Parameterization inner, Object owner, List<TrackedParameter> options, Map<Object, Object> parents, Map<Object, List<Object>> children) {
super();
- this.inner = inner.descend(option);
- this.cur = option;
+ this.inner = inner.descend(owner);
+ this.owner = owner;
this.options = options;
this.parents = parents;
this.children = children;
@@ -113,7 +123,7 @@ public class TrackParameters implements Parameterization {
@Override
public boolean grab(Parameter<?> opt) {
registerChild(opt);
- options.add(new Pair<Object, Parameter<?>>(cur, opt));
+ options.add(new TrackedParameter(owner, opt));
return inner.grab(opt);
}
@@ -130,7 +140,7 @@ public class TrackParameters implements Parameterization {
@Override
public boolean setValueForOption(Parameter<?> opt) throws ParameterException {
registerChild(opt);
- options.add(new Pair<Object, Parameter<?>>(cur, opt));
+ options.add(new TrackedParameter(owner, opt));
return inner.setValueForOption(opt);
}
@@ -139,33 +149,19 @@ public class TrackParameters implements Parameterization {
*
* @return Parameters seen
*/
- public Collection<Pair<Object, Parameter<?>>> getAllParameters() {
+ public Collection<TrackedParameter> getAllParameters() {
return options;
}
- /**
- * Get the tracked parameters that were actually set.
- *
- * @return Parameters given
- */
- public Collection<Pair<OptionID, Object>> getGivenParameters() {
- ArrayList<Pair<OptionID, Object>> ret = new ArrayList<>();
- for(Pair<Object, Parameter<?>> pair : options) {
- if(pair.second.isDefined() && pair.second.getGivenValue() != null) {
- ret.add(new Pair<>(pair.second.getOptionID(), pair.second.getGivenValue()));
- }
- }
- return ret;
- }
-
@Override
public boolean checkConstraint(GlobalParameterConstraint constraint) {
return inner.checkConstraint(constraint);
}
/**
- * {@inheritDoc} Track parameters using a shared options list with parent
- * tracker.
+ * {@inheritDoc}
+ *
+ * Track parameters using a shared options list with parent tracker.
*/
@Override
public Parameterization descend(Object option) {
@@ -174,14 +170,14 @@ public class TrackParameters implements Parameterization {
}
private void registerChild(Object opt) {
- if(opt == cur) {
+ if(opt == owner) {
LoggingUtil.exception("Options shouldn't have themselves as parents!", new Throwable());
}
- parents.put(opt, cur);
- List<Object> c = children.get(cur);
+ parents.put(opt, owner);
+ List<Object> c = children.get(owner);
if(c == null) {
c = new ArrayList<>();
- children.put(cur, c);
+ children.put(owner, c);
}
if(!c.contains(opt)) {
c.add(opt);
@@ -204,7 +200,7 @@ public class TrackParameters implements Parameterization {
return ClassGenericsUtil.tryInstantiate(r, c, this);
}
catch(Exception e) {
- reportError(new InternalParameterizationErrors("Error instantiating internal class: "+c.getName(), e));
+ reportError(new InternalParameterizationErrors("Error instantiating internal class: " + c.getName(), e));
return null;
}
}
@@ -215,7 +211,7 @@ public class TrackParameters implements Parameterization {
return ClassGenericsUtil.tryInstantiate(c, c, this);
}
catch(Exception e) {
- reportError(new InternalParameterizationErrors("Error instantiating internal class: "+c.getName(), e));
+ reportError(new InternalParameterizationErrors("Error instantiating internal class: " + c.getName(), e));
return null;
}
}