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.table;
017
018 import org.opengion.hayabusa.db.AbstractTableFilter;
019 import org.opengion.hayabusa.db.DBTableModel;
020
021 /**
022 * TableFilter_REPORTLAYOUT は、TableFilter インターフェースを継承した、DBTableModel 処?の
023 * 実?ラスです?
024 *
025 * ここでは、GE52(帳票レイアウトテーブル)の変更時に?
026 * GE52のSEQ,開始位置
027 * (GE54のSQLの再定義) ?
028 * を行うための??を生成して?す?
029 *
030 * こ?処?実行するには、DBTableModelのカラ?して?
031 * SYSTEM_ID,LISTID,KBTEXT,CLM,SEQ,USE_LENGTH,START_POS
032 * が?です?
033 *
034 * パラメータは、tableFilterタグの keys, vals にそれぞれ記述するか?BODY 部にCSS形式で記述します?
035 * 【パラメータ?
036 * {
037 * な?
038 * }
039 *
040 * @og.formSample
041 * ●形式?
042 * select SYSTEM_ID,LISTID,KBTEXT,CLM,SEQ,USE_LENGTH,START_POS from GE52
043 *
044 * ?<og:tableFilter classId="REPORTLAYOUT " />
045 *
046 * @og.rev 4.3.7.0 (2009/06/01) 新規作?
047 *
048 * @version 0.9.0 2000/10/17
049 * @author Hiroki Nakamura
050 * @since JDK1.1,
051 */
052 public class TableFilter_REPORTLAYOUT extends AbstractTableFilter {
053 //* こ?プログラ??VERSION??を設定します? {@value} */
054 private static final String VERSION = "5.5.2.6 (2012/05/25)" ;
055
056 // private static final String CR = System.getProperty("line.separator"); // 5.1.1.0 (2009/12/01) CR 定義をAbstractTableFilterで行う?
057
058 // private static final String LAST_SQL_1 =
059 // " FROM GE51 WHERE FGJ = '1'" + CR
060 // + " AND SYSTEM_ID = ? " + CR
061 // + " AND YKNO = ? " + CR
062 // + " AND KBTEXT = '";
063 //
064 // private static final String LAST_SQL_2 =
065 // "'" + CR + "ORDER BY EDNO";
066
067 /**
068 * DBTableModel処?実行します?
069 *
070 * @og.rev 4.3.7.0 (2009/06/01) 新規追?
071 * @og.rev 5.1.0.0 (2009/11/04) TEXT ?TEXT_DATA , COLUMN_NAME ?CLM
072 * @og.rev 5.1.2.0 (2010/01/01) ??タ?のためのSQL??生?を?します?(帳票クラス?直接?)
073 * @og.rev 5.5.2.6 (2012/05/25) protected変数を?private化したため?getterメソ?で取得するよ?変更
074 *
075 * @return 処?果のDBTableModel
076 */
077 public DBTableModel execute() {
078 DBTableModel table = getDBTableModel(); // 5.5.2.6 (2012/05/25) インターフェースにgetterメソ?追?
079
080 int systemIdNo = table.getColumnNo( "SYSTEM_ID" );
081 int listIdNo = table.getColumnNo( "LISTID" );
082 int kbtextNo = table.getColumnNo( "KBTEXT" );
083 int clmNo = table.getColumnNo( "CLM" ); // 5.1.0.0 (2009/11/04) COLUMN_NAME ?CLM
084 int seqNo = table.getColumnNo( "SEQ" );
085 int lengthNo = table.getColumnNo( "USE_LENGTH" );
086 int strposNo = table.getColumnNo( "START_POS" );
087 // int sqlTypeNo = table.getColumnNo( "SQL_TYPE" );
088 // int sqlBodyNo = table.getColumnNo( "SQL_BODY" );
089 // String substrb = getValue( "SUBSTRB" );
090
091 if( systemIdNo < 0 || listIdNo < 0 || kbtextNo < 0 || clmNo < 0
092 || seqNo < 0 || lengthNo < 0 || strposNo < 0 ) {
093 // || sqlTypeNo < 0 || sqlBodyNo < 0
094 // || substrb == null || substrb.length() == 0 )
095 return table;
096 }
097
098 int seq = 0;
099 int strpos = 1;
100 String[] data = null;
101 // String[] pre = null;
102
103 String resetKey = null;
104 String preKey = null;
105 // StringBuilder sql = new StringBuilder();
106 // sql.append( "SELECT" ).append( CR ).append( " " );
107 int[] rowNo = getParameterRows(); // 5.5.2.6 (2012/05/25) インターフェースにgetterメソ?追?
108 for( int row = 0; row < rowNo.length; row ++ ) {
109 data = table.getValues( rowNo[row] );
110 resetKey = data[systemIdNo] + "__" + data[listIdNo] + "__" + data[kbtextNo];
111
112 // if( pre != null && !(preKey.equals( resetKey ) ) ) {
113 if( preKey != null && !(preKey.equals( resetKey ) ) ) {
114 seq = 0;
115 strpos = 1;
116 // pre[sqlTypeNo] = pre[kbtextNo];
117 // pre[sqlBodyNo] = sql.append( LAST_SQL_1 ).append( pre[sqlTypeNo] ).append( LAST_SQL_2 ).toString();
118
119 // sql = new StringBuilder();
120 // sql.append( "SELECT" ).append( CR ).append( " " );
121 }
122
123 // if( seq > 0 ) {
124 // sql.append( "," );
125 // }
126
127 seq += 10;
128 data[seqNo] = String.valueOf( seq );
129 data[strposNo] = String.valueOf( strpos );
130
131 // // 5.1.0.0 (2009/11/04) TEXT ?TEXT_DATA
132 // sql.append( "RTRIM(" ).append( substrb ).append( "(TEXT_DATA," ).append( data[strposNo] )
133 // .append( "," ).append( data[lengthNo] ).append( ")) " ).append( data[clmNo] ).append( CR );
134
135 strpos += Integer.valueOf( data[lengthNo] );
136
137 preKey = resetKey;
138 // pre = data;
139 }
140
141 // data[sqlTypeNo] = data[kbtextNo];
142 // data[sqlBodyNo] = sql.append( LAST_SQL_1 ).append( data[kbtextNo] ).append( LAST_SQL_2 ).toString();
143
144 return table;
145 }
146 }