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 }