フォーラム一覧 - トピック一覧 astah*の使い方 タグについて(タグ付値) | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | トピック |
---|---|
ゲスト | 投稿日時: 2007-9-9 14:40 |
タグについて(タグ付値) ゲストの「syuuhei」さんからの投稿です。
--- クラス図で、操作の中にタグがあります。その中の定義をAPIを利用して取得することは可能でしょうか。お答えいただけると幸いです。よろしく、お願いします。 |
|
ゲスト | 投稿日時: 2007-9-10 16:50 |
Re: タグについて(タグ付値) ゲストの「zhouyi」さんからの投稿です。
--- こんにちは、zhouyiです。 ご質問ありがとうございます。 [Q] クラス図で、操作の中にタグがあります。 その中の定義をAPIを利用して取得することは可能でしょうか。 [A] はい、APIで取得することができます。 IElementにgetTaggedValues()があります。 IOperationはIElementの子でgetTaggedValuesを継承します。 各APIクラスの関係および各メソッドの説明において、 User API Guideを参照して頂ければと思います。 ----------- サンプルソース (s) -------------------------- //Judeのタグ付き値タブで入力したキー private static final String KEY_OPERATION_COMMENT = "operation.comment"; private String getOperationComment(IOperation opr) { ITaggedValue[] tvs = opr.getTaggedValues(); for (int i = 0; i < tvs.length; i++) { ITaggedValue tv = tvs[i]; if (KEY_OPERATION_COMMENT.equals(tv.getKey())) { return tv.getValue(); } } return null; } ----------- サンプルソース (e) -------------------------- 以上、よろしくお願い致します。 |
|
zhouyi | 投稿日時: 2007-9-10 17:08 |
開発者 登録日: 2006-5-9 居住地: 福井 投稿: 48 |
Re: タグについて(タグ付値) こんにちは、JUDE開発者のzhouyiです。
ゲストの「zhouyi」さん と同一人物です。 ログインせずに投稿したのでゲストになりました。 本当に申し訳ございませんでした。 今後もよろしくお願い致します。 |
ゲスト | 投稿日時: 2007-9-11 16:28 |
Re: タグについて(タグ付値) ゲストの「syuuhei」さんからの投稿です。
--- 早々のご返信ありがとうございます。 javaを使うこと事態が初めてで、基礎的かつ、要領を得ない質問になっているかもしれませんが、お答えいただけると幸いです。 サンプルソースコードでは、引数の型がIOperationになっています。 当方の都合により、getAttributes()を使いたいと思っています。 しかし、getAttributes()は、IOperationが未定義となっています。 引数に使っている型は、IClassなのですが、IClassをキャストして、 IOperationにして使用した場合に、何か不都合が起きますか。 試してみたところ、不都合が起きているように感じます。 また、これまたかなり基礎的な質問になると思いますが、 サンプルソースコードで返している、tv.getValue();をSystem.out.printlnで出力するには、どのようにしたら良いでしょうか。 |
|
zhouyi | 投稿日時: 2007-9-11 20:10 |
開発者 登録日: 2006-5-9 居住地: 福井 投稿: 48 |
Re: タグについて(タグ付値) こんばんは、zhouyiです。
>>サンプルソースコードでは、引数の型がIOperationになっています。 >>当方の都合により、getAttributes()を使いたいと思っています。 あーーーーーーーー 属性 IAttribute --- クラスの属性のAPI IOperation --- クラスの操作のAPI したがって、サンプルソースコードを以下のように修正いたします。 ----------- サンプルソース (s) -------------------------- //Judeのタグ付き値タブで入力したキー private static final String KEY_ATTRIBUTE_COMMENT = "attribute.comment"; private String getOperationComment(IAttribute attr) { ITaggedValue[] tvs = attr.getTaggedValues(); for (int i = 0; i < tvs.length; i++) { ITaggedValue tv = tvs[i]; if (KEY_ATTRIBUTE_COMMENT .equals(tv.getKey())) { return tv.getValue(); } } return null; } ----------- サンプルソース (e) -------------------------- 補足ですが、 IElementは、IClassやIAttribute、IOperationなどの親です。 IAttributeなどのクラスは、IElementのgetTaggedValues()を 継承しています。 サンプルソースを以下のように修正すれば、 すべてのクラスのタグ付き値を取得できます。 ----------- サンプルソース (s) -------------------------- //Judeのタグ付き値タブで入力したキー private static final String KEY_COMMENT = "comment"; private String getComment(IElement element) { ITaggedValue[] tvs = element.getTaggedValues(); for (int i = 0; i < tvs.length; i++) { ITaggedValue tv = tvs[i]; if (KEY_COMMENT.equals(tv.getKey())) { return tv.getValue(); } } return null; } ----------- サンプルソース (e) -------------------------- >>サンプルソースコードで返している、 >>tv.getValue();をSystem.out.printlnで出力するには、 >>どのようにしたら良いでしょうか。 ITaggedValueのgetKey()とgetValue()ですが、いずれもStringを返してくれます。 System.out.println用にサンプルソースを改造いたします。 ----------- サンプルソース (s) -------------------------- //Judeのタグ付き値タブで入力したキー private static final String KEY_COMMENT = "comment"; private void showComment(IElement element) { ITaggedValue[] tvs = element.getTaggedValues(); for (int i = 0; i < tvs.length; i++) { ITaggedValue tv = tvs[i]; if (KEY_COMMENT.equals(tv.getKey())) { System.out.println("Comment is " + tv.getValue()); } } } ----------- サンプルソース (e) -------------------------- 以上、よろしくお願い致します。 |
ゲスト | 投稿日時: 2007-9-12 1:14 |
Re: タグについて(タグ付値) ゲストの「syuuhei」さんからの投稿です。
--- 何から何まで丁寧に解説いただき、ありがとうございます。 早速試してみたいと思います。 |
|
ゲスト | 投稿日時: 2007-9-12 1:16 |
Re: タグについて(タグ付値) ゲストの「syuuhei」さんからの投稿です。
--- 何から何まで丁寧に解説いただき、ありがとうございます。 早速試してみたいと思います。 |
|
ゲスト | 投稿日時: 2007-9-13 15:23 |
Re: タグについて(タグ付値) ゲストの「syuuhei」さんからの投稿です。
--- 度々すいません。 サンプルで提供していただいたコードに持たせる引数ですが、 下記コードによって取得したものを持たせるのではいけないのでしょうか? ProjectAccessor prjAccessor =ProjectAccessorFactory.getProjectAccessor(); prjAccessor.open("APItest.jude"); IModel model = prjAccessor.getProject(); INamedElement[] elements = model.getOwnedElements(); IClass c = (IClass) elements[i]; showComment(c); (途中の処理は省略しております。) tvs.lengthが0になっているようで、for文を通ってないように思われます。 どうしても上手くいきません。 基礎的なことだと分かっているのですが。 よろしくお願いします。 |
|
zhouyi | 投稿日時: 2007-9-13 17:27 |
開発者 登録日: 2006-5-9 居住地: 福井 投稿: 48 |
Re: タグについて(タグ付値) こんにちは、zhouyiです。
コーディング御疲れ様です。 >>サンプルで提供していただいたコードに持たせる引数ですが、 >>下記コードによって取得したものを持たせるのではいけないの >>でしょうか? IClassを取得しましたよね? IElementの子ですから、showComment()に持たせることができます。 >>tvs.lengthが0になっているようで、for文を通ってないように思われます。 >>どうしても上手くいきません。 対象となるクラスにタグ付き値を設定していないのでは? JUDEでモデルを開いて、クラスのタグ付き値Tabで確認して頂けないでしょうか? 以下のJUnitで実験した結果、タグ付き値の表示ができました。 ------------------- 実験コード (s) ------------------- public class ITaggedValueTest extends ITestCase { public static Test suite() { return suite("testModel/judeAPITest/IElementTest.jude", ITaggedValueTest.class); } public void testShowComment() { INamedElement[] elements = project.getOwnedElements(); for(int i = 0; i < elements.length; i++) { if(elements[i] instanceof IClass) { IClass c = (IClass) elements[i]; showComment(c); } } } private static final String KEY_COMMENT = "comment"; private void showComment(IElement element) { ITaggedValue[] tvs = element.getTaggedValues(); for (int i = 0; i < tvs.length; i++) { ITaggedValue tv = tvs[i]; if (KEY_COMMENT.equals(tv.getKey())) { System.out.println("Comment is " + tv.getValue()); } } } } ------------------- 実験コード (e) ------------------- 以上、よろしくお願い致します。 |
ゲスト | 投稿日時: 2007-9-13 17:55 |
Re: タグについて(タグ付値) ゲストの「syuuhei」さんからの投稿です。
--- 度々の丁寧なご返信ありがとうございます。 以下、確認させてください。 クラス図の、操作をクリックすると、タグが表示されます。 その中のベースというタグの中の定義に”test message”と書いています。クラス名や、属性のタグのベースにある定義にも同様の文字を書いています。タグの中の、staticなどをtrueなどにしないといけないなどの設定があるのでしょうか?ご確認のほど、よろしくお願いします。 |
|
(1) 2 3 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |