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 */
016 package org.opengion.hayabusa.taglib;
017
018 import org.opengion.hayabusa.common.HybsSystem;
019 import org.opengion.hayabusa.common.HybsSystemException;
020 import org.opengion.hayabusa.resource.CalendarData;
021 import org.opengion.hayabusa.resource.CalendarFactory;
022 import org.opengion.hayabusa.html.ViewStackTableParam;
023 import org.opengion.fukurou.util.StringUtil;
024 import org.opengion.fukurou.util.HybsDateUtil;
025
026 import static org.opengion.fukurou.util.StringUtil.nval ;
027
028 import java.util.Calendar;
029 import java.util.Date;
030 import java.util.List;
031 import java.util.ArrayList;
032 import java.util.Locale ;
033 import java.text.DateFormat;
034 import java.text.SimpleDateFormat;
035
036 /**
037 * ガントチャート用のヘッãƒ??æƒ??(日付けç?をå?力するタグですã?
038 *
039 * スライドバー式ガントチャートã?表示時に、スライドバーの長さと日付とを関連付けるためã?
040 * ヘッãƒ??æƒ??(日付けç?をå?力しますã?スライドバーと日付間隔ã?、zoom 属æ?によってã€?
041 * CSSファイルのフォントサイズと、JavaScript のå†?ƒ¨配å?に依存してã�?�¾すã?
042 * またã?こã?ヘッãƒ??では、日付ã?休日æƒ??をã?カレンãƒ?ƒ†ーブルを参照することで取得してã�?�¾すã?
043 * calDB 属æ?へのæŒ?®šã?、CalendarFactory で生æ?されるテーブルå�?CalendarDataの実è£?‚¯ラス)
044 * を指定しますã?
045 *
046 * @og.formSample
047 * ●形式ï¼?lt;og:ganttHeader startDate="…" endDate="…" zoom="[…]" />
048 * ●body?šなã�?
049 *
050 * ●Tag定義??
051 * <og:ganttHeader
052 * startDate 【TAG】表示開始日付けを設定しまã�?yyyyMMdd またã?、yyyyMMddHHmm 形å¼?
053 * endDate 【TAG】表示æœ?µ‚日を設定しまã�?yyyyMMdd またã?、yyyyMMddHHmm 形å¼?
054 * zoom 【TAG】ズーãƒ?¤‰数(0??3,20??1,40??9)を設定しまã�?初期値:2)
055 * calDB 【TAG】DB検索する?¤?¢を指定しまã�?
056 * arg1 【TAG】D?¢検索する場合ã?第?‘ã?キーを指定しまã�?
057 * arg2 【TAG】D?¢検索する場合ã?第?’ã?キーを指定しまã�?
058 * arg3 【TAG】D?¢検索する場合ã?第?“ã?キーを指定しまã�?
059 * arg4 【TAG】D?¢検索する場合ã?第?”ã?キーを指定しまã�?
060 * daySpan 【TAG】1日の開始終äº?™‚間を24時間形å¼?HHmm-HHmm)で設定しまã�?初期値:0700-2000)
061 * breakTimes 【TAG】時間軸での休æ?時間の開å§?終äº?™‚刻をカンマ区åˆ?‚Šでè¤?•°æŒ?®šしまã�?HHmm-HHmm形式ã?またã?、yyyyMMddHHmm-HHmm形式ã?またã?、yyyyMMddHHmm-yyyyMMddHHmm形å¼?
062 * breakTimeStyle 【TAG】時間軸での休æ?時間の表示スタイルを設定しまã�?初期値:top:20px;background-color:yellow;filter:alpha(opacity=60);opacity:0.60;)
063 * baseTimes 【TAG】時間軸でのベã?ス時刻の開始時刻をカンマ区åˆ?‚Šでè¤?•°æŒ?®šしまã�?HHmm形式ã?またã?、yyyyMMddHHmm形å¼?
064 * baseTimeStyle 【TAG】時間軸でのベã?ス時刻の表示スタイルを設定しまã�?初期値:top:20px;background-color:transparent;border-left:2px dashed red;)
065 * skipHoliday 【TAG】時間ガントで休日を表示する/しなã�?‚’設定しまã�?(初期値:USE_GANTTHEADER_SKIP_HOLIDAY[=true])
066 * useMultiClm 【TAG】時間ã?ãƒ?ƒ€ーの上段に日付を、下段の時間を表示しまã�?(初期値:USE_GANTTHEADER_MULTIPLE_COLUMN[=false])
067 * debug 【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
068 * />
069 *
070 * ●使用ä¾?
071 * 参ç??šjsp/GANTT06 フォルãƒ?
072 *
073 * <og:ganttHeader
074 * startDate = "{@VIEW_DATE}"
075 * endDate = "{@DYMAX}"
076 * zoom = "{@VIEW_ZOOM}"
077 * calDB = "GF13"
078 * arg1 = "{@CDJGS}"
079 * arg2 = ""
080 * /og:ganttHeader>
081 *
082 * <og:ganttHeader
083 * startDate = "{@VIEW_DATE}"
084 * endDate = "{@DYMAX}"
085 * daySpan = "0700-2000" HHmm-HHmm 形式で?‘日の時間ç¯?›²を指å®?
086 * breakTimes = "1200-1245,1645-1650,200508200700-1200;" 休æ?時間は、HHmm-HHmm形式ã?またã?、yyyyMMddHHmm-HHmm形式ã?またã?、yyyyMMddHHmm-yyyyMMddHHmm形式ですã?
087 * breakTimeStyle = "top:20px;background-color:yellow;" 休æ?時間のスタイルに追åŠ?�—ますã?
088 * zoom = "20"
089 * /og:ganttHeader>
090 *
091 * ●定義・解説
092 * PL/SQL の VIEW_ZOOM メソãƒ?ƒ‰を用ã�?�¦、実際の日付けから画面表示ピクセルへ
093 * 変換する割合を求めますã?これと、jsp\GANTT\image の ganttBGx.gif(x は ZOOM変数)
094 * を対応付けて、日付けのヘッãƒ??を求めますã?
095 * jsp\custom\custom.css の th.zoomx(x は ZOOM変数) により、日付けヘッãƒ??æ–?—ã?
096 * 表示間隔を制御してã�?�¾すã?で、これらの関係を正確に把握しておいて下さã�??
097 * 日付けヘッãƒ??は、イメージ変数を用ã�?�¦ã�?‚‹関係上ã?固定ã?日数を加算してã€?
098 * 求めますã?(週:7日, 半月:15日, æœ?30日, 4半期:90日, 年:360日)
099 *
100 * ヘッãƒ??部のカレンãƒ?�«、calDB でæŒ?®šされた カレンãƒ?ƒ†ーブルを使用出来ますã?
101 * 使用する場合ã?、arg1(事業æ‰?½º?°??¾žç??žarg4(WC?º?°??¾žç? の属æ?を指定する事ができますã?
102 * zoom="10"(週単ä½? を使用の週数の計算ã?、年初ã?æœ??の?—日間が含まれる週をã?第?‘é?と数えますã?
103 *
104 * zoom="20"(æ™?é–?ではã€?¼‘日の時間ç¯?›²をdaySpanでHHmm-HHmm形式でæŒ?®šしますã?
105 * 開始時刻は、å?部で?‘時間単位に変換されますã??˜時?“0å??žã?ã€?¼˜時?žになりますã?
106 * 終äº?™‚間ã?、その時間をã?含みませんã€?
107 * 開始終äº??、startDate、endDateでæŒ?®šしますが、yyyyMMdd またã?、yyyyMMddHHmm 形式としますã?
108 * calDB でæŒ?®šされた カレンãƒ?ƒ†ーブルを見て、休日の場合ã?、表示をスキãƒ??しますã?
109 * 休æ?時間は、breakTimes でæŒ?®šしますã?(HHmm-HHmm形式ã?またã?、yyyyMMddHHmm-HHmmã€?
110 * またã?、yyyyMMddHHmm-yyyyMMddHHmm形å¼?
111 * カンマ区åˆ?‚Šでè¤?•°æŒ?®šできますã?日付指定がなã�??合ã?、毎日、日付指定がある場合ã?ã€?
112 * そã?日のみ有効ですã?休æ?時間は、日をまたぐ事ã?可能ですã?
113 * breakTimeStyle として、休æ?時間のæŒ?®šに追åŠ?�™るスタイル属æ?を追åŠ?�—ますã?
114 * 通常は、バãƒ?‚¯カラーと上からã?位置ですã?ヘッãƒ??表示はã€?¼‘時間単位ですã?
115 * 初期値はã€?top:20px;background-color:yellow;filter:alpha(opacity=60);opacity:0.60;" ですã?
116 *
117 * ベã?ス時刻(baseTimes)は、HHmm形式ã?またã?、yyyyMMddHHmm形式でæŒ?®šしたç®?‰€に、線を引きますã?
118 * 例えば、検索した時刻を指定すると、現在時刻のç®?‰€を示す線になりますã?
119 * またã?業務è?体ã?開始時刻ã‚?µ‚äº?™‚刻のç®?‰€を表すことも可能ですã?
120 * baseTimeStyle は、このベã?ス時刻のスタイルを決めますã?breakTimeStyle との違いはã€?
121 * 帯のå¹?‚’、このスタイルシートでæŒ?®šしてã�?‚‹ことですã?
122 * 初期値は、top:20px;background-color:transparent;border-left:2px dashed red; ですã?
123 *
124 * zoom="21"(æ™?é–?では、ä¸?™‚間ã?ピクセルã‚?20"(æ™?の半å?に変更しますã?
125 *
126 * useMultiClm パラメータを設定すると、ガントã?ãƒ?ƒ€ーにおいてã€?¼’段çµ?‚’使用するかどã�?�‹をã?
127 * æŒ?®šできますã?時間ヘッãƒ??の上段に日付を、下段の時間軸の(h)の削除を行いますã?
128 * 日付ã?、表示開始時刻の上と、それã??–時間ごとに表示しますã?
129 * 初期値は、シスãƒ?ƒ リソースの USE_GANTTHEADER_MULTIPLE_COLUMN でæŒ?®šしますã?
130 *
131 * シスãƒ?ƒ リソースに USE_GANTTHEADER_MONTH_DATE パラメータを設定するとã€?
132 * ガントã?ãƒ?ƒ€ーにおいてã€?0日ã€?0日ã€?80日のヘッãƒ??表示で、日付まで
133 * 表示するかã?月ã?み表示するかをæŒ?®šしますã?
134 * ガントã?ãƒ?ƒ€ーの繰返し表示でバックグラウンドイメージは固定日なので、ä¸?œˆ表示ã‚?
135 * 30日単位で表示してã�?�¾すが、å?頭日付が 1日でなã�?�Ÿめã?判りにくいと苦æƒ?�Œありましたã€?
136 * そこでã€?0日ã€?0日ã€?80日のヘッãƒ??表示時に、日付を表示しなã�?‚ˆã�?�«するフラグですã?
137 * 月表示は、その月が 20日以降ã?場合ã?翌月を表示しますã?
138 * 初期値は、互換性の為、false ですã?
139 *
140 * zoom 40(DAY),41(WEEK),42(MONTH) は、積み上げガント用のヘッãƒ??処ç�?‚’行いますã?
141 * 積み上げガントã?、固定日処ç�?�§はなくã?月単位にåŠ?®—しますã?
142 *
143 * @og.rev 3.5.4.8 (2004/02/23) 新規作æ?
144 * @og.group 画面部å“?
145 *
146 * @version 4.0
147 * @author Kazuhiko Hasegawa
148 * @since JDK5.0,
149 */
150 public class GanttHeaderTag extends CommonTagSupport {
151 //* こã?プログラãƒ??VERSIONæ–?—å?を設定しますã? {@value} */
152 private static final String VERSION = "5.7.6.2 (2014/05/16)" ;
153
154 private static final long serialVersionUID = 576220140516L ;
155
156 // 5.6.2.3 (2013/03/22) 日付をセンターに表示させるå?合ã?両端スペã?スのå…?ƒ�タ
157 private static final String SPACE = " " ; // 日ä»?31日åˆ?より多いスペã?ス
158
159 // 5.6.5.0 (2013/06/07) 曜日ãƒ??タをé?列で持っておきますã?
160 private static final String[] DAY_OF_WEEK_ja = new String[] { " ","日 ","æœ?","火 ","水 ","木 ","é‡?","åœ?" };
161 private static final String[] DAY_OF_WEEK_en = new String[] { " ","Su" ,"Mo" ,"Tu" ,"We" ,"Th" ,"Fr" ,"Sa" };
162
163 private String startDate = null;
164 private String endDate = null;
165 private String daySpan = "0700-2000"; // ?‘日の時間ç¯?›²(HHmm-HHmm) 3.8.0.5 (2005/08/26)
166 private int zoom = 2;
167 private String breakTimes = null; // 休æ?時間は、HHmm-HHmm形式ã?またã?、yyyyMMddHHmm-HHmm、またã?、yyyyMMddHHmm-HHmmyyyyMMdd形式ですã?
168 private String breakTimeStyle = "top:20px;background-color:yellow;filter:alpha(opacity=60);opacity:0.60;" ; // 5.6.4.3 (2013/05/24) 初期値変更
169 private String calDB = null; // 3.6.0.0 (2004/09/17) DB検索する?¤?¢のキー
170 private String arg1 = null; // 3.6.0.0 (2004/09/17) DB検索の第?‘キー(事業æ‰?‚³ードなど)
171 private String arg2 = null; // 3.6.0.0 (2004/09/17) DB検索の第?’キー(?·?£コードなど)
172 private String arg3 = null; // 3.6.0.0 (2004/09/17) DB検索の第?“キー(事業æ‰?‚³ードなど)
173 private String arg4 = null; // 3.6.0.0 (2004/09/17) DB検索の第?”キー(?·?£コードなど)
174 private boolean skipHoliday = HybsSystem.sysBool( "USE_GANTTHEADER_SKIP_HOLIDAY" ); // 4.0.0.0 (2007/09/07) 休日をスキãƒ??するかどã�?�‹
175 private String calStr = null; // 5.5.4.0 (2012/07/02) 出勤日・休日のフラグ
176
177 private static final int TIME_PIXEL = 48; // 3.8.1.1 (2005/11/21) 時間ヘッãƒ??時ã??‘時間ã?ピクセル数
178 // private static final boolean USE_MULTI_CLM = HybsSystem.sysBool( "USE_GANTTHEADER_MULTIPLE_COLUMN" ); // 3.8.1.4 (2006/03/13)
179 private boolean useMultiClm = HybsSystem.sysBool( "USE_GANTTHEADER_MULTIPLE_COLUMN" ); // 5.6.1.2 (2013/02/22)
180
181 private static final boolean USE_MONTH_DATE = HybsSystem.sysBool( "USE_GANTTHEADER_MONTH_DATE" ); // 3.8.5.2 (2006/06/09)
182 private static final int MONTH_DATE_LIMITER = 20; // 当月 20 日以降ã?、翌月扱ã�?�¨なるã?
183
184 private static final String BLUE_COLOR = "<span style=\"color:Blue;\">" ; // 5.6.2.3 (2013/03/22) å»?¢
185 private static final String RED_COLOR = "<span style=\"color:Red;\">" ; // 5.6.2.3 (2013/03/22) å»?¢
186 private static final String TODAY_CLASS = "gntToday" ; // 5.6.2.3 (2013/03/22) 当日を示すクラスå�?
187 private static final String HOLIDAY_CLASS = "gntHoliday" ; // 5.6.2.3 (2013/03/22) 休日を示すクラスå�?
188 private static final String END_SPAN = "</span>" ;
189 private static final String BR = "<br/>" ;
190
191 private static final String ODD_CLASS = "<span class=\"oddColor\">" ; // 5.6.2.3 (2013/03/22) å¥?•°月ã?色設å®?
192 private static final String EVEN_CLASS = "<span class=\"evenColor\">" ; // 5.6.2.3 (2013/03/22) 偶数月ã?色設å®?
193
194 private String baseTimes = null; // 5.6.1.2 (2013/02/22) ベã?ス時刻は、HHmm形式ã?またã?、yyyyMMddHHmm形式ですã?
195 private String baseTimeStyle = "top:20px;background-color:transparent;border-left:2px dashed red;" ; // 5.6.1.2 (2013/02/22) ベã?ス時刻を赤線表示しますã?
196
197 private static final boolean useMdheader = HybsSystem.sysBool( "USE_MDHEADER_ONTIME" ); // 5.7.0.0 (2013/11/07)
198
199 /**
200 * Taglibの終äº?‚¿グが見つかったときに処ç�?�™ã‚?doEndTag() ã‚?オーバã?ライドしますã?
201 *
202 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()で呼ぶã€?
203 * @og.rev 3.6.0.0 (2004/09/17) zoom 3 の時ã?計算å?を変更
204 * @og.rev 3.7.1.0 (2005/04/15) zoom 10 の追åŠ?
205 * @og.rev 3.8.1.6 (2006/04/25) zoom 21 の追åŠ?
206 * @og.rev 3.8.5.2 (2006/06/09) makeZoom メソãƒ?ƒ‰の USE_MONTH_DATE パラメータ追åŠ?
207 * @og.rev 3.8.9.2 (2007/07/28) makeZoomTime メソãƒ?ƒ‰の 時間間隔パラメータ追åŠ?
208 * @og.rev 5.5.4.0 (2012/07/02) ヘッãƒ??属æ?æƒ??の出力追åŠ?
209 * @og.rev 5.6.3.2 (2013/04/12) 曜日をå?力するå?合ã?段çµ?�¿では、å?角スペã?スを使ã�?firefox対å¿?
210 *
211 * @return 後続å?ç�??æŒ?¤º
212 */
213 @Override
214 public int doEndTag() {
215 debugPrint(); // 4.0.0 (2005/02/28)
216 if( startDate == null || endDate == null ||
217 startDate.length() < 8 || endDate.length() < 8 ) {
218 String errMsg = "開始日と終äº?—¥は、どちらも yyyyMMdd 形式で、å¿??ですã?"
219 + " startDate=[" + startDate + "] endDate=[" + endDate + "]" ;
220 throw new HybsSystemException( errMsg );
221 }
222
223 // 月単位ã?処ç�?�«30,60,90などの固定日を使用してã�?‚‹のは、ガントバーの長さが
224 // 日単位ã?固定長なのでã€?•·期間のガントを使用すると後ろの方でずれてくるためã€?
225 String header = "";
226 String md = (USE_MONTH_DATE) ? "MM " : "MM/dd";
227 switch( zoom ) {
228 case 0: header = makeZoom( "MM/ " ,"dd(EE)" , 1 ,false ) ; break;
229 case 1: header = makeZoom( "MM/" ,"dd " , 1 ,false ) ; break;
230 case 2: header = makeZoom2( 1 ) ; break;
231 case 3: header = makeZoom( "yyyy/ " ,"MM/dd " , 7 ,false ) ; break;
232 case 4: header = makeZoom( "yyyy/ " ,"MM/dd " , 14 ,false ) ; break;
233 case 5: header = makeZoom( "yyyy/ " ,md + " " , 30 ,USE_MONTH_DATE ) ; break;
234 case 6: header = makeZoom( "yyyy/ " ,md + " " , 30 ,USE_MONTH_DATE ) ; break;
235 case 7: header = makeZoom( "yyyy/ " ,md + " " , 90 ,USE_MONTH_DATE ) ; break;
236 case 8: header = makeZoom( "yyyy/ " ,md + " " ,180 ,USE_MONTH_DATE ) ; break;
237 case 9: header = makeZoom( "yyyy/ " ,md + " " ,180 ,USE_MONTH_DATE ) ; break;
238 case 10: header = makeZoom( "ww'W'" ,"'<span title=\"'MM/dd'\">'dd '</span>'" ,7 ,false ) ; break;
239 // case 11: break; // 他物件予ç´?¸ˆみ
240 // case 12: break; // 他物件予ç´?¸ˆみ
241 case 13: header = makeZoom3( "yyyy/MM" , "dd" ,"EE" , 1 ) ; break; // 5.6.2.3 (2013/03/22) 月ã?曜日表示
242 case 20: header = makeZoomTime( TIME_PIXEL , 1,true ) ; break; // 3.8.1.1 (2005/11/21)
243 case 21: header = makeZoomTime( TIME_PIXEL/2, 1,false ) ; break; // 3.8.1.6 (2006/04/25)
244 case 22: header = makeZoomTime( TIME_PIXEL , 2,true ) ; break; // 3.8.9.2 (2007/07/28)
245 case 23: header = makeZoomTime( TIME_PIXEL/2, 2,false ) ; break; // 3.8.9.2 (2007/07/28)
246 case 24: header = makeZoomTime( TIME_PIXEL , 4,true ) ; break; // 3.8.9.2 (2007/07/28)
247 case 25: header = makeZoomTime( TIME_PIXEL/2, 4,false ) ; break; // 3.8.9.2 (2007/07/28)
248 case 26: header = makeZoomTime( TIME_PIXEL , 6,true ) ; break; // 3.8.9.2 (2007/07/28)
249 case 27: header = makeZoomTime( TIME_PIXEL/2, 6,false ) ; break; // 3.8.9.2 (2007/07/28)
250 case 28: header = makeZoomTime( TIME_PIXEL , 8,true ) ; break; // 3.8.9.2 (2007/07/28)
251 case 29: header = makeZoomTime( TIME_PIXEL/2, 8,false ) ; break; // 3.8.9.2 (2007/07/28)
252 case 30: header = makeZoomTime( TIME_PIXEL , 12,true ) ; break; // 3.8.9.2 (2007/07/28)
253 case 31: header = makeZoomTime( TIME_PIXEL/2, 12,false ) ; break; // 3.8.9.2 (2007/07/28)
254 // 5.6.1.2 (2013/02/22) 積み上げガンãƒ?
255 case 40: header = makeZoomStack( "MM/ " ,"dd(EE)" , 1,false ) ; break; // 5.6.1.2 (2013/02/22)
256 case 41: header = makeZoomStack( "ww'W' " ,"MM/dd " , 7,false ) ; break; // 5.6.1.2 (2013/02/22)
257 case 42: header = makeZoomStack( "yyyy/ " ,"MM " , 1,true ) ; break; // 5.6.1.2 (2013/02/22)
258 // case 43: break; // 日単位ã?ãƒ?ƒ€ー予ç´?¸ˆみ
259 // ??
260 // case 49: break; // 日単位ã?ãƒ?ƒ€ー予ç´?¸ˆみ
261 default: break;
262 }
263
264 jspPrint( header );
265 jspPrint(makeHeaderData()); // 5.5.4.0 (2012/07/02)
266 return(EVAL_PAGE);
267 }
268
269 /**
270 * タグリブオブジェクトをリリースしますã?
271 *
272 * キャãƒ?‚·ュされて再利用されるã?で、フィールドã?初期設定を行いますã?
273 *
274 * @og.rev 3.6.0.0 (2004/09/17) 事業æ‰?‚³ーãƒ?cdjgs 属æ?を追åŠ?
275 * @og.rev 3.8.0.2 (2005/07/11) startTime,timePeriod,breakTimes 属æ?を追åŠ?
276 * @og.rev 3.8.0.5 (2005/08/26) daySpan,breakTimes,breakTimeStyle 属æ?を追åŠ?
277 * @og.rev 5.5.4.0 (2012/07/02) calStr追åŠ?
278 * @og.rev 5.6.1.2 (2013/02/22) baseTimes、baseTimeStyle追åŠ?useMultiClm追åŠ?
279 */
280 @Override
281 protected void release2() {
282 super.release2();
283 startDate = null;
284 endDate = null;
285 daySpan = "0700-2000"; // 開始時刻(HHmm-HHmm) 3.8.0.5 (2005/08/26)
286 zoom = 2;
287 calDB = null; // 3.6.0.0 (2004/09/17) DB検索する?¤?¢のキー
288 arg1 = null; // 3.6.0.0 (2004/09/17) DB検索の第?‘キー(事業æ‰?‚³ードなど)
289 arg2 = null; // 3.6.0.0 (2004/09/17) DB検索の第?’キー(?·?£コードなど)
290 arg3 = null; // 3.6.0.0 (2004/09/17) DB検索の第?“キー
291 arg4 = null; // 3.6.0.0 (2004/09/17) DB検索の第?”キー
292 breakTimes = null; // 休æ?時間は、HHmm-HHmm形式ã?またã?、yyyyMMddHHmm-HHmm、またã?、yyyyMMddHHmm-HHmmyyyyMMdd形式ですã?
293 breakTimeStyle = "top:20px;background-color:yellow;filter:alpha(opacity=60);opacity:0.60;" ;
294 skipHoliday = HybsSystem.sysBool( "USE_GANTTHEADER_SKIP_HOLIDAY" ); // 4.0.0.0 (2007/09/10)
295 calStr = null; // 5.5.4.0 (2012/07/02)
296 baseTimes = null; // 5.6.1.2 (2013/02/22) ベã?ス時刻は、HHmm形式ã?またã?、yyyyMMddHHmm形式ですã?
297 baseTimeStyle = "top:20px;background-color:transparent;border-left:2px dashed red;" ; // 5.6.1.2 (2013/02/22) ベã?ス時刻を赤線表示しますã?
298 useMultiClm = HybsSystem.sysBool( "USE_GANTTHEADER_MULTIPLE_COLUMN" ); // 5.6.1.2 (2013/02/22)
299 }
300
301 /**
302 * 上段・下段のフォーマットと、加算日に応じたã?ãƒ?ƒ€ーæ–?—å?を作æ?しますã?
303 *
304 * @og.rev 3.6.0.0 (2004/09/17) 休日判断をã?事業æ‰?‚«レンãƒ?‚’使用
305 * @og.rev 3.7.1.0 (2005/04/15) zoom == 10 週単位ã?場合ã?特殊å?ç�?‚’追åŠ?
306 * @og.rev 3.7.1.1 (2005/05/23) 本日はã€?�’色で示しますã?
307 * @og.rev 3.8.5.2 (2006/06/09) makeZoom メソãƒ?ƒ‰の USE_MONTH_DATE パラメータ追åŠ?
308 * @og.rev 5.5.4.0 (2012/07/02) カレンãƒ??フラグ対å¿?
309 * @og.rev 5.6.2.3 (2013/03/22) 日付ã?終äº?—¥は、ã?含ã‚??に変更
310 * @og.rev 5.6.5.0 (2013/06/07) 上段ヘッãƒ??ã�?MM の場合ã?週単位で月を表示しã?色バã?を使用しますã?
311 * @og.rev 5.7.2.0 (2014/01/10) 上段は、休日をå?さなã�??で、END_SPAN 不è¦?
312 *
313 * @param upper 上段の表示フォーマッãƒ?
314 * @param lower 下段の表示フォーマッãƒ?
315 * @param add 表示日付けのåŠ?®?
316 * @param useMonth 月日表示でなくã?月表示のみにするã€?20日以降を翌月表示するã€?
317 *
318 * @return ヘッãƒ??æ–?—å?
319 */
320 private String makeZoom( final String upper ,final String lower ,final int add, final boolean useMonth ) {
321 boolean colBar = upper.startsWith( "MM" ); // 5.6.5.0 (2013/06/07) 色バã?使用 true
322
323 DateFormat format1 = new SimpleDateFormat( upper,Locale.JAPAN );
324 DateFormat format2 = new SimpleDateFormat( lower,Locale.JAPAN );
325
326 Calendar str = HybsSystem.getCalendar( startDate );
327 Calendar end = HybsSystem.getCalendar( endDate );
328
329 // zoom == 10 週単位ã?場合ã?特殊å?ç�??
330 // 年の第ä¸??を完å?なä¸??間å?(?—日é–?として、設定しますã?
331 if( zoom == 10 ) {
332 str.setMinimalDaysInFirstWeek( 7 );
333 format1.setCalendar( str );
334 format2.setCalendar( str );
335 }
336
337 StringBuilder buf1 = new StringBuilder( HybsSystem.BUFFER_SMALL );
338 StringBuilder buf2 = new StringBuilder( HybsSystem.BUFFER_SMALL );
339 StringBuilder bufcal = new StringBuilder( HybsSystem.BUFFER_SMALL ); // 5.5.4.0 (2012/07/02) 休日判定用
340
341 // 5.6.5.0 (2013/06/07) æ–?—å?の作æ?方法ã?統ä¸??pre タグを最初に設定しておくã€?
342 buf1.append( "<pre>" );
343
344 // 3.6.0.0 (2004/09/17) カレンãƒ?B検索機è?を追åŠ?
345 CalendarData calData = CalendarFactory.getCalendarData( calDB,arg1,arg2,arg3,arg4 );
346
347 boolean modifyFlag = false;
348 // 5.6.2.3 (2013/03/22) 日付ã?終äº?—¥は、ã?含ã‚??に変更
349 // while( str.before( end ) ) {
350 int cnt = 0; // 5.6.5.0 (2013/06/07) 色バã?対å¿?
351 if( colBar ) { buf1.append( EVEN_CLASS ); } // 5.6.5.0 (2013/06/07) 色バã?対å¿?
352 boolean isFirst = true; // 5.6.5.0 (2013/06/07) 色バã?対応で、最初だけã?月を表示するã€?
353
354 while( str.compareTo( end ) <= 0 ) {
355 boolean monday = ( Calendar.MONDAY == str.get( Calendar.DAY_OF_WEEK ) ); // 5.6.5.0 (2013/06/07) 色バã?対å¿?
356 if( colBar && monday ) {
357 // 5.6.5.0 (2013/06/07) 色バã?対å¿?
358 buf1.append( END_SPAN );
359 cnt++;
360 isFirst = true;
361
362 if( cnt % 2 == 0 ) { buf1.append( EVEN_CLASS ); } // 偶数の色
363 else { buf1.append( ODD_CLASS ); } // å¥?•°の色
364 }
365
366 Date dt = str.getTime();
367 // 3.8.5.2 (2006/06/09) useMonth ?Œラク?žにより 月表示のみに変更しますã?
368 // MONTH_DATE_LIMITER でæŒ?®šã?日以降ã?、翌月扱ã�?�¨なるã?
369 if( useMonth && str.get( Calendar.DATE ) >= MONTH_DATE_LIMITER ) {
370 Calendar calPlus = (Calendar)str.clone();
371 calPlus.set( Calendar.DATE , 1 ); // ?‘日にセãƒ?ƒˆしますã?
372 calPlus.add( Calendar.MONTH , 1 ); // 月を?‘ヶ月ã?ラスしますã?
373 dt = calPlus.getTime();
374 }
375
376 // 3.7.1.1 (2005/05/31) 本日はã€?�’色で示しますã?
377 if( calData.isContainedToday( str,add ) ) {
378 // buf1.append( BLUE_COLOR );
379 buf2.append( BLUE_COLOR );
380 bufcal.append( "0" ); // 5.5.4.0 (2012/07/02)
381 modifyFlag = true;
382 }
383
384 // 3.6.0.0 (2004/09/17) 休日判断をã?事業æ‰?‚«レンãƒ?‚’使用
385 // modifyFlag が立ってã�?�ªã�??å�?を条件に追åŠ?�—ますã?
386 if( !modifyFlag && add == 1 && calData.isHoliday( str ) ) {
387 // buf1.append( RED_COLOR );
388 buf2.append( RED_COLOR );
389 bufcal.append( "1" ); // 5.5.4.0 (2012/07/02) 休日
390 modifyFlag = true;
391 }
392
393 // 5.6.5.0 (2013/06/07) 色バã?対応ã?色バã?で、かつ、å?頭でなければ、スペã?スをå?åŠ?
394 if( colBar && !isFirst ) {
395 buf1.append( SPACE.substring( 0,upper.length() ) );
396 }
397 else {
398 buf1.append( format1.format( dt ) );
399 isFirst = false;
400 }
401 buf2.append( format2.format( dt ) );
402
403 if( modifyFlag ) {
404 // buf1.append( END_SPAN ); // 5.7.2.0 (2014/01/10) 上段は、休日をå?さなã�??で、END_SPAN 不è¦?
405 buf2.append( END_SPAN );
406 modifyFlag = false;
407 }
408 else{
409 bufcal.append( "0" ); // 5.5.4.0 (2012/07/02)
410 }
411 str.add(Calendar.DATE, add);
412 }
413 calStr = bufcal.toString(); // 5.5.4.0 (2012/07/02)
414
415 if( colBar ) { buf1.append( END_SPAN ); } // 5.6.5.0 (2013/06/07) 色バã?対å¿?
416
417 // return "<pre>" + buf1.toString() + BR + buf2.toString() + "</pre>";
418 return buf1.append( BR ).append( buf2 ).append( "</pre>" ).toString(); // 5.6.5.0 (2013/06/07) æ–?—å?の作æ?方法ã?統ä¸?
419 }
420
421 /**
422 * zoom = 2 の場合ã?ヘッãƒ??をå?力しますã?
423 * こã?ヘッãƒ??ã�?�‘特別なので、別メソãƒ?ƒ‰を作æ?しますã?
424 *
425 * type=1 の場å�?
426 * [ 0 ?¥?¥?¥]<br/>[ 2 ?¥?¥?¥]<br/>[ / ?¥?¥?¥]<br/>[0000 ?¥?¥?¥]<br/>[1234 ?¥?¥?¥]
427 *
428 * とã�?�†月情報を毎é?月曜日にヘッãƒ??に出力しますã?(上記ã?ã€?¼’月?‘日?ž2月?”日まで)
429 *
430 * @og.rev 3.6.0.0 (2004/09/17) 休日判断をã?事業æ‰?‚«レンãƒ?‚’使用
431 * @og.rev 3.6.0.7 (2004/11/06) 月ã?æƒ??もå?力しますã?
432 * @og.rev 3.7.1.1 (2005/05/23) 本日はã€?�’色で示しますã?
433 * @og.rev 5.5.4.0 (2012/07/02) カレンãƒ??フラグ対å¿?
434 * @og.rev 5.6.2.3 (2013/03/22) 日付ã?終äº?—¥は、ã?含ã‚??に変更
435 * @og.rev 5.6.5.0 (2013/06/07) 日付æ¬??段çµ?�¿をå»?¢しã?色バã?に変更しますã?
436 *
437 * @param add 表示日付けのåŠ?®?
438 *
439 * @return ヘッãƒ??æ–?—å?
440 */
441 private String makeZoom2( final int add ) {
442 Calendar str = HybsSystem.getCalendar( startDate );
443 Calendar end = HybsSystem.getCalendar( endDate );
444
445 StringBuilder buf1 = new StringBuilder( HybsSystem.BUFFER_SMALL ); // 月ã??‘桁目
446 // StringBuilder buf2 = new StringBuilder( HybsSystem.BUFFER_SMALL ); // 月ã??’桁目 5.6.5.0 (2013/06/07) 色バã?に変更
447 // StringBuilder buf3 = new StringBuilder( HybsSystem.BUFFER_SMALL ); // 区åˆ?‚Š記号 5.6.5.0 (2013/06/07) 色バã?に変更
448 StringBuilder buf4 = new StringBuilder( HybsSystem.BUFFER_SMALL ); // 日の?‘桁目
449 StringBuilder buf5 = new StringBuilder( HybsSystem.BUFFER_SMALL ); // 日の?’桁目
450 StringBuilder bufcal = new StringBuilder( HybsSystem.BUFFER_SMALL ); // 5.5.4.0 (2012/07/02) 休日判定用
451
452 // 5.6.5.0 (2013/06/07) æ–?—å?の作æ?方法ã?統ä¸??pre タグを最初に設定しておくã€?
453 buf1.append( "<pre>" );
454
455 // 3.6.0.0 (2004/09/17) カレンãƒ?B検索機è?を追åŠ?
456 CalendarData calData = CalendarFactory.getCalendarData( calDB,arg1,arg2,arg3,arg4 );
457
458 boolean modifyFlag = false;
459
460 // 5.6.2.3 (2013/03/22) 日付ã?終äº?—¥は、ã?含ã‚??に変更
461 // while( str.before( end ) ) {
462 int cnt = 0; // 5.6.5.0 (2013/06/07) 色バã?対å¿?
463 int hCnt = 0; // 月æ¬??ã€?¼“文字å?
464 buf1.append( EVEN_CLASS ); // 5.6.5.0 (2013/06/07) 色バã?対å¿?
465 while( str.compareTo( end ) <= 0 ) {
466 int mt = str.get( Calendar.MONTH ) + 1;
467 int dt = str.get( Calendar.DATE );
468 boolean monday = ( Calendar.MONDAY == str.get( Calendar.DAY_OF_WEEK ) );
469
470 // 3.7.1.1 (2005/05/31) 本日はã€?�’色で示しますã?
471 if( calData.isContainedToday( str,add ) ) {
472 // buf1.append( BLUE_COLOR );
473 // buf2.append( BLUE_COLOR );
474 // buf3.append( BLUE_COLOR );
475 buf4.append( BLUE_COLOR );
476 buf5.append( BLUE_COLOR );
477 bufcal.append("0"); // 5.5.4.0 (2012/07/02)
478 modifyFlag = true;
479 }
480
481 // 3.6.0.0 (2004/09/17) 休日判断をã?事業æ‰?‚«レンãƒ?‚’使用
482 // modifyFlag が立ってã�?�ªã�??å�?を条件に追åŠ?�—ますã?
483 if( !modifyFlag && add == 1 && calData.isHoliday( str ) ) {
484 // buf1.append( RED_COLOR );
485 // buf2.append( RED_COLOR );
486 // buf3.append( RED_COLOR );
487 buf4.append( RED_COLOR );
488 buf5.append( RED_COLOR );
489 bufcal.append("1"); // 5.5.4.0 (2012/07/02)
490 modifyFlag = true;
491 }
492
493 if( monday ) {
494 // 5.6.5.0 (2013/06/07) 色バã?対å¿?
495 buf1.append( END_SPAN );
496 cnt++;
497 hCnt = 0;
498
499 if( cnt % 2 == 0 ) { buf1.append( EVEN_CLASS ); } // 偶数の色
500 else { buf1.append( ODD_CLASS ); } // å¥?•°の色
501
502 // buf1.append( (mt/10) );
503 // buf2.append( mt%10 );
504 // buf3.append( "/" );
505 }
506 // else {
507 // buf1.append( " " );
508 // buf2.append( " " );
509 // buf3.append( " " );
510 // }
511
512 // 5.6.5.0 (2013/06/07) 色バã?対å¿?
513 switch( hCnt++ ) {
514 case 0 : buf1.append( (mt/10) ); break; // 月ã?1æ–?—目
515 case 1 : buf1.append( mt%10 ); break; // 月ã?2æ–?—目
516 case 2 : buf1.append( "/" ); break; // 月ã?区åˆ?‚Šæ–??
517 default : buf1.append( " " ); break; // 空æ¬?
518 }
519
520 buf4.append( (dt/10) );
521 buf5.append( dt%10 );
522
523 if( modifyFlag ) {
524 // buf1.append( END_SPAN );
525 // buf2.append( END_SPAN );
526 // buf3.append( END_SPAN );
527 buf4.append( END_SPAN );
528 buf5.append( END_SPAN );
529 modifyFlag = false;
530 }
531 else{
532 bufcal.append("0"); // 5.5.4.0 (2012/07/02)
533 }
534 str.add(Calendar.DATE, add);
535 }
536
537 // buf1.append( BR ).append( buf2 );
538 // buf1.append( BR ).append( buf3 );
539 buf1.append( END_SPAN ); // 5.6.5.0 (2013/06/07) 色バã?対å¿?
540 // buf1.append( BR ).append( buf4 );
541 // buf1.append( BR ).append( buf5 );
542 calStr = bufcal.toString(); // 5.5.4.0 (2012/07/02)
543
544 // return "<pre>" + buf1.toString() + "</pre>";
545 return buf1.append( BR ).append( buf4 ).append( BR ).append( buf5 ).append( "</pre>" ).toString(); // 5.6.5.0 (2013/06/07) æ–?—å?の作æ?方法ã?統ä¸?
546 }
547
548 /**
549 * ヘッãƒ??、上段・下段のフォーマットと、加算日に応じたã?ãƒ?ƒ€ーæ–?—å?を作æ?しますã?
550 * これは特殊で、ã?ãƒ?ƒ€ーに、年/月ã?上段は日、下段は、曜日を想定してã�?�¾すã?
551 * ヘッãƒ??部åˆ??、月として横持で表示させますã?
552 *
553 * @og.rev 5.6.2.3 (2013/03/22) 新規追åŠ?
554 *
555 * @param header 年月ã?ヘッãƒ??部åˆ?
556 * @param upper 上段の表示フォーマッãƒ?日)
557 * @param lower 下段の表示フォーマッãƒ?曜日)
558 * @param add 表示日付けのåŠ?®?
559 *
560 * @return ヘッãƒ??æ–?—å?
561 */
562 private String makeZoom3( final String header ,final String upper ,final String lower ,final int add ) {
563 DateFormat formatH = new SimpleDateFormat( header,Locale.JAPAN );
564 DateFormat format1 = new SimpleDateFormat( upper,Locale.JAPAN );
565 DateFormat format2 = new SimpleDateFormat( lower,Locale.JAPAN );
566
567 StringBuilder bufH = new StringBuilder( HybsSystem.BUFFER_SMALL ); // 年月ã?ヘッãƒ??部åˆ?11Byte目から)
568 StringBuilder buf1 = new StringBuilder( HybsSystem.BUFFER_SMALL ); // 日(?’æ¡?
569 StringBuilder buf2 = new StringBuilder( HybsSystem.BUFFER_SMALL ); // 曜日
570 StringBuilder bufcal = new StringBuilder( HybsSystem.BUFFER_SMALL ); // 5.5.4.0 (2012/07/02) 休日判定用
571
572 // 5.6.5.0 (2013/06/07) æ–?—å?の作æ?方法ã?統ä¸??pre タグを最初に設定しておくã€?
573 bufH.append( "<pre>" );
574
575 Calendar str = HybsSystem.getCalendar( startDate );
576 Calendar end = HybsSystem.getCalendar( endDate );
577
578 // 3.6.0.0 (2004/09/17) カレンãƒ?B検索機è?を追åŠ?
579 CalendarData calData = CalendarFactory.getCalendarData( calDB,arg1,arg2,arg3,arg4 );
580
581 int dtsu = lower.length(); // 日付æ¬?下段)のæ–?—数
582 int dayCount = 0; // ヘッãƒ??部のæ–?—が入るかどã�?�‹の基æº?
583 int mtCnt = str.get( Calendar.MONTH ) + 1; // 月をチェãƒ?‚¯(色設定用) 初期値はã€?–‹始時のæœ?
584 String tmpH = null; // ヘッãƒ??部のãƒ?ƒ³ポラリæƒ??
585 // 5.6.2.3 (2013/03/22) 日付ã?終äº?—¥は、ã?含ã‚??に変更
586 // while( str.before( end ) ) {
587 while( str.compareTo( end ) <= 0 ) {
588 Date dt = str.getTime();
589
590 if( tmpH == null ) { tmpH = formatH.format( dt ); } // 初期値。最初にセãƒ?ƒˆ
591
592 // ここからä¸??の処ç�??、月表示ヘッãƒ??の作æ?
593 int day = str.get( Calendar.DATE ); // ヘッãƒ??部の制御用に、日付がå¿?¦?
594 if( day == 1 && dayCount > 0 ) {
595 makeHeaderYM( bufH , dayCount*dtsu , mtCnt++ , tmpH ); // こã?ヘッãƒ??出力ã?、ã?と月前のæƒ??
596 dayCount = 0 ;
597 tmpH = formatH.format( dt );
598 }
599 dayCount ++ ; //
600
601 // 5.6.2.3 (2013/03/22) 休日、本日の処ç�?‚’ class属æ?化で、合成可能としますã?
602 String span = null;
603 // 3.6.0.0 (2004/09/17) 休日判断をã?事業æ‰?‚«レンãƒ?‚’使用
604 if( calData.isHoliday( str ) ) {
605 span = HOLIDAY_CLASS ;
606 bufcal.append( "1" ); // 5.5.4.0 (2012/07/02) 休日
607 }
608 else {
609 bufcal.append( "0" ); // 5.5.4.0 (2012/07/02)
610 }
611
612 if( calData.isContainedToday( str,add ) ) { // 本日かどã�?�‹
613 span = (span == null) ? TODAY_CLASS : span + " " + TODAY_CLASS ;
614 }
615
616 if( span != null ) {
617 buf1.append( "<span class=\"" ).append( span ).append( "\">" );
618 buf2.append( "<span class=\"" ).append( span ).append( "\">" );
619 }
620
621 buf1.append( format1.format( dt ) );
622 buf2.append( format2.format( dt ) );
623
624 if( span != null ) {
625 buf1.append( END_SPAN );
626 buf2.append( END_SPAN );
627 }
628 str.add(Calendar.DATE, add);
629 }
630
631 // 処ç�??æœ?¾Œに、ã?ãƒ?ƒ€ーの出力ã?å¿?¦?
632 makeHeaderYM( bufH , dayCount*dtsu , mtCnt , tmpH );
633
634 calStr = bufcal.toString(); // 5.5.4.0 (2012/07/02)
635
636 // return "<pre>" + bufH.toString() + BR + buf1.toString() + BR + buf2.toString() + "</pre>";
637 return bufH.append( BR ).append( buf1 ).append( BR ).append( buf2 ).append( "</pre>" ).toString(); // 5.6.5.0 (2013/06/07) æ–?—å?の作æ?方法ã?統ä¸?
638 }
639
640 /**
641 * 時間軸での月ã?ãƒ?ƒ€ーãƒ??タを作æ?しますã?
642 *
643 * 月ã?ãƒ?ƒ€ーはã€?日?ž月末までの日付ã?上段に、年æœ?yyyy/MM)表示のヘッãƒ??を作æ?しますã?
644 * ヘッãƒ??は、できるã�?�‘センター表示になるよã�?�«、前後にスペã?スをå?れて調整しますã?
645 * ヘッãƒ??表示領域が少なã�??合ã?スペã?スのみになりますã?
646 * ヘッãƒ??は月が偶数月かå¥?•°月かで、背景色をå?り替えることで、判りやすくしますã?
647 *
648 * @og.rev 5.6.2.3 (2013/03/22) 新規追åŠ?
649 *
650 * @param bufH ヘッãƒ??を追記してã�?�� StringBuilder
651 * @param dayCnt 日付æ¬??æ–?—数カウントã?日数?Š桁数(DTSU)。é?常、横持なã‚?2æ¡?となるã?
652 * @param mtCnt 月数に基づã�?�Ÿ色の設定用の数字ã?月ã?連番にしますã?
653 * @param ymStr ヘッãƒ??に表示するæ–?—å?。年æœ?yyyy/MM)
654 *
655 * @return ヘッãƒ??が追記された StringBuilder
656 */
657 private StringBuilder makeHeaderYM( final StringBuilder bufH , final int dayCnt , final int mtCnt , final String ymStr ) {
658 // å¥?•°月と偶数月で色を変えるã?å°?�¥çš?�« % 3 で判定すれã?ã€?¼“色で廻せるã€?
659 if( mtCnt % 2 == 0 ) { bufH.append( EVEN_CLASS ); } // 偶数月ã?色
660 else { bufH.append( ODD_CLASS ); } // å¥?•°月ã?色
661
662 // 表示すべき文字å?がã?日付æ¬??å¹?‚ˆりも小さã�??合ã?スペã?スのみとするã€?
663 if( dayCnt < ymStr.length() ) {
664 bufH.append( SPACE.substring( 0,dayCnt ) );
665 }
666 // 大きい場合ã?、前後にスペã?スをå?れて、センター配置
667 else {
668 int lcnt = (dayCnt-ymStr.length())/2 ; // 左の個数。端数がå?り捨てられるã?
669 int rcnt = dayCnt-lcnt-ymStr.length(); // 右の個数。端数をè?慮しã?引き算ã?みで求めるã?
670
671 bufH.append( SPACE.substring( 0,lcnt ) );
672 bufH.append( ymStr );
673 bufH.append( SPACE.substring( 0,rcnt ) );
674 }
675
676 bufH.append( END_SPAN );
677
678 return bufH;
679 }
680
681 /**
682 * 時間軸でのヘッãƒ??表示を行いますã?
683 *
684 * 時間軸の為、ã?ãƒ?ƒ€ーの上下段çµ??行いませんã€?
685 * ヘッãƒ??はã€?¼‘時間単位に表示しますã?またã?休æ?時刻も求めてã�?�¾すã?
686 *
687 * @og.rev 3.8.0.5 (2005/08/26) 新規追åŠ?
688 * @og.rev 3.8.1.1 (2005/11/21) 日ä»?itle,ç¯?›²class,
689 * @og.rev 3.8.1.4 (2006/03/13) 日付表示、時刻単ä½?h)削除ã€?¼’段çµ?USE_MULTI_CLM)
690 * @og.rev 3.8.1.6 (2006/04/25) 日ã‚?™‚間ã?単位表示を止めã??’文字å?(24ピクセル)化するã?
691 * @og.rev 3.8.9.2 (2007/07/28) 時間間隔パラメータ追åŠ?
692 * @og.rev 4.0.0.0 (2007/09/03) 休日の場合でも表示されるよã�?�«対å¿?シスãƒ?ƒ リソースでåˆ?‚Š替ã�?
693 * @og.rev 5.5.4.0 (2012/07/02) ガントã?ä¸?—¥表示æž??計算をåˆ?‚Š上げするようにする。カレンãƒ??フラグ対応ã?
694 * @og.rev 5.6.1.2 (2013/02/22) ベã?ス時刻を管ç�?? ym2int å»?¢ â‡?hm2int に変更ã€?USE_MULTI_CLM â‡?useMultiClm 変更ã€?
695 * @og.rev 5.6.4.3 (2013/05/24) ヘッãƒ??ずれ対応ã?"日" を2文字ã?ã€?日 " に修正ã€?
696 * @og.rev 5.6.5.0 (2013/06/07) 色バã?に変更しますã?
697 * @og.rev 5.6.7.0 (2013/11/03) 時間軸の上段ヘッãƒ??に月日を表示
698 *
699 * @param hourOfPixcel ?‘時間あたりのピクセル数ã€?
700 * @param step 時間間隔のæŒ?®?1:?‘時間間隔ã?2:?’時間間隔・?¥?¥?¥)
701 * @param useTani 日ã‚?™‚間ã?単位表示を行う(true)かã?行わなã�?false)ã�?
702 *
703 * @return ヘッãƒ??æ–?—å?
704 */
705 // private String makeZoomTime( final int hourOfPixcel,final boolean useTani ) {
706 private String makeZoomTime( final int hourOfPixcel,final int step,final boolean useTani ) {
707 // DateFormat format1 = new SimpleDateFormat( "yyyy/MM/dd",Locale.JAPAN );
708 DateFormat format1 = new SimpleDateFormat( "yyyy/MM/dd(EE)",Locale.JAPAN ); // 5.6.5.0 (2013/06/07) 曜日をã?tipsに出すã?
709 DateFormat format2 = new SimpleDateFormat( "MM/dd",Locale.JAPAN ); // 5.7.0.0 (2013/11/03) 上段
710
711 StringBuilder bufBT = new StringBuilder( HybsSystem.BUFFER_SMALL ); // 5.6.5.0 (2013/06/07) 休æ?の管ç�?buf2 â‡?bufBT 名称変更)
712 StringBuilder buf1 = new StringBuilder( HybsSystem.BUFFER_SMALL ); // 下段の時刻ãƒ??タ
713 // StringBuilder buf2 = new StringBuilder( HybsSystem.BUFFER_SMALL ); // 休æ?の管ç�?
714 StringBuilder bufH = new StringBuilder( HybsSystem.BUFFER_SMALL ); // 3.8.1.4 (2006/03/13) 段çµ?�¿ヘッãƒ??
715 StringBuilder bufcal = new StringBuilder( HybsSystem.BUFFER_SMALL ); // 5.5.4.0 (2012/07/02) 休日判定用
716 StringBuilder bufDY = new StringBuilder( HybsSystem.BUFFER_SMALL ); // 5.7.0.0 (2013/11/03) 上段用
717
718 String last_title = null; // 5.7.0.0 (2013/11/03)
719 int day_length = 0; // 5.7.0.0 (2013/11/03)
720 int base = 2; // 5.7.0.0 (2013/11/03) 時間単位ã?標準桁数
721 if( useTani ){ base = 4;}
722
723 // daySpan = "0700-2000"; // 開始時刻(HHmm-HHmm) 3.8.0.5 (2005/08/26)
724 // åˆ??少数計算を行いますã?åŠ?®—ã??‘時é–?0100)単位ですã?
725 // int startTime = ym2int( daySpan.substring( 0,2 ),daySpan.substring( 2,4 ) ) ;
726 // int endTime = ym2int( daySpan.substring( 5,7 ),daySpan.substring( 7 ) ) ;
727 // 5.6.1.2 (2013/02/22)
728 int ad = daySpan.indexOf( '-' );
729 int startTime = hm2int( daySpan.substring( 0,ad ) ) ;
730 int endTime = hm2int( daySpan.substring( ad+1 ) ) ;
731
732 // 開始時刻より終äº?™‚刻が同じか小さã�??合ã?、翌日なので2400åŠ?®—しますã?
733 if( endTime <= startTime ) { endTime += 2400; }
734
735 // 休æ?時間を管ç�?�™ã‚?BreakTimes オブジェクトを作æ?しますã?
736 // BreakTimes breakTimeObj = new BreakTimes( hourOfPixcel,breakTimes,breakTimeStyle,startTime,endTime );
737 BreakTimes breakTimeObj = new BreakTimes( hourOfPixcel/step,breakTimes,breakTimeStyle,startTime,endTime );
738
739 // 5.6.1.2 (2013/02/22) ベã?ス時刻を管ç�?�™ã‚?BreakTimes オブジェクトを作æ?しますã?(利用するクラスは同じ)
740 BreakTimes baseTimeObj = new BreakTimes( hourOfPixcel/step,baseTimes,baseTimeStyle,startTime,endTime );
741
742 // 現在時刻を求めておきますã? 現在時刻に?•å?åŠ?®—しておきますã?(余計なお世話?)
743 Calendar rightNow = Calendar.getInstance();
744 rightNow.add( Calendar.MINUTE,5 ); // ?•å? åŠ?®?
745 int now = rightNow.get( Calendar.HOUR_OF_DAY ) ;
746
747 // 3.8.5.0 (2006/02/06)
748 boolean isDebug = isDebug();
749 if( isDebug ) {
750 System.out.println( "startDate=" + startDate );
751 System.out.println( "endDate =" + endDate );
752 }
753
754 Calendar str = HybsSystem.getCalendar( startDate );
755 Calendar end = HybsSystem.getCalendar( endDate );
756
757 // 3.6.0.0 (2004/09/17) カレンãƒ?B検索機è?を追åŠ?
758 CalendarData calData = CalendarFactory.getCalendarData( calDB,arg1,arg2,arg3,arg4 );
759
760 // ?‘時é–?hourOfPixcel(px) なのでã€?¼‘日åˆ??ピクセルを求めておくã€?休æ?時刻表示用)
761 // int dayOfPixel = (int)(hourOfPixcel * (endTime-startTime)/100.0 );
762 // int dayOfPixel = (int)(hourOfPixcel/step * (endTime-startTime)/100.0 );
763 int dayOfPixel = (int)(hourOfPixcel * Math.ceil((endTime-startTime)/100.0/step) ); // 5.5.4.0 (2012/07/02) åˆ?‚Š上げ
764
765 // 休æ?表示における画面上ã?表示日数。これが、左のバイアス値として?‘日åˆ?�¨乗算されるã€?
766 int totalDay = 0;
767
768 // ?‘日åˆ??表示ç¯?›²の開始時刻とãƒ??タの表示開始時刻との差(オフセãƒ?ƒˆ)ピクセル
769 // int offsetPixel = (int)(hourOfPixcel * (startTime - (int)(str.get( Calendar.HOUR_OF_DAY )*100 + str.get( Calendar.MINUTE )*10.0/6.0))/100.0 );
770 int offsetPixel = (int)(hourOfPixcel/step * (startTime - (int)(str.get( Calendar.HOUR_OF_DAY )*100 + str.get( Calendar.MINUTE )*10.0/6.0))/100.0 );
771
772 // 3.8.1.4 (2006/03/13) 時間単ä½?h)の表示有無ã‚?USE_MULTI_CLM と関係させますã?
773 // 3.8.1.6 (2006/04/25) 日ã‚?™‚間ã?単位表示を止めã??’文字å?(24ピクセル)化するã?
774 final String tani ;
775 // if( useTani ) { tani = ( USE_MULTI_CLM ) ? " " : "h " ; }
776 // if( useTani ) { tani = ( useMultiClm ) ? " " : "h " ; } // 5.6.1.2 (2013/02/22) useMultiClm 追åŠ?
777 if( useTani ) { tani = "h " ; } // 5.6.5.0 (2013/06/07) useMultiClm を無視しますã?
778 else { tani = ""; }
779
780 boolean modifyFlag = false;
781 int cnt = 0; // 3.8.1.1 (2005/11/21)
782 while( str.before( end ) ) { // 終äº?™‚間ã?、ã?含まなã�??仕æ§?
783 if( isDebug ) { System.out.println( "Calendar str =" + str.getTime() ); } // 3.8.5.0 (2006/02/06)
784
785 // 5.6.5.0 (2013/06/07) 日付と曜日の対å¿?
786 int day = str.get( Calendar.DATE );
787 String dayStr = ((day >= 10) ? day : ("0" + day) ) + ((useTani) ? DAY_OF_WEEK_ja[str.get( Calendar.DAY_OF_WEEK )] : "") ;
788
789 // 5.5.4.0 (2012/07/02) こã?場合ã?æž?�˜位ではなくã?日単位で出力すã‚?
790 // skipHolidayは無視して、ç¯?›²å†??全てのカレンãƒ??をå?åŠ?
791 if(calData.isHoliday( str )){
792 bufcal.append("1");
793 }
794 else{
795 bufcal.append("0");
796 }
797
798 // 休日判断をã?事業æ‰?‚«レンãƒ?‚’使用:休日ならã?日付を進めるã€?
799 if( calData.isHoliday( str ) && skipHoliday ) {
800 if( isDebug ) { System.out.println( "Holiday =" + str.getTime() ); } // 3.8.5.0 (2006/02/06)
801 str.add(Calendar.DATE, 1);
802 continue;
803 }
804
805 // 3.8.1.1 (2005/11/21) 日付ã?ãƒ??ルチップ表示
806 String ganttClass = "class=\"GNT_" + (cnt % 2) + "\"" ;
807
808 Date dt = str.getTime();
809 String title = format1.format( dt );
810 buf1.append( "<span " ).append( ganttClass );
811 buf1.append( " title=\"" ).append( title ).append( "\">" );
812
813 // 5.7.0.0 (2013/11/03) 上段
814 if( last_title != null & day_length > 0 ){
815 makeHeaderMD(bufDY , day_length*base , 0 , last_title);
816 day_length = 0;
817 }
818 last_title = format2.format( dt );
819
820 if( isDebug ) { System.out.println( "title =" + title ); } // 3.8.5.0 (2006/02/06)
821
822 // 5.6.5.0 (2013/06/07) 色バã?対å¿?
823 if( useMultiClm ) {
824 if( cnt % 2 == 0 ) { bufH.append( EVEN_CLASS ); } // 偶数の色
825 else { bufH.append( ODD_CLASS ); } // å¥?•°の色
826 }
827 cnt++; // 5.6.5.0 (2013/06/07) 他ã?処ç�??、cnt++ をå?にしてã�?‚‹がã?ここでは初期設定指定なã�?‚º、cnt++ をã?処ç�??後で行うã€?
828
829 // 本日かどã�?�‹を判断するã€?
830 boolean isToday = calData.isContainedToday( str,1 );
831
832 int tmHd = startTime/100 ;
833 int dayOut = tmHd; // 3.8.1.4 (2006/03/13)
834 boolean isTodayNow = false; // 3.8.9.2 (2007/07/28) 時間スãƒ?ƒƒプ対å¿?
835
836 for( int h=startTime; h<endTime; h+=100 ) { // åŠ?®—ã??‘時間単ä½?
837 if( isDebug ) { // 3.8.5.0 (2006/02/06)
838 System.out.println( "hour =" + h );
839 System.out.println( "tmHd =" + tmHd );
840 }
841 // 3.8.9.2 (2007/07/28) 時間スãƒ?ƒƒプ対å¿?
842 isTodayNow = isTodayNow || ( isToday && tmHd == now );
843 if( ( dayOut - tmHd ) % step != 0 ) { tmHd++; continue; }
844
845 day_length++; // 5.7.0.0 (2013/11/03)
846
847 if( tmHd >= 24 ) {
848 tmHd = 0;
849 // 3.8.1.1 (2005/11/21) 日付ã?ãƒ??ルチップを次の日に設定しますã?
850 Date dt2 = new Date( str.getTimeInMillis() + 24*3600*1000L );
851 title = format1.format( dt2 );
852 buf1.append( "</span><span " ).append( ganttClass );
853 buf1.append( " title=\"" ).append( title ).append( "\">" );
854 }
855
856 // 本日の現在時刻はã€?�’色で示しますã?
857 // if( isToday && tmHd == now ) {
858 if( isTodayNow ) {
859 buf1.append( BLUE_COLOR );
860 bufH.append( BLUE_COLOR );
861 modifyFlag = true;
862 isTodayNow = false; // 初期åŒ?
863 }
864 // 4.0.0.0 休日の場合ã?赤色で表示
865 else if( calData.isHoliday( str ) && !skipHoliday ) {
866 buf1.append( RED_COLOR );
867 bufH.append( RED_COLOR );
868 modifyFlag = true;
869 }
870
871 // 実質表示日数(totalDay) * ?‘日åˆ??ピクセル(dayOfPixel) - オフセãƒ?ƒˆ(offsetPixel)
872 // String bt = breakTimeObj.makeSpan( totalDay*dayOfPixel-offsetPixel,str,h );
873 String bt = breakTimeObj.makeSpan( totalDay*dayOfPixel-offsetPixel,str,h,step );
874 // if( bt != null ) { buf2.append( bt ); }
875 if( bt != null ) { bufBT.append( bt ); } // 5.6.5.0 (2013/06/07) 休æ?の管ç�?buf2 â‡?bufBT 名称変更)
876
877 // 5.6.1.2 (2013/02/22) ベã?ス時刻のタグをå?力しますã?
878 bt = baseTimeObj.makeSpan( totalDay*dayOfPixel-offsetPixel,str,h,step );
879 // if( bt != null ) { buf2.append( bt ); }
880 if( bt != null ) { bufBT.append( bt ); } // 5.6.5.0 (2013/06/07) 休æ?の管ç�?buf2 â‡?bufBT 名称変更)
881
882 // 時間当たりã?æ–?—数はã€?¼”文字ï¼?æ–?—å?を詰めるã€?
883 if( tmHd < 10 ) { buf1.append( '0' ); } // 桁数あわã�?
884 buf1.append( tmHd ).append( tani ); // 3.8.1.4 (2006/03/13)
885
886 // 3.8.1.4 (2006/03/13) 日付表示、時刻単ä½?h)削除ã€?¼’段çµ?USE_MULTI_CLM)
887 // 3.8.1.6 (2006/04/25) 日ã‚?™‚間ã?単位表示を止めã??’文字å?(24ピクセル)化するã?
888 // if( USE_MULTI_CLM ) {
889 if( useMultiClm ) { // 5.6.1.2 (2013/02/22) useMultiClm 追åŠ?
890 // if( ( dayOut - tmHd ) % 6 == 0 ) {
891 if( ( dayOut - tmHd ) == 0 ) { // 5.6.5.0 (2013/06/07) 色バã?対å¿?
892 // if( useTani ) { bufH.append( title.substring( 8 ) ).append( "日" ); }
893 // if( useTani ) { bufH.append( title.substring( 8 ) ).append( "日 " ); } // 5.6.4.3 (2013/05/24) ヘッãƒ??ずれ対応ã?"日" を2文字ã?ã€?日 " に修正ã€?
894 // else { bufH.append( title.substring( 8 ) ); }
895 bufH.append( dayStr ); // 5.6.5.0 (2013/06/07) 先に日付+曜日のæ–?—å?を作æ?するã€?日" を2文字ã?ã€?日 " に修正済みã€?
896 }
897 else {
898 if( useTani ) { bufH.append( " " ); }
899 else { bufH.append( " " ); }
900 }
901 }
902
903 if( modifyFlag ) {
904 buf1.append( END_SPAN );
905 bufH.append( END_SPAN );
906 modifyFlag = false;
907 }
908 tmHd++; // ヘッãƒ??に記述する時刻
909 }
910 str.add(Calendar.DATE, 1);
911 totalDay++ ;
912 buf1.append( END_SPAN );
913 if( useMultiClm ) { bufH.append( END_SPAN ); } // 5.6.5.0 (2013/06/07) 色バã?対å¿?
914 }
915
916 // 3.8.1.4 (2006/03/13) 日付表示、時刻単ä½?h)削除ã€?¼’段çµ?USE_MULTI_CLM)
917 // buf2.append( "<pre>" );
918 // buf1.append( "</pre>" );
919
920 // if( USE_MULTI_CLM ) {
921 // if( useMultiClm ) { // 5.6.1.2 (2013/02/22) useMultiClm 追åŠ?
922 // buf2.append( bufH.toString() ).append( "<br />" );
923 // }
924 if( useMultiClm ) { // 5.6.1.2 (2013/02/22) useMultiClm 追åŠ?
925 bufH.append( BR );
926 }
927 calStr = bufcal.toString(); // 5.5.4.0 (2012/07/02)
928
929 // 5.7.0.0 (2013/11/03) æœ?¾Œã?上段
930 if( last_title != null & day_length > 0 ){
931 makeHeaderMD(bufDY , day_length*base , 0 , last_title);
932 day_length = 0;
933 }
934
935 // return buf2.append( buf1.toString() ).toString() ;
936 if( useMdheader ){ // 5.7.0.0 (2013/11/03) 月日を上段に表示する
937 bufH = bufDY.append( BR ).append(bufH);
938 }
939 return bufBT.append( "<pre>" ).append( bufH ).append( buf1 ).append( "</pre>" ).toString() ;
940 }
941
942 /**
943 * 時間軸での日ヘッãƒ??ãƒ??タを作æ?しますã?
944 *
945 * ヘッãƒ??は、時間表示の場合に上段にMM/ddを表示しますã?
946 *
947 * @og.rev 5.7.0.0 (2013/11/07) 新規追åŠ?
948 *
949 * @param bufH ヘッãƒ??を追記してã�?�� StringBuilder
950 * @param fillCnt 日付æ¬??æ–?—数カウントã?通常は2*時間数かã?4*時間数のどちらかã€?
951 * @param mtCnt 月数に基づã�?�Ÿ色の設定用の数字ã?(å°?�¥çš?�ª拡張用??
952 * @param mdStr ヘッãƒ??に表示するæ–?—å?。月日(MM/dd)
953 *
954 * @return ヘッãƒ??が追記された StringBuilder
955 */
956 private StringBuilder makeHeaderMD( final StringBuilder bufH , final int fillCnt , final int mtCnt , final String mdStr ) {
957 if( mtCnt % 2 == 0 ) { bufH.append( EVEN_CLASS ); } // 偶数色
958 else { bufH.append( ODD_CLASS ); } // å¥?•°色
959
960 // 表示すべき文字å?がã?表示すべきå¹?‚ˆりも小さã�??合ã?スペã?スのみとするã€?
961 if( fillCnt < mdStr.length() ) {
962 bufH.append( StringUtil.stringXFill(" ",fillCnt) );
963 }
964 // 大きい場合ã?、前後にスペã?スをå?れて、センター配置
965 else {
966 bufH.append( StringUtil.stringXFill(mdStr,fillCnt) );
967 }
968
969 bufH.append( END_SPAN );
970
971 return bufH;
972 }
973
974 /**
975 * 上段・下段のフォーマットと、加算日に応じたã?ãƒ?ƒ€ーæ–?—å?を作æ?しますã?
976 *
977 * @param upper 上段の表示フォーマッãƒ?
978 * @param lower 下段の表示フォーマッãƒ?
979 * @param add 表示日付けのåŠ?®?
980 * @param useMonth 月日表示でなくã?月表示のみにする
981 *
982 * @og.rev 5.6.1.2 (2013/02/22) 新規作æ?
983 * @og.rev 5.6.2.3 (2013/03/22) 日付ã?終äº?—¥は、ã?含ã‚??に変更
984 *
985 * @return ヘッãƒ??æ–?—å?
986 */
987 private String makeZoomStack( final String upper ,final String lower ,final int add, final boolean useMonth ) {
988 DateFormat format1 = new SimpleDateFormat( upper,Locale.JAPAN );
989 DateFormat format2 = new SimpleDateFormat( lower,Locale.JAPAN );
990
991 DateFormat formatCal = new SimpleDateFormat( "yyyyMMdd",Locale.JAPAN );
992
993 // 5.5.8.3 (2012/11/17) スタãƒ?‚¯用にカレンãƒ??æž??æƒ??を保持(開始ã?休日判定ã?次æž?–‹å§?
994 ArrayList<String[]> calList = new ArrayList<String[]>(); // 個人çš?�«は Listを渡す方が好ã�?
995 String[] calArray = new String[3]; // 開始ã?休日判定ã?次æž?–‹å§?
996
997 Calendar str = HybsSystem.getCalendar( startDate );
998 Calendar end = HybsSystem.getCalendar( endDate );
999
1000 // 週単位ã?場合ã?特殊å?ç�??
1001 // 年の第ä¸??を完å?なä¸??間å?(?—日é–?として、設定しますã?
1002 if( zoom == 41 ) { // ViewStackTableParam.STACK_ZOOM_WEEK
1003 str.setMinimalDaysInFirstWeek( 7 );
1004 format1.setCalendar( str );
1005 format2.setCalendar( str );
1006 }
1007
1008 if( useMonth ){
1009 str.set(Calendar.DAY_OF_MONTH, 1);
1010 startDate = new SimpleDateFormat( "yyyyMMdd",Locale.JAPAN ).format(str.getTime());
1011 }
1012
1013 StringBuilder buf1 = new StringBuilder( HybsSystem.BUFFER_SMALL );
1014 StringBuilder buf2 = new StringBuilder( HybsSystem.BUFFER_SMALL );
1015 StringBuilder bufcal = new StringBuilder( HybsSystem.BUFFER_SMALL );
1016
1017 // カレンãƒ?B検索機è?
1018 CalendarData calData = CalendarFactory.getCalendarData( calDB,arg1,arg2,arg3,arg4 );
1019
1020 boolean modifyFlag = false;
1021 // 5.6.2.3 (2013/03/22) 日付ã?終äº?—¥は、ã?含ã‚??に変更
1022 // while( str.before( end ) ) {
1023 while( str.compareTo( end ) <= 0 ) {
1024 Date dt = str.getTime();
1025 calArray[0] = formatCal.format( dt ); // 5.5.8.3 (2012/11/17)
1026
1027 // 本日はã€?�’色で示しますã?
1028 if( calData.isContainedToday( str,add ) ) {
1029 buf1.append( BLUE_COLOR );
1030 buf2.append( BLUE_COLOR );
1031 bufcal.append( "0" );
1032 calArray[1] = "0"; // 5.5.8.3 (2012/11/17)
1033 modifyFlag = true;
1034 }
1035
1036 // 休日判断をã?事業æ‰?‚«レンãƒ?‚’使用
1037 // modifyFlag が立ってã�?�ªã�??å�?を条件に追åŠ?�—ますã?
1038 if( !modifyFlag && add == 1 && calData.isHoliday( str ) && !useMonth) {
1039 buf1.append( RED_COLOR );
1040 buf2.append( RED_COLOR );
1041 bufcal.append( "1" ); // 休日
1042 calArray[1] = "1"; // 5.5.8.3 (2012/11/17)
1043 modifyFlag = true;
1044 }
1045
1046 buf1.append( format1.format( dt ) );
1047 buf2.append( format2.format( dt ) );
1048
1049 if( modifyFlag ) {
1050 buf1.append( END_SPAN );
1051 buf2.append( END_SPAN );
1052 modifyFlag = false;
1053 }
1054 else{
1055 bufcal.append( "0" );
1056 calArray[1] = "0"; // 5.5.8.3 (2012/11/17)
1057 }
1058
1059 // カレンãƒ??をé?める
1060 if( useMonth ){
1061 str.add(Calendar.MONTH, add);
1062 }
1063 else{
1064 str.add(Calendar.DATE, add);
1065 }
1066
1067 dt = str.getTime();
1068 calArray[2] = formatCal.format( dt ); // 5.5.8.3 (2012/11/17)
1069 calList.add( calArray.clone() );
1070 }
1071
1072 // スタãƒ?‚¯ガント用の特別な処ç�??
1073 // 上位ã? ViewForm_HTMLStackedGanttTable クラスに対して、ã?開始ã?休日判定ã?次æž?–‹始ã?リストを渡しますã?
1074 ViewFormTag viewform = (ViewFormTag)findAncestorWithClass( this,ViewFormTag.class );
1075 viewform.setViewArrayList( calList );
1076
1077 calStr = bufcal.toString();
1078
1079 return "<pre>" + buf1.toString() + BR + buf2.toString() + "</pre>";
1080 }
1081
1082 /**
1083 * ganttHeaderの属æ?æƒ??をdisplay:noneで作æ?しますã?
1084 * ganttHeaderとã�?�†タグで、id,class共にganttHeaderDataとã�?�†名称で出力しますã?
1085 *
1086 * @og.rev 5.5.4.0 (2012/07/02) 新規作æ?
1087 * @og.rev 5.6.1.2 (2013/02/22) baseTimes 追åŠ?
1088 *
1089 * @return ヘッãƒ??æƒ??のæ–?—å?
1090 */
1091 private String makeHeaderData() {
1092
1093 StringBuilder buf1 = new StringBuilder( HybsSystem.BUFFER_SMALL );
1094
1095 buf1.append( "\n" )
1096 .append( "<ganttHeader style='display:none' id='ganttHeaderData' class='ganttHeaderData' " )
1097 .append( "startDate='" ).append( startDate ).append( "' " )
1098 .append( "endDate='" ).append( endDate ).append( "' " )
1099 .append( "zoom='" ).append( zoom ).append( "' " )
1100 .append( "daySpan='" ).append( daySpan ).append( "' " )
1101 .append( "calDB='" ).append( calStr ).append( "' " )
1102 .append( "breakTimes='" ).append( breakTimes ).append( "' " )
1103 .append( "baseTimes='" ).append( baseTimes ).append( "' " ) // 5.6.1.2 (2013/02/22) baseTimes 追åŠ?
1104 .append( "skipHoliday='" ).append( skipHoliday ).append( "' " )
1105 .append( "useMultiClm='" ).append( useMultiClm ).append( "' " ) // 5.6.1.2 (2013/02/22) useMultiClm 追åŠ?
1106 .append( " />" );
1107
1108 return buf1.toString();
1109 }
1110
1111 /**
1112 * 【TAG】表示開始日付けを設定しまã�?yyyyMMdd またã?、yyyyMMddHHmm 形å¼?ã€?
1113 *
1114 * @og.tag
1115 * こã?値は、ã?ãƒ?ƒ€ーの先é?に表示する日付けを指定しますã?
1116 * 通常の日付ã?ãƒ?ƒ€ーの場合ã?ã€?yyyyMMdd 形式ですが、時間ã?ãƒ?ƒ€ーの場合ã?ã€?
1117 * yyyyMMddHHmm 形式でæŒ?®šしますã?
1118 *
1119 * @param val 表示開始日ä»?yyyyMMdd またã?、yyyyMMddHHmm 形å¼?
1120 */
1121 public void setStartDate( final String val ) {
1122 startDate = nval( getRequestParameter( val ),startDate );
1123 }
1124
1125 /**
1126 * 【TAG】表示æœ?µ‚日を設定しまã�?yyyyMMdd またã?、yyyyMMddHHmm 形å¼?ã€?
1127 *
1128 * @og.tag
1129 * 表示開始日から終äº?—¥までをã?zoom 変数の値に応じてヘッãƒ??ラベルã‚?
1130 * 作æ?しますã?
1131 * 通常の日付ã?ãƒ?ƒ€ーの場合ã?ã€?yyyyMMdd 形式ですが、時間ã?ãƒ?ƒ€ーの場合ã?ã€?
1132 * yyyyMMddHHmm 形式でæŒ?®šしますã?
1133 *
1134 * @param val 表示æœ?µ‚日(yyyyMMdd またã?、yyyyMMddHHmm 形å¼?
1135 */
1136 public void setEndDate( final String val ) {
1137 endDate = nval( getRequestParameter( val ),endDate );
1138 }
1139
1140 /**
1141 * 【TAG】1日の開始終äº?™‚間を24時間形å¼?HHmm-HHmm またã? HH-HH)で設定しまã�?初期値:0700-2000)ã€?
1142 *
1143 * @og.tag
1144 * こã?値はã€?¼‘日の開始終äº?™‚間をæŒ?®šしますã?
1145 * 開始時刻は、å?部で?‘時間単位に変換されますã??˜時?“0å??žã?ã€?¼˜時?žになりますã?
1146 * 終äº?™‚間ã?、その時間をã?含みませんã€?
1147 * 開始時刻より終äº?™‚刻が小さã�??合ã?、翌日への日またぎとして計算しますã?
1148 * たとえã?、夜勤等でã€?7:00-07:00 とã�?�†æŒ?®šが可能ですã?
1149 * 初期値は、朝の7:00から夜ã?20:00までですã?(0700-2000)ですã?
1150 *
1151 * @og.rev 3.8.0.5 (2005/08/26) 本日はã€?�’色で示しますã?
1152 * @og.rev 5.6.1.2 (2013/02/22) daySpan?ˆ時刻表示ç¯?›²?‰ã?、å?部では?‘時間単ä½?
1153 *
1154 * @param val 開始終äº?™‚é–?HHmm-HHmm)形å¼?
1155 */
1156 public void setDaySpan( final String val ) {
1157 daySpan = nval( getRequestParameter( val ),daySpan );
1158
1159 // 5.6.1.2 (2013/02/22) daySpan?ˆ時刻表示ç¯?›²?‰ã?、å?部では?‘時間単ä½?
1160 if( daySpan.length() == 5 && daySpan.charAt(2) == '-' ) {
1161 daySpan = daySpan.substring( 0,2 ) + "00-" + daySpan.substring( 3 ) + "00" ; // HH-HH �HH00-HH00
1162 }
1163 else if( daySpan.length() == 9 && daySpan.charAt(4) == '-' ) {
1164 daySpan = daySpan.substring( 0,2 ) + "00-" + daySpan.substring( 5 ) ; // HHmm-HHmm �HH00-HHmm
1165 }
1166 else {
1167 // if( daySpan.length() != 9 || daySpan.charAt(4) != '-' ) { // 5.6.1.2 (2013/02/22)
1168 // String errMsg = "?‘日の開始終äº?™‚間ã?24時間制で(HHmm-HHmm)形式でæŒ?®šしてくださいã€?
1169 String errMsg = "?‘日の開始終äº?™‚間ã?24時間制で(HHmm-HHmm またã? HH-HH)形式でæŒ?®šしてくださいã€?
1170 + " value=[" + val + "]"
1171 + " daySpan=[" + daySpan + "]" ; // 5.1.8.0 (2010/07/01) errMsg 修正
1172 throw new HybsSystemException( errMsg );
1173 }
1174 }
1175
1176 /**
1177 * 【TAG】ズーãƒ?¤‰数(0??,10,11,12,20??1,40??2)を設定しまã�?初期値:2)ã€?
1178 *
1179 * @og.tag
1180 * CSSファイルでの定義と、背景画像との関係で、作æ?しますã?
1181 * ズーãƒ?¤‰数は、CSSファイルã‚??JavaScript、PL/SQLと連動して、日付間éš?
1182 * あたりã?ピクセルを計算して、ã?ãƒ?ƒ€ーを作æ?してã�?�¾すã?
1183 * またã?現在の標準的なクライアントでの換算になる為ã€?«˜解像度のãƒ?‚£スプレイã‚?
1184 * 特殊設定された環å¢?�§は、表示間隔にずれが発生する可能性がありますã?
1185 *
1186 * ZOOM ラベル 日数ピクセル変換çŽ? ヘッãƒ?¸? ヘッãƒ?¸? 1æ–??CSS)
1187 * ========================================================================================
1188 * 0 : ?‘é?é–?日数 * 8 * 6 48 48px = 1日 [02/ ] [23(EE)] 8px
1189 * 1 : ?’é?é–?日数 * 8 * 3 24 24px = 1日 [02/] [23 ] 8px
1190 * 2 : ?‘ヶæœ?日数 * 12* 1 12 12px = 1日 [2] [3] 12px
1191 * 3 : ?’ヶæœ?日数 * 8 * 7 / 7 8 56px = 7日 [2004/ ] [02/03 ] 8px
1192 * 4 : ?“ヶæœ?日数 * 8 * 7 / 14 4 56px = 14日 [2004/ ] [02/03 ] 8px
1193 * 5 : ?”ヶæœ?日数 * 9 * 10 / 30 3 90px = 30日 [2004/ ] [02/03 ] 9px
1194 * 6 : ?–ヶæœ?日数 * 10 / 6 / 30 2 60px = 30日 [2004/ ] [02/03 ] 10px
1195 * 7 : ?‘年 日数 * 9 / 10 / 90 1 90px = 90日 [2004/ ] [02/03 ] 9px
1196 * 8 : ?’年 日数 * 9 / 10 /180 0.5 90px =180日 [2004/ ] [02/03 ] 9px
1197 * 9 : ?“年 日数 * 10 / 6 /180 0.33 60px =180日 [2004/ ] [02/03 ] 10px
1198 * 10 : 週単ä½?日数 * 8 / 3 / 7 3.43 24px = 7日 [19W] [12 ] 8px
1199 * 11 : 予ç´?¸ˆみ(他物10件使用済み)
1200 * 12 : 予ç´?¸ˆみ(他物 8件使用済み)
1201 * 13 : 日(週) 日数 * 8 * 2 16 16px = 1日 [23] [EE] 8px
1202 * ========================================================================================
1203 * 20 : 1時間 時間 * 12 * 4 48 48px = 1時間 [02EE] [07h ] 12px
1204 * 21 : 1時間2 時間 * 12 * 2 24 24px = 1時間 [02] [07] 12px
1205 * 22 : 2時間 時間 * 12 * 4 / 2 24 48px = 2時間 [02EE] [07h ] 12px
1206 * 23 : 2時間2 時間 * 12 * 2 / 2 12 24px = 2時間 [02] [07] 12px
1207 * 24 : 4時間 時間 * 12 * 4 / 4 12 48px = 4時間 [02EE] [07h ] 12px
1208 * 25 : 4時間2 時間 * 12 * 2 / 4 6 24px = 4時間 [02] [07] 12px
1209 * 26 : 6時間 時間 * 12 * 4 / 6 8 48px = 6時間 [02EE] [07h ] 12px
1210 * 27 : 6時間2 時間 * 12 * 2 / 6 4 24px = 6時間 [02] [07] 12px
1211 * 28 : 8時間 時間 * 12 * 4 / 8 6 48px = 8時間 [02EE] [07h ] 12px
1212 * 29 : 8時間2 時間 * 12 * 2 / 8 3 24px = 8時間 [02] [07] 12px
1213 * 30 : 12時間 時間 * 12 * 4 / 12 4 48px =12時間 [02EE] [07h ] 12px
1214 * 31 : 12時間2 時間 * 12 * 2 / 12 2 24px =12時間 [02] [07] 12px
1215 * ========================================================================================
1216 * 40 : 積ä¸?日) 48 48px = 1日 [02/ ] [23(EE)] 8px
1217 * 41 : 積ä¸?週) 3.43 48px = 7日 [19W] [12 ] 8px
1218 * 42 : 積ä¸?æœ? 月数 * 1 1 90px = 30日 [2004/ ] [02/03 ] 9px
1219 * 43 : 日単位ã?ãƒ?ƒ€ー予ç´?¸ˆみ
1220 * ??
1221 * 49 : 日単位ã?ãƒ?ƒ€ー予ç´?¸ˆみ
1222 *
1223 * @og.rev 5.7.6.2 (2014/05/16) stackHeaderタグの互換機è?として、DAYâ‡?0,WEEKâ‡?1,MONTHâ‡?2 対応するã?
1224 *
1225 * @param val ズーãƒ?¤‰数(0??,10,11,12,20??1,40??2)
1226 */
1227 public void setZoom( final String val ) {
1228 // zoom = nval( getRequestParameter( val ),zoom );
1229
1230 String zm = nval( getRequestParameter( val ),null );
1231
1232 // 6.0.0.1 (2014/04/25) zoom の、DAYâ‡?0,WEEKâ‡?1,MONTHâ‡?2 対å¿?
1233 if( ViewStackTableParam.STACK_ZOOM_DAY.equalsIgnoreCase( zm ) ) {
1234 zoom = 40;
1235 } else if( ViewStackTableParam.STACK_ZOOM_WEEK.equalsIgnoreCase( zm ) ) {
1236 zoom = 41;
1237 } else if( ViewStackTableParam.STACK_ZOOM_MONTH.equalsIgnoreCase( zm ) ) {
1238 zoom = 42;
1239 }
1240 else {
1241 zoom = nval( zm,zoom );
1242 }
1243
1244 if( zoom < 0 || (13 < zoom && zoom < 20) || (31 < zoom && zoom < 40) || 42 < zoom ) {
1245 String errMsg = "ズーãƒ?¤‰数はã€?0??,10,11,12,20??1,40??2)のç¯?›²でæŒ?®šしてくださいã€?
1246 + " zoom=[" + val + "]" ;
1247 throw new HybsSystemException( errMsg );
1248 }
1249 }
1250
1251 /**
1252 * 【TAG】DB検索する?¤?¢を指定しますã?
1253 *
1254 * @og.tag
1255 * カレンãƒ?ƒ‡ータは、シスãƒ?ƒ パラメータ の CalendarQuery_**** で
1256 * æŒ?®šするã?CalendarQuery クラスの QUERY æ–?�§、実際に取得しますã?
1257 * 上記ã? **** 部åˆ?�«、ここでæŒ?®šするキーワードを設定して置きますã?
1258 * 通常は、データベã?スID (GE13, ZY01 など)を指定しますã?
1259 * こã?キーワードに対する実è£?‚¯ラスをã?先ã?シスãƒ?ƒ パラメータ の
1260 * キーワード以下に記述しておきますã?
1261 * {@og.doc03Link calDB CalendarQuery_****}
1262 *
1263 * @og.rev 3.6.0.0 (2004/09/17) DB検索する?¤?¢のキー
1264 *
1265 * @param db DB検索する?¤?¢を指å®?
1266 */
1267 public void setCalDB( final String db ) {
1268 calDB = nval( getRequestParameter( db ),calDB );
1269 }
1270
1271 /**
1272 * 【TAG】時間軸での休æ?時間の開å§?終äº?™‚刻をカンマ区åˆ?‚Šでè¤?•°æŒ?®šしますã?
1273 *
1274 * @og.tag
1275 * 休æ?時間は、HHmm-HHmm形式ã?またã?、yyyyMMddHHmm-HHmm、またã?ã€?
1276 * yyyyMMddHHmm-yyyyMMddHHmm形式でè¤?•°æŒ?®šできますã?
1277 * これはã€?–‹å§?終äº?�¨ã�?�†ハイフン形式でつなげますã?
1278 * こã?セãƒ?ƒˆをã?カンマでè¤?•°æŒ?®šできますã?
1279 * 例えばã€?00508201200-1245,200508201300-1315 とã�?�†感じですã?
1280 * - の前後がã€?¼”桁ã?場合ã?、HHmm-HHmm 形式として、日付に関係なくã?常にこã?時å?
1281 * で休æ?がå?るとã�?�†認識をしますã?つまりã?開始ã?ã€?2桁かã€?桁ã?日付形式ã?
1282 * 終äº?‚‚ã€?2桁かã€?桁ã?日付形式になりますã?
1283 *
1284 * @og.rev 3.8.0.5 (2005/08/26) 新規追åŠ?
1285 * @og.rev 3.8.0.7 (2005/09/20) 日付またがり追åŠ?¿½åŠ?
1286 *
1287 * @param times 休æ?時間の開å§?終äº?™‚刻(CSV区åˆ?‚Š)
1288 */
1289 public void setBreakTimes( final String times ) {
1290 breakTimes = nval( getRequestParameter( times ),null );
1291 }
1292
1293 /**
1294 * 【TAG】時間軸での休æ?時間の表示スタイルを設定しますã?
1295 *
1296 * @og.tag
1297 * 通常は、ã?ãƒ?ƒ€ーのトップからã?位置と、色ですã?
1298 * それ以外にもã?スタイルシート属æ?(キー:値;) とã�?�†セãƒ?ƒˆを指定できますã?
1299 * class="breakTime" をå?力してã�?�¾すã?で、そちらを使用したã�??合ã?、breakTimeStyleを無効化してくださいã€?
1300 * そうしなã�?�¨、こちらã?、直接 style属æ?で設定してã�?‚‹ので、強ã�?�§すã?
1301 * 初期値は、top:20px;background-color:yellow;filter:alpha(opacity=60);opacity:0.60; ですã?
1302 * IE8以下ã?ために、filter:alpha(opacity=60); してã�?�¾すã?
1303 * 設定ã?後ろにã€? を付ける様にしてくださいã€?
1304 *
1305 * @og.rev 3.8.0.5 (2005/08/26) 新規追åŠ?
1306 *
1307 * @param style 休æ?時間の表示スタイル
1308 */
1309 public void setBreakTimeStyle( final String style ) {
1310 breakTimeStyle = nval( getRequestParameter( style ),breakTimeStyle );
1311 }
1312
1313 /**
1314 * 【TAG】時間軸でのベã?ス時刻の開始時刻をカンマ区åˆ?‚Šでè¤?•°æŒ?®šしますã?
1315 *
1316 * @og.tag
1317 * ベã?ス時刻は、HHmm形式ã?またã?、yyyyMMddHHmm形式でè¤?•°æŒ?®šできますã?
1318 * こã?セãƒ?ƒˆをã?カンマでè¤?•°æŒ?®šできますã?
1319 * 例えばã€?700,200508201300 とã�?�†感じですã?
1320 *
1321 * @og.rev 5.6.1.2 (2013/02/22) 新規追åŠ?
1322 *
1323 * @param times ベã?ス時刻の開始時刻(CSV区åˆ?‚Š)
1324 */
1325 public void setBaseTimes( final String times ) {
1326 baseTimes = nval( getRequestParameter( times ),null );
1327 }
1328
1329 /**
1330 * 【TAG】時間軸でのベã?ス時刻の表示スタイルを設定しますã?
1331 *
1332 * @og.tag
1333 * 通常は、ã?ース時刻のå¹?�¨、ã?ãƒ?ƒ€ーのトップからã?位置と、色ですã?
1334 * それ以外にもã?スタイルシート属æ?(キー:値;) とã�?�†セãƒ?ƒˆを指定できますã?
1335 * 初期値は、top:20px;background-color:transparent;border-left:2px dashed red; ですã?
1336 * 設定ã?後ろにã€? を付ける様にしてくださいã€?
1337 *
1338 * @og.rev 5.6.1.2 (2013/02/22) 新規追åŠ?
1339 *
1340 * @param style ベã?ス時刻の表示スタイル
1341 */
1342 public void setBaseTimeStyle( final String style ) {
1343 baseTimeStyle = nval( getRequestParameter( style ),baseTimeStyle );
1344 }
1345
1346 /**
1347 * 【TAG】D?¢検索する場合ã?第?‘ã?キーを指定しますã?
1348 *
1349 * @og.tag
1350 * 例えば、GE13, ZY01 では、事業æ‰?‚³ーãƒ?CDJGS)を設定しますã?
1351 * こã?値は、シスãƒ?ƒ パラメータ の CalendarQuery_**** で
1352 * æŒ?®šするã?CalendarQuery クラスの QUERY æ–?�«依存しますã?
1353 * ãƒ??タベã?ス定義の統ä¸?‚’望ã?ところですã?
1354 *
1355 * @og.rev 3.6.0.0 (2004/09/17) DB検索の第?‘キー(事業æ‰?‚³ードなど)を追åŠ?
1356 *
1357 * @param arg DB検索の第?‘キー(事業æ‰?‚³ードなど)
1358 */
1359 public void setArg1( final String arg ) {
1360 arg1 = nval( getRequestParameter( arg ),arg1 );
1361 }
1362
1363 /**
1364 * 【TAG】D?¢検索する場合ã?第?’ã?キーを指定しますã?
1365 *
1366 * @og.tag
1367 * 例えば、TP652 では、事業部コーãƒ?CDJGS) と 物件工程コーãƒ?CDKTEI)の?’つの
1368 * キーで、カレンãƒ?‚’取得しますã?(?‹年月で、行を決å®?
1369 * 引数がã??’つまで対応してã�?�¾ã�?
1370 * こã?値は、シスãƒ?ƒ パラメータ の CalendarQuery_**** で
1371 * æŒ?®šするã?CalendarQuery クラスの QUERY æ–?�«依存しますã?
1372 * ãƒ??タベã?ス定義の統ä¸?‚’望ã?ところですã?
1373 *
1374 * @og.rev 3.6.0.0 (2004/09/17) DB検索の第?’キー(?·?£コードなど)を追åŠ?
1375 *
1376 * @param arg DB検索の第?’キー(?·?£コードなど)
1377 */
1378 public void setArg2( final String arg ) {
1379 arg2 = nval( getRequestParameter( arg ),arg2 );
1380 }
1381
1382 /**
1383 * 【TAG】D?¢検索する場合ã?第?“ã?キーを指定しますã?
1384 *
1385 * @og.tag
1386 * こã?値は、シスãƒ?ƒ パラメータ の CalendarQuery_**** で
1387 * æŒ?®šするã?CalendarQuery クラスの QUERY æ–?�«依存しますã?
1388 * ãƒ??タベã?ス定義の統ä¸?‚’望ã?ところですã?
1389 *
1390 * @og.rev 3.6.0.0 (2004/09/17) DB検索の第?“キーを追åŠ?
1391 *
1392 * @param arg DB検索の第?“キー
1393 */
1394 public void setArg3( final String arg ) {
1395 arg3 = nval( getRequestParameter( arg ),arg3 );
1396 }
1397
1398 /**
1399 * 【TAG】D?¢検索する場合ã?第?”ã?キーを指定しますã?
1400 *
1401 * @og.tag
1402 * こã?値は、シスãƒ?ƒ パラメータ の CalendarQuery_**** で
1403 * æŒ?®šするã?CalendarQuery クラスの QUERY æ–?�«依存しますã?
1404 * ãƒ??タベã?ス定義の統ä¸?‚’望ã?ところですã?
1405 *
1406 * @og.rev 3.6.0.0 (2004/09/17) DB検索の第?”キーを追åŠ?
1407 *
1408 * @param arg DB検索の第?”キー
1409 */
1410 public void setArg4( final String arg ) {
1411 arg4 = nval( getRequestParameter( arg ),arg4 );
1412 }
1413
1414 /**
1415 * 【TAG】時間ガントで休日を表示する/しなã�?‚’設定しまã�?
1416 * (初期値:USE_GANTTHEADER_SKIP_HOLIDAY[={@og.value org.opengion.hayabusa.common.SystemData#USE_GANTTHEADER_SKIP_HOLIDAY}])ã€?
1417 *
1418 * @og.tag
1419 * こã?値をfalseにすると、時間ガントでも休日が赤色で表示
1420 * されるよã�?�«なりますã?trueにした場合ã?、休日は表示されませんã€?
1421 * (初期値:シスãƒ?ƒ 定数のUSE_GANTTHEADER_SKIP_HOLIDAY[={@og.value org.opengion.hayabusa.common.SystemData#USE_GANTTHEADER_SKIP_HOLIDAY}])ã€?
1422 *
1423 * @og.rev 4.0.0.0 (2007/09/07) 新規作æ?
1424 *
1425 * @param skipHol 休日をスキãƒ??するかどã�?�‹ã€?
1426 * @see org.opengion.hayabusa.common.SystemData#USE_GANTTHEADER_SKIP_HOLIDAY
1427 */
1428 public void setSkipHoliday( final String skipHol) {
1429 skipHoliday = nval( getRequestParameter( skipHol ),skipHoliday );
1430 }
1431
1432 /**
1433 * 【TAG】時間ガントで?’段çµ?‚’使用する/しなã�?‚’設定しまã�?
1434 * (初期値:USE_GANTTHEADER_MULTIPLE_COLUMN[={@og.value org.opengion.hayabusa.common.SystemData#USE_GANTTHEADER_MULTIPLE_COLUMN}])ã€?
1435 *
1436 * @og.tag
1437 * ガントã?ãƒ?ƒ€ーにおいて、時間ã?ãƒ?ƒ€ーの上段に日付を、下段の時間軸の(h)の削除を行いますã?
1438 * 日付ã?、表示開始時刻の上と、それã??–時間ごとに表示しますã?
1439 * (初期値:シスãƒ?ƒ 定数のUSE_GANTTHEADER_MULTIPLE_COLUMN[={@og.value org.opengion.hayabusa.common.SystemData#USE_GANTTHEADER_MULTIPLE_COLUMN}])ã€?
1440 *
1441 * @og.rev 5.6.1.2 (2013/02/22) 新規作æ?
1442 *
1443 * @param multiClm 時間ガントで?’段çµ?‚’使用するかどã�?�‹(true:する/false:しなã�?ã€?
1444 * @see org.opengion.hayabusa.common.SystemData#USE_GANTTHEADER_MULTIPLE_COLUMN
1445 */
1446 public void setUseMultiClm( final String multiClm ) {
1447 useMultiClm = nval( getRequestParameter( multiClm ),useMultiClm );
1448 }
1449
1450 /**
1451 * 日付ã?時刻のæ–?—å?を時間整数に変換しますã?
1452 *
1453 * 時間を扱ã�??合ã?、厄介なのは、時間とåˆ??単位ã?違いですã?
1454 * åˆ?�«換算してしまã�?�¨、時間ã?取得に?–0é?数で扱ã�?¿?¦�が出てきますã?
1455 * そこで、単純に時間に換算するã?ではなくã??‘時間を100としてã€?
1456 * åˆ?‚’?�から99までの整数に換算して計算してã�?�¾すã?
1457 * これにより時間の足し算や引き算が可能になりã?かつ、時間を求めるã?に
1458 * 100で割るだけで求めることが可能になりますã?
1459 *
1460 * @og.rev 5.6.1.2 (2013/02/22) å»?¢
1461 *
1462 * @param yy 時間のæ–?—å?
1463 * @param mm åˆ??æ–?—å?
1464 *
1465 * @return ?‘時間を100として、å?を0から99までの整数に換算したå?
1466 */
1467 // private static int ym2int( final String yy,final String mm ) {
1468 // return (int)(Integer.parseInt( yy ) * 100 + Integer.parseInt( mm )*10.0/6.0 ) ;
1469 // }
1470
1471 /**
1472 * 日付ã?時刻のæ–?—å?を時間整数に変換しますã?
1473 *
1474 * 時間を扱ã�??合ã?、厄介なのは、時間とåˆ??単位ã?違いですã?
1475 * åˆ?�«換算してしまã�?�¨、時間ã?取得に?–0é?数で扱ã�?¿?¦�が出てきますã?
1476 * そこで、単純に時間に換算するã?ではなくã??‘時間を100としてã€?
1477 * åˆ?‚’?�から99までの整数に換算して計算してã�?�¾すã?
1478 * これにより時間の足し算や引き算が可能になりã?かつ、時間を求めるã?に
1479 * 100で割るだけで求めることが可能になりますã?
1480 *
1481 * ここでは、引数に、HHmm ã€?HHmmss 、yyyyMMddHHmm 、yyyyMMddHHmmss 、null が扱えますã?
1482 * null の場合ã?ã€?1 を返しますã?
1483 * yyyyMMdd 部åˆ??、無視されますã?
1484 *
1485 * @og.rev 5.6.1.2 (2013/02/22) 日付ã?秒ã?null 対å¿?
1486 *
1487 * @param hhmm 時å?のæ–?—å?
1488 *
1489 * @return ?‘時間を100として、å?を0から99までの整数に換算したå?
1490 */
1491 private static int hm2int( final String hhmm ) {
1492 int rtn = -1;
1493
1494 if( hhmm != null ) {
1495 int len = hhmm.length();
1496 String hh = null;
1497 String mm = null;
1498 if( len == 4 || len == 6 ) { // HHmm 、HHmmss
1499 hh = hhmm.substring( 0,2 );
1500 mm = hhmm.substring( 2,4 );
1501 }
1502 else if( len == 12 || len == 14 ) { // yyyyMMddHHmm 、yyyyMMddHHmmss
1503 hh = hhmm.substring( 8,10 );
1504 mm = hhmm.substring( 10,12 );
1505 }
1506 else {
1507 String errMsg = "æŒ?®šできる時間形式ã?、HHmm 、HHmmss 、yyyyMMddHHmm 、yyyyMMddHHmmss ですã?"
1508 + HybsSystem.CR
1509 + "hm2int=[" + hhmm + "]" ;
1510 throw new HybsSystemException( errMsg );
1511 }
1512 rtn = (int)(Integer.parseInt( hh ) * 100 + Integer.parseInt( mm )*10.0/6.0 ) ;
1513 }
1514
1515 return rtn;
1516 }
1517
1518 /**
1519 * 休æ?時間のãƒ??タを管ç�?�™るå?部クラスですã?
1520 *
1521 * @og.rev 3.8.0.7 (2005/09/20) å†?ƒ¨クラス新規作æ?
1522 * @og.group 画面部å“?
1523 *
1524 * @version 4.0
1525 * @author Kazuhiko Hasegawa
1526 * @since JDK5.0,
1527 */
1528 private static class BreakTimeData {
1529 private final String startDay ; // 開始日付ã?null の場合ã?、毎日
1530 private final int startTime ; // 開始時刻のhm2int変換済み値
1531 private final int timeSpan ; // 開始時刻と終äº?™‚刻の時間差(hm2int変換済み)
1532 private final String viewTime ; // ãƒ??ルチップ表示用のæ–?—å?(HHmm-HHmm)
1533
1534 /**
1535 * コンストラクター
1536 *
1537 * 開始日ä»?startDay)ã€?–‹始時刻(startTime)、時間差(timeSpan)、表示ラベル(viewTime)
1538 * を指定して、休æ?時間のãƒ??タオブジェクトを構築しますã?
1539 * 開始日ä»?startDay)は、null の場合ã?、毎日、つまりã?定常çš?�ª休æ?時刻として
1540 * 認識しますã?日付がæŒ?®šされた場合ã?、その日のみの特別な休æ?時間と認識しますã?
1541 * 開始時刻は、hm2int変換済み値でã€?¼‘時間が100となりã?åˆ??ã€?0進数に変換されてã�?‚‹
1542 * 値として認識しますã?7??0 の場合ã?ã€?50 とã�?�†値になりますã?
1543 * 開始時刻と終äº?™‚刻の時間差(timeSpan)ã‚?hm2int変換済み値ですã?
1544 * 表示用のæ–?—å?(viewTime)は、休æ?時間の HTML表記時の title 属æ?として
1545 * 設定される為、ã?ウスオーバã?時ã?ãƒ??ルチップに現れますã?
1546 *
1547 * @param startDay yyyyMMdd 形式ã?開始日付ã?null の場合ã?、毎日
1548 * @param startTime 開始時刻のhm2int変換済み値
1549 * @param timeSpan 開始時刻と終äº?™‚刻の時間差(hm2int変換済み)
1550 * @param viewTime ãƒ??ルチップ表示用のæ–?—å?(HHmm-HHmm)
1551 * @return 含まれる(対象)場合ã?、true そうでなã�??合ã?、false
1552 */
1553 BreakTimeData( final String startDay,final int startTime,final int timeSpan,final String viewTime ) {
1554 this.startDay = startDay;
1555 this.startTime = startTime;
1556 this.timeSpan = timeSpan;
1557 this.viewTime = viewTime;
1558 }
1559
1560 /**
1561 * æŒ?®šã?日付と時刻がã?こã? BreakTimeData の開始日時とマッチするかどã�?�‹をチェãƒ?‚¯しますã?
1562 *
1563 * 開始日時とマッチするとは、å?部日付がマッチしã€?–‹始時刻がã?æŒ?®šã? time の
1564 * ?‘時é–?+100)*stepのç¯?›²に含まれてã�?‚‹場合をæŒ?�—ますã?(true を返しますã?)
1565 * å†?ƒ¨の日ä»?startDay)ã�?null の場合ã?、毎日が対象となりますã?
1566 * 開始時刻がã?ãƒ?ƒ�した場合ã?、timeSpan åˆ?� けã?å¹?‚’持った休æ?時間を認識しますã?
1567 * å¢?•Œ条件の都合で、timeSpan == 0 の状態も存在しますが、これã?マッチしなã�?�¨判断しますã?
1568 *
1569 * @og.rev 3.8.1.1 (2005/11/21) timeSpan ã�?0 より大きい場å�?条件追åŠ?
1570 * @og.rev 3.8.9.2 (2007/07/28) 時間間隔パラメータ追åŠ?
1571 *
1572 * @param inDay yyyyMMdd 形式ã?日付ã?
1573 * @param time 休æ?時間の開始時刻のhm2int変換済み値
1574 * @param step 時間間隔
1575 * @return 含まれる(対象)場合ã?、true そうでなã�??合ã?、false
1576 */
1577 // boolean startsWith( final String inDay,final int time ) {
1578 boolean startsWith( final String inDay,final int time,final int step ) {
1579 return ( timeSpan > 0 &&
1580 time <= startTime &&
1581 startTime < time+100*step &&
1582 ( startDay == null || inDay.equals( startDay ) ) );
1583 }
1584
1585 /**
1586 * 休æ?時間を表ã�?SPANタグを作æ?しますã?
1587 *
1588 * ?‘時é–?hourOfPixcel(px) で換算しますã?åˆ??、すでにåˆ?•°計ç®?hm2int)済み
1589 *
1590 * @og.rev 3.8.8.4 (2007/02/17) class="breaktime" 追åŠ?
1591 * @og.rev 5.6.1.2 (2013/02/22) ベã?ス時刻対応ã?width ã�?0 の場合ã?ã€? をセãƒ?ƒˆ
1592 *
1593 * @param offset 表示開始ピクセル数(実質表示日数 * ?‘日åˆ??ピクセル - オフセãƒ?ƒˆ)
1594 * @param hourOfPixcel ?‘時間あたりのピクセル数
1595 * @param breakTimeStyle 休æ?時間のæŒ?®šに追åŠ?�™るスタイル属æ?
1596 * @return 休æ?時間を表ã�?SPANタグ
1597 */
1598 String getBreakTime( final int offset,final int hourOfPixcel,final String breakTimeStyle ) {
1599 int left = offset + (startTime*hourOfPixcel/100) ;
1600 int width = (timeSpan*hourOfPixcel/100) ;
1601 if( width == 0 ) { width = 2; } // 5.6.1.2 (2013/02/22) ベã?ス時刻対応ã?width ã�?0 の場合ã?ã€? をセãƒ?ƒˆ
1602
1603 return "<span class=\"breaktime\" title=\"" + viewTime + "\""
1604 + " style=\"position:absolute;z-index:100;height:500000px;"
1605 + "left:" + left + "px;"
1606 + "width:" + width + "px;"
1607 + breakTimeStyle + "\" ></span>"
1608 + HybsSystem.CR ;
1609 }
1610 }
1611
1612 /**
1613 * 休æ?時間を管ç�?�™るå?部クラスですã?
1614 *
1615 * å†?ƒ¨çš?�«、休æ?時間以外に、ã?ース時刻もå?ç�?�§きるようにしますã?
1616 * これは、終äº?™‚刻を指定されてã�?�ªã�??合でも対応できるようにすることを意味しますã?
1617 * またã?時間æŒ?®š方法を、時åˆ?� けでなくã?時å?秒指定時でもå?ç�?�§きるようにしますã??ˆ秒ã?無視ï¼?
1618 *
1619 * @og.rev 3.8.0.7 (2005/09/20) å†?ƒ¨クラスBreakTimeDataを使用するように修正
1620 * @og.rev 3.8.1.6 (2006/04/25) 変数の final åŒ?
1621 * @og.rev 5.6.1.2 (2013/02/22) breakTimesの処ç�?–¹法ã?見直ã�?
1622 *
1623 * @og.group 画面部å“?
1624 *
1625 * @version 4.0
1626 * @author Kazuhiko Hasegawa
1627 * @since JDK5.0,
1628 */
1629 private static class BreakTimes {
1630 private final List<BreakTimeData> timeList = new ArrayList<BreakTimeData>();
1631 private final int hourOfPixcel ; // ?‘時間あたりのピクセル数(ä¾?TIME_PIXEL)
1632 private final String breakTimeStyle ; // 休æ?時間のæŒ?®šに追åŠ?�™るスタイル属æ?
1633 private final int viewStartTime ; // 数値åŒ?hm2int)された表示開始時刻(ä¾?0700)
1634 private final int viewEndTime ; // 数値åŒ?hm2int)された表示終äº?™‚刻(ä¾?2000)
1635
1636 /**
1637 * コンストラクター
1638 * å¿?¦�なæƒ??を設定して、オブジェクトを構築しますã?
1639 * 表示終äº?™‚刻は、表示開始時刻 >= 表示終äº?™‚刻 の場合ã?2400åŠ?®—されてã�?‚‹ã€?
1640 *
1641 * @og.rev 3.8.0.7 (2005/09/20) breakTimesの日付またがり追åŠ?
1642 * @og.rev 3.8.1.1 (2005/11/21) timeSpan の計算方法を見直ã�?
1643 * @og.rev 5.6.1.2 (2013/02/22) breakTimesの処ç�?–¹法ã?見直ã�?
1644 *
1645 * @param hOfpx ?‘時間あたりのピクセル数
1646 * @param breakTimes 休æ?時間をã?HHmm-HHmm形式ã?またã?、yyyyMMddHHmm-HHmm、またã?、yyyyMMddHHmm-yyyyMMddHHmm形式でæŒ?®šしますã?
1647 * @param style 休æ?時間のæŒ?®šに追åŠ?�™るスタイル属æ?
1648 * @param vStartTime 数値åŒ?hm2int)された表示開始時刻
1649 * @param vEndTime 数値åŒ?hm2int)された表示終äº?™‚刻
1650 */
1651 BreakTimes( final int hOfpx,final String breakTimes,final String style,
1652 final int vStartTime,final int vEndTime ) {
1653 hourOfPixcel = hOfpx;
1654 breakTimeStyle = ( style == null ) ? "" : style ;
1655 viewStartTime = vStartTime;
1656 viewEndTime = vEndTime;
1657 boolean time24 = ( viewEndTime > 2400 ); // 3.8.1.1 (2005/11/21) 開始終äº?�Œé€?»¢してã�?‚‹場å�?true
1658
1659 // 3.8.1.1 (2005/11/21) timeSpan の計算方法を見直ã�?
1660 DateFormat format = new SimpleDateFormat( "yyyyMMdd",Locale.JAPAN );
1661 String[] startEnds = StringUtil.csv2Array( breakTimes );
1662 int len = startEnds.length;
1663
1664 String startDay ; // null の場合ã?、毎日
1665 String endDay ; // ä¸?™‚変数
1666 int startTime ; // 開始時刻のhm2int変換済み値
1667 int endTime ; // 終äº?™‚刻のhm2int変換済み値
1668 int timeSpan ; // 開始時刻と終äº?™‚刻の時間差(hm2int変換済み値)
1669 String viewTime ; // ãƒ??ルチップ表示用のæ–?—å?(HH:mm-HH:mm)
1670
1671 Calendar str ;
1672 Calendar end ;
1673
1674 for( int i=0; i<len; i++ ) {
1675 String startEnd = startEnds[i];
1676 if( startEnd != null ) {
1677 // startEnd = "0700ss-2000ss"; // 開å§?終äº?™‚刻(HHmm-HHmm)
1678 // startEnd = "200508200700ss-2000ss"; // 開å§?終äº?™‚刻(yyyyMMddHHmm-HHmm)
1679 // startEnd = "200508200700ss-200508212000ss"; // 開å§?終äº?™‚刻(yyyyMMddHHmm-yyyyMMddHHmm)
1680
1681 // 5.6.1.2 (2013/02/22) breakTimesの処ç�?–¹法ã?見直ã�?
1682 int idx = startEnd.indexOf( '-' ); // ハイフンを見つけるã€?
1683 if( idx > 0 ) {
1684 String st = startEnd.substring( 0,idx );
1685 String ed = startEnd.substring( idx+1 );
1686
1687 startDay = (st.length() >= 8) ? st.substring( 0,8 ) : null ; // ?˜ケタ以上で、yyyyMMdd 取å¾?
1688 endDay = (ed.length() >= 8) ? ed.substring( 0,8 ) : null ; // ?˜ケタ以上で、yyyyMMdd 取å¾?
1689 startTime = hm2int( st );
1690 endTime = hm2int( ed );
1691 }
1692 // startEnd = "0700ss"; // 開始時刻(HHmm)
1693 // startEnd = "200508200700ss"; // 開始時刻(yyyyMMddHHmm)
1694 // startEnd = "200508200700ss"; // 開始時刻(yyyyMMddHHmm)
1695 else {
1696 String st = startEnd;
1697 startDay = (st.length() >= 8) ? st.substring( 0,8 ) : null ; // ?˜ケタ以上で、yyyyMMdd 取å¾?
1698 endDay = null ;
1699 startTime = hm2int( st );
1700 endTime = startTime + 1; // 差åˆ?‚’出すためã?startTime に 1 ã�?�‘åŠ?®?
1701 }
1702
1703 // 5.6.1.2 (2013/02/22) 処ç�?¦‹直ã�?
1704 // // startEnd = "0700-2000"; // 開å§?終äº?™‚刻(HHmm-HHmm)
1705 // if( startEnd.length() == 9 && startEnd.charAt(4) == '-' ) {
1706 // startDay = null;
1707 // endDay = null;
1708 // startTime = ym2int( startEnd.substring( 0,2 ),startEnd.substring( 2,4 ) );
1709 // endTime = ym2int( startEnd.substring( 5,7 ),startEnd.substring( 7 ) );
1710 // }
1711 // // startEnd = "200508200700-2000"; // 開å§?終äº?™‚刻(yyyyMMddHHmm-HHmm)
1712 // else if( startEnd.length() == 17 && startEnd.charAt(12) == '-' ) {
1713 // startDay = startEnd.substring( 0,8 );
1714 // endDay = null;
1715 // startTime = ym2int( startEnd.substring( 8,10 ),startEnd.substring( 10,12 ) );
1716 // endTime = ym2int( startEnd.substring( 13,15 ),startEnd.substring( 15 ) );
1717 // }
1718 // // startEnd = "200508200700-200508212000"; // 開å§?終äº?™‚刻(yyyyMMddHHmm-yyyyMMddHHmm)
1719 // else if( startEnd.length() == 25 && startEnd.charAt(12) == '-' ) {
1720 // startDay = startEnd.substring( 0,8 );
1721 // endDay = startEnd.substring( 13,21 );
1722 // startTime = ym2int( startEnd.substring( 8,10 ),startEnd.substring( 10,12 ) );
1723 // endTime = ym2int( startEnd.substring( 21,23 ),startEnd.substring( 23 ) );
1724 // }
1725 // else {
1726 // String errMsg = "休æ?時間は、HHmm-HHmm形式ã?またã?、yyyyMMddHHmm-HHmm、またã?、yyyyMMddHHmm-yyyyMMddHHmm形式ですã?"
1727 // + HybsSystem.CR
1728 // + "breakTimes=[" + breakTimes + "] Bad=[" + startEnd + "]" ;
1729 // throw new HybsSystemException( errMsg );
1730 // }
1731
1732 str = null;
1733 end = null;
1734 if( startDay != null ) { str = HybsSystem.getCalendar( startDay ); }
1735 if( endDay != null ) { end = HybsSystem.getCalendar( endDay ); }
1736
1737 // 表示終äº?™‚刻 ã�?2400 より大きい場合ã?表示開始時刻 >= 表示終äº?™‚刻 であるã€?
1738 if( time24 ) {
1739 // 開始時刻 < 表示終äº?™‚刻 => 開始時刻に2400åŠ?®—するã?
1740 if( startTime < viewEndTime-2400 ) {
1741 if( str != null ) {
1742 str.add(Calendar.DATE, -1 ); // -1 日しておく
1743 startDay = format.format( str.getTime() );
1744 }
1745 startTime += 2400;
1746 }
1747
1748 // 終äº?™‚刻 <= 表示終äº?™‚刻 => 終äº?™‚刻に2400åŠ?®—するã?
1749 if( endTime <= viewEndTime-2400 ) {
1750 if( end != null ) {
1751 end.add(Calendar.DATE, -1 ); // -1 日しておく
1752 endDay = format.format( end.getTime() );
1753 }
1754 endTime += 2400;
1755 }
1756 }
1757
1758 // 3.8.1.1 (2005/11/21) 判定条件修正
1759 // 開始時刻 < 表示開始時刻 => 開始時刻に表示開始時刻をセãƒ?ƒˆã€?
1760 if( startTime < viewStartTime ) { startTime = viewStartTime; }
1761
1762 // 開始時刻 > 表示終äº?™‚刻 => 開始時刻に表示終äº?™‚刻をセãƒ?ƒˆã€?
1763 if( startTime > viewEndTime ) { startTime = viewEndTime; }
1764
1765 // 終äº?™‚刻 < 表示開始時刻 => 終äº?™‚刻に表示開始時刻をセãƒ?ƒˆã€?
1766 if( endTime < viewStartTime ) { endTime = viewStartTime; }
1767
1768 // 終äº?™‚刻 > 表示終äº?™‚刻 => 終äº?™‚刻に表示終äº?™‚刻をセãƒ?ƒˆã€?
1769 if( endTime > viewEndTime ) { endTime = viewEndTime; }
1770 timeSpan = endTime - startTime ;
1771 viewTime = startEnd ;
1772 }
1773 // null の場合ã?、カンマが連続したり、最後に余å?に付いたケースなので、無視するã?
1774 else {
1775 continue;
1776 }
1777
1778 // 終äº?—¥がå?ってã�?�ªã�?�‹ã€?–‹始日と終äº?—¥が同じ日の場合ã?
1779 if( timeSpan >= 0 && (
1780 endDay == null || ( startDay != null && startDay.equals( endDay ) ) ) ) {
1781 timeSpan = endTime - startTime ;
1782 timeList.add( new BreakTimeData( startDay,startTime,timeSpan,viewTime ) );
1783 }
1784 else {
1785 // 終äº?—¥がå?ってã�?‚‹とè¤?•°日にåˆ?�‹れてã�?‚‹ので、å?解するå¿?¦�があるã€?
1786
1787 // 初日の timeSpan は、startTime から viewEndTime まで
1788 timeSpan = viewEndTime - startTime ;
1789 timeList.add( new BreakTimeData( startDay,startTime,timeSpan,viewTime ) );
1790
1791 // æœ?µ‚日の timeSpan は、viewStartTime から endTime まで
1792 timeSpan = endTime - viewStartTime ;
1793 timeList.add( new BreakTimeData( endDay,viewStartTime,timeSpan,viewTime ) );
1794
1795 // 中日の timeSpan は、viewStartTime から viewEndTime まで
1796 timeSpan = viewEndTime - viewStartTime ;
1797 if( str != null && end != null ) {
1798 str.add(Calendar.DATE, 1 ); // +1 日しておく
1799 while( str.before( end ) ) { // 終äº?™‚間ã?、ã?含まなã�??仕æ§?
1800 Date dt = str.getTime();
1801 String tempStartDay = format.format( dt );
1802 timeList.add( new BreakTimeData( tempStartDay,viewStartTime,timeSpan,viewTime ) );
1803 str.add(Calendar.DATE, 1);
1804 }
1805 }
1806 }
1807 }
1808 }
1809
1810 /**
1811 * そã?日のそã?時間の休æ?時間を表ã�?SPANタグ群(è¤?•°ありã�?‚‹)を作æ?しますã?
1812 *
1813 * @og.rev 3.8.9.2 (2007/07/28) 時間間隔パラメータ追åŠ?
1814 *
1815 * @param offset 表示開始ピクセル数(実質表示日数 * ?‘日åˆ??ピクセル - オフセãƒ?ƒˆ)
1816 * @param day Calendar 処ç�?�™べき日付ã?カレンãƒ?
1817 * @param time 処ç�?�™べき時é–?
1818 * @param step 時間間隔
1819 * @return そã?日のそã?時間の休æ?時間を表ã�?SPANタグ群(è¤?•°ありã�?‚‹)
1820 */
1821 // String makeSpan( final int offset,final Calendar day,final int time ) {
1822 String makeSpan( final int offset,final Calendar day,final int time,final int step ) {
1823 DateFormat format1 = new SimpleDateFormat( "yyyyMMdd",Locale.JAPAN );
1824 String inDay = format1.format( day.getTime() );
1825
1826 StringBuilder buf = new StringBuilder();
1827 int size = timeList.size();
1828 for( int i=0; i<size; i++ ) {
1829 BreakTimeData timeData = timeList.get(i);
1830 // if( timeData.startsWith( inDay,time ) ) {
1831 if( timeData.startsWith( inDay,time,step ) ) {
1832 buf.append( timeData.getBreakTime( offset,hourOfPixcel,breakTimeStyle ) );
1833 }
1834 }
1835
1836 String rtn = null;
1837
1838 if( buf.length() > 0 ) { rtn = buf.toString(); }
1839 return rtn;
1840 }
1841 }
1842
1843 /**
1844 * こã?オブジェクトã?æ–?—å?表現を返しますã?
1845 * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
1846 *
1847 * @return こã?クラスのæ–?—å?表現
1848 */
1849 @Override
1850 public String toString() {
1851 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
1852 .println( "VERSION" ,VERSION )
1853 .println( "startDate" ,startDate )
1854 .println( "endDate" ,endDate )
1855 .println( "daySpan" ,daySpan )
1856 .println( "zoom" ,zoom )
1857 .println( "breakTimes" ,breakTimes )
1858 .println( "breakTimeStyle" ,breakTimeStyle )
1859 .println( "baseTimes" ,baseTimes ) // 5.6.1.2 (2013/02/22) ベã?ス時刻
1860 .println( "baseTimeStyle" ,baseTimeStyle ) // 5.6.1.2 (2013/02/22) ベã?ス時刻スタイル
1861 .println( "calDB" ,calDB )
1862 .println( "arg1" ,arg1 )
1863 .println( "arg2" ,arg2 )
1864 .println( "arg3" ,arg3 )
1865 .println( "arg4" ,arg4 )
1866 .println( "skipHoliday" ,skipHoliday )
1867 .println( "TIME_PIXEL" ,TIME_PIXEL )
1868 .println( "Other..." ,getAttributes().getAttribute() )
1869 .fixForm().toString() ;
1870 }
1871 }