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      = "(&(|(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    }