org.argouml.uml.cognitive.critics
Class CrMultipleAgg

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

public class CrMultipleAgg
extends CrUML

A critic to check that only one end of a binary association is an aggregation.

This is the second well-formedness rule for associations in the UML 1.3 standard (see section 2.5.3 of the standard).

Note. This only applies to binary associations. There is a separate critic (see CrNWayAgg) which deals with 3- or more-way assocations.

See Also:
ArgoUML User Manual: Two Aggregate ends (roles) in binary Association, Serialized Form

Field Summary
 
Fields inherited from class org.argouml.uml.cognitive.critics.CrUML
DEC_BEHAVIOR, DEC_CLASS_SELECTION, DEC_CODE_GEN, DEC_CONTAINMENT, DEC_EXPECTED_USAGE, DEC_INHERITANCE, DEC_INSTANCIATION, DEC_METHODS, DEC_MODULARITY, DEC_NAMING, DEC_PATTERNS, DEC_PLANNED_EXTENSIONS, DEC_RELATIONSHIPS, DEC_STATE_MACHINES, DEC_STEREOTYPES, DEC_STORAGE
 
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
CrMultipleAgg()
          Constructor for the critic.
 
Method Summary
 Class getWizardClass(ToDoItem item)
          Find the class which will handle the wizard behaviour.
 boolean predicate2(Object dm, Designer dsgr)
          The trigger for the critic.
 
Methods inherited from class org.argouml.uml.cognitive.critics.CrUML
expand, predicate, setHeadline, setResource, toDoItem
 
Methods inherited from class org.argouml.cognitive.critics.Critic
addControlRec, addKnowledgeType, addSupportedDecision, addSupportedGoal, addTrigger, beActive, beInactive, canFixIt, containsKnowledgeType, critique, defaultMoreInfoURL, fixIt, getArg, getArgs, getClarifier, getControlRec, getCriticCategory, getCriticKey, getCriticName, getCriticType, getDecisionCategory, getDescription, getDescriptionTemplate, getExpertEmail, getHeadline, getHeadline, getHeadline, getKnowledgeTypes, getMoreInfoURL, getMoreInfoURL, getPriority, getPriority, getSupportedDecisions, getSupportedGoals, getTriggerMask, initWizard, isActive, isEnabled, isRelevantToDecisions, isRelevantToGoals, makeWizard, matchReason, postItem, reasonCodeFor, setArg, setArgs, setDecisionCategory, setDescription, setEnabled, setExpertEmail, setKnowledgeTypes, setKnowledgeTypes, setKnowledgeTypes, setKnowledgeTypes, setMoreInfoURL, setPriority, snooze, snoozeOrder, stillValid, supports, supports, toString, unsnooze
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

CrMultipleAgg

public CrMultipleAgg()
Constructor for the critic.

Sets up the resource name, which will allow headline and description to found for the current locale. Provides a design issue category (CONTAINMENT), a knowledge type (SEMANTICS) and add triggers for "end_aggregation".

Method Detail

predicate2

public boolean predicate2(Object dm,
                          Designer dsgr)
The trigger for the critic.

Check that the number of ends is two, otherwise this should be handled by the critic for N-way assocations (see CrNWayAgg).

We do not handle association roles, which are a subclass of association. An association role should be fine, if its parent is OK, since it must be more tightly constrained than its parent.

Note. ArgoUML does not currently have a constructor to check that an association role is more tightly constrained than its parent.

Then loop through the ends, counting the number of aggregate ends. Note that we look for aggregation explicitly, rather than just absence of "no aggregation", so we don't trigger if the aggregation is just undefined.

Overrides:
predicate2 in class CrUML
Parameters:
dm - the Object to be checked against the critic.
dsgr - the Designer creating the model. Not used, this is for future development of ArgoUML.
Returns:
PROBLEM_FOUND if the critic is triggered, otherwise NO_PROBLEM.

getWizardClass

public Class getWizardClass(ToDoItem item)
Find the class which will handle the wizard behaviour.

Overrides:
getWizardClass in class Critic
Parameters:
item - the ToDoItem that triggered the critic.
Returns:
Class of the wizard.


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