    001/*
    002 * Copyright (c) 2009 The openGion Project.
    003 *
    004 * Licensed under the Apache License, Version 2.0 (the "License");
    005 * you may not use this file except in compliance with the License.
    006 * You may obtain a copy of the License at
    007 *
    008 *     http://www.apache.org/licenses/LICENSE-2.0
    009 *
    010 * Unless required by applicable law or agreed to in writing, software
    011 * distributed under the License is distributed on an "AS IS" BASIS,
    012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
    013 * either express or implied. See the License for the specific language
    014 * governing permissions and limitations under the License.
    015 */
    016package org.opengion.fukurou.model;
    017
    018/**
    019 * １レコードのデータを管理するインターフェースです。
    020 * Formatter で使用される単純なメソッドを定義しています。
    021 *
    022 * @og.group 画面表示
    023 *
    024 * @version  4.0
    025 * @author   Kazuhiko Hasegawa
    026 * @since    JDK5.0,
    027 */
    028public interface DataModel<T> {
    029
    030        /**
    031         * 変更されたタイプ(追加)
    032         *
    033         * @og.rev 6.7.9.1 (2017/05/19) インターフェースの見直しにより、追加
    034         */
    035        String INSERT_TYPE = "A";
    036
    037        /**
    038         * 変更されたタイプ(変更)
    039         *
    040         * @og.rev 6.7.9.1 (2017/05/19) インターフェースの見直しにより、追加
    041         */
    042        String UPDATE_TYPE = "C";
    043
    044        /**
    045         * 変更されたタイプ(削除)
    046         *
    047         * @og.rev 6.7.9.1 (2017/05/19) インターフェースの見直しにより、追加
    048         */
    049        String DELETE_TYPE = "D";
    050
    051        /**
    052         * row にあるセルのオブジェクト値を置き換えます。
    053         *
    054         * @param   vals  新しい配列値。
    055         * @param   row   値が変更される行(無視されます)
    056         */
    057        void setValues( final T[] vals,final int row ) ;
    058
    059        /**
    060         * カラム名に対応する カラム番号を返します。
    061         *
    062         * 特殊なカラムが指定された場合は、負の値を返します。
    063         * 例えば、[KEY.カラム名]、[I]、[ROW.ID] など、特定の負の値を返します。
    064         * また、カラム名が元のデータモデルに存在しない場合も、負の値か、
    065         * Exception を返します。負の値なのか、Exception なのかは、
    066         * 実装に依存します。
    067         *
    068         * @param   columnName  値が参照されるカラム番号
    069         *
    070         * @return  指定されたセルのカラム番号
    071         */
    072        int getColumnNo( final String columnName ) ;
    073
    074        /**
    075         * カラム名配列を返します。
    076         * 配列オブジェクトは、clone されたコピーを返します。
    077         *
    078         * @return      カラム名配列
    079         */
    080        String[] getNames();
    081
    082        /**
    083         * row にあるセルの属性値を配列で返します。
    084         *
    085         * @param   row     値が参照される行
    086         *
    087         * @return  指定されたセルの属性値
    088         */
    089        T[] getValues( int row ) ;
    090
    091        /**
    092         * row および clm にあるセルの属性値を返します。
    093         *
    094         * @param   row     値が参照される行
    095         * @param   clm     値が参照される列
    096         *
    097         * @return  指定されたセルの値 T
    098         */
    099        T getValue( int row, int clm ) ;
    100
    101        /**
    102         * データテーブル内の行の数を返します。
    103         *
    104         * 後付I/Fのため、default 設定しておきます。
    105         *
    106         * @og.rev 6.7.9.1 (2017/05/19) インターフェースの見直しにより、追加
    107         *
    108         * @return  モデルの行数
    109         */
    110        default int getRowCount() { return -1; }
    111
    112        /**
    113         * row 単位に変更されたタイプ(追加/変更/削除)を返します。
    114         *
    115         * 後付I/Fのため、default 設定しておきます。
    116         *
    117         * @og.rev 6.7.9.1 (2017/05/19) インターフェースの見直しにより、追加
    118         *
    119         * @param   row     値が参照される行
    120         *
    121         * @return  変更されたタイプの値 String
    122         */
    123        default String getModifyType( final int row ) { return ""; }
    124
    125        /**
    126         * row 単位に変更タイプ(追加/変更/削除)をセットします。
    127         * このメソッドでは、データのバックアップは取りません。
    128         * タイプは始めに一度登録するとそれ以降に変更はかかりません。
    129         * なにも変更されていない場合は, ""(ゼロストリング)の状態です。
    130         *
    131         * 後付I/Fのため、default 設定しておきます。
    132         *
    133         * @og.rev 6.7.9.1 (2017/05/19) インターフェースの見直しにより、追加
    134         *
    135         * @param   row      値が参照される行
    136         * @param   modType  変更タイプ(追加/変更/削除)
    137         *
    138         */
    139        default void setModifyType( final int row,final String modType ) { /* Document empty method body */ }
    140
    141        /**
    142         * clm のNativeタイプを返します。
    143         * Nativeタイプはorg.opengion.fukurou.model.NativeTypeで定義されています。
    144         *
    145         * @og.rev 4.1.1.2 (2008/02/28) 新規追加
    146         *
    147         * @param  clm      値が参照される列
    148         *
    149         * @return Nativeタイプ
    150         * @see org.opengion.fukurou.model.NativeType
    151         */
    152        NativeType getNativeType( int clm );
    153}