Jhipster テンプレート改造

jhipsterでなにが、うれしいかというと、
クラス図をJDLという簡易な設定さえ、書けば、
一応動作する画面が、できるということだと思う。


でも、すでに、自分のプロジェクトのひな型ができている場合がある。

成果物として、望まれているのは、自分のプロジェクトの形式に沿ったコード
だったりする。

そうなるとひな形のほうを修正したい。

自分用にソースコードを修正する。






JDLからのパラメータは、どのように拾えるのか。


テンプレートファイル
テンプレートは、yoというツールを使っていると思う。
JDLをyoで使える形式に変換するのが、JHIPSTERだとすると、テンプレートから、変数を引っ張ってくればいいんじゃなかろうか。

generator-jhipster-vuejs
は、node_modulesフォルダに、格納されている
さらにその配下の、generatorフォルダを、今回解析してみようと思う。

node_moduleフォルダにある、generatorフォルダが怪しいと思っておこう。

どうやら、jhipsterのコマンドは、
アプリフォルダ/node_moduless/generator-jhipster/cli
の
commands.js
ファイルに記載があった。

ただし、ここから、どこかに行くというわけでは、ない。
モジュール側が、リスナーしているようだ。
例えば、import-jdl
というコマンドの場合、次のファイルが、このコマンドを待ち構えるモジュールとして作られている。
import-jdl.js

たぶん、次の文が、リスナーの実装っぽい。確認してないけど。。。GREPしたらここしか、import-jdlの文言含んでなかった。

const statistics = require('../generators/statistics');

statistics.sendSubGenEvent('generator', 'import-jdl');



# テンプレートのソースコードを読んで、テンプレートの書き方を逆引きにしてみる

yoのテンプレートの書き方だけでは、役不足だ。JDL言語で簡易に書いた、

クラス図の情報が、どのように、テンプレートの引数にわたってくるのかが、知りたいよね?

だから、テンプレートファイルをみて、解析してみるとする。

とりあえず、エンティティまわりをみてみたいので、下記のファイルを観察してみるとする。

EntityRepository.java.ejs

## コメントの書き方
 <%#
 
 -%>

## パッケージ名
 package <%=packageName%>.repository;

## エンティティクラス名
テーブル名とかに使用
 <%=asEntity(entityClass)%>
 
または
 
 <%=entityClass%>
 

## 多対多の場合
 <%_ if (fieldsContainOwnerManyToMany) { _%>
 
 <%_ } _%>




## データベースの種類がsqlの場合
 <%_ if (databaseType === 'mongodb') { _%>
 
 <%_ } _%>


## SQLのselect句
 select <%= entityInstance %> 

## リレーションしてる文だけ必要なループ
 <% for (idx in relationships) {
    if (relationships[idx].relationshipType === 'many-to-many' && relationships[idx].ownerSide === true) { %>
    left join fetch <%=entityInstance%>.<%=relationships[idx].relationshipFieldNamePlural%><%} }%>",

### リレーションのjavadocが定義されているかどうかチェック
 for (idx in relationships) {
     if (typeof relationships[idx].javadoc != 'undefined') {
         
     }
 }



## フィールドでループ
  <% for (idx in fields) {
 
    } _%>

### フィールドのjavadocが定義されているかどうかチェック
   for (idx in fields) {
       if (typeof fields[idx].javadoc != 'undefined') {
           
       }
   }


## 未確認の引数
 fieldsContainBlob
 
 importJsonIgnoreProperties
 
 importApiModelProperty

 importJsonIgnore
 
 fieldsContainUUID

 prodDatabaseType
 
 hasTextBlob
 
 validation
 
 searchEngine

 fieldsContainBigDecimal



■jhipster entityとしたときのメッセージの場所
たまたま、みつけたから、メモしておこう。

node_modules\generator-jhipster\generators\entity\prompts.js

にある。


■JDLのインポートメソッド
jhiCore.JDLImporter
のimportメソッド
でパースされているようです。
トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS