// Open project file and get project model ProjectAccessor prjAccessor = ProjectAccessorFactory.getProjectAccessor(); prjAccessor.open(inputFile); IModel iModel = prjAccessor.getProject(); |
/**
* Get packages under Package recursively.
*
* @param iPackage
* Selected Package
* @param iPackages
* The list of all stored packages
* @return The list of all stored packages
*/
private List getPackages(IPackage iPackage, List iPackages) {
INamedElement[] iNamedElements = iPackage.getOwnedElements();
for (int i = 0; i < iNamedElements.length; i++) {
INamedElement iNamedElement = iNamedElements[i];
if (iNamedElement instanceof IPackage) {
iPackages.add(iNamedElement);
getPackages((IPackage)iNamedElement, iPackages);
}
}
return iPackages;
}
|
/**
* Get classes under the selected Package.
*
* @param iPackage
* Selected package
* @return the list of all stored classes
*/
private List getIClasses(IPackage iPackage) {
List iClasses = new ArrayList();
INamedElement[] iNamedElements = iPackage.getOwnedElements();
for (int i = 0; i < iNamedElements.length; i++) {
INamedElement iNamedElement = iNamedElements[i];
if (iNamedElement instanceof IClass) {
iClasses.add(iNamedElement);
}
}
return iClasses;
}
|
/**
* Get the class name with Full Path
*
* @param iClass
* Class
* @return Class name (Full Path)
*/
private String getFullName(IClass iClass) {
StringBuffer sb = new StringBuffer();
IElement owner = iClass.getOwner();
while (owner != null && owner instanceof INamedElement && owner.getOwner() != null) {
sb.insert(0, ((INamedElement) owner).getName() + "::");
owner = owner.getOwner();
}
sb.append(iClass.getName());
return sb.toString();
}
|
Example: How to get an activity diagram
public List getActivityDiagram(IPackage iPackage) {
List activityDiagrams = new ArrayList();
IDiagram[] dgms = iPackage.getDiagrams();
for (int i = 0; i < dgms.length; i++) {
IDiagram dgm = dgms[i];
if (dgm instanceof IActivityDiagram
&& !((IActivityDiagram )dgm).isFlowChart()) {
activityDiagrams.add(dgm);
}
}
return activityDiagrams;
}
|
Example: How to get an sequence diagram
public List getFlowCharts(IPackage iPackage) {
List flowCharts = new ArrayList();
IDiagram[] dgms = iPackage.getDiagrams();
for (int i = 0; i < dgms.length; i++) {
IDiagram dgm = dgms[i];
if (dgm instanceof IActivityDiagram
&& ((IActivityDiagram )dgm).isFlowChart()) {
flowCharts.add(dgm);
}
}
return flowCharts ;
}
|
Example: How to get alias1
private static final String KEY_ALIAS1 = "jude.multi_language.alias1";
private String geAlias1(INamedElement element) {
ITaggedValue[] tvs = element.getTaggedValues();
for (int i = 0; i < tvs.length; i++) {
ITaggedValue tv = tvs[i];
if (KEY_ALIAS1.equals(tv.getKey())) {
return tv.getValue();
}
}
return null;
}
|
Example for getting hyperlink
private void showHyperlinkStrings(INamedElement element) {
IHyperlink[] links = element.getHyperlinks();
for (int i = 0; i < links.length; i++) {
IHyperlink link = links[i];
if(link.isFile()) {
System.out.println(link.getName());
System.out.println(link.getPath());
System.out.println(link.getComment());
} else if(link.isModel()) {
System.out.println(link.getName());
System.out.println(link.getPath());
System.out.println(link.getComment());
} else if(link.isURL()) {
System.out.println(link.getName());
System.out.println(link.getPath());
System.out.println(link.getComment());
}
}
} |
Just like the example below, name of a model is id which can be got by getId() of IElementImp.
Example: How to get hyperlink
type=file,name=jude.log,path=C:/Documents and Settings,comment= Target is a file type=url,name=http://www.change-vision.com,path=http://,comment= Target is a web page type=model,name=9a1411-1112fec29a5-0804d01aa6c5fb9fe2aab956b4ca593a,path=,comment= Target is a Jude model |
How to get loop start element
private static final String LOOP_START_ELEMENT = "loop_start";
public List getLoopStartElements(IActivityDiagram iActivityDiagram) {
List loopStartElements = new ArrayList();
IActivity iActivity = iActivityDiagram.getActivity();
IActivityNode[] activityNodes = iActivity.getActivityNodes();
for (int i = 0; i < activityNodes.length; i++) {
IActivityNode node = activityNodes[i];
String[] stereotypes = node.getStereotypes();
for (int j = 0; j < stereotypes.length; j++) {
if (LOOP_START_ELEMENT.equals(stereotypes[j])) {
loopStartElements.add(node);
break;
}
}
}
return loopStartElements;
}
|