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 */
016 package org.opengion.hayabusa.taglib;
017
018 import org.opengion.hayabusa.common.HybsSystem;
019 import org.opengion.hayabusa.common.HybsSystemException;
020 import org.opengion.hayabusa.db.DBTableModel;
021 import org.opengion.hayabusa.db.DBColumn;
022 import org.opengion.hayabusa.db.DBTableModelUtil;
023 import org.opengion.hayabusa.resource.LDAPSearch;
024
025 import org.opengion.fukurou.util.ErrorMessage;
026 import org.opengion.fukurou.util.StringUtil ;
027 import static org.opengion.fukurou.util.StringUtil.nval ;
028
029 import java.util.List;
030 import java.util.Locale;
031
032 /**
033 * LDAPのå†?®¹を検索するための、ldapQueryタグですã?
034 *
035 * 検索した結果は、DBTableModel にセãƒ?ƒˆされるためã?
036 * JDBCQuery と同様に、viewタグで表示させることが可能ですã?
037 *
038 * 下記ã?é ?›®につã�?�¦は、src/resource/シスãƒ?ƒ パラメータ に、予め
039 * 設定しておくことで、タグごとにæŒ?®šするå¿?¦�がなくなりますã?
040 * ・LDAP_INITIAL_CONTEXT_FACTORY
041 * ・LDAP_PROVIDER_URL
042 * ・LDAP_ENTRYDN
043 * ・LDAP_SEARCH_BASE
044 * ・LDAP_SEARCH_SCOPE
045 *
046 * こã?タグリブでは、検索のみサポã?トしてã�?�¾すã?
047 *
048 * @og.formSample
049 * ●形式ï¼?
050 * <og:ldapQuery debug="false"
051 * command = "NEW" NEW,RENEW が使用可能ですã?
052 * initctx = "com.sun.jndi.ldap.LdapCtxFactory" 初期コンãƒ?‚ストファクトリ
053 * providerURL = "ldap://ldap.opengion.org:389" サービスプロバイãƒ??構æ?æƒ??
054 * entrydn = "cn=inquiry-sys,o=opengion,c=JP" 属æ?の取得å?のオブジェクトã?名前
055 * password = "xxxxxx" 属æ?の取得å?のオブジェクトã?パスワーãƒ?
056 * searchbase = "soouid=employeeuser,o=opengion,c=JP" 検索するコンãƒ?‚ストまたã?オブジェクトã?ベã?スå�?
057 * filter = "(objectClass=person)" 検索に使用するフィルタ式ã?null は不可
058 * attributes = "uid,cn,officeName,ou,mail,belongOUID" 属æ?を識別する属æ? IDをカンマ区åˆ?‚ŠでæŒ?®?
059 * searchScope = "SUBTREE" 検索ç¯?›²を設å®?『OBJECT』ã?ONELEVEL』ã?SUBTREE』ã?どれか)
060 * maxRowCount = "0" 検索時ã?æœ?¤§検索数(0は、無制限:デフォルãƒ?
061 * />
062 * ●body?šなã�?
063 *
064 * ●Tag定義??
065 * <og:ldapQuery
066 * initctx 【TAG】å?期コンãƒ?‚ストファクトリを指定しまã�?(初期値:LDAP_INITIAL_CONTEXT_FACTORY[=com.sun.jndi.ldap.LdapCtxFactory])
067 * providerURL 【TAG】サービスプロバイãƒ??構æ?æƒ??を指定しまã�?(初期値:LDAP_PROVIDER_URL[=ldap://ldap.opengion.org:389])
068 * entrydn 【TAG】属æ?の取得å?のオブジェクトã?名前を設定しまã�?(初期値:LDAP_ENTRYDN[=cn=inquiry-sys,o=opengion,c=JP])
069 * password 【TAG】属æ?の取得å?のオブジェクトã?パスワードを設定しまã�?(初期値:LDAP_PASSWORD[=password])
070 * searchbase 【TAG】検索するコンãƒ?‚ストまたã?オブジェクトã?名前を設定しまã�?(初期値:LDAP_SEARCH_BASE[=soouid=employeeuser,o=opengion,c=JP])
071 * filter ○ã?TAG】検索に使用するフィルタå¼?例:belongOUID=61200)(å¿??)ã€?
072 * searchScope 【TAG】検索ç¯?›²(OBJECT/ONELEVEL/SUBTREE)を設定しまã�?(初期値:LDAP_SEARCH_SCOPE[=SUBTREE])
073 * timeLimit 【TAG】これらの SearchControls の時間制限をミリ秒単位で設定しまã�?初期値:0[無制限])
074 * derefLinkFlag 【TAG】検索中のリンクへの間接参ç?を有効またã?無効[true/false]にしまã�?初期値:false)
075 * maxRowCount 【TAG】レジストリのæœ?¤§検索件数をセãƒ?ƒˆしまã�?初期値:0[無制限])
076 * returningObjFlag 【TAG】結果のä¸?ƒ¨としてオブジェクトを返すことを有効またã?無効[true/false]にしまã�?初期値:false)
077 * attributes 【TAG】検索のä¸?ƒ¨として返される属æ?をCSVでè¤?•°æŒ?®šしまã�?
078 * columns 【TAG】作æ?する DBTableModel のカラãƒ?��をCSV形式でæŒ?®šしまã�?
079 * orderBy 【TAG】検索した結果を表示する表示é ?‚’ファイル属æ?名でæŒ?®šしまã�?
080 * tableId 【TAGã€?通常は使ã�?�¾せん)結果をDBTableModelに書き込んで、sessionに登録するときã?キーを指定しまã�?
081 * command 【TAG】コマンãƒ?NEW,RENEW)をセãƒ?ƒˆしまã�?初期値:NEW)
082 * displayMsg 【TAG】検索結果を画面上に表示するメãƒ?‚»ージリソースIDを指定しまã�?初期値は検索件数)
083 * notfoundMsg 【TAG】検索結果がゼロ件の場合に表示するメãƒ?‚»ージリソースIDを指定しまã�?初期値:MSG0077[対象ãƒ??タはありませんでした])
084 * overflowMsg 【TAG】オーバã?フロー時に画面上に表示するメãƒ?‚»ージIDを指定しまã�?初期値:MSG0007)
085 * scope 【TAG】キャãƒ?‚·ュする場合ã?スコープ[request/page/session/applicaton]を指定しまã�?初期値:session)
086 * mainTrans 【TAGã€?通常使ã�?�¾せん)タグで処ç�?�•れる処ç�?�Œメインとなるトランザクション処ç�?�‹どã�?�‹を指定しまã�?初期値:false)
087 * debug 【TAG】デバッグæƒ??をå?力するかどã�?�‹[true/false]を指定しまã�?初期値:false)
088 * />
089 *
090 * ●使用ä¾?
091 * シスãƒ?ƒ パラメータ に、å¿?¦�なLDAP定数を定義しておいたå?合ã?、下記ã?タグで検索できますã?
092 * 例では、filter にあいまã�?¤œ索(*)とAND条件(&(条件A)(条件B)) を指定した例を挙げておきますã?
093 * filter の形式と解釈ã?、RFC 2254 に準拠してã�?�¾すã?
094 * (RFC 2254 で定義されてã�?‚‹演算子ã?すべてをすべての属æ?に適用できるわけではありませんã€?
095 *
096 * <og:ldapQuery debug="false"
097 * command = "NEW"
098 * filter = "(&(cnphoneticlangjp=OPENGION*)(businessName=*COMMON*))"
099 * attributes = "uid,cn,officeName,ou,mail,belongOUID"
100 * />
101 *
102 * ・queryOption タグのå†?ƒ¨に記述すれば、ã?ルãƒ?‚¦ンメニューを作æ?することが可能ですã?
103 * <og:select name="UID">
104 * <og:queryOption>
105 * <og:ldapQuery
106 * filter = "(&amp;(|(belongOUID=60000)(belongOUID=70000))(uid=C*))"
107 * attributes = "uid,uid,sn"
108 * orderBy = "uid"
109 * />
110 * </og:queryOption>
111 * </og:select>
112 *
113 * @og.rev 3.1.0.0 (2003/03/20) ?¬?¤?¡?°にアクセスできる、LDAPQueryTag.java を新規に作æ?ã€?
114 * @og.group そã?他å?åŠ?
115 *
116 * @version 4.0
117 * @author Kazuhiko Hasegawa
118 * @since JDK5.0,
119 */
120 public class LDAPQueryTag extends CommonTagSupport {
121 //* こã?プログラãƒ??VERSIONæ–?—å?を設定しますã? {@value} */
122 private static final String VERSION = "5.1.6.0 (2010/05/01)" ;
123
124 private static final long serialVersionUID = 516020100501L ;
125
126 /** command 引数に渡す事ã?出来ã‚?コマンãƒ? 新è¦?{@value} */
127 public static final String CMD_NEW = "NEW" ;
128 /** command 引数に渡す事ã?出来ã‚?コマンãƒ? 再検索 {@value} */
129 public static final String CMD_RENEW = "RENEW" ;
130 /** command 引数に渡す事ã?出来ã‚?コマンãƒ?リスãƒ? */
131 private static final String[] COMMAND_LIST = new String[] { CMD_NEW , CMD_RENEW };
132
133 private String initctx = HybsSystem.sys( "LDAP_INITIAL_CONTEXT_FACTORY" );
134 private String providerURL = HybsSystem.sys( "LDAP_PROVIDER_URL" );
135 private String entrydn = HybsSystem.sys( "LDAP_ENTRYDN" );
136 private String password = HybsSystem.sys( "LDAP_PASSWORD" ); // 4.2.2.0 (2008/05/10)
137 private String searchbase = HybsSystem.sys( "LDAP_SEARCH_BASE" );
138 private String filter = null; // "employeeNumber=87019";
139
140 // 検索ç¯?›²。OBJECT_SCOPE、ONELEVEL_SCOPE、SUBTREE_SCOPE のどれか 1 つ
141 private String searchScope = HybsSystem.sys( "LDAP_SEARCH_SCOPE" );
142 private static final long COUNTLIMIT = 0; // 返すエントリのæœ?¤§数ã€? の場合ã?フィルタをæº?�Ÿすエントリをすべて返す
143 private int timeLimit = 0; // 結果が返されるまでのミリ秒数ã€? の場合ã?無制é™?
144 private String[] attrs = null; // エントリとä¸?·’に返される属æ?の識別子ã?null の場合ã?すべての属æ?を返す。空の場合ã?属æ?を返さなã�?
145 private String[] columns = null; // DBTableModel を作æ?する場合ã?カラãƒ?��になりますã?null の場合ã?、attributes 属æ?
146 private boolean returningObjFlag = false; // true の場合ã?エントリの名前にバインドされたオブジェクトを返す。false 場合ã?オブジェクトを返さなã�?
147 private boolean derefLinkFlag = false; // true の場合ã?検索中にリンクを間接参ç?する
148
149 private String tableId = HybsSystem.TBL_MDL_KEY; // session?·?°
150 private String orderBy = null; // ?¿?°???目(csv)
151 private String command = CMD_NEW; // ?º?�ンï¾?¾?
152 private int executeCount = 0; // 検索/実行件数
153 private int errCode = ErrorMessage.OK; // Ver4.3.1.1 (2008/09/05) 検索エラーコーãƒ?
154 private int maxRowCount = 0; // æœ?¤§検索数(0は無制é™?
155 // private String displayMsg = "MSG0033"; // 件検索しましたã€?
156 private String displayMsg = HybsSystem.sys( "VIEW_DISPLAY_MSG" );
157 private String overflowMsg = "MSG0007"; // 検索結果がã?制限行数をè¶?�ˆましたので、残りはカãƒ?ƒˆされましたã€?
158 private String notfoundMsg = "MSG0077"; // 対象ãƒ??タはありませんでしたã€?
159 private boolean isMainTrans = true; // 5.1.6.0 (2010/05/01) DBLastSqlの処ç�??見直ã�?
160
161 /**
162 * Taglibの終äº?‚¿グが見つかったときに処ç�?�™ã‚?doEndTag() ã‚?オーバã?ライドしますã?
163 *
164 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()で呼ぶã€?
165 * @og.rev 3.6.0.8 (2004/11/19) DBTableModel をセーブする時に、トランザクションチェãƒ?‚¯を行いますã?
166 * @og.rev 4.0.0.0 (2007/10/18) メãƒ?‚»ージリソース統å�? getResource().getMessage â‡?getResource().getLabel )
167 * @og.rev 4.3.1.1 (2008/09/03) 検索結果の件数、状況コードをリクエスト変数 "DB.COUNT"ã€?DB.ERR_CODE" にセãƒ?ƒˆするã€?
168 * @og.rev 5.1.6.0 (2010/05/01) DBLastSqlの処ç�??、DBTableModelが新規作æ?されたå?ç�?�§のみ行うã€?
169 *
170 * @return 後続å?ç�??æŒ?¤º
171 */
172 @Override
173 public int doEndTag() {
174 debugPrint(); // 4.0.0 (2005/02/28)
175
176 // QueryOptionTag のå†?ƒ¨で記述されたå?合ã?処ç�??
177 QueryOptionTag queryOption = (QueryOptionTag)findAncestorWithClass( this,QueryOptionTag.class );
178 if( queryOption != null ) {
179 queryOption.setTableModel( makeDBTable() );
180 return(EVAL_PAGE);
181 }
182
183 // 通常の LDAPQuery 処ç�?
184 if( check( command, COMMAND_LIST ) ) {
185 useMainTrans( isMainTrans ); // 5.1.6.0 (2010/05/01) DBLastSqlの処ç�??見直ã�?
186 startQueryTransaction( tableId ); // 3.6.0.8 (2004/11/19)
187
188 DBTableModel table = makeDBTable();
189
190 // 3.6.0.8 (2004/11/19) トランザクションチェãƒ?‚¯を行いますã?
191 if( ! commitTableObject( tableId, table ) ) {
192 jspPrint( "LDAPQueryTag Query処ç�?�Œ割り込まれましたã€?BTableModel は登録しませんã€? );
193 return (SKIP_PAGE);
194 }
195 StringBuilder buf = new StringBuilder( HybsSystem.BUFFER_SMALL );
196
197 // 実行件数の表示 command="NEW" のときã?み、displayMsg を表示させますã?
198 // 4.0.0 (2005/11/30) 出力é?の変更。ä¸?•ªæœ??に出力しますã?
199 if( CMD_NEW.equals( command ) ) {
200 if( executeCount > 0 && displayMsg != null && displayMsg.length() > 0 ) {
201 buf.append( executeCount );
202 buf.append( getResource().getLabel( displayMsg ) );
203 buf.append( HybsSystem.BR );
204 }
205 else if( executeCount == 0 && notfoundMsg != null && notfoundMsg.length() > 0 ) {
206 buf.append( getResource().getLabel( notfoundMsg ) );
207 buf.append( HybsSystem.BR );
208 }
209 }
210
211 if( maxRowCount > 0 && maxRowCount <= executeCount ) {
212 buf.append( getResource().getLabel( overflowMsg ) );
213 buf.append( HybsSystem.BR ).append( HybsSystem.CR );
214 }
215 // 4.3.1.1 (2008/09/03) 検索結果の件数、エラーコードをセãƒ?ƒˆするã€?
216 setRequestAttribute( "DB.COUNT" , String.valueOf( executeCount ) );
217 setRequestAttribute( "DB.ERR_CODE", String.valueOf( errCode ) );
218
219 jspPrint( buf.toString() );
220 }
221
222 return(EVAL_PAGE);
223 }
224
225 /**
226 * タグリブオブジェクトをリリースしますã?
227 * キャãƒ?‚·ュされて再利用されるã?で、フィールドã?初期設定を行いますã?
228 *
229 * @og.rev 2.0.0.4 (2002/09/27) カスタãƒ?‚¿グの release() メソãƒ?ƒ‰をã?追åŠ?
230 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()で呼ぶã€?
231 * @og.rev 4.2.2.0 (2008/05/10) password 追åŠ?
232 * @og.rev 5.1.6.0 (2010/05/01) DBLastSqlの処ç�??、DBTableModelが新規作æ?されたå?ç�?�§のみ行うã€?
233 *
234 */
235 @Override
236 protected void release2() {
237 super.release2();
238
239 searchScope = HybsSystem.sys( "LDAP_SEARCH_SCOPE" ); // 検索ç¯?›²。OBJECT_SCOPE、ONELEVEL_SCOPE、SUBTREE_SCOPE のどれか 1 つ
240 timeLimit = 0; // 結果が返されるまでのミリ秒数ã€? の場合ã?無制é™?
241 derefLinkFlag = false; // true の場合ã?検索中にリンクを間接参ç?する
242 returningObjFlag = false; // true の場合ã?エントリの名前にバインドされたオブジェクトを返す。false 場合ã?オブジェクトを返さなã�?
243 attrs = null; // エントリとä¸?·’に返される属æ?の識別子ã?null の場合ã?すべての属æ?を返す。空の場合ã?属æ?を返さなã�?
244 columns = null; // DBTableModel を作æ?する場合ã?カラãƒ?��になりますã?null の場合ã?、attributes 属æ?
245
246 initctx = HybsSystem.sys( "LDAP_INITIAL_CONTEXT_FACTORY" );
247 providerURL = HybsSystem.sys( "LDAP_PROVIDER_URL" );
248 entrydn = HybsSystem.sys( "LDAP_ENTRYDN" );
249 password = HybsSystem.sys( "LDAP_PASSWORD" ); // 4.2.2.0 (2008/05/10)
250 searchbase = HybsSystem.sys( "LDAP_SEARCH_BASE" );
251 filter = null; // "employeeNumber=87019";
252
253 tableId = HybsSystem.TBL_MDL_KEY; // session?·?°
254 orderBy = null; // ?¿?°???目(csv)
255 command = CMD_NEW; // ?º?�ンï¾?¾?
256 executeCount = 0; // 検索/実行件数
257 errCode = ErrorMessage.OK; // Ver4.3.1.1 (2008/09/05) 検索エラーコーãƒ?
258 maxRowCount = 0; // æœ?¤§検索数(0は無制é™?
259 // displayMsg = "MSG0033"; // 件検索しましたã€?
260 displayMsg = HybsSystem.sys( "VIEW_DISPLAY_MSG" );
261 overflowMsg = "MSG0007"; // 検索結果がã?制限行数をè¶?�ˆましたので、残りはカãƒ?ƒˆされましたã€? */
262 notfoundMsg = "MSG0077"; // 対象ãƒ??タはありませんでしたã€?
263 isMainTrans = true; // 5.1.6.0 (2010/05/01) DBLastSqlの処ç�??見直ã�?
264 }
265
266 /**
267 * LDPA から、å?を取りå?しã?DBTableModel を作æ?しますã?
268 *
269 * @og.rev 4.2.2.0 (2008/05/10) entrydn と、password 処ç�??追åŠ?
270 *
271 * @return ãƒ??ブルモãƒ?ƒ«
272 */
273 private DBTableModel makeDBTable() {
274 if( filter == null ) {
275 String errMsg = "S検索フィルターに null が指定されましたã€? ;
276 throw new HybsSystemException( errMsg );
277 }
278
279 LDAPSearch serch = new LDAPSearch();
280 serch.setSearchScope( searchScope ) ;
281 serch.setTimeLimit( timeLimit ) ;
282 serch.setDerefLinkFlag( derefLinkFlag ) ;
283 serch.setReturningObjFlag( returningObjFlag ) ;
284 serch.setMaxRowCount( maxRowCount ) ;
285 serch.setAttributes( attrs ) ;
286 serch.setInitctx( initctx ) ;
287 serch.setProviderURL( providerURL ) ;
288 serch.setSearchbase( searchbase ) ;
289 if( entrydn != null ) { serch.setEntrydn( entrydn ) ; } //4 .2.2.0 (2008/05/10)
290 if( password != null ) { serch.setPassword( password ) ; } //4 .2.2.0 (2008/05/10)
291 serch.setOrderBy( orderBy ) ;
292 serch.init();
293
294 List<String[]> list = serch.search( filter );
295 executeCount = list.size();
296
297 // DBTableModel table = DBTableModelUtil.newDBTable();
298 String[] ids = serch.getAttributes(); // attrs ã�?null の場合ã?全件。それ以外ã?、attrs
299
300 // DBTableModel に使用するカラãƒ?��の登録
301 if( columns != null && columns.length > 0 ) {
302 if( ids.length != columns.length ) {
303 String errMsg = "attributes 属æ?とcolumns属æ?の個数が異なりますã?"
304 + "attrs=[" + attrs.length + "]:" + StringUtil.array2csv( attrs )
305 + HybsSystem.CR
306 + " columns=[" + columns.length + "]:" + StringUtil.array2csv( columns )
307 + HybsSystem.CR ;
308 throw new HybsSystemException( errMsg );
309 }
310 for( int i=0; i<columns.length; i++ ) {
311 // columns にカラãƒ?��が設定されてã�?‚‹場合ã?み、使用するã€?
312 if( columns[i] != null && columns[i].length() > 0 ) {
313 ids[i] = columns[i];
314 }
315 }
316 }
317
318 DBTableModel table = null;
319 if( ids.length > 0 ) {
320 table = DBTableModelUtil.newDBTable();
321 table.init( ids.length );
322 for( int clm=0; clm<ids.length; clm++ ) {
323 DBColumn dbColumn = getResource().makeDBColumn( ids[clm] );
324 table.setDBColumn( clm,dbColumn );
325 }
326
327 for( int row=0; row<executeCount; row++ ) {
328 table.addColumnValues( list.get( row ) );
329 }
330 }
331 return table ;
332 }
333
334 /**
335 * 【TAG】検索ç¯?›²(OBJECT/ONELEVEL/SUBTREE)を設定しまã�?
336 * (初期値:LDAP_SEARCH_SCOPE[={@og.value org.opengion.hayabusa.common.SystemData#LDAP_SEARCH_SCOPE}])ã€?
337 *
338 * @og.tag
339 * 検索ç¯?›²ã‚?OBJECT_SCOPE、ONELEVEL_SCOPE、SUBTREE_SCOPE のどれか 1 つですã?
340 * æŒ?®š文字å?は、それぞれã?OBJECT』ã?ONELEVEL』ã?SUBTREE』ですã?
341 * (初期値:シスãƒ?ƒ 定数のLDAP_SEARCH_SCOPE[={@og.value org.opengion.hayabusa.common.SystemData#LDAP_SEARCH_SCOPE}])ã€?
342 *
343 * @param scope SearchControls の検索ç¯?›²
344 * @see org.opengion.hayabusa.common.SystemData#LDAP_SEARCH_SCOPE
345 */
346 public void setSearchScope( final String scope ) {
347 searchScope = nval( getRequestParameter( scope ), searchScope );
348 }
349
350 /**
351 * 【TAG】これらの SearchControls の時間制限をミリ秒単位で設定しまã�?初期値:0[無制限])ã€?
352 *
353 * @og.tag
354 * 値ã�?0 の場合ã?無制限にå¾?�¤ことを意味しますã?
355 *
356 * @param limit ミリ秒単位ã?時間制é™?初期値:無制é™?
357 */
358 public void setTimeLimit( final String limit ) {
359 timeLimit = nval( getRequestParameter( limit ), timeLimit );
360 }
361
362 /**
363 * 【TAG】検索中のリンクへの間接参ç?を有効またã?無効[true/false]にしまã�?初期値:false)ã€?
364 *
365 * @og.tag 検索中のリンクへの間接参ç?を有効またã?無効にしますã?
366 *
367 * @param deref リンクをé?参ç?する場合ã? true、そã�?�§なã�??合ã? false(初期値:false)
368 */
369 public void setDerefLinkFlag( final String deref ) {
370 derefLinkFlag = nval( getRequestParameter( deref ), derefLinkFlag );
371 }
372
373 /**
374 * 【TAG】結果のä¸?ƒ¨としてオブジェクトを返すことを有効またã?無効[true/false]にしまã�?初期値:false)ã€?
375 *
376 * @og.tag
377 * 無効にした場合ã?オブジェクトã?名前およびクラスã�?�‘が返されますã?
378 * 有効にした場合ã?オブジェクトが返されますã?
379 *
380 * @param pbjflag オブジェクトが返される場合ã? true、そã�?�§なã�??合ã? false(初期値:false)
381 */
382 public void setReturningObjFlag( final String pbjflag ) {
383 returningObjFlag = nval( getRequestParameter( pbjflag ), returningObjFlag );
384 }
385
386 /**
387 * 【TAG】レジストリのæœ?¤§検索件数をセãƒ?ƒˆしまã�?初期値:0[無制限])ã€?
388 *
389 * @og.tag
390 * DBTableModelのãƒ??タとして登録するæœ?¤§件数をこの値に設定しますã?
391 * サーバã?のメモリè³?º�と応答時間ã?確保ã?為ですã?
392 * 初期値はã€? は、無制限ですã?
393 *
394 * @param count レジストリのæœ?¤§検索件数
395 */
396 public void setMaxRowCount( final String count ) {
397 maxRowCount = nval( getRequestParameter( count ),maxRowCount );
398 }
399
400 /**
401 * 【TAG】検索のä¸?ƒ¨として返される属æ?をCSVでè¤?•°æŒ?®šしますã?
402 *
403 * @og.tag
404 * null は属æ?が何も返されなã�?�“とを示しますã?
405 * こã?メソãƒ?ƒ‰からは、空の配å?をセãƒ?ƒˆすることは出来ませんã€?
406 *
407 * @og.rev 3.5.6.2 (2004/07/05) 先に配å?にåˆ?§£してからリクエスト変数の値を取å¾?
408 * @og.rev 3.7.0.4 (2005/03/18) リクエスト変数の値を取得後ã?åˆ?§£しますã?
409 *
410 * @param val 返される属æ?を識別する属æ? ID のç¾??(カンマ区åˆ?‚Šæ–??
411 */
412 public void setAttributes( final String val ) {
413 String att = nval( getRequestParameter( val ),null );
414 if( att != null ) {
415 attrs = StringUtil.csv2Array( att );
416 }
417 }
418
419 /**
420 * 【TAG】作æ?する DBTableModel のカラãƒ?��をCSV形式でæŒ?®šしますã?
421 *
422 * @og.tag
423 * なにも指定しなã�??合ã?、attributes 属æ?が使用されますã?
424 * LDAP検索結果に、別名をつけるイメージで使用しますã?
425 *
426 * @og.rev 3.7.1.0 (2005/04/26) 新規追åŠ?
427 *
428 * @param clm 作æ?する DBTableModel のカラãƒ?��(カンマ区åˆ?‚Šæ–??
429 */
430 public void setColumns( final String clm ) {
431 String cl = nval( getRequestParameter( clm ),null );
432 if( cl != null ) {
433 columns = StringUtil.csv2Array( cl );
434 }
435 }
436
437 /**
438 * 【TAG】å?期コンãƒ?‚ストファクトリを指定しまã�?
439 * (初期値:LDAP_INITIAL_CONTEXT_FACTORY[={@og.value org.opengion.hayabusa.common.SystemData#LDAP_INITIAL_CONTEXT_FACTORY}])ã€?
440 *
441 * @og.tag
442 * ä¾?com.sun.jndi.ldap.LdapCtxFactory
443 * (初期値:シスãƒ?ƒ 定数のLDAP_INITIAL_CONTEXT_FACTORY[={@og.value org.opengion.hayabusa.common.SystemData#LDAP_INITIAL_CONTEXT_FACTORY}])ã€?
444 *
445 * @param ctx 初期コンãƒ?‚ストファクトリ
446 * @see org.opengion.hayabusa.common.SystemData#LDAP_INITIAL_CONTEXT_FACTORY
447 */
448 public void setInitctx( final String ctx ) {
449 initctx = nval( getRequestParameter( ctx ), initctx );
450 }
451
452 /**
453 * 【TAG】サービスプロバイãƒ??構æ?æƒ??を指定しまã�?
454 * (初期値:LDAP_PROVIDER_URL[={@og.value org.opengion.hayabusa.common.SystemData#LDAP_PROVIDER_URL}])ã€?
455 *
456 * @og.tag
457 * プロトコルとサーバã?とポã?トをæŒ?®šしますã?
458 * ä¾?『ldap://ldap.opengion.org:389ã€?
459 * (初期値:シスãƒ?ƒ 定数のLDAP_PROVIDER_URL[={@og.value org.opengion.hayabusa.common.SystemData#LDAP_PROVIDER_URL}])ã€?
460 *
461 * @param url サービスプロバイãƒ??構æ?æƒ??
462 * @see org.opengion.hayabusa.common.SystemData#LDAP_PROVIDER_URL
463 */
464 public void setProviderURL( final String url ) {
465 providerURL = nval( getRequestParameter( url ), providerURL );
466 }
467
468 /**
469 * 【TAG】検索するコンãƒ?‚ストまたã?オブジェクトã?名前を設定しまã�?
470 * (初期値:LDAP_SEARCH_BASE[={@og.value org.opengion.hayabusa.common.SystemData#LDAP_SEARCH_BASE}])ã€?
471 *
472 * @og.tag
473 * ä¾?『soOUID=employeeuser,o=opengion,c=JPã€?
474 * (初期値:シスãƒ?ƒ 定数のLDAP_SEARCH_BASE[={@og.value org.opengion.hayabusa.common.SystemData#LDAP_SEARCH_BASE}])ã€?
475 *
476 * @param base 検索ベã?ス
477 * @see org.opengion.hayabusa.common.SystemData#LDAP_SEARCH_BASE
478 */
479 public void setSearchbase( final String base ) {
480 searchbase = nval( getRequestParameter( base ), searchbase );
481 }
482
483 /**
484 * 【TAG】検索に使用するフィルタå¼?例:belongOUID=61200)ã€?
485 *
486 * @og.tag
487 * ä¾?『belongOUID=61200ã€?
488 *
489 * @param siki フィルタå¼?
490 */
491 public void setFilter( final String siki ) {
492 filter = nval( getRequestParameter( siki ), filter );
493 }
494
495 /**
496 * 【TAG】属æ?の取得å?のオブジェクトã?名前を設定しまã�?
497 * (初期値:LDAP_ENTRYDN[={@og.value org.opengion.hayabusa.common.SystemData#LDAP_ENTRYDN}])ã€?
498 *
499 * @og.tag
500 * ä¾?『soOUID=opengion-sys,o=opengion,c=JPã€?
501 * (初期値:シスãƒ?ƒ 定数のLDAP_ENTRYDN[={@og.value org.opengion.hayabusa.common.SystemData#LDAP_ENTRYDN}])ã€?
502 *
503 * @og.rev 4.2.2.0 (2008/05/10) 初期値変更
504 *
505 * @param dn 取得å?のオブジェクトã?名前
506 * @see org.opengion.hayabusa.common.SystemData#LDAP_ENTRYDN
507 */
508 public void setEntrydn( final String dn ) {
509 entrydn = nval( getRequestParameter( dn ), entrydn );
510 }
511
512 /**
513 * 【TAG】属æ?の取得å?のオブジェクトã?パスワードを設定しまã�?
514 * (初期値:LDAP_PASSWORD[={@og.value org.opengion.hayabusa.common.SystemData#LDAP_PASSWORD}])ã€?
515 *
516 * @og.tag
517 * (初期値:シスãƒ?ƒ 定数のLDAP_PASSWORD[={@og.value org.opengion.hayabusa.common.SystemData#LDAP_PASSWORD}])ã€?
518 *
519 * @og.rev 4.2.2.0 (2008/05/10) 新規追åŠ?
520 *
521 * @param pwd 取得å?のオブジェクトã?パスワーãƒ?
522 * @see org.opengion.hayabusa.common.SystemData#LDAP_PASSWORD
523 */
524 public void setPassword( final String pwd ) {
525 password = nval( getRequestParameter( pwd ), password );
526 }
527
528 /**
529 * 【TAGã€?通常は使ã�?�¾せん)結果のDBTableModelをã?sessionに登録するときã?キーを指定しまã�?
530 * (初期値:HybsSystem#TBL_MDL_KEY[={@og.value org.opengion.hayabusa.common.HybsSystem#TBL_MDL_KEY}])ã€?
531 *
532 * @og.tag
533 * 検索結果より、DBTableModelオブジェクトを作æ?しますã?これをã?下流ã?viewタグ等に
534 * 渡すå?合にã€??常は、session を利用しますã?そã?場合ã?登録キーですã?
535 * query タグを同時に実行して、結果を求めるå?合ã?同ä¸?ƒ¡モリに配置される為ã€?
536 * こã? tableId 属æ?を利用して、メモリ空間をåˆ?�‘ますã?
537 * (初期値:HybsSystem#TBL_MDL_KEY[={@og.value org.opengion.hayabusa.common.HybsSystem#TBL_MDL_KEY}])ã€?
538 *
539 * @param id sessionに登録する時ã? ID
540 */
541 public void setTableId( final String id ) {
542 tableId = nval( getRequestParameter( id ), tableId );
543 }
544
545 /**
546 * 【TAG】検索した結果を表示する表示é ?‚’ファイル属æ?名でæŒ?®šしますã?
547 *
548 * @og.tag
549 * attributes 属æ?でæŒ?®šするキー、またã?、LDAPから返されたキーにつã�?�¦
550 * そã?属æ?でソートしますã?é€??を行う場合ã?、DESC を指定ã?カラãƒ?��の後ろに
551 * 付けて下さã�??
552 *
553 * @param ordr ソートキーを指定ã?
554 */
555 public void setOrderBy( final String ordr ) {
556 orderBy = nval( getRequestParameter( ordr ), orderBy );
557 if( orderBy != null ) { orderBy = orderBy.toUpperCase(Locale.JAPAN) ; }
558 }
559
560 /**
561 * 【TAG】コマンãƒ?NEW,RENEW)をセãƒ?ƒˆしまã�?初期値:NEW)ã€?
562 *
563 * @og.tag
564 * コマンドã?,HTMLから(get/post)æŒ?®šされますã?で,CMD_xxx で設定される
565 * フィールド定数値のã�?�¥れかをã?æŒ?®šできますã?
566 * 何も設定されなã�??またã?、null の場合ã?ã€?NEW" がå?期å?にセãƒ?ƒˆされますã?
567 *
568 * @param cmd コマンãƒ?public static final 宣è¨?�•れてã�?‚‹æ–?—å?)
569 * @see <a href="../../../../constant-values.html#org.opengion.hayabusa.taglib.LDAPQueryTag.CMD_NEW">コマンド定数</a>
570 */
571 public void setCommand( final String cmd ) {
572 String cmd2 = getRequestParameter( cmd );
573 if( cmd2 != null && cmd2.length() > 0 ) { command = cmd2.toUpperCase(Locale.JAPAN); }
574 }
575
576 /**
577 * 【TAG】検索結果を画面上に表示するメãƒ?‚»ージリソースIDを指定しまã�?初期値は検索件数)ã€?
578 *
579 * @og.tag
580 * ここでは、検索結果の件数ã‚?™»録された件数をまずå?力しã€?
581 * そã?次に、ここでæŒ?®šしたメãƒ?‚»ージをリソースから取得して
582 * 表示しますã?
583 * 表示させたくなã�??合ã?, displayMsg = "" をセãƒ?ƒˆしてくださいã€?
584 * 初期値は、検索件数を表示しますã?
585 *
586 * @param id ãƒ?‚£スプレイに表示させるメãƒ?‚»ージ ID
587 */
588 public void setDisplayMsg( final String id ) {
589 displayMsg = getRequestParameter( id );
590 }
591
592 /**
593 * 【TAG】検索結果がゼロ件の場合に表示するメãƒ?‚»ージリソースIDを指定しまã�?初期値:MSG0077[対象ãƒ??タはありませんでした])ã€?
594 *
595 * @og.tag
596 * ここでは、検索結果がゼロ件の場合ã?み、特別なメãƒ?‚»ージを表示させますã?
597 * 従来は、displayMsg と兼用で、ã?0ã€?»¶検索しました』とã�?�†表示でしたがã?
598 * displayMsg の初期表示は、OFF になりましたので、ゼロ件の場合ã?み別に表示させますã?
599 * 表示させたくなã�??合ã?, notfoundMsg = "" をセãƒ?ƒˆしてくださいã€?
600 * 初期値は、MSG0077[対象ãƒ??タはありませんでした]ですã?
601 *
602 * @param id ãƒ?‚£スプレイに表示させるメãƒ?‚»ージ ID
603 */
604 public void setNotfoundMsg( final String id ) {
605 String ids = getRequestParameter( id );
606 if( ids != null ) { notfoundMsg = ids; }
607 }
608
609 /**
610 * 【TAG】オーバã?フロー時に画面上に表示するメãƒ?‚»ージIDを指定しまã�?初期値:MSG0007)ã€?
611 *
612 * @og.tag
613 * 表示させたくなã�??合ã?, overflowMsg = "" をセãƒ?ƒˆしてくださいã€?
614 *
615 * @param id ãƒ?‚£スプレイに表示させるメãƒ?‚»ージ ID
616 */
617 public void setOverflowMsg( final String id ) {
618 overflowMsg = getRequestParameter( id );
619 }
620
621 /**
622 * 【TAGã€?通常使ã�?�¾せん)タグで処ç�?�•れる処ç�?�Œメインとなるトランザクション処ç�?�‹どã�?�‹を指定しまã�?初期値:false)ã€?
623 *
624 * @og.tag
625 * こã?値は、ファイルãƒ?‚¦ンロードå?ç�?�«影響しますã?こã?値がtrueにæŒ?®šされた時にcommitされたDBTableModelã�?
626 * ファイルãƒ?‚¦ンロードã?対象の表になりますã?
627 *
628 * こã?パラメーターはã€??常、各タグにより実è£?�•れã?ユーザーが指定するå¿?¦�ã?ありませんã€?
629 * ä½?�—ã€?つのJSPå†?�§DBTableModelがè¤?•°生æ?されるå?合に、前に処ç�?�—たDBTableModelにつã�?�¦ファイルãƒ?‚¦ンロードをさせたい
630 * 場合ã?、後ろでDBTableModelを生成するタグで、æ?示çš?�«こã?値をfalseにæŒ?®šすることで、ファイルãƒ?‚¦ンロードå?ç�??対象から
631 * 除外することができますã?
632 *
633 * @og.rev 5.1.6.0 (2010/05/01) 新規作æ?
634 *
635 * @param flag メイントランザクションかどã�?�‹
636 */
637 public void setMainTrans( final String flag ) {
638 isMainTrans = nval( getRequestParameter( flag ),isMainTrans );
639 }
640
641 /**
642 * こã?オブジェクトã?æ–?—å?表現を返しますã?
643 * 基本çš?�«ãƒ?ƒ�ãƒ?‚°目çš?�«使用しますã?
644 *
645 * @return こã?クラスのæ–?—å?表現
646 */
647 @Override
648 public String toString() {
649 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
650 .println( "VERSION" ,VERSION )
651 .println( "initctx" ,initctx )
652 .println( "providerURL" ,providerURL )
653 .println( "entrydn" ,entrydn )
654 .println( "searchbase" ,searchbase )
655 .println( "filter" ,filter )
656 .println( "searchScope" ,searchScope )
657 .println( "COUNTLIMIT" ,COUNTLIMIT )
658 .println( "timeLimit" ,timeLimit )
659 .println( "attrs" ,attrs )
660 .println( "columns" ,columns )
661 .println( "returningObjFlag" ,returningObjFlag)
662 .println( "derefLinkFlag" ,derefLinkFlag )
663 .println( "tableId" ,tableId )
664 .println( "orderBy" ,orderBy )
665 .println( "command" ,command )
666 .println( "executeCount" ,executeCount )
667 .println( "errCode" ,errCode )
668 .println( "maxRowCount" ,maxRowCount )
669 .println( "displayMsg" ,displayMsg )
670 .println( "overflowMsg" ,overflowMsg )
671 .println( "Other..." ,getAttributes().getAttribute() )
672 .fixForm().toString() ;
673 }
674 }