kazpgmの日記

『プログラム自動作成@自動生成』作成の日記

「kaz_javaSpringBootプログラム自動作成◎生成ツール」(https://www.vector.co.jp/soft/winnt/prog/se523123.html)のバグ修正版が公開された

kaz_javaSpringBootプログラム自動作成◎生成ツール」
関連キーワード(テーブル ,自動生成 ,定義 ,java ,Security ,Spring ,DB ,SpringBoot ,Thymeleaf ,JPA)

https://www.vector.co.jp/soft/winnt/prog/se523123.html
のバグ修正版 1.1(202107026000)が公開された。

内容はツール中の『修正履歴.txt』に書いた以下のよう。

 

修正履歴
・202107026000
  ①属性VARCHAR、TEXTのサイズが100以上の時、自動作成マクロエラーになるのを修正した。
  『javaSpringBootプログラム作成マクロ.xlsm』・vbaマクロの
  Function hinagata_通常項目02(KBN, ITEM_NAME_KANJI, ITEM_HISSU, ITEM_NAME, ITEM_SIZE, ITEM_MAX_SIZE, _
   ITEM_ZOKUSEI, ITEM_KETA, ITEM_LIKE, TD_PERCENT, COLSPAN, PRG_NAME)
   Dim 変更内容Array(12, 2)
  の『Dim 変更内容Array(12, 2)』を
   『Dim 変更内容Array(13, 2)』
  に修正

  ②「入力チェック」ボタン押下で動く
  『javaSpringBootテーブル項目一覧などの定義.xlsm』・vbaマクロの
  『検索項目順(N列10行から)』チェックロジックを
  1件以上の『検索項目順指定』を必須とすように修正する。
  かつ『検索項目順指定』と『検索項目一致条件指定』は同時であるためのチェックロジックを入れた。
  module2のPublic Sub KoumokuChecks(DUMMY)に
   dim 検索項目順あり
   '-----------------------------------------------------------
   ' 「検索項目順」チェック
   '-----------------------------------------------------------
   検索項目順あり = False
   For j = cont項目チェック内容開始行 To idxmax
   If Cells(j, cont検索項目順) <> "" Then
   検索項目順あり = True
   If Cells(j, cont検索項目一致条件) = "" Then
   Cells(cont項目チェック内容開始行, cont検索項目一致条件).Select
   MsgBox ("検索項目一致条件を指定してください。")
   End If
   Else
   If Cells(j, cont検索項目一致条件) <> "" Then
   Cells(cont項目チェック内容開始行, cont検索項目一致条件).Select
   MsgBox ("検索項目一致条件を指定したときは検索項目順を指定してください。")
   End If
   End If
   Next
  
   If 検索項目順あり = False Then
   Cells(cont項目チェック内容開始行, cont検索項目順).Select
   MsgBox ("検索項目順に最低1つは指定してください。")
   End If
  を追加した。

  ③『USER』テーブルはログイン管理のために固定的に使用しているので
  『javaSpringBootテーブル項目一覧などの定義.xlsm』に登録することは禁止とする。
  さらに『SEQ』テーブルも固定的に使用しているので登録することは禁止とする。
  「入力チェック」ボタン押下で動く『javaSpringBootテーブル項目一覧などの定義.xlsm』・vbaマクロの
   If Len(Cells(cont当テーブルID行, cont当テーブルID列)) > 1 And _
   Len(Cells(cont当テーブルID行, cont当テーブルID列)) < 64 Then
   Else
   Cells(cont当テーブルID行, cont当テーブルID列).Select
   MsgBox ("テーブルID(テーブル名)は、2文字以上63文字以下にしてください。")
   End If
  を
   If Len(Cells(cont当テーブルID行, cont当テーブルID列)) > 1 And _
   Len(Cells(cont当テーブルID行, cont当テーブルID列)) < 64 Then
   If UCase(Cells(cont当テーブルID行, cont当テーブルID列)) = "USER" Then
   Cells(cont当テーブルID行, cont当テーブルID列).Select
   MsgBox ("『USER』テーブルはログイン管理のために固定的に使用しているので登録禁止です。テーブル名を変更してください。")
   End If
   If UCase(Cells(cont当テーブルID行, cont当テーブルID列)) = "SEQ" Then
   Cells(cont当テーブルID行, cont当テーブルID列).Select
   MsgBox ("『SEQ』テーブルは固定的に使用しているので登録禁止です。テーブル名を変更してください。")
   End If
   Else
   Cells(cont当テーブルID行, cont当テーブルID列).Select
   MsgBox ("テーブルID(テーブル名)は、2文字以上63文字以下にしてください。")
   End If
  に変更する。

  ④javaSpringBootテーブル項目一覧などの定義.xlsm』の「コード一覧表」シートの4行目に、
”・分類名の項目ID(K列)に同じ名前の登録があると自動作成後のPGMでエラーになります。
 テーブル項目名を修正して下さい”を追記しました。”
を追記した。

  ⑤項目名(ID)が『id』場合NGとした。(ENTITYクラスのPK取得メソッドを『getID』で作成しているため。)
  「入力チェック」ボタン押下で動く『javaSpringBootテーブル項目一覧などの定義.xlsm』・vbaマクロの
Set 項目名ID達マップ = Nothing
Set 項目名ID達マップ = CreateObject("Scripting.Dictionary")
For j = cont項目チェック内容開始行 To idxmax
'項目名(ID)列のチェック
If 項目名ID達マップ.exists(UCase(Cells(j, cont項目名ID列))) Then
Cells(j, cont項目名ID列).Select
MsgBox ("項目名(ID)=「" & Cells(j, cont項目名ID列) & "」はすでに使用されています。")
Else
項目名ID達マップ.Add UCase(Cells(j, cont項目名ID列)), UCase(Cells(j, cont項目名ID列))
End If
Next
  を
Set 項目名ID達マップ = Nothing
Set 項目名ID達マップ = CreateObject("Scripting.Dictionary")
For j = cont項目チェック内容開始行 To idxmax
'項目名(ID)列のチェック
If 項目名ID達マップ.exists(UCase(Cells(j, cont項目名ID列))) Then
Cells(j, cont項目名ID列).Select
MsgBox ("項目名(ID)=「" & Cells(j, cont項目名ID列) & "」はすでに使用されています。")
Else
項目名ID達マップ.Add UCase(Cells(j, cont項目名ID列)), UCase(Cells(j, cont項目名ID列))
   If UCase(Cells(j, cont項目名ID列)) = "ID" Then
   Cells(j, cont項目名ID列).Select
   MsgBox ("項目名(ID)=「" & Cells(j, cont項目名ID列) & "」は禁止です。(ENTITYクラスのPK取得メソッドを『getID』で作成しているため。)")
   End If
End If
Next
  に修正した。

  ⑥テーブル項目『住所 ADDRESS VARCHAR(255)』を自動作成したところ、
  一覧登録画面及び、一覧更新画面で入力項目が作成されなかった。
  原因は、101桁以上のロジックで使用するはずの『hinagata_ListAmendView_通常項目02.txt』が
  「作成例\hinagata\resources\ViewParts」フォルダになかったためだったので、
  追加した。

  ⑦『javaSpringBootプログラム作成マクロ.xlsm』・vbaマクロのPrivate Sub DbElementsService作成()メソッドの
If 分類WK = "大分類" Or 分類WK = "中分類" Or 分類WK = "小分類" Then
If 大分類公開区分 = "あり" Then
変換後LrgKeyVal_OpenkbnAriOrNashi = _
hinagataグループ名指定のhinagata変換(hinagataServiceImpl, "01_04_01_01_LrgKeyValOpenkbnAri部品.txt", 変更内容Array)
Else
変換後MidKeyVal_OpenkbnAriOrNashi = _
hinagataグループ名指定のhinagata変換(hinagataServiceImpl, "01_04_01_01_LrgKeyValOpenkbnNashi部品.txt", 変更内容Array)
End If
End If
  を
If 分類WK = "大分類" Or 分類WK = "中分類" Or 分類WK = "小分類" Then
If 大分類公開区分 = "あり" Then
変換後LrgKeyVal_OpenkbnAriOrNashi = _
hinagataグループ名指定のhinagata変換(hinagataServiceImpl, "01_04_01_01_LrgKeyValOpenkbnAri部品.txt", 変更内容Array)
Else
変換後LrgKeyVal_OpenkbnAriOrNashi = _
hinagataグループ名指定のhinagata変換(hinagataServiceImpl, "01_04_01_01_LrgKeyValOpenkbnNashi部品.txt", 変更内容Array)
End If
End If
  に修正した。(変換後MidKeyVal_OpenkbnAriOrNashi → 変換後LrgKeyVal_OpenkbnAriOrNashi)

  ⑧DBから取得する検索プルダウンリストのvalueをkey + ":" + valueに変更した。(valueだけだと同姓同名があったりするから)
  変更は、作成例\hinagata\java\service\implの
    ・01_04_01_01_LrgKeyValOpenkbnAri部品.txt
    ・01_04_01_01_LrgKeyValOpenkbnNashi部品.txt
    ・01_04_01_02_MidKeyValOpenkbnAri部品.txt
    ・01_04_01_02_MidKeyValOpenkbnNashi部品.txt
    ・01_04_01_03_SmlKeyValOpenkbnAri部品.txt
    ・01_04_01_03_SmlKeyValOpenkbnNashi部品.txt
  及び作成例\hinagata\java\controllerの
    ・01_03_01_01_MidKeyValOpenkbnAri部品.txt
    ・01_03_01_02_SmlKeyValOpenkbnAri部品.txt
    ・01_03_02_01_MidKeyValOpenkbnNashi部品.txt
    ・01_03_02_02_SmlKeyValOpenkbnNashi部品.txt