NDW

アプリ開発やトラブルシューティング等のノウハウ、キャンプや登山の紹介や体験談など。

1. システムエンジニアリング windows 開発標準化

区分データ生成ツール

投稿日:

区分定義書の変更時、定数や列挙体、マスタの一部を手動で修正するような運用だと、抜け漏れや間違いが発生する場合があります。この辺の手間や間違いを低減するために、区分定義書から自動的に成果物を作成するExcelマクロを度々作る機会があるので、作成してみました。

説明

区分一覧に基づいて、列挙体クラスファイル、INSERTファイルを作成します。
列挙体クラスファイルとして、単一クラスファイル内に全ての区分列挙体を定義する集約クラス、区分列挙体毎にクラスファイルを作成する個別クラス形式のファイルを出力できます。

入力ファイル仕様(区分一覧)

区分一覧シートに各区分を定義することを想定しています。
グループ・グループ名は毎行に記載しても、1グループで1つのみの記載でも問題ありません。

列挙体クラスの生成仕様(集約クラス)

次のように全ての区分(列挙体)を含む単一のクラスファイルを作成します。
出力の内容は、テンプレートシートにある内容を修正することで変更できます。
区分一覧に例として記載されているユーザ種別、削除フラグの区分(列挙体)は、次のように単一ファイルに出力されます。

package example.web.constants;
...
/**
 * 区分定義
 * 
 * @version 1.0
 * @author test
 */
public class KbnEnums {
	/**
	 * 区分定義: ユーザ種別
	 * 
	 * @version 1.0
	 * @author test
	 */
	public enum UserType implements KbnEnumBase {
		/** 管理者 */
		Admin("管理者",null,"10"),
		/** 一般 */
		Normal("一般",null,"01"),
		/** 一般代理 */
		Agent("一般代理",null,"09");
...
	}

	/**
	 * 区分定義: 削除フラグ
	 * 
	 * @version 1.0
	 * @author test
	 */
	public enum DeleteFlag implements KbnEnumBase {
		/** 無効 */
		Invalid("無効",null,"0"),
		/** 有効 */
		Valid("有効",null,"1");
...

列挙体クラスの生成仕様(個別クラス)

次のように列挙体単位でファイルを作成します。
出力の内容は、テンプレートシートにある内容を修正することで変更できます。
区分一覧に例として記載されているユーザ種別、削除フラグの区分(列挙体)は、次のように個別のファイルに出力されます。

package example.web.constants.enums;
...
/**
 * 区分定義: ユーザ種別
 * 
 * @version 1.0
 * @author test
 */
public enum UserType implements KbnEnumBase {
	/** 管理者 */
	Admin("管理者",null,"10"),
	/** 一般 */
	Normal("一般",null,"01"),
	/** 一般代理 */
	Agent("一般代理",null,"09");
...
}
package example.web.constants.enums;
...
/**
 * 区分定義: 削除フラグ
 * 
 * @version 1.0
 * @author test
 */
public enum DeleteFlag implements KbnEnumBase {

	/** 無効 */
	Invalid("無効",null,"0"),
	/** 有効 */
	Valid("有効",null,"1");
...
}

INSERT文の生成仕様

区分マスタとして次のテーブルを想定しています。

-- drop table MST_KBN;
create table MST_KBN (
  "GROUP" character varying(256) not null
  , "KBN" character varying(256) not null
  , "NAME" character varying(256) not null
  , "SHORT_NAME" character varying(16)
  , "VALUE" character varying(256) not null
  , "DISP_ORDER" integer
  , "DELETE_FLAG" character(1) default '0'
  , "CREATE_USER" character(16)
  , "CREATE_TIMESTAMP" timestamp
  , "UPDATE_USER" character(16)
  , "UPDATE_TIMESTAMP" timestamp
  , primary key ("GROUP", "KBN")
);

区分一覧に例として記載されているユーザ種別、削除フラグの区分は、次のように出力されます。
出力先フォルダやファイル名、テーブル名を指定可能です。カラム名を変更する場合はVBAを修正してください。
エンコーディングはUTF-8です。

-- truncate table MST_KBN;
insert into MST_KBN("GROUP","KBN","NAME","SHORT_NAME","VALUE","DISP_ORDER","DELETE_FLAG","CREATE_USER","CREATE_TIMESTAMP","UPDATE_USER","UPDATE_TIMESTAMP") values('UserType','Admin','管理者',null,'10',1,'0','system',now(),'system',now());
insert into MST_KBN("GROUP","KBN","NAME","SHORT_NAME","VALUE","DISP_ORDER","DELETE_FLAG","CREATE_USER","CREATE_TIMESTAMP","UPDATE_USER","UPDATE_TIMESTAMP") values('UserType','Normal','一般',null,'01',2,'0','system',now(),'system',now());
insert into MST_KBN("GROUP","KBN","NAME","SHORT_NAME","VALUE","DISP_ORDER","DELETE_FLAG","CREATE_USER","CREATE_TIMESTAMP","UPDATE_USER","UPDATE_TIMESTAMP") values('UserType','Agent','一般代理',null,'09',3,'0','system',now(),'system',now());
insert into MST_KBN("GROUP","KBN","NAME","SHORT_NAME","VALUE","DISP_ORDER","DELETE_FLAG","CREATE_USER","CREATE_TIMESTAMP","UPDATE_USER","UPDATE_TIMESTAMP") values('DeleteFlag','Invalid','無効',null,'0',1,'0','system',now(),'system',now());
insert into MST_KBN("GROUP","KBN","NAME","SHORT_NAME","VALUE","DISP_ORDER","DELETE_FLAG","CREATE_USER","CREATE_TIMESTAMP","UPDATE_USER","UPDATE_TIMESTAMP") values('DeleteFlag','Valid','有効',null,'1',2,'0','system',now(),'system',now());
...

使い方

ダウンロード

次の場所から「区分データ生成.xlsm」をダウンロードします。

区分一覧の準備

区分一覧シートに区分値を定義します。

条件を指定して実行

「区分データ生成.xlsm」を開き、データ作成シートにて各種の条件を指定し「区分データ生成」をクリックします。

カスタマイズ方法

列挙体ファイル

テンプレートシートにある集約クラス、個別クラスのテンプレートを修正してください。
次のプレースホルダを使用できます。

プレースホルダ 説明 展開例
$package$ データ作成シートで指定したパッケージ名に展開されます。 example.web.constants
$group_name$ グループ名に展開されます。 ユーザ種別
$group グループに展開されます。 UserType
$enums$ 列挙体の定義値に展開されます。 /** 管理者 */
Admin(“管理者”,null,”10″),
/** 一般 */

INSERTファイル

INSERT文をカスタマイズする場合は、ModKbnCreateモジュールのCreateInsertFileプロシージャを修正してください。







-1. システムエンジニアリング, windows, 開発標準化


comment

メールアドレスが公開されることはありません。

関連記事

おすすめキーボード: MX Keys(KX800)レビュー

キーが浅く指の移動が最小限で抑えられ、多少打鍵位置がずれても正確に押せるので、入力がとても楽で、肩こりや首の痛みが軽減されました。また、在宅勤務用PCや副業用PC等の複数PCの切り替えをキーボードから …

ASP.NET Core: タグヘルパーでのHTML編集方法

ASP.NET Coreで独自のタグを生成するためにTagHelperを使用します。 TagHelperでどのようにHTMLを生成できるかを説明します。 概要 ここではタグヘルパーで出力するHTMLの …

Red Hat Developer ProgramでのRHELの使用

概要 CentOSのサポート終了に伴い、Red Hatが提供する開発者プログラム(Red Hat Developer Program)に参加すれば、開発者でも本番でRHELを使用できるようになりました …

.NET Core(C#): xUnitのAssert使用方法

はじめに 次の環境を使用して動作確認しています。 OS Windows 10(64ビット) IDE Microsoft Visual Studio Community 2019(16.8.5) + C …

TeraTermを使ったSSH鍵の作成方法

WindowsでSSH接続するためのTera Termで、SSH鍵を作成する方法を説明します。 概要 Windows10(64ビット)で動作するTera Term 4.105で動作確認しました。 クラ …