/*
* SetRateParameterEdit.java
*/
package pipe.historyActions.transition;
import uk.ac.imperial.pipe.models.petrinet.Rate;
import uk.ac.imperial.pipe.models.petrinet.Transition;
import javax.swing.undo.AbstractUndoableEdit;
/**
* Changes the rate parameter for a transition accordingly
*/
public class SetRateParameter extends AbstractUndoableEdit {
/**
* Transition to change rate of
*/
private final Transition transition;
/**
* Previous value of the rate
*/
private final Rate oldRate;
/**
* New rate value
*/
private final Rate newRate;
/**
* Constructor
* @param transition underlying transition model
* @param oldRate old transition rate
* @param newRate new transition rate
*/
public SetRateParameter(Transition transition, Rate oldRate, Rate newRate) {
this.transition = transition;
this.oldRate = oldRate;
this.newRate = newRate;
}
/**
* Set the transition rate to the old rate
*/
@Override
public void undo() {
super.undo();
transition.setRate(oldRate);
}
/**
* Set hte transition rate to the new rate
*/
@Override
public void redo() {
super.redo();
transition.setRate(newRate);
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof SetRateParameter)) {
return false;
}
SetRateParameter that = (SetRateParameter) o;
if (!newRate.equals(that.newRate)) {
return false;
}
if (!oldRate.equals(that.oldRate)) {
return false;
}
if (!transition.equals(that.transition)) {
return false;
}
return true;
}
@Override
public int hashCode() {
int result = transition.hashCode();
result = 31 * result + oldRate.hashCode();
result = 31 * result + newRate.hashCode();
return result;
}
}