/* Author: Jeff Dalton * Updated: Thu Nov 22 13:39:55 2001 by Jeff Dalton * Copyright: (c) 2001, AIAI, University of Edinburgh */ package ix.icore; import java.util.Map; import java.util.HashMap; import java.io.Serializable; import ix.icore.process.StatusValues; import ix.util.lisp.*; /** * A minimal Issue class. */ public class BasicIssue implements Issue, StatusValues, Serializable { protected Object verb; protected LList parameters; protected int status = STATUS_BLANK; protected int priority = PRIORITY_NONE; protected Map properties = new HashMap(5); public BasicIssue(String text) { this(Lisp.elementsFromString(text)); } public BasicIssue(LList pattern) { this.verb = pattern.car(); this.parameters = pattern.cdr(); } public BasicIssue(Issue i) { this(Lisp.cons(i.getVerb(), (LList)i.getParameters())); setPriority(i.getPriority()); properties.putAll((Map)i.getProperties()); } public Object getVerb() { return verb; } public Object getParameters() { return parameters; } public int getStatus() { return status; } public void setStatus(int status) { this.status = status; } public int getPriority() { return priority; } public void setPriority(int priority) { this.priority = priority; } public Map getProperties() { return properties; } public void setProperties(Map properties) { this.properties = properties; } public String getSenderId() { return (String)properties.get("sender-id"); } public void setSenderId(String id) { properties.put("sender-id", id); } public String getRef() { return (String)properties.get("ref"); } public void setRef(String ref) { properties.put("ref", ref); } public boolean getReportBack() { String value = (String)properties.get("report-back"); return value != null && value.equals("yes"); } public void setReportBack(boolean value) { properties.put("report-back", value ? "yes" : "no"); } public String toString() { return "issue[" + Lisp.elementsToString(Lisp.cons(verb, parameters)) + "]"; } }