/*
* DeletePetriNetObjectEdit.java
*/
package pipe.historyActions.component;
import uk.ac.imperial.pipe.exceptions.PetriNetComponentException;
import uk.ac.imperial.pipe.models.petrinet.PetriNet;
import uk.ac.imperial.pipe.models.petrinet.PetriNetComponent;
import javax.swing.undo.AbstractUndoableEdit;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Deletes a Petri net component from the a net
*/
public class DeletePetriNetObject extends AbstractUndoableEdit {
/**
* Class logger
*/
private static final Logger LOGGER = Logger.getLogger(DeletePetriNetObject.class.getName());
/**
* Petri net to delete component from
*/
private final PetriNet petriNet;
/**
* Component that has been deleted from the Petri net
*/
private PetriNetComponent component;
/**
*
* Constructor
*
* @param component Petri net component that has been deleted from the Petri net
* @param petriNet Petri net remove/add the component to for undo/redo features
*/
public DeletePetriNetObject(PetriNetComponent component, PetriNet petriNet) {
this.component = component;
this.petriNet = petriNet;
}
/**
* Adds the component to the Petri net
*/
@Override
public void undo() {
super.undo();
try {
petriNet.add(component);
} catch (PetriNetComponentException e) {
LOGGER.log(Level.SEVERE, e.getMessage());
}
}
/**
* Deletes the component from the Petri net
*/
@Override
public void redo() {
super.redo();
try {
petriNet.remove(component);
} catch (PetriNetComponentException e) {
LOGGER.log(Level.SEVERE, e.getMessage());
}
}
@Override
public int hashCode() {
int result = component.hashCode();
result = 31 * result + petriNet.hashCode();
return result;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
DeletePetriNetObject that = (DeletePetriNetObject) o;
if (!component.equals(that.component)) {
return false;
}
if (!petriNet.equals(that.petriNet)) {
return false;
}
return true;
}
}