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 }