チェッククラスとは、ユーザの入力したデータの妥当性をチェックするためのクラスです。
Javaクライアント、HtmlGateway にて使用します。
いくつかのチェッククラスが提供されており、Data Management Consoleのデータ型の定義に基づいてデータのチェックを簡単に行わせることができます。
チェッククラスをカスタマイズすることにより、独自のチェックロジックを実装することができます。
このドキュメントでは、独自のチェッククラスを作成する方法の説明になります。
jp.ne.mki.wedge.data.check.DefaultDataCheckを継承してしてクラスを実装します。
以下のメソッドを実装してチェックロジックをコーディングします。
以下の例は、値が全角でなければエラーと判断し、"全角の文字を入力して下さい"というメッセージが表示されるものになります。
import jp.ne.mki.wedge.data.check.DefaultDataCheck public class MyCheckClass extends DefaultDataCheck { /** * 値チェック * @param int 実行場所 * @param String チェック対象の値 * @param int 行数 * @return boolean 正常の場合はtrue、エラーの場合はfalseが返ります */ public boolean checkData(int execute_position, String value,int index) throws Throwable{ //値が全角でなければエラー if (value.getByte().length != value.length * 2) { return false; } else { return true; } } /** * エラーメッセージ取得 * @return String エラーメッセージ */ public String getErrorMessage() { return "全角の文字を入力して下さい"; } }
標準チェックを実行することも可能です。
標準チェック とは Data Management Consoleにて登録された データの情報を参照してチェックします。
標準チェック チェック内容は、データタイプを参照して下さい。
標準チェックでは、public final boolean checkCommon(String value, boolean isOmitCheck, int index) のメソッドを実行する
ことによりチェックが行うことができます。
戻り値に false が返ってきた場合、つまりチェックエラーになったとき該当のエラーメッセージは
public final String getCheckCommonErrorMessage() のメソッドより取得が可能です。
以下に、始めに標準チェックを行い結果OKだった場合のみ値が全角かどうかのチェックを行う というロジック例を示します。
import jp.ne.mki.wedge.data.check.DefaultDataCheck public class MyCheckClass extends DefaultDataCheck { String errorMessage=""; /** * 値チェック * @param int 実行場所 * @param String チェック対象の値 * @param int 行数 * @return boolean 正常の場合はtrue、エラーの場合はfalseが返ります */ public boolean checkData(int execute_position, String value, int index) throws Throwable { //省略不可チェックは行わない boolean isOmit = false; //標準チェックの実行 boolean isOk = checkCommon(value, isOmit, index); //結果エラーの場合にはエラーメッセージを取得して処理終了 if (!isOk) { errorMessage = getCheckCommonErrorMessage(); return false; } //値が全角でなければエラー if (value.getByte().length != value.length * 2) { errorMessage = "全角の文字を入力して下さい"; return false; } else { return true; } } /** * エラーメッセージ取得 * @return String エラーメッセージ */ public String getErrorMessage() { return errorMessage; } }
Ver1.1.0.1 より コンポーネント属性 に リアルタイム入力チェック(RealTimeInputCheck) が追加されました。
この属性を設定されている場合、文字入力時のタイミング にて、チェッククラスにて実装されているメソッド、
public boolean isInsertOk(String text, String insertStr, int offs)
が実行されます。
戻り値が false の場合には Keyの入力が反映されない(Key入力不可) になります。
標準(jp.ne.mki.wedge.data.check.DefaultDataCheck)のコードでは、項目チェック時に行う 属性チェック ・長さチェック と同等のロジックを実行し
動作します。
このチェックの変更は、 isInsertOk のメソッドを上書きしてコーディングすることにより可能です。
import jp.ne.mki.wedge.data.check.DefaultDataCheck public class MyCheckClass extends DefaultDataCheck { /** * 文字を挿入できるかどうか。リアルタイムチェックを使用したい場合にオーバーライドする。 * このコーディング例では * 入力出来る文字数は、DMCにて登録している 長さ 以内 しか入力できない コーディングに * なっています。 * @param text 既に設定されている 文字列 * @param insertStr 入力しようとしている文字列 * @param offs 入力しようとしている ポジション * @return */ public boolean isInsertOk(String text, String insertStr, int offs) { //入力後の文字長さを取得 int length = text.getLength() + insertStr.getLength(); if (length > getData().getLength()) { return false; //入力受け付けない } else { return true; //入力受け付ける } } }
このチェックでは、Key入力の度に実行されますので 時間がかかるコードは入れない方が望ましいでしょう。
またIMEを起動した入力の場合、IMEの値が確定後このメソッドが実行されます。(IME入力中には実行されません)
Operation Management Consoleの基本クラスタグにて登録を行います。
チェッククラスに、作成したクラス論理名、物理名、クラス名を登録します。
Operation Management Consoleのデータタグでの登録にて、登録したチェッククラスを選択します。
作成したチェッククラスをコンパイルし、実行のクラスパスに設定します。
標準チェックcheckCommon(String value,boolean isOmitCheck,int index)を実行した際、エラーが発生した場合には
getCheckCommonErrorCode()にてエラーコード、getCheckCommonErrorMessage()にて標準エラーメッセージが返されます。
エラーコードは何に対応するかの表を以下に示します。
エラーコード | 内容 | 標準メッセージ |
---|---|---|
CKE0001 | 英数字エラー | 英数字以外の値が入力されています。 |
CKE0002 | 数字エラー | 数字以外の値が入力されています。 |
CKE0003 | 英字エラー | 英字以外の値が入力されています。 |
CKE0004 | 日付時間エラー | 日付時間以外の値が入力されています。 |
CKE0005 | 日付エラー | 日付以外の値が入力されています。 |
CKE0006 | 時間エラー | 時間以外の値が入力されています。 |
CKE0007 | 長さエラー | {1}桁以下の値を入力して下さい。 |
CKE0008 | 固定長エラー | {1}桁の値を入力して下さい。 |
CKE0009 | Omitエラー | 省略できません。 |
CKE0010 | Enumエラー | 値は選択肢の値を設定する必要があります。 |
CKE0011 | 最小値エラー | 最小値より小さい値が設定されています。(最小値={1}) |
CKE0012 | 最大値エラー | 最大値より大きい値が設定されています。(最大値={1}) |
CKE0014 | 整数データエラー | 正数以外の値が設定されています。 |
CKE0015 | 半角エラー | 半角以外の値が設定されています。 |
CKE0016 | 半角カナエラー | 半角カナ以外の値が設定されています。 |
CKE0017 | ピリオドは入力できません。 |