/*
* AddPetriNetObjectEdit.java
*/
package pipe.historyActions.component;
import uk.ac.imperial.pipe.exceptions.PetriNetComponentException;
import uk.ac.imperial.pipe.models.petrinet.PetriNetComponent;
import uk.ac.imperial.pipe.models.petrinet.PetriNet;
import javax.swing.undo.AbstractUndoableEdit;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Adds a Petri net component to the Petri net
*/
public class AddPetriNetObject extends AbstractUndoableEdit {
/**
* Class logger
*/
private static final Logger LOGGER = Logger.getLogger(AddPetriNetObject.class.getName());
/**
* New petri net component
*/
private final PetriNetComponent component;
/**
* Petri net that houses the component
*/
private final PetriNet petriNet;
/**
* Creates a new instance of placeWeightEdit
*
* @param component new Petri net component
* @param petriNet petri net that houses the component
*/
public AddPetriNetObject(PetriNetComponent component, PetriNet petriNet) {
this.component = component;
this.petriNet = petriNet;
}
/**
* Removes the component from the Petri net
*/
@Override
public final void undo() {
super.undo();
try {
petriNet.remove(component);
} catch (PetriNetComponentException e) {
LOGGER.log(Level.SEVERE, e.toString());
}
}
/**
* Adds the component back to the Petri net
*/
@Override
public final void redo() {
super.redo();
try {
petriNet.add(component);
} catch (PetriNetComponentException e) {
LOGGER.log(Level.SEVERE, e.toString());
}
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
AddPetriNetObject that = (AddPetriNetObject) o;
if (component != null ? !component.equals(that.component) : that.component != null) {
return false;
}
if (petriNet != null ? !petriNet.equals(that.petriNet) : that.petriNet != null) {
return false;
}
return true;
}
@Override
public int hashCode() {
int result = component != null ? component.hashCode() : 0;
result = 31 * result + (petriNet != null ? petriNet.hashCode() : 0);
return result;
}
}