    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.db;
    017
    018import org.opengion.hayabusa.common.HybsSystem;
    019import org.opengion.fukurou.util.StringFormat;
    020
    021/**
    022 * 動的プルダウンなどで利用されるイベントカラムの各種情報を保持するための
    023 * 管理クラスです。
    024 *
    025 * 内容を置き換えるカラム(子カラム)の名前をキーに、イベントカラム(親カラム)や、
    026 * イベント発行時の処理URL等を管理します。
    027 *
    028 * これらの情報は、ColumnTagやSelectTag、ViewFormTagなどで登録され、その結果を
    029 * JavaScriptのコードとして出力します。(common/eventColumn.jsp)
    030 *
    031 * ここで出力された情報をイベント発行時に、JavaScriptが参照し、処理URLに渡す
    032 * ことで、動的な項目の入れ替えを実現しています。
    033 *
    034 * @og.rev 5.1.7.0 (2010/06/01) 新規追加
    035 *
    036 * @version  4.0
    037 * @author   Hiroki Nakamura
    038 * @since    JDK5.0,
    039 */
    040public class DBEventColumn {
    041
    042        private static final String EVENT_COLUMN_URL = HybsSystem.sys( "JSP" ) + "/" + HybsSystem.sys( "EVENT_COLUMN_URL" );
    043
    044        final String name;                      // 内容を置き換えるカラム(子カラム)
    045        final String evCol;                     // イベントカラム(親カラム・カンマ区切り)
    046        final String eventUrl;          // イベント発行時の処理URL
    047        final String renderer;          // 子カラムのレンデラー
    048        final String editor;            // 子カラムのエディター
    049        final String rendParam;         // 子カラムの表示パラメーター
    050        final String editParam;         // 子カラムの編集パラメーター
    051
    052        /**
    053         * 初期情報を含んだ新規オブジェクトを作成します。
    054         *
    055         * @param name 内容を置き換えるカラム(子カラム)
    056         * @param evCol イベントカラム(親カラム・カンマ区切り)
    057         * @param eventUrl イベント発行時の処理URL
    058         * @param renderer 子カラムのレンデラー
    059         * @param editor 子カラムのエディター
    060         * @param rendParam 子カラムの表示パラメーター
    061         * @param editParam 子カラムの編集パラメーター
    062         */
    063        public DBEventColumn( final String name, final String evCol, final String eventUrl,
    064                                                        final String renderer, final String editor, final String rendParam, final String editParam ) {
    065                this.name               = name;
    066                this.evCol              = evCol;
    067                 // 5.1.9.0 (2010/08/01) 動的プルダウン不具合対応
    068                this.eventUrl   = ( eventUrl != null && eventUrl.length() > 0 ) ? eventUrl : EVENT_COLUMN_URL;
    069                this.renderer   = renderer;
    070                this.editor             = editor;
    071                this.rendParam  = rendParam;
    072                this.editParam  = editParam;
    073        }
    074
    075        /**
    076         * 内容を置き換えるカラム(子カラム)を返します。
    077         *
    078         * @return 内容を置き換えるカラム(子カラム)
    079         */
    080        public String getName() { return name; }
    081
    082        /**
    083         * イベントカラム(親カラム・カンマ区切り)を返します。
    084         *
    085         * @return イベントカラム(親カラム・カンマ区切り)
    086         */
    087        public String getEventColumn() { return evCol; }
    088
    089        /**
    090         * イベント発行時の処理URLを返します。
    091         *
    092         * @og.rev 5.1.8.0 (2010/07/01) getEventUrl ⇒ getEventURL に変更
    093         *
    094         * @return イベント発行時の処理URL
    095         */
    096        public String getEventURL() { return eventUrl; }
    097
    098        /**
    099         * 子カラムのレンデラーを返します。
    100         *
    101         * @return 子カラムのレンデラー
    102         */
    103        public String getRenderer() { return renderer; }
    104
    105        /**
    106         * 子カラムのエディターを返します。
    107         *
    108         * @return 子カラムのエディター
    109         */
    110        public String getEditor() { return editor; }
    111
    112        /**
    113         * 子カラムの表示パラメーターを返します。
    114         *
    115         * @return 子カラムの表示パラメーター
    116         */
    117        public String getRendParam() {
    118                StringFormat sf = new StringFormat(
    119                                                        rendParam
    120                                                        ,"{@" + evCol.replace( ",", "}:{@" ) + "}"
    121                                                        ,name );
    122                return sf.format();
    123        }
    124
    125        /**
    126         * 子カラムの編集パラメーターを返します。
    127         *
    128         * @return 子カラムの編集パラメーター
    129         */
    130        public String getEditParam() {
    131                StringFormat sf = new StringFormat(
    132                                                        editParam
    133                                                        ,"{@" + evCol.replace( ",", "}:{@" ) + "}"
    134                                                        ,name );
    135                return sf.format();
    136        }
    137}