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 }