001package org.biopax.paxtools.command;
002
003import org.biopax.paxtools.controller.PropertyEditor;
004import org.biopax.paxtools.model.BioPAXElement;
005
006/**
007 */
008public abstract class  AbstractPropertyCommand<D extends BioPAXElement,R> implements Command
009{
010        D bpe;
011        PropertyEditor<D,R> editor;
012        R value;
013
014        AbstractPropertyCommand(D bpe, PropertyEditor<D,R> editor, R value)
015        {
016
017                if (bpe == null || editor == null)
018                {
019                        throw new IllegalArgumentException();
020                }
021                this.bpe = bpe;
022                this.editor = editor;
023                this.value=value;
024
025        }
026
027        public boolean undo()
028        {
029                try
030                {
031                        undoAction();
032                        return true;
033                }
034                catch (Exception e)
035                {
036                        return false;
037                }
038        }
039
040        protected abstract void undoAction();
041
042
043        public boolean redo()
044        {
045                try
046                {
047                        redoAction();
048                        return true;
049                }
050                catch (Exception e)
051                {
052                        return false;
053                }
054        }
055
056        protected abstract void redoAction();
057
058}