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