// 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(); |