    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 * 1ﾚｺｰﾄﾞのﾃﾞｰﾀを管理するｲﾝﾀｰﾌｪｰｽです。
    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         * @return      Nativeﾀｲﾌﾟ
    109         * @see org.opengion.fukurou.model.NativeType
    110         */
    111        NativeType getNativeType( int clm );
    112
    113        /**
    114         * ﾃﾞｰﾀﾃｰﾌﾞﾙ内の行の数を返します。
    115         *
    116         * 後付I/Fのため、default 設定しておきます。
    117         *
    118         * @og.rev 6.7.9.1 (2017/05/19) ｲﾝﾀｰﾌｪｰｽの見直しにより追加
    119         *
    120         * @return      ﾓﾃﾞﾙの行数
    121         */
    122        default int getRowCount() {
    123                return -1;
    124        }
    125
    126        /**
    127         * row 単位に変更されたﾀｲﾌﾟ(追加/変更/削除)を返します。
    128         *
    129         * 後付I/Fのため、default 設定しておきます。
    130         *
    131         * @og.rev 6.7.9.1 (2017/05/19) ｲﾝﾀｰﾌｪｰｽの見直しにより追加
    132         *
    133         * @param       row     値が参照される行
    134         *
    135         * @return      変更されたﾀｲﾌﾟの値 String
    136         */
    137        default String getModifyType( final int row ) {
    138                return "";
    139        }
    140
    141        /**
    142         * row 単位に変更ﾀｲﾌﾟ(追加/変更/削除)をｾｯﾄします。
    143         * このﾒｿｯﾄﾞでは、ﾃﾞｰﾀのﾊﾞｯｸｱｯﾌﾟは取りません。
    144         * ﾀｲﾌﾟは始めに一度登録するとそれ以降に変更はかかりません。
    145         * なにも変更されていない場合は、""(ｾﾞﾛｽﾄﾘﾝｸﾞ)の状態です。
    146         *
    147         * 後付I/Fのため、default 設定しておきます。
    148         *
    149         * @og.rev 6.7.9.1 (2017/05/19) ｲﾝﾀｰﾌｪｰｽの見直しにより追加
    150         *
    151         * @param       row             値が参照される行
    152         * @param       modType 変更ﾀｲﾌﾟ(追加/変更/削除)
    153         *
    154         */
    155        default void setModifyType( final int row,final String modType ) {
    156                /* Document empty method body */
    157        }
    158}