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}