private final double multiplier;
+ private final Class<? extends T> modifiedClass;
+ private final String methodName;
+
private final Method getter;
private final Method setter;
* @param methodName the base name of the getter/setter methods (without "get"/"set")
*/
public GenericModifier(String modifierName, Object relatedObject, UnitGroup unitGroup, double multiplier,
- Class<T> modifiedClass, String methodName) {
+ Class<? extends T> modifiedClass, String methodName) {
super(modifierName, relatedObject, unitGroup);
this.multiplier = multiplier;
+ this.modifiedClass = modifiedClass;
+ this.methodName = methodName;
+
if (MathUtil.equals(multiplier, 0)) {
throw new IllegalArgumentException("multiplier is zero");
}
@Override
- public double getCurrentValue(Simulation simulation) throws OptimizationException {
+ public double getCurrentSIValue(Simulation simulation) throws OptimizationException {
T modifiable = getModifiedObject(simulation);
if (modifiable == null) {
throw new OptimizationException("BUG: getModifiedObject() returned null");
throw new OptimizationException("BUG: getModifiedObject() returned null");
}
double siValue = toBaseValue(scaledValue) / multiplier;
+ System.out.println("Setting setter=" + setter + " modifiable=" + modifiable + " siValue=" + siValue + "scaledValue=" + scaledValue);
setter.invoke(modifiable, siValue);
}
*/
protected abstract T getModifiedObject(Simulation simulation) throws OptimizationException;
+
+
+ @Override
+ public String toString() {
+ return "GenericModifier[modifiedClass=" + modifiedClass.getCanonicalName() + ", methodName=" + methodName + ", multiplier=" + multiplier + "]";
+ }
+
}