001package org.biopax.paxtools.command;
002
003import org.biopax.paxtools.model.BioPAXElement;
004import org.biopax.paxtools.model.Model;
005
006import java.util.Set;
007
008
009public abstract class AbstractAddRemoveCommand implements Command
010{
011        Model model;
012        Set<BioPAXElement> bpes;
013
014        public AbstractAddRemoveCommand(Model model, Set<BioPAXElement> bpes)
015        {
016                this.model = model;
017                this.bpes = bpes;
018        }
019
020        public boolean undo()
021        {
022                try
023                {
024                        for (BioPAXElement bpe : bpes)
025                        {
026                                undoAction(bpe);
027                        }
028                        return true;
029                }
030                catch (Exception e)
031                {
032                        return false;
033                }
034        }
035
036        protected abstract void undoAction(BioPAXElement bpe);
037
038        public boolean canUndo()
039        {
040                return true;
041        }
042
043        public boolean redo()
044        {
045                try
046                {
047                        for (BioPAXElement bpe : bpes)
048                        {
049                                redoAction(bpe);
050                        }
051                        return true;
052                        }
053                catch (Exception e)
054                {
055                        return false;
056                }
057        }
058
059        protected abstract void redoAction(BioPAXElement bpe);
060}