package com.plectix.simulator.simulationclasses.perturbations;
import com.plectix.simulator.parser.abstractmodel.perturbations.modifications.ModificationType;
import com.plectix.simulator.simulationclasses.perturbations.util.LinearExpression;
import com.plectix.simulator.simulationclasses.perturbations.util.VectorRule;
import com.plectix.simulator.staticanalysis.Rule;
public class RateModification extends AbstractModification {
private final Rule rule;
private final LinearExpression<VectorRule> expression;
/**
* The only constructor
* @param changingRule rule which rate we want to change
* @param expression expression describing rate's modification
*/
public RateModification(Rule changingRule, LinearExpression<VectorRule> expression) {
this.rule = changingRule;
this.expression = expression;
}
@Override
protected void doItAll() {
//System.out.println(expression.calculate());
rule.setRuleRate(expression.calculate());
}
@Override
public String toString() {
StringBuffer sb = new StringBuffer("'");
sb.append(rule.getName());
sb.append("' := ");
sb.append(expression);
return sb.toString();
}
@Override
public ModificationType getType() {
return ModificationType.RATE;
}
}