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.DBColumn;
021 import org.opengion.hayabusa.db.DBTableModel;
022 import org.opengion.hayabusa.db.DBTableModelUtil;
023
024 import org.opengion.fukurou.util.StringUtil;
025 import static org.opengion.fukurou.util.StringUtil.nval ;
026
027 import java.util.Map;
028 import java.util.LinkedHashMap;
029 import java.util.Locale ;
030
031 /**
032 * ?’ã¤ã® DBTableModel ã® é›?ˆå‡¦ç?‚’行ã†ã‚¿ã‚°ã§ã™ã?
033 *
034 * マスタã¨ã‚¹ãƒ¬ãƒ¼ãƒ–ã?ãれãžã‚Œã® DBTableModel ã‚’å–å¾—ã—ã€ã?ージã€å·®åˆ??排他ãªã©ã®
035 * ãƒ??タ処ç?‚’行ã„ã¾ã™ã?çµæžœã‚’ã?æŒ?®šã? tableId 㨠scope ã«æ›¸ãå?ã—ã¾ã™ã?
036 * マスタãƒ??ブルã¯ã€masterTableId 㨠masterScope よりå–り出ã—ã¾ã™ã?スレーブテーブルã¯ã€?
037 * slaveTableId 㨠slaveScope よりå–り出ã—ã¾ã™ã?
038 * å–り出ã•れã?DBTableModel ã¯ã€ã?スタãƒ??ブルã«å¯¾ã—ã¦ã€ã‚¹ãƒ¬ãƒ¼ãƒ–テーブルæƒ??ã‚’å‚ç…§ã™ã‚‹å½¢ã§è¡Œã‚れã?
039 * çµæžœã¯ãƒžã‚¹ã‚¿ãƒ??ブルã«ä¸Šæ›¸ãã•れる形ã§è¡Œã‚れã¾ã™ã?
040 * æŒ?®šã§ãるアクションã¯ã€å?体集å?UNION_ALL)ã€å’Œé›?ˆ(UNION)ã€ç©é›†å?INTERSECT)ã€?
041 * å·®é›?ˆ(MINUS)ã€å·®åˆ?›†å?DIFFERENCE)ã€å?åˆæ?(UNION_CLM)ã€?列追åŠ?ADD_CLM)ã€?グルーãƒ?GROUP)ã§ã™ã?
042 * åˆ—åˆæˆã¨åˆ—追åŠ??グループ以外ã?処ç?§ã¯ã€ã‚«ãƒ©ãƒ??ã¨ã‚«ãƒ©ãƒ?•°ã¯åŒæ•°ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“ã€?
043 * primaryKeys ã‚?unionClms ãªã©ã®æŒ?®šã?ã‚ーåã?ã€ã?スタãƒ??ブルã«å˜åœ¨ã™ã‚‹å¿?¦ãŒã‚りã¾ã™ã?
044 * マスタãƒ??ブルã¨åŒã˜ã‚«ãƒ©ãƒ?•ªå·ã§ã‚¹ãƒ¬ãƒ¼ãƒ–テーブルよりãƒ??ã‚¿ã‚’èªã¿å‡ºã—ã¾ã™ã?
045 * (カラãƒ?ã‚?±žæ?ã¯ã€ç•°ãªã£ã¦ã‚‚ã‹ã¾ã?¾ã›ã‚“ãŒã?マスタãƒ??ãƒ–ãƒ«ã«æº–æ‹ ã—ã¾ã™ã?)
046 * ã¾ãŸã?å˜ç‹¬(マスタãƒ??ブルã®ã¿)ã§ã€å’Œé›?ˆã¨åŒç‰ã?ã€ã‚°ãƒ«ãƒ¼ãƒ?GROUP)を使用ã™ã‚‹ã¨ã€æŒ‡å®šã?
047 * カラãƒ?§ã®ãƒ¦ãƒ‹ã?ク化を行ã†ã“ã¨ãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã?グループå?ç?§ã¯ã€å?行優先ã¨ã—ã?
048 * ?’回目ã«ç¾ã‚ŒãŸæƒ??を削除ã™ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã?グルーãƒ?ãŒæŒ‡å®šã•れãŸå ´åˆã?ã€?
049 * スレーブテーブルã¯ç„¡è¦–ã•れã¾ã™ã?ã?šã‚Œã?処ç?«ãŠã„ã¦ã‚‚ã?é›?ˆå‡¦ç?‚’行ã†ä¸»ã‚ーã§
050 * ä¸?—¦ã‚°ãƒ«ãƒ¼ãƒ—化ã•れã¾ã™ã?全体集å?UNION_ALL)ã§å‡¦ç?™ã‚‹å?åˆã§ã‚‚ã?主ã‚ーãŒãƒ¦ãƒ‹ã?クã§
051 * ãªã??åˆã?ã€ã?スターã€ã‚¹ãƒ¬ãƒ¼ãƒ–ã?å?ƒ†ãƒ¼ãƒ–ルã§ä¸?—¦ã‚°ãƒ«ãƒ¼ãƒ—化ã•れãŸå¾Œã§ã€ã?ージã•れã¾ã™ã?
052 * (マã?ジ後ã«ã¯ã€åŒä¸?¸»ã‚ーをæŒã¤è¡Œã?å˜åœ¨ã—ã¾ã™ã?)
053 * 全体集å?UNION_ALL)ã®å ´åˆã?ã¿ã€mergeKeys を指定ã™ã‚‹å¿?¦ã?ã‚りã¾ã›ã‚“。ãã®å ´åˆã?ã€?
054 * ã‚ーãªã—ã?ãŸã‚ã€ã?スターã¨ã‚¹ãƒ¬ãƒ¼ãƒ–ã?ãƒ??ブルをå˜ã«åˆæ?ã™ã‚‹ã?‘ã«ãªã‚Šã¾ã™ã?
055 *
056 * 処ç?‰å¾Œã§ã®DBTableModelã®ä»¶æ•°ã¯ã€ä»¥ä¸‹ã?変数ã§å–å¾—ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã?
057 * 処ç?‰ã®ãƒžã‚¹ã‚¿ãƒ¼ãƒ??ブル : {@DB.MASTER_COUNT}
058 * 処ç?‰ã®ã‚¹ãƒ¬ãƒ¼ãƒ–テーブル : {@DB.SLAVE_COUNT}
059 * 処�? : {@DB.COUNT}
060 *
061 * @og.formSample
062 * â—å½¢å¼ï¼?
063 * ・<og:tableMerge
064 * action = "UNION_ALL|UNION|INTERSECT|MINUS|DIFFERENCE|UNION_CLM|ADD_CLM|GROUP|UNION_SELROW"
065 * tableId = "DEFAULT" 出力テーブル㮠tableId
066 * scope = "session" 出力テーブル㮠scope
067 * masterTableId = "DEFAULT" マスタ�?ブル㮠tableId
068 * masterScope = "session" マスタ�?ブル㮠scope
069 * slaveTableId = "DEFAULT" スレーブテーブル㮠tableId
070 * slaveScope = "request" スレーブテーブル㮠scope
071 * masterKeys = "AA,BB,CC" マスタãƒ??ブルã®é›?ˆå‡¦ç?‚’行ã†ä¸»ã‚ー
072 * slaveKeys = "AA,BB,CC" スレーブテーブルã®é›?ˆå‡¦ç?‚’行ã†ä¸»ã‚ー(nullæ™?masterKeys)
073 * diffKeys = "DD,EE" マスタãƒ??ブルã®DIFFERENCE時ã?å·®åˆ?‚«ãƒ©ãƒ?
074 * unionClms = "DD,EE" UNION_CLM,ADD_CLM時ã«ã‚¹ãƒ¬ãƒ¼ãƒ–ã‹ã‚‰ã?スタã¸è¿½åŠ?™ã‚‹ã‚«ãƒ©ãƒ?
075 * modifyClms = "FF,GG" DIFFERENCE時ã«ã‚¹ãƒ¬ãƒ¼ãƒ–ã‹ã‚‰ã?スタã¸å€¤ã‚’æ›´æ–°ã™ã‚‹ã‚«ãƒ©ãƒ?
076 * noSideEffect = "false" ãƒ??ブルモãƒ?ƒ«ã«å¯¾ã™ã‚‹å‰¯ä½œç”¨(true:ãªã?false:ã‚ã‚‹)
077 * useDiffData = "true" DIFFERENCE時ã«å·®åˆ??スレーブデータを追åŠ?™ã‚‹ã‹ã©ã?‹
078 * useCheckOnly = "false" マスタãƒ??ブルã®é¸æŠžè¡Œã?ãƒ??ã‚¿ã®ã¿ã‚’対象ã«å‡¦ç?‚’行ã†ã‹ã©ã?‹
079 * groupAddClms = "FF,GG" masterKeysã§é›?ˆå‡¦ç?™ã‚‹ã¨ãã«ã€ç›¸é•データをCSV連çµã—ã¦æ®‹ã™ã‚«ãƒ©ãƒ?
080 * display = "true" 処ç?¦‚è¦ã‚’表示ã™ã‚‹ã‹ã©ã?‹
081 * />
082 * â—body?šãªã?
083 *
084 * â—Tag定義??
085 * <og:tableMerge
086 * command ã€TAG】コマンãƒ?NEW,RENEW)ã‚’ã‚»ãƒ?ƒˆã—ã¾ã?åˆæœŸå€¤:NEW)
087 * action ã€TAG】アクションを指定ã—ã¾ã?UNION_ALL|UNION|INTERSECT|MINUS|DIFFERENCE|UNION_CLM|ADD_CLM|GROUP|UNION_SELROW)
088 * tableId ã€TAG】å?力å?ã®tableIdを指定ã—ã¾ã?(åˆæœŸå€¤:HybsSystem#TBL_MDL_KEY[=h_tblmdl])
089 * scope ã€TAG】å?力å?ã®scopeを指定ã—ã¾ã?åˆæœŸå€¤:session)
090 * masterTableId ã€TAG】ã?スタãƒ??ブルã®tableIdを指定ã—ã¾ã?(åˆæœŸå€¤:HybsSystem#TBL_MDL_KEY[=h_tblmdl])
091 * masterScope ã€TAG】ã?スタãƒ??ブルã®scopeを指定ã—ã¾ã?åˆæœŸå€¤:session)
092 * slaveTableId ã€TAG】スレーブテーブルã®tableIdを指定ã—ã¾ã?(åˆæœŸå€¤:HybsSystem#TBL_MDL_KEY[=h_tblmdl])
093 * slaveScope ã€TAG】スレーブテーブルã®scopeを指定ã—ã¾ã?åˆæœŸå€¤:session)
094 * masterKeys ã€TAG】ã?スタãƒ??ブルã®é›?ˆå‡¦ç?‚’行ã†ä¸»ã‚ーを指定ã—ã¾ã?
095 * slaveKeys ã€TAG】スレーブテーブルã®é›?ˆå‡¦ç?‚’行ã†ä¸»ã‚ーを指定ã—ã¾ã?
096 * diffKeys ã€TAG】ã?スタãƒ??ブルã®DIFFERENCE時ã?å·®åˆ?‚«ãƒ©ãƒ?ã‚?CSVå½¢å¼?æŒ?®šã—ã¾ã?
097 * unionClms ã€TAG】スレーブã‹ã‚‰ã?スタã¸è¿½åŠ?™ã‚‹ã‚«ãƒ©ãƒ?ã‚’CSVå½¢å¼ã§æŒ?®šã—ã¾ã?
098 * modifyClms ã€TAG】スレーブã‹ã‚‰ã?スタã¸å€¤ã‚’æ›´æ–°ã™ã‚‹ã‚«ãƒ©ãƒ?ã‚’CSVå½¢å¼ã§æŒ?®šã—ã¾ã?
099 * groupAddClms ã€TAG】集åˆå?ç?™ã‚‹ã¨ãã«ã€ç›¸é•データをCSV連çµã—ã¦æ®‹ã™ã‚«ãƒ©ãƒ?ã‚’CSVå½¢å¼ã§æŒ?®šã—ã¾ã?
100 * noSideEffect ã€TAG】テーブルモãƒ?ƒ«ã«å¯¾ã™ã‚‹å‰¯ä½œç”¨ã®æœ‰ç„¡[true:ãªã?false:ã‚ã‚‹]を指定ã—ã¾ã?åˆæœŸå€¤:false:ã‚ã‚‹)
101 * useDiffData ã€TAG】差åˆ??ã‚¹ãƒ¬ãƒ¼ãƒ–ãƒ‡ãƒ¼ã‚¿ã‚’çµæžœãƒ??ブルã«è¿½åŠ?™ã‚‹ã‹ã©ã?‹ã‚’指定ã—ã¾ã?åˆæœŸå€¤:true)
102 * useCheckOnly ã€TAG】ã?スタãƒ??ブルã®é¸æŠžè¡Œã?ãƒ??ã‚¿ã®ã¿ã‚’対象ã«å‡¦ç?‚’行ã†ã‹ã©ã?‹ã‚’指定ã—ã¾ã?åˆæœŸå€¤:false)
103 * display ã€TAG】ã?ージã®çµæžœã‚’表示ã™ã‚‹ã‹ã©ã?‹ã‚’指定ã—ã¾ã?åˆæœŸå€¤:true)
104 * mainTrans ã€TAGã€?通常使ã?¾ã›ã‚“)ã‚¿ã‚°ã§å‡¦ç?•れる処ç?Œãƒ¡ã‚¤ãƒ³ã¨ãªã‚‹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å‡¦ç?‹ã©ã?‹ã‚’指定ã—ã¾ã?åˆæœŸå€¤:false)
105 * caseKey ã€TAG】ã“ã®ã‚¿ã‚°è‡ªä½“を利用ã™ã‚‹ã‹ã©ã?‹ã®æ¡ä»¶ã‚ーを指定ã—ã¾ã?åˆæœŸå€¤:null)
106 * caseVal ã€TAG】ã“ã®ã‚¿ã‚°è‡ªä½“を利用ã™ã‚‹ã‹ã©ã?‹ã®æ¡ä»¶å€¤ã‚’指定ã—ã¾ã?åˆæœŸå€¤:null)
107 * separator ã€TAG】groupAddClmsã§æ–?—å?ã‚’é?çµã™ã‚‹é?目区åˆ?‚Šæ–?—ã‚’ã‚»ãƒ?ƒˆã—ã¾ã?åˆæœŸå€¤:",")
108 * debug ã€TAG】デãƒãƒƒã‚°æƒ??ã‚’å?力ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)
109 * />
110 *
111 * â—使用ä¾?
112 * 例ï¼?ãƒ?ƒ•ォルト以外ã«å¿?¦ãªå±žæ?ã®ã¿æŒ?®šã™ã‚‹ã‚µãƒ³ãƒ—ル
113 * <og:tableMerge action="UNION"
114 * slaveScope = "request" masterKeys = "AA,BB,CC"
115 * />
116 *
117 * ・出力å?ã€ã?スターã¨ã‚‚ã«åˆæœŸå€¤ã¯ã€tableId="DEFAULT" scope="session" ã§ã™ã?
118 * スレーブã?ã€tableId ã?scope ã‚’ã‘ã‚‹å¿?¦ãŒã‚る為ã€scope="request" を指定ã—ã¦ã?¾ã™ã?
119 * 比è¼?™ã‚‹ã‚«ãƒ©ãƒ?ã¯ã€ã?スタã€ã‚¹ãƒ¬ãƒ¼ãƒ–åŒã˜ã§ã‚れã°ã€ã?スタã®ã¿æŒ?®šã§ã‹ã¾ã?¾ã›ã‚“ã€?
120 *
121 * 例ï¼?マスタã€ã‚¹ãƒ¬ãƒ¼ãƒ–ã¨ã‚‚ãƒ¡ãƒ¢ãƒªã«æ®‹ã‚‰ãªã?‚ˆã?« request ã§ä½œæ?ã—ã¾ã™ã?
122 * <og:tableMerge action="INTERSECT"
123 * masterScope = "request"
124 * slaveScope = "request"
125 * slaveTableId = "SLAVE"
126 * masterKeys = "AA,BB,CC"
127 * />
128 *
129 * ・マスタã€ã‚¹ãƒ¬ãƒ¼ãƒ–ã¨ã‚‚ãƒ¡ãƒ¢ãƒªã«æ®‹ã‚‰ãªã?‚ˆã?« request ã§ä½œæ?ã—ãŸå ´åˆã?ã€?
130 * ã©ã¡ã‚‰ã‹ã® TableId を変ãˆã‚‹å¿?¦ãŒã‚りã¾ã™ã?
131 * 出力å?ã¯åˆæœŸå€¤ã®ã€tableId="DEFAULT" scope="session" ã§ã™ã?
132 *
133 * @og.rev 3.8.0.9 (2005/10/17) æ–°è¦è¿½åŠ?
134 * @og.group ?¤?¢ç™»éŒ²
135 *
136 * @version 0.9.0 2000/10/17
137 * @author Kazuhiko Hasegawa
138 * @since JDK5.0,
139 */
140 public class TableMergeTag extends CommonTagSupport {
141 //* ã“ã?プãƒã‚°ãƒ©ãƒ??VERSIONæ–?—å?ã‚’è¨å®šã—ã¾ã™ã? {@value} */
142 private static final String VERSION = "5.5.8.5 (2012/11/27)" ;
143
144 private static final long serialVersionUID = 558520121127L ;
145
146 /** action å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?アクションコマンãƒ? 全体集å?{@value} */
147 public static final String ACT_UNION_ALL = "UNION_ALL" ;
148 /** action å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?アクションコマンãƒ? 和集å?{@value} */
149 public static final String ACT_UNION = "UNION" ;
150 /** action å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?アクションコマンãƒ? ç©é›†å?{@value} */
151 public static final String ACT_INTERSECT = "INTERSECT" ;
152 /** action å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?アクションコマンãƒ? å·®é›?ˆ{@value} */
153 public static final String ACT_MINUS = "MINUS" ;
154 /** action å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?アクションコマンãƒ? å·®åˆ?›†å?@value} */
155 public static final String ACT_DIFFERENCE = "DIFFERENCE" ;
156 /** action å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?アクションコマンãƒ? åˆ—åˆæˆ{@value} */
157 public static final String ACT_UNION_CLM = "UNION_CLM" ;
158 /** action å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?アクションコマンãƒ? åˆ—åˆæˆ{@value} */
159 public static final String ACT_ADD_CLM = "ADD_CLM" ;
160 /** action å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?アクションコマンãƒ? グルーãƒ?{@value} */
161 public static final String ACT_GROUP = "GROUP" ;
162 /** action å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?アクションコマンãƒ? グルーãƒ?{@value} */
163 public static final String ACT_UNION_SELROW = "UNION_SELROW" ;// 4.3.2.0 (2008/09/11)
164
165 /** action å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?アクションコマンãƒ?リスãƒ? */
166 private static final String[] ACTION_LIST = new String[] {
167 ACT_UNION_ALL , ACT_UNION , ACT_INTERSECT , ACT_MINUS , ACT_DIFFERENCE , ACT_UNION_CLM , ACT_ADD_CLM , ACT_GROUP, ACT_UNION_SELROW };
168
169 /** command å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?コマンãƒ? æ–°è¦?{@value} */
170 public static final String CMD_NEW = "NEW" ;
171 /** command å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?コマンãƒ? 冿¤œç´¢ {@value} */
172 public static final String CMD_RENEW = "RENEW" ;
173 /** command å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?コマンãƒ?リスãƒ? */
174 private static final String[] COMMAND_LIST = new String[] { CMD_NEW , CMD_RENEW };
175
176 private String command = CMD_NEW;
177
178 private String action = null;
179 private String tableId = HybsSystem.TBL_MDL_KEY; // 出力å?ã® tableId
180 private String scope = "session"; // 出力å?ã® scope
181
182 private String masterTableId = HybsSystem.TBL_MDL_KEY; // マスタ�?ブル㮠tableId
183 private String masterScope = "session"; // マスタ�?ブル㮠scope
184 private String slaveTableId = HybsSystem.TBL_MDL_KEY; // スレーブテーブル㮠tableId
185 private String slaveScope = "request"; // スレーブテーブル㮠scope
186 private String masterKeys = null; // マスタãƒ??ブルã®é›?ˆå‡¦ç?‚’行ã†ä¸»ã‚ー
187 private String slaveKeys = null; // スレーブテーブルã®é›?ˆå‡¦ç?‚’行ã†ä¸»ã‚ー(nullæ™?masterKeys)
188 private String diffKeys = null; // マスタãƒ??ブルã®DIFFERENCE時ã?å·®åˆ?‚«ãƒ©ãƒ?
189 private String unionClms = null; // UNION_CLM時ã«ã‚¹ãƒ¬ãƒ¼ãƒ–ã‹ã‚‰ã?スタã¸è¿½åŠ?™ã‚‹ã‚«ãƒ©ãƒ?
190 private String modifyClms = null; // DIFFERENCE時ã«ã‚¹ãƒ¬ãƒ¼ãƒ–ã‹ã‚‰ã?スタã¸å€¤ã‚’æ›´æ–°ã™ã‚‹ã‚«ãƒ©ãƒ?
191 private String groupAddClms = null; // 5.1.4.0 (2010/03/01) masterKeysã§é›?ˆå‡¦ç?™ã‚‹ã¨ãã«ã€ç›¸é•データをCSV連çµã—ã¦æ®‹ã™ã‚«ãƒ©ãƒ?
192 private boolean noSideEffect = false; // ãƒ??ブルモãƒ?ƒ«ã«å¯¾ã™ã‚‹å‰¯ä½œç”¨(true:ãªã?false:ã‚ã‚‹)
193 private boolean useDiffData = true; // DIFFERENCE時ã«å·®åˆ??スレーブデータを追åŠ?™ã‚‹ã‹ã©ã?‹
194 private boolean useCheckOnly = false; // マスタãƒ??ブルã®é¸æŠžè¡Œã?ãƒ??ã‚¿ã®ã¿ã‚’対象ã«å‡¦ç?‚’行ã†ã‹ã©ã?‹
195 private boolean display = true;
196 private boolean isMainTrans = true; // 5.1.6.0 (2010/05/01) DBLastSqlã®å‡¦ç??見直ã?
197 private String separator = ","; // 5.3.1.0 (2011/01/01) groupAddClmnsã§çµåˆã™ã‚‹éš›ã?区åˆ?‚Šæ–??
198
199 /**
200 * Taglibã®çµ‚äº?‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doEndTag() ã‚?オーãƒã?ライドã—ã¾ã™ã?
201 *
202 * @og.rev 4.3.2.0 (2008/09/11) UNION_SELROWアクション対�
203 * @og.rev 4.3.3.0 (2008/10/01) 処ç?‰å¾Œã?ãƒ??ブル件数をå–å¾—ã§ãるよã†ã«ã™ã‚‹
204 * @og.rev 4.3.3.1 (2008/10/08) スレーブã?nullãƒã‚§ãƒ?‚¯è¿½åŠ?
205 * @og.rev 5.1.6.0 (2010/05/01) DBLastSqlã®å‡¦ç??ã€DBTableModelãŒæ–°è¦ä½œæ?ã•れãŸå?ç?§ã®ã¿è¡Œã†ã€?
206 * @og.rev 5.2.2.0 (2010/11/01) caseKey ã€caseVal 属æ?対å¿?
207 *
208 * @return 後続å?ç??æŒ?¤º
209 */
210 @Override
211 public int doEndTag() {
212 debugPrint(); // 4.0.0 (2005/02/28)
213 // 5.2.2.0 (2010/11/01) caseKey ã€caseVal 属æ?対å¿?
214 // if( ! check( command, COMMAND_LIST ) ) { return(EVAL_PAGE); }
215 if( !useTag() || ! check( command, COMMAND_LIST ) ) { return(EVAL_PAGE); }
216
217 // æ•´åˆæ?ãƒã‚§ãƒ?‚¯?šã‚¢ã‚¯ã‚·ãƒ§ãƒ³ãƒªã‚¹ãƒˆã¨ã®å˜åœ¨ãƒã‚§ãƒ?‚¯
218 if( !check( action, ACTION_LIST ) ) {
219 String errMsg = "æŒ?®šã?アクションã¯å®Ÿè¡Œã§ãã¾ã›ã‚“。アクションエラー"
220 + HybsSystem.CR
221 + "action=[" + action + "] "
222 + HybsSystem.CR
223 + "æŒ?®šå¯èƒ½ãªã‚¢ã‚¯ã‚·ãƒ§ãƒ³:"
224 + StringUtil.array2csv( ACTION_LIST ) ;
225 throw new HybsSystemException( errMsg );
226 }
227
228 // スレーブテーブルã®é›?ˆå‡¦ç?‚’行ã†ä¸»ã‚ー(nullæ™?masterKeys)
229 if( slaveKeys == null ) { slaveKeys = masterKeys; }
230
231 super.setScope( masterScope );
232 DBTableModel masterTable = (DBTableModel)getObject( masterTableId );
233
234 // æ•´åˆæ?ãƒã‚§ãƒ?‚¯?šã?スタãƒ??ブルã¯å¿??
235 if( masterTable == null ) {
236 String errMsg = "マスタãƒ??ブルã¯å¿??ã§ã™ã?"
237 + HybsSystem.CR
238 + "action=[" + action + "] "
239 + "masterTableId=[" + masterTableId + "] "
240 + "masterScope=[" + masterScope + "] " ;
241 throw new HybsSystemException( errMsg );
242 }
243 if( noSideEffect ) { masterTable = cloneTable( masterTable ); }
244 Map<String,Integer> masterMap = makeKeyMap( masterTable,masterKeys,useCheckOnly );
245
246 DBTableModel slaveTable = null;
247 Map<String,Integer> slaveMap = null;
248
249 // æ•´åˆæ?ãƒã‚§ãƒ?‚¯?šaction="GROUP" 㨠"ADD_CLM" 以外ã§ã¯ã€ã‚¹ãƒ¬ãƒ¼ãƒ–テーブルã¯å¿??
250 if( ! ACT_GROUP.equalsIgnoreCase( action ) && !ACT_ADD_CLM.equalsIgnoreCase( action ) ) {
251 super.setScope( slaveScope );
252 slaveTable = (DBTableModel)getObject( slaveTableId );
253
254 if( slaveTable == null ) {
255 String errMsg = "action=\"" + action + "\" 時ã«ã¯ã€ã‚¹ãƒ¬ãƒ¼ãƒ–テーブルãŒå¿?¦ã§ã™ã?"
256 + HybsSystem.CR
257 + "slaveTableId=[" + slaveTableId + "] "
258 + "slaveScope=[" + slaveScope + "] " ;
259 throw new HybsSystemException( errMsg );
260 }
261 if( noSideEffect ) { slaveTable = cloneTable( slaveTable ); }
262 slaveMap = makeKeyMap( slaveTable,slaveKeys,false ); // スレーブã?useCheckOnlyç„¡é–¢ä¿?
263
264 // ãã?å ´åˆã?マスタã¨ã‚¹ãƒ¬ãƒ¼ãƒ–ãŒåŒä¸?ƒ¡ãƒ¢ãƒªä¸Šã?ãƒ??ブル(物ç?š„ã«åŒã˜)ã§ãªã?º‹ã?
265 if( slaveTable == masterTable ) {
266 String errMsg = "マスタã¨ã‚¹ãƒ¬ãƒ¼ãƒ–ãŒåŒä¸?ƒ¡ãƒ¢ãƒªã«ãªã£ã¦ã?¾ã™ã?"
267 + "é€šå¸¸ã€æ¤œç´¢çµæžœã¯ TableId 㨠Scope を別ã€?«æŒ?®šã—ã¾ã™ã?"
268 + HybsSystem.CR
269 + "action=[" + action + "] "
270 + "masterTableId=[" + masterTableId + "] "
271 + "slaveTableId=[" + slaveTableId + "] "
272 + "masterScope=[" + masterScope + "] "
273 + "slaveScope=[" + slaveScope + "] " ;
274 throw new HybsSystemException( errMsg );
275 }
276 }
277
278 super.setScope( scope );
279 useMainTrans( isMainTrans ); // 5.1.6.0 (2010/05/01) DBLastSqlã®å‡¦ç??見直ã?
280 startQueryTransaction( tableId ); // 3.6.0.8 (2004/11/19)
281
282 // è¨å®šå?ã®æ•´åˆæ?ãƒã‚§ãƒ?‚¯
283 // æ•´åˆæ?ãƒã‚§ãƒ?‚¯?šaction="UNION_ALL" 㨠"GROUP"㨠"ADD_CLM"㨠"UNION_CLM" 以外ã§ã¯ã€masterKeys ãŒå¿??
284 if( ! ACT_UNION_ALL.equalsIgnoreCase( action )
285 && !ACT_UNION_SELROW.equalsIgnoreCase( action ) // 4.3.2.0 (2008/09/11)
286 && !ACT_GROUP.equalsIgnoreCase( action )
287 && !ACT_ADD_CLM.equalsIgnoreCase( action )
288 && !ACT_UNION_CLM.equalsIgnoreCase( action )
289 && masterKeys == null ) {
290 String errMsg = "action=\"" + action + "\" 時ã«ã¯ã€masterKeys ãŒå¿??ã§ã™ã?"
291 + HybsSystem.CR
292 + "masterKeys=[" + masterKeys + "] ";
293 throw new HybsSystemException( errMsg );
294 }
295
296 // è¨å®šå?ã®æ•´åˆæ?ãƒã‚§ãƒ?‚¯
297 // æ•´åˆæ?ãƒã‚§ãƒ?‚¯?šaction="DIFFERENCE" ã§ã¯ã€diffKeys ãŒå¿??
298 if( ACT_DIFFERENCE.equalsIgnoreCase( action ) && diffKeys == null ) {
299 String errMsg = "action=\"" + action + "\" 時ã«ã¯ã€diffKeys ãŒå¿??ã§ã™ã?"
300 + HybsSystem.CR
301 + "diffKeys=[" + diffKeys + "] ";
302 throw new HybsSystemException( errMsg );
303 }
304
305 // è¨å®šå?ã®æ•´åˆæ?ãƒã‚§ãƒ?‚¯
306 // æ•´åˆæ?ãƒã‚§ãƒ?‚¯?šå?åˆæ?(UNION_CLM) 㨠グルーãƒ?GROUP) 㨠列追åŠ?ADD_CLM) 以外ã§ã¯ã€ãƒ†ãƒ¼ãƒ–ルカラãƒ?•°ãŒåŒã˜ã§ã‚ã‚‹å¿?¦ãŒã‚ã‚‹ã€?
307 if( ! ACT_UNION_CLM.equalsIgnoreCase( action )
308 && !ACT_GROUP.equalsIgnoreCase( action )
309 && !ACT_ADD_CLM.equalsIgnoreCase( action ) ) {
310 int mClmSize = masterTable.getColumnCount();
311 int sClmSize = slaveTable.getColumnCount();
312
313 if( mClmSize != sClmSize ) {
314 String errMsg = "action=\"" + action + "\" 時ã«ã¯ã€ãƒ†ãƒ¼ãƒ–ルカラãƒ?•°ãŒç•°ãªã£ã¦ã¯ã?‘ã¾ã›ã‚“ã€?
315 + HybsSystem.CR
316 + "Master=" + mClmSize + " ,["
317 + StringUtil.array2csv( masterTable.getNames() ) + "]"
318 + HybsSystem.CR
319 + "Slave =" + sClmSize + " ,["
320 + StringUtil.array2csv( slaveTable.getNames() ) + "]";
321 throw new HybsSystemException( errMsg );
322 }
323 }
324
325 StringBuilder buf = null;
326 if( display ) {
327 buf = new StringBuilder();
328 buf.append( action ).append( "(" );
329 buf.append( " M[" ).append( masterTable.getRowCount() ).append( "]" );
330 if( slaveTable != null ) {
331 buf.append( ",S[" ).append( slaveTable.getRowCount() ).append( "]" );
332 }
333 }
334
335 // 4.3.3.0 (2008/10/01)
336 setRequestAttribute( "DB.MASTER_COUNT" , String.valueOf( masterTable.getRowCount() ) );
337 // 4.3.3.1 (2008/10/08) nullãƒã‚§ãƒ?‚¯
338 if( slaveTable != null ) {
339 setRequestAttribute( "DB.SLAVE_COUNT", String.valueOf( slaveTable.getRowCount() ) );
340 }
341
342 DBTableModel table = null;
343 if( ACT_UNION_ALL.equalsIgnoreCase( action ) ) { // 全体集å?
344 table = makeUnionAll( masterTable,slaveTable );
345 }
346 else if( ACT_UNION_SELROW.equalsIgnoreCase( action ) ) { // 4.3.2.0 (2008/09/11) 全体集å?slave表をmaster表ã®ãƒã‚§ãƒ?‚¯è¡Œã‹ã‚‰è¿½åŠ?
347 table = makeUnionSelrow( masterTable,slaveTable );
348 }
349 else if( ACT_UNION.equalsIgnoreCase( action ) ) { // 和集å?
350 table = makeUnion( masterTable,masterMap,slaveTable,slaveMap );
351 }
352 else if( ACT_INTERSECT.equalsIgnoreCase( action ) ) { // ç©é›†å?
353 table = makeIntersect( masterTable,masterMap,slaveMap );
354 }
355 else if( ACT_MINUS.equalsIgnoreCase( action ) ) { // å·®é›?ˆ
356 table = makeMinus( masterTable,masterMap,slaveMap );
357 }
358 else if( ACT_DIFFERENCE.equalsIgnoreCase( action ) ) { // å·®åˆ?›†å?
359 table = makeDifference( masterTable,masterMap,slaveTable,slaveMap );
360 }
361 else if( ACT_UNION_CLM.equalsIgnoreCase( action ) ) { // åˆ—åˆæˆ?
362 if( unionClms == null ) {
363 String errMsg = "action=\"UNION_CLM\" 時ã«ã¯ã€unionClms ãŒå¿??ã§ã™ã?" ;
364 throw new HybsSystemException( errMsg );
365 }
366
367 table = makeUnionClm( masterTable,slaveKeys,slaveTable,slaveMap );
368 }
369 else if( ACT_ADD_CLM.equalsIgnoreCase( action ) ) { // 列追�
370 if( unionClms == null ) {
371 String errMsg = "action=\"ADD_CLM\" 時ã«ã¯ã€unionClms ãŒå¿??ã§ã™ã?" ;
372 throw new HybsSystemException( errMsg );
373 }
374
375 table = makeAddClm( masterTable );
376 }
377 else if( ACT_GROUP.equalsIgnoreCase( action ) ) { // グルー�
378 table = makeGroup( masterTable );
379 }
380
381 if( table != null ) {
382 // 3.6.0.8 (2004/11/19) トランザクションãƒã‚§ãƒ?‚¯ã‚’行ã„ã¾ã™ã?
383 super.setScope( scope );
384 if( ! commitTableObject( tableId, table ) ) {
385 return (SKIP_PAGE);
386 }
387 }
388
389 if( display ) {
390 buf.append( " ) = [" ).append( table.getRowCount() ).append( "]" );
391 jspPrint( buf.toString() );
392 }
393
394 // 4.3.3.0 (2008/10/01)
395 // 4.3.4.4 (2009/01/01)
396 setRequestAttribute( "DB.COUNT" , ( table == null ? 0 :String.valueOf( table.getRowCount() ) ) );
397
398 return(EVAL_PAGE); // ペã?ã‚¸ã®æ®‹ã‚Šã‚’評価ã™ã‚‹ã€?
399 }
400
401 /**
402 * タグリブオブジェクトをリリースã—ã¾ã™ã?
403 * ã‚ャãƒ?‚·ãƒ¥ã•れã¦å†åˆ©ç”¨ã•れるã?ã§ã€ãƒ•ィールドã?åˆæœŸè¨å®šã‚’行ã„ã¾ã™ã?
404 *
405 * @og.rev 5.1.4.0 (2010/03/01) groupAddClms 追�
406 * @og.rev 5.1.6.0 (2010/05/01) DBLastSqlã®å‡¦ç??ã€DBTableModelãŒæ–°è¦ä½œæ?ã•れãŸå?ç?§ã®ã¿è¡Œã†ã€?
407 * @og.rev 5.3.1.0 (2011/01/01) separator追�
408 */
409 @Override
410 protected void release2() {
411 super.release2();
412 command = CMD_NEW;
413 action = null;
414 tableId = HybsSystem.TBL_MDL_KEY; // 出力å?ã® tableId
415 scope = "session"; // 出力å?ã® scope
416 masterTableId = HybsSystem.TBL_MDL_KEY; // マスタ�?ブル㮠tableId
417 masterScope = "session"; // マスタ�?ブル㮠scope
418 slaveTableId = HybsSystem.TBL_MDL_KEY; // スレーブテーブル㮠tableId
419 slaveScope = "request"; // スレーブテーブル㮠scope
420 masterKeys = null; // マスタãƒ??ブルã®é›?ˆå‡¦ç?‚’行ã†ä¸»ã‚ー
421 slaveKeys = null; // スレーブテーブルã®é›?ˆå‡¦ç?‚’行ã†ä¸»ã‚ー(nullæ™?masterKeys)
422 diffKeys = null; // マスタãƒ??ブルã®DIFFERENCE時ã?å·®åˆ?‚«ãƒ©ãƒ?
423 unionClms = null; // スレーブã‹ã‚‰ã?スタã¸è¿½åŠ?™ã‚‹ã‚«ãƒ©ãƒ?
424 modifyClms = null; // スレーブã‹ã‚‰ã?スタã¸å€¤ã‚’æ›´æ–°ã™ã‚‹ã‚«ãƒ©ãƒ?
425 groupAddClms = null; // 5.1.4.0 (2010/03/01) masterKeysã§é›?ˆå‡¦ç?™ã‚‹ã¨ãã«ã€ç›¸é•データをCSV連çµã—ã¦æ®‹ã™ã‚«ãƒ©ãƒ?
426 noSideEffect = false; // ãƒ??ブルモãƒ?ƒ«ã«å¯¾ã™ã‚‹å‰¯ä½œç”¨(true:ãªã?false:ã‚ã‚‹)
427 useDiffData = true; // DIFFERENCE時ã«å·®åˆ??スレーブデータを追åŠ?™ã‚‹ã‹ã©ã?‹
428 useCheckOnly = false; // マスタãƒ??ブルã®é¸æŠžè¡Œã?ãƒ??ã‚¿ã®ã¿ã‚’対象ã«å‡¦ç?‚’行ã†ã‹ã©ã?‹
429 display = true;
430 isMainTrans = true; // 5.1.6.0 (2010/05/01) DBLastSqlã®å‡¦ç??見直ã?
431 separator = ",";
432 }
433
434 /**
435 * æŒ?®šã?ãƒ??ãƒ–ãƒ«ã®æŒ?®šã?カラãƒ?CSV)よりã€è¡Œç•ªå·ã‚’ã?ãƒ??化ã—ã¾ã™ã?
436 * ãªãŠã?引数ã®ãƒ??ブルã«ã¤ã?¦ã¯ã€ä¸»ã‚ーã«ã‚ˆã‚‹ã‚°ãƒ«ãƒ¼ãƒ—å?ç?Œè¡Œã‚れã¾ã™ã?(副作用ã‚り)
437 *
438 * @og.rev 4.3.2.0 (2008/09/11) マスタã‚ー未æŒ?®šæ™‚ã¯ä½•ã‚‚ã—ãªã?
439 * @og.rev 5.1.4.0 (2010/03/01) groupAddClms 追�
440 * @og.rev 5.3.1.0 (2011/01/01) groupAddClms ã® separatoræŒ?®šå¯¾å¿?
441 * @og.rev 5.5.8.5 (2012/11/27) 大æ–?—ã?å°æ–‡å—を区別ã—ãªã??
442 *
443 * @param table マップ作æ?å…??ãƒ??ã‚¿ãƒ??ブル(副作用ã‚り)
444 * @param keys マップ作æ?ã®ä¸»ã‚ー(CSVå½¢å¼?
445 * @param useCheckOnly ãƒã‚§ãƒ?‚¯è¡Œã?ã¿ã‚’対象ã«ã™ã‚‹ã‹ã©ã?‹
446 *
447 * @return マップ化ã•れãŸä¸»ã‚ーã¨è¡Œç•ªå·
448 */
449 private Map<String,Integer> makeKeyMap( final DBTableModel table, final String keys, final boolean useCheckOnly ) {
450
451 // カラãƒ?をカラãƒ?•ªå·ã«å¤‰æ›ã—ã¾ã™ã?
452 int[] clmNo = makeColumnNo( table,keys );
453 int clmSize = clmNo.length;
454 if( clmSize == 0 ) { // マスタã‚ー未æŒ?®šæ™‚ã«ã¯å…¨ã‚«ãƒ©ãƒ?‚’使用ã—ã¾ã™ã?
455 // clmSize = table.getColumnCount();
456 // clmNo = new int[clmSize];
457 // for( int i=0; i<clmSize; i++ ) {
458 // clmNo[i] = i;
459 // }
460 return null; // 4.3.2.0 (2008/09/11)
461 }
462
463 // groupAddClms をカラãƒ?•ªå·ã«å¤‰æ›ã—ã¾ã™ã?
464 int[] grpClmNo = makeColumnNo( table,groupAddClms );
465 int grpClmSize = grpClmNo.length;
466
467 Map<String,Integer> tempMap = new LinkedHashMap<String,Integer>();
468
469 // 注æ„:GROUP化ã?éŽç¨‹ã§ ãƒ??ブル件数ãŒå‹•çš?«å¤‰åŒ–ã—ã¾ã™ã?
470 StringBuilder buf ;
471 for( int row=0; row<table.getRowCount(); row++ ) {
472 if( useCheckOnly && table.getModifyType( row ).length() == 0 ) {
473 continue;
474 }
475
476 buf = new StringBuilder();
477 for( int i=0; i<clmSize; i++ ) {
478 buf.append( table.getValue( row,clmNo[i] ) ).append( "|" );
479 }
480 // 主ã‚ãƒ¼é€£çµæ–‡å—å?
481 // String key = buf.toString(); // 主ã‚ãƒ¼é€£çµæ–‡å—å?
482 String key = buf.toString().toUpperCase(Locale.JAPAN); // 5.5.8.5 (2012/11/27) 大æ–?—ã?å°æ–‡å—を区別ã—ãªã??
483 if( tempMap.containsKey( key ) ) {
484 // 5.1.4.0 (2010/03/01) groupAddClms 追�
485 int orgRow = tempMap.get( key ).intValue() ; // 追åŠ?¸ˆã¿ã®è¡Œç•ªå·ã‚’å–å¾?
486 for( int i=0; i<grpClmSize; i++ ) {
487 int clm = grpClmNo[i];
488 String val1 = table.getValue( orgRow,clm ) ; // æ—¢å˜ã?行ã?カラãƒ??ãƒ??ã‚¿
489 String val2 = table.getValue( row,clm ) ; // 削除ã™ã‚‹è¡Œã?カラãƒ??ãƒ??ã‚¿
490 // 5.3.1.0 (2011/01/01)
491 // table.setValueAt( val1 + "," + val2,orgRow,clm ); // CSV 連çµã?ãƒ??タを戻ã™ã?
492 table.setValueAt( val1 + separator + val2,orgRow,clm ); // CSV 連çµã?ãƒ??タを戻ã™ã?
493 }
494 table.removeValue( row );
495 row-- ;
496 }
497 else { // ã¾ã??未登録ã®å ´å?
498 tempMap.put( key,Integer.valueOf( row ) );
499 }
500 }
501
502 return tempMap;
503 }
504
505 /**
506 * æŒ?®šã?マスタ,スレーブテーブルを使用ã—㦠全体集å?処ç?‚’実行ã—ã¾ã™ã?
507 *
508 * @param masterTbl マスターãƒ??ブルモãƒ?ƒ«
509 * @param slaveTbl スレーブテーブルモãƒ?ƒ«
510 *
511 * @return 処ç?µæžœã®ãƒ??ブルモãƒ?ƒ«
512 */
513 private DBTableModel makeUnionAll( final DBTableModel masterTbl,final DBTableModel slaveTbl ) {
514 DBTableModel table = masterTbl;
515
516 for( int row=0; row<slaveTbl.getRowCount(); row++ ) {
517 String[] vals = slaveTbl.getValues( row );
518 table.addColumnValues( vals );
519 }
520
521 return table;
522 }
523
524 /**
525 * æŒ?®šã?マスタ,スレーブテーブルを使用ã—㦠全体集å?処ç?‚’実行ã—ã¾ã™ã?
526 * スレーブ表ã¯ã€ã?スタ表ã®ãƒã‚§ãƒ?‚¯ã•れãŸè¡Œã‚’起点ã¨ã—ã¦ç™»éŒ²ã•れã¾ã™ã?
527 * ãƒã‚§ãƒ?‚¯ã•れã¦ã?ªã??åˆã?ã€ã‚¹ãƒ¬ãƒ¼ãƒ–表ã¯å…ˆé?ã‹ã‚‰è¿½åŠ?•れã¾ã™ã?
528 *
529 * @og.rev 4.3.2.0 (2008/09/11) æ–°è¦ä½œæ?
530 *
531 * @param masterTbl マスターãƒ??ブルモãƒ?ƒ«
532 * @param slaveTbl スレーブテーブルモãƒ?ƒ«
533 *
534 * @return 処ç?µæžœã®ãƒ??ブルモãƒ?ƒ«
535 */
536 private DBTableModel makeUnionSelrow( final DBTableModel masterTbl,final DBTableModel slaveTbl ) {
537 DBTableModel table = masterTbl;
538
539 int insRowNo = ( getParameterRows().length > 0 ) ? getParameterRows()[0] + 1 : 0 ;
540 for( int row=0; row<slaveTbl.getRowCount(); row++ ) {
541 String[] vals = slaveTbl.getValues( row );
542 table.addValues( vals, insRowNo + row, false );
543 }
544
545 return table;
546 }
547
548 /**
549 * æŒ?®šã?マスタ,スレーブテーブルを使用ã—㦠和集å?処ç?‚’実行ã—ã¾ã™ã?
550 *
551 * @og.rev 5.5.8.5 (2012/11/27) 大æ–?—ã?å°æ–‡å—を区別ã—ãªã??
552 *
553 * @param masterTbl マスターãƒ??ブルモãƒ?ƒ«
554 * @param masterMap マスターãƒ??ブルã®ä¸»ã‚ーマッãƒ?
555 * @param slaveTbl スレーブテーブルモãƒ?ƒ«
556 * @param slaveMap スレーブテーブルã®ä¸»ã‚ーマッãƒ?
557 *
558 * @return 処ç?µæžœã®ãƒ??ブルモãƒ?ƒ«
559 */
560 private DBTableModel makeUnion( final DBTableModel masterTbl,final Map<String,Integer> masterMap,
561 final DBTableModel slaveTbl,final Map<String,Integer> slaveMap ) {
562 DBTableModel table = masterTbl;
563
564 @SuppressWarnings("rawtypes")
565 Map.Entry[] entry = slaveMap.entrySet().toArray( new Map.Entry[slaveMap.size()] );
566
567 int size = entry.length;
568 for( int i=0; i<size; i++ ) {
569 String key = (String)entry[i].getKey();
570 if( key != null ) { key = key.toUpperCase(Locale.JAPAN); } // 5.5.8.5 (2012/11/27) 大æ–?—ã?å°æ–‡å—を区別ã—ãªã??
571 if( ! masterMap.containsKey( key ) ) { // マスタã«ã‚¹ãƒ¬ãƒ¼ãƒ–データãŒå˜åœ¨ã—ãªã?
572 int row = ((Integer)entry[i].getValue()).intValue();
573 String[] vals = slaveTbl.getValues( row );
574 table.addColumnValues( vals );
575 }
576 }
577 return table;
578 }
579
580 /**
581 * æŒ?®šã?マスタ,スレーブテーブルを使用ã—㦠ç©é›†å?処ç?‚’実行ã—ã¾ã™ã?
582 *
583 * @og.rev 5.5.8.5 (2012/11/27) 大æ–?—ã?å°æ–‡å—を区別ã—ãªã??
584 *
585 * @param masterTbl マスターãƒ??ブルモãƒ?ƒ«
586 * @param masterMap マスターãƒ??ブルã®ä¸»ã‚ーマッãƒ?
587 * @param slaveMap スレーブテーブルã®ä¸»ã‚ーマッãƒ?
588 *
589 * @return 処ç?µæžœã®ãƒ??ブルモãƒ?ƒ«
590 */
591 private DBTableModel makeIntersect( final DBTableModel masterTbl,final Map<String,Integer> masterMap, final Map<String,Integer> slaveMap ) {
592 DBTableModel table = masterTbl;
593
594 @SuppressWarnings("rawtypes")
595 Map.Entry[] entry = masterMap.entrySet().toArray( new Map.Entry[masterMap.size()] );
596
597 int size = entry.length;
598 for( int i=0; i<size; i++ ) {
599 String key = (String)entry[i].getKey();
600 if( key != null ) { key = key.toUpperCase(Locale.JAPAN); } // 5.5.8.5 (2012/11/27) 大æ–?—ã?å°æ–‡å—を区別ã—ãªã??
601 if( ! slaveMap.containsKey( key ) ) { // スレーブã«ãƒžã‚¹ã‚¿ãŒå˜åœ¨ã—ãªã?
602 int row = ((Integer)entry[i].getValue()).intValue();
603 table.rowDelete( row ); // è«–ç†å‰Šé™¤
604 }
605 }
606
607 // 行番å·ãŒå¤‰ã‚らãªã?‚ˆã?«é€??削除ã—ã¾ã™ã?
608 for( int row=table.getRowCount()-1; row>=0; row-- ) {
609 // if( DBTableModel.DELETE_TYPE.equals( table.getModifyType( row ) ) ) {
610 if( DBTableModel.DELETE_TYPE.equalsIgnoreCase( table.getModifyType( row ) ) ) { // 5.5.8.5 (2012/11/27) 大æ–?—ã?å°æ–‡å—を区別ã—ãªã??
611 table.removeValue( row );
612 }
613 }
614
615 return table;
616 }
617
618 /**
619 * æŒ?®šã?マスタ,スレーブテーブルを使用ã—㦠差é›?ˆ 処ç?‚’実行ã—ã¾ã™ã?
620 *
621 * @og.rev 5.5.8.5 (2012/11/27) 大æ–?—ã?å°æ–‡å—を区別ã—ãªã??
622 *
623 * @param masterTbl マスターãƒ??ブルモãƒ?ƒ«
624 * @param masterMap マスターãƒ??ブルã®ä¸»ã‚ーマッãƒ?
625 * @param slaveMap スレーブテーブルã®ä¸»ã‚ーマッãƒ?
626 *
627 * @return 処ç?µæžœã®ãƒ??ブルモãƒ?ƒ«
628 */
629 private DBTableModel makeMinus( final DBTableModel masterTbl,final Map<String,Integer> masterMap,
630 final Map<String,Integer> slaveMap ) {
631 DBTableModel table = masterTbl;
632
633 @SuppressWarnings("rawtypes")
634 Map.Entry[] entry = masterMap.entrySet().toArray( new Map.Entry[masterMap.size()] );
635
636 int size = entry.length;
637 for( int i=0; i<size; i++ ) {
638 String key = (String)entry[i].getKey();
639 if( key != null ) { key = key.toUpperCase(Locale.JAPAN); } // 5.5.8.5 (2012/11/27) 大æ–?—ã?å°æ–‡å—を区別ã—ãªã??
640 if( slaveMap.containsKey( key ) ) { // スレーブã«ãƒžã‚¹ã‚¿ãŒå˜åœ¨ã™ã‚‹
641 int row = ((Integer)entry[i].getValue()).intValue();
642 table.rowDelete( row ); // è«–ç†å‰Šé™¤
643 }
644 }
645
646 // 行番å·ãŒå¤‰ã‚らãªã?‚ˆã?«é€??削除ã—ã¾ã™ã?
647 for( int row=table.getRowCount()-1; row>=0; row-- ) {
648 // if( DBTableModel.DELETE_TYPE.equals( table.getModifyType( row ) ) ) {
649 if( DBTableModel.DELETE_TYPE.equalsIgnoreCase( table.getModifyType( row ) ) ) { // 5.5.8.5 (2012/11/27) 大æ–?—ã?å°æ–‡å—を区別ã—ãªã??
650 table.removeValue( row );
651 }
652 }
653
654 return table;
655 }
656
657 /**
658 * æŒ?®šã?マスタ,スレーブテーブルを使用ã—㦠差åˆ?›†å?処ç?‚’実行ã—ã¾ã™ã?
659 *
660 * @og.rev 5.5.8.5 (2012/11/27) 大æ–?—ã?å°æ–‡å—を区別ã—ãªã??
661 *
662 * @param masterTbl マスターãƒ??ブルモãƒ?ƒ«
663 * @param masterMap マスターãƒ??ブルã®ä¸»ã‚ーマッãƒ?
664 * @param slaveTbl スレーブテーブルモãƒ?ƒ«
665 * @param slaveMap スレーブテーブルã®ä¸»ã‚ーマッãƒ?
666 *
667 * @return 処ç?µæžœã®ãƒ??ブルモãƒ?ƒ«
668 */
669 private DBTableModel makeDifference( final DBTableModel masterTbl,final Map<String,Integer> masterMap,
670 final DBTableModel slaveTbl ,final Map<String,Integer> slaveMap ) {
671 DBTableModel table = masterTbl;
672
673 // ãƒ??ブルã®å·®åˆ?±žæ?ã®ã‚«ãƒ©ãƒ?•ªå·ã‚’求ã‚ã¾ã™ã?(マスタã€ã‚¹ãƒ¬ãƒ¼ãƒ–å?é€?
674 int[] diffClmNo = makeColumnNo( table,diffKeys );
675 int diffClmSize = diffClmNo.length;
676
677 // スレーブã‹ã‚‰ã?スタã¸å€¤ã®å†ã‚»ãƒ?ƒˆã‚’行ã†ã‚«ãƒ©ãƒ?•ªå·ã‚’求ã‚ã¾ã™ã?(マスタã€ã‚¹ãƒ¬ãƒ¼ãƒ–å?é€?
678 int[] modClmNo = makeColumnNo( table,modifyClms );
679 int modClmSize = modClmNo.length;
680
681 int clmSize = table.getColumnCount();
682 DBTableModel newTable = DBTableModelUtil.newDBTable();
683 newTable.init( clmSize );
684
685 // ãƒ??ブルã®å…¨ã‚«ãƒ©ãƒ?‚’æ–°ãŸã«ä½œæ?ã™ã‚‹ãƒ??ブルã«ã‚³ãƒ”ã?ã—ã¾ã™ã?
686 for( int i=0; i<clmSize; i++ ) {
687 newTable.setDBColumn( i,table.getDBColumn( i ) );
688 }
689
690 // スレーブã?å…ˆé?カラãƒ?Œã€WRITABLE ã‹ã©ã?‹
691 boolean writeFlag = "WRITABLE".equalsIgnoreCase( slaveTbl.getColumnName(0) );
692
693 @SuppressWarnings("rawtypes")
694 Map.Entry[] entry = masterMap.entrySet().toArray( new Map.Entry[masterMap.size()] );
695
696 int size = entry.length;
697 for( int i=0; i<size; i++ ) {
698 String key = (String)entry[i].getKey();
699 if( key != null ) { key = key.toUpperCase(Locale.JAPAN); } // 5.5.8.5 (2012/11/27) 大æ–?—ã?å°æ–‡å—を区別ã—ãªã??
700 if( slaveMap.containsKey( key ) ) { // スレーブã«ãƒžã‚¹ã‚¿ãŒå˜åœ¨ã™ã‚‹
701 int mrow = ((Integer)entry[i].getValue()).intValue();
702 int srow = (slaveMap.get( key )).intValue();
703 boolean unmatched = false;
704 for( int j=0; j<diffClmSize; j++ ) {
705 String mval = table.getValue( mrow,diffClmNo[j] );
706 String sval = slaveTbl.getValue( srow,diffClmNo[j] );
707 // if( mval != null && !mval.equals( sval ) ) { unmatched = true; break; }
708 if( mval != null && !mval.equalsIgnoreCase( sval ) ) { unmatched = true; break; } // 5.5.8.5 (2012/11/27) 大æ–?—ã?å°æ–‡å—を区別ã—ãªã??
709 }
710
711 if( unmatched ) { // 属æ?æƒ??ãŒç•°ãªã‚‹å?åˆã?ã¿å‡¦ç?
712 // ãƒ??ã‚¿ã®ã‚³ãƒ”ã?
713 String[] mvals = new String[clmSize];
714 System.arraycopy( table.getValues( mrow ),0,mvals,0 ,clmSize );
715
716 // スレーブã?値をã?スタã®å€¤ã«ã‚»ãƒ?ƒˆã™ã‚‹ã€?
717 for( int j=0; j<modClmSize; j++ ) {
718 String val = slaveTbl.getValue( srow,modClmNo[j] );
719 mvals[modClmNo[j]] = val;
720 }
721 newTable.addColumnValues( mvals );
722
723 if( useDiffData ) {
724 // ãƒ??ã‚¿ã®ã‚³ãƒ”ã?
725 String[] svals = new String[clmSize];
726 System.arraycopy( slaveTbl.getValues( srow ),0,svals,0 ,clmSize );
727 if( writeFlag ) { svals[0] = "0"; } // 書ãè¾¼ã¿ä¸è¨±å¯
728 for( int j=0; j<diffClmSize; j++ ) {
729 int dclmNo = diffClmNo[j];
730 String mval = mvals[dclmNo];
731 String sval = svals[dclmNo];
732 // if( mval != null && !mval.equals( sval ) ) {
733 if( mval != null && !mval.equalsIgnoreCase( sval ) ) { // 5.5.8.5 (2012/11/27) 大æ–?—ã?å°æ–‡å—を区別ã—ãªã??
734 svals[dclmNo] = "<span class=\"unmatched\">" + sval + "</span>" ;
735 }
736 }
737 newTable.addColumnValues( svals );
738 // newTable.setRowWritable( newTable.getRowCount()-1,false ); // 書ãè¾¼ã¿ä¸è¨±å¯
739 }
740 }
741 }
742 }
743 return newTable;
744 }
745
746 /**
747 * æŒ?®šã?マスタ,スレーブテーブルを使用ã—ã¦ åˆ—åˆæˆ?処ç?‚’実行ã—ã¾ã™ã?
748 *
749 * ã™ã§ã«ã€ã?スタ ã«ã‚«ãƒ©ãƒ?Œå˜åœ¨ã—ã¦ã?‚‹å ´åˆã?ã€å?ã®æ›¸ãæ›ãˆã‚’ã€?
750 * カラãƒ?Œå˜åœ¨ã—ãªã‘れã°ã€ã‚«ãƒ©ãƒ?‚’追åŠ?—ã¾ã™ã?
751 * マスタã¨ã‚¹ãƒ¬ãƒ¼ãƒ–ã?ãƒ??ã‚¿çªåˆã›æ™‚ã®ã‚ーã¯ã€slaveKeys ã«ãªã‚Šã¾ã™ã?
752 * ã“れã¯ã€masterMap を使用ã—ãªã?“ã¨ã‚’æ„味ã—ã¾ã™ã?(masterKeys æŒ?®šã«ã‚ˆã‚‹GROUP化ã?
753 * 行ã„ã¾ã™ã?masterKeys を指定ã—ãªã??åˆã?ã€ã‚µãƒžãƒ©ã‚¤ã‚ºãªã—ã§å‡¦ç?—ã¾ã™ã?)
754 * 具体的ã«ã¯ã€ã?スタãƒ??ブルã®è¤?•°ã®è¡Œã«å¯¾ã—ã¦ã€ã‚¹ãƒ¬ãƒ¼ãƒ–データã®å€¤ãŒè¨å®?
755 * ã•れるå¯èƒ½æ€§ãŒã‚ã‚‹ã“ã¨ã‚’æ„味ã—ã¾ã™ã?
756 *
757 * @og.rev 5.5.8.5 (2012/11/27) 大æ–?—ã?å°æ–‡å—を区別ã—ãªã??
758 *
759 * @param masterTbl マスターãƒ??ブルモãƒ?ƒ«
760 * @param slaveKeys スレーブã‚ー
761 * @param slaveTbl スレーブテーブルモãƒ?ƒ«
762 * @param slaveMap スレーブテーブルã®ä¸»ã‚ーマッãƒ?
763 *
764 * @return 処ç?µæžœã®ãƒ??ブルモãƒ?ƒ«
765 */
766 private DBTableModel makeUnionClm( final DBTableModel masterTbl ,final String slaveKeys ,
767 final DBTableModel slaveTbl ,final Map<String,Integer> slaveMap ) {
768
769 DBTableModel table = makeAddClm( masterTbl );
770
771 // カラãƒ?をカラãƒ?•ªå·ã«å¤‰æ›ã—ã¾ã™ã?
772 int[] keyClmNo = makeColumnNo( table,slaveKeys );
773
774 int[] mClmNo = makeColumnNo( table ,unionClms );
775 int[] sClmNo = makeColumnNo( slaveTbl,unionClms );
776 int addSize = mClmNo.length; // unionClms ã®å€‹æ•°ãªã®ã§ã€ã?スタã€ã‚¹ãƒ¬ãƒ¼ãƒ–ã?åŒä¸?
777
778 // çªåˆã›ã‚’行ã„ã€ã?ãƒ?ƒã™ã‚‹ã‚«ãƒ©ãƒ?«ã¤ã?¦ã€å?ã‚’ã‚»ãƒ?ƒˆã—ç›´ã—ã¾ã™ã?
779 // Map.Entry[] entry = slaveMap.entrySet().toArray( new Map.Entry[slaveMap.size()] );
780
781 for( int row=0; row<table.getRowCount(); row++ ) {
782 String[] mvals = table.getValues( row );
783 StringBuilder buf = new StringBuilder();
784 for( int i=0; i<keyClmNo.length; i++ ) {
785 buf.append( mvals[keyClmNo[i]] ).append( "|" );
786 }
787 // 主ã‚ãƒ¼é€£çµæ–‡å—å?
788 // String key = buf.toString(); // 主ã‚ãƒ¼é€£çµæ–‡å—å?
789 String key = buf.toString().toUpperCase(Locale.JAPAN); // 5.5.8.5 (2012/11/27) 大æ–?—ã?å°æ–‡å—を区別ã—ãªã??
790 if( slaveMap.containsKey( key ) ) { // スレーブã«ãƒžã‚¹ã‚¿ã«å¯¾å¿œã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãŒå˜åœ¨ã™ã‚‹
791 int slvRow = (slaveMap.get( key )).intValue();
792 String[] svals = slaveTbl.getValues( slvRow ); // スレーブã?行番å·
793 for( int j=0; j<addSize; j++ ) {
794 mvals[mClmNo[j]] = svals[sClmNo[j]];
795 }
796 table.setValues( mvals,row );
797 }
798 }
799 table.resetModify();
800
801 return table;
802 }
803
804 /**
805 * æŒ?®šã?マスタãƒ??ブル㫠列追åŠ?処ç?‚’実行ã—ã¾ã™ã?
806 *
807 * ã™ã§ã«ã€ã?スタ ã«ã‚«ãƒ©ãƒ?Œå˜åœ¨ã—ã¦ã?‚‹å ´åˆã?ã€å?ã®æ›¸ãæ›ãˆã‚’ã€?
808 * カラãƒ?Œå˜åœ¨ã—ãªã‘れã°ã€ã‚«ãƒ©ãƒ?‚’追åŠ?—ã¾ã™ã?
809 *
810 * @param masterTbl マスターãƒ??ブルモãƒ?ƒ«
811 *
812 * @return 処ç?µæžœã®ãƒ??ブルモãƒ?ƒ«
813 */
814 private DBTableModel makeAddClm( final DBTableModel masterTbl ) {
815 String[] addClms = StringUtil.csv2Array( unionClms );
816 int addClmSize = addClms.length;
817 boolean[] useAdd = new boolean[addClmSize];
818 int addSize = 0;
819 for( int i=0; i<addClmSize; i++ ) {
820 if( masterTbl.getColumnNo( addClms[i],false ) < 0 ) { // å˜åœ¨ã—ãªã‘れ㰠-1
821 useAdd[i] = true;
822 addSize++ ;
823 }
824 else {
825 useAdd[i] = false; // マスタã«å˜åœ¨ã™ã‚Œã°ã€è¿½åŠ?¸è¦?
826 }
827 }
828
829 int mstrClmSize = masterTbl.getColumnCount();
830 int clmSize = mstrClmSize + addSize;
831
832 DBTableModel table = DBTableModelUtil.newDBTable();
833 table.init( clmSize );
834 int clmNo = 0;
835 // マスタãƒ??ブルã®å…¨ã‚«ãƒ©ãƒ?‚’æ–°ãŸã«ä½œæ?ã™ã‚‹ãƒ??ブルã«ã‚³ãƒ”ã?ã—ã¾ã™ã?
836 for( int i=0; i<mstrClmSize; i++ ) {
837 table.setDBColumn( clmNo++,masterTbl.getDBColumn( i ) );
838 }
839 // 追åŠ?™ã‚‹ã‚«ãƒ©ãƒ?‚’æ–°ãŸã«ä½œæ?ã™ã‚‹ãƒ??ブルã«è¿½åŠ?—ã¾ã™ã?
840 String[] addClmVal = new String[addSize]; // 追åŠ??ã®ã¿
841 int addCnt = 0;
842 for( int i=0; i<addClmSize; i++ ) {
843 if( useAdd[i] ) {
844 DBColumn column = getDBColumn( addClms[i] );
845 addClmVal[addCnt++] = nval( column.getDefault(),"" );
846 table.setDBColumn( clmNo++,column );
847 }
848 }
849 // ä¸?—¦ã€ã™ã¹ã¦ã®ãƒžã‚¹ã‚¿ãƒ??ã‚¿ã‚’æ–°ãƒ??ブルã«ã‚³ãƒ”ã?ã—ã¾ã™ã?
850 for( int row=0; row<masterTbl.getRowCount(); row++ ) {
851 String[] vals = new String[clmSize];
852 System.arraycopy( masterTbl.getValues( row ),0,vals,0 ,mstrClmSize ); // マスタãƒ??ã‚¿ã®ã‚³ãƒ”ã?
853 System.arraycopy( addClmVal,0,vals,mstrClmSize ,addSize ); // 追åŠ??æƒ??ã®åˆæœŸå€¤
854 table.addColumnValues( vals );
855 }
856
857 return table;
858 }
859
860 /**
861 * æŒ?®šã?マスタãƒ??ブルを使用ã—㦠グルーãƒ?処ç?‚’実行ã—ã¾ã™ã?
862 *
863 * @param masterTbl マスターãƒ??ブルモãƒ?ƒ«
864 *
865 * @return 処ç?µæžœã®ãƒ??ブルモãƒ?ƒ«
866 */
867 private DBTableModel makeGroup( final DBTableModel masterTbl ) {
868 DBTableModel table = masterTbl;
869
870 return table;
871 }
872
873 /**
874 * æŒ?®šã?ãƒ??ブルã¨åŒã˜ãƒ??ブルを別オブジェクトã¨ã—ã¦ä½œæ?ã—ã¾ã™ã?
875 *
876 * @param tbl コピã?å…?ƒ†ãƒ¼ãƒ–ルモãƒ?ƒ«
877 *
878 * @return コピã?ã•ã‚ŒãŸæ–°ãƒ??ブルモãƒ?ƒ«
879 */
880 private DBTableModel cloneTable( final DBTableModel tbl ) {
881 int clmSize = tbl.getColumnCount();
882
883 DBTableModel table = DBTableModelUtil.newDBTable();
884 table.init( clmSize );
885
886 // ãƒ??ブルã®å…¨ã‚«ãƒ©ãƒ?‚’æ–°ãŸã«ä½œæ?ã™ã‚‹ãƒ??ブルã«ã‚³ãƒ”ã?ã—ã¾ã™ã?
887 for( int i=0; i<clmSize; i++ ) {
888 table.setDBColumn( i,tbl.getDBColumn( i ) );
889 }
890 // ã™ã¹ã¦ã®ãƒ??ã‚¿ã‚’æ–°ãƒ??ブルã«ã‚³ãƒ”ã?ã—ã¾ã™ã?
891 for( int row=0; row<tbl.getRowCount(); row++ ) {
892 String[] vals = new String[clmSize];
893 System.arraycopy( tbl.getValues( row ),0,vals,0 ,clmSize ); // ãƒ??ã‚¿ã®ã‚³ãƒ”ã?
894 table.addColumnValues( vals );
895 }
896 return table;
897 }
898
899 /**
900 * æŒ?®šã?ãƒ??ブルよりã€ã‚«ãƒ©ãƒ??åã«å¯¾å¿œã™ã‚‹ã‚«ãƒ©ãƒ?•ªå·é…å?を作æ?ã—ã¾ã™ã?
901 *
902 * カラãƒ?ã®CSVãƒ??ã‚¿ã?æŒ?®šã•れãªã??å?clmcsv == null)ã¯ã€?•·ã•ï¼ã?é…å?ã‚’è¿”ã—ã¾ã™ã?
903 *
904 * @param table ãƒ??ブルモãƒ?ƒ«
905 * @param clmcsv カラãƒ?ã®CSVãƒ??ã‚¿
906 *
907 * @return カラãƒ?ã«å¯¾å¿œã™ã‚‹ã?列番å·é…å?(ãªã‘れã°ã€?•·ã•ï¼é?åˆ?
908 */
909 private int[] makeColumnNo( final DBTableModel table,final String clmcsv ) {
910
911 // マスタãƒ??ブルã®å·®åˆ?±žæ?ã®ã‚«ãƒ©ãƒ?•ªå·ã‚’求ã‚ã¾ã™ã?
912 String[] clms = StringUtil.csv2Array( clmcsv );
913 int[] clmNo = new int[clms.length];
914
915 // カラãƒ?をカラãƒ?•ªå·ã«å¤‰æ›ã—ã¾ã™ã?
916 for( int i=0; i<clms.length; i++ ) {
917 clmNo[i] = table.getColumnNo( clms[i] );
918 }
919
920 return clmNo;
921 }
922
923 /**
924 * ã€TAG】コマンãƒ?NEW,RENEW)ã‚’ã‚»ãƒ?ƒˆã—ã¾ã?åˆæœŸå€¤:NEW)ã€?
925 *
926 * @og.tag
927 * コマンドã?,HTMLã‹ã‚‰(get/post)æŒ?®šã•れã¾ã™ã?ã§,CMD_xxx ã§è¨å®šã•れる
928 * フィールド定数値ã®ã?¥ã‚Œã‹ã‚’ã?æŒ?®šã§ãã¾ã™ã?
929 * åˆæœŸå€¤ã¯ NEW ã§ã™ã?
930 *
931 * @param cmd コマンãƒ?public static final 宣è¨?•れã¦ã?‚‹æ–?—å?)
932 * @see <a href="{@docRoot}/constant-values.html#org.opengion.hayabusa.taglib.TableMergeTag.CMD_NEW">コマンド定数</a>
933 */
934 public void setCommand( final String cmd ) {
935 String cmd2 = getRequestParameter( cmd );
936 if( cmd2 != null && cmd2.length() > 0 ) { command = cmd2.toUpperCase(Locale.JAPAN); }
937 }
938
939 /**
940 * ã€TAG】アクションを指定ã—ã¾ã?UNION_ALL|UNION|INTERSECT|MINUS|DIFFERENCE|UNION_CLM|ADD_CLM|GROUP|UNION_SELROW)ã€?
941 *
942 * @og.tag
943 * æŒ?®šã§ãるアクションã¯ã€å?体集å?UNION_ALL)ã€å?体集å?挿入ä½ç½®æŒ?®?(UNION_SELROW)ã€å’Œé›?ˆ(UNION)
944 * ã€ç©é›†å?INTERSECT)ã€å·®é›?ˆ(MINUS)ã€å·®åˆ?›†å?DIFFERENCE)ã€å?åˆæ?(UNION_CLM)ã€å?追åŠ?ADD_CLM)ã€?グルーãƒ?GROUP)ã§ã™ã?
945 * åˆ—åˆæˆã¨ã‚°ãƒ«ãƒ¼ãƒ—以外ã?処ç?§ã¯ã€ã‚«ãƒ©ãƒ??ã¨ã‚«ãƒ©ãƒ?•°ã¯åŒæ•°ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“ã€?
946 * primaryKeys ã‚?unionClms ãªã©ã®æŒ?®šã?ã‚ーåã?ã€ã?スタãƒ??ブルã«å˜åœ¨ã™ã‚‹å¿?¦ãŒã‚りã¾ã™ã?
947 * マスタãƒ??ブルã¨åŒã˜ã‚«ãƒ©ãƒ?•ªå·ã§ã‚¹ãƒ¬ãƒ¼ãƒ–テーブルよりãƒ??ã‚¿ã‚’èªã¿å‡ºã—ã¾ã™ã?
948 * (カラãƒ?ã‚?±žæ?ã¯ã€ç•°ãªã£ã¦ã‚‚ã‹ã¾ã?¾ã›ã‚“ãŒã?マスタãƒ??ãƒ–ãƒ«ã«æº–æ‹ ã—ã¾ã™ã?)
949 * ã¾ãŸã?å˜ç‹¬(マスタãƒ??ブルã®ã¿)ã§ã€å’Œé›?ˆã¨åŒç‰ã?ã€ã‚°ãƒ«ãƒ¼ãƒ?GROUP)を使用ã™ã‚‹ã¨ã€æŒ‡å®šã?
950 * カラãƒ?§ã®ãƒ¦ãƒ‹ã?ク化を行ã†ã“ã¨ãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã?グループå?ç?§ã¯ã€å?行優先ã¨ã—ã?
951 * ?’回目ã«ç¾ã‚ŒãŸæƒ??を削除ã™ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã?グルーãƒ?ãŒæŒ‡å®šã•れãŸå ´åˆã?ã€?
952 * スレーブテーブルã¯ç„¡è¦–ã•れã¾ã™ã?ã?šã‚Œã?処ç?«ãŠã„ã¦ã‚‚ã?é›?ˆå‡¦ç?‚’行ã†ä¸»ã‚ーã§
953 * ä¸?—¦ã‚°ãƒ«ãƒ¼ãƒ—化ã•れã¾ã™ã?全体集å?UNION_ALL)ã§å‡¦ç?™ã‚‹å?åˆã§ã‚‚ã?主ã‚ーãŒãƒ¦ãƒ‹ã?クã§
954 * ãªã??åˆã?ã€ã?スターã€ã‚¹ãƒ¬ãƒ¼ãƒ–ã?å?ƒ†ãƒ¼ãƒ–ルã§ä¸?—¦ã‚°ãƒ«ãƒ¼ãƒ—化ã•れãŸå¾Œã§ã€ã?ージã•れã¾ã™ã?
955 * (マã?ジ後ã«ã¯ã€åŒä¸?¸»ã‚ーをæŒã¤è¡Œã?å˜åœ¨ã—ã¾ã™ã?)
956 * 全体集å?UNION_ALL)ã®å ´åˆã?ã¿ã€mergeKeys を指定ã™ã‚‹å¿?¦ã?ã‚りã¾ã›ã‚“。ãã®å ´åˆã?ã€?
957 * ã‚ーãªã—ã?ãŸã‚ã€ã?スターã¨ã‚¹ãƒ¬ãƒ¼ãƒ–ã?ãƒ??ブルをå˜ã«åˆæ?ã™ã‚‹ã?‘ã«ãªã‚Šã¾ã™ã?
958 *
959 * <table border="1" frame="box" rules="all" >
960 * <tr><th>action </th><th>åç§° </th><th>処ç?¦‚è¦? </th><th>??/th><th>??/th><th>??/th><th>??/th><tr>
961 * <tr><td>UNION_ALL </td><td>全体集å?/td><td>マスタã¨ã‚¹ãƒ¬ãƒ¼ãƒ–ã‚’åˆæ?
962 * <tr><td>UNION_SELROW</td><td>全体集å?/td><td>マスタã¨ã‚¹ãƒ¬ãƒ¼ãƒ–ã‚’åˆæ?(マスタ表ã®ãƒã‚§ãƒ?‚¯è¡Œã‚’起点ã«è¿½åŠ?/td><td>â—?/td><td>ã€?/td><td>ã€?/td><td>ã€?/td><tr>
963 * <tr><td>UNION </td><td>和集å? </td><td>マスタã¨ã‚¹ãƒ¬ãƒ¼ãƒ–ã?ユニã?ク部ã®ã¿åˆæ? </td><td>â—?/td><td>â—?/td><td>ã€?/td><td>ã€?/td><tr>
964 * <tr><td>INTERSECT </td><td>ç©é›†å? </td><td>マスタã¨ã‚¹ãƒ¬ãƒ¼ãƒ–ã?ユニã?ク部ãŒä¸??ã™ã‚‹ãƒžã‚¹ã‚¿ã®ã¿é¸æŠ?</td><td>â—?/td><td>â—?/td><td>ã€?/td><td>ã€?/td><tr>
965 * <tr><td>MINUS </td><td>å·®é›?ˆ </td><td>マスタã‹ã‚‰ã‚¹ãƒ¬ãƒ¼ãƒ–ã«å˜åœ¨ã™ã‚‹ãƒ¦ãƒ‹ã?ク部を削除ã—ãŸæ®‹ã‚Š </td><td>â—?/td><td>â—?/td><td>ã€?/td><td>ã€?/td><tr>
966 * <tr><td>DIFFERENCE </td><td>å·®åˆ?›†å?/td><td>ユニã?ク部ãŒä¸??ã—ã?å·®åˆ?‚«ãƒ©ãƒ?Œç•°ãªã‚‹ã?スタã®ã¿é¸æŠ?</td><td>â—?/td><td>â—?/td><td>ã€?/td><td>â—?/td><tr>
967 * <tr><td>UNION_CLM </td><td>åˆ—åˆæˆ? </td><td>マスタã¨ã‚ーä¸??ã™ã‚‹ã‚¹ãƒ¬ãƒ¼ãƒ–ã?カラãƒ?ƒ…å ±ã‚’è¿½åŠ? </td><td>â—?/td><td>â—?/td><td>â—?/td><td>ã€?/td><tr>
968 * <tr><td>ADD_CLM </td><td>列追åŠ? </td><td>UNION_CLMã¨ã®é•ã„ã¯ã€ã‚«ãƒ©ãƒ??ã¿è¿½åŠ?™ã‚‹ã“ã¨ã§ã™ã? </td><td>ã€?/td><td>ã€?/td><td>â—?/td><td>ã€?/td><tr>
969 * <tr><td>GROUP </td><td>グルーãƒ?/td><td>マスタã®ãƒ¦ãƒ‹ã?ク部åŒ? </td><td>ã€?/td><td>ã€?/td><td>ã€?/td><td>ã€?/td><tr>
970 * </table>
971 *
972 * ※?šã?スタãƒ??ブルオブジェクトã?ã€å¸¸ã«å¿??
973 * ?‘:スレーブテーブルオブジェクトå¿??
974 * ?’:masterKeys 属æ?å¿??
975 * ?“:unionClms 属æ?å¿??(スレーブテーブルã®ã‚«ãƒ©ãƒ?ã¾ãŸã?追åŠ?™ã‚‹ã‚«ãƒ©ãƒ?)
976 * ?”:diffKeys 属æ?å¿??(DIFFERENCE時ã?å·®åˆ?‚«ãƒ©ãƒ?)ã€modifyClms 属æ?使用å¯èƒ½
977 *
978 * @param action アクション(UNION_ALL|UNION|INTERSECT|MINUS|DIFFERENCE|UNION_CLM|ADD_CLM|GROUP|UNION_SELROW)
979 */
980 public void setAction( final String action ) {
981 this.action = nval( getRequestParameter( action ),this.action );
982 }
983
984 /**
985 * ã€TAG】å?力å?ã®tableIdを指定ã—ã¾ã?
986 * (åˆæœŸå€¤:HybsSystem#TBL_MDL_KEY[={@og.value HybsSystem#TBL_MDL_KEY}])ã€?
987 *
988 * @og.tag
989 * é›?ˆå‡¦ç?µæžœã® DBTableModel をメモリã«ã‚»ãƒ?ƒˆã™ã‚‹å ´åˆã?ã‚ー(tableId)を指定ã—ã¾ã™ã?
990 * (åˆæœŸå€¤:HybsSystem#TBL_MDL_KEY[={@og.value HybsSystem#TBL_MDL_KEY}])ã€?
991 *
992 * @param tableId 出力å?ã®tableId
993 * @see org.opengion.hayabusa.common.HybsSystem#TBL_MDL_KEY
994 */
995 public void setTableId( final String tableId ) {
996 this.tableId = nval( getRequestParameter( tableId ),this.tableId );
997 }
998
999 /**
1000 * ã€TAG】å?力å?ã®scopeを指定ã—ã¾ã?åˆæœŸå€¤:session)ã€?
1001 *
1002 * @og.tag
1003 * é›?ˆå‡¦ç?µæžœã® DBTableModel をメモリã«ã‚»ãƒ?ƒˆã™ã‚‹å ´åˆã?スコープをæŒ?®šã—ã¾ã™ã?
1004 * ã“ã“ã§ã¯ã€ã?スタã‚?‚¹ãƒ¬ãƒ¼ãƒ–ã?スコープè¨å®šãŒå¿?¦ãªç‚ºã€superクラスã®ãƒ¡ã‚½ãƒ?ƒ‰ã‚?
1005 * オーãƒã?ライドã—ã¦ã“ã?オブジェクトå?ã§ã‚ープã—ã¦ã?¾ã™ã?
1006 * åˆæœŸå€¤ã¯ã€session ã§ã™ã?
1007 *
1008 * @param scope 出力å?ã®scope
1009 */
1010 @Override
1011 public void setScope( final String scope ) {
1012 this.scope = nval( getRequestParameter( scope ),this.scope );
1013 }
1014
1015 /**
1016 * ã€TAG】ã?スタãƒ??ブルã®tableIdを指定ã—ã¾ã?
1017 * (åˆæœŸå€¤:HybsSystem#TBL_MDL_KEY[={@og.value HybsSystem#TBL_MDL_KEY}])ã€?
1018 *
1019 * @og.tag
1020 * é›?ˆå‡¦ç??マスタã¨ãªã‚?DBTableModel をメモリã‹ã‚‰å–り出ã™å?åˆã?ã‚ー(tableId)を指定ã—ã¾ã™ã?
1021 * (åˆæœŸå€¤:HybsSystem#TBL_MDL_KEY[={@og.value HybsSystem#TBL_MDL_KEY}])ã€?
1022 *
1023 * @param masterTableId マスタãƒ??ブルã®tableId
1024 * @see org.opengion.hayabusa.common.HybsSystem#TBL_MDL_KEY
1025 */
1026 public void setMasterTableId( final String masterTableId ) {
1027 this.masterTableId = nval( getRequestParameter( masterTableId ),this.masterTableId );
1028 }
1029
1030 /**
1031 * ã€TAG】ã?スタãƒ??ブルã®scopeを指定ã—ã¾ã?åˆæœŸå€¤:session)ã€?
1032 *
1033 * @og.tag
1034 * é›?ˆå‡¦ç??マスタã¨ãªã‚?DBTableModel をメモリã‹ã‚‰å–り出ã™å?åˆã?スコープをæŒ?®šã—ã¾ã™ã?
1035 * åˆæœŸå€¤ã¯ã€session ã§ã™ã?
1036 *
1037 * @param masterScope マスタãƒ??ブルã®scope
1038 */
1039 public void setMasterScope( final String masterScope ) {
1040 this.masterScope = nval( getRequestParameter( masterScope ),this.masterScope );
1041 }
1042
1043 /**
1044 * ã€TAG】ã?スタãƒ??ブルã®é›?ˆå‡¦ç?‚’行ã†ä¸»ã‚ーを指定ã—ã¾ã™ã?
1045 *
1046 * @og.tag
1047 * é›?ˆå‡¦ç?‚’行ã†å ´åˆã?ã€ã‚«ãƒ©ãƒ?ã‚’ã?カンマ区åˆ?‚Šæ–??CSVå½¢å¼?ã§æŒ?®šã—ã¾ã™ã?
1048 * ã“ã?ã‚ーã®çµ?¿åˆã‚ã›ã‚’å…?«ã€?›†åˆå?ç??çªåˆã›ã‚’行ã„ã¾ã™ã?
1049 * ãªãŠã?アクションãŒã‚°ãƒ«ãƒ¼ãƒ?GROUP)以外ã?処ç?§ã¯ã€ã?スタã¨ã‚¹ãƒ¬ãƒ¼ãƒ–ã?カラãƒ?•°ã¨
1050 * 並ã³é ??ã€åŒã˜ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。カラãƒ?ã¯ã€å„ã€?ˆ¥ã€?§ã‚‚ã‹ã¾ã?¾ã›ã‚“ã€?
1051 * アクションãŒå?体集å?UNION_ALL)以外ã?å ´åˆã?ã€å¿??属æ?ã«ãªã‚Šã¾ã™ã?
1052 *
1053 * @param masterKeys マスタãƒ??ブルã®ä¸»ã‚ーをCSVå½¢å¼ã§æŒ?®?
1054 */
1055 public void setMasterKeys( final String masterKeys ) {
1056 this.masterKeys = nval( getRequestParameter( masterKeys ),this.masterKeys );
1057 }
1058
1059 /**
1060 * ã€TAG】スレーブテーブルã®é›?ˆå‡¦ç?‚’行ã†ä¸»ã‚ーを指定ã—ã¾ã™ã?
1061 *
1062 * @og.tag
1063 * é›?ˆå‡¦ç?‚’行ã†å ´åˆã?ã€ã‚«ãƒ©ãƒ?ã‚’ã?カンマ区åˆ?‚Šæ–??CSVå½¢å¼?ã§æŒ?®šã—ã¾ã™ã?
1064 * ã“ã?ã‚ーã®çµ?¿åˆã‚ã›ã‚’å…?«ã€?›†åˆå?ç??çªåˆã›ã‚’行ã„ã¾ã™ã?
1065 * ãªãŠã?アクションãŒã‚°ãƒ«ãƒ¼ãƒ?GROUP)以外ã?処ç?§ã¯ã€ã?スタã¨ã‚¹ãƒ¬ãƒ¼ãƒ–ã?カラãƒ?•°ã¨
1066 * 並ã³é ??ã€åŒã˜ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。カラãƒ?ã¯ã€å„ã€?ˆ¥ã€?§ã‚‚ã‹ã¾ã?¾ã›ã‚“ã€?
1067 * null ã®å ´åˆã?ã€masterKeys ã¨åŒã˜ã¨ã—ã¾ã™ã?
1068 *
1069 * @param slaveKeys スレーブテーブルã®ä¸»ã‚ーをCSVå½¢å¼ã§æŒ?®?
1070 */
1071 public void setSlaveKeys( final String slaveKeys ) {
1072 this.slaveKeys = nval( getRequestParameter( slaveKeys ),this.slaveKeys );
1073 }
1074
1075 /**
1076 * ã€TAG】ã?スタãƒ??ブルã®DIFFERENCE時ã?å·®åˆ?‚«ãƒ©ãƒ?ã‚?CSVå½¢å¼?æŒ?®šã—ã¾ã™ã?
1077 *
1078 * @og.tag
1079 * アクションãŒå·®åˆ??ç?DIFFERENCE)ã®å ´åˆã«ã€å·®åˆ?ƒã‚§ãƒ?‚¯ã‚’行ã†ã‚«ãƒ©ãƒ?ã‚’ã?
1080 * カンマ区åˆ?‚Šæ–??CSVå½¢å¼?ã§æŒ?®šã—ã¾ã™ã?
1081 * å·®åˆ??ç?¨ã¯ã€masterKeys ã§æŒ?®šã•れãŸã‚ーã§ã¯ã€ã?スタã€ã‚¹ãƒ¬ãƒ¼ãƒ–ã¨ã‚‚ã«å˜åœ¨ã?
1082 * ã‹ã¤ã€ã“ã®ã‚ー(diffKeys)ã§æŒ?®šã•れãŸã‚ーã®å€¤ãŒç•°ãªã‚‹ã?スタレコードを
1083 * 抜ã出ã—ã¾ã™ã?
1084 * ã¤ã¾ã‚Šã?主ã‚ーã¯å˜åœ¨ã—ã?属æ?ãŒç•°ãªã‚‹æƒ…å ±ã®ãƒ”ックアãƒ??ã«ãªã‚Šã¾ã™ã?ã§ã€?
1085 * ãƒ??ã‚¿æ›´æ–°(UPDATE)対象を見ã¤ã‘ã‚‹å ´åˆã«ä½¿ç”¨ã§ãã¾ã™ã?
1086 * アクションãŒå·®åˆ??ç?DIFFERENCE)ã®å ´åˆã?ã€å¿??属æ?ã«ãªã‚Šã¾ã™ã?
1087 *
1088 * @param diffKeys マスタãƒ??ブルã®å·®åˆ?‚«ãƒ©ãƒ?ã‚’CSVå½¢å¼ã§æŒ?®?
1089 * @see #setMasterKeys( String )
1090 */
1091 public void setDiffKeys( final String diffKeys ) {
1092 this.diffKeys = nval( getRequestParameter( diffKeys ),this.diffKeys );
1093 }
1094
1095 /**
1096 * ã€TAG】スレーブテーブルã®tableIdを指定ã—ã¾ã?
1097 * (åˆæœŸå€¤:HybsSystem#TBL_MDL_KEY[={@og.value HybsSystem#TBL_MDL_KEY}])ã€?
1098 *
1099 * @og.tag
1100 * é›?ˆå‡¦ç??スレーブã¨ãªã‚?DBTableModel をメモリã‹ã‚‰å–り出ã™å?åˆã?ã‚ー(tableId)を指定ã—ã¾ã™ã?
1101 * ãªãŠã?アクションãŒã‚°ãƒ«ãƒ¼ãƒ?GROUP)ã®å ´åˆã?ã€ã‚¹ãƒ¬ãƒ¼ãƒ–テーブルã¯ä½¿ç”¨ã•れã¾ã›ã‚“ã€?
1102 * (åˆæœŸå€¤:HybsSystem#TBL_MDL_KEY[={@og.value HybsSystem#TBL_MDL_KEY}])ã€?
1103 *
1104 * @param slaveTableId スレーブテーブルã®tableId
1105 * @see org.opengion.hayabusa.common.HybsSystem#TBL_MDL_KEY
1106 */
1107 public void setSlaveTableId( final String slaveTableId ) {
1108 this.slaveTableId = nval( getRequestParameter( slaveTableId ),this.slaveTableId );
1109 }
1110
1111 /**
1112 * ã€TAG】スレーブテーブルã®scopeを指定ã—ã¾ã?åˆæœŸå€¤:session)ã€?
1113 *
1114 * @og.tag
1115 * é›?ˆå‡¦ç??スレーブã¨ãªã‚?DBTableModel をメモリã‹ã‚‰å–り出ã™å?åˆã?スコープをæŒ?®šã—ã¾ã™ã?
1116 * ãªãŠã?アクションãŒã‚°ãƒ«ãƒ¼ãƒ?GROUP)ã®å ´åˆã?ã€ã‚¹ãƒ¬ãƒ¼ãƒ–テーブルã¯ä½¿ç”¨ã•れã¾ã›ã‚“ã€?
1117 * åˆæœŸå€¤ã¯ã€session ã§ã™ã?
1118 *
1119 * @param slaveScope スレーブテーブルã®scope
1120 */
1121 public void setSlaveScope( final String slaveScope ) {
1122 this.slaveScope = nval( getRequestParameter( slaveScope ),this.slaveScope );
1123 }
1124
1125 /**
1126 * ã€TAG】スレーブã‹ã‚‰ã?スタã¸è¿½åŠ?™ã‚‹ã‚«ãƒ©ãƒ?ã‚’CSVå½¢å¼ã§æŒ?®šã—ã¾ã™ã?
1127 *
1128 * @og.tag
1129 * アクションãŒå?åˆæ?(UNION_CLM)ã¾ãŸã?列追åŠ?ADD_CLM)ã®å ´åˆã«ä½¿ç”¨ã•れã¾ã™ã?
1130 * åˆ—åˆæˆ?UNION_CLM)ã¯ã€ã?スタã¨ã‚¹ãƒ¬ãƒ¼ãƒ–ã?主ã‚ーã«å¯¾ã—ã¦ã€ã“ã“ã§æŒ?®šã?スレーブã?
1131 * カラãƒ??åã‚’ã€ã?スタã®åˆ—ã«è¿½åŠ?—ã¾ã™ã?主ã‚ーãŒã?ãƒ?ƒã—ãªã?¡Œã«é–¢ã—ã¦ã¯ã€?
1132 * カラãƒ??åˆæœŸå€¤ãŒé©ç”¨ã•れãŸãƒ‡ãƒ¼ã‚¿ã‚’作æ?ã—ã¾ã™ã?
1133 * 列追åŠ?ADD_CLM)ã¯ã€ã?スタãƒ??ãƒ–ãƒ«ã«æŒ?®šã?カラãƒ?‚’追åŠ?™ã‚‹ã ã‘ã§ã™ã?スレーブテーブルã¯
1134 * å‚ç?ã—ã¾ã›ã‚“。よã£ã¦ã€ä¸»ã‚ーも指定ä¸è¦ã§ã™ã?
1135 *
1136 * @param unionClms åˆ—åˆæˆã™ã‚‹ã‚«ãƒ©ãƒ?ã‚’CSVå½¢å¼ã§æŒ?®?
1137 */
1138 public void setUnionClms( final String unionClms ) {
1139 this.unionClms = nval( getRequestParameter( unionClms ),this.unionClms );
1140 }
1141
1142 /**
1143 * ã€TAG】スレーブã‹ã‚‰ã?スタã¸å€¤ã‚’æ›´æ–°ã™ã‚‹ã‚«ãƒ©ãƒ?ã‚’CSVå½¢å¼ã§æŒ?®šã—ã¾ã™ã?
1144 *
1145 * @og.tag
1146 * アクションãŒå·®åˆ??ç?DIFFERENCE)ã®å ´åˆã«ã€çµæžœã«ãƒžã‚¹ã‚¿ãƒ??ãƒ–ãƒ«ãŒæŠœãå?ã•れã¾ã™ãŒã€?
1147 * æ›´æ–°ã™ã‚‹å ´åˆã«ã€ã‚¹ãƒ¬ãƒ¼ãƒ–特有ã?ユニã?クã‚ー(例:UNIQ)を用ã?¦æ›´æ–°ã™ã‚‹å ´åˆã?
1148 * æŒ?®šã?カラãƒ??ã¯ã€ã‚¹ãƒ¬ãƒ¼ãƒ–ã?値ã«ã‚»ãƒ?ƒˆã—ã¦ãŠããŸã„å ´åˆãŒã‚りã¾ã™ã?
1149 * ã“ã“ã§ã¯ã€æŒ‡å®šã?カラãƒ?«ã¤ã?¦ã€å?ã?‘スレーブã‹ã‚‰ã?スタã¸ã‚»ãƒ?ƒˆã—ã¾ã™ã?
1150 * ãªãŠã?å€¤ã®æ›´æ–°ã«ã¤ã?¦ã¯ã€ã?スタã¨ã‚¹ãƒ¬ãƒ¼ãƒ–ãŒåŒä¸?‚ーã¨ã?†åˆ¶ç´?Œã‚りã¾ã™ã?
1151 *
1152 * @param modifyClms 値を更新ã™ã‚‹ã‚«ãƒ©ãƒ?ã‚’CSVå½¢å¼ã§æŒ?®?
1153 */
1154 public void setModifyClms( final String modifyClms ) {
1155 this.modifyClms = nval( getRequestParameter( modifyClms ),this.modifyClms );
1156 }
1157
1158 /**
1159 * ã€TAG】集åˆå?ç?™ã‚‹ã¨ãã«ã€ç›¸é•データをCSV連çµã—ã¦æ®‹ã™ã‚«ãƒ©ãƒ?ã‚’CSVå½¢å¼ã§æŒ?®šã—ã¾ã™ã?
1160 *
1161 * @og.tag
1162 * masterKeysã§é›?ˆå‡¦ç?™ã‚‹ã¨ãã«ã€??å¸¸ã€æœ€åˆã«è¦‹ã¤ã‹ã£ãŸè¡Œãƒ‡ãƒ¼ã‚¿ã®ã¿æ®‹ã‚Šã¾ã™ãŒã€?
1163 * ã“ã“ã«æŒ?®šã—ãŸã‚«ãƒ©ãƒ?«ã¤ã?¦ã¯ã€ç™ºç”Ÿé?度ã€è?åˆ??èº«ã®æƒ??ã«ã€CSVå½¢å¼ã§é€£çµã—ã¦
1164 * ã?ã¾ã™ã?
1165 * ã“ã?æ“作ã«ã‚ˆã‚Šã€æœ¬æ¥å‰Šé™¤ã•ã‚ŒãŸæƒ…å ±ãŒã??‘行ã?CSVå½¢å¼ã§å–å¾—ã§ãる効果ãŒå¾—られã¾ã™ã?
1166 * ã“れã¯ã€value ã‚¿ã‚°ã® action="APPEND" ã‚’ã?DBTableModel ã«å¯¾ã—ã¦å®Ÿæ–½ã™ã‚‹ã‚ˆã†ãªæ„Ÿã˜ã§ã™ã?
1167 *
1168 * @og.rev 5.1.4.0 (2010/03/01) æ–°è¦è¿½åŠ?
1169 *
1170 * @param groupAddClms 相é•データをCSV連çµã—ã¦æ®‹ã™ã‚«ãƒ©ãƒ?ã‚’CSVå½¢å¼ã§æŒ?®?
1171 */
1172 public void setGroupAddClms( final String groupAddClms ) {
1173 this.groupAddClms = nval( getRequestParameter( groupAddClms ),this.groupAddClms );
1174 }
1175
1176 /**
1177 * ã€TAG】テーブルモãƒ?ƒ«ã«å¯¾ã™ã‚‹å‰¯ä½œç”¨ã®æœ‰ç„¡[true:ãªã?false:ã‚ã‚‹]を指定ã—ã¾ã?åˆæœŸå€¤:false:ã‚ã‚‹)ã€?
1178 *
1179 * @og.tag
1180 * ã™ã¹ã¦ã®å‡¦ç?§ã€DBTableModel ã«å¯¾ã—ã¦ã€ãƒ¦ãƒ‹ã?ク化やグループ化ãªã©ã®é›?ˆå‡¦ç?‚’
1181 * 行ã†éŽç¨‹ã§ã€ã?スタãƒ??ブルã«å¯¾ã—ã¦ç›´æŽ¥å‡¦ç?‚’行ã†ã¨ã€å‰¯ä½œç”¨ãŒç™ºç”Ÿã—ã¾ã™ã?
1182 * åŒæ§˜ã«ã€ã‚¹ãƒ¬ãƒ¼ãƒ–テーブルã«ãŠã„ã¦ã‚‚ã?ä¸?—¦ã‚ー列ã§ã‚°ãƒ«ãƒ¼ãƒ—化ã•れるãŸã‚ã?副作用ã?
1183 * 発生ã—ã¾ã™ã?ã“れã¯ã€ç„¡é§?ªãƒ¡ãƒ¢ãƒªé ˜åŸŸã®ç¢ºä¿ã¨ã€ãƒ†ãƒ¼ãƒ–ル(マスタã€ã‚¹ãƒ¬ãƒ¼ãƒ–ã¨ã‚?ã®
1184 * コピã?処ç?™‚é–“ã?ç¯?´?«ãªã‚Šã¾ã™ã?åˆæœŸå€¤ã®è¨å®šã‚‚副作用ãŒã‚る状態ã«ãªã£ã¦ã?¾ã™ã?
1185 * ã¨ã“ã‚ãŒã?都åˆã«ã‚ˆã£ã¦ã¯ã€è‰²ã€?ª action ã‚’é?ç¶šã—ã¦è¡Œã„ãŸã„å ´åˆãªã©ã€æ¯Žå›žã€?
1186 * ãƒ??タベã?スを検索ã™ã‚‹ã‚ˆã‚Šã‚‚メモリ上ã§ã‚³ãƒ”ã?ã—ãŸã»ã?Œéƒ½åˆãŒã‚ˆã„ケースã§ã¯ã€?
1187 * 副作用ãŒå?ãªã?‚ˆã?«ã€noSideEffect="true" ã«è¨å®šã—ã¾ã™ã?
1188 * ãŸã ã—ã?マスタã€ã‚¹ãƒ¬ãƒ¼ãƒ–ã¨ã‚‚テーブルをコピã?を行ã„ã€çµæžœã®ãƒ??ブルも派生ã™ã‚‹ç‚ºã€?
1189 * 通常ã€?¼’ã¤ã®é ˜åŸŸ(マスタã¨çµæžœã¯åŒã˜ãƒ??ãƒ–ãƒ«ã«æ›¸ã‹ã‚Œã‚?ã§è‰¯ã?‰€ã‚’ã??•ã¤ã®é ˜åŸŸã?
1190 * 作æ?ã•れã¾ã™ã?
1191 * åˆæœŸå€¤ã¯ã€å‰¯ä½œç”¨ãŒã‚ã‚?noSideEffect="false")ã§ã™ã?
1192 *
1193 * @param noSideEffect ãƒ??ブルモãƒ?ƒ«ã«å¯¾ã™ã‚‹å‰¯ä½œç”¨ [true:ãªã?false:ã‚ã‚‹]
1194 */
1195 public void setNoSideEffect( final String noSideEffect ) {
1196 this.noSideEffect = nval( getRequestParameter( noSideEffect ),this.noSideEffect );
1197 }
1198
1199 /**
1200 * ã€TAG】差åˆ??ã‚¹ãƒ¬ãƒ¼ãƒ–ãƒ‡ãƒ¼ã‚¿ã‚’çµæžœãƒ??ブルã«è¿½åŠ?™ã‚‹ã‹ã©ã?‹ã‚’指定ã—ã¾ã?åˆæœŸå€¤:true)ã€?
1201 *
1202 * @og.tag
1203 * アクションãŒå·®åˆ??ç?DIFFERENCE)ã®å ´åˆã«ã€çµæžœã«ãƒžã‚¹ã‚¿ãƒ??ãƒ–ãƒ«ãŒæŠœãå?ã•れã¾ã™ãŒã€?
1204 * å·®åˆ?¯¾è±¡ã®ã‚¹ãƒ¬ãƒ¼ãƒ–ãƒ‡ãƒ¼ã‚¿ã¨æ¯”è¼?—ãŸã„å ´åˆãŒã‚りã¾ã™ã?
1205 * ã“ã?フラグã‚?true ã«ã‚»ãƒ?ƒˆã™ã‚‹ã¨ã€æ›¸è¾¼ã¿ç¦æ¢å±žæ?ãŒä»˜ã„ãŸçŠ¶æ…‹ã§ã€ã‚¹ãƒ¬ãƒ¼ãƒ–データã?
1206 * çµæžœãƒ??ブルã«è¿½åŠ?•れã¾ã™ã?
1207 * ãªãŠã?ã“ã?処ç?§ã¯ã€??常ã¨ç•°ãªã‚Šã?マスタãƒ??ブルã«ã¯ã‚°ãƒ«ãƒ¼ãƒ—化ã®å‰¯ä½œç”¨ã¯ç™ºç”Ÿã—ã¾ã™ãŒã€?
1208 * çµæžœãƒ??ãƒ–ãƒ«ã¯æ–°è¦ã«ä½œæ?ã•れã€å?é 行ã«å¿?š WRITABLE カラãƒ?Œä»˜åŠ ã•れã¾ã™ã?
1209 * åˆæœŸå€¤ã¯ã€true?šè¿½åŠ?™ã‚?ã§ã™ã?
1210 *
1211 * @param flag ã‚¹ãƒ¬ãƒ¼ãƒ–ãƒ‡ãƒ¼ã‚¿ã‚’çµæžœãƒ??ブルã«è¿½åŠ?™ã‚‹ã‹ã©ã?‹(åˆæœŸå€¤:true)
1212 */
1213 public void setUseDiffData( final String flag ) {
1214 useDiffData = nval( getRequestParameter( flag ),useDiffData );
1215 }
1216
1217 /**
1218 * ã€TAG】ã?スタãƒ??ブルã®é¸æŠžè¡Œã?ãƒ??ã‚¿ã®ã¿ã‚’対象ã«å‡¦ç?‚’行ã†ã‹ã©ã?‹ã‚’指定ã—ã¾ã?åˆæœŸå€¤:false)ã€?
1219 *
1220 * @og.tag
1221 * 処ç?¯¾è±¡ã®ãƒžã‚¹ã‚¿ãƒ??ブルã«ã¤ã?¦ã€?¸æŠžè¡ŒãŒæŒ?®šã•れãŸå ´åˆã«ã€?¸æŠžè¡Œã?ã¿ã‚’å?ç?¯¾è±¡ã«
1222 * ã™ã‚‹ã‹ã?全件を対象ã«ã™ã‚‹ã‹ã‚’æŒ?®šã—ã¾ã™ã?
1223 * ç©é›†åˆã‚„å·®åˆ?›†åˆãªã©é€šå¸¸ã¯ã€å?件を対象ã«ã™ã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ãŒã€å?åˆæ?ã‚??追åŠ?ªã©ã€?
1224 * マスタãƒ??ブルã«å¯¾ã—ã¦ã®ã¿ä½œç”¨ã‚’åŠã¼ã™å?ç?§ã¯ã€?¸æŠžè¡Œã?ã¿ã‚’対象ã«å‡¦ç?‚’行ã†äº‹ãŒ
1225 * è€?ˆã‚‰ã‚Œã¾ã™ã?ãã?å ´åˆã?åˆæœŸã‚°ãƒ«ãƒ¼ãƒ—化ã¨åŒã˜ã§ã€å¯¾è±¡ã¨ã™ã‚‹è¡ŒãŒé¸æŠžè¡Œã?ã¿ã«ãªã‚Šã¾ã™ã?
1226 * åˆæœŸå€¤ã¯ã€false?šå?件対象 ã§ã™ã?
1227 *
1228 * @param flag マスタãƒ??ブルã®é¸æŠžè¡Œã?ãƒ??ã‚¿ã®ã¿ã‚’対象ã«å‡¦ç?‚’行ã†ã‹ã©ã?‹(åˆæœŸå€¤:false)
1229 */
1230 public void setUseCheckOnly( final String flag ) {
1231 useCheckOnly = nval( getRequestParameter( flag ),useCheckOnly );
1232 }
1233
1234 /**
1235 * ã€TAG】ã?ージã®çµæžœã‚’表示ã™ã‚‹ã‹ã©ã?‹ã‚’指定ã—ã¾ã?åˆæœŸå€¤:true)ã€?
1236 *
1237 * @og.tag
1238 * true ã§ã€ã?ãƒ¼ã‚¸çµæžœã‚’表示ã—ã¾ã™ã? false ã§ã¯ã€ä½•も表示ã—ã¾ã›ã‚“(åˆæœŸå€¤:true)
1239 * マスタãƒ??ブルã®ä»¶æ•°ã¯ã€??常ã€ã‚ーã§ã‚°ãƒ«ãƒ¼ãƒ—化ã•れるãŸã‚ã?入力件数ã¨ç•°ãªã‚Šã¾ã™ã?
1240 * åŒæ§˜ã«ã€ã‚¹ãƒ¬ãƒ¼ãƒ–ä»¶æ•°ã‚‚ç•°ãªã‚Šã¾ã™ã?çµæžœã®ä»¶æ•°ã¯ã€å?ç?µæžœãŒç¾å®Ÿçš„ã‹ã©ã?‹ã®
1241 * 判æ–ã«ä½¿ç”¨ã•れã¾ã™ã?
1242 * åˆæœŸå€¤ã¯ã€true?šè¡¨ç¤ºã™ã‚‹ ã§ã™ã?
1243 *
1244 * @param flag 接続ã?çµæžœã‚’表示ã™ã‚‹ã‹ã©ã?‹(åˆæœŸå€¤:false)
1245 */
1246 public void setDisplay( final String flag ) {
1247 display = nval( getRequestParameter( flag ),display );
1248 }
1249
1250 /**
1251 * ã€TAGã€?通常使ã?¾ã›ã‚“)ã‚¿ã‚°ã§å‡¦ç?•れる処ç?Œãƒ¡ã‚¤ãƒ³ã¨ãªã‚‹ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³å‡¦ç?‹ã©ã?‹ã‚’指定ã—ã¾ã?åˆæœŸå€¤:false)ã€?
1252 *
1253 * @og.tag
1254 * ã“ã?値ã¯ã€ãƒ•ァイルãƒ?‚¦ãƒ³ãƒãƒ¼ãƒ‰å?ç?«å½±éŸ¿ã—ã¾ã™ã?ã“ã?値ãŒtrueã«æŒ?®šã•ã‚ŒãŸæ™‚ã«commitã•れãŸDBTableModelã?
1255 * ファイルãƒ?‚¦ãƒ³ãƒãƒ¼ãƒ‰ã?対象ã®è¡¨ã«ãªã‚Šã¾ã™ã?
1256 *
1257 * ã“ã?パラメーターã¯ã€??常ã€å„ã‚¿ã‚°ã«ã‚ˆã‚Šå®Ÿè£?•れã?ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒæŒ‡å®šã™ã‚‹å¿?¦ã?ã‚りã¾ã›ã‚“ã€?
1258 * ä½?—ã€?ã¤ã®JSPå†?§DBTableModelãŒè¤?•°ç”Ÿæ?ã•れるå?åˆã«ã€å‰ã«å‡¦ç?—ãŸDBTableModelã«ã¤ã?¦ãƒ•ァイルãƒ?‚¦ãƒ³ãƒãƒ¼ãƒ‰ã‚’ã•ã›ãŸã„
1259 * å ´åˆã?ã€å¾Œã‚ã§DBTableModelを生æˆã™ã‚‹ã‚¿ã‚°ã§ã€æ?示çš?«ã“ã?値をfalseã«æŒ?®šã™ã‚‹ã“ã¨ã§ã€ãƒ•ァイルãƒ?‚¦ãƒ³ãƒãƒ¼ãƒ‰å?ç??対象ã‹ã‚‰
1260 * 除外ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã?
1261 *
1262 * @og.rev 5.1.6.0 (2010/05/01) æ–°è¦ä½œæ?
1263 *
1264 * @param flag メイントランザクションã‹ã©ã?‹
1265 */
1266 public void setMainTrans( final String flag ) {
1267 isMainTrans = nval( getRequestParameter( flag ),isMainTrans );
1268 }
1269
1270 /**
1271 * ã€TAG】groupAddClmsã§æ–?—å?ã‚’é?çµã™ã‚‹é?目区åˆ?‚Šæ–?—ã‚’ã‚»ãƒ?ƒˆã—ã¾ã?åˆæœŸå€¤:",")ã€?
1272 *
1273 * @og.tag
1274 * groupAddClmsã§æ–?—å?ã‚’é?çµã™ã‚‹é?目区åˆ?‚Šæ–?—ã‚’ã‚»ãƒ?ƒˆã—ã¾ã?åˆæœŸå€¤:",")ã€?
1275 * åˆæœŸå€¤ã¯ã€?," ã«è¨å®šã•れã¦ã?¾ã™ã?
1276 *
1277 * @og.rev 5.3.1.0 (2011/01/01)
1278 *
1279 * @param sepa é ?›®åŒºåˆ?‚Šæ–??åˆæœŸå€¤:",")
1280 */
1281 public void setSeparator( final String sepa ) {
1282 separator = nval( getRequestParameter( sepa ),separator );
1283 }
1284
1285 /**
1286 * ã“ã?オブジェクトã?æ–?—å?表ç¾ã‚’è¿”ã—ã¾ã™ã?
1287 * 基本çš?«ãƒ?ƒãƒ?‚°ç›®çš?«ä½¿ç”¨ã—ã¾ã™ã?
1288 *
1289 * @return ã“ã?ã‚¯ãƒ©ã‚¹ã®æ–?—å?表ç¾
1290 */
1291 @Override
1292 public String toString() {
1293 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() )
1294 .println( "VERSION" ,VERSION )
1295 .println( "action" ,action )
1296 .println( "tableId" ,tableId )
1297 .println( "scope" ,scope )
1298 .println( "masterTableId" ,masterTableId )
1299 .println( "masterScope" ,masterScope )
1300 .println( "slaveTableId" ,slaveTableId )
1301 .println( "slaveScope" ,slaveScope )
1302 .println( "masterKeys" ,masterKeys )
1303 .println( "diffKeys" ,diffKeys )
1304 .println( "unionClms" ,unionClms )
1305 .println( "modifyClms" ,modifyClms )
1306 .println( "noSideEffect" ,noSideEffect )
1307 .println( "useDiffData" ,useDiffData )
1308 .println( "useCheckOnly" ,useCheckOnly )
1309 .println( "display" ,display )
1310 .println( "ACTION_LIST" ,ACTION_LIST )
1311 .println( "Other..." ,getAttributes().getAttribute() )
1312 .fixForm().toString() ;
1313 }
1314 }