    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.hayabusa.common.HybsSystemException;
    020import org.opengion.hayabusa.resource.CodeData;
    021
    022/**
    023 * データのコード情報を取り扱うクラスです。
    024 *
    025 * コードのキーとラベルの情報から、HTMLのメニューやリストを作成するための オプション
    026 * タグを作成したり、与えられたキーをもとに、チェック済みのオプションタグを作成したり
    027 * します。
    028 *
    029 * @og.group 選択データ制御
    030 *
    031 * @version  4.0
    032 * @author   Kazuhiko Hasegawa
    033 * @since    JDK5.0,
    034 */
    035// public class Selection_RADIO implements Selection {
    036public class Selection_RADIO extends Selection_NULL {
    037        private final CodeData codeData ;
    038
    039        /**
    040         * コンストラクター
    041         *
    042         * @param       cdData  コードデータオブジェクト
    043         *
    044         */
    045        public Selection_RADIO( final CodeData cdData ) {
    046                if( cdData == null ) {
    047                        String errMsg = "コードリソースが定義されていません。" + HybsSystem.CR ;
    048                        throw new HybsSystemException( errMsg );
    049                }
    050
    051                codeData = cdData ;
    052        }
    053
    054        /**
    055         * 初期値が選択済みの 選択肢(オプション)を返します。
    056         * このオプションは、引数の値を初期値とするオプションタグを返します。
    057         * ※ このクラスでは実装されていません。
    058         *
    059         * @og.rev 3.6.0.6 (2004/10/22) シーケンスアクセス機能を指定する seqFlag を導入
    060         * @og.rev 5.7.7.1 (2014/06/13) Selection_NULL を 継承するため、削除
    061         *
    062         * @param       selectValue     選択されている値
    063         * @param       seqFlag         シーケンスアクセス機能の指定
    064         *
    065         * @return  オプションタグ
    066         */
    067//      public String getOption( final String selectValue,final boolean seqFlag ) {
    068//              String errMsg = "このクラスでは実装されていません。";
    069//              throw new UnsupportedOperationException( errMsg );
    070//      }
    071
    072        /**
    073         * 初期値が選択済みの 選択肢(オプション)を返します。
    074         * このオプションは、引数の値を初期値とするオプションタグを返します。
    075         * ※ このクラスでは実装されていません。
    076         *
    077         * @og.rev 5.1.3.0 (2010/02/01) 追加
    078         *
    079         * @param       selectValue     選択されている値
    080         * @param       seqFlag シーケンスアクセス機能の指定
    081         * @param       useShortLabel   短ラベルの指定
    082         *
    083         * @return  オプションタグ
    084         */
    085        @Override
    086        public String getOption( final String selectValue,final boolean seqFlag, final boolean useShortLabel ) {
    087                String errMsg = "このクラスでは実装されていません。";
    088                throw new UnsupportedOperationException( errMsg );
    089        }
    090
    091        /**
    092         * 初期値が選択済みの 選択肢(オプション)を返します。
    093         * このオプションは、引数の値を初期値とするオプションタグを返します。
    094         *
    095         * @og.rev 2.1.0.1 (2002/10/17) 選択リストを、正方向にしか選べないようにする sequenceFlag を導入する
    096         * @og.rev 3.5.6.3 (2004/07/12) キャッシュを利用せず毎回タグを作成します。
    097         * @og.rev 3.8.6.0 (2006/09/29) useLabel 属性 追加
    098         *
    099         * @param   name         ラジオの name
    100         * @param   selectValue  選択されている値
    101         * @param   useLabel     ラベル表示の有無 [true:有/false:無]
    102         *
    103         * @return  オプションタグ
    104         */
    105        @Override
    106        public String getRadio( final String name,final String selectValue,final boolean useLabel ) {
    107                String inputTag = "<input type=\"radio\" name=\"" + name + "\" value=\"" ;
    108                StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_LARGE );
    109                int size = codeData.getSize();
    110                for( int i=0; i<size; i++ ) {
    111                        String value = codeData.getCodeKey(i);
    112                        if( useLabel ) { buf.append( "<label>" ); }
    113                        buf.append( inputTag ).append( value ).append( "\"" );
    114                        if( value.equals( selectValue ) ) {
    115                                buf.append( " checked=\"checked\"" );
    116                        }
    117                        buf.append( "/>" );
    118                        if( useLabel ) { buf.append( codeData.getShortLabel(i) ).append( "</label>" ); }
    119                }
    120                return buf.toString();
    121        }
    122
    123        /**
    124         * 選択肢(value)に対するラベルを返します。
    125         * 選択肢(value)が、存在しなかった場合は、選択肢そのものを返します。
    126         * getValueLabel( XX ) は、getValueLabel( XX,false ) と同じです。
    127         *
    128         * @og.rev 5.7.7.1 (2014/06/13) Selection_NULL を 継承するため、削除
    129         *
    130         * @param   selectValue 選択肢の値
    131         *
    132         * @return  選択肢のラベル
    133         * @see     #getValueLabel( String,boolean )
    134         */
    135//      public String getValueLabel( final String selectValue ) {
    136//              return getValueLabel( selectValue,false );
    137//      }
    138
    139        /**
    140         * 選択肢(value)に対するラベルを返します。
    141         * 選択肢(value)が、存在しなかった場合は、選択肢そのものを返します。
    142         * このメソッドでは、短縮ラベルを返すかどうかを指定するフラグを指定します。
    143         * getValueLabel( XX,false ) は、getValueLabel( XX ) と同じです。
    144         *
    145         * @og.rev 4.0.0.0 (2005/11/30) を追加
    146         *
    147         * @param       selectValue     選択肢の値
    148         * @param       flag    短縮ラベルを使用する [true:使用する/false:しない]
    149         *
    150         * @return  選択肢のラベル
    151         * @see     #getValueLabel( String )
    152         */
    153        @Override
    154        public String getValueLabel( final String selectValue,final boolean flag ) {
    155                // マッチするアドレスを探す。
    156                int selected = codeData.getAddress( selectValue );
    157
    158                if( selected < 0 ) {
    159                        // マッチしなければ、選択肢そのものを返す。
    160                        return selectValue;
    161                }
    162                else {
    163                        if( flag ) {
    164                                return codeData.getShortLabel(selected);
    165                        }
    166                        else {
    167                                return codeData.getLongLabel(selected);
    168                        }
    169                }
    170        }
    171
    172        /**
    173         * 選択肢(value)に対するラベルを返します。
    174         * 選択肢(value)が、存在しなかった場合は、選択肢そのものを返します。
    175         * getValueLabel( XX ) は、getValueLabel( XX,false ) と同じです。
    176         *
    177         * @param   selectValue 選択肢の値
    178         *
    179         * @return  選択肢のラベル
    180         * @see     #getValueLabel( String,boolean )
    181         */
    182        @Override
    183        public String getRadioLabel( final String selectValue ) {
    184
    185                StringBuilder rtn = new StringBuilder( HybsSystem.BUFFER_MIDDLE );
    186                int size = codeData.getSize();
    187                for( int i=0; i<size; i++ ) {
    188                        String value = codeData.getCodeKey(i);
    189                        if( value.equals( selectValue ) ) {
    190                                rtn.append( "○" );                      // (2003/10/08 修正分)
    191                        }
    192                        else {
    193                                rtn.append( "　" );                      // (2003/10/08 修正分)
    194                        }
    195                }
    196
    197                return rtn.toString();
    198        }
    199
    200        /**
    201         * マルチ・キーセレクトを使用するかどうかを返します。
    202         * true：使用する。false:使用しない です。
    203         * ただし、実際に使用するかどうかは、HTML出力時に決めることが出来ます。
    204         * ここでは、USE_MULTI_KEY_SELECT が true で、USE_SIZE(=20)以上の場合に
    205         * true を返します。
    206         *
    207         * @og.rev 3.5.5.7 (2004/05/10) 新規作成
    208         * @og.rev 5.7.7.1 (2014/06/13) Selection_NULL を 継承するため、削除
    209         *
    210         * @return  選択リストで、マルチ・キーセレクトを使用するかどうか(true:使用する)
    211         */
    212//      public boolean useMultiSelect() {
    213//              return false;
    214//      }
    215
    216        /**
    217         * オブジェクトのキャッシュが時間切れかどうかを返します。
    218         * キャッシュが時間切れ(無効)であれば、true を、有効であれば、
    219         * false を返します。
    220         *
    221         * @og.rev 4.0.0.0 (2005/01/31) 新規作成
    222         * @og.rev 5.7.7.1 (2014/06/13) Selection_NULL を 継承するため、削除
    223         *
    224         * @return  キャッシュが時間切れなら true
    225         */
    226//      public boolean isTimeOver() {
    227//              return false;
    228//      }
    229}