001/*
002 * Copyright (c) 2009 The openGion Project.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 *     http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
013 * either express or implied. See the License for the specific language
014 * governing permissions and limitations under the License.
015 */
016package org.opengion.hayabusa.io;
017
018import org.opengion.fukurou.util.StringUtil;
019
020import org.jfree.chart.LegendItemSource;
021
022/**
023 * 引数タイプに応じたレンデラーやデータセットを管理します。
024 *
025 * タイプ、レンデラー、データセット の組み合わせで、構築するオブジェクトが異なります。
026 *
027 * @version  0.9.0      2007/06/21
028 * @author       Kazuhiko Hasegawa
029 * @since        JDK1.1,
030 */
031final class TypeRenderer {
032        private static final String REND_CLASS = "org.jfree.chart.renderer." ;
033        private static final String HYBS_CLASS = "org.opengion.hayabusa.io." ;          // 4.1.1.0 (2008/02/04)
034
035        private final String type ;
036        private final String rend ;             // org.jfree.chart.renderer 以降の文字列
037        private final String dtset ;    // org.opengion.hayabusa.io 以降の文字列
038        private final String plot ;             // 以降の文字列
039
040        /**
041         * TypeRenderer オブジェクトを作成します。
042         *
043         * チャートタイプ は、外部からチャートを指定するのに便利なように、キー化
044         * されています。このキーに基づいて、ChartFactory クラスの
045         * チャートタイプ変換表に基づいて、レンデラーや、データセットを作成します。
046         * このクラスは、これらの変換表の個々の属性を管理しています。
047         *
048         * @og.rev 5.3.0.0 (2010/12/01) plot 追加
049         *
050         * @param       type            チャートのタイプを区別する文字列
051         * @param       renderer        チャートのタイプに応じたレンデラーのキー文字列
052         * @param       dtset           チャートのタイプに応じたデータセットのキー文字列
053         * @param       plot            チャートのタイプに応じたプロットのキー文字列
054         */
055        public TypeRenderer( final String type,final String renderer,final String dtset,final String plot ) {
056                this.type  = type ;
057                this.rend  = renderer ;
058                this.dtset = dtset ;
059                this.plot  = plot ;                     // 5.3.0.0 (2010/12/01) plot 追加
060        }
061
062        /**
063         * チャートのタイプを区別する文字列を返します。
064         *
065         * @return      チャートのタイプを区別する文字列
066         */
067        public String getType() { return type; }
068
069        /**
070         * チャートのタイプに応じたレンデラーのキー文字列を返します。
071         *
072         * @return      チャートのタイプに応じたレンデラーのキー文字列
073         */
074        public String getRendererType() { return rend; }
075
076        /**
077         * チャートのタイプに応じたレンデラーオブジェクトを返します。
078         *
079         * org.jfree.chart.renderer パッケージのサブモジュールのレンデラークラスを
080         * 先に登録してある レンデラーのキー文字列 と合成して、クラスを動的に作成します。
081         *
082         * @og.rev 4.1.1.0 (2008/02/04) Barチャート追加
083         * @og.rev 5.3.0.0 (2010/12/01) レンデラーが null の場合の対応
084         *
085         * @return      LegendItemSource チャートのタイプに応じたレンデラーオブジェクト(存在しない場合は、null)
086         */
087        public LegendItemSource getRenderer() {
088                if( rend == null ) { return null; }             // 5.3.0.0 (2010/12/01)
089
090                String key ;
091                if( type.startsWith( "Hybs" ) ) {
092                        key = HYBS_CLASS + rend ;
093                }
094                else {
095                        key = REND_CLASS + rend ;
096                }
097
098                return (LegendItemSource)StringUtil.newInstance( key ) ;
099        }
100
101        /**
102         * チャートのタイプに応じたデータセットのキー文字列を返します。
103         *
104         * @return      チャートのタイプに応じたデータセットのキー文字列
105         */
106        public String getDatasetType() { return dtset; }
107
108        /**
109         * チャートのタイプに応じたプロットのキー文字列を返します。
110         *
111         * @og.rev 5.3.0.0 (2010/12/01) 新規追加
112         *
113         * @return      チャートのタイプに応じたプロットのキー文字列
114         */
115        public String getPlotType() { return plot; }
116}