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 static org.opengion.fukurou.util.StringUtil.nval ;
019    import org.opengion.hayabusa.common.HybsSystem;
020    import org.opengion.hayabusa.common.HybsSystemException;
021    import org.opengion.hayabusa.io.ChartCreate;
022    import org.opengion.hayabusa.io.ChartDataset;
023    import org.opengion.hayabusa.io.HybsURLTagFragmentGenerator;
024    
025    import java.io.File;
026    import java.io.IOException;
027    import java.io.ObjectOutputStream;
028    import java.io.ObjectInputStream;
029    import java.util.List;
030    import java.util.ArrayList;
031    import java.util.Map ;
032    import java.util.HashMap ;
033    
034    import org.jfree.chart.JFreeChart;
035    import org.jfree.chart.ChartUtilities;
036    
037    import org.jfree.chart.ChartRenderingInfo;
038    import org.jfree.chart.entity.StandardEntityCollection;
039    import org.jfree.chart.imagemap.ImageMapUtilities;
040    import org.jfree.chart.imagemap.StandardToolTipTagFragmentGenerator;
041    import org.jfree.chart.imagemap.ToolTipTagFragmentGenerator;
042    import org.jfree.chart.imagemap.URLTagFragmentGenerator;
043    
044    /**
045     * BODYéƒ¨ã«æŒ?®šã?SQLã®æ¤œç´¢çµæžœã‚’ãƒãƒ£ãƒ¼ãƒ?å†??棒ã?ç·?ã§è¡¨ç¤ºã™ã‚‹ã‚¿ã‚°ã§ã™ã?
046     *
047     * ãƒãƒ£ãƒ¼ãƒˆåŒ–ã«ã¯ã€JFreeChart (http://www.jfree.org/jfreechart/) を使用ã—ã¦ã?¾ã™ã?
048     * ãƒãƒ£ãƒ¼ãƒˆã?種類ã?ã€chartDataset ã‚¿ã‚°ã§æŒ?®šã—ã¾ã™ã?ã“れã¯ã€è¤?•°ã®ç•°ãªã‚‹ãƒãƒ£ãƒ¼ãƒˆã‚’
049     * åˆæ?表示ã™ã‚‹æ©Ÿè?ãŒã?JFreeChart ã«ã‚る為ã§ã™ã?ãŸã ã—ã?å°‚é–€çš?«ã¯ã€CategoryDataset ã®ã¿
050     * ã?¾ã¯ã€åˆæˆãŒå¯èƒ½ã§ã™ã?
051     * 処ç??実行ã«ã‚ãŸã‚Šã?キャãƒ?‚·ãƒ¥ãŒæœ‰åй(useCache="true")ã§ã‚れã°ã€ã‚­ãƒ£ãƒ?‚·ãƒ¥ãƒ??ã‚¿ã‚?
052     * 使用ã—ã¾ã™ã?キャãƒ?‚·ãƒ¥ã¯ã€masterKey 属æ?ã§æŒ?®šã•れãŸã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰æ¯Žã«ã€JFreeChart
053     * オブジェクトをキャãƒ?‚·ãƒ¥ã—ã¾ã™ã?ã¾ãŸã?seriesPikup é•ã„ã®å ´åˆã?ã€å?検索ã›ãšã«ã€?
054     * キャãƒ?‚·ãƒ¥ãŒä½¿ç”¨ã§ãã¾ã™ã?ã•らã«ã€seriesPikup ãŒåŒã˜å?å?masterKey ã‚‚åŒã?ã¯ã€?
055     * ã™ã§ã«ç”»åƒãƒ•ァイルãŒä½œæ?済ã¿ãªã®ã§ã€ç”»åƒãƒ•ァイルã®ã¿ã‚’è¿”ã—ã¾ã™ã?
056     *
057     * å?±žæ?ã¯ã€{@XXXX} 変数ãŒä½¿ç”¨ã§ãã¾ã™ã?
058     * ã“れã¯ã€ServletRequest ã‹ã‚‰ã€XXXX をキーã«å€¤ã‚’å–りå?ã?ã“ã?変数ã«å‰²ã‚Šå½“ã¦ã¾ã™ã?
059     * ã¤ã¾ã‚Šã?ã“ã?XXXXをキーã«ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚Œã?ã€ã“ã®å¤‰æ•°ã«å€¤ã‚’ã‚»ãƒ?ƒˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã?
060     *
061     * @og.formSample
062     * â—å½¢å¼ï¼?lt;og:chartCreate title="…" … />
063     * â—body?šã‚ã‚?chartDataset)
064     *
065     * â—Tag定義??
066     *   <og:chartCreate
067     *       title              ã€TAG】ãƒãƒ£ãƒ¼ãƒˆã?タイトルをセãƒ?ƒˆã—ã¾ã?
068     *       width              ã€TAG】ãƒãƒ£ãƒ¼ãƒˆã?横å¹?‚’ã‚»ãƒ?ƒˆã—ã¾ã?åˆæœŸå€¤:200)
069     *       height             ã€TAG】ãƒãƒ£ãƒ¼ãƒˆã?縦å¹?‚’ã‚»ãƒ?ƒˆã—ã¾ã?åˆæœŸå€¤:200)
070     *       domainLabel        ã€TAG】ãƒãƒ£ãƒ¼ãƒˆã?ドメインラベルを指定ã—ã¾ã?
071     *       showLegend         ã€TAG】ãƒãƒ£ãƒ¼ãƒˆã?凡例ã?表示å¯å¦[true/false]ã‚’ã‚»ãƒ?ƒˆã—ã¾ã?åˆæœŸå€¤:true[表示ã™ã‚‹])
072     *       rectangleEdge      ã€TAG】ãƒãƒ£ãƒ¼ãƒˆã?表示ç®?‰€ã‚’ã?[TOP/BOTTOM/RIGHT/LEFT]ã§æŒ?®šã—ã¾ã?åˆæœŸå€¤:BOTTOM)
073     *       plotOrientation    ã€TAG】ãƒãƒ£ãƒ¼ãƒˆã?プロãƒ?ƒˆ(Plot)表示方å‘ã‚’ã€[VERTICAL(or V),HORIZONTAL(or H)]ã§æŒ?®šã—ã¾ã?
074     *       chartBackColor     ã€TAG】ãƒãƒ£ãƒ¼ãƒˆã?背景色を指定ã—ã¾ã?
075     *       plotBackColor      ã€TAG】ãƒãƒ£ãƒ¼ãƒˆã?æç”»é ˜åŸŸã®è‰²ã‚’指定ã—ã¾ã?
076     *       rotationLabel      ã€TAG】ãƒãƒ£ãƒ¼ãƒˆã?ã‚«ãƒ?‚´ãƒªãƒ¼ãƒ©ãƒ™ãƒ«ã®æ–¹å‘ã‚’æŒ?®šã—ã¾ã™[1:180度 ã€?:90度 ã€?:60度 ã€?:45度 ã€?:30度 ?¥?¥?¥ ](åˆæœŸå€¤:3:60度)
077     *       useVerticalLabels  ã€TAG】横軸ラベルã®è¡¨ç¤ºå‘ãを縦ã«ã™ã‚‹ã‹ã©ã?‹[false/true]を指定ã—ã¾ã?åˆæœŸå€¤:false)
078     *       domainMarker       ã€TAG】ãƒãƒ£ãƒ¼ãƒˆã?横軸ã®å€¤(ドメイン)ã«åˆè?ã™ã‚‹ä½ç½®ã«ãƒžã?カーラインを設定ã—ã¾ã?
079     *       useDomainLabel     ã€TAG】横軸ラベルã®ãƒ©ãƒ™ãƒ«ã‚’表示ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:true)
080     *       useMarkerLabel     ã€TAG】ã?ーカーラインã«ã€ãã®è¨­å®šå?を表示ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:true)
081     *       useCache           ã€TAG】JFreeChart オブジェクトをキャãƒ?‚·ãƒ¥ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)
082     *       masterKey          ã€TAG】キャãƒ?‚·ãƒ¥ç”¨ãƒžã‚¹ã‚¿ã‚­ãƒ¼ã‚’指定ã—ã¾ã?
083     *       seriesPikup        ã€TAG】è¤?•°ã‚·ãƒªãƒ¼ã‚ºã®ãƒ”ックアãƒ??を行ã†å ´åˆã?シリーズ番å·ã‚’指定ã—ã¾ã?
084     *       imageMapUrl        ã€TAG】クリãƒ?‚«ãƒ–ル・マップ用URLを指定ã—ã¾ã?
085     *       imageMapTarget     ã€TAG】クリãƒ?‚«ãƒ–ル・マップ用TARGETを指定ã—ã¾ã?
086     *       categoryMargin     ã€TAG】カãƒ?‚´ãƒªãƒžã?ジン(0.0??.0)を指定ã—ã¾ã?
087     *       lowerMargin        ã€TAG】下方マã?ジン(0.0??.0)を指定ã—ã¾ã?
088     *       upperMargin        ã€TAG】上方マã?ジン(0.0??.0)を指定ã—ã¾ã?
089     *       useDomainLine      ã€TAG】横軸ã®ã‚°ãƒªãƒ?ƒ‰è¡¨ç¤ºæœ‰ç„¡(垂直ç·?を指定ã—ã¾ã?åˆæœŸå€¤:false)
090     *       domainLineColor    ã€TAG】横軸ã®ã‚°ãƒªãƒ?ƒ‰ç·šã?色を指定ã—ã¾ã?
091     *       categorySkip       ã€TAG】横軸ラベルをスキãƒ??ã™ã‚‹é–“隔を指定ã—ã¾ã?
092     *       categoryCutNo      ã€TAGã€‘æ¨ªè»¸ãƒ©ãƒ™ãƒ«ã®æ–?­—ä½ç½®æŒ?®šã?キーブレイクを指定ã—ã¾ã?
093     *       categoryAnchor     ã€TAG】横軸ã®ã‚°ãƒªãƒ?ƒ‰(垂直ç·?ã®æ›¸ãå?ã—ä½ç½®(START,MIDDLE,END)を指定ã—ã¾ã?
094     *       useRangeLine       ã€TAG】縦軸ã®ã‚°ãƒªãƒ?ƒ‰è¡¨ç¤ºæœ‰ç„¡(æ°´å¹³ç·?を指定ã—ã¾ã?åˆæœŸå€¤:true)
095     *       useToolTip         ã€TAG】ツールãƒãƒƒãƒ—スã®ä½¿ç”¨å¯å¦[true:利用ã™ã‚‹/false:利用ã—ãªã„]を指定ã—ã¾ã?åˆæœŸå€¤:false)
096     *       rangeLineColor     ã€TAG】縦軸ã®ã‚°ãƒªãƒ?ƒ‰ç·šã?色を指定ã—ã¾ã?
097     *       rangeSkip          ã€TAG】縦軸ã®ã‚°ãƒªãƒ?ƒ‰ç·?æ°´å¹³ç·?をスキãƒ??ã™ã‚‹é–“隔を指定ã—ã¾ã?
098     *       dateAxisFormat     ã€TAG】Time,XYTime Polt関係ã?時間軸を表ã™å?åˆã?フォーマットをæŒ?®šã—ã¾ã?åˆæœŸå€¤:MM/dd)
099     *       debug              ã€TAG】デãƒãƒƒã‚°æƒ??ã‚’å?力ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)
100     *   >   ... Body ...
101     *   </og:chartCreate>
102     *
103     * â—使用ä¾?
104     *      <og:chartCreate
105     *          title       = "JFreeChart Test"             ãƒãƒ£ãƒ¼ãƒˆã‚¿ã‚¤ãƒˆãƒ«
106     *          domainLabel = "ドメインラベル"              横軸ラベル
107     *          width       = "200"                         ãƒãƒ£ãƒ¼ãƒˆè¡¨ç¤ºå¹?
108     *          height      = "200"                         ãƒãƒ£ãƒ¼ãƒˆè¡¨ç¤ºé«˜ã•
109     *          showLegend  = "[true/false]"                凡例ã?表示å¯å¦[true/false]
110     *          rectangleEdge   = "[TOP|BOTTOM|RIGHT|LEFT]" 凡例ã?表示ç®?‰€
111     *          plotOrientation = "[VERTICAL|HORIZONTAL]"   ãƒãƒ£ãƒ¼ãƒˆã?軸表示方å?
112     *          chartBackColor  = "WHITE"                   背景色
113     *          plotBackColor   = "LIGHT_GRAY"              æç”»é ˜åŸŸè‰²
114     *          rotationLabel   = "3"                       横軸ラベルã®å‚¾ã?
115     *          useVerticalLabels = "false"                                 横軸ラベルã®å‘ã(true:縦/false:横)
116     *          domainMarker    = "KING"                    横軸ã®ãƒžã?カーライン(縦æ£?
117     *          useMarkerLabel  = "[true/false]"            マã?ã‚«ãƒ¼ãƒ©ã‚¤ãƒ³ã®æ–?­—有無
118     *          useDomainLabel  = "[true/false]"            横軸ラベルã®è¡¨ç¤ºæœ‰ç„¡
119     *          categorySkip    = "3"                       横軸ラベルをスキãƒ??ã™ã‚‹é–“éš”
120     *          categoryCutNo   = "6"                       æ¨ªè»¸ãƒ©ãƒ™ãƒ«ã®æ–?­—ä½ç½®æŒ?®šã?キーブレイク
121     *          categoryAnchor  = "[START|MIDDLE|END]"      横軸ã®ã‚°ãƒªãƒ?ƒ‰(垂直ç·?ã®æ›¸ãå?ã—ä½ç½®
122     *          useDomainLine   = "[false/true]"            横軸ã®ã‚°ãƒªãƒ?ƒ‰è¡¨ç¤ºæœ‰ç„¡(垂直ç·?
123     *          domainLineColor = "LIGHT_GRAY"              横軸ã®ã‚°ãƒªãƒ?ƒ‰ç·šã?色
124     *          useRangeLine    = "[true/false]"            縦軸ã®ã‚°ãƒªãƒ?ƒ‰è¡¨ç¤ºæœ‰ç„¡(æ°´å¹³ç·?
125     *          rangeLineColor  = "LIGHT_GRAY"              縦軸ã®ã‚°ãƒªãƒ?ƒ‰ç·šã?色
126     *          rangeSkip       = "-5"                      縦軸ã®ã‚°ãƒªãƒ?ƒ‰(æ°´å¹³ç·?をスキãƒ??ã™ã‚‹é–“éš”
127     *          useCache        = "[false|true]"            キャãƒ?‚·ãƒ¥ã®æœ‰ç„¡
128     *          masterKey       = "{@XXXX}"            キャãƒ?‚·ãƒ¥ç”¨ãƒžã‚¹ã‚¿ã‚­ãƒ¼
129     *          seriesPikup     = "2"                       ピックアãƒ??ã™ã‚‹ã‚·ãƒªãƒ¼ã‚ºNo
130     *          imageMapUrl     = "link.jsp,BLOCK"          クリãƒ?‚«ãƒ–ル・マップ用URL
131     *          imageMapTarget  = "CONTENTS"                クリãƒ?‚«ãƒ–ル・マップ用TARGET
132     *          categoryMargin  = "[0.0??.0]"              ã‚«ãƒ?‚´ãƒªãƒžã?ジン(0.0??.0)
133     *          lowerMargin     = "[0.0??.0]"              下方マã?ジン(0.0??.0)
134     *          upperMargin     = "[0.0??.0]"              上方マã?ジン(0.0??.0)
135     *       >
136     *              <og:chartDataset
137     *                  chartType   = "{@chartType}"
138     *                  valueLabel  = "{@valueLabel}"
139     *                  lowerBound  = "{@lowerBound}"
140     *                  upperBound  = "{@upperBound}"
141     *                  markValues  = "{@markValues}"
142     *                  markColors  = "{@markColors}"
143     *                  useGradient   = "{@useGradient}"
144     *                  shapesVisible = "{@shapesVisible}"
145     *                  useDottedLine = "{@useDottedLine}"
146     *                  seriesColors  = "{@seriesColors}"
147     *                  valueLabelsVisible = "[true|false]"
148     *                  valueMarksVisible  = "[true|false]"
149     *              >
150     *                         {@SQL}
151     *              </og:chartDataset>
152     *      </og:chartCreate>
153     *
154     *    è¤?•°ã®ã‚°ãƒ©ãƒ•ã‚’é‡ã?åˆã‚ã›ã‚‹å ´åˆã?ã€chartDataset ã‚¿ã‚°ã‚?chartCreate ã®BODY部ã«
155     *    è¤?•°è¨˜è¿°ã—ã¾ã™ã?
156     *      <og:chartCreate
157     *          title       = "{@title}"
158     *          domainLabel = "{@domainLabel}"
159     *          width       = "{@width}"
160     *          height      = "{@height}" >
161     *              <og:chartDataset
162     *                  chartType   = "{@chartType1}"
163     *                  valueLabel  = "{@valueLabel1}"
164     *                  lowerBound  = "{@lowerBound1}"
165     *                  upperBound  = "{@upperBound1}"
166     *                  markValues  = "{@markValues1}"
167     *                  markColors  = "{@markColors1}"
168     *              >
169     *                         {@SQL1}
170     *              </og:chartDataset>
171     *              <og:chartDataset
172     *                  chartType   = "{@chartType2}"
173     *                  valueLabel  = "{@valueLabel2}"
174     *                  lowerBound  = "{@lowerBound2}"
175     *                  upperBound  = "{@upperBound2}"
176     *                  markValues  = "{@markValues2}"
177     *                  markColors  = "{@markColors2}"
178     *              >
179     *                         {@SQL2}
180     *              </og:chartDataset>
181     *      </og:chartCreate>
182     *
183     *    rectangleEdge属æ? ã¯ã€å?例ã?表示ç®?‰€ã‚’示ã™ã?RectangleEdge クラスã®å€¤ã‚’設定ã—ã¾ã™ã?
184     *    [rectangleEdge属æ?]
185     *      TOP      上å?
186     *      BOTTOM   下å?
187     *      RIGHT    å³å´
188     *      LEFT     å·¦å´
189     *
190     *    plotOrientation属æ? ã¯ã€ãƒãƒ£ãƒ¼ãƒˆã?軸表示方å‘を設定ã—ã¾ã™ã?
191     *    [renderer属æ?]
192     *      VERTICAL    縦方å?
193     *      HORIZONTAL  横方å?
194     *
195     * @og.group ç”»é¢è¡¨ç¤º
196     *
197     * @version  0.9.0      2007/06/19
198     * @author       Nakamura
199     * @since        JDK1.4,
200     */
201    public class ChartCreateTag extends CommonTagSupport {
202            //* ã“ã?プログラãƒ??VERSIONæ–?­—å?を設定ã—ã¾ã™ã?       {@value} */
203            private static final String VERSION = "4.0.0.0 (2007/06/29)" ;
204    
205            private static final long serialVersionUID = 4000 ;     // 2007/06/29
206    
207            private static final String FILE_URL = HybsSystem.sys( "CHART_TEMP_DIR" );
208    
209            private         List<ChartDataset>        chartDataset    = null;
210    
211            private static final String CHART_CACHE_KEY = HybsSystem.JF_CHART_CACHE_KEY;
212    
213            private String  title                   = null;
214            private int             width                   = 200;
215            private int             height                  = 200;
216            private String  domainLabel             = null;
217            private boolean showLegend              = true;
218            private String  rectangleEdge   = "BOTTOM";
219            private String  plotOrientation = "VERTICAL";
220            private String  chartBackColor  = null;                 // 背景色ã®è¨­å®?
221            private String  plotBackColor   = null;                 // æç”»é ˜åŸŸã®è¨­å®?
222            private int             rotationLabel   = 3;                    // 横軸ラベルã®å‚¾ã?1:180度 ã€?:90度 ã€?:60度 ã€?:45度 ã€?:30度 ?¥?¥?¥ )
223            private boolean useVerticalLabels = false;              // 5.6.4.3 (2013/05/24) 横軸ラベルã®è¡¨ç¤ºå‘ã(横書ã?false/縦書ã?true) 
224            private String  domainMarker    = null;                 // 横軸ã®ãƒžã?カーライン
225            private boolean useDomainLabel  = true;                 // 横軸ラベルã®è¡¨ç¤ºæœ‰ç„¡
226            private boolean useMarkerLabel  = true;                 // マã?カーライン時ã?æ–?­—有無
227            private boolean useCache                = false;                // JFreeChart オブジェクトをキャãƒ?‚·ãƒ¥ã™ã‚‹ã‹ã©ã?‹
228            private int             seriesPikup             = -1;                   // ピックアãƒ??ã™ã‚‹ã‚·ãƒªãƒ¼ã‚ºç•ªå·
229            private String  masterKey               = null;                 // キャãƒ?‚·ãƒ¥ç”¨ãƒžã‚¹ã‚¿ã‚­ãƒ¼
230            private transient Map<String,ChartCache>  map     = null;         // キャãƒ?‚·ãƒ¥ç”¨ãƒžãƒƒãƒ?
231            private transient ChartCache    cache           = null;                 // キャãƒ?‚·ãƒ¥
232            private String          imgTag          = null;                 // キャãƒ?‚·ãƒ¥ç”¨ç”»åƒãƒ•ァイル
233            private String  imageMapUrl             = null;                 // クリãƒ?‚«ãƒ–ル・マップ用URL
234            private String  imageMapTarget  = null;                 // クリãƒ?‚«ãƒ–ル・マップ用TARGET
235            // 3.5.4.7 (2004/02/06) 実行時間測定用ã®DIVè¦ç´?‚’出力ã—ã¾ã™ã?
236            private long dyStart = 0;
237    
238            // 4.0.2.0 (2007/12/20)
239            private String          categoryMargin  = null;         // ã‚«ãƒ?‚´ãƒªãƒžã?ジン(0.0??.0)
240            private String          lowerMargin             = null;         // 下方マã?ジン(0.0??.0)
241            private String          upperMargin             = null;         // 上方マã?ジン(0.0??.0)
242    //      private String[]        shapeColors             = null;         // 4.0.3.0 (2008/01/07) ãƒ??タ毎ã«Shapeã‚’å?り替ãˆã‚‹æ™‚ã?色æŒ?®?
243    
244            private boolean useDomainLine   = false;                // 4.0.3.0 (2008/01/07) 横軸ã®ã‚°ãƒªãƒ?ƒ‰è¡¨ç¤ºæœ‰ç„¡(垂直ç·?
245            private String  domainLineColor = null;                 // 4.0.3.0 (2008/01/07) 横軸ã®ã‚°ãƒªãƒ?ƒ‰ç·šã?色
246            private boolean useRangeLine    = true;                 // 4.0.3.0 (2008/01/07) 縦軸ã®ã‚°ãƒªãƒ?ƒ‰è¡¨ç¤ºæœ‰ç„¡(æ°´å¹³ç·?
247            private String  rangeLineColor  = null;                 // 4.0.3.0 (2008/01/07) 縦軸ã®ã‚°ãƒªãƒ?ƒ‰ç·šã?色
248            private int             categorySkip    = 1;                    // 4.0.3.0 (2008/01/07) 横軸ラベルをスキãƒ??ã™ã‚‹é–“éš”
249            private int             categoryCutNo   = -1;                   // 4.1.1.0 (2008/02/04) æ¨ªè»¸ãƒ©ãƒ™ãƒ«ã®æ–?­—ä½ç½®æŒ?®šã?キーブレイク
250            private String  categoryAnchor  = null;                 // 4.1.1.0 (2008/02/14) 横軸ã®ã‚°ãƒªãƒ?ƒ‰(垂直ç·?ã®æ›¸ãå?ã—ä½ç½®(START,MIDDLE,END)
251    //      private double  lineOffset              = 0.0;                  // 4.1.1.0 (2008/02/04) DomainLineã®æ›¸ãå?ã—ä½ç½®
252            private int             rangeSkip               = 1;                    // 4.1.1.0 (2008/02/04) 縦軸ã®ã‚°ãƒªãƒ?ƒ‰ã‚’スキãƒ??ã™ã‚‹é–“éš”
253            private boolean useToolTip              = false;                // 4.3.1.0 (2008/08/09) ãƒ??ルãƒãƒƒãƒ—スを利用ã™ã‚‹ã?
254    
255            private String  dateAxisFormat  = "MM/dd";              // 5.6.1.0 (2013/02/01) Time,XYTime Polt関係ã?時間軸を表ã™å?åˆã?フォーマッãƒ?
256    
257            /**
258             * Taglibã®é–‹å§‹ã‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doStartTag() ã‚?オーãƒã?ライドã—ã¾ã™ã?
259             *
260             * @return      後続å?ç??æŒ?¤º
261             */
262            @SuppressWarnings(value={"unchecked"})
263            @Override
264            public int doStartTag() {
265                    dyStart = System.currentTimeMillis();
266    
267                    if( useCache ) {
268                            // キャãƒ?‚·ãƒ¥ã‹ã‚‰ã€å–りå?ã™ã?
269                            map = (Map<String,ChartCache>)getSessionAttribute( CHART_CACHE_KEY );
270                            if( map != null ) {
271                                    cache = map.get( masterKey );
272                                    if( cache != null && cache.isAvailable() ) {    // キャãƒ?‚·ãƒ¥æœ‰åй
273                                            String subKey = String.valueOf( seriesPikup );
274                                            // キャãƒ?‚·ãƒ¥ã‹ã‚‰ã€ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’å–りå?ã™ã?存在ã—ãªã‘れã°ã€null
275                                            imgTag = cache.getFileAddress( subKey );
276                                            return(SKIP_BODY);              // キャãƒ?‚·ãƒ¥ä½¿ç”¨
277                                    }
278                            }
279                    }
280    
281                    return EVAL_BODY_BUFFERED;
282            }
283    
284            /**
285             * Taglibã®çµ‚äº?‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doEndTag() ã‚?オーãƒã?ライドã—ã¾ã™ã?
286             *
287             * @og.rev 5.2.1.0 (2010/10/01) debugPrint() メソãƒ?ƒ‰ã®å‡¦ç?¡ä»¶è¦‹ç›´ã?
288             *
289             * @return      後続å?ç??æŒ?¤º
290             */
291            @Override
292            public int doEndTag() {
293    //              if( isDebug() ) { debugPrint(); }
294                    debugPrint();           // 5.2.1.0 (2010/10/01) debugPrint() メソãƒ?ƒ‰è‡ªä½“ã«ã€isDebug() ãŒçµ?¿è¾¼ã¾ã‚Œã¦ã?‚‹ã€?
295    
296                    long queryEnd = System.currentTimeMillis();
297                    jspPrint( "<div id=\"queryTime\" value=\"" + (queryEnd-dyStart) + "\"></div>" );    // 3.5.6.3 (2004/07/12)
298    
299                    // ç”»åƒãƒ•ァイルã®ã‚­ãƒ£ãƒ?‚·ãƒ¥ãŒã‚れã?ã€ãれを返ã™ã€?
300                    if( imgTag != null ) {
301                            jspPrint( imgTag );
302                    }
303                    else {
304                            JFreeChart chart ;
305                            if( cache != null ) {
306                                    // キャãƒ?‚·ãƒ¥ãŒã‚れã?ã€ãƒãƒ£ãƒ¼ãƒˆã‚’å–り出ã™ã?
307                                    chart = cache.getJFreeChart() ;
308                                    // ãƒãƒ£ãƒ¼ãƒˆã?ã€å¤‰æ›´(modifying)ã®ã¿è¡Œã†ã€?
309                                    chart = ChartCreate.modifying( chart,seriesPikup );
310                            }
311                            else {
312                                    // ãƒãƒ£ãƒ¼ãƒˆãŒãªã??ã¾ãŸã?ã€ç„¡åйã«ãªã£ã¦ã?‚‹å ´åˆã?ã€æ–°è¦ä½œæ?ã™ã‚‹ã€?
313                                    ChartCreate chartCreate = create();
314                                    chart = chartCreate.getChart();
315                            }
316    
317                            File file = getTempFile( FILE_URL );
318                            try {
319                                    // クリãƒ?‚«ãƒ–ル・マッãƒ?
320                                    String fname = file.getName();
321                                    String filename = getContextPath() + "/" + FILE_URL + fname;
322                                    String keyword = fname.substring( 0, fname.length() - 4 ); // ".png" åˆ?‚’削除
323                                    ToolTipTagFragmentGenerator toolTipGen = null;
324                                    URLTagFragmentGenerator urlGen = null;
325                                    // 4.3.1.0 (2008/08/09) ãƒ??ルãƒãƒƒãƒ—スã®ãƒžãƒƒãƒ—情報å–å¾?
326                                    if( useToolTip ) {
327                                            toolTipGen = new StandardToolTipTagFragmentGenerator();
328                                    }
329                                    if( imageMapUrl != null ) {
330                                            urlGen = new HybsURLTagFragmentGenerator( imageMapTarget );
331                                    }
332                                    if( ( imageMapUrl != null ) || ( useToolTip ) ) {
333                                            ChartRenderingInfo objCri = new ChartRenderingInfo( new StandardEntityCollection() );
334                                            ChartUtilities.saveChartAsPNG( file, chart, width, height, objCri );
335                                            imgTag = ImageMapUtilities.getImageMap( keyword, objCri, toolTipGen, urlGen ) + makeTag2( filename, keyword );
336                                    }
337                                    else {
338                                            ChartUtilities.saveChartAsPNG( file, chart, width, height );
339                                            imgTag = makeTag2( filename, null );
340                                    }
341                            }
342                            catch(IOException ex) {
343                                    String errMsg = "ファイル I/O ãŒå®Ÿè¡Œã§ãã¾ã›ã‚“ã§ã—ãŸã€?
344                                            + HybsSystem.CR + file + HybsSystem.CR
345                                                    + ex.getMessage();
346                                    throw new HybsSystemException( errMsg,ex );
347                            }
348    
349                            jspPrint( imgTag );
350    
351                            // キャãƒ?‚·ãƒ¥æ™‚ã«ã‚»ãƒ¼ãƒ–ã™ã‚‹ã?
352                            if( useCache ) {
353                                    if( cache == null ) {
354                                            cache = new ChartCache( masterKey );
355                                            cache.setJFreeChart( chart );
356                                    }
357                                    String subKey = String.valueOf( seriesPikup );
358                                    cache.putFileAddress( subKey,imgTag );
359                                    if( map == null ) {
360                                            map = new HashMap<String,ChartCache>();
361                                    }
362                                    map.put( masterKey,cache );
363                                    setSessionAttribute( CHART_CACHE_KEY,map );
364                            }
365                            else {
366                    //              map = (Map<String,ChartCache>)getSessionAttribute( CHART_CACHE_KEY );
367                    //              if( map != null ) { map.clear() ; }
368                                    removeSessionAttribute( CHART_CACHE_KEY );
369                            }
370                    }
371    
372                    // 3.5.4.7 (2004/02/06)
373                    long dyEnd = System.currentTimeMillis();
374                    jspPrint( "<div id=\"viewTime\" value=\"" + (dyEnd-dyStart) + "\"></div>" );        // 3.5.6.3 (2004/07/12)
375                    return EVAL_PAGE;
376            }
377    
378            /**
379             * タグリブオブジェクトをリリースã—ã¾ã™ã?
380             * キャãƒ?‚·ãƒ¥ã•れã¦å†åˆ©ç”¨ã•れるã?ã§ã€ãƒ•ィールドã?åˆæœŸè¨­å®šã‚’行ã„ã¾ã™ã?
381             *
382             * @og.rev 4.0.1.0 (2007/12/13) categoryMarginã€lowerMarginã€upperMargin 属æ?を追åŠ?
383             * @og.rev 4.1.1.0 (2008/02/04) categoryCutNo , categoryAnchor , rangeSkip 属æ?を追åŠ?
384             * @og.rev 5.6.1.0 (2013/02/01) dateAxisFormat 属æ?を追åŠ?
385             * @og.rev 5.6.4.3 (2013/05/24) useVerticalLabels 属æ?を追åŠ?
386             */
387            @Override
388            protected void release2() {
389                    super.release2();
390                    chartDataset    = null;
391                    title                   = null;
392                    width                   = 200;
393                    height                  = 200;
394                    domainLabel             = null;
395                    showLegend              = true;
396                    rectangleEdge   = "BOTTOM";
397                    plotOrientation = "VERTICAL";
398                    chartBackColor  = null;                 // 背景色ã®è¨­å®?
399                    plotBackColor   = null;                 // æç”»é ˜åŸŸã®è¨­å®?
400                    rotationLabel   = 3;                    // 横軸ラベルã®å‚¾ã?1:180度 ã€?:90度 ã€?:60度 ã€?:45度 ã€?:30度 ?¥?¥?¥ )
401                    useVerticalLabels = false;              // 5.6.4.3 (2013/05/24) 横軸ラベルã®è¡¨ç¤ºå‘ã(横書ã?false/縦書ã?true) 
402                    domainMarker    = null;                 // 横軸ã®ãƒžã?カーライン
403                    useDomainLabel  = true;                 // 横軸ラベルã®è¡¨ç¤ºæœ‰ç„¡
404                    useMarkerLabel  = true;                 // マã?カーライン時ã?æ–?­—有無
405                    useCache                = false;                // キャãƒ?‚·ãƒ¥ã™ã‚‹ã‹ã©ã?‹
406                    seriesPikup             = -1;                   // ピックアãƒ??ã™ã‚‹ã‚·ãƒªãƒ¼ã‚ºç•ªå·
407                    masterKey               = null;                 // キャãƒ?‚·ãƒ¥ç”¨ãƒžã‚¹ã‚¿ã‚­ãƒ¼
408                    map                             = null;                 // キャãƒ?‚·ãƒ¥ç”¨ãƒžãƒƒãƒ?
409                    cache                   = null;                 // キャãƒ?‚·ãƒ¥
410                    imgTag                  = null;                 // キャãƒ?‚·ãƒ¥ç”¨ç”»åƒãƒ•ァイル
411                    imageMapUrl             = null;                 // クリãƒ?‚«ãƒ–ル・マッãƒ?
412                    imageMapTarget  = null;                 // クリãƒ?‚«ãƒ–ル・マップ用TARGET
413                    categoryMargin  = null;                 // 4.0.2.0 (2007/12/20) ã‚«ãƒ?‚´ãƒªãƒžã?ジン(0.0??.0)
414                    lowerMargin             = null;                 // 4.0.2.0 (2007/12/20) 下方マã?ジン(0.0??.0)
415                    upperMargin             = null;                 // 4.0.2.0 (2007/12/20) 上方マã?ジン(0.0??.0)
416    //              shapeColors             = null;                 // 4.0.3.0 (2008/01/07) ãƒ??タ毎ã«Shapeã‚’å?り替ãˆã‚‹æ™‚ã?色æŒ?®?
417                    useDomainLine   = false;                // 4.0.3.0 (2008/01/07) 横軸ã®ã‚°ãƒªãƒ?ƒ‰è¡¨ç¤ºæœ‰ç„¡(垂直ç·?
418                    domainLineColor = null;                 // 4.0.3.0 (2008/01/07) 横軸ã®ã‚°ãƒªãƒ?ƒ‰ç·šã?色
419                    useRangeLine    = true;                 // 4.0.3.0 (2008/01/07) 縦軸ã®ã‚°ãƒªãƒ?ƒ‰è¡¨ç¤ºæœ‰ç„¡(æ°´å¹³ç·?
420                    rangeLineColor  = null;                 // 4.0.3.0 (2008/01/07) 縦軸ã®ã‚°ãƒªãƒ?ƒ‰ç·šã?色
421                    categorySkip    = 1;                    // 4.0.3.0 (2008/01/07) 横軸ラベルをスキãƒ??ã™ã‚‹é–“éš”
422                    categoryCutNo   = -1;                   // 4.1.1.0 (2008/02/04) æ¨ªè»¸ãƒ©ãƒ™ãƒ«ã®æ–?­—ä½ç½®æŒ?®šã?キーブレイク
423                    categoryAnchor  = null;                 // 4.1.1.0 (2008/02/14) 横軸ã®ã‚°ãƒªãƒ?ƒ‰(垂直ç·?ã®æ›¸ãå?ã—ä½ç½®(START,MIDDLE,END)
424    //              lineOffset              = 0.0;                  // 4.1.1.0 (2008/02/04) DomainLineã®æ›¸ãå?ã—ä½ç½®
425                    rangeSkip               = 1;                    // 4.1.1.0 (2008/02/04) 縦軸ã®ã‚°ãƒªãƒ?ƒ‰ã‚’スキãƒ??ã™ã‚‹é–“éš”
426                    dateAxisFormat  = "MM/dd";              // 5.6.1.0 (2013/02/01) Time,XYTime Polt関係ã?時間軸を表ã™å?åˆã?フォーマッãƒ?
427            }
428    
429            /**
430             * ãƒãƒ£ãƒ¼ãƒˆã‚’表示ã™ã‚‹ãŸã‚ã®ã‚¿ã‚°ã‚’作æ?ã—ã¾ã™ã?
431             *
432             * @param       filename        ç”»åƒãƒ•ァイル
433             * @param       keyword         クリãƒ?‚«ãƒ–ル・マップã?対応ã¥ã‘る為ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ?
434             *
435             * @return      ã‚¿ã‚°æ–?­—å?
436             */
437            private String makeTag2( final String filename,final String keyword ) {
438                    StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
439    
440                    rtn.append( "<img" );
441                    if( keyword != null ) {
442                            rtn.append( " usemap=\"#").append( keyword ).append( "\"");
443                    }
444                    rtn.append( " width=\""  ).append( width  ).append( "px\"");
445                    rtn.append( " height=\"" ).append( height ).append( "px\"");
446                    rtn.append( " src=\""    ).append( filename ).append( "\" /> ");
447    
448                    return rtn.toString();
449            }
450    
451            /**
452             * ChartCreate ã®ã‚ªãƒ–ジェクトを生æ?ã—ã¾ã™ã?
453             *
454             * @og.rev 4.1.1.0 (2008/02/04) categoryCutNo , categoryAnchor 属æ?を追åŠ?
455             * @og.rev 5.6.1.0 (2013/02/01) dateAxisFormat 属æ?を追åŠ?
456             * @og.rev 5.6.1.0 (2013/02/01) useVerticalLabels 属æ?を追åŠ?
457             *
458             * @return  ChartCreateオブジェク�
459             */
460            private ChartCreate create() {
461                    ChartCreate tempCreate = new ChartCreate();
462    
463                    tempCreate.setTitle( title );
464                    tempCreate.setDomainLabel( domainLabel );
465                    tempCreate.setShowLegend( showLegend );
466                    tempCreate.setRectangleEdge( rectangleEdge );
467                    tempCreate.setPlotOrientation( plotOrientation );
468                    tempCreate.setChartBackColor( chartBackColor );                 // 背景色ã®è¨­å®?
469                    tempCreate.setPlotBackColor( plotBackColor );                   // æç”»é ˜åŸŸã®è¨­å®?
470                    tempCreate.setRotationLabel( rotationLabel );                   // 横軸ラベルã®å‚¾ã?
471                    tempCreate.setUseVerticalLabels( useVerticalLabels );   // 5.6.4.3 (2013/05/24)) ラベルã®è¡¨ç¤ºå‘ã
472                    tempCreate.setDomainMarker( domainMarker );                             // ドメインマã?カー
473                    tempCreate.setUseDomainLabel( useDomainLabel );                 // 横軸ラベルã®è¡¨ç¤ºæœ‰ç„¡
474                    tempCreate.setUseMarkerLabel( useMarkerLabel );                 // マã?カーã®è¨­å®šå?表示
475                    tempCreate.setSeriesPikup( seriesPikup );                               // ピックアãƒ??ã™ã‚‹ã‚·ãƒªãƒ¼ã‚ºç•ªå·
476                    tempCreate.setImageMapUrl( imageMapUrl );                               // クリãƒ?‚«ãƒ–ル・マップ用URL
477                    tempCreate.setCategoryMargin( categoryMargin );                 // 4.0.2.0 (2007/12/20) ã‚«ãƒ?‚´ãƒªãƒžã?ジン(0.0??.0)
478                    tempCreate.setLowerMargin( lowerMargin );                               // 4.0.2.0 (2007/12/20) 下方マã?ジン(0.0??.0)
479                    tempCreate.setUpperMargin( upperMargin );                               // 4.0.2.0 (2007/12/20) 上方マã?ジン(0.0??.0)
480    //              tempCreate.setShapeColors( shapeColors );                               // 4.0.2.0 (2007/12/20) 上方マã?ジン(0.0??.0)
481                    tempCreate.setUseDomainLine( useDomainLine );                   // 4.0.3.0 (2008/01/07) 横軸ã®ã‚°ãƒªãƒ?ƒ‰è¡¨ç¤ºæœ‰ç„¡(垂直ç·?
482                    tempCreate.setDomainLineColor( domainLineColor );               // 4.0.3.0 (2008/01/07) 横軸ã®ã‚°ãƒªãƒ?ƒ‰ç·šã?色
483                    tempCreate.setUseRangeLine( useRangeLine );                             // 4.0.3.0 (2008/01/07) 縦軸ã®ã‚°ãƒªãƒ?ƒ‰è¡¨ç¤ºæœ‰ç„¡(æ°´å¹³ç·?
484                    tempCreate.setRangeLineColor( rangeLineColor );                 // 4.0.3.0 (2008/01/07) 縦軸ã®ã‚°ãƒªãƒ?ƒ‰ç·šã?色
485                    tempCreate.setCategorySkip( categorySkip );                             // 4.0.3.0 (2008/01/07) 横軸ラベルをスキãƒ??ã™ã‚‹é–“éš”
486                    tempCreate.setCategoryCutNo( categoryCutNo );                   // 4.1.1.0 (2008/02/04) æ¨ªè»¸ãƒ©ãƒ™ãƒ«ã®æ–?­—ä½ç½®æŒ?®šã?キーブレイク
487                    tempCreate.setCategoryAnchor( categoryAnchor );                 // 4.1.1.0 (2008/02/04) æ¨ªè»¸ãƒ©ãƒ™ãƒ«ã®æ–?­—ä½ç½®æŒ?®šã?キーブレイク
488    //              tempCreate.setDomainLineOffset( lineOffset );                   // 4.1.1.0 (2008/02/14) 横軸ã®ã‚°ãƒªãƒ?ƒ‰(垂直ç·?ã®æ›¸ãå?ã—ä½ç½®(START,MIDDLE,END)
489                    tempCreate.setRangeSkip( rangeSkip );                                   // 4.1.1.0 (2008/02/04) 縦軸ã®ã‚°ãƒªãƒ?ƒ‰ç·?æ°´å¹³ç·?をスキãƒ??ã™ã‚‹é–“éš”
490                    tempCreate.setUseToolTip( useToolTip );                                 // 4.3.1.0 (2008/08/09) ãƒ??ルãƒãƒƒãƒ—スã®åˆ©ç”¨
491                    tempCreate.setDateAxisFormat( dateAxisFormat );                 // 5.6.1.0 (2013/02/01) Time,XYTime Polt関係ã?時間軸を表ã™å?åˆã?フォーマット指å®?
492    
493                    if( isDebug() ) { tempCreate.setDebug( true );  }               // 4.0.2.0 (2007/12/20)
494    
495                    tempCreate.setDatasetList( chartDataset );
496    
497                    return tempCreate ;
498            }
499    
500            /**
501             * ãƒ?ƒ³ãƒãƒ©ãƒªFile ã‚’å–å¾—ã—ã¾ã™ã?
502             *
503             * ã“ã“ã§ã¯ã€ä¸?ˆ¬çš?ªãƒ•ァイル出力をè€??ã—㟠ãƒ?ƒ³ãƒãƒ©ãƒªFile を作æ?ã—ã¾ã™ã?
504             *
505             * @param       fileURL ファイルを作æ?ã™ã‚‹ãƒ?‚£ãƒ¬ã‚¯ãƒˆãƒª
506             *
507             * @return      ãƒ?ƒ³ãƒãƒ©ãƒªFile
508             */
509            private File getTempFile( final String fileURL ) {
510                    final File file ;
511    
512                    String directory = HybsSystem.url2dir( fileURL );
513                    File dir = new File( directory );
514                    if( ! dir.exists() && ! dir.mkdirs() ) {
515                            String errMsg = "ãƒ?‚£ãƒ¬ã‚¯ãƒˆãƒªã®ä½œæ?ã«å¤±æ•—ã—ã¾ã—ãŸã€?" + directory + "]";
516                            throw new HybsSystemException( errMsg );
517                    }
518    
519                    try {
520                            file = File.createTempFile( "JFree",".png",dir );
521                            file.deleteOnExit();
522                    }
523                    catch( IOException ex ) {
524                            String errMsg = "ファイルåãŒã‚ªãƒ¼ãƒ—ン出æ¥ã¾ã›ã‚“ã§ã—ãŸã€?
525                                    + HybsSystem.CR
526                                            + "Url:" + fileURL ;
527                            throw new HybsSystemException( errMsg,ex );
528                    }
529    
530                    return file ;
531            }
532    
533            /**
534             * ã€TAG】コマンド[NEW/RENEW]ã‚’ã‚»ãƒ?ƒˆã—ã¾ã?åˆæœŸå€¤:NEW)ã€?
535             *
536             * @og.tag
537             * コマンドã?,HTMLã‹ã‚‰(get/post)æŒ?®šã•れã¾ã™ã?ã§,CMD_xxx ã§è¨­å®šã•れる
538             * フィールド定数値ã®ã?¥ã‚Œã‹ã‚’ã?æŒ?®šã§ãã¾ã™ã?
539             * command ãŒã?NEW ã¾ãŸã?ã€RENEW ã®å ´åˆã?ã¿ã€æ–°è¦ã«ã‚ªãƒ–ジェクトã?構築を行ã„ã¾ã™ã?
540             *
541             * @param       cmd コマンãƒ?public static final 宣è¨?•れã¦ã?‚‹æ–?­—å?)
542             * @see         <a href="{&#064;docRoot}/constant-values.html#org.opengion.hayabusa.taglib.ChartCreateTag.CMD_NEW">コマンド定数</a>
543             */
544    //      public void setCommand( String cmd ) {
545    //              String cmd2 = getRequestParameter( cmd );
546    //              if( cmd2 != null && cmd2.length() != 0 ) { command = cmd2.toUpperCase(Locale.JAPAN); }
547    //      }
548    
549            /**
550             * ã€TAG】ãƒãƒ£ãƒ¼ãƒˆã?タイトルをセãƒ?ƒˆã—ã¾ã™ã?
551             *
552             * @og.tag ãƒãƒ£ãƒ¼ãƒˆã?タイトルをセãƒ?ƒˆã—ã¾ã™ã?
553             *
554             * @param   ttl タイトル
555             */
556            public void setTitle( final String ttl ) {
557                    title = nval( getRequestParameter( ttl ),title );
558            }
559    
560            /**
561             * ã€TAG】ãƒãƒ£ãƒ¼ãƒˆã?横å¹?‚’ã‚»ãƒ?ƒˆã—ã¾ã?åˆæœŸå€¤:200)ã€?
562             *
563             * @og.tag
564             * タイトルã‚??例もå«ã‚“ã å¤§ãã•ã§ã™ã?ãƒ??タ領域ã¯è‡ªå‹•計算ã•れã¾ã™ã?
565             *
566             * @og.rev 4.0.1.0 (2007/12/13) 引数㫠"px" を使用ã§ãるよã†ã«ã™ã‚‹ã€?
567             *
568             * @param   wd 横�
569             */
570            public void setWidth( final String wd ) {
571                    // 引数ã«ã€?px" ãŒä½¿ç”¨ã•れã¦ã?Ÿå ´åˆã?ã€ãれをå–り除ãã?
572                    if( wd != null && wd.length() >= 3 && wd.endsWith( "px" ) ) {
573                            width = Integer.valueOf( wd.substring( 0,wd.length()-2 ) );
574                    }
575                    else {
576                            width = nval( getRequestParameter( wd ),width );
577                    }
578            }
579    
580            /**
581             * ã€TAG】ãƒãƒ£ãƒ¼ãƒˆã?縦å¹?‚’ã‚»ãƒ?ƒˆã—ã¾ã?åˆæœŸå€¤:200)ã€?
582             *
583             * @og.tag
584             * タイトルã‚??例もå«ã‚“ã å¤§ãã•ã§ã™ã?ãƒ??タ領域ã¯è‡ªå‹•計算ã•れã¾ã™ã?
585             *
586             * @og.rev 4.0.1.0 (2007/12/13) 引数㫠"px" を使用ã§ãるよã†ã«ã™ã‚‹ã€?
587             *
588             * @param   ht 縦�
589             */
590            public void setHeight( final String ht ) {
591                    // 引数ã«ã€?px" ãŒä½¿ç”¨ã•れã¦ã?Ÿå ´åˆã?ã€ãれをå–り除ãã?
592                    if( ht != null && ht.length() >= 3 && ht.endsWith( "px" ) ) {
593                            height = Integer.valueOf( ht.substring( 0,ht.length()-2 ) );
594                    }
595                    else {
596                            height = nval( getRequestParameter( ht ),height );
597                    }
598            }
599    
600            /**
601             * ã€TAG】ãƒãƒ£ãƒ¼ãƒˆã?ドメインラベルを指定ã—ã¾ã™ã?
602             *
603             * @og.tag
604             * ãƒãƒ£ãƒ¼ãƒˆã?ドメインラベルを指定ã—ã¾ã™ã?
605             *
606             * @param   dmLbl ãƒãƒ£ãƒ¼ãƒˆã?ドメインラベル
607             */
608            public void setDomainLabel( final String dmLbl ) {
609                    domainLabel = nval( getRequestParameter( dmLbl ),domainLabel );
610            }
611    
612            /**
613             * ã€TAG】ãƒãƒ£ãƒ¼ãƒˆã?凡例ã?表示å¯å¦[true/false]ã‚’ã‚»ãƒ?ƒˆã—ã¾ã?åˆæœŸå€¤:true[表示ã™ã‚‹])ã€?
614             *
615             * @og.tag
616             * åˆæœŸå€¤ã¯ã€è¡¨ç¤ºã™ã‚‹(true) ã§ã™ã?
617             *
618             * @param   swLegend 凡例ã?表示å¯å¦ [true:表示ã™ã‚‹/ãれ以å¤?ã—ãªã„]
619             */
620            public void setShowLegend( final String swLegend ) {
621                    showLegend = nval( getRequestParameter( swLegend ),showLegend );
622            }
623    
624            /**
625             * ã€TAG】ãƒãƒ£ãƒ¼ãƒˆã?表示ç®?‰€ã‚’ã?[TOP/BOTTOM/RIGHT/LEFT]ã§æŒ?®šã—ã¾ã?åˆæœŸå€¤:BOTTOM)ã€?
626             *
627             * @og.tag
628             * 表示ç®?‰€ã¯ã€org.jfree.ui.RectangleEdge クラスã®è¨­å®šå?を使用ã—ã¾ã™ã?
629             * æŒ?®šã§ãã‚‹ã®ã¯ã€TOPã€BOTTOMã€RIGHTã€LEFT ã§ã€å„æ–?­—ã?é ­ä¸?–‡å­—ã§
630             * 判定ã—ã¦ã¾ã™ã?ã¤ã¾ã‚Šã?T,B,R,L ã§ã€åˆ¤å®šã‚’行ã„ã€ãれ以外ã?エラーã«ãªã‚Šã¾ã™ã?
631             * åˆæœŸå€¤ã¯ã€BOTTOM ã§ã™ã?
632             *
633             * @param   rectEdge 凡例表示方å???(TOPã€BOTTOMã€RIGHTã€LEFT)
634             */
635            public void setRectangleEdge( final String rectEdge ) {
636                    rectangleEdge = nval( getRequestParameter( rectEdge ),rectangleEdge );
637            }
638    
639            /**
640             * ã€TAG】ãƒãƒ£ãƒ¼ãƒˆã?プロãƒ?ƒˆ(Plot)表示方å‘ã‚’ã€[VERTICAL(or V),HORIZONTAL(or H)]ã§æŒ?®šã—ã¾ã?åˆæœŸå€¤:VERTICAL)ã€?
641             *
642             * @og.tag
643             * 軸表示方å‘ã?ã€org.jfree.chart.plot.PlotOrientation クラスã®è¨­å®šå?を使用ã—ã¾ã™ã?
644             * æŒ?®šã§ãã‚‹ã®ã¯ã€VERTICALã€HORIZONTALã§ã€å„æ–?­—ã?é ­ä¸?–‡å­—ã§
645             * 判定ã—ã¦ã¾ã™ã?ã¤ã¾ã‚Šã?V,H ã§ã€åˆ¤å®šã‚’行ã„ã€ãれ以外ã?エラーã«ãªã‚Šã¾ã™ã?
646             * åˆæœŸå€¤ã¯ã€VERTICAL ã§ã™ã?
647             *
648             * @param   orientation プロãƒ?ƒˆè¡¨ç¤ºæ–¹å???VERTICAL(or V) , HORIZONTAL(or H)
649             */
650            public void setPlotOrientation( final String orientation ) {
651                    plotOrientation = nval( getRequestParameter( orientation ),plotOrientation );
652            }
653    
654            /**
655             * ã€TAG】ãƒãƒ£ãƒ¼ãƒˆã?背景色を指定ã—ã¾ã™ã?
656             *
657             * @og.tag
658             * æŒ?®šæ–‡å­—å?ã¯ã€java.awt.Color クラスã®static フィールドåã§æŒ?®šã—ã¾ã™ã?
659             * BLACK , BLUE , CYAN , DARK_GRAY , GRAY , GREEN , LIGHT_GRAY ,
660             * MAGENTA , ORANGE , PINK , RED , WHITE , YELLOW , (PURPLE) ãŒæŒ‡å®šã§ãã¾ã™ã?
661             * ã¾ãŸã?#XXXXXXå½¢å¼ã?16bitRGB表è¨?ã§ã‚‚指定å¯èƒ½ã§ã™ã?
662             *
663             * @param   chBackClr ãƒãƒ£ãƒ¼ãƒˆã?背景色
664             * @see         java.awt.Color#BLACK
665             */
666            public void setChartBackColor( final String chBackClr ) {
667                    chartBackColor = nval( getRequestParameter( chBackClr ),chartBackColor );
668            }
669    
670            /**
671             * ã€TAG】ãƒãƒ£ãƒ¼ãƒˆã?æç”»é ˜åŸŸã®è‰²ã‚’指定ã—ã¾ã™ã?
672             *
673             * @og.tag
674             * æŒ?®šæ–‡å­—å?ã¯ã€java.awt.Color クラスã®static フィールドåã§æŒ?®šã—ã¾ã™ã?
675             * BLACK , BLUE , CYAN , DARK_GRAY , GRAY , GREEN , LIGHT_GRAY ,
676             * MAGENTA , ORANGE , PINK , RED , WHITE , YELLOW , (PURPLE) ãŒæŒ‡å®šã§ãã¾ã™ã?
677             * ã¾ãŸã?#XXXXXXå½¢å¼ã?16bitRGB表è¨?ã§ã‚‚指定å¯èƒ½ã§ã™ã?
678             *
679             * @param   plBackClr ãƒãƒ£ãƒ¼ãƒˆã?æç”»é ˜åŸŸè‰²
680             * @see         java.awt.Color#BLACK
681             */
682            public void setPlotBackColor( final String plBackClr ) {
683                    plotBackColor = nval( getRequestParameter( plBackClr ),plotBackColor );
684            }
685    
686            /**
687             * ã€TAG】ãƒãƒ£ãƒ¼ãƒˆã?ã‚«ãƒ?‚´ãƒªãƒ¼ãƒ©ãƒ™ãƒ«ã®æ–¹å‘ã‚’æŒ?®šã—ã¾ã?3:60度)ã€?
688             *
689             * @og.tag
690             * æ–¹å‘ã?ã€ä¸Šæ–¹å‘ã«å¯¾ã—ã¦ã€?PI / æŒ?¤ºæ•°) ã§æ±‚ã¾ã‚‹å?ã«è¨­å®šã—ã¾ã™ã?
691             * ã“ã?æŒ?¤ºæ•°ã«ç›¸å½“ã™ã‚‹å?を設定ã—ã¾ã™ã?
692             * 1:180度 ã€?:90度 ã€?:60度 ã€?:45度 ã€?:30度 ?¥?¥?¥
693             * マイナスã¯ã€ã—ãŸæ–¹å‘ã«å›žè»¢ã•ã›ã¾ã™ã?
694             * 0 を指定ã—ãŸå?åˆã?ã€ä½•も設定ã—ã¾ã›ã‚“ã€?
695             * åˆæœŸå€¤ã¯ã€?:60度ã§ã™ã?
696             *
697             * @param       rttLabel        ã‚«ãƒ?‚´ãƒªãƒ¼ãƒ©ãƒ™ãƒ«ã®æ–¹å?
698             */
699            public void setRotationLabel( final String rttLabel ) {
700                    rotationLabel = nval( getRequestParameter( rttLabel ),rotationLabel );
701            }
702    
703            /**
704             * ã€TAG】ラベルã®è¡¨ç¤ºå‘ãを縦ã«ã™ã‚‹ã‹ã©ã?‹[false/true]を指定ã—ã¾ã?åˆæœŸå€¤:false)ã€?
705             *
706             * @og.tag
707             * ChartCreate ã® rotationLabel ã¯ã€è§’度を指定ã§ãã¾ã—ãŸãŒã?NumberAxis,DateAxis ã§ã¯ã€?
708             * 縦ã«ã™ã‚‹ã‹ã©ã?‹ã®æŒ?®šã—ã‹ã§ãã¾ã›ã‚“ã€?
709             * ã“ã“ã§ã¯ã€true を指定ã™ã‚‹ã¨ãƒ©ãƒ™ãƒ«ã¯ã€ç¸¦æ›¸ãã«ãªã‚Šã¾ã™ã?
710             * åˆæœŸå€¤ã¯ã€false(横書ã?ã§ã™ã?
711             *
712             * @og.rev 5.6.4.3 (2013/05/24)) æ–°è¦è¿½åŠ?
713             *
714             * @param       useVLavels      ラベルã®è¡¨ç¤ºå‘ã [false:横書ã?true:縦書ã]
715             */
716            public void setUseVerticalLabels( final String useVLavels ) {
717                    useVerticalLabels = nval( getRequestParameter( useVLavels ),useVerticalLabels );
718            }
719    
720            /**
721             * ã€TAG】ãƒãƒ£ãƒ¼ãƒˆã?横軸ã®å€¤(ドメイン)ã«åˆè?ã™ã‚‹ä½ç½®ã«ãƒžã?カーラインを設定ã—ã¾ã™ã?
722             *
723             * @og.tag
724             * ã“ã?属æ?ã«ã¯ã€ã?ーカーラインを設定ã™ã‚‹å?を記述ã—ã¾ã™ã?
725             *
726             * @param   marker ドメインã®ãƒžã?カーライン
727             */
728            public void setDomainMarker( final String marker ) {
729                    domainMarker = nval( getRequestParameter( marker ),domainMarker );
730            }
731    
732            /**
733             * ã€TAG】横軸ラベルã®ãƒ©ãƒ™ãƒ«ã‚’表示ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:true)ã€?
734             *
735             * @og.tag
736             * ドメイン(横軸)ãŒã?多数存在ã™ã‚‹å ´åˆã?ドメインラベルãŒè¦‹ãˆã«ãããªã‚Šã¾ã™ã?
737             * ãã?よã†ãªã‚±ãƒ¼ã‚¹ã§ã€æ¨ªè»¸ã®ãƒ©ãƒ™ãƒ«ãã?ã‚‚ã?を表示ã—ãªã??åˆã«ã€false ã‚?
738             * 設定ã—ã¾ã™ã?
739             * åˆæœŸå€¤ã¯ã€è¡¨ç¤ºã™ã‚‹(true)ã§ã™ã?
740             *
741             * @param   flag 横軸ラベルã®è¡¨ç¤ºæœ‰ç„¡ [true:表示ã™ã‚‹/false:表示ã—ãªã„]
742             */
743            public void setUseDomainLabel( final String flag ) {
744                    useDomainLabel = nval( getRequestParameter( flag ),useDomainLabel );
745            }
746    
747            /**
748             * ã€TAG】ã?ーカーラインã«ã€ãã®è¨­å®šå?を表示ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:true)ã€?
749             *
750             * @og.tag
751             * ドメイン(横軸)ãŒã?多数存在ã™ã‚‹å ´åˆã?ドメインラベルãŒè¦‹ãˆãªã??åˆãŒã‚りã¾ã™ã?
752             * ãã?よã†ãªã‚±ãƒ¼ã‚¹ã§ã€è¦‹ãŸã??ã«ãƒžã?カーラインを設定ã—ã€ãã®æ¨ªã«ã€ãƒ‰ãƒ¡ã‚¤ãƒ³ãƒ©ãƒ™ãƒ«
753             * を表示ã™ã‚‹äº‹ã§ã€ãƒ”ãƒ?‚¯ã‚¢ãƒ??ã—ã¦ã?‚‹è»¸ã®å€¤ã‚’容易ã«çŸ¥ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã?
754             * åˆæœŸå€¤ã¯ã€è¡¨ç¤ºã™ã‚‹(true)ã§ã™ã?
755             *
756             * @param   flag マã?カーラインã®è¨­å®šå?表示 true:表示ã™ã‚‹/false:表示ã—ãªã„]
757             */
758            public void setUseMarkerLabel( final String flag ) {
759                    useMarkerLabel = nval( getRequestParameter( flag ),useMarkerLabel );
760            }
761    
762            /**
763             * ã€TAG】JFreeChart オブジェクトをキャãƒ?‚·ãƒ¥ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)ã€?
764             *
765             * @og.tag
766             * useCache="true" を設定ã™ã‚‹ã¨ã€session ã«ã€HybsSystem.JF_CHART_CACHE_KEY
767             * キーã§ã€ã‚­ãƒ£ãƒ?‚·ãƒ¥ã•れã¾ã™ã?
768             * ãã?ã¨ãã«ã€domainMarker 属æ?ã¨ã€seriesPikup 属æ?ã?‘ã€å?設定å¯èƒ½ã«ãªã£ã¦ã?¾ã™ã?
769             *
770             * åˆæœŸå€¤ã¯ã€ã‚­ãƒ£ãƒ?‚·ãƒ¥ã—ãªã?false)ã§ã™ã?
771             *
772             * @param   flag JFreeChartをキャãƒ?‚·ãƒ¥ã™ã‚‹ã‹ã©ã?‹ true:キャãƒ?‚·ãƒ¥ã™ã‚‹/false:キャãƒ?‚·ãƒ¥ã—ãªã„]
773             * @see     #setDomainMarker( String )
774             * @see     #setSeriesPikup( String )
775             */
776            public void setUseCache( final String flag ) {
777                    useCache = nval( getRequestParameter( flag ),useCache );
778            }
779    
780            /**
781             * ã€TAG】è¤?•°ã‚·ãƒªãƒ¼ã‚ºã®ãƒ”ックアãƒ??を行ã†å ´åˆã?シリーズ番å·ã‚’指定ã—ã¾ã™ã?
782             *
783             * @og.tag
784             * è¤?•°ã‚·ãƒªãƒ¼ã‚º(検索時ã«è¤?•°é ?›®ã‚’åŒæ™‚ã«æ¤œç´¢ã™ã‚‹å ´å?ã§ã¯ã€ãƒãƒ£ãƒ¼ãƒˆä¸Šã«
785             * è¤?•°ã®ã‚°ãƒ©ãƒ•ãŒè¡¨ç¤ºã•れã¾ã™ãŒã€ãã®ä¸­ã®ä¸?¤ã‚’ピãƒ?‚¯ã‚¢ãƒ??ã™ã‚‹å ´åˆã«ã€?
786             * シリーズ番å·ã‚’指定ã—ã¾ã™ã?
787             * シリーズ番å·ã¯ã€? ã‹ã‚‰å§‹ã¾ã‚‹æ•°å­—ã§ã™ã?
788             * ã“ã“ã§ã¯ã€ãƒ”ãƒ?‚¯ã‚¢ãƒ??ã•れãŸã‚·ãƒªãƒ¼ã‚ºã¯ã€èµ¤è‰²ã§è¡¨ç¤ºã•れã¾ã™ã?
789             * ãれ以外ã?ã€ã‚°ãƒ¬ãƒ¼è‰²ã§ã®è¡¨ç¤ºã«ãªã‚Šã¾ã™ã?
790             * seriesPikup を使用ã™ã‚‹ã¨ã€chartDataset ã‚¿ã‚°ã® useValueVisible 属æ?ã?
791             * 影響をå—ã‘ã¾ã™ã?ã“ã?属æ?ã¯ã€ãƒ‡ãƒ¼ã‚¿ã®å€¤(itemText)を表示ã—ã¾ã™ãŒã€?
792             * seriesPikup ãŒæŒ‡å®šã•れãŸå ´åˆã?ã€ãã®ã‚·ãƒªãƒ¼ã‚ºã®ã¿ã«ãƒ©ãƒ™ãƒ«è¡¨ç¤ºã—ã¾ã™ã?
793             *
794             * @param       pikup   シリーズ番å·
795             */
796            public void setSeriesPikup( final String pikup ) {
797                    seriesPikup = nval( getRequestParameter( pikup ),seriesPikup );
798            }
799    
800            /**
801             * ã€TAG】キャãƒ?‚·ãƒ¥ç”¨ãƒžã‚¹ã‚¿ã‚­ãƒ¼ã‚’指定ã—ã¾ã™ã?
802             *
803             * @og.tag
804             * useCache="true" ã«è¨­å®šã—ãŸå?åˆã?キャãƒ?‚·ãƒ¥ã‚’使用ã§ãã‚‹ã‹ç¢ºèªã—ã¾ã™ã?
805             * ã“ã?å ´åˆã?seriesPikup é•ã„ã®å ´åˆã?ã€JFreeChart オブジェクトãã®ã‚‚ã?ã‚?
806             * キャãƒ?‚·ãƒ¥ã—ã¦ãŠã‘ã°ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ã?スアクセスãªã—ã§ã€ã‚°ãƒ©ãƒ•ã‚’å†æç”»
807             * ã•ã›ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã?
808             * ã“ã?ã€åŒä¸?JFreeChart を指定ã™ã‚‹ãŸã‚ã?キーをã?ã“ã“ã§è¨­å®šã—ã¾ã™ã?
809             * ã“ã?キーã®å€‹æ•°ã?‘ã€JFreeChart ãŒã‚­ãƒ£ãƒ?‚·ãƒ¥ã•れã¾ã™ã?
810             * ãªãŠã?キャãƒ?‚·ãƒ¥ä¿æŒæ™‚é–“ã¯ã€?¼•å?固定ã§ã™ã?
811             *
812             * @param       mkey    キャãƒ?‚·ãƒ¥ç”¨ãƒžã‚¹ã‚¿ã‚­ãƒ¼
813             */
814            public void setMasterKey( final String mkey ) {
815                    masterKey = nval( getRequestParameter( mkey ),masterKey );
816            }
817    
818            /**
819             * ã€TAG】クリãƒ?‚«ãƒ–ル・マップ用URLを指定ã—ã¾ã™ã?
820             *
821             * @og.tag
822             * ç”»åƒã«ã€ã‚¯ãƒªãƒ?‚«ãƒ–ル・マップを作æ?ã™ã‚‹å ´åˆã?ã€URL を指定ã—ã¾ã™ã?
823             * ã“れã¯ã€ç”»åƒä¸Šã«ã‚¨ãƒªã‚¢æŒ?®šã§ãƒªãƒ³ã‚¯å¼•数を作æ?ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã?
824             * URL 自身ã¯ã€? 付ãã§å›ºå®šå?ã®å¼•æ•°ã‚’é?çµã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã?
825             * クリãƒ?‚¯ã—ãŸã‚¨ãƒªã‚¢ã®ã‚«ãƒ?‚´ãƒªã‚?‚¤ãƒ³ãƒ?ƒƒã‚¯ã‚¹ã®å€¤(引数)ã¯ã€è?å‹•çš„ã«
826             * 設定ã•れã¾ã™ã?(æŒ?®šã—ãªã??åˆã?ãƒãƒ£ãƒ¼ãƒˆã«ã‚ˆã£ã¦ç•°ãªã‚Šã¾ã?
827             * <pre>
828             * ・Pie      ?šcategoryã€pieIndex
829             * ・XY       ?šseriesã€item
830             * ・Category ?šseriesã€category
831             * </pre>
832             * ã“ã?引数㮠URL ã®å称を変更ã—ãŸã??åˆã?ã€URL ã«ç¶šã‘ã¦ã€ã‚«ãƒ³ãƒ?,) ã§ã€?
833             * å称を記述ã—ã¦ãã ã•ã„ã€?
834             * 例:link.jsp,BLOCK
835             *
836             * @param       imap    クリãƒ?‚«ãƒ–ル・マップ用URL
837             * @see #setImageMapTarget( String )
838             */
839            public void setImageMapUrl( final String imap ) {
840                    imageMapUrl = nval( getRequestParameter( imap ),imageMapUrl );
841            }
842    
843            /**
844             * ã€TAG】クリãƒ?‚«ãƒ–ル・マップ用TARGETを指定ã—ã¾ã™ã?
845             *
846             * @og.tag
847             * ç”»åƒã«ã€ã‚¯ãƒªãƒ?‚«ãƒ–ル・マップを作æ?ã™ã‚‹å ´åˆã?ã€TARGET を指定ã—ã¾ã™ã?
848             * ã“れã¯ã€ç”»åƒä¸Šã«ã‚¨ãƒªã‚¢æŒ?®šã§ãƒªãƒ³ã‚¯ã‚’作æ?ã™ã‚‹å ´åˆã?フレーãƒ?Œ‡å®šã§ã™ã?
849             *
850             * @param       target  クリãƒ?‚«ãƒ–ル・マップ用TARGET
851             * @see #setImageMapUrl( String )
852             */
853            public void setImageMapTarget( final String target ) {
854                    imageMapTarget = nval( getRequestParameter( target ),imageMapTarget );
855            }
856    
857            /**
858             * ã€TAG】カãƒ?‚´ãƒªãƒžã?ジン(0.0??.0)を指定ã—ã¾ã™ã?
859             *
860             * @og.tag
861             * ã‚«ãƒ?‚´ãƒª(グラフã?横軸ã«ç›¸å½?ã®è¡¨ç¤ºé–“éš”(マã?ジン)ã®æ¯”率を指定ã—ã¾ã™ã?
862             * ã“ã?比率ã¯ã€?¼?ã§ã¯ãªãã?æ•°å­?double)ã§ã®è¨­å®šã«ãªã‚Šã¾ã™ã?
863             * 何もæŒ?®šã—ãªã??åˆã?ã€ãƒ‡ãƒ•ォルトã§è‡ªå‹•調整ã•れã¾ã™ã?
864             *
865             * @og.rev 4.0.2.0 (2007/12/20) æ–°è¦è¿½åŠ?
866             *
867             * @param       margin  ã‚«ãƒ?‚´ãƒªãƒžã?ジン(0.0??.0)
868             */
869            public void setCategoryMargin( final String margin ) {
870                    categoryMargin = nval( getRequestParameter( margin ),categoryMargin );
871            }
872    
873            /**
874             * ã€TAG】下方マã?ジン(0.0??.0)を指定ã—ã¾ã™ã?
875             *
876             * @og.tag
877             * ã‚«ãƒ?‚´ãƒª(グラフã?横軸ã«ç›¸å½?ã®ä¸‹æ–¹å´(å·¦å´)ã®ãƒžã?ã‚¸ãƒ³ã®æ¯”率を指定ã—ã¾ã™ã?
878             * ã“ã?比率ã¯ã€?¼?ã§ã¯ãªãã?æ•°å­?double)ã§ã®è¨­å®šã«ãªã‚Šã¾ã™ã?
879             * 何もæŒ?®šã—ãªã??åˆã?ã€ãƒ‡ãƒ•ォルトã§è‡ªå‹•調整ã•れã¾ã™ã?
880             *
881             * @og.rev 4.0.2.0 (2007/12/20) æ–°è¦è¿½åŠ?
882             *
883             * @param       margin  下方マã?ジン(0.0??.0)
884             */
885            public void setLowerMargin( final String margin ) {
886                    lowerMargin = nval( getRequestParameter( margin ),lowerMargin );
887            }
888    
889            /**
890             * ã€TAG】上方マã?ジン(0.0??.0)を指定ã—ã¾ã™ã?
891             *
892             * @og.tag
893             * ã‚«ãƒ?‚´ãƒª(グラフã?横軸ã«ç›¸å½?ã®ä¸Šæ–¹å´(å³å´)ã®ãƒžã?ã‚¸ãƒ³ã®æ¯”率を指定ã—ã¾ã™ã?
894             * ã“ã?比率ã¯ã€?¼?ã§ã¯ãªãã?æ•°å­?double)ã§ã®è¨­å®šã«ãªã‚Šã¾ã™ã?
895             * 何もæŒ?®šã—ãªã??åˆã?ã€ãƒ‡ãƒ•ォルトã§è‡ªå‹•調整ã•れã¾ã™ã?
896             *
897             * @og.rev 4.0.2.0 (2007/12/20) æ–°è¦è¿½åŠ?
898             *
899             * @param       margin  上方マã?ジン(0.0??.0)
900             */
901            public void setUpperMargin( final String margin ) {
902                    upperMargin = nval( getRequestParameter( margin ),upperMargin );
903            }
904    
905            /**
906             * ã€TAG】横軸ã®ã‚°ãƒªãƒ?ƒ‰è¡¨ç¤ºæœ‰ç„¡(垂直ç·?を指定ã—ã¾ã?åˆæœŸå€¤:false)ã€?
907             *
908             * @og.tag
909             * ドメイン(横軸)ã«å¯¾ã™ã‚‹ã€ã‚°ãƒªãƒ?ƒ‰ãƒ©ã‚¤ãƒ³ã‚’表示ã™ã‚‹ã‹ã©ã?‹æŒ?®šã—ã¾ã™ã?
910             *
911             * 何もæŒ?®šã—ãªã??åˆã?ã€è¡¨ç¤ºã—ã¾ã›ã‚“ã€?false)
912             *
913             * @og.rev 4.0.3.0 (2008/01/07) æ–°è¦è¿½åŠ?
914             *
915             * @param       useLine 横軸ã®ã‚°ãƒªãƒ?ƒ‰è¡¨ç¤ºæœ‰ç„¡(垂直ç·?
916             */
917            public void setUseDomainLine( final String useLine ) {
918                    useDomainLine = nval( getRequestParameter( useLine ),useDomainLine );
919            }
920    
921            /**
922             * ã€TAG】横軸ã®ã‚°ãƒªãƒ?ƒ‰ç·šã?色を指定ã—ã¾ã™ã?
923             *
924             * @og.tag
925             * ドメイン(横軸)ã«å¯¾ã™ã‚‹ã€ã‚°ãƒªãƒ?ƒ‰ãƒ©ã‚¤ãƒ³ã®è¡¨ç¤ºè‰²ã‚’指定ã—ã¾ã™ã?
926             * 何もæŒ?®šã—ãªã??åˆã?ã€ãƒ‡ãƒ•ォルトã§è‡ªå‹•設定ã•れã¾ã™ã?
927             *
928             * @og.rev 4.0.3.0 (2008/01/07) æ–°è¦è¿½åŠ?
929             *
930             * @param       color   横軸ã®ã‚°ãƒªãƒ?ƒ‰ç·šã?色
931             */
932            public void setDomainLineColor( final String color ) {
933                    domainLineColor = nval( getRequestParameter( color ),domainLineColor );
934            }
935    
936            /**
937             * ã€TAG】横軸ラベルをスキãƒ??ã™ã‚‹é–“隔を指定ã—ã¾ã™ã?
938             *
939             * @og.tag
940             * 横軸ラベル(ã‚«ãƒ?‚´ãƒªãƒ©ãƒ™ãƒ«è¡¨ç¤º)ã™ã‚‹éš›ã«ã€ã‚¹ã‚­ãƒ??ã™ã‚‹é–“隔を指定ã—ã¾ã™ã?
941             * "1" (åˆæœŸå€¤)ã§ã¯ã€?¼‘ã¤ã¥ã¤è¡¨ç¤º(ã¤ã¾ã‚Šã?ã™ã¹ã¦è¡¨ç¤ºã™ã‚‹)ã—ã¾ã™ã?
942             * "2" ã¨ã™ã‚‹ã¨ã€?¼‘ã¤ãŠãã«ã€?3" ã¨ã™ã‚‹ã¨ã€?¼’ã¤ãŠãã«è¡¨ç¤ºã—ã¾ã™ã?
943             * åˆæœŸå€¤ã¯ã€?1" (ã™ã¹ã¦è¡¨ç¤º)ã§ã™ã?
944             * ãªãŠã?å…ˆé?ã‹ã‚‰è¡¨ç¤ºã‚’é–‹å§‹ã—ã¾ã™ã?
945             *
946             * 注æ„:ã“れã¨ã¯åˆ¥ã«ã€ãƒ©ãƒ™ãƒ«å…ˆé?ã« "_" を付ã‘ãŸå?åˆã?ã€ãƒ©ãƒ™ãƒ«ã‚’表示ã—ã¾ã›ã‚“ã€?
947             * ã¾ãŸã?categoryCutNo ãŒæŒ‡å®šã•れãŸå ´åˆã?ã€categorySkip ã¯ä½¿ç”¨ã•れã¾ã›ã‚“ã€?
948             *
949             * @param       step    スキãƒ??ã™ã‚‹é–“éš”
950             * @see         #setCategoryCutNo( String )
951             */
952            public void setCategorySkip( final String step ) {
953                    categorySkip = nval( getRequestParameter( step ),categorySkip );
954            }
955    
956            /**
957             * ã€TAGã€‘æ¨ªè»¸ãƒ©ãƒ™ãƒ«ã®æ–?­—ä½ç½®æŒ?®šã?キーブレイクを指定ã—ã¾ã™ã?
958             *
959             * @og.tag
960             * 横軸ラベル(ã‚«ãƒ?‚´ãƒªãƒ©ãƒ™ãƒ«è¡¨ç¤º)ã™ã‚‹éš›ã«ã€ãƒ©ãƒ™ãƒ«ã®å…ˆé?ã‹ã‚‰ã€ã“ã®æŒ?®šæ–‡å­—æ•°ã?‘
961             * ã‚«ãƒ?ƒˆã—ã¦ã€è¡¨ç¤ºã—ã¾ã™ã?
962             * ãã?éš›ã?å‰å›žä½œæ?ã—ãŸã‚«ãƒ?ƒˆãƒ©ãƒ™ãƒ«ã¨ã€åŒä¸?ƒ©ãƒ™ãƒ«ã®å ´åˆã?ã€è¡¨ç¤ºã—ã¾ã›ã‚“ã€?
963             * 例ãˆã°ã€ãƒ‡ãƒ¼ã‚¿ã¯ã€å¹´æœˆæ—¥ã§ã€å¹´ã¨æœˆã?ã¿(å…ˆé??–æ–‡å­?を指定ã™ã‚‹ã¨ã€?
964             * æ—¥ã®ãƒ??ã‚¿ã¯ã€ãƒ©ãƒ™ãƒ«ãŒè¡¨ç¤ºã•れã¾ã›ã‚“ã€?
965             * æŒ?®šã•れる数字ã?ã€?¼‘以上ã?æ•´æ•°ã¨ã—ã¦ãã ã•ã„ã€?
966             * åˆæœŸå€¤ã¯ã€ã™ã¹ã¦è¡¨ç¤ºã§ã™ã?
967             *
968             * 注æ„:ã“れã¨ã¯åˆ¥ã«ã€ãƒ©ãƒ™ãƒ«å…ˆé?ã« "_" を付ã‘ãŸå?åˆã?ã€ãƒ©ãƒ™ãƒ«ã‚’表示ã—ã¾ã›ã‚“ã€?
969             *
970             * @og.rev 4.1.1.0 (2008/02/04) æ–°è¦è¿½åŠ?
971             *
972             * @param       cutNo   キーブレイクä½ç½®
973             * @see         #setCategorySkip( String )
974             */
975            public void setCategoryCutNo( final String cutNo ) {
976                    categoryCutNo = nval( getRequestParameter( cutNo ),categoryCutNo );
977            }
978    
979            /**
980             * ã€TAG】横軸ã®ã‚°ãƒªãƒ?ƒ‰(垂直ç·?ã®æ›¸ãå?ã—ä½ç½®(START,MIDDLE,END)を指定ã—ã¾ã™ã?
981             *
982             * @og.tag
983             * 横軸ã®ã‚°ãƒªãƒ?ƒ‰(垂直ç·?ã‚’ã?グラフã?ã©ã®ä½ç½®ã«è¨˜è¿°ã™ã‚‹ã‹ã‚’æŒ?®šã—ã¾ã™ã?
984             * 具体的ãªå€¤ã¯ã€CategoryAnchor オブジェクトã?値ã«ãªã‚Šã¾ã™ã?
985             * ã“ã“ã§ã¯ã€æ–‡å­—å?ã§(START,MIDDLE,END)を指定ã—ã¾ã™ã?(å…ˆé?ä¸?–‡å­—ã§åˆ¤å®?
986             * 何もæŒ?®šã—ãªã??åˆã?ã€ãƒ‡ãƒ•ォルãƒ?MIDDLE)ã§ã™ã?
987             *
988             * @og.rev 4.1.1.0 (2008/02/14) æ–°è¦è¿½åŠ?
989             *
990             * @param       anchor  横軸ã®ã‚°ãƒªãƒ?ƒ‰(垂直ç·?ã®æ›¸ãå?ã—ä½ç½®(START,MIDDLE,END)
991             */
992            public void setCategoryAnchor( final String anchor ) {
993                    categoryAnchor = nval( getRequestParameter( anchor ),categoryAnchor );
994    
995                    if( categoryAnchor != null && categoryAnchor.length() > 0 ) {
996                            if( ! "START".equals( categoryAnchor )  &&
997                                    ! "MIDDLE".equals( categoryAnchor ) &&
998                                    ! "END".equals( categoryAnchor ) ) {
999                                            String errMsg = "æŒ?®šã?Anchorã¯é©ç”¨ã§ãã¾ã›ã‚“ã€?" + anchor + "]"
1000                                                            + HybsSystem.CR
1001                                                            + "START,MIDDLE,END ã®ä¸­ã‹ã‚‰ã€æŒ‡å®šã—ã¦ãã ã•ã„ã€? ;
1002                                            throw new HybsSystemException( errMsg );
1003                            }
1004                    }
1005            }
1006    
1007            /**
1008             * ã€TAG】DomainLineã®æ›¸ãå?ã—ä½ç½®Offsetを指定ã—ã¾ã™ã?
1009             *
1010             * @og.tag
1011             * 横軸ライン(ã‚«ãƒ?‚´ãƒªãƒ©ã‚¤ãƒ³è¡¨ç¤º)ã™ã‚‹éš›ã«ã€ãƒ©ã‚¤ãƒ³ã®æç”»ä½ç½®ã‚’ã?
1012             * å…ˆé?ã‹ã‚‰ã€ã“ã®æŒ?®šæ•°ã?‘ãšã‚‰ã—ã¾ã™ã?
1013             * プラスã®å ´åˆã?ã€å³ã¸ã€ã?イナスã®å ´åˆã?ã€å·¦ã¸ãšã‚‰ã—ã¾ã™ã?
1014             *
1015             * ã“れã«ã‚ˆã‚Šã€ãƒ©ã‚¤ãƒ³(縦ç·?ã®ä½ç½®ã‚’ã?グラフã?中å¿?‹ã‚‰ã?ãšã‚‰ã™äº‹ãŒ
1016             * å¯èƒ½ã«ãªã‚Šã¾ã™ã?
1017             *
1018             * @og.rev 4.1.1.0 (2008/02/04) æ–°è¦è¿½åŠ?
1019             *
1020             * @param       domainLineOffset        DomainLineã®æ›¸ãå?ã—ä½ç½®Offset
1021             */
1022    //      public void setDomainLineOffset( final String domainLineOffset ) {
1023    //              String offset = StringUtil.nval( getRequestParameter( domainLineOffset ),null );
1024    //              if( offset != null ) {
1025    //                      lineOffset = Double.parseDouble( offset );
1026    //              }
1027    //      }
1028    
1029            /**
1030             * ã€TAG】縦軸ã®ã‚°ãƒªãƒ?ƒ‰è¡¨ç¤ºæœ‰ç„¡(æ°´å¹³ç·?を指定ã—ã¾ã?åˆæœŸå€¤:true)ã€?
1031             *
1032             * @og.tag
1033             * レンジ(縦軸)ã«å¯¾ã™ã‚‹ã€ã‚°ãƒªãƒ?ƒ‰ãƒ©ã‚¤ãƒ³ã‚’表示ã™ã‚‹ã‹ã©ã?‹æŒ?®šã—ã¾ã™ã?
1034             *
1035             * 何もæŒ?®šã—ãªã??åˆã?ã€è¡¨ç¤ºã—ã¾ã›ã‚“ã€?false)
1036             *
1037             * @og.rev 4.0.3.0 (2008/01/07) æ–°è¦è¿½åŠ?
1038             *
1039             * @param       useLine 横軸ã®ã‚°ãƒªãƒ?ƒ‰è¡¨ç¤ºæœ‰ç„¡(垂直ç·?
1040             */
1041            public void setUseRangeLine( final String useLine ) {
1042                    useRangeLine = nval( getRequestParameter( useLine ),useRangeLine );
1043            }
1044    
1045            /**
1046             * ã€TAG】縦軸ã®ã‚°ãƒªãƒ?ƒ‰ç·šã?色を指定ã—ã¾ã™ã?
1047             *
1048             * @og.tag
1049             * レンジ(縦軸)ã«å¯¾ã™ã‚‹ã€ã‚°ãƒªãƒ?ƒ‰ãƒ©ã‚¤ãƒ³ã®è¡¨ç¤ºè‰²ã‚’指定ã—ã¾ã™ã?
1050             * 何もæŒ?®šã—ãªã??åˆã?ã€ãƒ‡ãƒ•ォルトã§è‡ªå‹•設定ã•れã¾ã™ã?
1051             *
1052             * @og.rev 4.0.3.0 (2008/01/07) æ–°è¦è¿½åŠ?
1053             *
1054             * @param       color   縦軸ã®ã‚°ãƒªãƒ?ƒ‰ç·šã?色
1055             */
1056            public void setRangeLineColor( final String color ) {
1057                    rangeLineColor = nval( getRequestParameter( color ),rangeLineColor );
1058            }
1059    
1060            /**
1061             * ã€TAG】縦軸ã®ã‚°ãƒªãƒ?ƒ‰ç·?æ°´å¹³ç·?をスキãƒ??ã™ã‚‹é–“隔を指定ã—ã¾ã™ã?
1062             *
1063             * @og.tag
1064             * 縦軸ã®ã‚°ãƒªãƒ?ƒ‰ç·?æ°´å¹³ç·?を表示ã™ã‚‹éš›ã«ã€ã‚¹ã‚­ãƒ??ã™ã‚‹é–“隔を指定ã—ã¾ã™ã?
1065             * 通常ã¯ã€ãƒ©ãƒ™ãƒ«ã¨åŒã˜ã?‘ã®ã‚°ãƒªãƒ?ƒ‰ç·šãŒæŽ›ã‹ã‚Œã¾ã™ãŒã€ãƒ©ãƒ™ãƒ«ã‚ˆã‚Šã‚?
1066             * å°‘ãªã?•°ã®ã‚°ãƒªãƒ?ƒ‰ç·?例ãˆã°ã€?¼’ã¤ãŠã)ã‚’å?ã™å?åˆã«ã€å?を設定ã—ã¾ã™ã?
1067             * "1" (åˆæœŸå€¤)ã§ã¯ã€?¼‘ã¤ã¥ã¤è¡¨ç¤º(ã¤ã¾ã‚Šã?ã™ã¹ã¦è¡¨ç¤ºã™ã‚‹)ã—ã¾ã™ã?
1068             * "2" ã¨ã™ã‚‹ã¨ã€?¼‘ã¤ãŠãã«ã€?3" ã¨ã™ã‚‹ã¨ã€?¼’ã¤ãŠãã«è¡¨ç¤ºã—ã¾ã™ã?
1069             * åˆæœŸå€¤ã¯ã€?1" (ã™ã¹ã¦è¡¨ç¤º)ã§ã™ã?
1070             * ãªãŠã?å…ˆé?ã‹ã‚‰è¡¨ç¤ºã‚’é–‹å§‹ã—ã¾ã™ã?
1071             *
1072             * @og.rev 4.1.1.0 (2008/02/04) æ–°è¦è¿½åŠ?
1073             *
1074             * @param       rngSkip 縦軸ã®ã‚°ãƒªãƒ?ƒ‰ç·?æ°´å¹³ç·?をスキãƒ??ã™ã‚‹é–“éš”
1075             */
1076            public void setRangeSkip( final String rngSkip ) {
1077                    rangeSkip = nval( getRequestParameter( rngSkip ),rangeSkip );
1078            }
1079    
1080            /**
1081             * ã€TAG】ツールãƒãƒƒãƒ—スã®ä½¿ç”¨å¯å¦[true:利用ã™ã‚‹/false:利用ã—ãªã„]を指定ã—ã¾ã?åˆæœŸå€¤:false)ã€?
1082             *
1083             * @og.tag
1084             * ラベルを利用ã™ã‚‹éš›ã«ã€ãƒ©ãƒ™ãƒ«ã¨å›³é¢ã€?š£ã®ãƒ©ãƒ™ãƒ«åŒå£«ãŒé‡ãªã‚‹ã“ã¨ãŒã‚りã¾ã™ã?
1085             * ã“ã?å ´åˆã?ãƒ??ルãƒãƒƒãƒ—スã®åˆ©ç”¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ã?
1086             * åˆæœŸå€¤ã¯'false'ã§ã™ã?
1087             *
1088             * @og.rev 4.3.1.0 (2008/08/09) æ–°è¦è¿½åŠ?
1089             *
1090             * @param   toolTip ãƒ??ルãƒãƒƒãƒ—ス [true:利用/false:利用ã—ãªã„]
1091             */
1092            public void setUseToolTip( final String toolTip ) {
1093                    useToolTip = nval( getRequestParameter( toolTip ), useToolTip );
1094            }
1095    
1096            /**
1097             * ã€TAG】Time,XYTime Polt関係ã?時間軸を表ã™å?åˆã?フォーマットをæŒ?®šã—ã¾ã?åˆæœŸå€¤:MM/dd)ã€?
1098             *
1099             * @og.tag
1100             * TimeSeries 関連ã®ãƒ??タを扱ã??åˆã?æ¨ªè»¸ã®æ—¥ä»˜ãƒ•ォーマットをæŒ?®šã—ã¾ã™ã?
1101             * 日付フォーマットã?ã€java.text.SimpleDateFormat ã§ä½¿ã‚れã‚?yyyy/MM/dd HH:mm:ss 表記ã§ã™ã?
1102             * 
1103             * åˆæœŸå€¤ã¯ã€?MM/dd" ã§ã™ã?
1104             *
1105             * @og.rev 5.6.1.0 (2013/02/01) æ–°è¦è¿½åŠ?
1106             * @og.rev 5.6.1.0 (2013/02/01) æ–°è¦è¿½åŠ?
1107             *
1108             * @param       dtFormat        Time,XYTime Polt関係ã?時間軸を表ã™å?åˆã?フォーマッãƒ?
1109             */
1110            public void setDateAxisFormat( final String dtFormat ) {
1111                    dateAxisFormat = nval( getRequestParameter( dtFormat ), dateAxisFormat );
1112    //              if( dtFormat != null && dtFormat.length() > 0 ) {
1113    //                      dateAxisFormat  = dtFormat;
1114    //              }
1115            }
1116    
1117            /**
1118             * BODYè¦ç´?«è¨˜è¿°ã—ãŸã€chartDataset ã‚¿ã‚°ã®å±žæ?設定クラスをListã«è¿½åŠ?—ã¾ã™ã?
1119             *
1120             * BODY部ã«è¨˜è¿°ã•れãŸã?chartDataset ã‚¿ã‚°ã®å±žæ?ã¯ã€ãƒãƒ£ãƒ¼ãƒˆã?ãƒ??ã‚¿å–å¾—Queryã‚??
1121             * ãƒãƒ£ãƒ¼ãƒˆã?種類ãªã©ã®æƒ??を管ç?—ã¦ã?¾ã™ã?
1122             * ãƒãƒ£ãƒ¼ãƒˆã?種é¡?Categoryç³»)ã«ã‚ˆã£ã¦ã¯ã€ãƒãƒ£ãƒ¼ãƒˆã‚’åˆæ?ã—ã¦è¡¨ç¤ºã•ã›ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã?
1123             * ãれらã?è¤?•°ã®ãƒãƒ£ãƒ¼ãƒˆã?æŒ?®šãŒã€chartDataset ã‚¿ã‚° ã§è¡Œã‚れã¾ã™ã?
1124             *
1125             * @param       chDataset       chartDatasetã‚¿ã‚°ã®å±žæ?設定クラス
1126             */
1127            protected void addChartDataset( final ChartDataset chDataset ) {
1128                    if( chartDataset == null ) { chartDataset = new ArrayList<ChartDataset>(); }
1129                    chartDataset.add( chDataset );
1130            }
1131    
1132            /**
1133             * シリアライズ用ã®ã‚«ã‚¹ã‚¿ãƒ?‚·ãƒªã‚¢ãƒ©ã‚¤ã‚ºæ›¸ãè¾¼ã¿ãƒ¡ã‚½ãƒ?ƒ‰
1134             *
1135             * @og.rev 4.0.0.0 (2007/11/29) æ–°è¦è¿½åŠ?
1136             * @serialData
1137             *
1138             * @param       strm    ObjectOutputStreamオブジェク�
1139             */
1140            private void writeObject( final ObjectOutputStream strm ) throws IOException {
1141                    strm.defaultWriteObject();
1142            }
1143    
1144            /**
1145             * シリアライズ用ã®ã‚«ã‚¹ã‚¿ãƒ?‚·ãƒªã‚¢ãƒ©ã‚¤ã‚ºèª­ã¿è¾¼ã¿ãƒ¡ã‚½ãƒ?ƒ‰
1146             *
1147             * ã“ã“ã§ã¯ã€transient 宣è¨?•れãŸå†?ƒ¨å¤‰æ•°ã®å†??åˆæœŸåŒ–ãŒå¿?¦ãªãƒ•ィールドã?ã¿è¨­å®šã—ã¾ã™ã?
1148             *
1149             * @og.rev 4.0.0.0 (2007/11/29) æ–°è¦è¿½åŠ?
1150             * @serialData
1151             *
1152             * @param       strm    ObjectInputStreamオブジェク�
1153             * @see #release2()
1154             */
1155            private void readObject( final ObjectInputStream strm ) throws IOException , ClassNotFoundException {
1156                    strm.defaultReadObject();
1157            }
1158    
1159            /**
1160             * ã“ã?オブジェクトã?æ–?­—å?表ç¾ã‚’è¿”ã—ã¾ã™ã?
1161             * 基本çš?«ãƒ?ƒãƒ?‚°ç›®çš?«ä½¿ç”¨ã—ã¾ã™ã?
1162             *
1163             * @return ã“ã?ã‚¯ãƒ©ã‚¹ã®æ–?­—å?表ç¾
1164             */
1165            @Override
1166            public String toString() {
1167                    StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
1168    
1169                    rtn.append( "[" ).append( this.getClass().getName() ).append( "]" ).append( HybsSystem.CR );
1170                    rtn.append( "title           [" ).append( title           ).append( "]" ).append( HybsSystem.CR );
1171                    rtn.append( "width           [" ).append( width           ).append( "]" ).append( HybsSystem.CR );
1172                    rtn.append( "height          [" ).append( height          ).append( "]" ).append( HybsSystem.CR );
1173                    rtn.append( "domainLabel     [" ).append( domainLabel     ).append( "]" ).append( HybsSystem.CR );
1174                    rtn.append( "showLegend      [" ).append( showLegend      ).append( "]" ).append( HybsSystem.CR );
1175                    rtn.append( "rectangleEdge   [" ).append( rectangleEdge   ).append( "]" ).append( HybsSystem.CR );
1176                    rtn.append( "plotOrientation [" ).append( plotOrientation ).append( "]" ).append( HybsSystem.CR );
1177                    rtn.append( "chartBackColor  [" ).append( chartBackColor  ).append( "]" ).append( HybsSystem.CR );
1178                    rtn.append( "plotBackColor   [" ).append( plotBackColor   ).append( "]" ).append( HybsSystem.CR );
1179    
1180                    return rtn.toString();
1181            }
1182    
1183            /**
1184             * JFreeChart ã‚?ç”»åƒãƒ•ァイルã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’キャãƒ?‚·ãƒ¥ã™ã‚‹ã‚¯ãƒ©ã‚¹ã§ã™ã?
1185             * ã“ã?キャãƒ?‚·ãƒ¥ã¯ã€JFreeChart å˜ä½ã«ä¿æŒã•れã¾ã™ã?
1186             * JFreeChart ã¨ã€ç”»åƒãƒ•ァイルã®ã‚­ãƒ£ãƒ?‚·ãƒ¥ã‚’行ã„ã¾ã™ã?
1187             * JFreeChart オブジェクトをキャãƒ?‚·ãƒ¥ã—ãªãŠã—ãŸã‚¿ã‚¤ãƒŸãƒ³ã‚°ã§ã€?
1188             * ç”»åƒãƒ•ァイルã®ã‚­ãƒ£ãƒ?‚·ãƒ¥ã¯åˆæœŸåŒ?クリア)ã•れã¾ã™ã?
1189             * キャãƒ?‚·ãƒ¥ã®æœ‰åŠ¹æœŸé–“ã¯ã€ã‚·ã‚¹ãƒ?ƒ ãƒªã‚½ãƒ¼ã‚¹ã® CHART_CACHE_TIME ã§å®šç¾©ã—ã¾ã™ã?
1190             */
1191            private static final class ChartCache {
1192                    private static final int CACHE_TIME = HybsSystem.sysInt( "CHART_CACHE_TIME" );
1193                    private static final long       MAX_CACHE_TIME = CACHE_TIME * 1000L;
1194    
1195                    private final Map<String,String> fileAdrs = new HashMap<String,String>();
1196                    private final String            mkey ;
1197                    private           long                  createLimitTime = 0L;
1198                    private           JFreeChart    chart                   = null ;
1199    
1200                    /**
1201                     * コンストラクター
1202                     * JFreeChart オブジェクトをキャãƒ?‚·ãƒ¥ã™ã‚‹ã‚­ãƒ¼ã‚’指定ã—ã¾ã™ã?
1203                     * å†?ƒ¨çš?«ã¯ã€ã“ã®ã‚­ãƒ¼(mkey)ã§ã€æ¯”è¼?‚„ hashCode ãŒè¨ˆç®—ã•れã¦ã?¾ã™ã?
1204                     *
1205                     * @param       mkey    キャãƒ?‚·ãƒ¥ã™ã‚‹ã‚­ãƒ¼
1206                     */
1207                    public ChartCache( final String mkey ) {
1208                            this.mkey = mkey;
1209                    }
1210    
1211                    /**
1212                     * JFreeChart オブジェクトをキャãƒ?‚·ãƒ¥ã—ã¾ã™ã?
1213                     * ç”»åƒãƒ•ァイルã®ã‚­ãƒ£ãƒ?‚·ãƒ¥ã¯åˆæœŸåŒ?クリア)ã•れã¾ã™ã?
1214                     * ã“ã?キャãƒ?‚·ãƒ¥ã®ã‚¿ã‚¤ãƒŸãƒ³ã‚°ã§ã€ã‚­ãƒ£ãƒ?‚·ãƒ¥æ™‚é–“ã‚’å?期化ã—ã¾ã™ã?
1215                     *
1216                     * @param       chart   JFreeChartオブジェク�
1217                     */
1218                    public void setJFreeChart( final JFreeChart chart ) {
1219                            this.chart = chart;
1220                            fileAdrs.clear();
1221                            createLimitTime = System.currentTimeMillis() + MAX_CACHE_TIME;
1222                    }
1223    
1224                    /**
1225                     * JFreeChart オブジェクトを返ã—ã¾ã™ã?
1226                     * キャãƒ?‚·ãƒ¥ã•れã¦ã?‚Œã°ã€ãã®ã‚­ãƒ£ãƒ?‚·ãƒ¥ã‚’ã?ãã†ã§ãªã‘れã°ã€null ã‚?
1227                     * è¿”ã—ã¾ã™ã?
1228                     * キャãƒ?‚·ãƒ¥ã®æœ‰åŠ¹æœŸé–“ã¯ã€ã‚·ã‚¹ãƒ?ƒ ãƒªã‚½ãƒ¼ã‚¹ã® CHART_CACHE_TIME ã§å®šç¾©ã—ã¾ã™ã?
1229                     * オブジェクトã?作æ?時間ãŒã?ãれをè¶?ˆã‚‹å?åˆã?ã€ã‚­ãƒ£ãƒ?‚·ãƒ¥ã‚’å?期化ã—ã¾ã™ã?
1230                     *
1231                     * @return   JFreeChart JFreeChartオブジェク�
1232                     */
1233                    public JFreeChart getJFreeChart() {
1234                            return chart;
1235                    }
1236    
1237                    /**
1238                     * ç”»åƒãƒ•ァイルをキャãƒ?‚·ãƒ¥ã—ã¾ã™ã?
1239                     * ç”»åƒãƒ•ァイルã®ã‚­ãƒ£ãƒ?‚·ãƒ¥ã¯ã‚µãƒ–キーå˜ä½ã«è¡Œã‚れã¾ã™ã?
1240                     * ã¤ã¾ã‚Šã?ã“ã?オブジェクトã?中ã«ã€è¤?•°ã®ç”»åƒãƒ•ァイルã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã?
1241                     * キャãƒ?‚·ãƒ¥ã•れã¦ã?¾ã™ã?
1242                     *
1243                     * @param       chart   JFreeChartオブジェク�
1244                     */
1245                    public void putFileAddress( final String skey,final String adrs ) {
1246                            fileAdrs.put( skey,adrs );
1247                    }
1248    
1249                    /**
1250                     * ç”»åƒãƒ•ァイルã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’è¿”ã—ã¾ã™ã?
1251                     * キャãƒ?‚·ãƒ¥ã•れã¦ã?‚Œã°ã€ãã®ã‚­ãƒ£ãƒ?‚·ãƒ¥ã‚’ã?ãã†ã§ãªã‘れã°ã€null ã‚?
1252                     * è¿”ã—ã¾ã™ã?
1253                     * キャãƒ?‚·ãƒ¥ã®æœ‰åŠ¹æœŸé–“ã¯ã€ã‚·ã‚¹ãƒ?ƒ ãƒªã‚½ãƒ¼ã‚¹ã® CHART_CACHE_TIME ã§å®šç¾©ã—ã¾ã™ã?
1254                     * オブジェクトã?作æ?時間ãŒã?ãれをè¶?ˆã‚‹å?åˆã?ã€ã‚­ãƒ£ãƒ?‚·ãƒ¥ã‚’å?期化ã—ã¾ã™ã?
1255                     *
1256                     * @return   JFreeChart JFreeChartオブジェク�
1257                     */
1258                    public String getFileAddress( final String skey ) {
1259                            return fileAdrs.get( skey ) ;
1260                    }
1261    
1262                    /**
1263                     * キャãƒ?‚·ãƒ¥ãŒã?有効ã‹ã©ã?‹ã‚’è¿”ã—ã¾ã™ã?(有効:true)
1264                     * キャãƒ?‚·ãƒ¥ã¯ã€ã‚·ã‚¹ãƒ?ƒ ãƒªã‚½ãƒ¼ã‚¹ã® CHART_CACHE_TIME (ç§?パラメータ
1265                     * æŒ?®šã•ã‚ŒãŸæ™‚é–“ãŒçµŒéŽã™ã‚‹ã¨ã€ç„¡åйã¨åˆ¤æ–­ã•れã¾ã™ã?
1266                     * 有効ã§ã‚れã°ã€true ã‚’è¿”ã—ã¾ã™ã?
1267                     *
1268                     * @return      有効ã‹ã©ã?‹(有効:true/無効:false)
1269                     */
1270                    public boolean isAvailable() {
1271                            return ( System.currentTimeMillis() < createLimitTime ) ;
1272                    }
1273    
1274                    /**
1275                     * ã“ã?オブジェクトã¨ä»–ã?オブジェクトãŒç­‰ã—ã?‹ã©ã?‹ã‚’示ã—ã¾ã™ã?
1276                     * キャãƒ?‚·ãƒ¥ã®ã‚­ãƒ¼ãŒç­‰ã—ã?‹ã©ã?‹ã§åˆ¤æ–­ã—ã¾ã™ã?
1277                     *
1278                     * @param   object 比è¼?¯¾è±¡ã®å‚ç?オブジェクãƒ?
1279                     * @return  obj å¼•æ•°ã«æŒ?®šã•れãŸã‚ªãƒ–ジェクトã¨ã“ã?オブジェクトãŒç­‰ã—ã??åˆã? trueã€ãã?§ãªã??åˆã? false
1280                     */
1281                    public boolean equals( final Object object ) {
1282                            if( object instanceof ChartCache ) {
1283                                    return this.mkey.equals( ((ChartCache)object).mkey );
1284                            }
1285                            return false ;
1286                    }
1287    
1288                    /**
1289                     * オブジェクトã?ãƒãƒƒã‚·ãƒ¥ã‚³ãƒ¼ãƒ‰å?ã‚’è¿”ã—ã¾ã™ã?
1290                     * ã“ã?メソãƒ?ƒ‰ã¯ã€java.util.Hashtable ã«ã‚ˆã£ã¦æä¾›ã•れるよã†ãª
1291                     * ãƒãƒƒã‚·ãƒ¥ãƒ??ブルã§ä½¿ç”¨ã™ã‚‹ãŸã‚ã«ç”¨æ„ã•れã¦ã?¾ã™ã?
1292                     * equals( Object ) メソãƒ?ƒ‰ã‚’オーãƒã?ライトã—ãŸå?åˆã?ã€hashCode() メソãƒ?ƒ‰ã‚?
1293                     * å¿?š 記述ã™ã‚‹å¿?¦ãŒã‚りã¾ã™ã?
1294                     * ã“ã?実è£?§ã¯ã€mkey.hashCode() ã¨åŒå?ã‚’è¿”ã—ã¾ã™ã?
1295                     *
1296                     * @return  ã“ã?オブジェクトã?ãƒãƒƒã‚·ãƒ¥ã‚³ãƒ¼ãƒ‰å?
1297                     */
1298                    public int hashCode() {
1299                            return mkey.hashCode() ;
1300                    }
1301            }
1302    }