// Open project file and get project model ProjectAccessor prjAccessor = AstahAPI.getAstahAPI().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());
}
}
} |
Name of a model is id which can be got by getId() of IElementImp.
Example: How to get hyperlink
type=file,name=astah_com.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 astah* 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;
}
|
Sample : findElements(Class elementKind, String name)
ProjectAccessor prjAccessor = AstahAPI.getAstahAPI().getProjectAccessor();
prjAccessor.open("C:\\test.asta");
//Search a class diagram named classDgm0
INamedElement[] iNamedElements = prjAccessor.findElements(IClassDiagram.class, "classDgm0");
//Search a Class named A
iNamedElements = prjAccessor.findElements(IClass.class, "A");
//Search an attribute named B
iNamedElements = prjAccessor.findElements(IAttribute.class, "B");
//Search an operation named C
iNamedElements = prjAccessor.findElements(IOperation.class, "C");
//Search an association named D
iNamedElements = prjAccessor.findElements(IAssociation.class, "D");
//Search an UseCase named E
iNamedElements = prjAccessor.findElements(IUseCase.class, "E");
//Search an Include named F
iNamedElements = prjAccessor.findElements(IInclude.class, "F");
//Search a state named G
iNamedElements = prjAccessor.findElements(IState.class, "G");
//Search a pseudostate named H
iNamedElements = prjAccessor.findElements(IPseudostate.class, "H");
//Search a transition named I
iNamedElements = prjAccessor.findElements(ITransition.class, "I");
//Search a partition named J
iNamedElements = prjAccessor.findElements(IPartition.class, "J");
//Search an action named K
iNamedElements = prjAccessor.findElements(IAction.class, "K");
//Search an objectnode named L
iNamedElements = prjAccessor.findElements(IObjectNode.class, "L");
//Search a flow named M
iNamedElements = prjAccessor.findElements(IFlow.class, "M");
//Search a lifeline named N
iNamedElements = prjAccessor.findElements(ILifeline.class, "N");
//Search a message named O
iNamedElements = prjAccessor.findElements(IMessage.class, "O");
//Search an External entity named P
iNamedElements = prjAccessor.findElements(IExternalEntity.class, "P");
//Search a datastore named Q
iNamedElements = prjAccessor.findElements(IDataStore.class, "Q");
//Search an ER model named R
iNamedElements = prjAccessor.findElements(IERModel.class, "R");
//Search an ERdomain named S
iNamedElements = prjAccessor.findElements(IERDomain.class, "S");
//Search an ER data type named USER_DEFINED_DATATYPE1
iNamedElements = prjAccessor.findElements(IERDatatype.class, "USER_DEFINED_DATATYPE1");
//Search an ER Entity named T
iNamedElements = prjAccessor.findElements(IEREntity.class, "T");
//Search an ER attribute named U
iNamedElements = prjAccessor.findElements(IERAttribute.class, "U");
//Search an ER relationship named V
iNamedElements = prjAccessor.findElements(IERRelationship.class, "V");
//Search an ERsubtype relationship named W
iNamedElements = prjAccessor.findElements(IERSubtypeRelationship.class, "W");
//Search an ER index named X
iNamedElements = prjAccessor.findElements(IERIndex.class, "X");
prjAccessor.close();
|
public abstract INamedElement[] findElements(Class elementKind) throws ProjectNotFoundException;
Search elements by element type. This search does not apply for presentations such as ITopicPresentation.
Example : Search a class diagram named classDgm0 by using findElements(Class elementKind)
ProjectAccessor prjAccessor = AstahAPI.getAstahAPI().getProjectAccessor();
prjAccessor.open("C:\\test.asta");
//Search a class diagram
INamedElement[] iNamedElements = prjAccessor.findElements(IClassDiagram.class);
prjAccessor.close();
|
public INamedElement[] findElements(ModelFinder picker) throws ProjectNotFoundException;
Search element by using ModelFinder.
Example : Search by using findElements(ModelFinder picker)
//A class that implements ModelFinder interface which extracts Class diagram
class ClassDiagramPicker implements ModelFinder {
public boolean isTarget(INamedElement namedElement) {
if (namedElement instanceof IClassDiagram) {
return true;
}
return false;
}
}
|
ProjectAccessor prjAccessor = AstahAPI.getAstahAPI().getProjectAccessor();
prjAccessor.open("C:\\test.asta");
//Search a class diagram named classDgm0
INamedElement[] iNamedElements = prjAccessor.findElements(new ClassDiagramPicker());
prjAccessor.close();
|