アプリ開発ときどきアウトドア

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

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プロシージャを修正してください。



(adsbygoogle = window.adsbygoogle || []).push({});


(adsbygoogle = window.adsbygoogle || []).push({});

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

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

EAP7のインストールとパッチ適用

仕事でredhat社のEnterprise Application Server7(EAP7)を扱うことが多いので備忘録として記載します。 なお、このサイトでWebアプリを公開したいと考えていますが、 …

Java/JavaEE開発キットの作成

Javaアプリ開発者のローカルPCに、ファイル展開するだけで開発環境をできるようにするための開発キットの準備について記載します。 ★随時更新予定★ 背景 Java/JavaEE等を使ったアプリ開発では …

初心者向けの最低限のviの使い方

新入社員やUnix/Linux未経験がviで苦戦するのをよく見ます。 ネットではコマンドの説明を主とした内容が多く、このような資料を見てviを使うと、モードの違いが分からず、思ったように編集できないこ …

技術検証

Linuxでの gdrive の使い方

wordpressのデータをgoogle driveにバックアップするための基礎調査を行っている。 google driveに接続可能なライブラリは幾つかあるようだが、ここでは無料でお手軽に始められそ …

vbaでのエンコード/デコードのサンプル

Excel(vba)で、MD5/SHA-1/SHA-2(SHA-256)の出力、Hex/Base64エンコード/デコードを調べたので備忘録として残します。 動作検証した環境は、Windows10+Of …

プロフィール ゆっきーです。
都内でシステムエンジニアをやっています。
もっと詳細を見る