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.plugin.column; 017 018 import org.opengion.fukurou.model.NativeType; 019 import org.opengion.fukurou.util.ErrorMessage; 020 import org.opengion.fukurou.util.StringUtil; 021 import org.opengion.hayabusa.db.AbstractDBType; 022 import org.opengion.hayabusa.db.DBTypeCheckUtil; 023 024 /** 025 * åŠè§’æ•°å—ã? NUMBER を扱ã?‚ºã®ã€ã‚«ãƒ©ãƒ?±žæ?を定義ã—ã¾ã™ã? 026 * 027 * '0' ??'9' ,'-' ã§ã®ã¿æ§‹æ?ã•れã¦ã?‚‹æ•°å—型カラãƒ?±žæ?を定義ã—ã¾ã™ã? 028 * ã•らã«ã€ã‚«ãƒ³ãƒ?,'ãŒå«ã¾ã‚Œã¦ã?¦ã‚?OK ã¨ã—ã¾ã™ã?ãŸã ã—ã?ãƒ??ã‚¿ã‹ã‚‰ã¯å–り除ãã¾ã™ã? 029 * 030 * タイプãƒã‚§ãƒ?‚¯ã¨ã—ã¦ã€ä»¥ä¸‹ã?æ¡ä»¶ã‚’判定ã—ã¾ã™ã? 031 * ・?~9ãŠã‚ˆã?マイナス(-)ã‚’è¨±å¯ 032 * ・整数部ã®é•·ã•ãƒã‚§ãƒ?‚¯ 033 * ・符å·ã®ä½ç½®ãƒã‚§ãƒ?‚¯ 034 * ・æ–?—パラメータ㮠æ£è¦è¡¨ç¾ãƒã‚§ãƒ?‚¯ 035 * 036 * @og.group ãƒ??タ属æ? 037 * 038 * @version 4.0 039 * @author Kazuhiko Hasegawa 040 * @since JDK5.0, 041 */ 042 public class DBType_S9 extends AbstractDBType { 043 //* ã“ã?プãƒã‚°ãƒ©ãƒ??VERSIONæ–?—å?ã‚’è¨å®šã—ã¾ã™ã? {@value} */ 044 private static final String VERSION = "5.6.0.3 (2012/01/24)" ; 045 046 private static final String DEF_VALUE = "0" ; // ãƒ??ã‚¿ã®ãƒ?ƒ•ォルトå? 047 048 /** 049 * ãƒ?ƒ•ォルトコンストラクター 050 * 051 * @og.rev 4.0.0.0 (2005/01/31) type å»?¢ 052 */ 053 public DBType_S9() { 054 super( DEF_VALUE ); 055 } 056 057 /** 058 * NATIVEã®åž‹ã?è˜åˆ¥ã‚³ãƒ¼ãƒ‰ã‚’è¿”ã—ã¾ã™ã? 059 * 060 * @og.rev 3.5.4.7 (2004/02/06) æ–°è¦ä½œæ? 061 * @og.rev 4.1.1.2 (2008/02/28) Enumåž?fukurou.model.NativeType)ã«å¤‰æ›´ 062 * 063 * @return NATIVEã®åž‹ã?è˜åˆ¥ã‚³ãƒ¼ãƒ?DBType ã§è¦å®? 064 * @see org.opengion.fukurou.model.NativeType 065 */ 066 @Override 067 public NativeType getNativeType() { 068 return NativeType.INT; 069 } 070 071 /** 072 * åŠè§’ï¼æ–‡å—ã?固定長ã§FILL埋ã‚ã•ã‚ŒãŸæ–‡å—å?ã‚’è¿”ã—ã¾ã™ã? 073 * ãªãŠã?エラーãƒã‚§ãƒ?‚¯ã¯è¡Œã‚れã¾ã›ã‚“ã€? 074 * 実行å‰ã«ã€å¿?š valueCheck( String value ,int len ) ãŒè¡Œã‚れるå¿?¦ãŒã‚りã¾ã™ã? 075 * 076 * @og.rev 3.5.4.5 (2004/01/23) エンコード指定ã«å¤‰æ›´ã—ã¾ã™ã? 077 * 078 * @param value ?¦?©?¬?¬åŸ‹ã‚ã™ã‚‹æ–?—å? 079 * @param sizeX 整数部åˆ??æ–?—å?ã®é•·ã? 080 * @param sizeY 少数部åˆ??æ–?—å?ã®é•·ã? 081 * @param encode 固定長ã§å¤‰æ›ã™ã‚‹æ–?—エンコーãƒ? 082 * 083 * @return ?¦?©?¬?¬åŸ‹ã‚ã—ãŸæ–°ã—ã„æ–?—å? 084 */ 085 @Override 086 public String valueFill( final String value ,final int sizeX ,final int sizeY,final String encode ) { 087 int len = (sizeY == 0) ? sizeX : sizeX + sizeY + 1; 088 089 // 注æ„?マイナス記å·ã®å‡¦ç?Œã¾ã?§ã™ã? 090 return StringUtil.intFill( value,len ); 091 } 092 093 /** 094 * Stringå¼•æ•°ã®æ–?—å?を+1ã—ãŸæ–‡å—å?ã‚’è¿”ã—ã¾ã™ã? 095 * ã“れã¯ã€è‹±å—ã?å ´å?A,B,C ãªã©)ã¯ã€B,C,D ã®ã‚ˆã†ã«,æœ?µ‚æ¡ã?æ–?—コードを 096 * ?‹ï¼?ã—ã¾ã™ã? 097 * æ–?—å?ãŒæ•°å—タイプã?å ´åˆã?, æ•°å—ã«å¤‰æ›ã—ã¦ã€?1 ã—ã¾ã™ã?(æ¡ä¸ŠãŒã‚Šã‚‚ã‚り) 098 * 混在タイプã?å ´åˆã?,æœ?¾Œã?æ¡ã ã‘を確èªã—㦠?‹ï¼‘ã—ã¾ã™ã? 099 * 引数ã?null ã®å ´åˆã¨ã€ã‚¼ãƒæ–?—å?("")ã®å ´åˆã?,物ç?š„åˆæœŸè¨å®šå?(String getDefault()) 100 * ã®å€¤ã‚’è¿”ã—ã¾ã™ã? 101 * 102 * @og.rev 4.0.0.0 (2005/01/31) Integer â‡?Long ã«å¤‰æ›´ 103 * 104 * @param value Stringå¼•æ•°ã®æ–?—å? 105 * 106 * @return Stringå¼•æ•°ã®æ–?—å?を+1ã—ãŸæ–‡å—å? 107 */ 108 @Override 109 public String valueAdd( final String value ) { 110 if( value == null || value.length() == 0 ) { return getDefault(); } 111 long val = Long.parseLong( value ) ; 112 113 return ( String.valueOf( val + 1L ) ); 114 } 115 116 /** 117 * Stringå¼•æ•°ã®æ–?—å?ã«ã€ç¬¬?’å¼•æ•°ã«æŒ?®šã?æ–?—å?(æ•°å—ã?日付ç?ã‚’åŠ ç®—ã—ã¦è¿”ã—ã¾ã™ã? 118 * 119 * ã“ã“ã§ã¯ã€æ•°å—æ–‡å—å?ã«ã€åˆ¥ã®æ•°å—æ–‡å—å?ã‚’åŠ ç®—ã—ã¾ã™ã? 120 * å†?ƒ¨å‡¦ç?«ã€long を使用ã—ã¦ã?¾ã™ã? 121 * 122 * @og.rev 5.6.0.3 (2012/01/24) ADD ã«ã€å¼•æ•°ã®å€¤ã‚’åŠ ç®—ã™ã‚‹æ©Ÿè?を追åŠ?—ã¾ã™ã? 123 * 124 * @param value String引数 125 * @param add åŠ?®—ã™ã‚‹æ•°å—æ–‡å—å? 126 * 127 * @return å¼•æ•°ã®æ–?—å?ã«æ•°å—ã‚’åŠ?®—ã—ã¾ã™ã? 128 */ 129 @Override 130 public String valueAdd( final String value,final String add ) { 131 if( value == null || value.length() == 0 ) { return getDefault(); } 132 133 long addSu = 1L; 134 if( add != null && !add.isEmpty() ) { 135 addSu = Long.parseLong( add ); 136 } 137 138 long val = Long.parseLong( value ) + addSu ; 139 140 return String.valueOf( val ); 141 } 142 143 /** 144 * エãƒ?‚£ã‚¿ãƒ¼ã§ç·¨é›?•れãŸãƒ??タを登録ã™ã‚‹å ´åˆã«ã€ãƒ‡ãƒ¼ã‚¿ãã?ã‚‚ã?ã‚? 145 * 変æ›ã—ã¦ã€å®Ÿç™»éŒ²ãƒ??タを作æ?ã—ã¾ã™ã? 146 * 例ãˆã°,大æ–?—ã?ã¿ã®ãƒ•ィールドãªã‚‰ã?大æ–?—化ã—ã¾ã™ã? 147 * 実登録ãƒ??ã‚¿ã®ä½œæ?ã¯ã€DBType オブジェクトを利用ã—ã¾ã™ã?ã§, 148 * ã“れ㨠Editor ã¨ãŒã‚¢ãƒ³ãƒžãƒƒãƒã?å ´åˆã?ã€ã†ã¾ããƒ‡ãƒ¼ã‚¿å¤‰æ› 149 * ã•れãªã?¯èƒ½æ€§ãŒã‚りã¾ã™ã?ã§ã€æ³¨æ„願ã„ã¾ã™ã? 150 * 151 * @og.rev 3.3.3.0 (2003/07/09) å‰å¾Œã?スペã?スをå–り除ã?¦ãŠãã€? 152 * @og.rev 3.3.3.1 (2003/07/18) 後ã‚スペã?スをå–り除ãã?(StringUtil#rTrim) 153 * @og.rev 3.8.5.3 (2006/08/07) å…ˆé?ゼãƒã‚µãƒ—レス処ç?‚’行ã„ã¾ã™ã? 154 * 155 * @param value (ä¸?ˆ¬ã«ç·¨é›?ƒ‡ãƒ¼ã‚¿ã¨ã—ã¦ç™»éŒ²ã•れãŸãƒ‡ãƒ¼ã‚¿) 156 * 157 * @return ä¿®æ£å¾Œã?æ–?—å?(ä¸?ˆ¬ã«ãƒ??タベã?スã«ç™»éŒ²ã™ã‚‹ãƒ??ã‚¿) 158 */ 159 @Override 160 public String valueSet( final String value ) { 161 if( value == null || value.length() == 0 ) { return ""; } 162 return StringUtil.lTrim0( StringUtil.deleteChar( value,',' ) ); 163 } 164 165 /** 166 * ãƒ??ã‚¿ãŒç™»éŒ²å¯èƒ½ã‹ã©ã?‹ã‚’ãƒã‚§ãƒ?‚¯ã—ã¾ã™ã? 167 * ãƒ??ã‚¿ãŒã‚¨ãƒ©ãƒ¼ã®å ´åˆã?ã€ãã®ã‚¨ãƒ©ãƒ¼å†?®¹ã‚’è¿”ã—ã¾ã™ã? 168 * 169 * @og.rev 2.3.1.4 (2003/02/18) 属æ?ãƒã‚§ãƒ?‚¯ã‚’強化ã—ãŸã? 170 * @og.rev 3.6.0.0 (2004/09/22) dbType パラメータを引数ã«è¿½åŠ? 171 * @og.rev 5.2.2.0 (2010/11/01) 厳å¯?«ãƒã‚§ãƒ?‚¯(isStrict=true)ã™ã‚‹ãƒ•ラグを追åŠ? 172 * 173 * @param key ã‚ー 174 * @param value 値 175 * @param sizeX 整数部åˆ??æ–?—å?ã®é•·ã? 176 * @param sizeY 少数部åˆ??æ–?—å?ã®é•·ã? 177 * @param typeParam dbType パラメータ 178 * @param isStrict 厳å¯?«ãƒã‚§ãƒ?‚¯ã™ã‚‹ã‹ã©ã?‹[true:ã™ã‚‹/false:標準的] 179 * 180 * @return エラーå†?®¹ 181 */ 182 // public ErrorMessage valueCheck( final String key ,final String value , 183 // final int sizeX ,final int sizeY ,final String param ) { 184 @Override 185 public ErrorMessage valueCheck( final String key ,final String value , 186 final int sizeX ,final int sizeY ,final String typeParam ,final boolean isStrict) { 187 188 ErrorMessage msg = new ErrorMessage(); 189 if( value == null || value.length() == 0 ) { return msg; } 190 191 String check; 192 193 check = DBTypeCheckUtil.numberFormatCheck( value ); 194 if( check != null ) { 195 // æŒ?®šã?æ–?—以外ã?æ–?—ãŒä½¿ã‚れã¦ã?¾ã™ã? 196 msg.addMessage( 0,ErrorMessage.NG,"ERR0009", key,check ); 197 } 198 199 check = DBTypeCheckUtil.sizeXCheck( value ,sizeX ,sizeY ); 200 if( check != null ) { 201 // æ–?—å?ã®é•·ã•ãŒæŒ?®šã?é•·ã•よりも長ã?§ã™ã? 202 msg.addMessage( 0, ErrorMessage.NG, "ERR0006", key, value, check, String.valueOf( sizeX ) ); 203 } 204 205 check = DBTypeCheckUtil.decimalCodeCheck( value ); 206 if( check != null ) { 207 // 符å·ã®ä½ç½®ãŒä¸æ£ã§ã™ã? 208 msg.addMessage( 0, ErrorMessage.NG, "ERR0023", key, check ); 209 } 210 211 // 3.6.0.0 (2004/09/22) dbType パラメータを使用ã—ãŸãƒžãƒƒãƒãƒã‚§ãƒ?‚¯ 212 check = DBTypeCheckUtil.matcheCheck( value,typeParam ); 213 if( check != null ) { 214 // æŒ?®šã?æ–?—以外ã?æ–?—ãŒä½¿ã‚れã¦ã?¾ã™ã? 215 msg.addMessage( 0,ErrorMessage.NG,"ERR0009", key,check ); 216 } 217 218 return msg; 219 } 220 }