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