org.argouml.cognitive.critics
Class CompoundCritic

java.lang.Object
  extended byorg.argouml.cognitive.critics.Critic
      extended byorg.argouml.cognitive.critics.CompoundCritic
All Implemented Interfaces:
Poster, Serializable

public class CompoundCritic
extends Critic

A CompoundCritic acts like a regular critic in that it checks the design and produces design feedback. However, a CompoundCritic is composed of several regular critics that are applied in order. The first one that produces feedback ends the application. This is useful when criticism can be ordered from specific to general: general feedback should not be produced if specific feedback is available. For example, one critic might check for the legality of the name of a design element, and another might check for the presence of any name. If a given design element has no name, both critics could produce feedback, but it would be more useful if only the first one did.

See Also:
Serialized Form

Field Summary
private  Vector critics
          The sub-critics that make up this CompoundCritic.
 
Fields inherited from class org.argouml.cognitive.critics.Critic
DEFAULT_CLARIFIER, KT_COMPLETENESS, KT_CONSISTENCY, KT_CORRECTNESS, KT_DESIGNERS, KT_EXPERIENCIAL, KT_OPTIMIZATION, KT_ORGANIZATIONAL, KT_PRESENTATION, KT_SEMANTICS, KT_SYNTAX, KT_TOOL, NO_PROBLEM, PROBLEM_FOUND
 
Constructor Summary
CompoundCritic()
          The constructor of a compound critic.
CompoundCritic(Critic c1, Critic c2)
          The constructor.
CompoundCritic(Critic c1, Critic c2, Critic c3)
          The constructor.
CompoundCritic(Critic c1, Critic c2, Critic c3, Critic c4)
          The constructor.
 
Method Summary
 void addCritic(Critic c)
           
 void addKnowledgeType(String type)
           
 void addSupportedDecision(Decision d)
           
 void addSupportedGoal(Goal g)
           
 boolean containsKnowledgeType(String type)
           
 void critique(Object dm, Designer dsgr)
          Examine the given Object and Designer and, if appropriate, produce one or more ToDoItem's and add them to the offending design material's and the Designer's ToDoList.
 String expand(String desc, org.tigris.gef.util.VectorSet offs)
          Customize the description string just before it is displayed.
 Icon getClarifier()
           
 Vector getCritics()
           
 Vector getSupportedDecisions()
           
 Vector getSupportedGoals()
           
 boolean isActive()
          Reply true iff this Critic can execute.
 boolean isEnabled()
          This is a convient method for accessing one well-known control record.
 void removeCritic(Critic c)
           
 void setCritics(Vector c)
           
 boolean supports(Decision d)
           
 boolean supports(Goal g)
           
 ToDoItem toDoItem(Object dm, Designer dsgr)
          Reply the ToDoItem that the designer should see iff predicate() returns true.
 
Methods inherited from class org.argouml.cognitive.critics.Critic
addControlRec, addTrigger, beActive, beInactive, canFixIt, defaultMoreInfoURL, fixIt, getArg, getArgs, getControlRec, getCriticCategory, getCriticKey, getCriticName, getCriticType, getDecisionCategory, getDescription, getDescriptionTemplate, getExpertEmail, getHeadline, getHeadline, getHeadline, getKnowledgeTypes, getMoreInfoURL, getMoreInfoURL, getPriority, getPriority, getTriggerMask, getWizardClass, initWizard, isRelevantToDecisions, isRelevantToGoals, makeWizard, matchReason, postItem, predicate, reasonCodeFor, setArg, setArgs, setDecisionCategory, setDescription, setEnabled, setExpertEmail, setHeadline, setKnowledgeTypes, setKnowledgeTypes, setKnowledgeTypes, setKnowledgeTypes, setMoreInfoURL, setPriority, snooze, snoozeOrder, stillValid, toString, unsnooze
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

critics

private Vector critics
The sub-critics that make up this CompoundCritic.

Constructor Detail

CompoundCritic

public CompoundCritic()
The constructor of a compound critic.


CompoundCritic

public CompoundCritic(Critic c1,
                      Critic c2)
The constructor.

Parameters:
c1 - the first critic that makes up the compound critic
c2 - the 2nd critic that makes up the compound critic

CompoundCritic

public CompoundCritic(Critic c1,
                      Critic c2,
                      Critic c3)
The constructor.

Parameters:
c1 - the first critic that makes up the compound critic
c2 - the 2nd critic that makes up the compound critic
c3 - the 3rd critic that makes up the compound critic

CompoundCritic

public CompoundCritic(Critic c1,
                      Critic c2,
                      Critic c3,
                      Critic c4)
The constructor.

Parameters:
c1 - the first critic that makes up the compound critic
c2 - the 2nd critic that makes up the compound critic
c3 - the 3rd critic that makes up the compound critic
c4 - the 4th critic that makes up the compound critic
Method Detail

setCritics

public void setCritics(Vector c)
Parameters:
c - the new list of critics that completely replaces the old list

getCritics

public Vector getCritics()
Returns:
the complete list of critics

addCritic

public void addCritic(Critic c)
Parameters:
c - the critic to be added at the end of the current list

removeCritic

public void removeCritic(Critic c)
Parameters:
c - the critic to be removed

critique

public void critique(Object dm,
                     Designer dsgr)
Description copied from class: Critic
Examine the given Object and Designer and, if appropriate, produce one or more ToDoItem's and add them to the offending design material's and the Designer's ToDoList. By default this is basically a simple if-statement that relies on predicate() to determine if there is some appropriate feedback, and toDoItem() to produce the ToDoItem. The predicate() and toDoItem() pair of methods is simple and convient for many critics. More sophisticated critics that produce more than one ToDoItem per critiquing, or that produce ToDoItem's that contain information that was already computed in the predicate, should override critique. If you override this method, you should call super.critique().

Overrides:
critique in class Critic
Parameters:
dm - the design material
dsgr - the designer
See Also:
Critic.critique(java.lang.Object, org.argouml.cognitive.Designer)

supports

public boolean supports(Decision d)
Specified by:
supports in interface Poster
Overrides:
supports in class Critic
See Also:
Poster.supports(org.argouml.cognitive.Decision)

getSupportedDecisions

public Vector getSupportedDecisions()
Specified by:
getSupportedDecisions in interface Poster
Overrides:
getSupportedDecisions in class Critic
See Also:
Poster.getSupportedDecisions()

addSupportedDecision

public void addSupportedDecision(Decision d)
Overrides:
addSupportedDecision in class Critic
Parameters:
d - the decision
See Also:
Critic.addSupportedDecision(org.argouml.cognitive.Decision)

supports

public boolean supports(Goal g)
Specified by:
supports in interface Poster
Overrides:
supports in class Critic
See Also:
Poster.supports(org.argouml.cognitive.Goal)

getSupportedGoals

public Vector getSupportedGoals()
Specified by:
getSupportedGoals in interface Poster
Overrides:
getSupportedGoals in class Critic
See Also:
Poster.getSupportedGoals()

addSupportedGoal

public void addSupportedGoal(Goal g)
Overrides:
addSupportedGoal in class Critic
Parameters:
g - the goal
See Also:
Critic.addSupportedGoal(org.argouml.cognitive.Goal)

containsKnowledgeType

public boolean containsKnowledgeType(String type)
Specified by:
containsKnowledgeType in interface Poster
Overrides:
containsKnowledgeType in class Critic
See Also:
Poster.containsKnowledgeType(java.lang.String)

addKnowledgeType

public void addKnowledgeType(String type)
Overrides:
addKnowledgeType in class Critic
Parameters:
type - the knowledgetype
See Also:
Critic.addKnowledgeType(java.lang.String)

expand

public String expand(String desc,
                     org.tigris.gef.util.VectorSet offs)
Description copied from interface: Poster
Customize the description string just before it is displayed.

Specified by:
expand in interface Poster
Overrides:
expand in class Critic
See Also:
Poster.expand(java.lang.String, org.tigris.gef.util.VectorSet)

getClarifier

public Icon getClarifier()
Specified by:
getClarifier in interface Poster
Overrides:
getClarifier in class Critic
See Also:
Poster.getClarifier()

isActive

public boolean isActive()
Description copied from class: Critic
Reply true iff this Critic can execute. This fact is normally determined by a ControlMech.

Overrides:
isActive in class Critic
Returns:
true iff this Critic can execute
See Also:
Critic.isActive()

isEnabled

public boolean isEnabled()
Description copied from class: Critic
This is a convient method for accessing one well-known control record. The enabled control record is a boolean that the user can turn on or off to manually enable or disable this Critic. It is normally combined with other ControlMech determinations with a logic-and.

Overrides:
isEnabled in class Critic
Returns:
true if enabled
See Also:
Critic.isEnabled()

toDoItem

public ToDoItem toDoItem(Object dm,
                         Designer dsgr)
Description copied from class: Critic
Reply the ToDoItem that the designer should see iff predicate() returns true. By default it just fills in the fields of the ToDoItem from accessor methods of this Critic. Critic Subclasses may override this method or the accessor methods to add computed fields to the ToDoItem. TODO: Critic's may want to add new fields to a ToDoItem to make stillValid more efficent.

Overrides:
toDoItem in class Critic
See Also:
Critic.toDoItem(java.lang.Object, org.argouml.cognitive.Designer)


ArgoUML © 1996-2004 (20050222)ArgoUML HomepageArgoUML Developers' pageArgoUML Cookbook