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 * 028 * @param <T> 型オブジェクト 029 */ 030public interface DataModel<T> { 031 032 /** 033 * 変更されたタイプ(追加) 034 * 035 * @og.rev 6.7.9.1 (2017/05/19) インターフェースの見直しにより追加 036 */ 037 String INSERT_TYPE = "A"; 038 039 /** 040 * 変更されたタイプ(変更) 041 * 042 * @og.rev 6.7.9.1 (2017/05/19) インターフェースの見直しにより追加 043 */ 044 String UPDATE_TYPE = "C"; 045 046 /** 047 * 変更されたタイプ(削除) 048 * 049 * @og.rev 6.7.9.1 (2017/05/19) インターフェースの見直しにより追加 050 */ 051 String DELETE_TYPE = "D"; 052 053 /** 054 * row にあるセルのオブジェクト値を置き換えます。 055 * 056 * @param vals 新しい配列値。 057 * @param row 値が変更される行(無視されます) 058 */ 059 void setValues( final T[] vals,final int row ) ; 060 061 /** 062 * カラム名に対応する カラム番号を返します。 063 * 064 * 特殊なカラムが指定された場合は、負の値を返します。 065 * 例えば、[KEY.カラム名]、[I]、[ROW.ID] など、特定の負の値を返します。 066 * また、カラム名が元のデータモデルに存在しない場合も、負の値か、 067 * Exception を返します。負の値なのか、Exception なのかは、 068 * 実装に依存します。 069 * 070 * @param columnName 値が参照されるカラム番号 071 * 072 * @return 指定されたセルのカラム番号 073 */ 074 int getColumnNo( final String columnName ) ; 075 076 /** 077 * カラム名配列を返します。 078 * 配列オブジェクトは、clone されたコピーを返します。 079 * 080 * @return カラム名配列 081 */ 082 String[] getNames(); 083 084 /** 085 * row にあるセルの属性値を配列で返します。 086 * 087 * @param row 値が参照される行 088 * 089 * @return 指定されたセルの属性値 090 */ 091 T[] getValues( int row ) ; 092 093 /** 094 * row および clm にあるセルの属性値を返します。 095 * 096 * @param row 値が参照される行 097 * @param clm 値が参照される列 098 * 099 * @return 指定されたセルの値 T 100 */ 101 T getValue( int row, int clm ) ; 102 103 /** 104 * clm のNativeタイプを返します。 105 * Nativeタイプはorg.opengion.fukurou.model.NativeTypeで定義されています。 106 * 107 * @og.rev 4.1.1.2 (2008/02/28) 新規追加 108 * 109 * @param clm 値が参照される列 110 * @return Nativeタイプ 111 * @see org.opengion.fukurou.model.NativeType 112 */ 113 NativeType getNativeType( int clm ); 114 115 /** 116 * データテーブル内の行の数を返します。 117 * 118 * 後付I/Fのため、default 設定しておきます。 119 * 120 * @og.rev 6.7.9.1 (2017/05/19) インターフェースの見直しにより追加 121 * 122 * @return モデルの行数 123 */ 124 default int getRowCount() { 125 return -1; 126 } 127 128 /** 129 * row 単位に変更されたタイプ(追加/変更/削除)を返します。 130 * 131 * 後付I/Fのため、default 設定しておきます。 132 * 133 * @og.rev 6.7.9.1 (2017/05/19) インターフェースの見直しにより追加 134 * 135 * @param row 値が参照される行 136 * 137 * @return 変更されたタイプの値 String 138 */ 139 default String getModifyType( final int row ) { 140 return ""; 141 } 142 143 /** 144 * row 単位に変更タイプ(追加/変更/削除)をセットします。 145 * このメソッドでは、データのバックアップは取りません。 146 * タイプは始めに一度登録するとそれ以降に変更はかかりません。 147 * なにも変更されていない場合は、""(ゼロストリング)の状態です。 148 * 149 * 後付I/Fのため、default 設定しておきます。 150 * 151 * @og.rev 6.7.9.1 (2017/05/19) インターフェースの見直しにより追加 152 * 153 * @param row 値が参照される行 154 * @param modType 変更タイプ(追加/変更/削除) 155 * 156 */ 157 default void setModifyType( final int row,final String modType ) { 158 /* Document empty method body */ 159 } 160}