org.argouml.cognitive
Class Critic

java.lang.Object
  extended by java.util.Observable
      extended by org.argouml.cognitive.Critic
All Implemented Interfaces:
java.io.Serializable, Poster
Direct Known Subclasses:
CompoundCritic

public class Critic
extends java.util.Observable
implements Poster, java.io.Serializable

"Abstract" base class for design critics. Each subclass should define its own predicate method and define its own relevance tags.

A critic supports design goals and decisions, which can be adjusted accordingly. It will post todo items which may or may not be relevant to the particular designer.

Steps to follow when adding a critic are listed in the Argo cookbook under define_critic.

See Also:
Serialized Form

Field Summary
static javax.swing.Icon DEFAULT_CLARIFIER
          The icon representing the resource.
static java.lang.String KT_COMPLETENESS
          Type of knowledge that critics can deliver.
static java.lang.String KT_CONSISTENCY
          Type of knowledge that critics can deliver.
static java.lang.String KT_CORRECTNESS
          Type of knowledge that critics can deliver.
static java.lang.String KT_DESIGNERS
          Type of knowledge that critics can deliver.
static java.lang.String KT_EXPERIENCIAL
          Type of knowledge that critics can deliver.
static java.lang.String KT_OPTIMIZATION
          Type of knowledge that critics can deliver.
static java.lang.String KT_ORGANIZATIONAL
          Type of knowledge that critics can deliver.
static java.lang.String KT_PRESENTATION
          Type of knowledge that critics can deliver.
static java.lang.String KT_SEMANTICS
          Type of knowledge that critics can deliver.
static java.lang.String KT_SYNTAX
          Type of knowledge that critics can deliver.
static java.lang.String KT_TOOL
          Type of knowledge that critics can deliver.
static boolean NO_PROBLEM
          NO_PROBLEM is used for the result of the check of a critic.
static boolean PROBLEM_FOUND
          PROBLEM_FOUND is used for the result of the check of a critic.
 
Constructor Summary
Critic()
          Construct a new critic instance.
 
Method Summary
 java.lang.Object addControlRec(java.lang.String name, java.lang.Object controlData)
          Add some attribute used by ControlMech to determine if this Critic should be active.
 void addKnowledgeType(java.lang.String type)
           
 void addSupportedDecision(Decision d)
           
 void addSupportedGoal(Goal g)
           
 void addTrigger(java.lang.String s)
           
 void beActive()
          Make this critic active.
 void beInactive()
          Make this critic inactive.
 boolean canFixIt(ToDoItem item)
           
 boolean containsKnowledgeType(java.lang.String type)
           
 void critique(java.lang.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.
 java.lang.String defaultMoreInfoURL()
          This function calculates the default URL to describe this critic.
 java.lang.String expand(java.lang.String desc, ListSet offs)
          Customize the description string just before it is displayed.
 void fixIt(ToDoItem item, java.lang.Object arg)
          TODO: Not implemented yet.
protected  java.lang.Object getArg(java.lang.String name)
          Deprecated. for 0.25.4 by Linus Tolke. This way of storing information encourages violation of type safety. Create member attributes instead.
 java.util.Hashtable<java.lang.String,java.lang.Object> getArgs()
          Deprecated. for 0.25.4 by Linus Tolke. This way of storing information encourages violation of type safety. Create member attributes instead.
 javax.swing.Icon getClarifier()
           
 java.lang.Object getControlRec(java.lang.String name)
          Reply the named control record, or null if not defined.
 java.lang.String getCriticCategory()
          Returns a default critic category.
 java.util.Set<java.lang.Object> getCriticizedDesignMaterials()
          Get the design materials to be criticized by this critic
 org.argouml.configuration.ConfigurationKey getCriticKey()
          Returns the ConfigurationKey that the critic uses to determine if it is enabled or disabled.
 java.lang.String getCriticName()
          Returns a default critic name.
 java.lang.String getCriticType()
          Reply a string used to contol critics according to type.
 java.lang.String getDecisionCategory()
          Reply a string used to determine if this critic would be relevant to current design decisions.
 java.lang.String getDescription(ListSet offenders, Designer dsgr)
          Reply the description used in feedback produced by this Critic.
 java.lang.String getDescriptionTemplate()
           
 java.lang.String getHeadline()
          Reply the headline used in feedback produced by this Critic.
 java.lang.String getHeadline(ListSet offenders, Designer dsgr)
          Reply the headline used in feedback produced by this Critic.
 java.lang.String getHeadline(java.lang.Object dm, Designer dsgr)
          Reply the headline used in feedback produced by this Critic.
 ListSet<java.lang.String> getKnowledgeTypes()
           
 java.lang.String getMoreInfoURL()
           
 java.lang.String getMoreInfoURL(ListSet offenders, Designer dsgr)
          Reply the moreInfoURL used in feedback produced by this Critic.
 int getPriority()
           
 int getPriority(ListSet offenders, Designer dsgr)
          Reply the priority used in feedback produced by this Critic.
 java.util.List<Decision> getSupportedDecisions()
           
 java.util.List<Goal> getSupportedGoals()
           
 long getTriggerMask()
           
 java.lang.Class getWizardClass(ToDoItem item)
          Return the Class of wizard that can fix the problem identifed by this critic.
 void initWizard(org.argouml.cognitive.critics.Wizard w)
          Initialize a newly created wizard with information found by the critic.
 boolean isActive()
          Reply true iff this Critic can execute.
 boolean isEnabled()
          This is a convient method for accessing one well-known control record.
 boolean isRelevantToDecisions(Designer dsgr)
          Reply true if this Critic is relevant to the decisions that the Designer is considering.
 boolean isRelevantToGoals(Designer dsgr)
          Reply true iff this Critic is relevant to the goals that the Designer is trying to achieve.
 boolean isSnoozed()
          Checks if the critic is currently snoozed.
 org.argouml.cognitive.critics.Wizard makeWizard(ToDoItem item)
          Create a new Wizard to help the user fix the identified problem.
 boolean matchReason(long patternCode)
           
 void postItem(ToDoItem item, java.lang.Object dm, Designer dsgr)
           
 boolean predicate(java.lang.Object dm, Designer dsgr)
          Perform the Critic's analysis of the design.
static int reasonCodeFor(java.lang.String s)
           
protected  void setArg(java.lang.String name, java.lang.Object value)
          Deprecated. for 0.25.4 by Linus Tolke. This way of storing information encourages violation of type safety. Create member attributes instead.
 void setArgs(java.util.Hashtable<java.lang.String,java.lang.Object> h)
          Deprecated. for 0.25.4 by Linus Tolke. This way of storing information encourages violation of type safety. Create member attributes instead.
protected  void setDecisionCategory(java.lang.String c)
          Set the decisionCategory, usually done in the constructor.
 void setDescription(java.lang.String d)
           
 void setEnabled(boolean e)
           
 void setHeadline(java.lang.String h)
          Set the headline used in feedback produced by this Critic.
 void setKnowledgeTypes(ListSet<java.lang.String> kt)
           
 void setKnowledgeTypes(java.lang.String t1)
          Reset all knowledgetypes, and add the given one.
 void setKnowledgeTypes(java.lang.String t1, java.lang.String t2)
          Reset all knowledgetypes, and add the given ones.
 void setKnowledgeTypes(java.lang.String t1, java.lang.String t2, java.lang.String t3)
          Reset all knowledgetypes, and add the given ones.
 void setMoreInfoURL(java.lang.String m)
           
 void setPriority(int p)
           
 void snooze()
          Disable this Critic for the next few minutes.
 org.argouml.cognitive.critics.SnoozeOrder snoozeOrder()
          Reply the SnoozeOrder that is defined for this critic.
 boolean stillValid(ToDoItem i, Designer dsgr)
          Return true iff the given ToDoItem is still valid and should be kept in the given designers ToDoList.
 boolean supports(Decision d)
           
 boolean supports(Goal g)
           
 ToDoItem toDoItem(java.lang.Object dm, Designer dsgr)
          Reply the ToDoItem that the designer should see iff predicate() returns true.
 java.lang.String toString()
           
 void unsnooze()
          Lift any previous SnoozeOrder.
 
Methods inherited from class java.util.Observable
addObserver, clearChanged, countObservers, deleteObserver, deleteObservers, hasChanged, notifyObservers, notifyObservers, setChanged
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

PROBLEM_FOUND

public static final boolean PROBLEM_FOUND
PROBLEM_FOUND is used for the result of the check of a critic.

See Also:
Constant Field Values

NO_PROBLEM

public static final boolean NO_PROBLEM
NO_PROBLEM is used for the result of the check of a critic.

See Also:
Constant Field Values

KT_DESIGNERS

public static final java.lang.String KT_DESIGNERS
Type of knowledge that critics can deliver.


KT_CORRECTNESS

public static final java.lang.String KT_CORRECTNESS
Type of knowledge that critics can deliver.


KT_COMPLETENESS

public static final java.lang.String KT_COMPLETENESS
Type of knowledge that critics can deliver.


KT_CONSISTENCY

public static final java.lang.String KT_CONSISTENCY
Type of knowledge that critics can deliver.


KT_SYNTAX

public static final java.lang.String KT_SYNTAX
Type of knowledge that critics can deliver.


KT_SEMANTICS

public static final java.lang.String KT_SEMANTICS
Type of knowledge that critics can deliver.


KT_OPTIMIZATION

public static final java.lang.String KT_OPTIMIZATION
Type of knowledge that critics can deliver.


KT_PRESENTATION

public static final java.lang.String KT_PRESENTATION
Type of knowledge that critics can deliver.


KT_ORGANIZATIONAL

public static final java.lang.String KT_ORGANIZATIONAL
Type of knowledge that critics can deliver.


KT_EXPERIENCIAL

public static final java.lang.String KT_EXPERIENCIAL
Type of knowledge that critics can deliver.


KT_TOOL

public static final java.lang.String KT_TOOL
Type of knowledge that critics can deliver.


DEFAULT_CLARIFIER

public static final javax.swing.Icon DEFAULT_CLARIFIER
The icon representing the resource.

Constructor Detail

Critic

public Critic()
Construct a new critic instance. Typically only one instance of each critic class is created and stored in a static variable, as per the Singleton pattern. Each domain extension should define a static initializer block to make one instance of each critic and call Agency.register(Critic, Object) with that instance.

Method Detail

defaultMoreInfoURL

public final java.lang.String defaultMoreInfoURL()
This function calculates the default URL to describe this critic.

Returns:
the URL in string format

getCriticKey

public org.argouml.configuration.ConfigurationKey getCriticKey()
Returns the ConfigurationKey that the critic uses to determine if it is enabled or disabled.

The string resulting from the ConfigurationKey argo.critic.critic_category.critic_name.

critic_category would describe the type of critic and is taken from getCriticCategory().

critic_name would describe the function of the critic and is taken from getCriticName().

Some examples:

Returns:
the key
Since:
0.9.4
See Also:
Configuration.makeKey(String, String, String), getCriticCategory(), getCriticName()

getCriticCategory

public java.lang.String getCriticCategory()
Returns a default critic category. Critics should override this to provide specific classification information.

Returns:
a default category
Since:
0.9.4

getCriticName

public java.lang.String getCriticName()
Returns a default critic name. By default this is the simple class name. Critic implementations should override this to provide a better (more descriptive) string.

Returns:
a default critic name
Since:
0.9.4

critique

public void critique(java.lang.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. 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().

Parameters:
dm - the design material
dsgr - the designer
See Also:
predicate(java.lang.Object, org.argouml.cognitive.Designer), toDoItem(java.lang.Object, org.argouml.cognitive.Designer)

postItem

public void postItem(ToDoItem item,
                     java.lang.Object dm,
                     Designer dsgr)
Parameters:
item - the todo item
dm - the designmaterial/offender to be informed
dsgr - the designer

predicate

public boolean predicate(java.lang.Object dm,
                         Designer dsgr)
Perform the Critic's analysis of the design. Subclasses should test the given Object to make sure that it is the type of object that is expected. Each object in the design registers its own critics with the run-time system. The dm parameter is bound to each design object that registered this critic, one per call. Returning true means that feedback should be delivered to the Designer. By convention, subclasses should return their superclass predicate method if their own predicate would return false.

Parameters:
dm - the design material, which is to be checked
dsgr - the designer
Returns:
the critic result

stillValid

public boolean stillValid(ToDoItem i,
                          Designer dsgr)
Return true iff the given ToDoItem is still valid and should be kept in the given designers ToDoList. Critics that are not enabled should always return false so that their ToDoItems will be removed. Subclasses of Critic that supply multiple offenders should always override this method.

By default this method basically asks the critic to again critique the offending Object and then it checks if the resulting ToDoItem is the same as the one already posted. This is simple and it works fine for light-weight critics. Critics that expend a lot of computational effort in making feedback that can be easily check to see if it still holds, should override this method.

TODO: Maybe ToDoItem should carry some data to make this method more efficient. Reply true if the given item should be kept on the Designer's ToDoList, false if it is no longer valid.

Specified by:
stillValid in interface Poster
Parameters:
i - the todo item
dsgr - the designer
Returns:
true if thisitem is still valid

supports

public boolean supports(Decision d)
Specified by:
supports in interface Poster
Parameters:
d - the decision
Returns:
true if the decision is still supported

getSupportedDecisions

public java.util.List<Decision> getSupportedDecisions()
Specified by:
getSupportedDecisions in interface Poster
Returns:
the list of supported decisions

addSupportedDecision

public void addSupportedDecision(Decision d)
Parameters:
d - the decision

supports

public boolean supports(Goal g)
Specified by:
supports in interface Poster
Parameters:
g - the goal
Returns:
true if the goal is still supported

getSupportedGoals

public java.util.List<Goal> getSupportedGoals()
Specified by:
getSupportedGoals in interface Poster
Returns:
the list of supported goals

addSupportedGoal

public void addSupportedGoal(Goal g)
Parameters:
g - the goal

containsKnowledgeType

public boolean containsKnowledgeType(java.lang.String type)
Specified by:
containsKnowledgeType in interface Poster
Parameters:
type - the knowledge type
Returns:
true if it is valid

addKnowledgeType

public void addKnowledgeType(java.lang.String type)
Parameters:
type - the knowledgetype

getKnowledgeTypes

public ListSet<java.lang.String> getKnowledgeTypes()
Returns:
the knowledgetypes

setKnowledgeTypes

public void setKnowledgeTypes(ListSet<java.lang.String> kt)
Parameters:
kt - the knowledgetypes

setKnowledgeTypes

public void setKnowledgeTypes(java.lang.String t1)
Reset all knowledgetypes, and add the given one.

Parameters:
t1 - the only knowledgetype in string format

setKnowledgeTypes

public void setKnowledgeTypes(java.lang.String t1,
                              java.lang.String t2)
Reset all knowledgetypes, and add the given ones.

Parameters:
t1 - a knowledgetype in string format
t2 - a knowledgetype in string format

setKnowledgeTypes

public void setKnowledgeTypes(java.lang.String t1,
                              java.lang.String t2,
                              java.lang.String t3)
Reset all knowledgetypes, and add the given ones.

Parameters:
t1 - a knowledgetype in string format
t2 - a knowledgetype in string format
t3 - a knowledgetype in string format

reasonCodeFor

public static int reasonCodeFor(java.lang.String s)
Parameters:
s - the reason
Returns:
the code for the given reason

getTriggerMask

public long getTriggerMask()
Returns:
the trigger mask

addTrigger

public void addTrigger(java.lang.String s)
Parameters:
s - the trigger to be added (is ORed into the mask)

matchReason

public boolean matchReason(long patternCode)
Parameters:
patternCode - the mask to be checked
Returns:
true if it matches a trigger

expand

public java.lang.String expand(java.lang.String desc,
                               ListSet offs)
Description copied from interface: Poster
Customize the description string just before it is displayed.

Specified by:
expand in interface Poster
Parameters:
desc - the description
offs - the offenders
Returns:
the customized/expanded string

getClarifier

public javax.swing.Icon getClarifier()
Specified by:
getClarifier in interface Poster
Returns:
the icon shown on the todo item to show the wizard's progress

isActive

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

Returns:
true iff this Critic can execute

beActive

public void beActive()
Make this critic active. From now on it can be applied to a design material in critiquing.


beInactive

public void beInactive()
Make this critic inactive. From now on it will be idle and will not be applied to a design material in critiquing.


addControlRec

public java.lang.Object addControlRec(java.lang.String name,
                                      java.lang.Object controlData)
Add some attribute used by ControlMech to determine if this Critic should be active. Critics store control record so that stateful ControlMech's do not need to store a parallel data structure. But Critic's do not directy use or modify this data.

Parameters:
name - the key
controlData - the value
Returns:
the previous value of the specified key in this hashtable, or null if it did not have one

getControlRec

public java.lang.Object getControlRec(java.lang.String name)
Reply the named control record, or null if not defined.

Parameters:
name - the key
Returns:
the value

isEnabled

public boolean isEnabled()
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.

Returns:
true if enabled

setEnabled

public void setEnabled(boolean e)
Parameters:
e - the value to be set for the key ENABLED

snoozeOrder

public org.argouml.cognitive.critics.SnoozeOrder snoozeOrder()
Reply the SnoozeOrder that is defined for this critic.

Returns:
the snooze order

snooze

public void snooze()
Disable this Critic for the next few minutes.

Specified by:
snooze in interface Poster

unsnooze

public void unsnooze()
Lift any previous SnoozeOrder.

Specified by:
unsnooze in interface Poster

isSnoozed

public boolean isSnoozed()
Checks if the critic is currently snoozed.

Returns:
true if the critic is snoozed

isRelevantToDecisions

public boolean isRelevantToDecisions(Designer dsgr)
Reply true if this Critic is relevant to the decisions that the Designer is considering. By default just asks the Designer if he/she is considering my decisionCategory. Really this is something for a ControlMech to compute, but if a subclass of Critic encapsulates some information you may need to override this method.

Parameters:
dsgr - the designer
Returns:
true if relevant

isRelevantToGoals

public boolean isRelevantToGoals(Designer dsgr)
Reply true iff this Critic is relevant to the goals that the Designer is trying to achieve. By default, all Critic's are relevant regardless of the GoalModel. Really this is something for a ControlMech to compute, but if a subclass of Critic encapsulates some information you may need to override this method.

TODO: I would like a better default action, but goals are typed and their values must be interperted by critics. They are not as generic as the DecisionModel.

Parameters:
dsgr - the designer
Returns:
true if relevant

makeWizard

public org.argouml.cognitive.critics.Wizard makeWizard(ToDoItem item)
Create a new Wizard to help the user fix the identified problem. This version assumes subclasses override getWizClass to return the appropriate Class of wizard. Critic subclasses that need to initialize their wizard might override this to call super.makeWizard() and then work with the result.

Parameters:
item - the todo item
Returns:
the wizard

getWizardClass

public java.lang.Class getWizardClass(ToDoItem item)
Return the Class of wizard that can fix the problem identifed by this critic. This method returns null, subclasses with wizards should override it.

Parameters:
item - the todo item
Returns:
null if no wizard is defined.

initWizard

public void initWizard(org.argouml.cognitive.critics.Wizard w)
Initialize a newly created wizard with information found by the critic. This is called right after the wizard is made in makeWizard() and after the wizard's ToDoItem is set. Any critic that supports wizards should probably override this method, and call super initWizard() first.

Parameters:
w - the wizard

getDecisionCategory

public java.lang.String getDecisionCategory()
Reply a string used to determine if this critic would be relevant to current design decisions. Strings returned from here are compared to strings in the DecisionModel.

Returns:
the decision category

setDecisionCategory

protected void setDecisionCategory(java.lang.String c)
Set the decisionCategory, usually done in the constructor. I have not yet thought of a case where dynamically changing the Critic's decisionCategory is useful.

Parameters:
c - the category

getCriticType

public java.lang.String getCriticType()
Reply a string used to contol critics according to type. Examples include: correctness, completeness, consistency, optimization, presentation, and alternative.

Returns:
the critic knowledge type

getHeadline

public java.lang.String getHeadline(java.lang.Object dm,
                                    Designer dsgr)
Reply the headline used in feedback produced by this Critic.

Parameters:
dm - the design material
dsgr - the designer
Returns:
the headline

getHeadline

public java.lang.String getHeadline(ListSet offenders,
                                    Designer dsgr)
Reply the headline used in feedback produced by this Critic.

Parameters:
offenders - the set of offenders
dsgr - the designer
Returns:
the headline

getHeadline

public java.lang.String getHeadline()
Reply the headline used in feedback produced by this Critic.

Returns:
the headline

setHeadline

public void setHeadline(java.lang.String h)
Set the headline used in feedback produced by this Critic.

Parameters:
h - the headline

getPriority

public int getPriority(ListSet offenders,
                       Designer dsgr)
Reply the priority used in feedback produced by this Critic.

Parameters:
offenders - the offenders
dsgr - the designer
Returns:
the priority

setPriority

public void setPriority(int p)
Parameters:
p - the priority

getPriority

public int getPriority()
Returns:
the priority

getDescription

public java.lang.String getDescription(ListSet offenders,
                                       Designer dsgr)
Reply the description used in feedback produced by this Critic.

Parameters:
offenders - the offenders
dsgr - the designer
Returns:
the description

setDescription

public void setDescription(java.lang.String d)
Parameters:
d - the description

getDescriptionTemplate

public java.lang.String getDescriptionTemplate()
Returns:
the description

getMoreInfoURL

public java.lang.String getMoreInfoURL(ListSet offenders,
                                       Designer dsgr)
Reply the moreInfoURL used in feedback produced by this Critic.

Parameters:
offenders - the offenders
dsgr - the designer
Returns:
the more-info-url

setMoreInfoURL

public void setMoreInfoURL(java.lang.String m)
Parameters:
m - the more-info-url

getMoreInfoURL

public java.lang.String getMoreInfoURL()
Returns:
the more-info-url

setArg

@Deprecated
protected void setArg(java.lang.String name,
                                 java.lang.Object value)
Deprecated. for 0.25.4 by Linus Tolke. This way of storing information encourages violation of type safety. Create member attributes instead.

Parameters:
name - the key
value - the value

getArg

@Deprecated
protected java.lang.Object getArg(java.lang.String name)
Deprecated. for 0.25.4 by Linus Tolke. This way of storing information encourages violation of type safety. Create member attributes instead.

Parameters:
name - the key
Returns:
the value

getArgs

@Deprecated
public java.util.Hashtable<java.lang.String,java.lang.Object> getArgs()
Deprecated. for 0.25.4 by Linus Tolke. This way of storing information encourages violation of type safety. Create member attributes instead.

Returns:
the (key, value) pairs

setArgs

@Deprecated
public void setArgs(java.util.Hashtable<java.lang.String,java.lang.Object> h)
Deprecated. for 0.25.4 by Linus Tolke. This way of storing information encourages violation of type safety. Create member attributes instead.

Parameters:
h - the new table of (key, value) pairs

getCriticizedDesignMaterials

public java.util.Set<java.lang.Object> getCriticizedDesignMaterials()
Get the design materials to be criticized by this critic

Returns:
the design materials

toDoItem

public ToDoItem toDoItem(java.lang.Object dm,
                         Designer dsgr)
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.

Parameters:
dm - the offender
dsgr - the designer
Returns:
ToDoItem
See Also:
critique(java.lang.Object, org.argouml.cognitive.Designer)

canFixIt

public boolean canFixIt(ToDoItem item)
Specified by:
canFixIt in interface Poster
Parameters:
item - the todo item
Returns:
true if it can be fixed

fixIt

public void fixIt(ToDoItem item,
                  java.lang.Object arg)
Description copied from interface: Poster
TODO: Not implemented yet. If the given ToDoItem can be fixed automatically, and the user wants that to happen, then do it. Obviously, this depends on the specific Critic and problem. By default this method does nothing.

Specified by:
fixIt in interface Poster
Parameters:
item - the todo item
arg - the design material (?)

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object


ArgoUML © 1996-2006ArgoUML HomepageArgoUML Cookbook