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 018/** 019 * データのコード情報を取り扱うSelectionクラスの、NULL時オブジェクトです。 020 * 021 * 以前は、Selection オブジェクトが null の場合に、NullPointerException で 022 * いきなりエラーで停止していましたが、この、NULLセレクションを作成することで、 023 * 取りあえず、どういう状況なのか、判るようにします。 024 * 025 * @og.rev 5.7.3.0 (2014/02/07) 新規追加 026 * @og.rev 5.7.7.1 (2014/06/13) Selectionオブジェクトの基本実装とします。 027 * @og.group 選択データ制御 028 * 029 * @version 4.0 030 * @author Kazuhiko Hasegawa 031 * @since JDK5.0, 032 */ 033public class Selection_NULL implements Selection { 034 private final String initMsg ; 035 036 /** 037 * デフォルトコンストラクター 038 * 継承元のクラスから、呼び出させるように、作成しておきます。 039 * 040 * @og.rev 5.7.7.1 (2014/06/13) 新規追加 041 */ 042 public Selection_NULL() { initMsg = null; } 043 044 /** 045 * 引数に初期メッセージを指定して作成する、コンストラクター 046 * 047 * @og.rev 5.7.3.0 (2014/02/07) 新規追加 048 * @og.rev 6.2.6.0 (2015/06/19) type別Selectionの場合、ラベルリソースを使用する為、言語を引数で渡す。 049 * @og.rev 6.3.4.0 (2015/08/01) Selection_NULL の引数から、lang 属性を削除します。 050 * 051 * @param strCode 初期メッセージ文字列 052 */ 053 public Selection_NULL( final String strCode ) { 054 initMsg = strCode ; 055 } 056 057 /** 058 * 初期値が選択済みの 選択肢(オプション)を返します。 059 * 無条件で、初期メッセージを返します。 060 * 061 * @og.rev 5.7.3.0 (2014/02/07) 新規追加 062 * 063 * @param selectValue 選択されている値 064 * @param seqFlag シーケンスアクセス機能 [true:ON/false:OFF] 065 * @param useShortLabel ラベル(短)をベースとしたオプション表示を行うかどうか(常にfalse)。 066 * 067 * @return オプションタグ 068 * @og.rtnNotNull 069 * @og.rtnNotNull 070 */ 071 @Override 072 public String getOption( final String selectValue,final boolean seqFlag, final boolean useShortLabel ) { 073 return initMsg + " value=[" + selectValue + "]"; 074 } 075 076 /** 077 * 初期値が選択済みの 選択肢(オプション)を返します。 078 * このオプションは、引数の値を初期値とするオプションタグを返します。 079 * ※ このクラスでは実装されていません。→ 実装を入れます。 080 * 081 * @og.rev 6.0.4.0 (2014/11/28) 実装を入れます。 082 * @og.rev 6.2.2.4 (2015/04/24) メソッド変更。旧 #getRadio( String , String , boolean ) 083 * 084 * @param name ラジオの name 085 * @param selectValue 選択されている値 086 * @param useLabel ラベル表示の有無 [true:有/false:無] 087 * 088 * @return オプションタグ 089 * @og.rtnNotNull 090 */ 091 @Override 092 public String getOption( final String name,final String selectValue,final boolean useLabel ) { 093 return initMsg + " name=[" + name + "] value=[" + selectValue + "]"; 094 } 095 096 /** 097 * 選択肢(value)に対するラベルを返します。 098 * 選択肢(value)が、存在しなかった場合は、選択肢そのものを返します。 099 * getValueLabel( XX ) は、getValueLabel( XX,false ) と同じです。 100 * 101 * @param selectValue 選択肢の値 102 * 103 * @return 選択肢のラベル 104 * @see #getValueLabel( String,boolean ) 105 */ 106 @Override 107 public String getValueLabel( final String selectValue ) { 108 return getValueLabel( selectValue,false ); 109 } 110 111 /** 112 * 選択肢(value)に対するラベルを返します。 113 * 無条件で、初期メッセージを返します。 114 * 115 * @og.rev 5.7.3.0 (2014/02/07) 新規追加 116 * 117 * @param selectValue 選択肢の値 118 * @param isSLbl 短縮ラベルを [true:使用する/false:しない](常に false) 119 * 120 * @return 選択肢のラベル 121 * @og.rtnNotNull 122 * @see #getValueLabel( String ) 123 */ 124 @Override 125 public String getValueLabel( final String selectValue,final boolean isSLbl ) { 126 return initMsg + " value=[" + selectValue + "]"; 127 } 128 129 /** 130 * オブジェクトのキャッシュが時間切れかどうかを返します。 131 * キャッシュが時間切れ(無効)であれば、true を、有効であれば、 132 * false を返します。 133 * 134 * ※ ここでは、常に false を返します。 135 * 136 * @return キャッシュが時間切れなら true 137 */ 138 @Override 139 public boolean isTimeOver() { 140 return false; 141 } 142 143 /** 144 * コードリソースのパラメータを適切な文字列に変換して返します。 145 * 通常であれば、そのままセットすればよいのですが、既存の処理が、 146 * class属性にセットするという仕様だったので、互換性を考慮した変換を行います。 147 * ここでは、 148 * ① "=" を含む場合は、そのままセット 149 * ② disabled 単体の場合は、disabled="disabled" をセット 150 * ③ 『:』と『;』の両方が存在する場合は、style属性としてセット 151 * ④ それ以外は、class= の後に、引数をセット 152 * します。 153 * 今後は、パラメータに、class="AAA" とセットすることで、徐々に 154 * この変換処理を無くしていきます。 155 * 156 * @og.rev 6.2.0.0 (2015/02/27) コードリソースのパラメータの指定方法を変更します。 157 * @og.rev 7.4.1.0 (2021/04/23) 『:』と『;』の両方が存在する場合は、style属性としてセットする。 158 * 159 * @param buf 変換結果を格納するStringBuilder 160 * @param paramKey 変換処理の対象となるパラメータ 161 * @return 引数と同じ、StringBuilder 162 */ 163 protected StringBuilder setCodeParam( final StringBuilder buf , final String paramKey ) { 164 if( paramKey != null && !paramKey.isEmpty() ) { 165 if( paramKey.indexOf( '=' ) > 0 ) { // ① 166 buf.append( ' ' ).append( paramKey ); 167 } 168 else if( "disabled".equalsIgnoreCase( paramKey ) ) { // ② 169 buf.append( " disabled=\"" ).append( paramKey ).append( '"' ); 170 } 171 else if( paramKey.indexOf( ':' ) >=0 && paramKey.indexOf( ';' ) >=0 ) { // ③ 7.4.1.0 (2021/04/23) 172 buf.append( " style=\"" ).append( paramKey ).append( '"' ); 173 } 174 else { // ④ 175 buf.append( " class=\"" ).append( paramKey ).append( '"' ); 176 } 177 } 178 return buf ; 179 } 180}