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.html.ViewTimeTableParam;
021    
022    import static org.opengion.fukurou.util.StringUtil.nval ;
023    
024    import java.io.ObjectOutputStream;
025    import java.io.ObjectInputStream;
026    import java.io.IOException;
027    import java.util.Map;
028    import java.util.HashMap;
029    import java.util.Arrays;
030    import java.awt.Font ;
031    
032    /**
033     * viewタグの viewFormType ã�?ImageTimeBar の場合にパラメータを設定しますã?
034     *
035     * キー、日時ã?状況コードを持つ稼働状況ã?表示を行う、ViewForm_ImageTimeBar クラスに対してã€?
036     * å�?¨®パラメータを設定しますã?
037     * (パラメータを使用するには、viewタグのuseParam 属æ?をtrueに設定するå¿?¦�がありますã?)
038     *
039     * SELECTæ–??、キー、日時ã?状況コードが、å¿??é ?›®で、カラãƒ??並びé ??、完å?に固定ですã?
040     * よって、カラãƒ?½�置を指定するå¿?¦�ã?ありませんがã?SELECTæ–?‚’自由に設定することã‚?
041     * 出来ませんので、ご注意くã�?�•ã�??
042     * こã?固定化に伴ã�??WRITABLE æŒ?®šも使用できません。(そもそも書き込み不可ですï¼?
043     * それ以降ã?カラãƒ?�«つã�?�¦は、å?部処ç�?�¨しては、使用してã�?�¾せんã€?
044     * ただしã?パラメータで、カラー色æŒ?®šã?ラベル表記部、イメージ重ã?合わせã?
045     * ポップアãƒ??表記ã?リンク表記に使えますã?
046     *
047     * ãƒ??タの並びé ?ORDER BY)もã?キー、日時é?にしてくださいã€?
048     * ãƒ??タは、キー単位に?‘レコード作æ?されますã??ˆキーブレイク?‰その間ã?日時é?に
049     * ãƒ??タをå?ç�?�—ますã?
050     *
051     * ãƒ??タの表示は、今ã?レコードã?日時からã?次のレコードã?日時までをä¸?�¤の状態と
052     * して表しますã?今ã?レコードを表示するには、次のレコードがå¿?¦�になりますã?
053     * 画面表示は、表示開始日æ™?minStartTime) から 表示期間(timeSpan)åˆ?‚’表示しますã?
054     * 通常ã€?–‹始時刻は、表示開始時刻より前より始まりã?次のレコードで、終äº?™‚刻が決å®?
055     * されますã?æœ?¾Œã?ãƒ??タは、期間æº?º?�¾で続いてã�?‚‹と仮定されますã?
056     * ãƒ??タが存在しなã�??であれば、ã?存在しなã�?ƒ‡ータ」を作æ?してくださいã€?
057     * 
058     * ImageTimeBar では、キーでまとめた値につã�?�¦、各状況コードをカラー化し、積み上げ
059     * 帯グラフ形式でPNG画像化しますã?
060     * こã?画像を、読み込ã‚?HTML をå?力することで、画面上に、積み上げ帯グラフを表示しますã?
061     * 状況コードに対応する色は、標準では自動作æ?ですが、外部から色æ–?­—å?を与えることで
062     * 自由にæŒ?®šする事も可能ですã?
063     *
064     * ポップアãƒ??表è¨?tipsClm)、リンク表è¨?linkClm)は、この画像に対するエリアæŒ?®šタグをå?力する事で実現しますã?
065     * 画像ファイルは、å?ãƒ??タに対してã€?¼‘画像だけなので、サイズは大きくなりますがã€?¼‘レコーãƒ?
066     * 単位に画像を作æ?しなã�?�Ÿめã?レスポンスは向上しますã?
067     * それぞれ、viewMarker , viewLink を利用することが可能ですã?特に、リンク表è¨?linkClm) につã�?�¦はã€?
068     * linkタグの hrefTarget 属æ?ã‚?true に設定することで適用できますã?
069     *
070     * 画像ファイルは、java.io.File.createTempFile( File ) で作æ?するため、JavaVM(=Tomcat)ã�?
071     * 正常終äº?�™るときに、削除されますã?異常終äº?™‚には残りますが、temp フォルãƒ?‚’定期çš?�«
072     * 整ç�?�™れã?、それほど大量ã?ファイルが残ることはなã�?�¨思われますã?
073     *
074     * ãƒ??タは、イベント発生時に作æ?されると仮定してã�?�¾すã?つまりã?書き込まれた日時からã?
075     * 状況コードに対応する状況が発生し、次の状æ³?�•ã�??レコードまで継続してã�?‚‹とè€?�ˆますã?
076     * よって、データをé?中でåˆ?‚Š出すå?合ã?åˆ?‚Š出すç¯?›²の前ã?状態がå¿?¦�になりますã?
077     * ä¸?•ªæœ??の状態ã?ã€?不æ?" として扱ã�?�¾すã??ˆ空æ¬?¼�白色??
078     *
079     * <img src="doc-files/ViewTimeBarParamTag.png" alt="ViewTimeBarParamTag" >
080     *
081     * @og.formSample
082     * ●形式ï¼?lt;og:timeBarParam startDate="?¥?¥?¥" timeSpan="?¥?¥?¥" ?¥?¥?¥ /&gt;
083     * ●body?šなã�?
084     *
085     * ●Tag定義??
086     *   &lt;og:timeBarParam
087     *       startDate       【TAG】タイãƒ?ƒ†ーブルの表示開始日時をセãƒ?ƒˆしまã�?å¿??)ã€?
088     *       timeSpan        【TAG】タイãƒ?ƒ†ーブルの表示期間を時間でæŒ?®šしまã�?å¿??)ã€?
089     *       labelClms       【TAG】ä¸?¦§表のラベル表示部に表示するカラãƒ?‚’CSV形式でæŒ?®šしまã�?初期値:キーのRenderer値)ã€?
090     *       colorClm        【TAG】レコードに付ける色を色æ–?­—å?でæŒ?®šするå?合ã?カラãƒ?��を指定しまã�?初期値:æŒ?®šしなã�?ã€?
091     *       tipsClm         【TAG】レコード単位に、ã?ウスオーバã?時ã?Tips表示を行うカラãƒ?‚’æŒ?®šしまã�?初期値:æŒ?®šしなã�?ã€?
092     *       linkClm         【TAG】レコード単位に、クリãƒ?‚«ブルリンクを設定するカラãƒ?‚’æŒ?®šしまã�?初期値:æŒ?®šしなã�?ã€?
093     *       useLegend       【TAG】カラーの凡例を使用するかどã�?�‹[true/false]を指定しまã�?初期値:{@og.value #USE_LEGEND})ã€?
094     *       maxLabelWidth   【TAG】ラベル表記部のæœ?¤§サイズをpxでæŒ?®šしまã�?初期値:{@og.value #MAX_LABEL_WIDTH})ã€?
095     *       maxTimeWidth    【TAG】タイãƒ?¡¨記部のæœ?¤§サイズをpxでæŒ?®šをpxでæŒ?®šしまã�?初期値:{@og.value #MAX_TIME_WIDTH})ã€?
096     *       chartHeight     【TAG】1行ã?タイãƒ?ƒ�ャートã?å¹?‚’pxでæŒ?®šしまã�?初期値:{@og.value #CHART_HEIGHT})ã€?
097     *       padding         【TAG】イメージ作æ?の 全体テーブルの隙間?ˆパãƒ?‚£ング?‰をpxでæŒ?®šしまã�?初期値:{@og.value #CHART_PADDING})ã€?
098     *       margin          【TAG】1レコードã?æ–?­—やタイãƒ?ƒ�ャートã?マã?ジンをpxでæŒ?®šしまã�?初期値:{@og.value #RECODE_MARGIN})ã€?
099     *       useLastData     【TAG】行ã?æœ?¾Œã?æƒ??がã?継続してã�?‚‹として使ã�?�‹どã�?�‹[true/false]を指å®?初期値:{@og.value #USE_LAST_DATA})ã€?
100     *       debug           【TAG】å?部æƒ??をå?力しまã�?初期値:false)ã€?
101     *   /&gt;
102     *
103     * ●使用ä¾?
104     *     ViewFormTag の viewFormType がã?ImageTimeBar の場合に使用しますã?
105     *     useParam 属æ?を設定しておかなã�?�¨、使用されませんã€?
106     *     &lt;og:view
107     *         viewFormType = "ImageTimeBar"
108     *         command      = "{&#064;command}"
109     *         <b>useParam     = "true"</b>
110     *     &gt;
111     *         &lt;og:timeBarParam
112     *             startDate   = "{&#064;DYFROM}"
113     *             timeSpan    = "24"
114     *         /&gt;
115     *     &lt;/og:view &gt;
116     *
117     * @og.group 画面表示
118     * @og.rev 5.5.5.6 (2012/08/31) 新規追åŠ?
119     *
120     * @version  4.0
121     * @author       Kazuhiko Hasegawa
122     * @since    JDK5.0,
123     */
124    public class ViewTimeBarParamTag extends ViewParamTag {
125            //* こã?プログラãƒ??VERSIONæ–?­—å?を設定しますã?       {@value} */
126            private static final String VERSION = "5.6.1.1 (2013/02/08)" ;
127    
128            private static final long serialVersionUID = 561120130208L ;
129    
130            private static final String START_DATE          = null;         // タイãƒ?ƒ†ーブルの表示開始日時をセãƒ?ƒˆしまã�?初期値:ãƒ??タのæœ?°�日æ™?ã€?
131            private static final String TIME_SPAN           = "24";         // タイãƒ?ƒ†ーブルの表示期間を時間でæŒ?®šしまã�?初期値:{@og.value #TIME_SPAN})ã€?
132    
133    //      private static final String MIN_START_TIME      = "0000";       // タイãƒ?ƒ†ーブルの開始時刻(含ã‚?     0800=08:00 のことã€?H=480M
134    //      private static final String MAX_END_TIME        = "2400";       // タイãƒ?ƒ†ーブルの終äº?™‚刻(含まなã�? 2000=20:00 のことã€?0H=1200M
135    
136            private static final String LABEL_CLMS          = null;         // ä¸?¦§表のラベル表示部に表示するカラãƒ?‚’CSV形式でæŒ?®šしますã?
137            private static final String COLOR_CLM           = null;         // レコードに付ける色を色æ–?­—å?でæŒ?®šするå?合ã?カラãƒ?��を指定しますã?
138            private static final String TIPS_CLM            = null;         // レコード単位に、ã?ウスオーバã?時ã?Tips表示を行うカラãƒ?��を指定しますã?
139            private static final String LINK_CLM            = null;         // レコード単位に、クリãƒ?‚«ブルリンクを設定するカラãƒ?��を指定しますã?
140    
141            private static final String USE_LEGEND          = "true";       // カラーの凡例を使用するかどã�?�‹[true/false]を指定しますã?
142            private static final String MAX_LABEL_WIDTH     = null;         // ラベル表記部のæœ?¤§サイズをpxでæŒ?®šã?何もなければ、可変長サイズ
143            private static final String MAX_TIME_WIDTH      = "600";        // タイãƒ?¡¨記部のæœ?¤§サイズをpxでæŒ?®šã?
144            private static final String CHART_HEIGHT        = "20";         // ?‘レコードã?チャートã?間隔をpxでæŒ?®šã?実際のå¹??、CHART_HEIGHT?‹MARGIN?Šï¼?
145            private static final String CHART_PADDING       = "5";          // イメージ作æ?の 全体テーブルの隙間
146            private static final String RECODE_MARGIN       = "3";          // å�?ƒ¬コードã?æ–?­—等ã?å†?ƒ¨の間隔
147    
148            private static final String USE_LAST_DATA       = "true";       // 5.6.1.1 (2013/02/08) 行ã?æœ?¾Œã?æƒ??がã?継続してã�?‚‹として使ã�?�‹どã�?�‹[true/false]を指定しますã?
149    
150    //      private static final String FONT_STYLE          = null;         // Font クラスのスタイル定数??LAIN、BOLD、ITALIC、またã? BOLD+ITALIC ??
151    //      private static final String FONT_SIZE           = null;         // Font のポイントサイズ?? ポイントã? 1/72 インãƒ?¼?
152    
153    //      private static final String FILE_DIR            = HybsSystem.sys( "CHART_TEMP_DIR" );           // 画像ファイルの作æ?DIR
154    
155            /** パラメータの初期値設å®?*/
156            private static final Map<String,String>   INIT_PARAM = new HashMap<String,String>();
157            static {
158                    INIT_PARAM.put( "START_DATE"            , START_DATE            );
159                    INIT_PARAM.put( "TIME_SPAN"                     , TIME_SPAN                     );
160    //              INIT_PARAM.put( "MIN_START_TIME"        , MIN_START_TIME        );
161    //              INIT_PARAM.put( "MAX_END_TIME"          , MAX_END_TIME          );
162                    INIT_PARAM.put( "LABEL_CLMS"            , LABEL_CLMS            );
163                    INIT_PARAM.put( "COLOR_CLM"                     , COLOR_CLM                     );
164                    INIT_PARAM.put( "TIPS_CLM"                      , TIPS_CLM                      );
165                    INIT_PARAM.put( "LINK_CLM"                      , LINK_CLM                      );
166                    INIT_PARAM.put( "USE_LEGEND"            , USE_LEGEND            );
167                    INIT_PARAM.put( "MAX_LABEL_WIDTH"       , MAX_LABEL_WIDTH       );
168                    INIT_PARAM.put( "MAX_TIME_WIDTH"        , MAX_TIME_WIDTH        );
169                    INIT_PARAM.put( "CHART_HEIGHT"          , CHART_HEIGHT          );
170                    INIT_PARAM.put( "CHART_PADDING"         , CHART_PADDING         );
171                    INIT_PARAM.put( "RECODE_MARGIN"         , RECODE_MARGIN         );
172                    INIT_PARAM.put( "USE_LAST_DATA"         , USE_LAST_DATA         );              // 5.6.1.1 (2013/02/08)
173    //              INIT_PARAM.put( "FONT_STYLE"            , FONT_STYLE            );
174    //              INIT_PARAM.put( "FONT_SIZE"                     , FONT_SIZE                     );
175                    INIT_PARAM.put( "TEMP_DIR"                      , null                          );
176                    INIT_PARAM.put( "TEMP_URL"                      , null                          );
177    //              INIT_PARAM.put( "TEMP_DIR"                      , HybsSystem.url2dir( FILE_DIR ) );
178            }
179    
180            /** fontStyle 引数に渡す事ã?出来ã‚?フォントスタイル enum  */
181    //      private enum ENUM_FONT_STYLE {
182    //              PLAIN           ( Font.PLAIN ),
183    //              BOLD            ( Font.BOLD ),
184    //              ITALIC          ( Font.ITALIC ),
185    //              BOLD_ITALIC     ( Font.BOLD + Font.ITALIC ) ;
186    //
187    //              private final String fontStyle ;
188    //
189    //              ENUM_FONT_STYLE( final int style ) { fontStyle = String.valueOf( style ); }
190    //
191    //              public String getStyle() { return fontStyle; }
192    //      }
193    
194            /**
195             * Taglibの開始タグが見つかったときに処ç�?�™ã‚?doStartTag() ã‚?オーバã?ライドしますã?
196             *
197             * @return      後続å?ç�??æŒ?¤º
198             */
199            @Override
200            public int doStartTag() {
201                    initParam( INIT_PARAM );
202    
203                    String FILE_DIR         = HybsSystem.sys( "CHART_TEMP_DIR" );           // 画像ファイルの作æ?DIR
204    
205                    putParam( "TEMP_DIR" , HybsSystem.url2dir( FILE_DIR ) );
206                    putParam( "TEMP_URL" , getContextPath() + "/" + FILE_DIR );
207    
208                    return(SKIP_BODY);                              // Body を評価しなã�?
209            }
210    
211            /**
212             * 【TAG】タイãƒ?ƒ†ーブルの表示開始日時をセãƒ?ƒˆしまã�?初期値:ãƒ??タのæœ?°�日æ™?ã€?
213             *
214             * @og.tag
215             * 表示開始日時を起点として、タイãƒ?ƒ†ーブルを表示しますã?
216             * 実際に画面に表示されるã?はã€?–‹始時刻から終äº?™‚刻のç¯?›²å†?� けですがã€?
217             * 起点は、この日時になりますã?
218             * 
219             * æŒ?®š方法として、フォーマットされた日付ã?時刻æƒ??も設定可能ですã??ˆå?部çš?�«処ç�?�—ますï¼?
220             * またã?処ç�?¾?例ï¼?0120824102823?‰14ケタ以上ã?場合ã?ã€?¼‘4ケタにカãƒ?ƒˆしますã?
221             * ?˜ケタ以上ã?場合ã?、時刻 000000 を追åŠ?�—ますã?
222             * それ以下ã?場合ã?、設定エラーとして、HybsSystemException ã‚?throw しますã?
223             * 
224             * 表示開始日時がæŒ?®šされなã�??合ã?、データのæœ?°�時刻を利用して表示しますã?
225             * 初期値は、データのæœ?°�日æ™?ですã?
226             *
227             * @param       startDate タイãƒ?ƒ†ーブルの表示開始日æ™?
228             */
229            public void setStartDate( final String startDate ) {
230                    String date = nval( getRequestParameter( startDate ),START_DATE );
231                    if( date != null ) {
232                            if( date.indexOf( '-' ) >= 0 ) { date = date.replaceAll( "-","" ); }
233                            if( date.indexOf( '/' ) >= 0 ) { date = date.replaceAll( "/","" ); }
234                            if( date.indexOf( ':' ) >= 0 ) { date = date.replaceAll( ":","" ); }
235                            if( date.indexOf( ' ' ) >= 0 ) { date = date.replaceAll( " ","" ); }
236    
237                            int len = date.length();
238                            if( len > 14 ) { date = date.substring( 0,14 ); }    // ミリ秒までæŒ?®šされてã�?‚‹と想å®?
239                            else if( len > 8 && len < 14 ) { date = ( date + "000000" ).substring( 0,14 ) ; } // 西暦からの日付ã?入ってã�?‚‹とè€?�ˆますã?
240                            else {
241                                    String errMsg = "日付データの設定エラーですã?date=[" + startDate + "]" ;
242                                    throw new HybsSystemException( errMsg );
243                            }
244                    }
245                    putParam( "START_DATE" , date );
246            }
247    
248            /**
249             * 【TAG】タイãƒ?ƒ†ーブルの表示期間を時間でæŒ?®šしまã�?初期値:{@og.value #TIME_SPAN})ã€?
250             *
251             * @og.tag
252             * 表示開始日時からã?どれだけã?時間ç¯?›²を表示対象とするかをæŒ?®šしますã?
253             * æŒ?®šする単位ã?、時間ですã?
254             * 小数点はæŒ?®šできません。またã??‘0日ならã?"240" ã€?¼‘か月(30日?‰ならã?"720"
255             * ?‘年?ˆ365日?‰ならã?"8760" を指定しますã?
256             * 実際に画面に表示されるã?はã€?–‹始時刻から終äº?™‚刻のç¯?›²å†?� けですã?
257             * 初期値はã€?{@og.value #TIME_SPAN}" ですã?
258             *
259             * @param       timeSpan タイãƒ?ƒ†ーブルの表示期間(æ™?
260             */
261            public void setTimeSpan( final String timeSpan ) {
262                    putParam( "TIME_SPAN" , nval( getRequestParameter( timeSpan ),TIME_SPAN ) );
263            }
264    
265            /**
266             * 【TAG】タイãƒ?ƒ†ーブルの開始時刻(含ã‚?をセãƒ?ƒˆしまã�?初期値:{@og.value #MIN_START_TIME})ã€?
267             *
268             * @og.tag
269             * 時間軸の書き始めの時刻(自åˆ??身を含ã‚?™‚åˆ?¼”æ¡?を指定しますã?
270             * こã?時刻はã€?¼??�ï¼?ならã?"0800" となりã??‘ï¼??“ï¼?ならã?"1430" となりますã?
271             * 初期値はã€?{@og.value #MIN_START_TIME}" ですã?
272             *
273             * @param       minStTime タイãƒ?ƒ†ーブルの開始時刻(含ã‚?
274             */
275    //      public void setMinStartTime( final String minStTime ) {
276    //              String time = nval( getRequestParameter( minStTime ),MIN_START_TIME );
277    //              if( time.indexOf( ':' ) >= 0 ) { time = time.replaceAll( ":","" ); }
278    //
279    //              putParam( "MIN_START_TIME" , time );
280    //      }
281    
282            /**
283             * 【TAG】タイãƒ?ƒ†ーブルの終äº?™‚刻(含まなã�?をセãƒ?ƒˆしまã�?初期値:{@og.value #MAX_END_TIME})ã€?
284             *
285             * @og.tag
286             * 時間軸のæœ?¾Œã?時刻(自åˆ??身を含まなã�?™‚åˆ?¼”æ¡?を指定しますã?
287             * こã?時刻はã€?¼??�ï¼?ならã?"0900" となりã??‘ï¼??“ï¼?ならã?"1430" となりますã?
288             * 終äº?™‚刻が開始時刻より小さã�??合ã?、翌日の時刻を示してã�?�¾すã?
289             * 0900-0700 は、翌日の0700までの?’2時間å?を指定してã�?�¾すã?
290             * 初期値はã€?{@og.value #MAX_END_TIME}" ですã?
291             *
292             * @param       maxEdTime タイãƒ?ƒ†ーブルの終äº?™‚刻(含まなã�?
293             */
294    //      public void setMaxEndTime( final String maxEdTime ) {
295    //              String time = nval( getRequestParameter( maxEdTime ),MAX_END_TIME );
296    //              if( time.indexOf( ':' ) >= 0 ) { time = time.replaceAll( ":","" ); }
297    //
298    //              putParam( "MAX_END_TIME" , time );
299    //      }
300    
301            /**
302             * 【TAG】ä¸?¦§表のラベル表示部に表示するカラãƒ?‚’CSV形式でæŒ?®šしまã�?初期値:キーのRenderer値)ã€?
303             *
304             * @og.tag
305             * ラベル表示部に表示するカラãƒ?‚’カンマ区åˆ?‚Šæ–?­—å?でæŒ?®šしますã?
306             * æŒ?®šされたカラãƒ??値の、Renderer値を画面上に表示しますã?
307             * ラベル表記部のæœ?¤§サイズ??axLblWidth?‰をæŒ?®šしなã�??合ã?、ここでæŒ?®šされたカラãƒ??
308             * 値のそれぞれのæœ?¤§長を加算したå?がã?ラベル表記部のæœ?¤§サイズ??axLblWidth?‰になりますã?
309             * 初期値は、キーのRenderer値 ですã?
310             *
311             * @param       labelClms ラベル表示部に表示するカラãƒ?CSV形å¼?
312             */
313            public void setLabelClms( final String labelClms ) {
314                    putParam( "LABEL_CLMS" , nval( getRequestParameter( labelClms ),LABEL_CLMS ) );
315            }
316    
317            /**
318             * 【TAG】レコードに付ける色を色æ–?­—å?でæŒ?®šするå?合ã?カラãƒ?��を指定しまã�?初期値:æŒ?®šしなã�?ã€?
319             *
320             * @og.tag
321             * レコード単位に、色を付けるå?合ã?æŒ?®šã?色を付けたい場合に、外部から色æ–?­—å?を与えることが可能ですã?
322             * 色æ–?­—å?は、java.awt.Color の フィールド定義されてã�?‚‹コードと同じæ–?­—å?ですã?
323             * またã?#XXXXXX 形式ã? ?‘6é?æ–?­—å?を与えることで、任意ã?色を指定可能ですã?
324             *
325             * 初期値はã€?æŒ?®šしなã�? ですã?
326             *
327             * @param       colorClm 色æ–?­—å?でæŒ?®šするå?合ã?カラãƒ?��
328             */
329            public void setColorClm( final String colorClm ) {
330                    putParam( "COLOR_CLM" , nval( getRequestParameter( colorClm ),COLOR_CLM ) );
331            }
332    
333            /**
334             * 【TAG】レコード単位に、ã?ウスオーバã?時ã?Tips表示を行うカラãƒ?‚’æŒ?®šしまã�?初期値:æŒ?®šしなã�?ã€?
335             *
336             * @og.tag
337             * レコード単位に、画像にマウスオーバã?時ã?ãƒ??ルチップ表示のためのãƒ??タを作æ?しますã?
338             * HTMLのareaタグの alt 属æ?をå?力しますã?
339             *
340             * 通常は、è¤?•°のæ–?­—å?を使用しますã?で、viewMarker タグ等で整形してくださいã€?
341             * 何もæŒ?®šしなã�??合ã?、リンクがなければ、なにもå?力しませんã€?
342             * 初期値はã€?æŒ?®šしなã�? ですã?
343             *
344             * @param       tipsClm マウスオーバã?時ã?Tips表示を行うカラãƒ?��
345             */
346            public void setTipsClm( final String tipsClm ) {
347                    putParam( "TIPS_CLM" , nval( getRequestParameter( tipsClm ),TIPS_CLM ) );
348            }
349    
350            /**
351             * 【TAG】レコード単位に、クリãƒ?‚«ブルリンクを設定するカラãƒ?‚’æŒ?®šしまã�?初期値:æŒ?®šしなã�?ã€?
352             *
353             * @og.tag
354             * レコード単位に、画像にクリãƒ?‚«ブルリンクを設定するためã?ãƒ??タを作æ?しますã?
355             * HTMLのareaタグ の href 属æ?をå?力しますã?
356             *
357             * 通常は、viewLink タグ等でリンクを作æ?してくださいã€?
358             * 何もæŒ?®šしなã�??合ã?、Tipsがなければ、なにもå?力しませんã€?
359             * 初期値はã€?æŒ?®šしなã�? ですã?
360             *
361             * @param       linkClm クリãƒ?‚«ブルリンクを設定するカラãƒ?��
362             */
363            public void setLinkClm( final String linkClm ) {
364                    putParam( "LINK_CLM" , nval( getRequestParameter( linkClm ),LINK_CLM ) );
365            }
366    
367            /**
368             * 【TAG】カラーの凡例を使用するかどã�?�‹[true/false]を指定しまã�?初期値:{@og.value #USE_LEGEND})ã€?
369             *
370             * @og.tag
371             * 状況コードã?またã?、色æ–?­—å?等でグラフ作æ?した場合ã?色に対する凡例を使用するかどã�?�‹を指定しますã?
372             * 凡例ã?表示位置は、グラフã?上å?でã€?¼‘レコードå?出力しますã?
373             *
374             * 初期値はã€?{@og.value #USE_LEGEND}" ですã?
375             *
376             * @param       useLegend カラーの凡例を使用するかどã�?�‹[true/false]
377             */
378            public void setUseLegend( final String useLegend ) {
379                    putParam( "USE_LEGEND" , nval( getRequestParameter( useLegend ),USE_LEGEND ) );
380            }
381    
382            /**
383             * 【TAG】ラベル表記部のæœ?¤§サイズをpxでæŒ?®šしまã�?初期値:{@og.value #MAX_LABEL_WIDTH})ã€?
384             *
385             * @og.tag
386             * 画像ã??‘行ã?、ラベル表記部と、タイãƒ?ƒ�ャート部にåˆ?�‹れますã?
387             * そã?、ラベル表記部のæœ?¤§サイズを指定しますã?
388             * 何もæŒ?®šしなければ、可変長サイズ?ˆラベルの大きさに合わせた値?‰になりますã?
389             * 単位ã? px ですã???xは記述不要ですï¼?
390             * 初期値はã€?{@og.value #MAX_LABEL_WIDTH}" ですã?
391             *
392             * @param       maxLblWidth ラベル表記部のæœ?¤§サイズ(px)
393             */
394            public void setMaxLabelWidth( final String maxLblWidth ) {
395                    putPxParam( "MAX_LABEL_WIDTH" , maxLblWidth , MAX_LABEL_WIDTH );
396            }
397    
398            /**
399             * 【TAG】タイãƒ?¡¨記部のæœ?¤§サイズをpxでæŒ?®šをpxでæŒ?®šしまã�?初期値:{@og.value #MAX_TIME_WIDTH})ã€?
400             *
401             * @og.tag
402             * 画像ã??‘行ã?、ラベル表記部と、タイãƒ?ƒ�ャート部にåˆ?�‹れますã?
403             * そã?タイãƒ?ƒ�ャート部のæœ?¤§サイズを指定しますã?
404             * こã?å¹??、ここでæŒ?®šしたå¹?�«固定されるため、時間ç¯?›²が多けれã?ã€?¼‘時間当たりã?表示å¹?�Œ
405             * 小さくなりますã?
406             * たとえã?ã€?H??0H=12H ã‚?600px で表示すればã€?¼‘時é–??•0px になりますしã€?4H 表示ならã?ã€?
407             * 半å?の ?’5px ã€?H ならã?、å?の 100px がã??‘時間ã?表示å¹?�«なりますã?
408             *
409             * 単位ã? px ですã???xは記述不要ですï¼?
410             * 初期値はã€?{@og.value #MAX_TIME_WIDTH}" ですã?
411             *
412             * @param       maxTmWidth タイãƒ?¡¨記部のæœ?¤§サイズ(px)
413             */
414            public void setMaxTimeWidth( final String maxTmWidth ) {
415                    putPxParam( "MAX_TIME_WIDTH" , maxTmWidth , MAX_TIME_WIDTH );
416            }
417    
418            /**
419             * 【TAG】1行ã?タイãƒ?ƒ�ャートã?å¹?‚’pxでæŒ?®šしまã�?初期値:{@og.value #CHART_HEIGHT})ã€?
420             *
421             * @og.tag
422             * 画像ã??‘行ã?間隔は、上下ã?RECODE_MARGIN と、このチャート本体ã?å¹?�«なりますï¼?HART_HEIGHT?‹RECODE_MARGIN?Š2)ã?
423             * ここでは、チャート本体ã?å¹?‚’æŒ?®šしますã?
424             *
425             * 単位ã? px ですã???xは記述不要ですï¼?
426             * 初期値はã€?{@og.value #CHART_HEIGHT}" ですã?
427             *
428             * @param       chartHeight タイãƒ?ƒ�ャートã?å¹?
429             */
430            public void setChartHeight( final String chartHeight ) {
431                    putPxParam( "CHART_HEIGHT" , chartHeight , CHART_HEIGHT );
432            }
433    
434            /**
435             * 【TAG】イメージ作æ?の 全体テーブルの隙間?ˆパãƒ?‚£ング?‰をpxでæŒ?®šしまã�?初期値:{@og.value #CHART_PADDING})ã€?
436             *
437             * @og.tag
438             * イメージは、データの全行を含んだ?‘枚の画像ファイルになりますã?
439             * 画像ファイル自体ã?大きさと、書き込まれた画像ã?大きさは異なりますã?
440             * こã?、padding は、画像ã?周りに、余白としてæŒ?®šするサイズをpx単位でæŒ?®šしますã?
441             * ここでは、上下左右に、均等にとりますã?
442             *
443             * 単位ã? px ですã???xは記述不要ですï¼?
444             * 初期値はã€?{@og.value #CHART_PADDING}" ですã?
445             *
446             * @param       padding 全体テーブルの隙間?ˆパãƒ?‚£ング??
447             */
448            public void setPadding( final String padding ) {
449                    putPxParam( "CHART_PADDING" , padding , CHART_PADDING );
450            }
451    
452            /**
453             * 【TAG】1レコードã?æ–?­—やタイãƒ?ƒ�ャートã?マã?ジンをpxでæŒ?®šしまã�?初期値:{@og.value #RECODE_MARGIN})ã€?
454             *
455             * @og.tag
456             * イメージはã€?¼‘レコードづつ書き込まれますが、そのレコードã?å¹??、chartHeight でæŒ?®šされた
457             * タイãƒ?ƒ�ャートã?å¹?¼‹ã?ージン?Šï¼?になりますã?
458             * 同様に、ラベル表記部のæ–?­—ã?書きå?し位置もã?こã?、ã?ージンが適用されますã?
459             * ?ˆ文字ã?場合ã?、上下左右に適用され、チャート部は、上下ã?み適用されますã???
460             *
461             * 単位ã? px ですã???xは記述不要ですï¼?
462             * 初期値はã€?{@og.value #RECODE_MARGIN}" ですã?
463             *
464             * @param       margin タイãƒ?ƒ�ャートã?マã?ジン
465             */
466            public void setMargin( final String margin ) {
467                    putPxParam( "RECODE_MARGIN" , margin , RECODE_MARGIN );
468            }
469    
470            /**
471             * 【TAG】行ã?æœ?¾Œã?æƒ??がã?継続してã�?‚‹として使ã�?�‹どã�?�‹[true/false]を指定しまã�?初期値:{@og.value #USE_LAST_DATA})ã€?
472             *
473             * @og.tag
474             * ãƒ??タはã€?–‹始時刻を与えられ、次のãƒ??タの開始時刻が前のãƒ??タの終äº?™‚刻として
475             * 処ç�?�—てã�?�¾すã?行ã?æœ?¾Œã?ãƒ??タは、表示ç¯?›²ã�?�£ぱã�?�¾で、続いてã�?‚‹と認識するå?合ã?ã€?
476             * こã?値ã‚?true としますã?つまりã?æœ?¾Œã?ãƒ??タは利用されますã?
477             * æœ?¾Œã?ãƒ??タがそこで処ç�?‚’停止したイベントã?場合ã?そã?ãƒ??タは使われませんã€?
478             * そã?場合ã?、false に設定しますã?イベント色としてはã€?不æ?"?ˆ空æ¬?¼�白色??として扱ã�?�¾すã?
479             *
480             * 初期値はã€?{@og.value #USE_LAST_DATA}" ですã?
481             *
482             * @og.rev 5.6.1.1 (2013/02/08) 新規追åŠ?
483             *
484             * @param       useLastData タイãƒ?ƒ�ャートã?マã?ジン
485             */
486            public void setUseLastData( final String useLastData ) {
487                    putPxParam( "USE_LAST_DATA" , useLastData , USE_LAST_DATA );
488            }
489    
490            /**
491             * 【TAG】ラベル表記部のフォントをæŒ?®šします[PLAIN,BOLD,ITALIC,BOLD_ITALIC](初期値:{@og.value #FONT_STYLE})ã€?
492             *
493             * @og.tag
494             * ラベル表記部のフォントをæŒ?®šしますã?ここでは、PLAIN,BOLD,ITALIC,BOLD_ITALIC の中からしか選べませんã€?
495             *
496             * 初期値はã€?{@og.value #FONT_STYLE}" ですã?
497             *
498             * @param       fontStyle Font クラスのスタイル定数[PLAIN,BOLD,ITALIC,BOLD_ITALIC]
499             */
500    //      public void setFontStyle( final String fontStyle ) {
501    //              String fStyle = nval( getRequestParameter( fontStyle ),FONT_STYLE );
502    //              if( fStyle != null ) {
503    //                      try {
504    //                              ENUM_FONT_STYLE enumFont = ENUM_FONT_STYLE.valueOf( fStyle );
505    //                              putParam( "FONT_STYLE" , enumFont.getStyle() );
506    //                      }
507    //                      catch( IllegalArgumentException ex ) {
508    //                              String errMsg = "フォント名は、以下ã?ç¯?›²でæŒ?®šしてくださいã€?"
509    //                                                      + Arrays.toString( ENUM_FONT_STYLE.values() ) + "]"
510    //                                                      + HybsSystem.CR 
511    //                                                      + " fontStyle=" + fontStyle ;
512    //                              throw new HybsSystemException( errMsg,ex );
513    //                      }
514    //              }
515    //      }
516    
517            /**
518             * 【TAG】ラベル表記部のフォントサイズを指定しまã�?初期値:{@og.value #FONT_SIZE})ã€?
519             *
520             * @og.tag
521             * ラベル表記部のフォントサイズを指定しますã?
522             *
523             * 初期値はã€?{@og.value #FONT_SIZE}" ですã?
524             *
525             * @param       fontSize フォントサイズ
526             */
527    //      public void setFontSize( final String fontSize ) {
528    //              putParam( "FONT_SIZE" , nval( getRequestParameter( fontSize ),FONT_SIZE ) );
529    //      }
530    
531            /**
532             * 引数の "px" æ–?­—å?を取り除くå?通メソãƒ?ƒ‰ã€?
533             *
534             * æŒ?®šã?パラメータにã€?px" æ–?­—å?を含ã‚??合ã?"px"æ–?­—å?以降を削除しますã?
535             * HTML上には、px を付けた方がå?かりã‚?�™ã�?‚±ースがè?えられるためですã?
536             * ここでは、putParam( String , String ) するためにå¿?¦�な、キー、å?期å?も指定する事でã€?
537             * 呼び出しå?の処ç�?‚’簡ç´?Œ–しますã?
538             * こã?処ç�?�§は、val 引数をã?getRequestParameter 処ç�?�—、結果をã?nval で 初期値設定したあとã€?
539             * null 判定で、null でなければ、putParam にセãƒ?ƒˆする処ç�?‚’おこなã�?�¾すã?
540             * こã?処ç�??中でã€?px" 削除処ç�?‚’おこなã�?�¾すã?
541             *
542             * @param       key putParam する場合ã?キー
543             * @param       val "px"æ–?­—å?があれã?、取り除く引数ã€?
544             * @param       def 引数ã�?null の場合ã?、å?期å?
545             * @see         #putParam( String , String )
546             */
547            private void putPxParam( final String key , final String val , final String def ) {
548                    String tmp = nval( getRequestParameter( val ),def );
549                    if( tmp != null ) {
550                            int idx = tmp.indexOf( "px" );
551                            if( idx > 0 ) { tmp = tmp.substring( 0,idx ); }
552    
553                            putParam( key , tmp );
554                    }
555            }
556    
557            /**
558             * タグの名称をã?返しますã?
559             * 自åˆ??身のクラス名よりã?自動的に取り出せなã�?�Ÿめã?こã?メソãƒ?ƒ‰をオーバã?ライドしますã?
560             *
561             * @return  タグの名称
562             */
563            @Override
564            protected String getTagName() {
565                    return "timeBarParam" ;
566            }
567    
568            /**
569             * シリアライズ用のカスタãƒ?‚·リアライズ書き込みメソãƒ?ƒ‰
570             *
571             * @serialData ä¸?ƒ¨のオブジェクトã?、シリアライズされませんã€?
572             *
573             * @param       strm    ObjectOutputStreamオブジェクãƒ?
574             * @throws IOException  入出力エラーが発生したå?å�?
575             */
576            private void writeObject( final ObjectOutputStream strm ) throws IOException {
577                    strm.defaultWriteObject();
578            }
579    
580            /**
581             * シリアライズ用のカスタãƒ?‚·リアライズ読み込みメソãƒ?ƒ‰
582             *
583             * ここでは、transient 宣è¨?�•れたå†?ƒ¨変数のå†??初期化がå¿?¦�なフィールドã?み設定しますã?
584             *
585             * @serialData ä¸?ƒ¨のオブジェクトã?、シリアライズされませんã€?
586             *
587             * @param       strm    ObjectInputStreamオブジェクãƒ?
588             * @see #release2()
589             * @throws IOException  シリアライズに関する入出力エラーが発生したå?å�?
590             * @throws ClassNotFoundException       クラスを見つけることができなかったå?å�?
591             */
592            private void readObject( final ObjectInputStream strm ) throws IOException , ClassNotFoundException {
593                    strm.defaultReadObject();
594            }
595    }