私は既存のEMFプロジェクトにEcoreモデルを持ち、XTend経由ですべてのクラスの名前をテキストファイルに出力したいと考えています。どのようにこれを達成するのですか? XTendの例では、モデルを使用して情報を取得する方法は示されていません。XTend経由でMetamodelからコードを生成
1
A
答えて
1
Meta-ModelのEClassesのみが必要な場合は、 YourEMFModelPackage.eINSTANCE.getEClassifiers()
というモデルパッケージから取得し、EList<EClassifier>
を返します。 EClass
はEClassifier
なので、すべてのEClass実装はorg.eclipse.emf.ecore.impl.EClassImpl
です。 型安全性については、EDataTypes
もすべてEClassifier
であるため、おそらくこのリストにはEClassesのみが含まれているかどうかを確認してください。
だから、これべきトリックへ: EcoreUtil.getObjectsByType(YourEMFModelPackage.eINSTANCE.getEClassifiers(), EcorePackage.eINSTANCE.getEClass())
か:
List<EClass> allEClasses = YourEMFModelPackage.eINSTANCE.getEClassifiers().stream().filter(p -> EClass.class.isInstance(p)).map(m -> EClass.class.cast(m)).collect(Collectors.toList());
更新: あなたのモデルコードは、あなたがまだこれを行うことができるしている生成されていない場合リソースにEcoreをロードするだけで済みます:
ResourceSet resourceSet = new ResourceSetImpl();
resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("ecore",
new EcoreResourceFactoryImpl());
Resource resource = resourceSet.getResource(
URI.createFileURI(
"../path/to/your/Ecore.ecore"),
true);
EPackage model = (EPackage) resource.getContents().get(0);
EPackage
EClass
上記のように
関連する問題
- 1. Firebase経由でプッシュ通知を生成
- 2. API経由で署名リンクを生成
- 3. Java経由でOauthベアラトークンを生成
- 4. EMFモデルをGradle経由で生成
- 5. pythonリバースプロキシcgi経由での生成
- 6. Spring MVCコントローラからRAML経由でREST APIドキュメントを自動生成
- 7. Xamarin.FormsプロジェクトのC#経由でGitHub APIから個人用アクセストークンを生成
- 8. XSDからコードを生成
- 9. file://プロトコル経由でリモートファイルからオーディオを再生する方法
- 10. XtextとXtendを使ってASTを生成するには?
- 11. Xtendのペアのコレクションから不変のマップを作成する
- 12. PHPExcelの生成方法Laravel 5のコントローラ経由でExcelファイルを生成する
- 13. 現在のバージョンでは、IRコード経由でLLVMのapiコードを生成する方法は?
- 14. IntelliJのXtend IDEAはsrc-genにファイルを生成しません
- 15. Metamodelとは何ですか?
- 16. アクセストークンを生成中にInstagramアプリを端末経由で送信
- 17. C++生成コード(MATLABから)
- 18. ファイルパスからmkdir経由でフォルダを作成する方法は?
- 19. データベースからPHP経由でxmlデータポリゴンを作成する
- 20. サンプルXMLからJava経由でSOAPメッセージを作成する
- 21. ajax経由でHTMLコードを投稿
- 22. CMake経由で共有ライブラリ名を生成
- 23. Rails、ajax経由で生成されたフラッシュメッセージを削除する
- 24. mysqldumpはPHPシステム経由で空白ファイルを生成します。
- 25. Android:JavaコードからPythonスクリプト(SL4A経由)を呼び出す
- 26. sftp経由でリモートサーバーからPHPをダウンロード
- 27. Arduino:USB経由でカメラからイベントをキャッチ
- 28. InitializeOnLoad経由でエディタからGameObjectsをインスタンシエート
- 29. ファイルをJavascript経由でFTPからダウンロード
- 30. android/ios:OpenGL経由でビデオを再生
[XTendでのEMFモデルインスタンスのロード](http://stackoverflow.com/questions/12458852/load-emf-model-instance-in-xtend) –
モデルのインスタンスは必要ありません。私はメタモデルのクラスが必要です。 – landunder