uci.argo.kernel
Class Designer

java.lang.Object
  |
  +--uci.argo.kernel.Designer

public class Designer
extends Object
implements Poster, Runnable, PropertyChangeListener, Serializable

This class models the designer who is building a complex design in some application domain and needs continuous feedback to aid in the making of good design decisions.

See Also:
Serialized Form

Field Summary
protected  long _critiqueDuration
           
protected  long _lastCritique
           
static int _longestAdd
           
static int _longestHot
           
static boolean _userWorking
           
static Designer TheDesigner
           
static Vector UNSPEC_DECISION_VECTOR
           
static Vector UNSPEC_GOAL_VECTOR
           
 
Constructor Summary
Designer()
           
 
Method Summary
 void addToDoItems(ToDoList list)
          Add all the items in the given list to my list.
 boolean canFixIt(ToDoItem item)
           
 boolean containsKnowledgeType(String type)
           
 void critique(Design des)
          Look for potential problems or open issues in the given design.
 void critiqueASAP(Object dm, String reason)
           
 void defineDecision(String decision, int priority)
           
 void determineActiveCritics()
          Ask this designer's agency to select which critics should be active.
 void disruptivelyWarn(ToDoItem item)
          Inform the human designer that there is an urgent ToDoItem that (s)he must consider before doing any more work.
 int disruptiveThreshold()
          Used to determine which ToDoItems are urgent.
 String expand(String desc, VectorSet offs)
           
 void fixIt(ToDoItem item, Object arg)
           
 Agency getAgency()
          Reply the Agency object that is helping this Designer.
 boolean getAutoCritique()
          autoCritique and critiquingInterval are two prameters that control how the critiquing thread operates.
 ChildGenerator getChildGenerator()
           
 Icon getClarifier()
           
 int getCritiquingInterval()
           
static Object getCritiquingRoot()
           
 DecisionModel getDecisionModel()
           
 Vector getDecisions()
           
 String getExpertEmail()
           
 GoalModel getGoalModel()
           
 Vector getGoals()
           
 VectorSet getKnowledgeTypes()
           
 Properties getPrefs()
          Reply the designers personal preferneces.
 Vector getSupportedDecisions()
           
 Vector getSupportedGoals()
           
 ToDoList getToDoList()
          Reply this Designer's ToDoList, a list of pending problems and issues that the designer might be interested in.
 boolean hasGoal(String goal)
          Record the extent to which the designer desires the given goal.
 void inform(ToDoItem item)
          Inform the human designer using this system that the given ToDoItem should be considered.
 boolean isConsidering(Decision d)
           
 boolean isConsidering(String decision)
          Reply true iff the designer is currently considering the given decison.
 void nondisruptivelyWarn(ToDoItem item)
          Inform the human designer that there is a ToDoItem that is relevant to his design work, and allow him to consider it on his own initiative.
 void propertyChange(PropertyChangeEvent pce)
           
 void removeToDoItems(ToDoList list)
          Remove all the items in the given list from my list.
 void run()
          Continuously select and execute critics against this designer's design.
 void setAutoCritique(boolean b)
           
 void setChildGenerator(ChildGenerator cg)
           
 void setCritiquingInterval(int i)
           
static void setCritiquingRoot(Object d)
           
 void setDecisionPriority(String decision, int priority)
          Record the extent to which the designer is considering the given decision.
 void setExpertEmail(String addr)
           
 void setGoalPriority(String goal, int priority)
           
 void snooze()
           
 void spawnCritiquer(Object root)
          Start a separate thread to continually select and execute critics that are relevant to this designer's work.
 void startConsidering(Decision d)
           
 void startConsidering(String decision)
           
 void startDesiring(String goal)
           
 boolean stillValid(ToDoItem i, Designer d)
          ToDoItem's that are posted by the designer are assumed to be valid until the designer explicitly removes them.
 void stopConsidering(Decision d)
           
 void stopConsidering(String decision)
           
 void stopDesiring(String goal)
           
 boolean supports(Decision d)
           
 boolean supports(Goal g)
           
static Designer theDesigner()
           
static void theDesigner(Designer d)
           
 String toString()
           
 void unsnooze()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

TheDesigner

public static Designer TheDesigner

_userWorking

public static boolean _userWorking

_longestAdd

public static int _longestAdd

_longestHot

public static int _longestHot

_critiqueDuration

protected long _critiqueDuration

_lastCritique

protected long _lastCritique

UNSPEC_DECISION_VECTOR

public static Vector UNSPEC_DECISION_VECTOR

UNSPEC_GOAL_VECTOR

public static Vector UNSPEC_GOAL_VECTOR
Constructor Detail

Designer

public Designer()
Method Detail

theDesigner

public static void theDesigner(Designer d)

theDesigner

public static Designer theDesigner()

spawnCritiquer

public void spawnCritiquer(Object root)
Start a separate thread to continually select and execute critics that are relevant to this designer's work.

run

public void run()
Continuously select and execute critics against this designer's design. spawnCritiquer is used to start a Thread that runs this.
Specified by:
run in interface Runnable

critiqueASAP

public void critiqueASAP(Object dm,
                         String reason)

critique

public void critique(Design des)
Look for potential problems or open issues in the given design.

propertyChange

public void propertyChange(PropertyChangeEvent pce)
Specified by:
propertyChange in interface PropertyChangeListener

determineActiveCritics

public void determineActiveCritics()
Ask this designer's agency to select which critics should be active.

getAutoCritique

public boolean getAutoCritique()
autoCritique and critiquingInterval are two prameters that control how the critiquing thread operates. If autoCritique is false then now critiquing is done in the background. The critiquingInterval determines how often the critiquing thread executes. The concept of an interval between runs will become less important as Argo is redesigned to be more trigger driven.

setAutoCritique

public void setAutoCritique(boolean b)

getCritiquingInterval

public int getCritiquingInterval()

setCritiquingInterval

public void setCritiquingInterval(int i)

setCritiquingRoot

public static void setCritiquingRoot(Object d)

getCritiquingRoot

public static Object getCritiquingRoot()

getChildGenerator

public ChildGenerator getChildGenerator()

setChildGenerator

public void setChildGenerator(ChildGenerator cg)

getDecisionModel

public DecisionModel getDecisionModel()

getDecisions

public Vector getDecisions()

getGoalModel

public GoalModel getGoalModel()

getGoals

public Vector getGoals()

stillValid

public boolean stillValid(ToDoItem i,
                          Designer d)
ToDoItem's that are posted by the designer are assumed to be valid until the designer explicitly removes them. Perhaps in the future the designer could specify a condition to determine when his items expire.
Specified by:
stillValid in interface Poster
See Also:
ToDoItem, Critic.stillValid(uci.argo.kernel.ToDoItem, uci.argo.kernel.Designer)

supports

public boolean supports(Decision d)
Specified by:
supports in interface Poster

getSupportedDecisions

public Vector getSupportedDecisions()
Specified by:
getSupportedDecisions in interface Poster

supports

public boolean supports(Goal g)
Specified by:
supports in interface Poster

getSupportedGoals

public Vector getSupportedGoals()
Specified by:
getSupportedGoals in interface Poster

containsKnowledgeType

public boolean containsKnowledgeType(String type)
Specified by:
containsKnowledgeType in interface Poster

getKnowledgeTypes

public VectorSet getKnowledgeTypes()
Specified by:
getKnowledgeTypes in interface Poster

expand

public String expand(String desc,
                     VectorSet offs)
Specified by:
expand in interface Poster

getClarifier

public Icon getClarifier()
Specified by:
getClarifier in interface Poster

getToDoList

public ToDoList getToDoList()
Reply this Designer's ToDoList, a list of pending problems and issues that the designer might be interested in.
See Also:
ToDoList

addToDoItems

public void addToDoItems(ToDoList list)
Add all the items in the given list to my list.

removeToDoItems

public void removeToDoItems(ToDoList list)
Remove all the items in the given list from my list.

getPrefs

public Properties getPrefs()
Reply the designers personal preferneces.

isConsidering

public boolean isConsidering(String decision)
Reply true iff the designer is currently considering the given decison.

isConsidering

public boolean isConsidering(Decision d)

setDecisionPriority

public void setDecisionPriority(String decision,
                                int priority)
Record the extent to which the designer is considering the given decision.

defineDecision

public void defineDecision(String decision,
                           int priority)

startConsidering

public void startConsidering(String decision)

startConsidering

public void startConsidering(Decision d)

stopConsidering

public void stopConsidering(String decision)

stopConsidering

public void stopConsidering(Decision d)

hasGoal

public boolean hasGoal(String goal)
Record the extent to which the designer desires the given goal.

setGoalPriority

public void setGoalPriority(String goal,
                            int priority)

startDesiring

public void startDesiring(String goal)

stopDesiring

public void stopDesiring(String goal)

getExpertEmail

public String getExpertEmail()
Specified by:
getExpertEmail in interface Poster

setExpertEmail

public void setExpertEmail(String addr)
Specified by:
setExpertEmail in interface Poster

snooze

public void snooze()
Specified by:
snooze in interface Poster

unsnooze

public void unsnooze()
Specified by:
unsnooze in interface Poster

getAgency

public Agency getAgency()
Reply the Agency object that is helping this Designer.

inform

public void inform(ToDoItem item)
Inform the human designer using this system that the given ToDoItem should be considered. This can be disruptive if the item is urgent, or (more commonly) it is added to his ToDoList so that he can consider it at his leisure.

disruptivelyWarn

public void disruptivelyWarn(ToDoItem item)
Inform the human designer that there is an urgent ToDoItem that (s)he must consider before doing any more work. Currently not implemented.

nondisruptivelyWarn

public void nondisruptivelyWarn(ToDoItem item)
Inform the human designer that there is a ToDoItem that is relevant to his design work, and allow him to consider it on his own initiative.

disruptiveThreshold

public int disruptiveThreshold()
Used to determine which ToDoItems are urgent.

toString

public String toString()
Overrides:
toString in class Object

fixIt

public void fixIt(ToDoItem item,
                  Object arg)
Specified by:
fixIt in interface Poster

canFixIt

public boolean canFixIt(ToDoItem item)
Specified by:
canFixIt in interface Poster