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