    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;
    019import org.opengion.hayabusa.common.HybsSystem;
    020import org.opengion.hayabusa.common.HybsSystemException;
    021import org.opengion.hayabusa.db.DBTableModel;
    022
    023import java.sql.Connection;
    024import java.sql.SQLException;
    025import java.util.Map;
    026import java.util.HashMap;
    027import java.util.Arrays;
    028
    029import org.jfree.chart.LegendItemSource;
    030import org.jfree.data.jdbc.JDBCPieDataset;
    031import org.jfree.data.jdbc.JDBCXYDataset;
    032import org.jfree.data.general.Dataset;
    033import org.jfree.data.general.DefaultValueDataset;
    034
    035import org.jfree.data.category.DefaultCategoryDataset;
    036import org.jfree.data.xy.CategoryTableXYDataset;
    037import org.jfree.data.general.DefaultPieDataset;
    038import org.jfree.data.DefaultKeyedValues;
    039
    040/**
    041 * 引数タイプに応じたレンデラーやデータセットを管理します。
    042 *
    043 * タイプ、レンデラー、データセット の組み合わせで、構築するオブジェクトが異なります。
    044 *
    045 * @version  0.9.0      2007/06/21
    046 * @author       Kazuhiko Hasegawa
    047 * @since        JDK1.1,
    048 */
    049final class TypeRenderer {
    050        private static final String REND_CLASS = "org.jfree.chart.renderer." ;
    051        private static final String HYBS_CLASS = "org.opengion.hayabusa.io." ;          // 4.1.1.0 (2008/02/04)
    052
    053        private final String type ;
    054        private final String rend ;             // org.jfree.chart.renderer 以降の文字列
    055        private final String dtset ;    // org.opengion.hayabusa.io 以降の文字列
    056        private final String plot ;             // 以降の文字列
    057
    058        /**
    059         * TypeRenderer オブジェクトを作成します。
    060         *
    061         * チャートタイプ は、外部からチャートを指定するのに便利なように、キー化
    062         * されています。このキーに基づいて、ChartFactory クラスの
    063         * チャートタイプ変換表に基づいて、レンデラーや、データセットを作成します。
    064         * このクラスは、これらの変換表の個々の属性を管理しています。
    065         *
    066         * @og.rev 5.3.0.0 (2010/12/01) plot 追加
    067         *
    068         * @param       type            チャートのタイプを区別する文字列
    069         * @param       renderer        チャートのタイプに応じたレンデラーのキー文字列
    070         * @param       dtset           チャートのタイプに応じたデータセットのキー文字列
    071         * @param       plot            チャートのタイプに応じたプロットのキー文字列
    072         */
    073//      public TypeRenderer( final String type,final String renderer,final String dtset ) {
    074        public TypeRenderer( final String type,final String renderer,final String dtset,final String plot ) {
    075                this.type  = type ;
    076                this.rend  = renderer ;
    077                this.dtset = dtset ;
    078                this.plot  = plot ;                     // 5.3.0.0 (2010/12/01) plot 追加
    079        }
    080
    081        /**
    082         * チャートのタイプを区別する文字列を返します。
    083         *
    084         * @return      チャートのタイプを区別する文字列
    085         */
    086        public String getType() { return type; }
    087
    088        /**
    089         * チャートのタイプに応じたレンデラーのキー文字列を返します。
    090         *
    091         * @return      チャートのタイプに応じたレンデラーのキー文字列
    092         */
    093        public String getRendererType() { return rend; }
    094
    095        /**
    096         * チャートのタイプに応じたレンデラーオブジェクトを返します。
    097         *
    098         * org.jfree.chart.renderer パッケージのサブモジュールのレンデラークラスを
    099         * 先に登録してある レンデラーのキー文字列 と合成して、クラスを動的に作成します。
    100         *
    101         * @og.rev 4.1.1.0 (2008/02/04) Barチャート追加
    102         * @og.rev 5.3.0.0 (2010/12/01) レンデラーが null の場合の対応
    103         *
    104         * @return      LegendItemSource チャートのタイプに応じたレンデラーオブジェクト(存在しない場合は、null)
    105         */
    106        public LegendItemSource getRenderer() {
    107                if( rend == null ) { return null; }             // 5.3.0.0 (2010/12/01)
    108
    109                String key ;
    110                if( type.startsWith( "Hybs" ) ) {
    111                        key = HYBS_CLASS + rend ;
    112                }
    113                else {
    114                        key = REND_CLASS + rend ;
    115                }
    116
    117                return (LegendItemSource)StringUtil.newInstance( key ) ;
    118        }
    119
    120        /**
    121         * チャートのタイプに応じたデータセットのキー文字列を返します。
    122         *
    123         * @return      チャートのタイプに応じたデータセットのキー文字列
    124         */
    125        public String getDatasetType() { return dtset; }
    126
    127        /**
    128         * チャートのタイプに応じたプロットのキー文字列を返します。
    129         *
    130         * @og.rev 5.3.0.0 (2010/12/01) 新規追加
    131         *
    132         * @return      チャートのタイプに応じたプロットのキー文字列
    133         */
    134        public String getPlotType() { return plot; }
    135}