|
||||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--org.argouml.uml.reveng.java.Modeller
Modeller maps Java source code(parsed/recognised by ANTLR) to UML model elements, it applies some of the semantics in JSR26.
Field Summary | |
---|---|
private DiagramInterface |
_diagram
|
private Import |
_import
Current import session |
private boolean |
arraysAsDatatype
Arrays will be modelled as unique datatypes. |
private java.util.Hashtable |
attributes
Arbitrary attributes |
protected static Logger |
cat
Deprecated. by Linus Tolke as of 0.15.4. Use your own logger in your class. This will be removed. |
private java.lang.Object |
currentPackage
The package which the currentClassifier belongs to. |
private java.lang.String |
currentPackageName
Last package name used in addPackage(). |
private java.lang.String |
fileName
the name of the file being parsed |
private static Logger |
LOG
|
private java.lang.Object |
model
Current working model. |
private boolean |
noAssociations
Only attributes will be generated. |
private ParseState |
parseState
Keeps the data that varies during parsing. |
private java.util.Stack |
parseStateStack
Stack up the state when descending inner classes. |
Constructor Summary | |
---|---|
Modeller(java.lang.Object model,
DiagramInterface diagram,
Import _import,
boolean noAssociations,
boolean arraysAsDatatype,
java.lang.String fileName)
Create a new modeller. |
Method Summary | |
---|---|
void |
addAnonymousClass(java.lang.String type)
Called from the parser when an anonymous inner class is found. |
void |
addAttribute(short modifiers,
java.lang.String typeSpec,
java.lang.String name,
java.lang.String initializer,
java.lang.String javadoc)
Called from the parser when an attribute is found. |
void |
addBodyToOperation(java.lang.Object op,
java.lang.String body)
Called from the parser to add a method body to an operation. |
void |
addCall(java.lang.String method,
java.lang.String obj)
this method currently does nothing TODO: why? |
void |
addClass(java.lang.String name,
short modifiers,
java.lang.String superclassName,
java.util.Vector interfaces,
java.lang.String javadoc)
Called from the parser when a class declaration is found. |
private java.lang.Object |
addClassifier(java.lang.Object newClassifier,
java.lang.String name,
short modifiers,
java.lang.String javadoc)
Common code used by addClass and addInterface. |
void |
addComponent()
This is a mapping from a Java compilation Unit -> a UML component. |
private void |
addDocumentationTag(java.lang.Object modelElement,
java.lang.String sJavaDocs)
Add the javadocs as a tagged value 'documentation' to the model element. |
void |
addImport(java.lang.String name)
Called from the parser when an import clause is found. |
void |
addInterface(java.lang.String name,
short modifiers,
java.util.Vector interfaces,
java.lang.String javadoc)
Called from the parser when an interface declaration is found. |
private void |
addJavadocTagContents(java.lang.Object me,
java.lang.String sTagName,
java.lang.String sTagData)
Add the contents of a single standard javadoc tag to the model element. |
java.lang.Object |
addOperation(short modifiers,
java.lang.String returnType,
java.lang.String name,
java.util.Vector parameters,
java.lang.String javadoc)
Called from the parser when an operation is found. |
void |
addPackage(java.lang.String name)
Called from the parser when a package clause is found. |
private void |
cleanModelElement(java.lang.Object element)
This classifier was earlier generated by reference but now it is its time to be parsed so we clean out remnants. |
private java.lang.Object |
getAbstraction(java.lang.Object mPackage,
java.lang.Object parent,
java.lang.Object child)
Find an abstraction< |
private java.lang.Object |
getAssociationEnd(java.lang.String name,
java.lang.Object mClassifier)
Find an associationEnd from the currentClassifier to the type specified. |
java.lang.Object |
getAttribute(java.lang.String key)
|
private java.lang.Object |
getAttribute(java.lang.String name,
java.lang.String initializer,
java.lang.Object mClassifier)
Find an attribute in the currentClassifier. |
private java.lang.String |
getClassifierName(java.lang.String name)
Get the classifier name from a fully specified classifier name. |
private Context |
getContext(java.lang.String name)
Get the context for a classifier name that may or may not be fully qualified. |
private DiagramInterface |
getDiagram()
Get the current diagram. |
private java.lang.Object |
getGeneralization(java.lang.Object mPackage,
java.lang.Object parent,
java.lang.Object child)
Find a generalization in the model. |
private java.lang.Object |
getMethod(java.lang.String name)
Find an operation in the currentClassifier. |
private java.lang.Object |
getOperation(java.lang.String name)
Find an operation in the currentClassifier. |
private java.lang.Object |
getPackage(java.lang.String name)
Find a package in the model. |
private java.lang.String |
getPackageName(java.lang.String name)
Get the package name from a fully specified classifier name. |
private java.lang.String |
getRelativePackageName(java.lang.String packageName)
Get the relative package name from a fully qualified package name. |
private java.lang.Object |
getStereotype(java.lang.Object me,
java.lang.String name,
java.lang.String baseClass)
Find the first suitable stereotype with baseclass for a given object. |
private java.lang.Object |
getStereotype(java.lang.String name)
Get the stereotype with a specific name. |
private java.lang.Object |
getTaggedValue(java.lang.Object element,
java.lang.String name)
Return the tagged value with a specific tag. |
void |
popClassifier()
Called from the parser when a classifier is completely parsed. |
private java.lang.Object |
searchPackageInModel(java.lang.String name)
Search recursivly for nested packages in the model. |
void |
setAttribute(java.lang.String key,
java.lang.Object value)
|
private void |
setOwnerScope(java.lang.Object feature,
short modifiers)
Set the owner scope for a feature. |
private void |
setTargetScope(java.lang.Object mAssociationEnd,
short modifiers)
Set the target scope for an association end. |
private void |
setVisibility(java.lang.Object element,
short modifiers)
Set the visibility for a model element. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
protected static Logger cat
private static final Logger LOG
private java.lang.Object model
private DiagramInterface _diagram
private Import _import
private java.lang.Object currentPackage
private java.lang.String currentPackageName
private ParseState parseState
private java.util.Stack parseStateStack
private boolean noAssociations
private boolean arraysAsDatatype
private java.lang.String fileName
private java.util.Hashtable attributes
Constructor Detail |
public Modeller(java.lang.Object model, DiagramInterface diagram, Import _import, boolean noAssociations, boolean arraysAsDatatype, java.lang.String fileName)
diagram
- the interface to the diagram to add nodes and edges to_import
- noAssociations
- whether associations are modelled as attributesarraysAsDatatype
- whether darrays are modelled as dataypesfileName
- the current file namemodel
- The model to work with.Method Detail |
public java.lang.Object getAttribute(java.lang.String key)
public void setAttribute(java.lang.String key, java.lang.Object value)
private DiagramInterface getDiagram()
public void addComponent()
See JSR 26.
Adding components is a little messy since there are 2 cases:
In either case we need to add a package since we don't know in advance if there will be a package statement.
public void addPackage(java.lang.String name)
name
- The name of the package.public void addImport(java.lang.String name)
name
- The name of the import. Can end with a '*'.public void addClass(java.lang.String name, short modifiers, java.lang.String superclassName, java.util.Vector interfaces, java.lang.String javadoc)
name
- The name of the class.modifiers
- A sequence of class modifiers.superclassName
- Zero or one string with the name of the
superclass. Can be fully qualified or
just a simple class name.interfaces
- Zero or more strings with the names of implemented
interfaces. Can be fully qualified or just a
simple interface name.javadoc
- The javadoc comment. null or "" if no comment available.public void addAnonymousClass(java.lang.String type)
type
- The type of this anonymous class.public void addInterface(java.lang.String name, short modifiers, java.util.Vector interfaces, java.lang.String javadoc)
name
- The name of the interface.modifiers
- A sequence of interface modifiers.interfaces
- Zero or more strings with the names of extended
interfaces. Can be fully qualified or just a
simple interface name.javadoc
- The javadoc comment. "" if no comment available.private java.lang.Object addClassifier(java.lang.Object newClassifier, java.lang.String name, short modifiers, java.lang.String javadoc)
newClassifier
- Supply one if none is found in the model.name
- Name of the classifier.modifiers
- String of modifiers.javadoc
- The javadoc comment. null or "" if no comment available.
public void popClassifier()
public java.lang.Object addOperation(short modifiers, java.lang.String returnType, java.lang.String name, java.util.Vector parameters, java.lang.String javadoc)
modifiers
- A sequence of operation modifiers.returnType
- The return type of the operation.name
- The name of the operation as a stringparameters
- A number of vectors, each representing a
parameter.javadoc
- The javadoc comment. null or "" if no comment available.
public void addBodyToOperation(java.lang.Object op, java.lang.String body)
op
- An operation.body
- A method body.public void addAttribute(short modifiers, java.lang.String typeSpec, java.lang.String name, java.lang.String initializer, java.lang.String javadoc)
modifiers
- A sequence of attribute modifiers.typeSpec
- The attribute's type.name
- The name of the attribute.initializer
- The initial value of the attribute.javadoc
- The javadoc comment. null or "" if no comment available.private java.lang.Object getGeneralization(java.lang.Object mPackage, java.lang.Object parent, java.lang.Object child)
mPackage
- Look in this package.parent
- The superclass.child
- The subclass.
private java.lang.Object getAbstraction(java.lang.Object mPackage, java.lang.Object parent, java.lang.Object child)
mPackage
- Look in this package.parent
- The superclass.child
- The subclass.
private java.lang.Object getPackage(java.lang.String name)
name
- The name of the package.
private java.lang.Object searchPackageInModel(java.lang.String name)
name
- The fully qualified package name of the package we
are searching for.
private java.lang.Object getOperation(java.lang.String name)
name
- The name of the operation.
private java.lang.Object getMethod(java.lang.String name)
name
- The name of the method.
private java.lang.Object getAttribute(java.lang.String name, java.lang.String initializer, java.lang.Object mClassifier)
name
- The name of the attribute.initializer
- The initializer code.mClassifier
- The type, used when checking for existing
association.
private java.lang.Object getAssociationEnd(java.lang.String name, java.lang.Object mClassifier)
name
- The name of the attribute.mClassifier
- Where the association ends.
private java.lang.Object getStereotype(java.lang.String name)
name
- The name of the stereotype.
private java.lang.Object getStereotype(java.lang.Object me, java.lang.String name, java.lang.String baseClass)
me
- name
- baseClass
-
java.lang.IllegalArgumentException
- if the desired stereotypes for
the modelelement and baseclass was not found. No stereotype is
created.private java.lang.Object getTaggedValue(java.lang.Object element, java.lang.String name)
element
- The tagged value belongs to this.name
- The tag.
private void cleanModelElement(java.lang.Object element)
element
- that they are removed fromprivate java.lang.String getPackageName(java.lang.String name)
name
- A fully specified classifier name.
private java.lang.String getRelativePackageName(java.lang.String packageName)
packageName
- A fully qualified package name.
private java.lang.String getClassifierName(java.lang.String name)
name
- A fully specified classifier name.
private void setVisibility(java.lang.Object element, short modifiers)
element
- The model element.modifiers
- A sequence of modifiers which may contain
'private', 'protected' or 'public'.private void setOwnerScope(java.lang.Object feature, short modifiers)
feature
- The feature.modifiers
- A sequence of modifiers which may contain
'static'.private void setTargetScope(java.lang.Object mAssociationEnd, short modifiers)
mAssociationEnd
- The end.modifiers
- A sequence of modifiers which may contain
'static'.private Context getContext(java.lang.String name)
name
- The classifier name.private void addJavadocTagContents(java.lang.Object me, java.lang.String sTagName, java.lang.String sTagData)
addDocumentationTag(java.lang.Object, java.lang.String)
only.
me
- the model element to add toprivate void addDocumentationTag(java.lang.Object modelElement, java.lang.String sJavaDocs)
sJavaDocs
- the documentation comment to add ("" or null
if no java docs)public void addCall(java.lang.String method, java.lang.String obj)
method
- obj
-
|
||||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
ArgoUML © 1996-2004 (20040306) | ArgoUML Homepage | ArgoUML Developers' page | ArgoUML Cookbook |