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.plugin.develop;
017    
018    import java.util.List;
019    import java.util.ArrayList;
020    import java.util.Map;
021    
022    import org.opengion.hayabusa.develop.AbstractJspCreate;
023    import org.opengion.hayabusa.develop.JspConvertEntity;
024    import org.opengion.fukurou.xml.OGElement;
025    import org.opengion.fukurou.xml.OGAttributes;
026    
027    /**
028     * entry.jspの<og:tableUpdateParam>タグを作?します?
029     * tableUpdateParam は、tableUpdate タグのBODY部に記述されます?
030     * tableUpdateParam で書き換えが発生する?は、対象??ブルと、omitNames属?です?
031     * where条件の書き換え?行いません?雛形読み込み時?まま使用します?)
032     * ??ブルの書き間違いで、異なるUNIQ番号の更新を避ける意味合いで?
033     * UNIQ=[UNIQ]以外?キーを条件に入れておくと、より安?です?
034     *
035     * ●使用?
036     *  <og:tableUpdate command="{@command}" queryType="JDBCTableUpdate" debug="false">
037     *      <og:tableUpdateParam
038     *          sqlType   = "{@sqlType}"
039     *          table     = "GF02"
040     *          where     = "UNIQ=[UNIQ] and DYSET=[DYSET]"
041     *          omitNames = "SYSTEM_ID,TBLSYU,TABLESPACE_NAME"
042     *      />
043     *  </og:tableUpdate>
044     *
045     * @og.rev 5.6.1.2 (2013/02/22) ??連結から?XML処?るよ?変更します?
046     * @author Takeshi.Takada
047     *
048     */
049    public class JspCreate_TABLE_UPDATE extends AbstractJspCreate {
050            //* こ?プログラ??VERSION??を設定します?       {@value} */
051            private static final String VERSION = "5.6.1.2 (2013/02/22)" ;
052    
053            private List<JspConvertEntity> RESULT_ROWS ;
054            private boolean IS_NULL ;
055    
056            /**
057             * 初期化メソ?
058             *
059             * ?で使用する JspConvertEntityのリスト?マップを受け取り、?期化を行います?
060             *
061             * @og.rev 5.2.1.0 (2010/10/01) 名前空間を、og 決め打ちから、名前空間指定無しに変更します?
062             * @og.rev 5.6.1.2 (2013/02/22) 対象ファイルを?result ?から、update も含めるように変更?
063             *
064             * @param       master  JspConvertEntityのリスト?マッ?
065             */
066            @Override
067            protected void init( final Map<String,List<JspConvertEntity>> master ) {
068                    RESULT_ROWS     = master.get( "RESULT" );
069                    IS_NULL = !isNotEmpty( RESULT_ROWS );
070                    KEY  = ":tableUpdateParam";
071                    NAME = "entry";
072            }
073    
074            /**
075             * JSPに出力するタグの?を作?します?
076             * 引数より作?前?タグの属??を確認するする事が出来ます?
077             *
078             * @og.rev 5.2.1.0 (2010/10/01) メソ?の引数を?OGAttributes から OGElement に変更します?
079             * @og.rev 5.2.1.0 (2010/10/01) 名前空間を、og 決め打ちから、引数を使用するように変更します?
080             *
081             * @param ele OGElementエレメントオブジェク?
082             * @param       nameSpace       こ?ドキュメント?nameSpace( og と?mis と?)
083             *
084             * @return      変換された文字?
085             * @throws Throwable 変換時?エラー
086             */
087            @Override
088            protected String execute( final OGElement ele , final String nameSpace )  throws Throwable {
089                    if( IS_NULL ) { return ""; }
090    
091                    String table = null;
092                    List<String> omitNames = new ArrayList<String>();
093                    for(JspConvertEntity column : RESULT_ROWS){
094                            // 非表示は、GF92の属?(Remarks)に、何もセ?されて??ラ???
095                            String remks = column.getRemarks();
096                            String astbl = column.getAsTableName();
097    
098                            // DISP で、別名がA1以外?場合???タ登録しな??で、omit カラ?なる?
099                            if ( "DISP".equalsIgnoreCase( remks ) && !"A1".equalsIgnoreCase( astbl ) ) {
100                                    omitNames.add( column.getColumnName() );
101                            }
102    
103                            // ??の?回?取り込?
104                            if( table == null && "A1".equalsIgnoreCase( astbl ) ) {
105                                    table = column.getTableName();
106                            }
107                    }
108    
109                    OGAttributes attri = ele.getOGAttributes();             // OGElementの?オブジェクトなので、副作用あり
110                    attri.setUseCR( true );
111                    attri.setVal( "table" , table );
112    
113                    if ( ! omitNames.isEmpty() ) {
114                            attri.setVal( "omitNames" , chainChar( omitNames ,",") );               // あれば更新、なければ追?
115                    }
116    
117                    return ele.getText( 1 );
118            }
119    }