ログイン
検索
メインメニュー
フォーラム一覧   -   トピック一覧
   astah*の使い方
     Astah-APIにおけるシーケンス図内のメッセージに割り当てられた操作の取得について
投稿するにはまず登録を

フラット表示 前のトピック | 次のトピック
投稿者 トピック
eiten
投稿日時: 2016-1-4 15:16
新米
登録日: 2016-1-4
居住地:
投稿: 4
Astah-APIにおけるシーケンス図内のメッセージに割り当てられた操作の取得について
初めて質問をさせていただきます。
Astah-APIを利用してシーケンス図内に存在するメッセージとそれに割り当てられた操作の名称・引数・返り値を取得したいと思い、以下のようなコードを作成したのですが、メッセージを取得することはできるものの、割り当てられた操作を取得することがうまくできていません。
具体的には変数iOperationの値がnullとなっていて、その操作内の引数を取得することができません。
シーケンス図内のメッセージに割り当てられた操作を取得することは不可能なのでしょうか。
可能な場合は、どのようにすれば良いのでしょうか。

以下のソースコードはメッセージ内の操作を取得しようとしたメソッドです(一部抜粋)


private ArrayList<String> searchExistingSequenceDiagramNameList(String className, String operationFullName, AstahProject project){
ArrayList<String> existingSequenceDiagramList = new ArrayList<String>();
try{
for(AstahSequenceDiagram sequenceDiagram : project.getSequenceDiagramList()){
try{
int lifelineNum = 0;
for (lifelineNum = 0; lifelineNum < sequenceDiagram.getISequenceDiagram().getInteraction().getLifelines().length; lifelineNum++){
if(sequenceDiagram.getISequenceDiagram().getInteraction().getLifelines()[lifelineNum].getBase().getName().equals(className) ){
try{
int messageNum = 0;
for (messageNum = 0; messageNum < sequenceDiagram.getISequenceDiagram().getInteraction().getLifelines()[lifelineNum].getFragments().length; messageNum++){
try{
if (sequenceDiagram.getISequenceDiagram().getInteraction().getLifelines()[lifelineNum].getFragments()[messageNum] instanceof IMessage){
IMessage iMessage = (IMessage)sequenceDiagram.getISequenceDiagram().getInteraction().getLifelines()[lifelineNum].getFragments()[messageNum];
IOperation iOperation = iMessage.getOperation();
//この値がnullとなっていて、うまく割り当てられた操作を取得できません
if (iOperation != null){
if (getOperationFullName(iOperation).equals(operationFullName)){
existingSequenceDiagramList.add(sequenceDiagram.getISequenceDiagram().getName());
}
}
}
}catch(NullPointerException e){
e.printStackTrace();
}
}
}catch(NullPointerException e){
e.printStackTrace();
}
}
}
}catch(NullPointerException e){
e.printStackTrace();
}
}
}catch(NullPointerException e){
e.printStackTrace();
}
return existingSequenceDiagramList;
}

//こちらのメソッドはiOperationが正しく取得できていれば正しく動くことを確認済みです
private String getOperationFullName(IOperation iOperation){
String operationFullName = iOperation.getName() + "(";
for (int i = 0; i < iOperation.getParameters().length; i++){
if (i != 0){
operationFullName += ", ";
}
operationFullName += iOperation.getParameters()[i].getName() + " : " + iOperation.getParameters()[i].getType().getName();
}
operationFullName += ") : " + iOperation.getReturnType().getName();
return operationFullName;
}
フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
 » Astah-APIにおけるシーケンス図内のメッセージに割り当てられた操作の取得について eiten 2016-1-4 15:16
     Re: Astah-APIにおけるシーケンス図内のメッセージに割り当てられた操作の取得について midori 2016-1-5 13:55
       Re: Astah-APIにおけるシーケンス図内のメッセージに割り当てられた操作の取得について eiten 2016-1-6 0:07
         Re: Astah-APIにおけるシーケンス図内のメッセージに割り当てられた操作の取得について midori 2016-1-6 11:38
           Re: Astah-APIにおけるシーケンス図内のメッセージに割り当てられた操作の取得について eiten 2016-1-7 16:20
             Re: Astah-APIにおけるシーケンス図内のメッセージに割り当てられた操作の取得について midori 2016-1-8 12:03
     Re: Astah-APIにおけるシーケンス図内のメッセージに割り当てられた操作の取得について eiten 2016-1-9 13:56
       Re: Astah-APIにおけるシーケンス図内のメッセージに割り当てられた操作の取得について midori 2016-1-12 9:56

投稿するにはまず登録を