Visitors
Visitor design pattern is implemented in UML model structure. Every com.nomagic.uml2.ext.magicdraw.classes.mdkernel.Element has the accept(AbstractVisitor) method for visiting it.
The com.nomagic.uml2.impl.ModelVisitor has the visit<element_metatype> method for all types of model elements. This is very useful when you are working with a large collection of elements and need to perform actions, specific for every type of Element (for example, save/load, copy/paste, or a specific properties setting).
Just derive your class from com.nomagic.magicdraw.uml.InheritanceVisitor and override some visit... methods and call accept(AbstractVisitor) for Elements.
ModelVisitor myVisitor =
new
ModelVisitor()
{
// override some visit methods ...
public
void
visitClass(Class element, VisitorContext context)
{
//this is my UML Class
}
};
Project project = ...;
Package root = project.getPrimaryModel();
Iterator<Element> it = root.getOwnedElement().iterator();
while
(it.hasNext())
{
it.next().accept(myVisitor);
}
You can find the code examples in <programinstallation directory>\openapi\examples\statistics