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.hayabusa.taglib; 017 018import org.opengion.hayabusa.html.ViewCalendarParam; 019 020import static org.opengion.fukurou.util.StringUtil.nval ; 021 022import java.io.ObjectOutputStream; 023import java.io.ObjectInputStream; 024import java.io.IOException; 025 026/** 027 * viewタグの viewFormType が HTMLCalendar の場合にパラメータを設定します。 028 * 029 * カレンダーを表示する、ViewForm_HTMLCalendar クラスに対して、各種パラメータを 030 * 設定します。 031 * パラメータが設定されていない場合は、ViewCalendarParam の初期値が使用されます。 032 * (パラメータを使用するには、viewタグのuseParam 属性をtrueに設定する必要があります。) 033 * 034 * @og.formSample 035 * ●形式:<og:calendarParam ymKey="YYYYMM" dayKey="DY" firstWeek="0" /> 036 * ●body:なし 037 * 038 * ●Tag定義: 039 * <og:calendarParam 040 * viewKeys 【TAG】行のキーとなるカラム名を複数指定します(事業所やWCなど) 041 * ymKey 【TAG】行のキーとなる年月を表すカラム名を指定します 042 * dayKey 【TAG】日付け(休日フラグ)のキーとなるカラム名の英字部分を指定します(DY1 ~ DY31) 043 * valueKey 【TAG】データの値となるカラム名の英字部分を指定します(初期値は使用しません) 044 * valueBRFlag 【TAG】データの値を使用する場合に、日付けとの関係で、BR を入れるかどうか指定します 045 * firstWeek 【TAG】カレンダ表示の週の初めを指定します( 0は、日曜日から、1は月曜日から) 046 * headerLocale 【TAG】週表示ヘッダーを表示する時の、Locale(language のみ) を指定します 047 * columnSize 【TAG】カレンダを横に並べる場合の数量を指定します(初期値: 3) 048 * debug 【TAG】デバッグ情報を出力するかどうか[true/false]を指定します(初期値:false) 049 * /> 050 * 051 * ●使用例 052 * ViewFormTag の viewFormType が、ViewCalendarParam の場合に使用します。 053 * useParam 属性を設定しておかないと、使用されません。 054 * <og:view 055 * <b>viewFormType = "HTMLCalendar"</b> 056 * command = "{@command}" 057 * startNo = "0" 058 * pageSize = "20" 059 * <b>useParam = "true"</b> 060 * > 061 * <og:calendarParam 062 * viewKeys = "CDJGS" 063 * ymKey = "YYYYMM" 064 * dayKey = "DY" 065 * valueKey = "" 066 * valueBRFlag = "true" 067 * firstWeek = "0" 068 * headerLocale = "en" 069 * columnSize = "3" 070 * /> 071 * </og:view > 072 * 073 * @og.rev 3.5.6.0 (2004/06/18) 新規作成 074 * @og.group 画面表示 075 * 076 * @version 4.0 077 * @author Kazuhiko Hasegawa 078 * @since JDK5.0, 079 */ 080public class ViewCalendarParamTag extends ViewParamTag { 081 //* このプログラムのVERSION文字列を設定します。 {@value} */ 082 private static final String VERSION = "4.0.0.0 (2006/09/31)" ; 083 084 private static final long serialVersionUID = 400020060931L ; 085 086 /** 087 * 【TAG】行のキーとなるカラム名を複数指定します(事業所やWCなど)。 088 * 089 * @og.tag 090 * エンジン標準カレンダ(GE13)では、年月(YYYYMM)と事業所コード(CDJGS) 091 * でユニークキーになります。また、能力カレンダなどでは、事業所、ワークセンタ 092 * で、ユニークになります。 093 * それらのキー項目を編集できるように、カラムをカンマ区切りで指定します。 094 * 095 * @og.rev 3.5.6.0 (2004/06/18) 新規作成 096 * 097 * @param viewKeys 行のキーとなるカラム名を複数指定 098 */ 099 public void setViewKeys( final String viewKeys ) { 100 putParam( ViewCalendarParam.VIEW_KEYS , 101 nval( getRequestParameter( viewKeys ),null ) ); 102 } 103 104 /** 105 * 【TAG】行のキーとなる年月を表すカラム名を指定します。 106 * 107 * @og.tag 108 * 現カレンダーは、年月毎に、31個の日付けフィールドを持ったデータを 109 * 前提としています。工場や事業所などの区分は、取得時には確定させておく必要があります。 110 * 初期値は、ViewCalendarParam に依存します。(例:YYYYMM) 111 * 112 * @param ymKey 行のキーとなる年月を表すカラム名 113 */ 114 public void setYmKey( final String ymKey ) { 115 putParam( ViewCalendarParam.YM_KEY , 116 nval( getRequestParameter( ymKey ),null ) ); 117 } 118 119 /** 120 * 【TAG】日付け(休日フラグ)のキーとなるカラム名の英字部分を指定します(DY1 ~ DY31)。 121 * 122 * @og.tag 123 * カレンダーを表示する場合の、各日付け欄のカラム名の英字部分を指定します。 124 * 現カレンダーは、年月毎に、31個の日付けフィールドを持ったデータを 125 * 前提としています。よって、このカラム名(英字部分)+日付け(1~31)を 126 * 動的に作成して、日付けカラムとして取得します。 127 * 例えば、"DY" という文字を指定した場合、DY1 ~ DY31 のカラム名を 128 * 使用して、検索結果の DBTableModel より値を取得します。 129 * 初期値は、ViewCalendarParam に依存します。(例:DY) 130 * 131 * @param dayKey 日付け(休日フラグ)のキーとなるカラム名の英字部分 132 */ 133 public void setDayKey( final String dayKey ) { 134 putParam( ViewCalendarParam.DAY_KEY , 135 nval( getRequestParameter( dayKey ),null ) ); 136 } 137 138 /** 139 * 【TAG】データの値となるカラム名の英字部分を指定します(初期値は使用しません)。 140 * 141 * @og.tag 142 * カレンダーを表示する場合の、各日付け欄の値のカラム名の英字部分を指定します。 143 * 現カレンダーは、年月毎に、31個の値フィールドを持ったデータを 144 * 前提としています。よって、このカラム名(英字部分)+日付け(1~31)を 145 * 動的に作成して、値カラムとして取得します。 146 * 例えば、"VAL" という文字を指定した場合、VAL1 ~ VAL31 のカラム名を 147 * 使用して、検索結果の DBTableModel より値を取得します。 148 * 初期値は、ViewCalendarParam に依存します。(例:使用していません) 149 * 150 * @param valueKey データの値となるカラム名の英字部分を指定します(初期値は使用しません) 151 */ 152 public void setValueKey( final String valueKey ) { 153 putParam( ViewCalendarParam.VALUE_KEY , 154 nval( getRequestParameter( valueKey ),null ) ); 155 } 156 157 /** 158 * 【TAG】データの値を使用する場合に、日付けとの関係で、BR を入れるかどうか指定します。 159 * 160 * @og.tag 161 * データを表示する場合、日付けの横につけるか、日付けの下に付けるかを指定します。 162 * ただし、valueKey で、値カラムを指定した場合のみ、有効になります。 163 * 初期値は、ViewCalendarParam に依存します。(例:true) 164 * 165 * @param valueBRFlag 日付け(休日フラグ)のキーとなるカラム名の英字部分 166 */ 167 public void setValueBRFlag( final String valueBRFlag ) { 168 putParam( ViewCalendarParam.VALUE_BR_FLAG_KEY , 169 nval( getRequestParameter( valueBRFlag ),null ) ); 170 } 171 172 /** 173 * 【TAG】カレンダ表示の週の初めを指定します( 0は、日曜日から、1は月曜日から)。 174 * 175 * @og.tag 176 * カレンダの週表示で、どの曜日から表示を始めるかを指定します。 177 * 0は、日曜日から、1は月曜日から表示を開始します。 178 * 初期値は、ViewCalendarParam に依存します。(例:0 日曜日から) 179 * 180 * @param firstWeek カレンダ表示の週の初め 181 */ 182 public void setFirstWeek( final String firstWeek ) { 183 putParam( ViewCalendarParam.FIRSTWEEK_KEY , 184 nval( getRequestParameter( firstWeek ),null ) ); 185 } 186 187 /** 188 * 【TAG】週表示ヘッダーを表示する時の、Locale(language のみ) を指定します。 189 * 190 * @og.tag 191 * 現実装では、"ja" と "en" のみ指定可能です。 192 * 将来的には、SimpleDateFormat を使用し、多言語対応しますが、現段階では、 193 * (日、月、火、水、木、金、土)と、(SUN,MON,TUE,WED,THU,FRI,SAT)の 194 * 2種類を切り替えているだけです。 195 * どの曜日から表示を始めるかは、firstWeek 属性で設定します。 196 * 初期値は、ViewCalendarParam に依存します。(例:"en") 197 * 198 * @param headerLocale ヘッダーの Locale(language のみ) 199 */ 200 public void setHeaderLocale( final String headerLocale ) { 201 putParam( ViewCalendarParam.HEADER_LOCALE_KEY , 202 nval( getRequestParameter( headerLocale ),null ) ); 203 } 204 205 /** 206 * 【TAG】カレンダを横に並べる場合の数量を指定します(初期値: 3)。 207 * 208 * @og.tag 209 * カレンダを複数並べる場合の横方向の件数を指定します。 210 * 1年を表す場合、3*4 や 2*6 のカレンダが一般的です。 211 * ここでは、横方向(3や2)の件数を指定することで、レイアウトを 212 * 指定します。 213 * 214 * @og.rev 3.5.6.0 (2004/06/18) 新規作成 215 * 216 * @param columnSize カレンダを横に並べる場合の数量(初期値: 3) 217 */ 218 public void setColumnSize( final String columnSize ) { 219 putParam( ViewCalendarParam.COLUMN_SIZE_KEY , 220 nval( getRequestParameter( columnSize ),null ) ); 221 } 222 223 /** 224 * タグの名称を、返します。 225 * 自分自身のクラス名より、自動的に取り出せないため、このメソッドをオーバーライドします。 226 * 227 * @og.rev 4.0.0.0 (2005/01/31) 新規追加 228 * 229 * @return タグの名称 230 */ 231 @Override 232 protected String getTagName() { 233 return "calendarParam" ; 234 } 235 236 /** 237 * シリアライズ用のカスタムシリアライズ書き込みメソッド 238 * 239 * @og.rev 4.0.0.0 (2006/09/31) 新規追加 240 * @serialData 一部のオブジェクトは、シリアライズされません。 241 * 242 * @param strm ObjectOutputStreamオブジェクト 243 * @throws IOException 入出力エラーが発生した場合 244 */ 245 private void writeObject( final ObjectOutputStream strm ) throws IOException { 246 strm.defaultWriteObject(); 247 } 248 249 /** 250 * シリアライズ用のカスタムシリアライズ読み込みメソッド 251 * 252 * ここでは、transient 宣言された内部変数の内、初期化が必要なフィールドのみ設定します。 253 * 254 * @og.rev 4.0.0.0 (2006/09/31) 新規追加 255 * @serialData 一部のオブジェクトは、シリアライズされません。 256 * 257 * @param strm ObjectInputStreamオブジェクト 258 * @see #release2() 259 * @throws IOException シリアライズに関する入出力エラーが発生した場合 260 * @throws ClassNotFoundException クラスを見つけることができなかった場合 261 */ 262 private void readObject( final ObjectInputStream strm ) throws IOException , ClassNotFoundException { 263 strm.defaultReadObject(); 264 } 265}