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 static org.opengion.fukurou.util.StringUtil.nval; 019 020 import java.util.Arrays; 021 import java.util.Enumeration; 022 import java.util.Locale; 023 import java.util.Set; 024 import java.util.TreeSet; 025 026 import org.opengion.fukurou.util.ErrorMessage; 027 import org.opengion.fukurou.util.StringUtil; 028 import org.opengion.hayabusa.common.HybsSystem; 029 import org.opengion.hayabusa.common.HybsSystemException; 030 import org.opengion.hayabusa.db.DBColumn; 031 import org.opengion.hayabusa.db.DBTableModel; 032 033 /** 034 * 登録ãƒ??ã‚¿ã®ç‰©ç?ƒã‚§ãƒ?‚¯(æ•´åˆæ?ãƒã‚§ãƒ?‚¯ã€nullãƒã‚§ãƒ?‚¯)を行ã†ã‚¿ã‚°ã§ã™ã? 035 * 036 * コマンドã«å¯¾å¿œã—ãŸãƒã‚§ãƒ?‚¯æ–¹å¼ã§ã€æŒ‡å®šã?カラãƒ?‚’ãƒã‚§ãƒ?‚¯ã—ã¾ã™ã? 037 * command="NEW" ã®å ´åˆã?ã€columns 引数ã«CSVå½¢å¼ã§æŒ?®šã—ãŸã‚«ãƒ©ãƒ?より 038 * ãƒªã‚¯ã‚¨ã‚¹ãƒˆæƒ…å ±ã‚’å–å¾—ã—ã¦ã€å?ã‚’ãƒã‚§ãƒ?‚¯ã—ã¾ã™ã? 039 * 引数ãƒã‚§ãƒ?‚¯ã§ã¯ã€?%" ã‚?"_" ãªã©ã®ã‚ã„ã¾ã?¤œç´¢æ™‚ã«æŒ?®šã™ã‚‹è¨˜å·ã‚? 040 * å«ã‚?¨ã‚¨ãƒ©ãƒ¼ã«ãªã‚‹ã‚«ãƒ©ãƒ??ãƒã‚§ãƒ?‚¯å¯¾è±¡ã‹ã‚‰ã¯ãšã™å¿?¦ãŒã‚る為ã€? 041 * ãƒã‚§ãƒ?‚¯ã™ã¹ãカラãƒ?‚’æŒ?®šã™ã‚‹å¿?¦ãŒã‚りã¾ã™ã? 042 * command="ENTRY" ã®å ´åˆã?ã€columns 引数ã«ç„¡é–¢ä¿‚ã«ã€å?ã¦ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã•れãŸã‚«ãƒ©ãƒ? 043 * ã®å€¤ã‚’ãƒã‚§ãƒ?‚¯ã—ã¾ã™ã?ã“れã¯ã€å?ã®æ¤œç´¢æ™‚ã?å ´åˆã¨ç•°ãªã‚Šã?ENTRYã§ã¯ 044 * ãƒ??タベã?スã«å€¤ã‚’è¨å®šã™ã‚‹ç‚ºã€ç„¡æ¡ä»¶ã«ãƒã‚§ãƒ?‚¯ã™ã‚‹å¿?¦ãŒã‚りã¾ã™ã? 045 * nullCheck ã¯ã€command ã«ç„¡é–¢ä¿‚ã«æŒ?®šã?カラãƒ?Œ null (ã‚¼ãƒæ–?—å?)ã‹ã©ã?‹ã‚? 046 * 判定ã—ã¾ã™ã? 047 * maxRowCount ã¯ã€ä¸?¦§æ¤œç´¢æ™‚ã?ãƒã‚§ãƒ?‚¯ã•れãŸä»¶æ•°ãŒã?æŒ?®šã?値をè¶?ˆãŸå?åˆã« 048 * エラーã«ãªã‚Šã¾ã™ã?minRowCount ã¯ã€åŒæ§˜ã«ã€æœ€å°é¸æŠžä»¶æ•°(è¨å®šå?ã‚’å«ã‚?ã®æŒ?®šã§ã™ã? 049 * ã“ã?ã‚¿ã‚°ã¯ã€ã‚¨ãƒ©ãƒ¼æ™‚ã«ã¯ã€ãれ以é™ã?JSPç”»é¢ã‚’評価ã—ã¾ã›ã‚“ã€?ODY 部ã«è¨˜è¿°ã•れã? 050 * 値ã¯ã€ã‚¨ãƒ©ãƒ¼æ™‚ã?ã¿è¡¨ç¤ºã•ã‚Œã€æ£å¸¸æ™‚ã«ã¯ã€ãªã«ã‚‚表示ã•れã¾ã›ã‚“。ã“れã?ã€ã‚¨ãƒ©ãƒ¼æ™‚ã? 051 * メãƒ?‚»ãƒ¼ã‚¸ã‚??ユーザーã«ã‚¨ãƒ©ãƒ¼æ™‚ã?アクションを行ã£ã¦ã‚‚らã??åˆã?処ç?例ãˆã°ã€? 052 * ç”»é¢ã‚’戻る為ã®ãƒœã‚¿ãƒ³ãªã©)を表示ã•ã›ã¾ã™ã? 053 * useColumnLabel ã‚?true ã«ã‚»ãƒ?ƒˆã™ã‚‹ã¨ã€ã‚¨ãƒ©ãƒ¼æ™‚ã?カラãƒ?(ラベル)ã‚’ã?カラãƒ?‚ªãƒ–ジェクトã‹ã‚? 054 * å–å¾—ã™ã‚‹ã‚ˆã?«ãªã‚Šã¾ã™ã?動的カラãƒ?®Ÿè¡Œæ™‚ã‚??DBTableModelã«å¯¾ã—ã¦ã€ColumnEditorç‰ã§ 055 * ãƒ©ãƒ™ãƒ«ã‚’æ›¸ãæ›ãˆãŸå ´åˆã«ã€æœ‰åйã§ã™ã?false ã®å ´åˆã?ã€åŸºæœ¬çš?«ã¯ãƒ©ãƒ™ãƒ«ãƒªã‚½ãƒ¼ã‚¹ã‹ã‚‰ã® 056 * å–å¾—ã«ãªã‚Šã¾ã™ãŒã€ã‚±ãƒ¼ã‚¹ã«ã‚ˆã£ã¦ã¯ã€ã‚«ãƒ©ãƒ?‚ªãƒ–ジェクトã‹ã‚‰å–å¾—ã—ã¦ã?‚‹å ´åˆã‚‚ã‚りã¾ã™ã? 057 * ã“ã?属æ?ã¯ã€äº’æ›æ€§ã‚’é‡è¦–ã—ã€å?期å?ãŒã?false ã«ãªã£ã¦ã?¾ã™ã? 058 * 059 * command="MODIFY" , "DELETE" 時ã«ã¯ã€å¼·åˆ¶çš?«ã€minRowCount="1" ã§å‡¦ç?—ã¾ã™ã? 060 * 061 * @og.formSample 062 * â—å½¢å¼ï¼?lt;og:columnCheck command = "…" /> 063 * â—å½¢å¼ï¼?lt;og:columnCheck command = "…" >エラー時ã?ã¿å‡¦ç?</og:columnCheck> 064 * â—body?šãªã?ã‚り(EVAL_BODY_BUFFERED:BODYを評価ã—ã?{@XXXX} ã‚’è§£æžã—ã¾ã? 065 * 066 * â—Tag定義?? 067 * <og:columnCheck 068 * command ã€TAG】コマンド[NEW/RENEW/ENTRY]ã‚’ã‚»ãƒ?ƒˆã—ã¾ã?åˆæœŸå€¤:NEW) 069 * columns ã€TAG】ãƒã‚§ãƒ?‚¯ã™ã¹ãカラãƒ??をカンマ区åˆ?‚Š(CSVå½¢å¼?ã§æŒ?®šã—ã¾ã? 070 * nullCheck ã€TAG】NULL ãƒã‚§ãƒ?‚¯ã™ã¹ãカラãƒ??をカンマ区åˆ?CSVå½¢å¼?ã‚Šã§æŒ?®šã—ã¾ã? 071 * mustAnyCheck ã€TAGã€‘é¸æŠžå¿??カラãƒ?æŒ?®šã?カラãƒ??å†?œ€ä½Žã?ã¨ã¤ãŒNULLã§ãªã?ã‚?AA|BB|CC,XX|YY|ZZ" å½¢å¼ã§æŒ?®šã—ã¾ã? 072 * checkType ã€TAGã€?ãƒã‚§ãƒ?‚¯å¯¾è±¡ã®ãƒ??ã‚¿[AUTO/NEW/ENTRY]を指定ã—ã¾ã?åˆæœŸå€¤:AUTO) 073 * maxRowCount ã€TAG】ENTRY時ã«ãƒã‚§ãƒ?‚¯ã§é¸æŠžã•れãŸè¡Œæ•°ã®æœ?¤§å€¤ã‚’è¨å®šã—ã¾ã? 074 * minRowCount ã€TAG】ENTRY時ã«ãƒã‚§ãƒ?‚¯ã§é¸æŠžã•れãŸè¡Œæ•°ã®æœ?°å?ã‚’è¨å®šã—ã¾ã? 075 * tableId ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“) sessionã«ç™»éŒ²ã•れã¦ã?‚‹ DBTableModel ã‚’å–りå?ã™ã‚ーを指定ã—ã¾ã? 076 * matchKeys ã€TAG】æ£è¦è¡¨ç¾ã§ã®ãƒžãƒƒãƒãƒ³ã‚°ã‚’行ã†ã‚«ãƒ©ãƒ??をカンマ区åˆ?‚Š(CSVå½¢å¼?ã§æŒ?®šã—ã¾ã? 077 * matchVals ã€TAG】æ£è¦è¡¨ç¾ã§ã®ãƒžãƒƒãƒãƒ³ã‚°ã‚’行ã†ã‚«ãƒ©ãƒ??ã«å¯¾ã™ã‚‹å€¤(æ£è¦è¡¨ç¾)をカンマ区åˆ?‚Š(CSVå½¢å¼?ã§æŒ?®šã—ã¾ã? 078 * realTime ã€TAGã€?通常使ã?¾ã›ã‚“)リアルタイãƒ?ƒã‚§ãƒ?‚¯ã‚’行ã†å ´åˆã«æœ‰åйã«ã—ã¾ã? 079 * useStrict ã€TAG】NEWã®å ´åˆã«ã€å޳å¯?«ãƒã‚§ãƒ?‚¯ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false) 080 * useColumnLabel ã€TAG】カラãƒ?ƒ©ãƒ™ãƒ«ã‚’使用ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false) 081 * checkNames ã€TAGã€‘ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã®æ£è¦åŒ–を行ã†ã‚«ãƒ©ãƒ?‚’CSVå½¢å¼ã§è¤?•°æŒ?®šã—ã¾ã? 082 * debug ã€TAG】デãƒãƒƒã‚°æƒ??ã‚’å?力ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false) 083 * > ... Body ... 084 * </og:columnCheck> 085 * 086 * â—使用ä¾? 087 * <og:columnCheck 088 * command = "{@command}" 089 * columns = "AAA,BBB,CCC" DB定義(DBColumnリソース)ã§å®šç¾©ã—ãŸé ?›®(æ¡æ•°,タイプç?ã§ãƒã‚§ãƒ?‚¯ã—ã¾ã™ã? 090 * maxRowCount = "1" ãƒã‚§ãƒ?‚¯ã§é¸ã°ã‚ŒãŸ æœ?¤§é¸æŠžä»¶æ•°(è¨å®šå?ã‚’å«ã‚?を指定ã? 091 * minRowCount = "1" ãƒã‚§ãƒ?‚¯ã§é¸ã°ã‚ŒãŸ æœ?°é¸æŠžä»¶æ•°(è¨å®šå?ã‚’å«ã‚?を指定ã? 092 * nullCheck = "AAA,CCC" NULLãƒã‚§ãƒ?‚¯ã‚’実行ã—ã¾ã™ã? 093 * /> 094 * 095 * [エラー時ã«ã€BODY部ã«è¨˜è¿°ã•れãŸå?容をå?力ã™ã‚‹ã?æ£å¸¸æ™‚ã«ã¯ã€ã“ã®BODY部ã®è¨˜è¿°ã¯å‡ºåŠ›ã•れã¾ã›ã‚“ã€? 096 * <og:columnCheck 097 * command = "{@command}" 098 * columns = "AAA,BBB,CCC" DB定義(DBColumnリソース)ã§å®šç¾©ã—ãŸé ?›®(æ¡æ•°,タイプç?ã§ãƒã‚§ãƒ?‚¯ã—ã¾ã™ã? 099 * nullCheck = "AAA,CCC" NULLãƒã‚§ãƒ?‚¯ã‚’実行ã—ã¾ã™ã? 100 * > 101 * <form method="POST" action="forward.jsp" target="RESULT"> 102 * <og:input type="button" onClick="history.back()" msg="MSG0049" accesskey="R" td="false" /> 103 * </form> 104 * </og:columnCheck> 105 * 106 * mustAnyCheck 属æ?ã«ã€?¸æŠžå¿??カラãƒ?‚’æŒ?®šã—ã¾ã™ã? 107 * 例:mustAnyCheck="AA|BB|CC" 108 * AA,BB,CC ã®ã‚«ãƒ©ãƒ?§é¸æŠžå¿??(ã™ã¹ã¦ãŒnullãªã‚‰ã‚¨ãƒ©ãƒ¼) 109 * 例:mustAnyCheck="AA|BB|CC,XX|YY|ZZ" 110 * AA,BB,CC ã®ã‚»ãƒ?ƒˆã¨ã€XX,YY,ZZã®ã‚»ãƒ?ƒˆã§ãれãžã‚Œé¸æŠžå¿??ã€? 111 * 例:mustAnyCheck="AA|XX,AA|YY,AA|ZZ" 112 * AA ã«å€¤ãŒã‚れã?ã™ã¹ã¦æˆç«‹ã?ãã†ã§ãªã??åˆã?ã€XX 㨠YY 㨠ZZ ãŒã™ã¹ã¦å¿??ã€? 113 * 例:mustAnyCheck="AA|BB,BB|CC,AA|CC" 114 * AA,BB,CC ã®å†??ã©ã‚Œã‹?’ã¤ãŒå¿??ã€?AãŒæ?ç«‹ã™ã‚Œã?BBã‹CCãŒå¿??ã€‚åŒæ§˜ã«ã€? 115 * BBãŒæ?ç«‹ã™ã‚Œã?ã€AAã‹CCãŒå¿??ã€? 116 * 117 * 例:query.jsp 118 * <og:column name="AA" mustAny="true" /> 119 * <og:column name="BB" mustAny="true" /> 120 * <og:column name="XX" mustAny="XYZ" /> 121 * <og:column name="YY" mustAny="XYZ" /> 122 * result.jsp 123 * <og:columnCheck mustAnyCheck="AA|BB,XX|YY" /> 124 * custom/custom.css 125 * .XYZ { background-color: Green; } 126 * 127 * ä¾?動的カラãƒ?§ã€entry.jsp ã§ã®ãƒã‚§ãƒ?‚¯ã‚’行ã†å ´åˆã? 128 * entry.jsp 129 * <og:columnCheck command="NEW" columns="*" useColumnLabel="true" /> 130 * 131 * useColumnLabel ã§ã€å‹•çš?«ä½œæ?ã•れãŸã‚«ãƒ©ãƒ?SAVE=TRUEã§ã‚ャãƒ?‚·ãƒ¥æ¸ˆã¿)を使ã£ã¦ 132 * ãƒã‚§ãƒ?‚¯ã—ã¾ã™ã?command="NEW" ãªã®ã§ã€å¯¾è±¡ã‚«ãƒ©ãƒ?‚’æŒ?®šã™ã‚‹ã?ã«ã€?*" ã§ã™ã¹ã¦ã‚’é¸æŠžã—ã¾ã™ã? 133 * 134 * @og.group ç”»é¢ç™»éŒ² 135 * 136 * @version 4.0 137 * @author Kazuhiko Hasegawa 138 * @since JDK5.0, 139 */ 140 public class ColumnCheckTag extends CommonTagSupport { 141 //* ã“ã?プãƒã‚°ãƒ©ãƒ??VERSIONæ–?—å?ã‚’è¨å®šã—ã¾ã™ã? {@value} */ 142 private static final String VERSION = "5.6.8.3 (2013/09/27)" ; 143 144 private static final long serialVersionUID = 568320130927L ; 145 146 /** command å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?コマンãƒ? æ–°è¦?{@value} */ 147 public static final String CMD_NEW = "NEW" ; 148 /** command å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?コマンãƒ? 冿¤œç´¢ {@value} */ 149 public static final String CMD_RENEW = "RENEW" ; 150 /** command å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?コマンãƒ? エントリー {@value} */ 151 public static final String CMD_ENTRY = "ENTRY" ; 152 /** command å¼•æ•°ã«æ¸¡ã™äº‹ã?出æ¥ã‚?コマンãƒ?リスãƒ? */ 153 154 // 4.3.1.1 (2008/08/23) transient 追åŠ? 155 private transient DBTableModel table = null; // 4.1.2.1 (2008/03/13) 156 157 private String tableId = HybsSystem.TBL_MDL_KEY; // 3.5.4.3 (2004/01/05) 158 private String command = CMD_NEW; // ç„¡æŒ?®šæ™‚ã¯ã€ãƒã‚§ãƒ?‚¯ã‚’行ã†ã€? 159 private String[] columns = null; 160 private String[] nullCheck = null; 161 private String[] mustAnyCheck= null; // 3.8.0.9 (2005/10/17) 162 private int maxRowCount = -1 ; // åˆæœŸå€¤ã¨ã—ã¦?Œç„¡åˆ¶é™ã‚’æŒ?®? 163 private int minRowCount = -1 ; // åˆæœŸå€¤ã¨ã—ã¦?Œç„¡åˆ¶é™ã‚’æŒ?®? 164 private String checkType = "AUTO"; 165 private String bodyString = null; // 3.5.4.2 (2003/12/15) 166 private String[] matchKeys = null; // 4.0.0 (2005/11/30) 167 private String[] matchVals = null; // 4.0.0 (2005/11/30) 168 // private boolean isViewSimple= false; // 4.3.3.0 (2008/10/01) 169 private boolean isRealTime = false; // 4.3.7.0 (2009/06/01) 170 private boolean isStrict = false; // 5.2.2.0 (2010/11/01) NEWã®å ´åˆã«ã€å޳å¯?«ãƒã‚§ãƒ?‚¯ã™ã‚‹ãƒ•ラグを追åŠ? 171 172 private boolean isColumnLabel= false; // 5.4.3.4 (2012/01/12) true ã®å ´åˆã«ã€ã‚«ãƒ©ãƒ?ƒ©ãƒ™ãƒ«ã‚’使用ã—ã¾ã™ã? 173 // private boolean isTblClmLbl = false; // 5.4.3.4 (2012/01/12) true ã®å ´åˆã«ã€DBTableModelã®ã‚«ãƒ©ãƒ?‹ã‚‰ãƒ©ãƒ™ãƒ«ã‚’å–å¾—ã—ã¾ã™ã? 174 175 private String checkNames = null; // 5.4.3.8 (2012/01/24) 176 177 /** 178 * Taglibã®é–‹å§‹ã‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doStartTag() ã‚?オーãƒã?ライドã—ã¾ã™ã? 179 * 180 * @og.rev 3.5.4.2 (2003/12/15) エラー時ã«ã€BODY部ã«è¨˜è¿°ã•れãŸå?容をå?力ã™ã‚‹ã? 181 * @og.rev 5.0.0.2 (2009/09/15) xss対å¿?>ãƒã‚§ãƒ?‚¯ã™ã‚‹ 182 * 183 * @return 後続å?ç??æŒ?¤º( EVAL_BODY_BUFFERED ) 184 */ 185 @Override 186 public int doStartTag() { 187 // 5.0.0.2 (2009/09/15) XSSãƒã‚§ãƒ?‚¯ã—ãªã?>ã™ã‚‹ 188 // useXssCheck( false ); 189 return ( EVAL_BODY_BUFFERED ); // Body を評価ã™ã‚‹ 190 } 191 192 /** 193 * Taglibã®ã‚¿ã‚°æœ¬ä½“を処ç?™ã‚?doAfterBody() ã‚?オーãƒã?ライドã—ã¾ã™ã? 194 * 195 * @og.rev 3.5.4.2 (2003/12/15) エラー時ã«ã€BODY部ã«è¨˜è¿°ã•れãŸå?容をå?力ã™ã‚‹ã? 196 * 197 * @return 後続å?ç??æŒ?¤º(SKIP_BODY) 198 */ 199 @Override 200 public int doAfterBody() { 201 bodyString = getBodyString(); 202 203 return ( SKIP_BODY ); 204 } 205 206 /** 207 * Taglibã®çµ‚äº?‚¿ã‚°ãŒè¦‹ã¤ã‹ã£ãŸã¨ãã«å‡¦ç?™ã‚?doEndTag() ã‚?オーãƒã?ライドã—ã¾ã™ã? 208 * 209 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()ã§å‘¼ã¶ã€? 210 * @og.rev 3.4.0.3 (2003/09/10) command="NEW" ã§ã‚¨ãƒ©ãƒ¼ç™ºç”Ÿæ™‚ã«ã¯ã€DBTableModel をクリアã™ã‚‹ã€? 211 * @og.rev 3.5.4.2 (2003/12/15) HTMLTableViewForm クラスå変更(â‡?ViewForm_HTMLTable) 212 * @og.rev 3.5.4.2 (2003/12/15) エラー時ã«ã€BODY部ã«è¨˜è¿°ã•れãŸå?容をå?力ã™ã‚‹ã? 213 * @og.rev 3.5.4.3 (2004/01/05) tableId 属æ?を追åŠ?? 214 * @og.rev 3.5.4.4 (2004/01/16) ã‚¨ãƒ©ãƒ¼çµæžœã‚’表示ã™ã‚‹ãƒ??ブル形å¼ã?フォーãƒ?¿®æ£ 215 * @og.rev 3.5.5.2 (2004/04/02) TaglibUtil.makeHTMLErrorTable メソãƒ?ƒ‰ã‚’利用 216 * @og.rev 4.1.2.1 (2008/03/13) table 属æ?を追åŠ?? 217 * @og.rev 4.3.3.0 (2008/10/01) viewSimple属æ?追åŠ? 218 * @og.rev 4.3.7.0 (2009/06/01) viewSimple属æ?å称変更 -> isRealTime 219 * @og.rev 5.6.8.3 (2013/09/27) checkTypeãŒAutoã®å ´åˆã?ã‚»ãƒ?ƒˆã‚’ã“ã“ã§è¡Œã„ã€tableModelãƒã‚§ãƒ?‚¯ã‚’checkTypeã§è¡Œã†ã€? 220 * 221 * @return 後続å?ç??æŒ?¤º 222 */ 223 @Override 224 public int doEndTag() { 225 debugPrint(); // 4.0.0 (2005/02/28) 226 int rtnCode = EVAL_PAGE; 227 228 // 4.1.2.1 (2008/03/13) 229 table = (DBTableModel)getObject( tableId ); 230 231 // 5.6.8.3 (2013/09/27) ãƒã‚§ãƒ?‚¯ã‚¿ã‚¤ãƒ—ã?autoã‚’å?れるä½ç½®å¤‰æ›´ 232 if( "AUTO".equals( checkType ) ) { checkType = command; } 233 234 // 3.4.0.3 (2003/09/10) コマンドãŒã€NEW,RENEW 以外ã?å ´åˆã?ã€DBTableModel ã¯å¿??ã€? 235 if( 236 // !CMD_NEW.equals( command ) && 237 // !CMD_RENEW.equals( command ) && 238 !CMD_NEW.equals( checkType ) && // 5.6.8.3 (2013/09/27) commandã‹ã‚‰å¤‰æ›´ 239 !CMD_RENEW.equals( checkType ) && 240 // getObject( tableId ) == null ) { // 3.5.4.3 (2004/01/05) 241 table == null ) { // 4.1.2.1 (2008/03/13) 242 String errMsg = "æ¤œç´¢çµæžœã®ã‚ªãƒ–ジェクトãŒå˜åœ¨ã—ã¾ã›ã‚“ã€? 243 + " checkType=[" + checkType + "]" ; 244 jspPrint( errMsg ); 245 rtnCode = SKIP_PAGE ; 246 } 247 else { 248 // 3.5.5.2 (2004/04/02) TaglibUtil.makeHTMLErrorTable メソãƒ?ƒ‰ã‚’利用 249 ErrorMessage errMsg = makeErrorDBTable(); 250 if( errMsg.getKekka() >= ErrorMessage.NG ) { 251 if( bodyString != null ) { jspPrint( bodyString ); } // 3.5.4.2 (2003/12/15) 252 253 // 4.3.3.0 (2008/10/01) 254 // jspPrint( TaglibUtil.makeHTMLErrorTable( errMsg,getResource() ) ); 255 // 4.3.7.0 (2009/06/01) 256 if( isRealTime ) { jspPrint( TaglibUtil.makeHTMLSimpleErrorList( errMsg,getResource() ) ); } 257 else { jspPrint( TaglibUtil.makeHTMLErrorTable( errMsg, getResource() ) ); } 258 259 if( CMD_NEW.equals( command ) ) { 260 removeObject( tableId ); 261 } 262 rtnCode = SKIP_PAGE ; 263 } 264 else if( errMsg.getKekka() == ErrorMessage.WARNING ) { 265 // 4.3.3.0 (2008/10/01) 266 // jspPrint( TaglibUtil.makeHTMLErrorTable( errMsg,getResource() ) ); 267 // 4.3.7.0 (2009/06/01) 268 if( isRealTime ) { jspPrint( TaglibUtil.makeHTMLSimpleErrorList( errMsg,getResource() ) ); } 269 else { jspPrint( TaglibUtil.makeHTMLErrorTable( errMsg, getResource() ) ); } } 270 } 271 272 return( rtnCode ); 273 } 274 275 /** 276 * タグリブオブジェクトをリリースã—ã¾ã™ã? 277 * 278 * ã‚ャãƒ?‚·ãƒ¥ã•れã¦å†åˆ©ç”¨ã•れるã?ã§ã€ãƒ•ィールドã?åˆæœŸè¨å®šã‚’行ã„ã¾ã™ã? 279 * 280 * @og.rev 2.0.0.4 (2002/09/27) カスタãƒ?‚¿ã‚°ã® release() メソãƒ?ƒ‰ã‚’ã?追åŠ? 281 * @og.rev 3.1.1.2 (2003/04/04) Tomcat4.1 対応ã?release2() ã‚?doEndTag()ã§å‘¼ã¶ã€? 282 * @og.rev 3.5.4.2 (2003/12/15) エラー時ã«ã€BODY部ã«è¨˜è¿°ã•れãŸå?容をå?力ã™ã‚‹ã? 283 * @og.rev 3.5.4.3 (2004/01/05) tableId 属æ?を追åŠ?? 284 * @og.rev 3.8.0.9 (2005/10/17) mustAnyCheck 属æ?を追åŠ?? 285 * @og.rev 4.1.2.1 (2008/03/13) table 属æ?を追åŠ?? 286 * @og.rev 4.3.3.0 (2008/10/01) viewSimple属æ?追åŠ? 287 * @og.rev 4.3.7.0 (2009/06/01) viewSimple属æ?å称変更 -> isRealTime 288 * @og.rev 5.2.2.0 (2010/11/01) NEWã®å ´åˆã«ã€å޳å¯?«ãƒã‚§ãƒ?‚¯ã™ã‚‹ãƒ•ラグを追åŠ? 289 * @og.rev 5.4.3.4 (2012/01/12) isColumnLabelを追åŠ? 290 * 291 */ 292 @Override 293 protected void release2() { 294 super.release2(); 295 command = CMD_NEW; // ç„¡æŒ?®šæ™‚ã¯ã€ãƒã‚§ãƒ?‚¯ã‚’行ã†ã€? 296 columns = null; 297 nullCheck = null; 298 maxRowCount = -1 ; // åˆæœŸå€¤ã¨ã—ã¦?Œç„¡åˆ¶é™ã‚’æŒ?®? 299 minRowCount = -1 ; // åˆæœŸå€¤ã¨ã—ã¦?Œç„¡åˆ¶é™ã‚’æŒ?®? 300 checkType = "AUTO"; 301 bodyString = null ; // 3.5.4.2 (2003/12/15) 302 tableId = HybsSystem.TBL_MDL_KEY; // 3.5.4.3 (2004/01/05) 303 mustAnyCheck= null; // 3.8.0.9 (2005/10/17) 304 matchKeys = null; // 4.0.0 (2005/11/30) 305 matchVals = null; // 4.0.0 (2005/11/30) 306 table = null; // 4.1.2.1 (2008/03/13) 307 // isViewSimple= false; // 4.3.3.0 (2008/10/01) 308 isRealTime = false; // 4.3.7.0 (2009/06/01) 309 isStrict = false; // 5.2.2.0 (2010/11/01) NEWã®å ´åˆã«ã€å޳å¯?«ãƒã‚§ãƒ?‚¯ã™ã‚‹ãƒ•ラグを追åŠ? 310 isColumnLabel= false; // 5.4.3.4 (2012/01/12) true ã®å ´åˆã«ã€ã‚«ãƒ©ãƒ?ƒ©ãƒ™ãƒ«ã‚’使用ã—ã¾ã™ã? 311 // isTblClmLbl = false; // 5.4.3.4 (2012/01/12) true ã®å ´åˆã«ã€DBTableModelã®ã‚«ãƒ©ãƒ?‹ã‚‰ãƒ©ãƒ™ãƒ«ã‚’å–å¾—ã—ã¾ã™ã? 312 checkNames = null; // 5.4.3.8 (2012/01/24) 313 } 314 315 /** 316 * DBColumn オブジェクトを作æ?ã—ã¦ã€DBColumn#valueCheck( String )ã§ 317 * ãƒã‚§ãƒ?‚¯ã‚’行ã†ã€‚ãã®çµæžœã®ã€ErrorMessage オブジェクトを DBTableModel ã« 318 * å–り込んã§ã€ã‚¨ãƒ©ãƒ¼ã®å ´åˆã?ã€ãã®è¡¨ç¤ºã‚’行ã†ã€? 319 * 表示方法ã?ã€ãã®ã¾ã¾ ViewForm オブジェクトを作æ?ã—ã¦ã€è¡¨ç¤ºã‚’行ã†ã€? 320 * 321 * @og.rev 3.5.5.2 (2004/04/02) リターン値をã?DBTableModel ã‹ã‚‰ ErrorMessage ã«å¤‰æ›´ 322 * @og.rev 4.0.0.0 (2005/01/31) リターン値㮠ErrorMessage ã¯ã€å¿?šå˜åœ¨ã™ã‚‹ã€? 323 * @og.rev 4.1.2.1 (2008/03/13) command="MODIFY" , "DELETE" 時ã«ã¯ã€å¼·åˆ¶çš?«ã€minRowCount="1" ã§å‡¦ç?—ã¾ã™ã? 324 * @og.rev 5.6.8.3 (2013/09/27) checkTypeã®Auto時è¨å®šä½ç½®ã‚’doEndTagã§ã™ã‚‹ã‚ˆã†ã«å¤‰æ›´ 325 * 326 * @return エラーメãƒ?‚»ãƒ¼ã‚¸ã®ãƒ??ブルモãƒ?ƒ« 327 */ 328 private ErrorMessage makeErrorDBTable() { 329 ErrorMessage errMsg = new ErrorMessage(); 330 331 //if( "AUTO".equals( checkType ) ) { checkType = command; } // 5.6.8.3 (2013/09/27) move 332 if( CMD_ENTRY.equals( checkType ) ) { 333 errMsg.setTitle( "Request Column Error!" ); 334 errMsg = makeEntryErrorMessage( errMsg ); 335 errMsg = makeMaxRowCountErrorMessage( errMsg ); 336 errMsg = makeMinRowCountErrorMessage( errMsg ); 337 } 338 else if( CMD_NEW.equals( checkType ) ) { 339 errMsg.setTitle( "Entry Column Error!" ); 340 errMsg = makeErrorMessage( errMsg ); 341 errMsg = makeMaxRowCountErrorMessage( errMsg ); 342 errMsg = makeMinRowCountErrorMessage( errMsg ); 343 } 344 else if( minRowCount >= 0 || maxRowCount >= 0) { // -1 ã¯åˆ¶é™ç„¡ã? 345 errMsg.setTitle( "Row Count Error Limited Error!" ); 346 errMsg = makeMaxRowCountErrorMessage( errMsg ); 347 errMsg = makeMinRowCountErrorMessage( errMsg ); 348 } 349 // 4.1.2.1 (2008/03/13) command="MODIFY" , "DELETE" 時ã«ã¯ã€å¼·åˆ¶çš?«ã€minRowCount="1" ã§å‡¦ç?—ã¾ã™ã? 350 else if( "MODIFY,DELETE".indexOf( checkType ) >= 0 && minRowCount < 0 ) { 351 minRowCount = 1; 352 errMsg = makeMinRowCountErrorMessage( errMsg ); 353 } 354 return errMsg; 355 } 356 357 /** 358 * ErrorMessageã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã? 359 * 引数ã®ã‚«ãƒ©ãƒ?é…å?ã‚ˆã‚Šãƒªã‚¯ã‚¨ã‚¹ãƒˆæƒ…å ±ã‚’å–å¾—ã—ã¦ã€å?ã‚’ãƒã‚§ãƒ?‚¯ã—ã¾ã™ã? 360 * DBColumn#valueCheck( String ) ã®çµæžœã®ErrorMessageã‚’ã™ã¹ã¦ append 361 * ã—ã¦ã?ã¾ã™ã? 362 * 363 * @og.rev 3.8.0.9 (2005/10/17) é¸æŠžå¿?? mustAnyCheck ã®ãƒã‚§ãƒ?‚¯è¿½åŠ? 364 * @og.rev 3.8.1.0 (2005/10/24) ãƒªã‚¯ã‚¨ã‚¹ãƒˆæƒ…å ±ã®æ£è¦åŒ–変æ›(DBColumn#valueSet(String))䏿¢ 365 * @og.rev 3.8.5.3 (2006/06/30) リクエスト㫠% , _ ãŒå«ã¾ã‚ŒãŸã¨ãã?ã€å‰Šé™¤ã—ã¾ã™ã? 366 * @og.rev 4.1.2.1 (2008/03/13) must , mustAny ã®è‡ªå‹•å–得追åŠ? 367 * @og.rev 5.0.0.2 (2009/09/15) 個別ã«xssãƒã‚§ãƒ?‚¯ã‚’false 368 * @og.rev 5.1.9.0 (2010/08/01) åŒã˜åå‰ã®é ?›®ã¯ã€?ã¤ã«ã¾ã¨ã‚ã‚‹(ラジオボタンç? 369 * @og.rev 5.2.0.0 (2010/09/01) リアルタイãƒ?ƒã‚§ãƒ?‚¯ã®å ´åˆã?ã€must,mustAnyã®è‡ªå‹•ãƒã‚§ãƒ?‚¯ã¯è¡Œã‚ãªã? 370 * @og.rev 5.2.2.0 (2010/11/01) DBColumn#valueCheck ã§ã€ç”˜ã?ƒã‚§ãƒ?‚¯ã‚’行ã†ã‚ˆã†ã«ã€å¼•æ•°ã« isStrict を追åŠ? 371 * @og.rev 5.4.3.4 (2012/01/12) getLabel( String )ã‚’ã?リソースã‹ã‚‰ã«çµ±ä¸?™ã‚‹ã¨ã¨ã‚‚ã«ã€isColumnLabel 対応を行ã†ã€? 372 * @og.rev 5.4.3.8 (2012/01/28) checkNames対å¿? 373 * 374 * @param errMsg ErrorMessageオブジェクãƒ? 375 * 376 * @return カラãƒ?‚ー ??値 ã®ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ã‚ªãƒ–ジェクãƒ? 377 */ 378 private ErrorMessage makeErrorMessage( final ErrorMessage errMsg ) { 379 380 // 4.1.2.1 (2008/03/13) must , mustAny ã®è‡ªå‹•å–得追åŠ? 381 // request ã‹ã‚‰å–å?ã?注æ„:mustAny 以外ã?自由形å¼ã?å€¤ã¯æ‰?¾—ã—ã¦ã?¾ã›ã‚“ã€? 382 // 5.2.0.0 (2010/09/01) リアルタイãƒ?ƒã‚§ãƒ?‚¯ã®å ´åˆã?ã€must,mustAnyã®è‡ªå‹•ãƒã‚§ãƒ?‚¯ã¯è¡Œã‚ãªã? 383 // (基本çš?«ãƒ‘ラメーターをé?らãªã?™ã‚Šè?å‹•ãƒã‚§ãƒ?‚¯ã¯å‹•ã‹ãªã?Œã€RequestCacheã«ã‚ˆã‚Šå‹•ãã“ã¨ãŒã‚ã‚? 384 if( !isRealTime ) { 385 if( nullCheck == null ) { 386 nullCheck = getRequestValues( HybsSystem.MUST_KEY + "must" ); 387 // 5.1.9.0 (2010/08/01) åŒã˜åå‰ã®é ?›®ã¯ã€?ã¤ã«ã¾ã¨ã‚ã‚‹(ラジオボタンç? 388 // if( nullCheck != null ) { Arrays.sort( nullCheck ); } 389 if( nullCheck != null ) { 390 Set<String> ss = new TreeSet<String>(); 391 ss.addAll( Arrays.asList( nullCheck ) ); 392 // nullCheck = ss.toArray( new String[0] ); 393 nullCheck = ss.toArray( new String[ss.size()] ); // 5.1.9.0 (2010/08/01) K.H 394 } 395 } 396 if( mustAnyCheck == null ) { 397 String[] mustAnyReq = getRequestValues( HybsSystem.MUST_KEY + "mustAny" ); 398 if( mustAnyReq != null && mustAnyReq.length > 0 ) { 399 mustAnyCheck = new String[] { StringUtil.array2line( mustAnyReq,"|" ) }; 400 } 401 } 402 } 403 404 if( nullCheck != null && nullCheck.length != 0 ) { 405 for( int i=0; i<nullCheck.length; i++ ) { 406 String clmKey = nullCheck[i]; // 5.4.3.4 (2012/01/12) 407 // String val = getRequestValue( nullCheck[i] ); 408 // String val = getRequestValue( nullCheck[i], false ); // 5.0.0.2 (2009/09/15) 409 String val = getRequestValue( clmKey, false ); // 5.0.0.2 (2009/09/15) 410 if( val == null || val.length() == 0 ) { 411 // 5.4.3.4 (2012/01/12) isColumnLabel 追åŠ? 412 // String label = getLabel( nullCheck[i] ); // 4.0.0 (2005/01/31) 413 String label = (isColumnLabel) ? getDBColumn( clmKey ).getLabel() : getResource().getLabel( clmKey ); 414 // ERR0012 : æŒ?®šã?ãƒ??ã‚¿ãŒã‚»ãƒ?ƒˆã•れã¦ã?¾ã›ã‚“ã€?NULLエラー)。key={0} 415 errMsg.addMessage( 0,ErrorMessage.NG,"ERR0012",label ); 416 } 417 } 418 } 419 // 3.8.0.9 (2005/10/17) é¸æŠžå¿?? mustAnyCheck ã®ãƒã‚§ãƒ?‚¯è¿½åŠ? 420 if( mustAnyCheck != null && mustAnyCheck.length != 0 ) { 421 for( int i=0; i<mustAnyCheck.length; i++ ) { 422 boolean flag = false; 423 String[] mustSub = StringUtil.csv2Array( mustAnyCheck[i],'|' ); 424 for( int j=0; j<mustSub.length; j++ ) { 425 // String val = getRequestValue( mustSub[j] ); 426 String val = getRequestValue( mustSub[j], false ); // 5.0.0.2 (2009/09/15) 427 if( val != null && val.length() > 0 ) { 428 flag = true; break; // ã²ã¨ã¤ã§ã‚‚nullã§ãªã‘れã°ã€OK 429 } 430 } 431 if( ! flag ) { 432 StringBuilder buf = new StringBuilder(); 433 for( int j=0; j<mustSub.length; j++ ) { 434 String clmKey = mustSub[j]; // 5.4.3.4 (2012/01/12) 435 // 5.4.3.4 (2012/01/12) isColumnLabel 追åŠ? 436 // buf.append( getResource().getLabel( mustSub[j] ) ).append( "," ); 437 String label = (isColumnLabel) ? getDBColumn( clmKey ).getLabel() : getResource().getLabel( clmKey ); 438 buf.append( label ).append( "," ); 439 } 440 // ERR0036 : é¸æŠžå¿??エラー。以下ã?ãƒ??ã‚¿ã®å†?©ã‚Œã‹ã¯å…¥åŠ›ã—ã¦ãã ã•ã„。key={0} 441 errMsg.addMessage( 0,ErrorMessage.NG,"ERR0036",buf.toString() ); 442 } 443 } 444 } 445 if( columns != null && columns.length != 0 ) { 446 for( int i=0; i<columns.length; i++ ) { 447 // 3.8.1.0 (2005/10/24) ãƒªã‚¯ã‚¨ã‚¹ãƒˆæƒ…å ±ã®æ£è¦åŒ–変æ›(DBColumn#valueSet(String))䏿¢ 448 // String clmVal = getRequestValue( columns[i] ); 449 String clmVal = getRequestValue( columns[i], false ); // 5.0.0.2 (2009/09/15) 450 if( clmVal != null && clmVal.length() > 0 ) { 451 clmVal = StringUtil.replace( clmVal,"%","" ); // 3.8.5.3 (2006/06/30) 452 clmVal = StringUtil.replace( clmVal,"_","" ); // 3.8.5.3 (2006/06/30) 453 DBColumn dbColumn = getDBColumn( columns[i] ); 454 // 5.4.3.8 (2012/01/24) checkNames対å¿? 455 if( ( "," + checkNames + "," ).indexOf( "," + columns[i] + "," ) >= 0 ) { 456 String val = dbColumn.valueSet( clmVal ); 457 if( val != null ) { clmVal = val; } 458 } 459 // 5.2.2.0 (2010/11/01) DBColumn#valueCheck ã§ã€ç”˜ã?ƒã‚§ãƒ?‚¯ã‚’行ã†ã‚ˆã†ã«ã€å¼•æ•°ã« isStrict を追åŠ? 460 // errMsg.append( dbColumn.valueCheck( clmVal ) ); 461 errMsg.append( dbColumn.valueCheck( clmVal,isStrict ) ); 462 } 463 } 464 } 465 // 4.0.0 (2005/11/30) æ£è¦è¡¨ç¾ãƒã‚§ãƒ?‚¯ã®è¿½åŠ? 466 if( matchKeys != null && matchKeys.length != 0 ) { 467 for( int i=0; i<matchKeys.length; i++ ) { 468 String clmKey = matchKeys[i]; // 5.4.3.4 (2012/01/12) 469 // String val = getRequestValue( matchKeys[i] ); 470 // String val = getRequestValue( matchKeys[i], false ); // 5.0.0.2 (2009/09/15) 471 String val = getRequestValue( clmKey, false ); // 5.0.0.2 (2009/09/15) 472 if( val != null && ! val.matches( matchVals[i] ) ) { 473 // 5.4.3.4 (2012/01/12) isColumnLabel 追åŠ? 474 // String label = getLabel( matchKeys[i] ); 475 String label = (isColumnLabel) ? getDBColumn( clmKey ).getLabel() : getResource().getLabel( clmKey ); 476 // ERR0037 : ãƒ??ã‚¿æ•´åˆæ?エラー。指定ã?ã‚ãƒ¼ã¯æ•´åˆæ?ãƒã‚§ãƒ?‚¯ã®çµæžœãƒžãƒƒãƒã—ã¾ã›ã‚“ã§ã—ãŸã€‚key={0} val={1} regex={2} 477 errMsg.addMessage( 0,ErrorMessage.NG,"ERR0037",label,val,matchVals[i] ); 478 } 479 } 480 } 481 482 return errMsg; 483 } 484 485 /** 486 * エントリーãƒ??ã‚¿ã®ErrorMessageã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã? 487 * 引数ã®ã‚«ãƒ©ãƒ?é…å?よりエントリーãƒ??ã‚¿å½¢å¼ã?ãƒªã‚¯ã‚¨ã‚¹ãƒˆæƒ…å ±ã‚’å–å¾—ã—ã¦ã€? 488 * 値をãƒã‚§ãƒ?‚¯ã—ã¾ã™ã? 489 * DBColumn#valueCheck( String ) ã®çµæžœã®ErrorMessageã‚’ã™ã¹ã¦ append 490 * ã—ã¦ã?ã¾ã™ã? 491 * 492 * @og.rev 3.1.0.0 (2003/03/20) åå‰ã¨è¡Œç•ªå·ã®åŒºåˆ?‚Šè¨˜å·ã‚?"^" ã‹ã‚‰ "__" ã«å¤‰æ›´ã€? 493 * @og.rev 3.5.5.0 (2004/03/12) åå‰ã¨è¡Œç•ªå·ã®åŒºåˆ?‚Šè¨˜å·("__")ã‚’ã?HybsSystem.JOINT_STRING ã«å¤‰æ›´ã€? 494 * @og.rev 3.8.0.9 (2005/10/17) é¸æŠžå¿?? mustAnyCheck ã®ãƒã‚§ãƒ?‚¯è¿½åŠ? 495 * @og.rev 4.1.2.1 (2008/03/13) must , mustAny ã®è‡ªå‹•å–得追åŠ? 496 * @og.rev 4.3.6.4 (2009/05/01) 削除時ã«å¿?šmustAnyãƒã‚§ãƒ?‚¯ã‚¨ãƒ©ãƒ¼ã«ãªã‚‹ãƒã‚°ã‚’ä¿®æ£(書込ã¿å¯èƒ½è¡Œã?ã¿ã‚’å?ç?™ã‚? 497 * @og.rev 4.3.7.0 (2009/06/01) リアルタイãƒ?ƒã‚§ãƒ?‚¯ã®å ´åˆã?ã€must,mustAnyã®è‡ªå‹•ãƒã‚§ãƒ?‚¯ã¯è¡Œã‚ãªã? 498 * @og.rev 5.0.0.2 (2009/09/15) xssãƒã‚§ãƒ?‚¯ 499 * @og.rev 5.4.3.4 (2012/01/12) getLabel( String )ã‚’ã?リソースã‹ã‚‰ã«çµ±ä¸?™ã‚‹ã¨ã¨ã‚‚ã«ã€isColumnLabel 対応を行ã†ã€? 500 * 501 * @param errMsg ErrorMessageオブジェクãƒ? 502 * 503 * @return カラãƒ?‚ー ??値 ã®ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ã‚ªãƒ–ジェクãƒ? 504 */ 505 private ErrorMessage makeEntryErrorMessage( final ErrorMessage errMsg ) { 506 int[] rowNo = getParameterRows(); 507 if( rowNo.length == 0 ) { return errMsg; } 508 509 // 4.1.2.1 (2008/03/13) must , mustAny ã®è‡ªå‹•å–得追åŠ? 510 // table ã‹ã‚‰å–å?ã?(ソート済ã¿) 511 // 4.3.7.0 (2009/06/01) リアルタイãƒ?ƒã‚§ãƒ?‚¯ã®å ´åˆã?ã€must,mustAnyã®è‡ªå‹•ãƒã‚§ãƒ?‚¯ã¯è¡Œã‚ãªã? 512 if( !isRealTime ) { 513 if( nullCheck == null ) { nullCheck = table.getMustArray(); } 514 if( mustAnyCheck == null ) { mustAnyCheck = table.getMustAnyArray(); } 515 } 516 517 // 3.8.0.9 (2005/10/17) é¸æŠžå¿?? mustAnyCheck ã®ãƒã‚§ãƒ?‚¯è¿½åŠ? 518 boolean[][] rowAnyOne = null; 519 // 4.3.6.4 (2009/05/01) 520 boolean[] rowForCheck = null; 521 if( mustAnyCheck != null && mustAnyCheck.length != 0 ) { 522 rowAnyOne = new boolean[rowNo.length][mustAnyCheck.length]; 523 rowForCheck = new boolean[rowNo.length]; 524 // for( int i=0; i<rowNo.length; i++ ) { 525 // Arrays.fill( rowAnyOne[i],false ); 526 // } 527 } 528 529 DBColumn dbColumn = null; // 5.4.3.4 (2012/01/12) isColumnLabel 対å¿? 530 Enumeration<?> enume = getParameterNames(); // 4.3.3.6 (2008/11/15) Genericsè¦å‘Šå¯¾å¿? 531 while( enume.hasMoreElements() ) { 532 String key = (String)(enume.nextElement()); 533 int idx = key.lastIndexOf(HybsSystem.JOINT_STRING); 534 535 if( idx > 0 ) { 536 String column = key.substring(0,idx); 537 int row = Integer.parseInt( key.substring(idx + 2) ); 538 // String val = getRequestValue( key ); 539 String val = getRequestValue( key, false ); // 5.0.0.2 (2009/09/15) 540 541 int i = Arrays.binarySearch( rowNo,row ); 542 if( i >= 0 ) { 543 // 5.4.3.4 (2012/01/12) isColumnLabel 対å¿? 544 // DBColumn dbColumn = getDBColumn( column ); 545 dbColumn = null; 546 if( isColumnLabel && table != null ) { 547 int clmNo = table.getColumnNo( column,false ); // エラーをå?ã•ãªã?? 548 if( clmNo >= 0 ) { 549 dbColumn = table.getDBColumn( clmNo ); 550 } 551 } 552 if( dbColumn == null ) { 553 dbColumn = getDBColumn( column ); 554 } 555 556 String val2 = dbColumn.valueSet( val ); 557 errMsg.append( row+1,dbColumn.valueCheck( val2 ) ); 558 if( nullCheck != null && nullCheck.length != 0 ) { 559 int j = Arrays.binarySearch( nullCheck,column ); 560 if( j>=0 && ( val2 == null || val2.length() == 0 )) { 561 // ERR0012 : æŒ?®šã?ãƒ??ã‚¿ãŒã‚»ãƒ?ƒˆã•れã¦ã?¾ã›ã‚“ã€?NULLエラー)。key={0} 562 errMsg.addMessage( row+1,ErrorMessage.NG,"ERR0012",dbColumn.getLabel() ); 563 } 564 } 565 // 3.8.0.9 (2005/10/17) é¸æŠžå¿?? mustAnyCheck ã®ãƒã‚§ãƒ?‚¯è¿½åŠ? 566 if( rowAnyOne != null ) { 567 for( int j=0; j<mustAnyCheck.length; j++ ) { 568 if( !rowAnyOne[i][j] && 569 mustAnyCheck[j].indexOf( column ) >= 0 && 570 val2 != null && val2.length() > 0 ) { 571 rowAnyOne[i][j] = true; // ã©ã‚Œã‹ãŒå˜åœ¨ 572 } 573 } 574 // 4.3.6.4 (2009/05/01) 575 rowForCheck[i] = true; 576 } 577 578 // 4.0.0 (2005/11/30) æ£è¦è¡¨ç¾ãƒã‚§ãƒ?‚¯ã®è¿½åŠ? 579 if( matchKeys != null && matchKeys.length != 0 ) { 580 for( int j=0; j<matchKeys.length; j++ ) { 581 if( column.equals( matchKeys[j] ) ) { 582 if( val2 != null && ! val2.matches( matchVals[j] ) ) { 583 // äº’æ›æ€§ã¯ãªããªã£ã¦ã?‚‹ãŒã?æ£è¦è¡¨ç¾ãƒã‚§ãƒ?‚¯ã¯ä½™ã‚Šä½¿ã£ã¦ã?ªã??ã§ã€çµ±ä¸?—ã¦ãŠãã€? 584 // 5.4.3.4 (2012/01/12) isColumnLabel 対å¿? 585 dbColumn = null; 586 if( isColumnLabel && table != null ) { 587 int clmNo = table.getColumnNo( column,false ); // エラーをå?ã•ãªã?? 588 if( clmNo >= 0 ) { 589 dbColumn = table.getDBColumn( clmNo ); 590 } 591 } 592 if( dbColumn == null ) { 593 dbColumn = getDBColumn( column ); 594 } 595 // String label = getLabel( column ); 596 597 // ERR0037 : ãƒ??ã‚¿æ•´åˆæ?エラー。指定ã?ã‚ãƒ¼ã¯æ•´åˆæ?ãƒã‚§ãƒ?‚¯ã®çµæžœãƒžãƒƒãƒã—ã¾ã›ã‚“ã§ã—ãŸã€‚key={0} val={1} regex={2} 598 // errMsg.addMessage( 0,ErrorMessage.NG,"ERR0037",label,val2,matchVals[i] ); 599 errMsg.addMessage( row+1,ErrorMessage.NG,"ERR0037",dbColumn.getLabel(),val2,matchVals[i] ); 600 } 601 break; 602 } 603 } 604 } 605 } 606 } 607 } 608 609 // 3.8.0.9 (2005/10/17) é¸æŠžå¿?? mustAnyCheck ã®ãƒã‚§ãƒ?‚¯è¿½åŠ? 610 if( rowAnyOne != null ) { 611 for( int row=0; row<rowAnyOne.length; row++ ) { 612 // 4.3.6.4 (2009/05/01) 書込ã¿å¯èƒ½è¡Œã?ã¿ã‚’å?ç?™ã‚? 613 if ( rowForCheck[row] ) { 614 for ( int i = 0; i < mustAnyCheck.length; i++ ) { 615 if ( !rowAnyOne[row][i] ) { 616 String[] mustSub = StringUtil.csv2Array( mustAnyCheck[i], '|' ); 617 618 StringBuilder buf = new StringBuilder(); 619 buf.append( "row=[" ).append( rowNo[row]+1 ).append( "] " ); 620 for ( int j = 0; j < mustSub.length; j++ ) { 621 // ã“ã“ã®å‡¦ç? ã‘ã?ä»–ã¨ç•°ãªã‚‹ã?ã¯ã€äº’æ›æ€§é‡è¦–ã?ãŸã‚ã€?é¸æŠžå¿??ã¯åˆ©ç”¨é »åº¦ãŒé«˜ã„ã®ã§ã€? 622 // 5.4.3.4 (2012/01/12) isColumnLabel 対å¿? 623 String label = null ; 624 if( isColumnLabel && table != null ) { 625 int clmNo = table.getColumnNo( mustSub[j],false ); // エラーをå?ã•ãªã?? 626 if( clmNo >= 0 ) { 627 dbColumn = table.getDBColumn( clmNo ); 628 } 629 if( dbColumn == null ) { 630 dbColumn = getDBColumn( mustSub[j] ); 631 } 632 label = dbColumn.getLabel(); 633 } 634 else { 635 label = getResource().getLabel( mustSub[j] ); // äº’æ›æ€§ã®ãŸã‚ã®å‡¦ç½®ã€? 636 } 637 // buf.append( getResource().getLabel( mustSub[j] ) ).append( "|" ); 638 buf.append( label ).append( "|" ); 639 } 640 // ERR0036 : é¸æŠžå¿??エラー。以下ã?ãƒ??ã‚¿ã®å†?©ã‚Œã‹ã¯å…¥åŠ›ã—ã¦ãã ã•ã„。key={0} 641 // errMsg.addMessage( 0, ErrorMessage.NG, "ERR0036", buf.toString() ); 642 errMsg.addMessage( rowNo[row]+1, ErrorMessage.NG, "ERR0036", buf.toString() ); 643 } 644 } 645 } 646 } 647 } 648 649 return errMsg; 650 } 651 652 /** 653 * ErrorMessageã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã? 654 * リクエストã•れãŸä»¶æ•°ã®æœ?¤§å€¤ã«åˆ¶é™ã‚’åŠ?ˆã¾ã™ã? 655 * ?‘ä»¶ã?‘ã«ã—ãŸã??åˆã??Œé?常ã¯Viewã§ãƒã‚§ãƒ?‚¯ãƒœãƒƒã‚¯ã‚¹ã‚’使用ã›ãšã« 656 * ラジオボタンを使用ã—ã¦ãã ã•ã„ã€? 657 * 658 * @param errMsg ErrorMessageオブジェクãƒ? 659 * 660 * @return カラãƒ?‚ー ??値 ã®ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ã‚ªãƒ–ジェクãƒ? 661 */ 662 private ErrorMessage makeMaxRowCountErrorMessage( final ErrorMessage errMsg ) { 663 if( maxRowCount < 0 ) { return errMsg; } // 無制é™? 664 665 // 件数制é™ã?ãƒã‚§ãƒ?‚¯ 666 int[] rowNo = getParameterRows(); 667 int rowCount = rowNo.length ; 668 if( rowCount > maxRowCount ) { 669 // ERR0017 : é¸æŠžã‚¨ãƒ©ãƒ¼ã€‚é¸æŠžè¡Œæ•°({0} ä»¶)ãŒã?æœ?¤§åˆ¶é™å?({1} ä»¶)以上é¸ã°ã‚Œã¾ã—ãŸã€? 670 String arg0 = String.valueOf( rowCount ); 671 String arg1 = String.valueOf( maxRowCount ); 672 errMsg.addMessage( 0,ErrorMessage.NG,"ERR0017",arg0,arg1 ); 673 } 674 675 return errMsg; 676 } 677 678 /** 679 * ErrorMessageã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã? 680 * リクエストã•れãŸä»¶æ•°ã®æœ?°å?ã«åˆ¶é™ã‚’åŠ?ˆã¾ã™ã? 681 * ?‘ä»¶ã?‘ã«ã—ãŸã??åˆã??Œé?常ã¯Viewã§ãƒã‚§ãƒ?‚¯ãƒœãƒƒã‚¯ã‚¹ã‚’使用ã›ãšã« 682 * ラジオボタンを使用ã—ã¦ãã ã•ã„ã€? 683 * 684 * @param errMsg ErrorMessageオブジェクãƒ? 685 * 686 * @return カラãƒ?‚ー ??値 ã®ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ã‚ªãƒ–ジェクãƒ? 687 */ 688 private ErrorMessage makeMinRowCountErrorMessage( final ErrorMessage errMsg ) { 689 if( minRowCount < 0 ) { return errMsg; } // 無制é™? 690 691 // 件数制é™ã?ãƒã‚§ãƒ?‚¯ 692 int[] rowNo = getParameterRows(); 693 int rowCount = rowNo.length ; 694 if( rowCount < minRowCount ) { 695 // ERR0018 : é¸æŠžã‚¨ãƒ©ãƒ¼ã€‚é¸æŠžè¡Œæ•°({0} ä»¶)ãŒã?æœ?°åˆ¶é™å?({1} ä»¶)以下é¸ã°ã‚Œã¾ã—ãŸã€? 696 String arg0 = String.valueOf( rowCount ); 697 String arg1 = String.valueOf( minRowCount ); 698 errMsg.addMessage( 0,ErrorMessage.NG,"ERR0018",arg0,arg1 ); 699 } 700 701 return errMsg; 702 } 703 704 /** 705 * ã€TAG】ãƒã‚§ãƒ?‚¯ã™ã¹ãカラãƒ??をカンマ区åˆ?‚Š(CSVå½¢å¼?ã§æŒ?®šã—ã¾ã™ã? 706 * 707 * @og.tag columns="AAA,BBB,CCC,DDD" 708 * <del>å…ˆã«é…å?ã«åˆ?§£ã—ã¦ã‹ã‚‰ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã®å€¤ã‚’å–å¾—ã™ã‚‹ã‚ˆã?«ã—ã¾ã™ã? 709 * ã“ã†ã™ã‚‹äº‹ã§ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ã‚«ãƒ³ãƒžåŒºåˆ?‚Šã®å€¤ã‚’è¨å®šã§ãるよã†ã«ãªã‚Šã¾ã™ã?</del> 710 * åˆ?§£æ–¹æ³•ã?ã€??常ã®ãƒ‘ラメータå–得後ã«ã€CSVåˆ?§£ã—ã¾ã™ã? 711 * "*" を指定ã™ã‚‹ã¨ã€command="NEW" ã®ã¨ãã?判定ã«ã™ã¹ã¦ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆæ–‡å—å?ã‚? 712 * ãƒã‚§ãƒ?‚¯å¯¾è±¡ã¨ã—ã¾ã™ã?通常ã¯ã€å¿?¦å?ã?‘æŒ?®šã—ã¾ã™ãŒã€å‹•çš?‚«ãƒ©ãƒ?ªã©ã® 713 * å ´åˆã?ã€ã‚«ãƒ©ãƒ?ã‚’äºˆã‚æŒ?®šã§ããªã?Ÿã‚ã?"*" ã§æŒ?®šã§ãるよã†ã«ã—ã¾ã™ã? 714 * ãã?å ´åˆã?"h_" , "hX_" , maxRowCount , command , pageSize , pagePlus , 715 * GAMENID , BACK_JSPID , BACK_GAMENID ã®äºˆç´?ªžã?ã€å¯¾è±¡ã‹ã‚‰é™¤ãã¾ã™ã? 716 * 717 * @og.rev 3.5.6.2 (2004/07/05) å…ˆã«é…å?ã«åˆ?§£ã—ã¦ã‹ã‚‰ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã®å€¤ã‚’å–å¾? 718 * @og.rev 3.8.8.5 (2007/03/09) 通常ã®ãƒ‘ラメータå–得後ã«ã€CSVåˆ?§£ã«æˆ»ã—ã¾ã™ã? 719 * @og.rev 5.4.3.4 (2012/01/12) command="NEW" ã®ã¨ãã?動的カラãƒ?¯¾å¿? "*" ã§ã™ã¹ã¦ã®ãƒªã‚¯ã‚¨ã‚¹ãƒ? 720 * 721 * @param clms カラãƒ??(CSVå½¢å¼? 722 */ 723 public void setColumns( final String clms ) { 724 columns = StringUtil.csv2Array( getRequestParameter( clms ) ); 725 if( columns.length == 0 ) { columns = null; } 726 727 // 5.4.3.4 (2012/01/12) command="NEW" ã®ã¨ãã?動的カラãƒ?¯¾å¿? "*" ã§ã™ã¹ã¦ã®ãƒªã‚¯ã‚¨ã‚¹ãƒ? 728 if( columns != null && "*".equals( columns[0] ) ) { 729 Set<String> clmSet = new TreeSet<String>(); // リクエストã?ãƒãƒ©ãƒãƒ©ãªã®ã§ã€ã¨ã‚Šã‚ãˆãšã‚½ãƒ¼ãƒˆã—ã¦ãã¾ã™ã? 730 731 Enumeration<?> enume = getParameterNames(); // Genericsè¦å‘Šå¯¾å¿? 732 while( enume.hasMoreElements() ) { 733 String clm = (String)(enume.nextElement()); 734 // 予ç´?ªžä»¥å¤–を登録ã—ã¾ã™ã? 735 if( clm != null && !clm.isEmpty() && !clm.startsWith( "h_" ) && !clm.startsWith( "hX_" ) ) { 736 clmSet.add( clm ); 737 } 738 } 739 // 予ç´?ªžã‚’削除ã—ã¾ã™ã? 740 clmSet.remove( "maxRowCount" ); 741 clmSet.remove( "command" ); 742 clmSet.remove( "pageSize" ); 743 clmSet.remove( "pagePlus" ); 744 clmSet.remove( "GAMENID" ); 745 clmSet.remove( "BACK_JSPID" ); 746 clmSet.remove( "BACK_GAMENID" ); 747 748 columns = clmSet.toArray( new String[clmSet.size()] ); 749 } 750 } 751 752 /** 753 * ã€TAG】NULL ãƒã‚§ãƒ?‚¯ã™ã¹ãカラãƒ??をカンマ区åˆ?CSVå½¢å¼?ã‚Šã§æŒ?®šã—ã¾ã™ã? 754 * 755 * @og.tag 756 * (must 属æ?ã®ã‚»ãƒ?ƒˆã«ã‚ˆã‚Šã€è?å‹•å?ç?•れã¾ã? 757 * nullCheck="AAA,BBB,CCC,DDD" 758 * <del>å…ˆã«é…å?ã«åˆ?§£ã—ã¦ã‹ã‚‰ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã®å€¤ã‚’å–å¾—ã™ã‚‹ã‚ˆã?«ã—ã¾ã™ã? 759 * ã“ã†ã™ã‚‹äº‹ã§ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ã‚«ãƒ³ãƒžåŒºåˆ?‚Šã®å€¤ã‚’è¨å®šã§ãるよã†ã«ãªã‚Šã¾ã™ã?</del> 760 * åˆ?§£æ–¹æ³•ã?ã€??常ã®ãƒ‘ラメータå–得後ã«ã€CSVåˆ?§£ã—ã¾ã™ã? 761 * 762 * @og.rev 3.5.6.2 (2004/07/05) å…ˆã«é…å?ã«åˆ?§£ã—ã¦ã‹ã‚‰ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã®å€¤ã‚’å–å¾? 763 * @og.rev 3.8.8.5 (2007/03/09) 通常ã®ãƒ‘ラメータå–得後ã«ã€CSVåˆ?§£ã«æˆ»ã—ã¾ã™ã? 764 * 765 * @param clms カラãƒ??(CSVå½¢å¼? 766 */ 767 public void setNullCheck( final String clms ) { 768 nullCheck = StringUtil.csv2Array( getRequestParameter( clms ) ); 769 if( nullCheck.length == 0 ) { nullCheck = null; } 770 else { 771 Arrays.sort( nullCheck ); 772 } 773 } 774 775 /** 776 * ã€TAGã€‘é¸æŠžå¿??カラãƒ?æŒ?®šã?カラãƒ??å†?œ€ä½Žã?ã¨ã¤ãŒNULLã§ãªã?ã‚?AA|BB|CC,XX|YY|ZZ" å½¢å¼ã§æŒ?®šã—ã¾ã™ã? 777 * 778 * @og.tag 779 * (mustAny 属æ?ã®ã‚»ãƒ?ƒˆã«ã‚ˆã‚Šã€è?å‹•å?ç?•れã¾ã? 780 * è¤?•°ã®ã‚«ãƒ©ãƒ?±žæ?ã®å€¤ã®ã?¡ã€ã©ã‚Œã‹ã?null ã§ãªã??åˆã?æ£å¸¸ã¨ã—ã? 781 * ã™ã¹ã¦ã?null ã®å ´åˆã‚’è¦å‘Šã—ã¾ã™ã? 782 * 783 * 例:mustAnyCheck="AA|BB|CC" 784 * AA,BB,CC ã®ã‚«ãƒ©ãƒ?§é¸æŠžå¿??(ã™ã¹ã¦ãŒnullãªã‚‰ã‚¨ãƒ©ãƒ¼) 785 * 例:mustAnyCheck="AA|BB|CC,XX|YY|ZZ" 786 * AA,BB,CC ã®ã‚»ãƒ?ƒˆã¨ã€XX,YY,ZZã®ã‚»ãƒ?ƒˆã§ãれãžã‚Œé¸æŠžå¿??ã€? 787 * 例:mustAnyCheck="AA|XX,AA|YY,AA|ZZ" 788 * AA ã«å€¤ãŒã‚れã?ã™ã¹ã¦æˆç«‹ã?ãã†ã§ãªã??åˆã?ã€XX 㨠YY 㨠ZZ ãŒã™ã¹ã¦å¿??ã€? 789 * 例:mustAnyCheck="AA|BB,BB|CC,AA|CC" 790 * AA,BB,CC ã®å†??ã©ã‚Œã‹?’ã¤ãŒå¿??ã€?AãŒæ?ç«‹ã™ã‚Œã?BBã‹CCãŒå¿??ã€‚åŒæ§˜ã«ã€? 791 * BBãŒæ?ç«‹ã™ã‚Œã?ã€AAã‹CCãŒå¿??ã€? 792 * 793 * é¸æŠžå¿??ã¯ã€must ã¨åŒæ§˜ã«ã€è‰²ã¥ã‘を行ã†(query.jsp)ç”»é¢ã§ã¯ã€mustAny 属æ?ã‚? 794 * ã‚»ãƒ?ƒˆã—ã¾ã™ã?ãƒã‚§ãƒ?‚¯ã‚’行ã†(result.jsp)ç”»é¢ã§ã¯ã€columnCheck ã‚¿ã‚°ã® 795 * mustAnyCheck 属æ?ã«ã€?¸æŠžå¿??カラãƒ?‚’æŒ?®šã—ã¾ã™ã?(上記å‚ç…§) 796 * column ã‚¿ã‚°ç‰ã? mustAny 属æ?ã«ã€mustAny="true" ã¨ã‚»ãƒ?ƒˆã™ã‚‹ã¨ã€ç”Ÿæˆã•れる 797 * HTMLã¯ã€class="mustAny" ãŒå?力ã•れã¾ã™ã?エンジン標準ã§ã¯ã€default.css ã« 798 * .mustAny ãŒå®šç¾©ã•れã¦ã?¾ã™ã?( background-color: #CCFFFF; ) 799 * ãªãŠã?mustAny 属æ?ã«ã€true 以外ã?値をセãƒ?ƒˆã—ãŸå ´å?mustAny="XYZ")ã¯ã€? 800 * 生æ?ã•れるHTMLã«ã€class="XYZ" ãŒå?力ã•れã¾ã™ã?ã“れã¯ã€è¤?•°ã®ã‚°ãƒ«ãƒ¼ãƒ—é–“ã§ 801 * 色を変ãˆã¦ã€?¸æŠžå¿??を指定ã™ã‚‹å?åˆã«ä½¿ç”¨ã—ã¾ã™ã?色ã¯ã€custom/custom.css 802 * ã§æŒ?®šã—ã¾ã™ã? 803 * åˆ?§£æ–¹æ³•ã?ã€??常ã®ãƒ‘ラメータå–得後ã«ã€CSVåˆ?§£ã—ã¾ã™ã? 804 * 805 * @og.rev 3.8.0.9 (2005/10/17) æ–°è¦è¿½åŠ? 806 * @og.rev 3.8.8.5 (2007/03/09) 通常ã®ãƒ‘ラメータå–得後ã«ã€CSVåˆ?§£ã«æˆ»ã—ã¾ã™ã? 807 * 808 * @param clms é¸æŠžå¿??カラãƒ? 809 */ 810 public void setMustAnyCheck( final String clms ) { 811 mustAnyCheck = StringUtil.csv2Array( getRequestParameter( clms ) ); 812 if( mustAnyCheck.length == 0 ) { mustAnyCheck = null; } 813 else { 814 Arrays.sort( mustAnyCheck ); 815 } 816 } 817 818 /** 819 * ã€TAG】コマンド[NEW/RENEW/ENTRY]ã‚’ã‚»ãƒ?ƒˆã—ã¾ã?åˆæœŸå€¤:NEW)ã€? 820 * 821 * @og.tag 822 * コマンドã?,HTMLã‹ã‚‰(get/post)æŒ?®šã•れã¾ã™ã?ã§,CMD_xxx ã§è¨å®šã•れる 823 * フィールド定数値ã®ã?¥ã‚Œã‹ã‚’ã?æŒ?®šã§ãã¾ã™ã? 824 * 何もè¨å®šã•れãªã??ã¾ãŸã?ã€null ã®å ´åˆã?ã€?NEW" ãŒå?期å?ã«ã‚»ãƒ?ƒˆã•れã¾ã™ã? 825 * 826 * @param cmd コマンãƒ?public static final 宣è¨?•れã¦ã?‚‹æ–?—å?) 827 * @see <a href="{@docRoot}/constant-values.html#org.opengion.hayabusa.taglib.ColumnCheckTag.CMD_NEW">コマンド定数</a> 828 */ 829 public void setCommand( final String cmd ) { 830 String cmd2 = getRequestParameter( cmd ); 831 if( cmd2 != null && cmd2.length() > 0 ) { command = cmd2.toUpperCase(Locale.JAPAN); } 832 } 833 834 /** 835 * ã€TAGã€?ãƒã‚§ãƒ?‚¯å¯¾è±¡ã®ãƒ??ã‚¿[AUTO/NEW/ENTRY]を指定ã—ã¾ã?åˆæœŸå€¤:AUTO)ã€? 836 * 837 * @og.tag 838 * 通常ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆãƒ‡ãƒ¼ã‚¿ã¯ã€ã‚ーãã?ã‚‚ã?ã§ã™ãŒ,エントリãƒ??ã‚¿ã¯è¡¨å½¢å¼ã? 839 * ãƒ??ã‚¿ã‚’ä¸?‹¬ã§ç™»éŒ²ã™ã‚‹ç‚ºã€?ã‚ー??__" ??行番å·)å½¢å¼ã‚’ã€ãƒãƒ©ã™å¿?¦ãŒã‚りã¾ã™ã? 840 * 841 * ENTRY ã¯ã€DBTableModelã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆæƒ…å ±ã‚’ãƒã‚§ãƒ?‚¯ã—ã¾ã™ã? 842 * ã“れã¯ã€å?ãƒ??ã‚¿ãŒå¯¾è±¡ã«ãªã‚Šã¾ã™ã?(columns/nullCheck 属æ?ã¯ç„¡åй) 843 * AUTO ã¯ã€command ãŒã?上è¨?NEW ã?ENTRY ã‹ã‚’判æ–ã—ã¦å‡¦ç?‚’振りå?ã‘ã¾ã™ã? 844 * åˆæœŸå€¤ã¯ã€AUTO ã§ã™ã? 845 * 846 * @param flag ãƒã‚§ãƒ?‚¯å¯¾è±¡ã®ãƒ??ã‚¿(AUTO,NEW,ENTRY) 847 */ 848 public void setCheckType( final String flag ) { 849 String ct = getRequestParameter( flag ); 850 if( ct != null && ct.length() > 0 ) { checkType = ct ; } 851 } 852 853 /** 854 * ã€TAGã€?del>ENTRY時ã«</del>ãƒã‚§ãƒ?‚¯ã§é¸æŠžã•れãŸè¡Œæ•°ã®æœ?¤§å€¤ã‚’è¨å®šã—ã¾ã™ã? 855 * 856 * @og.tag 857 * æœ?¤§é¸æŠžä»¶æ•°ã‚’è¶?ˆãŸå?åˆã?,エラーメãƒ?‚»ãƒ¼ã‚¸ã‚’è¿”ã—ã¾ã™ã? 858 * 例ãˆã°ã€?¼‘ä»¶ã®ã¿ã‚’æ£å¸¸ã¨ã™ã‚‹å ´åˆã?ã€maxRowCount="1" ã¨ã—ã¾ã™ã? 859 * 860 * @param count 制é™ã‚’ã‹ã‘ãŸã„行数(ã“ã?ä»¶æ•°ã¨åŒã˜å ´åˆã?æ£å¸¸ ) 861 */ 862 public void setMaxRowCount( final String count ) { 863 maxRowCount = nval( getRequestParameter( count ),maxRowCount ); 864 } 865 866 /** 867 * ã€TAGã€?del>ENTRY時ã«</del>ãƒã‚§ãƒ?‚¯ã§é¸æŠžã•れãŸè¡Œæ•°ã®æœ?°å?ã‚’è¨å®šã—ã¾ã™ã? 868 * 869 * @og.tag 870 * æœ?°é¸æŠžä»¶æ•°ã‚’è¶?ˆãªã??åˆã?ã€ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒ?‚»ãƒ¼ã‚¸ã‚’è¿”ã—ã¾ã™ã? 871 * 例ãˆã°ã€?¼‘ä»¶ã®ã¿ã‚’æ£å¸¸ã¨ã™ã‚‹å ´åˆã?ã€minRowCount="1" ã¨ã—ã¾ã™ã? 872 * 873 * @param count 制é™ã‚’ã‹ã‘ãŸã„行数(ã“ã?ä»¶æ•°ã¨åŒã˜å ´åˆã?æ£å¸¸ ) 874 */ 875 public void setMinRowCount( final String count ) { 876 minRowCount = nval( getRequestParameter( count ), minRowCount ); 877 } 878 879 /** 880 * ã€TAGã€?通常ã¯ä½¿ã?¾ã›ã‚“) sessionã«ç™»éŒ²ã•れã¦ã?‚‹ DBTableModel ã‚’å–りå?ã™ã‚ーを指定ã—ã¾ã™ã? 881 * 882 * @og.tag 883 * æ¤œç´¢çµæžœã®DBTableModelを別メモリーã«åˆ?‘ã‚‹å?åˆã?ã€ã“ã®ã‚ーを指定ã—ã¾ã™ã? 884 * ãã?å ´åˆã?メモリ上ã‹ã‚‰å‰Šé™¤ã™ã‚‹æ–¹æ³•ãŒãªã?Ÿã‚?session タイãƒ?‚¢ã‚¦ãƒˆã§ç ´æ£?大é‡ã? 885 * ãƒ??ã‚¿ã‚’å?ã‘ãŸå ´åˆã?ã€ã”注æ„ãã?•ã?? 886 * åˆæœŸå€¤ã¯ã€HybsSystem.TBL_MDL_KEY ã§ã™ã? 887 * 888 * @og.rev 3.5.4.3 (2004/01/05) æ–°è¦è¿½åŠ? 889 * 890 * @param id sessionã«ç™»éŒ²ã™ã‚‹æ™‚ã? ID 891 */ 892 public void setTableId( final String id ) { 893 tableId = nval( getRequestParameter( id ),tableId ); 894 } 895 896 /** 897 * ã€TAG】æ£è¦è¡¨ç¾ã§ã®ãƒžãƒƒãƒãƒ³ã‚°ã‚’行ã†ã‚«ãƒ©ãƒ??をカンマ区åˆ?‚Š(CSVå½¢å¼?ã§æŒ?®šã—ã¾ã™ã? 898 * 899 * @og.tag matchKeys="AAA,BBB,CCC,DDD" 900 * matchKeys属æ?ã¨matchVals属æ?ã®å€‹æ•°ã¯ã€åŒã˜ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“ã€? 901 * å…ˆã«é…å?ã«åˆ?§£ã—ã¦ã‹ã‚‰ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã®å€¤ã‚’å–å¾—ã™ã‚‹ã‚ˆã?«ã—ã¾ã™ã? 902 * ã“ã†ã™ã‚‹äº‹ã§ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ã‚«ãƒ³ãƒžåŒºåˆ?‚Šã®å€¤ã‚’è¨å®šã§ãるよã†ã«ãªã‚Šã¾ã™ã? 903 * 904 * @og.rev 4.0.0.0 (2005/11/30) æ–°è¦ä½œæ? 905 * 906 * @param keys カラãƒ??(CSVå½¢å¼? 907 * @see #setMatchVals( String ) 908 */ 909 public void setMatchKeys( final String keys ) { 910 matchKeys = getCSVParameter( keys ); 911 912 if( matchVals != null && matchKeys.length != matchVals.length ) { 913 String errMsg = "matchKeys属æ?ã¨matchVals属æ?ã®å€‹æ•°ãŒåˆã?¾ã›ã‚“ã€? 914 + HybsSystem.CR 915 + " matchKeys=[" + matchKeys.length + "]:KEYS=" 916 + StringUtil.array2csv( matchKeys ) + HybsSystem.CR 917 + " matchVals=[" + matchVals.length + "]:VLAS=" 918 + StringUtil.array2csv( matchVals ) + HybsSystem.CR ; 919 throw new HybsSystemException( errMsg ); 920 } 921 } 922 923 /** 924 * ã€TAG】æ£è¦è¡¨ç¾ã§ã®ãƒžãƒƒãƒãƒ³ã‚°ã‚’行ã†ã‚«ãƒ©ãƒ??ã«å¯¾ã™ã‚‹å€¤(æ£è¦è¡¨ç¾)をカンマ区åˆ?‚Š(CSVå½¢å¼?ã§æŒ?®šã—ã¾ã™ã? 925 * 926 * @og.tag matchVals="AAA,BBB,CCC,DDD" 927 * matchKeys属æ?ã¨matchVals属æ?ã®å€‹æ•°ã¯ã€åŒã˜ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“ã€? 928 * å…ˆã«é…å?ã«åˆ?§£ã—ã¦ã‹ã‚‰ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã®å€¤ã‚’å–å¾—ã™ã‚‹ã‚ˆã?«ã—ã¾ã™ã? 929 * ã“ã†ã™ã‚‹äº‹ã§ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ã‚«ãƒ³ãƒžåŒºåˆ?‚Šã®å€¤ã‚’è¨å®šã§ãるよã†ã«ãªã‚Šã¾ã™ã? 930 * 931 * @og.rev 4.0.0.0 (2005/11/30) æ–°è¦ä½œæ? 932 * 933 * @param vals カラãƒ??ã«å¯¾ã™ã‚‹å€¤(æ£è¦è¡¨ç¾)(CSVå½¢å¼? 934 * @see #setMatchKeys( String ) 935 */ 936 public void setMatchVals( final String vals ) { 937 matchVals = getCSVParameter( vals ); 938 939 if( matchKeys != null && matchKeys.length != matchVals.length ) { 940 String errMsg = "matchKeys属æ?ã¨matchVals属æ?ã®å€‹æ•°ãŒåˆã?¾ã›ã‚“ã€? 941 + HybsSystem.CR 942 + " matchKeys=[" + matchKeys.length + "]:KEYS=" 943 + StringUtil.array2csv( matchKeys ) + HybsSystem.CR 944 + " matchVals=[" + matchVals.length + "]:VLAS=" 945 + StringUtil.array2csv( matchVals ) + HybsSystem.CR ; 946 throw new HybsSystemException( errMsg ); 947 } 948 } 949 950 /** 951 * ã€TAGã€?通常使ã?¾ã›ã‚“)リアルタイãƒ?ƒã‚§ãƒ?‚¯ã‚’行ã†å ´åˆã«æœ‰åйã«ã—ã¾ã™ã? 952 * 953 * @og.tag 954 * リアルタイãƒ?ƒã‚§ãƒ?‚¯ã‚’行ã†å ´åˆã«æœ‰åйã«ã™ã‚‹å±žæ?ã§ã™ã? 955 * trueãŒæŒ‡å®šã•れãŸå ´åˆã?通常ã®ãƒã‚§ãƒ?‚¯ã¨æ¯”è¼?—ã€ä»¥ä¸‹ã?差異ãŒã‚りã¾ã™ã? 956 * â‘?‚¨ãƒ©ãƒ¼çµæžœã‚’簡易フォーマットã§å‡ºåŠ›ã—ã¾ã™ã? 957 * (ViewFormType="HTMLSimpleErrorList"ã§è¡¨ç¤ºã•れã¾ã™ã?) 958 * ã“ã?簡易フォーマットã§å‡ºåŠ›ã—ãŸå?åˆã?ã€ãƒ©ãƒ™ãƒ«(çŸ)ã®å®šç¾©ã§å‡ºåŠ›ã•れã? 959 * カラãƒ?ã‚?ƒ‡ãƒ¼ã‚¿ç‰ã?出力ã•れã¾ã›ã‚“ã€? 960 * â‘¡must,mustAny属æ?ã®ãƒã‚§ãƒ?‚¯ã‚’行ã„ã¾ã›ã‚“ã€? 961 * å¿??åŠã?é¸æŠžå¿??ã¯ã€è¦–覚的ã«åˆ¤åˆ¥ã§ãã‚‹ãŸã‚ã€ãƒªã‚¢ãƒ«ã‚¿ã‚¤ãƒ?ƒã‚§ãƒ?‚¯ã® 962 * 対象外ã¨ã—ã¾ã™ã? 963 * 964 * @og.rev 4.3.3.0 (2008/10/01) æ–°è¦ä½œæ? 965 * @og.rev 4.3.7.0 (2009/06/01) viewSimple属æ?å称変更 -> isRealTime 966 * 967 * @param flg 簡易表示を行ã†ã‹ã©ã?‹ 968 */ 969 public void setRealTime( final String flg ) { 970 isRealTime = nval( getRequestParameter( flg ),isRealTime ); 971 } 972 973 /** 974 * ã€TAG】NEWã®å ´åˆã«ã€å޳å¯?«ãƒã‚§ãƒ?‚¯ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)ã€? 975 * 976 * @og.tag 977 * ãƒ??ã‚¿ã‚’ãƒã‚§ãƒ?‚¯ã™ã‚‹ã«å½“ãŸã‚Šã?ã‚ã„ã¾ã?¤œç´¢ãªã©ã§å޳å¯?«ãƒã‚§ãƒ?‚¯ã™ã‚‹ã¨ 978 * エラーã«ãªã‚‹ã‚±ãƒ¼ã‚¹ãŒã‚ã‚‹ãŸã‚ã?command="NEW" ã®ãƒã‚§ãƒ?‚¯æ™‚ã«ã¯ã€ç”˜ã?›®ã® 979 * ãƒã‚§ãƒ?‚¯ã‚’行ã£ã¦ã?¾ã™ã?DBColumn#valueCheck( String , false ) 980 * command="ENTRY" ã®ãƒã‚§ãƒ?‚¯ã¯ã€å޳å¯?ªãƒã‚§ãƒ?‚¯ã§ã™ã? 981 * ã“ã?フラグã¯ã€æ¤œç´¢æ™‚ã§ã‚‚ã?厳å¯?ªãƒã‚§ãƒ?‚¯ã‚’行ã„ãŸã„å ´åˆã«ã€true ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã? 982 * 983 * @og.rev 5.2.2.0 (2010/11/01) æ–°è¦ä½œæ? 984 * 985 * @param flg 厳å¯?«ãƒã‚§ãƒ?‚¯ã™ã‚‹ã‹ã©ã?‹ [true:厳å¯?false:甘ã„] 986 */ 987 public void setUseStrict( final String flg ) { 988 isStrict = nval( getRequestParameter( flg ),isStrict ); 989 } 990 991 /** 992 * ã€TAG】カラãƒ?ƒ©ãƒ™ãƒ«ã‚’使用ã™ã‚‹ã‹ã©ã?‹[true/false]を指定ã—ã¾ã?åˆæœŸå€¤:false)ã€? 993 * 994 * @og.tag 995 * カラãƒ?ƒ©ãƒ™ãƒ«ã¯ãƒ©ãƒ™ãƒ«ãƒãƒ¼ãƒ??を利用ã›ãšã«ã‚¢ãƒ—リケーションå´ã§ 996 * 追åŠ?—ãŸãƒ©ãƒ™ãƒ«ã‚’ResourceManagerã«ã‚ャãƒ?‚·ãƒ¥ã—ã¦ã?‚‹æ‰?‹ã‚‰å–りå?ã? 997 * ã‹ã©ã?‹ã‚’指定ã—ã¾ã™ã? 998 * カラãƒ?ƒ©ãƒ™ãƒ«ã«å˜åœ¨ã—ãªã??åˆã?ã€??常ã®ãƒ©ãƒ™ãƒ«ã‹ã‚‰æ¤œç´¢ã—ã¾ã™ã? 999 * 1000 * @og.rev 5.4.3.4 (2012/01/12) æ–°è¦ä½œæ? 1001 * 1002 * @param flg カラãƒ?ƒ©ãƒ™ãƒ«ã‚’使用ã™ã‚‹ã‹ã©ã?‹ true:ã™ã‚‹/false:ã—ãªã„] 1003 */ 1004 public void setUseColumnLabel( final String flg ) { 1005 isColumnLabel = nval( getRequestParameter( flg ),isColumnLabel ); 1006 } 1007 1008 /** 1009 * ã€TAG】ラベルをDBTableModel ã®ã‚«ãƒ©ãƒ?‹ã‚‰å–å¾—ã™ã‚‹ã‹ã©ã?‹ã‚’指定ã—ã¾ã?åˆæœŸå€¤:false)ã€? 1010 * 1011 * @og.tag 1012 * エラー時ã?ラベルã¯é€šå¸¸ã¯ãƒ©ãƒ™ãƒ«ãƒªã‚½ãƒ¼ã‚¹ã‹ã‚‰å–å¾—ã—ã¦ã?¾ã™ãŒã€? 1013 * ColumnEditorç‰ã§ã€ãƒ©ãƒ™ãƒ«ã‚’æ›¸ãæ›ãˆãŸå ´åˆã?ç”»é¢ã«è¡¨ç¤ºã•れã¦ã?‚‹å称㨠1014 * エラー時ã«è¡¨ç¤ºã•れるåç§°ãŒç•°ãªã‚‹ã“ã¨ãŒã‚りã¾ã—ãŸã€? 1015 * ãã“ã§ã€command=ENTRY 時ã«ã€ãƒ©ãƒ™ãƒ«ã‚’ã?DBTableModel ã®ã‚«ãƒ©ãƒ?‹ã‚‰å–å¾? 1016 * ã™ã‚‹ã‚ˆã†ã«è¨å®šã§ãるよã†ã«ã—ã¾ã—ãŸã€? 1017 * DBTableModel ã«è©²å½“ã™ã‚‹ã‚«ãƒ©ãƒ?Œå˜åœ¨ã—ãªã??åˆã?ラベルリソースã‹ã‚‰å–å¾—ã—ã¾ã™ã? 1018 * 通常ã¯ã€ã“ã®æ–¹æ³•ãŒä¸»ã§ã™ãŒã€?ŽåŽ»ã®äº’æ›æ€§ã‚’è?æ…®ã—ã?åˆæœŸå€¤ã¯ã€false ã« 1019 * ã—ã¦ã?¾ã™ã? 1020 * 1021 * @og.rev 5.4.3.4 (2012/01/12) æ–°è¦ä½œæ? 1022 * 1023 * @param flg カラãƒ?ƒ©ãƒ™ãƒ«ã‚’使用ã™ã‚‹ã‹ã©ã?‹(true:ã™ã‚‹/false:ã—ãªã? 1024 */ 1025 // public void setUseTblClmLbl( final String flg ) { 1026 // isTblClmLbl = nval( getRequestParameter( flg ),isTblClmLbl ); 1027 // } 1028 1029 /** 1030 * ã€TAGã€‘ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã®æ£è¦åŒ–を行ã†ã‚«ãƒ©ãƒ?‚’CSVå½¢å¼ã§è¤?•°æŒ?®šã—ã¾ã™ã? 1031 * 1032 * @og.tag 1033 * カラãƒ?ƒã‚§ãƒ?‚¯ã§æ£è¦åŒ–ãŒè¡Œã‚れã¦ã?ªã??ラグインã«å¯¾ã—ã¦å¼·åˆ¶çš?«æ£è¦åŒ–を行ã„ã¾ã™ã? 1034 * ã“ã?属æ?を利用ã—ãŸãƒã‚§ãƒ?‚¯ã‚’行ã£ãŸå?åˆã?ã€queryã‚¿ã‚°ã§PL/SQLを動作ã•ã›ã‚‹å ´åˆã«ã‚? 1035 * åŒå属æ?ã§ã‚«ãƒ©ãƒ??æŒ?®šã‚’行ã†å¿?¦ãŒã‚りã¾ã™ã? 1036 * (queryã‚¿ã‚°ã§checkNamesを利用ã—ãªã??åˆã?ã“ã?属æ?ã¯nullã«ã—ã¦ãã ã•ã„) 1037 * ã“ã?属æ?ã¯ãƒã‚§ãƒ?‚¯ã‚¿ã‚¤ãƒ—ãŒNEWã®å ´åˆã?ã¿æœ‰åйã§ã™ã? 1038 * リアルタイãƒ?ƒã‚§ãƒ?‚¯ã§ã“ã?機è?を利用ã—ãŸã??åˆã?ã€columnTagç‰ã?optionAttributes 1039 * 属æ?ã«rtOption='checkNames=VIEW_DATE'ã®ã‚ˆã†ã«è¨˜è¿°ã—ã¦ãã ã•ã„ã€? 1040 * 1041 * @og.rev 5.4.3.8 (2012/01/24) æ–°è¦è¿½åŠ? 1042 * @og.rev 5.4.4.0 (2012/02/01) ã‚³ãƒ¡ãƒ³ãƒˆä¿®æ£ 1043 * @og.rev 5.6.9.4 (2013/10/31) 空白削除を行ㆠ1044 * 1045 * @param nm ãƒªã‚¯ã‚¨ã‚¹ãƒˆå¤‰æ•°ã®æ£è¦åŒ–を行ã†ã‚«ãƒ©ãƒ? 1046 */ 1047 public void setCheckNames( final String nm ) { 1048 // checkNames = nval( getRequestParameter( nm ),checkNames ); 1049 checkNames = StringUtil.deleteWhitespace( nval( getRequestParameter( nm ),checkNames ) ); // 5.6.9.4 (2013/10/31) 1050 } 1051 1052 /** 1053 * ã“ã?オブジェクトã?æ–?—å?表ç¾ã‚’è¿”ã—ã¾ã™ã? 1054 * 基本çš?«ãƒ?ƒãƒ?‚°ç›®çš?«ä½¿ç”¨ã—ã¾ã™ã? 1055 * 1056 * @return ã“ã?ã‚¯ãƒ©ã‚¹ã®æ–?—å?è¡¨ç¾ 1057 */ 1058 @Override 1059 public String toString() { 1060 return org.opengion.fukurou.util.ToString.title( this.getClass().getName() ) 1061 .println( "VERSION" ,VERSION ) 1062 .println( "tableId" ,tableId ) 1063 .println( "command" ,command ) 1064 .println( "columns" ,columns ) 1065 .println( "nullCheck" ,nullCheck ) 1066 .println( "mustAnyCheck" ,mustAnyCheck ) 1067 .println( "maxRowCount" ,maxRowCount ) 1068 .println( "minRowCount" ,minRowCount ) 1069 .println( "checkType" ,checkType ) 1070 .println( "matchKeys" ,matchKeys ) 1071 .println( "matchVals" ,matchVals ) 1072 .println( "realTime" ,isRealTime ) 1073 .println( "bodyString" ,StringUtil.htmlFilter( bodyString ) ) 1074 .println( "Other..." ,getAttributes().getAttribute() ) 1075 .fixForm().toString() ; 1076 } 1077 }