「アプリケーション開発」のための汎用性が高い、かつ単純なAPIを持ったフルスタックのJavaフレーム
  • TEL: 03-6418-5221
  • TEL: 03-6418-5221

更新実行クラス

AbstractFormObjectをデータベースに保管するクラス。 wisdomx.logic.formtemplate.AbstractFormPersistanceを継承して作成します。

このクラスの役割は
"AbstractFormObjectの項目のチェックを行いデータベースへの登録、更新、削除を行うこと"
です。 

実行シーケンス

AbstractFormObjectPersistance#execute()

利用クラスはAbstractFormObjectPersistance#execute()を実行、
  1. #_prepare()の実行
  2. AbstractFormObjectPersistance#setIgnoreValidate(true)が実行されていない場合
    #_valdate()が実行されます。
  3. #_validate()の結果AbstractFormObject#isError()がtrueの場合
    処理を終了します。
  4. AbstractFormObject#isInsert()がtrueのとき
    #_insert()が実行されます。
  5. AbstractFormObject#isUpdate()がtrueのとき
    #_update)が実行されます。
  6. AbstractFormObject#isDelete()がtrueのとき
    #_delete()が実行されます。
  7. #_cleanup()の実行
各メソッドでAbstractFormObjectのデータベースへの処理ロジックを実装します。

入力チェック _validate()

このメソッドはAbstractFormObjectの状態に関係なく実行されます。  

    protected void _validate() throws Exception {
        StringChecker sc = new StringChecker();
        int result = 0;
        result += sc.checkNotEmpty(USERID, fo.getUserid(),fo);
        result += sc.checkNotEmpty(USERNAME, fo.getUsername(),fo);
        result += sc.checkNotEmpty(PASSWORD, fo.getPassword(),fo);
        result += sc.checkNotEmpty(MAILADDRESS, fo.getMailaddress(),fo);
        result += sc.checkNotEmpty(SEXKBN, fo.getSexkbn().getSelected(),fo);
        result += sc.checkNotEmpty(CITYCD, fo.getCitycd().getSelected(),fo);
        if (fo.isInsert() && StringUtil.notEmpty(fo.getUserid())) {
            PreparedStatement ps = rh.getConnection().prepareStatement(SQL_SEL_USER);
            ps.setString(1, fo.getUserid());
            ResultSet rs = ps.executeQuery();
            if (rs.next()) {
                // USM0011E=入力されたユーザーIDはすでに登録されています。
                fo.addErrorMessage(messageGenerator.getMessage("USM0011E"));
            }
            rs.close();
            ps.close();
        }
    } 

チェック処理の中でAbstractFormObject#addErrorMessag(Message)を呼び出すとそのAbstractFormObject#isError()がtrueになります。
追加されたMessageはAbstractFormObject#clearMessage()を実行するまで保持されます。

登録メソッド _insert()

    protected void _insert() throws Exception {
        PreparedStatement ps = rh.getConnection().prepareStatement(SQL_INS_MUSER);
        int x = 1;
        ps.setString(x++, fo.getUserid());
        ps.setString(x++, fo.getUsername());
        ps.setString(x++, fo.getPassword());
        ps.setString(x++, fo.getMailaddress());
        ps.setString(x++, fo.getSexkbn().getSelected());
        ps.setString(x++, fo.getCitycd().getSelected());
        ps.executeUpdate();
        ps.close();
        insertHoddy();
    } 

更新メソッド _update()

    protected void _update() throws Exception {
        PreparedStatement ps = rh.getConnection().prepareStatement(SQL_UPD_MUSER);
        int x = 1;
        ps.setString(x++, fo.getUsername());
        ps.setString(x++, fo.getPassword());
        ps.setString(x++, fo.getMailaddress());
        ps.setString(x++, fo.getSexkbn().getSelected());
        ps.setString(x++, fo.getCitycd().getSelected());
        
        ps.setString(x++, fo.getUserid());
        ps.executeUpdate();
        ps.close();
        deleteHobbdy();
        insertHoddy();        
    } 

削除メソッド _delete()

    protected void _delete() throws Exception {
        PreparedStatement ps = rh.getConnection().prepareStatement(SQL_DEL_MUSER);
        ps.setString(1, fo.getUserid());
        ps.executeUpdate();
        ps.close();
        deleteHobbdy();
    }