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.resource.GUIInfo;
022    import org.opengion.fukurou.util.XHTMLTag;
023    import org.opengion.fukurou.util.StringUtil;
024    
025    import static org.opengion.fukurou.util.StringUtil.nval ;
026    
027    import java.io.ObjectOutputStream;
028    import java.io.ObjectInputStream;
029    import java.io.IOException;
030    
031    /**
032     * フレーãƒ?‚’作æ?ã™ã‚‹HTML拡張タグã§ã€å¼•æ•°ã®å—ã‘æ¸¡ã—ãŒå¯èƒ½ã§ã™ã?
033     *
034     * @og.formSample
035     * â—å½¢å¼ï¼?lt;og:frame src="…" name="…" />
036     * â—body?šãªã?
037     *
038     * â—Tag定義??
039     *   <og:frame
040     *       src              â—‹ã?HTML】フレーãƒ?«è¡¨ç¤ºã™ã‚‹ã‚½ãƒ¼ã‚¹ãƒ•ァイルを指定ã—ã¾ã?å¿??)ã€?
041     *       name             â—‹ã?HTML】フレーãƒ?を指定ã—ã¾ã?例:QUERY,RESULT,CONTENTS ãªã©)(å¿??)ã€?
042     *       changeGamen        ã€TAG】ソースæŒ?®šã?ç”»é¢ã‚’変更ã—ã¾ã?
043     *       keys               ã€TAG】引数を指定ã—ã¾ã?
044     *       dbTable            ã€TAG】å‰ãƒšã?ジã§é¸æŠžã—ãŸãƒ‡ãƒ¼ã‚¿åˆ—ã?æƒ??を次ã®ãƒšã?ã‚¸ã«æ¸¡ã™ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)
045     *       longdesc           ã€HTML】フレーãƒ?«é–¢ã™ã‚‹è©³ã—ã„説明ã?ã‚ã‚‹URL(lobgdesc)を指定ã—ã¾ã?
046     *       marginwidth        ã€HTML】フレーãƒ??å·¦å³ä½™ç™½ã‚µã‚¤ã‚º(marginwidth)を指定ã—ã¾ã?
047     *       marginheight       ã€HTML】フレーãƒ??上下余白サイズ(marginheight)を指定ã—ã¾ã?
048     *       noresize           ã€HTML】フレーãƒ?‚µã‚¤ã‚ºã‚’変更ã§ããªã?‚ˆã?noresize)ã«æŒ?®šã—ã¾ã?
049     *       scrolling          ã€HTML】スクロールãƒã?(scrolling)ã®è¡¨ç¤º/éžè¡¨ç¤º[auto/yes/no]を指定ã—ã¾ã?åˆæœŸå€¤:auto)
050     *       frameborder        ã€HTML】フレーãƒ??å¢?•Œç·?frameborder)ã®[0:éžè¡¨ç¤º/1:表示]を指定ã—ã¾ã?åˆæœŸå€¤:1)
051     *       id                 ã€HTML】è¦ç´?«å¯¾ã—ã¦å›ºæœ‰ã?åå‰(id)ã‚’ã¤ã‘ã‚‹å ´åˆã«è¨­å®šã—ã¾ã?
052     *       clazz              ã€HTML】è¦ç´?«å¯¾ã—㦠class 属æ?を設定ã—ã¾ã?
053     *       title              ã€HTML】è¦ç´?«å¯¾ã™ã‚‹è£œè¶³çš?ƒ…å ±(title)を設定ã—ã¾ã?
054     *       style              ã€HTML】ã“ã®è¦ç´?«å¯¾ã—ã¦é©ç”¨ã•ã›ã‚‹ã‚¹ã‚¿ã‚¤ãƒ«ã‚·ãƒ¼ãƒ?style)を設定ã—ã¾ã?
055     *       caseKey            ã€TAG】ã“ã®ã‚¿ã‚°è‡ªä½“を利用ã™ã‚‹ã‹ã©ã?‹ã®æ¡ä»¶ã‚­ãƒ¼ã‚’指定ã—ã¾ã?åˆæœŸå€¤:null) 5.7.7.2 (2014/06/20)
056     *       caseVal            ã€TAG】ã“ã®ã‚¿ã‚°è‡ªä½“を利用ã™ã‚‹ã‹ã©ã?‹ã®æ¡ä»¶å€¤ã‚’指定ã—ã¾ã?åˆæœŸå€¤:null) 5.7.7.2 (2014/06/20)
057     *       caseNN             ã€TAG】指定ã?値ãŒã?null/ゼロæ–?­—å? ã§ãªã??å?Not Null=NN)ã¯ã€ã“ã®ã‚¿ã‚°ã¯ä½¿ç”¨ã•れã¾ã?åˆæœŸå€¤:true) 5.7.7.2 (2014/06/20)
058     *       caseNull           ã€TAG】指定ã?値ãŒã?null/ゼロæ–?­—å? ã®å ´åˆã?ã€ã“ã®ã‚¿ã‚°ã¯ä½¿ç”¨ã•れã¾ã?åˆæœŸå€¤:true) 5.7.7.2 (2014/06/20)
059     *       debug              ã€TAG】デãƒãƒƒã‚°æƒ??ã‚’å?力ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)
060     *   />
061     *
062     * â—使用例ï¼?
063     *    ・ä¸?ˆ¬çš?ªä¾‹ï¼šãƒ•レーãƒ??割ã™ã‚‹æ§‹æ–‡ã¯ã€HTML準拠。リクエスト変数ã¯å?ƒ•レーãƒ?¾ã§è»¢é€ã•れã¾ã™ã?
064     *    <frameset>
065     *        <og:frame marginheight="2" marginwidth="2" src="query.jsp"   name="QUERY"  />
066     *        <og:frame marginheight="2" marginwidth="2" src="forward.jsp" name="RESULT" />
067     *    </frameset>
068     *
069     *    ・DBTableModel ã®å€¤(例ã§ã¯PN)ã‚’ã?å–り出ã—ã¦ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã¨ã—ã¦åˆ©ç”¨ã—ã¾ã™ã?
070     *      ç¾çжã§ã¯ã€commonForward ã‚¿ã‚° ã® useTableData="true" dbkeys="{@dbkeys}" 属æ?を利用ã—ã¾ã™ã?
071     *    <frameset>
072     *        <og:frame marginheight="2" marginwidth="2" src="query.jsp"   name="QUERY"  keys="PN" dbTable="true" />
073     *        <og:frame marginheight="2" marginwidth="2" src="forward.jsp" name="RESULT" keys="PN" dbTable="true" />
074     *    </frameset>
075     *
076     *    ・changeGamen 属æ?を利用ã—ã¦ã€ã‚½ãƒ¼ã‚¹æŒ?®šã?ç”»é¢ã‚’å?り替ãˆã¾ã™ã?
077     *      ãŸã¨ãˆã?ã€jsp/index.jsp ã§ã¯ã€GAMENID属æ?ãŒURLã«å­˜åœ¨ã™ã‚‹å ´åˆã?直接ãã?ç”»é¢ã‚?
078     *      表示ã•ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã?
079     *    <frameset cols="160,*,0" frameborder="1" framespacing="1">
080     *        <og:frame marginheight="2" marginwidth="2" src="menu/menu.jsp"    name="MENU" />
081     *        <og:frame marginheight="2" marginwidth="2" src="GE0000/index.jsp" name="CONTENTS"
082     *                                                    changeGamen="{@GAMENID}" />
083     *    </frameset>
084     *
085     * @og.group ç”»é¢éƒ¨å“?
086     *
087     * @version  4.0
088     * @author       Kazuhiko Hasegawa
089     * @since    JDK5.0,
090     */
091    public class FrameTag extends HTMLTagSupport {
092            //* ã“ã?プログラãƒ??VERSIONæ–?­—å?を設定ã—ã¾ã™ã?       {@value} */
093            private static final String VERSION = "4.2.1.1 (2008/04/30)" ;
094    
095            private static final long serialVersionUID = 421120080430L ;
096    
097            private String                  tableId         = HybsSystem.TBL_MDL_KEY;
098            private String                  changeGmn       = null;
099            private String                  keys            = null;
100            private transient DBTableModel  table           = null;
101            private boolean                 dbTable         = false;
102    
103            // 3.5.2.0 (2003/10/20) シスãƒ?ƒ ãƒ‘ラメータ ã® FRAME_UNDER_BAR_REQUEST_KEY_USED を使用ã€?
104            private final boolean UNDER_BAR_KEY_USED = HybsSystem.sysBool( "FRAME_UNDER_BAR_REQUEST_KEY_USED" );
105    
106            /**
107             * タグリブオブジェクトをリリースã—ã¾ã™ã?
108             * キャãƒ?‚·ãƒ¥ã•れã¦å†åˆ©ç”¨ã•れるã?ã§ã€ãƒ•ィールドã?åˆæœŸè¨­å®šã‚’行ã„ã¾ã™ã?
109             *
110             * @og.rev 2.0.0.4 (2002/09/27) カスタãƒ?‚¿ã‚°ã® release() メソãƒ?ƒ‰ã‚’ã?追åŠ?
111             * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()ã§å‘¼ã¶ã€?
112             *
113             */
114            @Override
115            protected void release2() {
116                    super.release2();
117                    tableId         = HybsSystem.TBL_MDL_KEY;
118                    changeGmn       = null;         // 4.0.0 (2005/02/28)
119                    keys            = null;
120                    table           = null;
121                    dbTable         = false;
122            }
123    
124            /**
125             * リンクを作æ?ã—ã¾ã™ã?
126             *
127             * @og.rev 3.5.4.0 (2003/11/25) comand="RENEW" 時ã«ã¯ã€dbTable 属æ?ã¯ã€å¼·åˆ¶çš?« false ã¨ã—ã¾ã™ã?
128             *
129             * @return      リンクタグæ–?­—å?
130             */
131            @Override
132            protected String makeTag() {
133                    if( changeGmn != null ) { set( "src",changeGmn ); }
134    
135                    String cmd = getRequest().getParameter( "command" );
136                    if( "RENEW".equals( cmd ) ) { dbTable = false; }
137    
138                    setIdName();
139                    String urlEnc = getUrlEncode();
140                    return XHTMLTag.frame( getAttributes(),urlEnc );
141            }
142    
143            /**
144             * id 属æ? / name 属æ? ã‚»ãƒ?ƒˆ
145             *
146             * フレーãƒ?㯠id 属æ?ã§ç™»éŒ²ã™ã‚‹(XHTML) äº’æ›æ€§ã®ãŸã‚ã€?
147             * id 属æ?㨠name 属æ?ã«ã¯åŒã˜å€¤ã‚’ã‚»ãƒ?ƒˆã—ã¦ãŠãã€?
148             *
149             */
150            private void setIdName() {
151                    String idno     = get( "id" );
152                    String name = get( "name" );
153                    if( idno == null || idno.length() == 0 ) {
154                            if( name != null && name.length() > 0 ) {
155                                    set( "id", name );
156                            }
157                            else {
158                                    String errMsg = "id 属æ?ã?name 属æ?ã®ã©ã¡ã‚‰ã‹ã¯ç™»éŒ²ã—ã¦ãã ã•ã„ã€?;
159                                    throw new HybsSystemException( errMsg );
160                            }
161                    }
162                    else {
163                            set( "name", idno );
164                    }
165            }
166    
167            /**
168             * keys 属æ? ã‚’å?ã«ã€requestæƒ??より values ã®å€¤ã‚’å–り込ã‚??
169             *
170             * keys属æ?㯠キーæƒ??ãŒã‚«ãƒ³ãƒžåŒºåˆ?‚Šã«ãªã£ã¦ã?‚‹ç‚º,ã°ã‚‰ã—ã¦
171             * values属æ?ã®é…å?ã«ä¸?¤ã¥ã¤è¨­å®šã—ã¦ã?ã¾ã™ã?
172             *
173             * @og.rev 2.0.0.2 (2002/09/24) æ¤œç´¢çµæžœã®å€¤ã‚’å–り込ã‚ã¦ã?ªã‹ã£ãŸãƒã‚°ã‚’修正ã€?
174             * @og.rev 2.1.1.1 (2002/11/15) é¸æŠžè¡Œæƒ…å ±ã‚’å–り込ã‚ã¦ã?ªã‹ã£ãŸãƒã‚°ã‚’修正ã€?
175             * @og.rev 3.4.0.3 (2003/09/10) DBTableModelã¸ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆæƒ…報をURLã«é€£çµã—ãªã?‚ˆã?«å¤‰æ›´ã€?
176             * @og.rev 4.0.0.0 (2005/01/31) getParameterRows() を使用ã™ã‚‹ã‚ˆã†ã«å¤‰æ›´
177             *
178             * @return      URLエンコードã•ã‚ŒãŸæ–?­—å?
179             */
180            private String getUrlEncode() {
181                    int[] rowNo = getParameterRows();               // 4.0.0 (2005/01/31)
182                    int selcount = rowNo.length;    // 4.0.0 (2005/01/31)
183    
184                    String[] key = (String[])StringUtil.enume2Array( getParameterNames(), new String[0] );
185                    String[] dbkey = null;
186    
187                    int dbcount = 0;
188    
189                    int recount = 0;
190                    for( int i=0; i<key.length; i++ ) {
191                            if( isNormalRequestKey( key[i] ) ) {    // 3.4.0.3 (2003/09/10)
192                                    recount++;
193                            }
194                    }
195    
196                    if( keys != null && dbTable && selcount > 0 ) {
197                            dbkey = StringUtil.csv2Array( keys );
198                            dbcount = dbkey.length;
199                    }
200    
201                    String[] val  = new String[ recount + dbcount + selcount ];
202                    String[] keyt = new String[ recount + dbcount + selcount ];
203    
204                    int j = 0;
205                    for( int i=0; i<key.length; i++ ) {
206                            if( isNormalRequestKey( key[i] ) ) {    // 3.4.0.3 (2003/09/10)
207                                    keyt[j] = key[i];
208                                    val[j]  = getRequestValue( key[i] );
209                                    j++;
210                            }
211                    }
212    
213                    if( dbTable && dbcount > 0 ) {
214                            table = (DBTableModel)getSessionAttribute( tableId );
215                            if( table != null ) {
216                                    for( int i=0; i<dbcount; i++ ) {
217                                            keyt[recount + i] = dbkey[i];
218                                            val[recount +i]  = table.getValue(rowNo[0],table.getColumnNo( dbkey[i] ));
219                                    }
220                            }
221                    }
222    
223                    // 4.0.0 (2005/01/31) selectedæ–?­—é?列をrowNoæ•°å­—é?列ã«å¤‰æ›´
224                    for( int i=0; i<selcount; i++ ) {
225                            keyt[recount + dbcount + i] = HybsSystem.ROW_SEL_KEY;
226                            val[recount + dbcount + i]      = String.valueOf( rowNo[i] );
227                    }
228    
229                    return XHTMLTag.urlEncode( keyt,val );
230            }
231    
232            /**
233             * ã€HTML】フレーãƒ?«è¡¨ç¤ºã™ã‚‹ã‚½ãƒ¼ã‚¹ãƒ•ァイルを指定ã—ã¾ã™ã?
234             *
235             * @og.tag フレーãƒ?«è¡¨ç¤ºã™ã‚‹ã‚½ãƒ¼ã‚¹ãƒ•ァイルを指定ã—ã¾ã™ã?
236             *
237             * @param       src ソースファイル
238             */
239            public void setSrc( final String src ) {
240                    set( "src",getRequestParameter( src ) );
241            }
242    
243            /**
244             * ã€HTML】フレーãƒ?を指定ã—ã¾ã?例:QUERY,RESULT,CONTENTS ãªã©)ã€?
245             *
246             * @og.tag フレーãƒ?を指定ã—ã¾ã™ã?
247             *
248             * @param       name フレー�
249             */
250            public void setName( final String name ) {
251                    set( "name",getRequestParameter( name ) );
252            }
253    
254            /**
255             * ã€HTML】フレーãƒ?«é–¢ã™ã‚‹è©³ã—ã„説明ã?ã‚ã‚‹URL(lobgdesc)を指定ã—ã¾ã™ã?
256             *
257             * @og.tag lobgdescを指定ã—ã¾ã™ã?
258             *
259             * @param       longdesc 詳ã—ã„説明ã?ã‚ã‚‹URL
260             */
261            public void setLongdesc( final String longdesc ) {
262                    set( "longdesc",getRequestParameter( longdesc ) );
263            }
264    
265            /**
266             * ã€HTML】フレーãƒ??å·¦å³ä½™ç™½ã‚µã‚¤ã‚º(marginwidth)を指定ã—ã¾ã™ã?
267             *
268             * @og.tag フレーãƒ??å·¦å³ä½™ç™½ã‚µã‚¤ã‚ºã‚’指定ã—ã¾ã™ã?
269             *
270             * @param       marginwidth å·¦å³ä½™ç™½ã‚µã‚¤ã‚º
271             */
272            public void setMarginwidth( final String marginwidth ) {
273                    set( "marginwidth",getRequestParameter( marginwidth ) );
274            }
275    
276            /**
277             * ã€HTML】フレーãƒ??上下余白サイズ(marginheight)を指定ã—ã¾ã™ã?
278             *
279             * @og.tag フレーãƒ??上下余白サイズを指定ã—ã¾ã™ã?
280             *
281             * @param       marginheight 上下余白サイズ
282             */
283            public void setMarginheight( final String marginheight ) {
284                    set( "marginheight",getRequestParameter( marginheight ) );
285            }
286    
287            /**
288             * ã€HTML】フレーãƒ?‚µã‚¤ã‚ºã‚’変更ã§ããªã?‚ˆã?noresize)ã«æŒ?®šã—ã¾ã™ã?
289             *
290             * @og.tag フレーãƒ?‚µã‚¤ã‚ºã‚’変更ã§ããªã?‚ˆã?«æŒ?®šã—ã¾ã™ã?
291             *
292             * @param       noresize フレーãƒ?‚µã‚¤ã‚ºã‚’変更ã•ã›ãªã??åˆã?ã€?noresize" を指定ã—ã¾ã™ã?
293             */
294            public void setNoresize( final String noresize ) {
295                    String ns = getRequestParameter( noresize );
296                    if( ns != null ) { set( "noresize", "noresize" ); }
297            }
298    
299            /**
300             * ã€HTML】スクロールãƒã?(scrolling)ã®è¡¨ç¤º/éžè¡¨ç¤º[auto/yes/no]を指定ã—ã¾ã?åˆæœŸå€¤:auto)ã€?
301             *
302             * @og.tag
303             * auto:å¿?¦ã«å¿œã˜ã¦ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«ãƒã?を表示(åˆæœŸå€¤)
304             * yes:常ã«ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«ãƒã?を表示
305             * no:常ã«ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«ãƒã?を表示ã—ãªã?
306             *
307             * @param       scrolling  スクロールãƒã?ã®è¡¨ç¤º/éžè¡¨ç¤º[auto:自å‹?yes:常時表示/no:éžè¡¨ç¤º]
308             */
309            public void setScrolling( final String scrolling ) {
310                    set( "scrolling",getRequestParameter( scrolling ) );
311            }
312    
313            /**
314             * ã€HTML】フレーãƒ??å¢?•Œç·?frameborder)ã®[0:éžè¡¨ç¤º/1:表示]を指定ã—ã¾ã?åˆæœŸå€¤:1)ã€?
315             *
316             * @og.tag
317             * 0:æž?‚’表示ã—ãªã?
318             * 1:æž?‚’表示ã™ã‚‹ã€?
319             * åˆæœŸå€¤ã¯ã€?:æž?‚’表示ã™ã‚‹ ã§ã™ã?
320             *
321             * @param       frameborder     フレーãƒ??å¢?•Œç·š[0:æž?žè¡¨ç¤º/1:æž?¡¨ç¤º]
322             */
323            public void setFrameborder( final String frameborder ) {
324                    set( "frameborder",getRequestParameter( frameborder ) );
325            }
326    
327            /**
328             * ã€TAG】ソースæŒ?®šã?ç”»é¢ã‚’変更ã—ã¾ã™ã?
329             *
330             * @og.tag
331             * src æŒ?®šãŒãƒ?ƒ•ォルト設定ã§ã€changeGamen属æ?ãŒè¨­å®šã•れã¦ã?‚‹
332             * å ´åˆã«ã¯ã€ã“ã®å€¤ãŒå„ªå…ˆã•れã¾ã™ã?
333             * changeGamen ã¯ã€ç”»é¢IDã®ã¿æŒ?®šã—ã¦ãã ã•ã„。src ã«ã¯ã€ã“ã®ID??/index.jsp" ã?
334             * 追åŠ?•れã¾ã™ã?ã¤ã¾ã‚Šã?changeGamen="{&#064;GAMENID}" ã¨ã?†æŒ?®šã‚’ã—ã¦ãŠã‘ã°ã€?
335             * FavoriteLinkTag ç­‰ã§å¼•æ•°ã« GAMENID ãŒæŒ‡å®šã•れãŸå ´åˆã?ã¿ã€ã“ã®å±žæ?ãŒæœ‰åйã«ãªã‚Šã?
336             * src="実画é¢ID/index.jsp" ãŒæŒ‡å®šã•れãŸã“ã¨ã¨åŒã˜çµæžœã«ãªã‚Šã¾ã™ã?
337             *
338             * @og.rev 3.1.2.0 (2003/04/07) ç”»é¢IDã¨å®Ÿç”»é¢ãƒ?‚£ãƒ¬ã‚¯ãƒˆãƒªã¨ã®é–¢é€£è¦‹ç›´ã?DIRã®ä»£ã‚Šã«GAMENIDを推奨)
339             * @og.rev 4.2.1.1 (2008/04/30) ç”»é¢åˆ?‚Šæ›¿ãˆã‚’ã™ã‚‹ã®ã¯ã€ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒè¨­å®šã•れã„ã‚‹å?åˆã«é™ã‚‹
340             * @param       src     ç½®æ›ãˆã‚½ãƒ¼ã‚¹
341             */
342            public void setChangeGamen( final String src ) {
343                    String sc = nval( getRequestParameter( src ),changeGmn );
344                    if( sc != null ) {
345                            GUIInfo guiInfo = getGUIInfo( sc );
346                            if( guiInfo != null && guiInfo.getAddress() != null && guiInfo.getAddress().length() > 0 ) { // 見ã¤ã‹ã‚‰ãªã??åˆã?ã€ã‚¢ã‚¯ã‚»ã‚¹ä¸å¯
347                                    changeGmn = guiInfo.getRealAddress( "index.jsp" );
348                            }
349                    }
350            }
351    
352            /**
353             * ã€TAG】引数を指定ã—ã¾ã™ã?
354             *
355             * @og.tag
356             * URL ã®å¼•æ•°ã«ã‚»ãƒ?ƒˆã™ã‚‹ã‚­ãƒ¼ã‚?カンマ区åˆ?‚Šã§ã‚»ãƒ?ƒˆã—ã¾ã™ã?
357             *
358             * @param       key 引数
359             */
360            public void setKeys( final String key ) {
361                    keys = getRequestParameter( key ) ;
362            }
363    
364            /**
365             * ã€TAG】å‰ãƒšã?ジã§é¸æŠžã—ãŸãƒ‡ãƒ¼ã‚¿åˆ—ã?æƒ??を次ã®ãƒšã?ã‚¸ã«æ¸¡ã™ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)ã€?
366             *
367             * @og.tag
368             * ãŸã ã—ã??‘行å?ã®ãƒ??ã‚¿ã®ã¿ã§ã™ã?(è¤?•°é¸æŠžæ™‚ã¯ã€æœ€åˆã??‘ä»¶ç›®)
369             * true:渡ã?
370             * false:渡ã•ãªã??
371             * åˆæœŸå€¤ã¯ã€false:渡ã•ãªã?ã§ã™ã?
372             *
373             * @param       db é¸æŠžãƒ‡ãƒ¼ã‚¿ã‚’æ¬¡ã®ãƒšã?ã‚¸ã«æ¸¡ã™ã‹ã©ã?‹[true:渡ã?false:渡ã•ãªã„]
374             */
375            public void setDbTable( final String db ) {
376                    dbTable = nval( getRequestParameter( db ),dbTable );
377            }
378    
379            /**
380             * 標準的㪠リクエスト情報ã‹ã©ã?‹ã‚’判断ã—ã¾ã™ã?
381             *
382             * ã“れã¯ã€å¼•æ•°ã®ã‚­ãƒ¼ãŒã?HybsSystem.ROW_SEL_KEY ã‹ã?
383             * DBTableModel ã§é€ä¿¡ã•れãŸã‚­ãƒ¼( キー__番å·)å½¢å¼ã?å ´åˆã?
384             * false ã‚’è¿”ã—ã¾ã™ã?
385             * 通常ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚­ãƒ¼ã¨ã—ã¦æ‰±ã?Ÿããªã??åˆã?判定ã«ä½¿ç”¨ã—ã¾ã™ã?
386             *
387             * @og.rev 3.4.0.3 (2003/09/10) æ–°è¦è¿½åŠ?
388             * @og.rev 3.5.2.0 (2003/10/20) シスãƒ?ƒ ãƒ‘ラメータ ã® FRAME_UNDER_BAR_REQUEST_KEY_USED を使用ã€?
389             * @og.rev 3.5.5.0 (2004/03/12) åå‰ã¨è¡Œç•ªå·ã®åŒºåˆ?‚Šè¨˜å·("__")ã‚’ã?HybsSystem.JOINT_STRING  ã«å¤‰æ›´ã€?
390             *
391             * @param key 判定ã™ã‚‹ã‚­ãƒ¼
392             *
393             * @return 標準的㪠リクエスト情報ã‹ã©ã?‹ [true:標準的/false:ãれ以外]
394             */
395            private boolean isNormalRequestKey( final String key ) {
396                    return  key != null &&
397                                    ! key.equals( HybsSystem.ROW_SEL_KEY ) &&
398                                    ( key.indexOf( HybsSystem.JOINT_STRING ) < 0 || UNDER_BAR_KEY_USED );
399            }
400    
401            /**
402             * シリアライズ用ã®ã‚«ã‚¹ã‚¿ãƒ?‚·ãƒªã‚¢ãƒ©ã‚¤ã‚ºæ›¸ãè¾¼ã¿ãƒ¡ã‚½ãƒ?ƒ‰
403             *
404             * @og.rev 4.0.0.0 (2006/09/31) æ–°è¦è¿½åŠ?
405             * @serialData ä¸?ƒ¨ã®ã‚ªãƒ–ジェクトã?ã€ã‚·ãƒªã‚¢ãƒ©ã‚¤ã‚ºã•れã¾ã›ã‚“ã€?
406             *
407             * @param       strm    ObjectOutputStreamオブジェク�
408             * @throws IOException  シリアライズã«é–¢ã™ã‚‹å…¥å‡ºåŠ›ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸå?å?
409             */
410            private void writeObject( final ObjectOutputStream strm ) throws IOException {
411                    strm.defaultWriteObject();
412            }
413    
414            /**
415             * シリアライズ用ã®ã‚«ã‚¹ã‚¿ãƒ?‚·ãƒªã‚¢ãƒ©ã‚¤ã‚ºèª­ã¿è¾¼ã¿ãƒ¡ã‚½ãƒ?ƒ‰
416             *
417             * ã“ã“ã§ã¯ã€transient 宣è¨?•れãŸå†?ƒ¨å¤‰æ•°ã®å†??åˆæœŸåŒ–ãŒå¿?¦ãªãƒ•ィールドã?ã¿è¨­å®šã—ã¾ã™ã?
418             *
419             * @og.rev 4.0.0.0 (2006/09/31) æ–°è¦è¿½åŠ?
420             * @serialData ä¸?ƒ¨ã®ã‚ªãƒ–ジェクトã?ã€ã‚·ãƒªã‚¢ãƒ©ã‚¤ã‚ºã•れã¾ã›ã‚“ã€?
421             *
422             * @param       strm    ObjectInputStreamオブジェク�
423             * @see #release2()
424             * @throws IOException  シリアライズã«é–¢ã™ã‚‹å…¥å‡ºåŠ›ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸå?å?
425             * @throws ClassNotFoundException       クラスを見ã¤ã‘ã‚‹ã“ã¨ãŒã§ããªã‹ã£ãŸå?å?
426             */
427            private void readObject( final ObjectInputStream strm ) throws IOException , ClassNotFoundException {
428                    strm.defaultReadObject();
429            }
430    
431            /**
432             * ã“ã?オブジェクトã?æ–?­—å?表ç¾ã‚’è¿”ã—ã¾ã™ã?
433             * 基本çš?«ãƒ?ƒãƒ?‚°ç›®çš?«ä½¿ç”¨ã—ã¾ã™ã?
434             *
435             * @return ã“ã?ã‚¯ãƒ©ã‚¹ã®æ–?­—å?表ç¾
436             */
437            @Override
438            public String toString() {
439                    return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
440                                    .println( "VERSION"             ,VERSION        )
441                                    .println( "tableId"             ,tableId        )
442                                    .println( "changeGmn"   ,changeGmn      )
443                                    .println( "keys"                ,keys           )
444                                    .println( "dbTable"     ,dbTable        )
445                                    .println( "Other..."    ,getAttributes().getAttribute() )
446                                    .fixForm().toString() ;
447            }
448    }