001 /*
002 * Created on Jun 25, 2005 @author paulk
003 */
004 package toolbus.atom.note;
005
006 import toolbus.TBTermFactory;
007 import toolbus.atom.Atom;
008 import toolbus.atom.Ref;
009 import toolbus.exceptions.ToolBusException;
010 import toolbus.parsercup.PositionInformation;
011 import toolbus.process.ProcessExpression;
012 import toolbus.process.ProcessInstance;
013 import aterm.ATerm;
014
015 public class RecNote extends Atom{
016 public final ATerm notePattern;
017
018 public RecNote(ATerm msgpat, TBTermFactory tbfactory, PositionInformation posInfo){
019 super(tbfactory, posInfo);
020 this.notePattern = msgpat;
021 setAtomArgs(new Ref[]{new Ref(msgpat)});
022 }
023
024 public ProcessExpression copy(){
025 Atom a = new RecNote(notePattern, tbfactory, getPosInfo());
026 a.copyAtomAttributes(this);
027 return a;
028 }
029
030 public boolean execute() throws ToolBusException{
031 ProcessInstance pi = getProcess();
032 if(!pi.hasNotes()) return false;
033 if(isEnabled() && pi.getNoteFromQueue(notePattern, getEnv())) return true;
034
035 return false;
036 }
037 }