    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         * clm のNativeタイプを返します。
    103         * Nativeタイプはorg.opengion.fukurou.model.NativeTypeで定義されています。
    104         *
    105         * @og.rev 4.1.1.2 (2008/02/28) 新規追加
    106         *
    107         * @param  clm      値が参照される列
    108         *
    109         * @return Nativeタイプ
    110         * @see org.opengion.fukurou.model.NativeType
    111         */
    112        NativeType getNativeType( int clm );
    113
    114        /**
    115         * データテーブル内の行の数を返します。
    116         *
    117         * 後付I/Fのため、default 設定しておきます。
    118         *
    119         * @og.rev 6.7.9.1 (2017/05/19) インターフェースの見直しにより、追加
    120         *
    121         * @return  モデルの行数
    122         */
    123        default int getRowCount() {
    124                return -1;
    125        }
    126
    127        /**
    128         * row 単位に変更されたタイプ(追加/変更/削除)を返します。
    129         *
    130         * 後付I/Fのため、default 設定しておきます。
    131         *
    132         * @og.rev 6.7.9.1 (2017/05/19) インターフェースの見直しにより、追加
    133         *
    134         * @param   row     値が参照される行
    135         *
    136         * @return  変更されたタイプの値 String
    137         */
    138        default String getModifyType( final int row ) {
    139                return "";
    140        }
    141
    142        /**
    143         * row 単位に変更タイプ(追加/変更/削除)をセットします。
    144         * このメソッドでは、データのバックアップは取りません。
    145         * タイプは始めに一度登録するとそれ以降に変更はかかりません。
    146         * なにも変更されていない場合は, ""(ゼロストリング)の状態です。
    147         *
    148         * 後付I/Fのため、default 設定しておきます。
    149         *
    150         * @og.rev 6.7.9.1 (2017/05/19) インターフェースの見直しにより、追加
    151         *
    152         * @param   row      値が参照される行
    153         * @param   modType  変更タイプ(追加/変更/削除)
    154         *
    155         */
    156        default void setModifyType( final int row,final String modType ) {
    157                /* Document empty method body */
    158        }
    159}