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.hayabusa.db.DBTableModel;
019
020import java.awt.Color;                                                  // 6.0.2.2 (2014/10/03)
021import java.sql.Connection;
022import java.sql.SQLException;
023
024import org.jfree.data.category.CategoryDataset;
025import org.jfree.data.Range;
026
027/**
028 * HybsJDBCCategoryDataset は、org.jfree.data.jdbc.JDBCCategoryDataset を継承したサブクラスで、
029 * executeQuery(Connection , String )  をオーバーライドしています。
030 * これは、元のソースのデータベース検索結果を内部で持っておき、getValue(int row, int column)
031 * メソッドで直接値を返します。
032 * select category,series1,series2,series3,・・・ from ・・・
033 * series の横持ち(標準と同じ) 対応です。
034 * category カラムの値は、カテゴリのラベルになり、series1,2,3 のラベルがシリーズラベル、値が
035 * seriesの値になります。
036 *
037 * カテゴリのカラー名の指定を行う場合、最後のカラムが、カラー名の文字列になります。
038 * select category,series1,series2,series3,・・・,color from ・・・
039 * color文字列の検索結果は、Dataset には含まれません。
040 *
041 * なお、Colorコードは、このクラスで作成しますが、Renderer に与える必要があります。
042 * 通常のRenderer には、categoryにカラーを指定する機能がありませんので、HybsBarRenderer に
043 * setCategoryColor( Color[] ) メソッドを用意します。(正確には、HybsDrawItem インターフェース)
044 * このRenderer で、getItemPaint( int  , int )メソッドをオーバーライドすることで、カテゴリごとの
045 * 色を返します。
046 *
047 * @og.rev 3.8.9.2 (2007/07/28) 新規作成
048 *
049 * @version  0.9.0  2001/05/05
050 * @author   Kazuhiko Hasegawa
051 * @since    JDK1.1,
052 */
053public interface HybsDataset extends CategoryDataset {
054
055        /**
056         * レンジオブジェクトを取得します。(独自メソッド)
057         *
058         * @return      レンジオブジェクト
059         */
060        Range getRange() ;
061
062        /**
063         * CategoryDataset を構築するに当たり、初期パラメータを設定します。
064         *
065         * @og.rev 6.0.2.2 (2014/10/03) 新規追加
066         *
067         * @param lbls  シリーズのラベル名配列
068         * @param isColCate  カテゴリのカラー名の指定有無(true:使用する)
069         * @param isPareto   パレート図用のDatasetとして処理するかどうか(true:処理する)
070         */
071        void initParam( final String[] lbls , final boolean isColCate , final boolean isPareto );
072
073        /**
074         * コネクションと、SQL文字列から、CategoryDataset のデータを作成します。
075         * 元となる処理は、org.jfree.data.jdbc.JDBCCategoryDataset#executeQuery( Connection,String ) です。
076         *
077         * このメソッドでは、先に #initParam(String[],boolean,isPareto) のパラメータを使用して
078         * 検索した結果のデータを加工、処理します。
079         * また、内部的に、データをキャッシュする事と、データ範囲を示す レンジオブジェクト を作成します。
080         *
081         * @og.rev 6.0.2.2 (2014/10/03) 新規追加
082         *
083         * @param con  コネクション
084         * @param query  SQL文字列
085         *
086         * @throws SQLException データベースアクセス時のエラー
087         * @see         org.jfree.data.jdbc.JDBCCategoryDataset#executeQuery( Connection,String )
088         */
089        void execute( final Connection con, final String query ) throws SQLException ;
090
091        /**
092         * DBTableModelオブジェクトから、CategoryDataset のデータを作成します。
093         * openGionの独自処理メソッドです。
094         *
095         * このメソッドでは、先に #initParam(String[],boolean,isPareto) のパラメータを使用して
096         * 検索した結果のデータを加工、処理します。
097         * また、内部的に、データをキャッシュする事と、データ範囲を示す レンジオブジェクト を作成します。
098         *
099         * @og.rev 6.0.2.2 (2014/10/03) 新規追加
100         *
101         * @param table DBTableModelオブジェクト
102         * @see         #execute( Connection,String )
103         */
104        void execute( final DBTableModel table ) ;
105
106        /**
107         * categoryカラー配列を取得します。(独自メソッド)
108         *
109         * このクラスは、一番最後のカラムを、色文字列として処理し、categoryにColorを指定できます。
110         * select文で指定されていなかった場合は、null を返します。
111         *
112         * select category,series1,series2,series3,・・・,color from ・・・
113         *
114         * なお、Colorコードは、このクラスで作成しますが、Renderer に与える必要があります。
115         * 通常のRenderer には、categoryにカラーを指定する機能がありませんので、HybsBarRenderer に
116         * setCategoryColor( Color[] ) メソッドを用意します。(正確には、HybsDrawItem インターフェース)
117         * このRenderer で、getItemPaint( int  , int )メソッドをオーバーライドすることで、カテゴリごとの
118         * 色を返します。
119         * この設定を行うと、シリーズは、カテゴリと同一色になります。
120         *
121         * @og.rev 6.0.2.2 (2014/10/03) 新規追加
122         *
123         * @return      categoryカラー配列(なければ null)
124         */
125        Color[] getCategoryColor() ;
126}