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.develop; 017 018 import java.util.Locale; 019 import java.util.regex.Pattern; 020 import java.util.regex.Matcher; 021 022 import static org.opengion.fukurou.util.StringUtil.isNull; 023 024 /** 025 * GF91.GF92ãƒ??ブルã¨JSPã®å¤‰æ›ã‚ªãƒ–ジェクãƒ? 026 * 027 * 028 * @author Takeshi.Takada 029 * 030 */ 031 public final class JspConvertEntity { 032 // 5.5.2.6 (2012/05/25) findbugs対å¿? 033 // public static final String[] DBKEY = {"SYSTEM_ID","PGID","NMSYORI","SEQ","CLM","KBACCS", 034 private static final String[] DBKEY = {"SYSTEM_ID","PGID","NMSYORI","SEQ","CLM","CLM_NAME","KBACCS", 035 "MUST","DEFAULT_VAL","TABLE_NAME","ZOKUSEI","SETU", 036 "NMSYS","NMPG","HPGID","USE_ORDER","AS_CLM","JOINTYPE","AS_TABLE","CLS_NAME"}; 037 038 // 5.1.1.0 (2009/12/01) ãƒ??ã‚¿ã®ã‚¢ã‚¯ã‚»ã‚¹ç”¨ã®é…å?番å·ã®ID 039 // private static final int SYSTEM_ID = 0; // 未使用 040 private static final int PGID = 1; // COMMENTã®ã¿ 041 private static final int NMSYORI = 2; 042 // private static final int SEQ = 3; // 未使用 043 private static final int CLM = 4; 044 private static final int CLM_NAME = 5; // 5.6.4.4 (2013/05/31) カラãƒ? 追åŠ? 045 // private static final int KBACCS = 6; // 未使用 046 private static final int MUST = 7; 047 private static final int DEFAULT_VAL = 8; 048 private static final int TABLE_NAME = 9; 049 private static final int ZOKUSEI = 10; 050 // private static final int SETU = 11; // 未使用 051 private static final int NMSYS = 12; // COMMENTã®ã¿ 052 private static final int NMPG = 13; // COMMENTã®ã¿ 053 // private static final int HPGID = 14; // 未使用 054 private static final int USE_ORDER = 15; 055 private static final int AS_CLM = 16; 056 private static final int JOINTYPE = 17; 057 private static final int AS_TABLE = 18; 058 private static final int CLS_NAME = 19; 059 060 private final String _type; // GF92.NMSYORI 061 private final String _column_name; // GF92.CLM 062 private final String _clm_name_ja; // 5.6.4.4 (2013/05/31) カラãƒ? 追åŠ?GF92ã«ã¯ãªãã?リソースã‹ã‚‰å¤‰æ›ã—ãŸåç§°) 063 private final String _table_name; // GF92.TABLE_NAME GF91.TABLE_NAME 064 private final String _as_table_name; // GF91.AS_TABLE 065 private final String _as_column_name; // GF92.AS_CLM 066 private final String _default_value; // GF92.DEFAULT_VAL 067 private final String _remarks; // GF92.ZOKUSEI 068 private final String _must; // GF92.MUST 069 070 private final String _nmsys; // GF90.NMSYS 071 private final String _pgid; // GF92.PGID 072 private final String _nmpg ; // GF90.NMPG 073 074 private final String _use_order; // GF92.USE_ORDER 075 private final boolean _is_number; // 076 private final String _join_type; // GF92.JOIN_TYPE 077 078 private final JspConvertEntity _join_column; 079 080 /** 081 * ファクトリクラス 082 * QUERYã€JOINã€CONST ã¯ã€ZOKUSEIãƒ??ã‚¿ã?å˜åœ¨ã—ãªã?¨ãã?作æ?ã—ã¾ã›ã‚“ã€? 083 * ã“ã“ã§ã¯ã€null ã‚’è¿”ã—ã¾ã™ã? 084 * 085 * @param data (GF92.NMSYORI) 086 * @param clmNo カラãƒ?•ªå·é…å? 087 * 088 * @return æ–°ã—ã作æ?ã•れã?JspConvertEntity 089 */ 090 public static JspConvertEntity newInstance( final String[] data, final int[] clmNo ) { 091 String nmSyori = data[clmNo[NMSYORI]]; 092 String zokusei = data[clmNo[ZOKUSEI]]; 093 094 // if( zokusei == null || zokusei.trim().length() == 0 ) { 095 if( isNull( zokusei ) ) { 096 if( "QUERY".equals(nmSyori) || 097 "JOIN".equals(nmSyori) || 098 "CONST".equals(nmSyori) ) { return null; } 099 } 100 101 return new JspConvertEntity( data, clmNo ) ; 102 } 103 104 /** 105 * コンストラクタ 106 * 107 * @og.rev 5.6.4.4 (2013/05/31) カラãƒ? 追åŠ? 108 * 109 * @param data ãƒ??ã‚¿é…å? 110 * @param clmNo カラãƒ??é…å?ç•ªå· 111 */ 112 private JspConvertEntity( final String[] data, final int[] clmNo ) { 113 _type = data[clmNo[NMSYORI]]; // GF92.NMSYORI 114 _table_name = data[clmNo[TABLE_NAME]]; // GF92.TABLE_NAME GF91.TABLE_NAME 115 _as_table_name = data[clmNo[AS_TABLE]]; // GF91.AS_TABLE 116 _column_name = data[clmNo[CLM]]; // GF92.CLM 117 _clm_name_ja = data[clmNo[CLM_NAME]]; // 5.6.4.4 (2013/05/31) カラãƒ? 118 _as_column_name = data[clmNo[AS_CLM]]; // GF92.AS_CLM 119 _default_value = data[clmNo[DEFAULT_VAL]]; // GF92.DEFAULT_VAL 120 _remarks = data[clmNo[ZOKUSEI]]; // GF92.ZOKUSEI 121 _must = data[clmNo[MUST]]; // GF92.MUST 122 _use_order = data[clmNo[USE_ORDER]]; // GF92.USE_ORDER 123 _is_number = "NUMBER".equals( data[clmNo[CLS_NAME]]); // 124 _join_type = data[clmNo[JOINTYPE]]; // GF92.JOIN_TYPE 125 126 _nmsys = data[clmNo[NMSYS]]; // GF90.NMSYS 127 _pgid = data[clmNo[PGID]]; // GF92.PGID 128 _nmpg = data[clmNo[NMPG]]; // GF90.NMPG 129 130 if( "JOIN".equals(_type) ) { 131 _join_column = createLeftTable( _remarks ); 132 } 133 else { 134 _join_column = null; 135 } 136 } 137 138 /** 139 * コンストラクタ(通常利用ã—ã¦ã?ªã? 140 * createLeftTable( String zokusei ) ã‹ã‚‰å‘¼ã³å‡ºã™ã?å†?ƒ¨ã?‘ã§åˆ©ç”¨ã—ã¦ã?‚‹ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ 141 * 142 * @og.rev 5.6.4.4 (2013/05/31) カラãƒ? 追åŠ? 143 * 144 * @param type 処ç?(GF92.NMSYORI) 145 * @param table_name ãƒ??ブルå?GF92.TABLE_NAME,GF91.TABLE_NAME) 146 * @param as_table_name ãƒ??ブル別å?GF91.AS_TABLE) 147 * @param column_name カラãƒ?(GF92.CLM) 148 */ 149 private JspConvertEntity( final String type, final String table_name, final String as_table_name, final String column_name ) { 150 _type = type; // GF92.NMSYORI 151 _table_name = table_name; // GF92.TABLE_NAME GF91.TABLE_NAME 152 _as_table_name = as_table_name; // GF91.AS_TABLE 153 _column_name = column_name; // GF92.CLM 154 _clm_name_ja = null; // 5.6.4.4 (2013/05/31) カラãƒ? 155 _as_column_name = null; // GF92.AS_CLM 156 _default_value = null; // GF92.DEFAULT_VAL 157 _remarks = null; // GF92.ZOKUSEI 158 _must = null; // GF92.MUST 159 _use_order = null; // GF92.USE_ORDER 160 _is_number = false; // 161 _join_type = null; // GF92.JOIN_TYPE 162 _join_column = null; 163 _nmsys = null; // GF90.NMSYS 164 _pgid = null; // GF92.PGID 165 _nmpg = null; // GF90.NMPG 166 } 167 168 /** 169 * ãƒ??ã‚¿ã®ã‚¢ã‚¯ã‚»ã‚¹ç”¨ã®ã‚«ãƒ©ãƒ?é…å?ã‚’è¿”ã—ã¾ã™ã? 170 * ã“れを利用ã—ã¦ã€ã‚«ãƒ©ãƒ?ã®ç•ªå·ã‚’å–å¾—ã—ã€JspConvertEntity#newInstance( String[],int[] ) ã® 171 * ?’番目ã®å¼•æ•°ã«æŒ?®šã—ã¾ã™ã? 172 * 173 * @og.rev 5.5.2.6 (2012/05/25) findbugs対応ã?JspConvertEntity.DBKEY ã‚’ã?JspConvertEntity.getDBKEY() ã«å¤‰æ›´ã€? 174 * 175 * @return DBKEYé…å?ã®ã‚¯ãƒãƒ¼ãƒ³ 176 */ 177 public static String[] getDBKEY() { 178 return DBKEY.clone(); 179 } 180 181 /** 182 * ãƒ??ã‚¿ã®ã‚¿ã‚¤ãƒ—ã‚’å–å¾—ã?(GF92.NMSYORI) 183 * 184 * @return ãƒ??ã‚¿ã®ã‚¿ã‚¤ãƒ? 185 */ 186 public String getType(){ 187 return _type; 188 } 189 190 /** 191 * ãƒ??ブルåã‚’å–å¾—ã?(GF92.TABLE_NAME GF91.TABLE_NAME) 192 * 193 * @return ãƒ??ブルå? 194 */ 195 public String getTableName(){ 196 return _table_name; 197 } 198 199 /** 200 * カラãƒ?ã‚’å–å¾—ã?(GF92.CLM) 201 * 202 * @return カラãƒ? 203 */ 204 public String getColumnName(){ 205 return _column_name; 206 } 207 208 /** 209 * カラãƒ?ç§°ã‚’å–å¾—ã? 210 * 211 * カラãƒ?ç§°ã¯ã€GF92.CLM ã‚’ã‚ーã«ãƒªã‚½ãƒ¼ã‚¹ã‚’検索ã—ãŸçµæžœã®æ—¥æœ¬èªžã«ãªã‚Šã¾ã™ã?SELECTæ–??コメントã«ä½¿ã?¾ã™ã? 212 * 213 * @og.rev 5.6.4.4 (2013/05/31) カラãƒ? 追åŠ? 214 * 215 * @return カラãƒ?ç§° 216 */ 217 public String getColumnCommentName(){ 218 return _clm_name_ja; 219 } 220 221 /** 222 * ãƒ??ブルåãŒå…ˆé?ã«ä»˜ã„ãŸã‚«ãƒ©ãƒ?ã‚’å–å¾—ã? 223 * 224 * @return カラãƒ?(ãƒ??ブルå付ã) 225 */ 226 public String getFullColumnName(){ 227 String preffix = ""; 228 229 // if ( _as_table_name != null && _as_table_name.trim().length() > 0 ) { 230 // preffix = _as_table_name; 231 // }else{ 232 // preffix = _table_name; 233 // } 234 if ( isNull( _as_table_name ) ) { 235 preffix = _table_name; 236 } 237 else { 238 preffix = _as_table_name; 239 } 240 //é›?¨ˆé–¢æ•°ãŒåˆ©ç”¨ã•れã¦ã?‚‹å ´åˆã?ã€?–¢æ•°åˆ¥ã«ç‰¹åˆ¥ãªå‡¦ç?‚’実è£?™ã‚‹å¿?¦ãŒã‚ã‚‹ã€? 241 //ç¾åœ¨ã¯ã€ãƒ†ãƒ¼ãƒ–ルåã‚„ãƒ??ブル別åã‚’ä»˜åŠ ã›ãšã«ã‚¹ãƒ«ãƒ¼ã™ã‚‹æ§˜ã«å®Ÿè£?—ã¦ã‚りã¾ã™ã? 242 Matcher matcher = null; 243 for (JspEnumeration.TREATS_STRING_FUNCTIONS func : JspEnumeration.TREATS_STRING_FUNCTIONS.values()){ 244 String k = func.toString(); 245 matcher = Pattern.compile("(((\\s*?)|\\()" + k + "(\\s+?))|(((\\s*?)|\\()" + k.toLowerCase( Locale.JAPAN ) + "(\\s+?))").matcher( _column_name ); 246 if (matcher.find()){ 247 return func.update( _column_name , new String[]{ } ); 248 } 249 } 250 return preffix + "." + _column_name; 251 } 252 253 /** 254 * çµåˆå…ˆã?カラãƒ?ƒ…å ±ã‚’å–å¾—ã? 255 * 256 * @return çµåˆå…ˆã?カラãƒ? 257 */ 258 public JspConvertEntity getJoinColumn(){ 259 return _join_column; 260 } 261 262 /** 263 * ãƒ??ブルã«ä»˜ã‘る別åã‚’å–å¾?GF91.AS_TABLE) 264 * 265 * @return ãƒ??ブルã«ä»˜ã‘る別å? 266 */ 267 public String getAsTableName(){ 268 return _as_table_name; 269 } 270 271 /** 272 * カラãƒ?«ä»˜ã‘る別åã‚’å–å¾?GF92.AS_CLM) 273 * 274 * @return カラãƒ?«ä»˜ã‘る別å? 275 */ 276 public String getAsColumnName(){ 277 return _as_column_name; 278 } 279 280 /** 281 * Selectå¥ã§ã™ãã«åˆ©ç”¨å¯èƒ½ãªã‚«ãƒ©ãƒ?ã‚’å–å¾—ã? 282 * 283 * @return カラãƒ? 284 */ 285 public String getSelectPartColumnName(){ 286 if( isNull( _remarks ) || "DISP".equalsIgnoreCase( _remarks ) ) { 287 if( isNull( _as_column_name ) ) { 288 return getFullColumnName(); 289 } 290 else { 291 return getFullColumnName() + " as " + _as_column_name; 292 } 293 } 294 else { 295 if( isNull( _as_column_name ) ) { 296 return _remarks + "(" + getFullColumnName() + ")"; 297 } 298 else { 299 return _remarks + "(" + getFullColumnName() + ") as " + _as_column_name; 300 } 301 } 302 303 // if (_remarks !=null && _remarks.trim().length() > 0 && "DISP".equalsIgnoreCase( _remarks ) == false ){ 304 // if (_as_column_name != null && _as_column_name.trim().length() > 0 ) { 305 // return _remarks + "(" + getFullColumnName() + ") as " + _as_column_name; 306 // }else{ 307 // return _remarks + "(" + getFullColumnName() + ")"; 308 // } 309 // }else if (_as_column_name != null && _as_column_name.trim().length() > 0 ) { 310 // return getFullColumnName() + " as " + _as_column_name; 311 // }else{ 312 // return getFullColumnName(); 313 // } 314 } 315 316 /** 317 * Fromå¥ã§ã™ãã«åˆ©ç”¨å¯èƒ½ãªã‚«ãƒ©ãƒ?ã‚’å–å¾—ã? 318 * 319 * @return 別åã?ã¤ã?Ÿãƒ??ブルå? 320 */ 321 public String getFromPartTableName(){ 322 if( isNull( _as_table_name ) ) { 323 return _table_name; 324 }else{ 325 return _table_name + " " + _as_table_name; 326 } 327 328 // if (_as_table_name != null && _as_table_name.trim().length() > 0) { 329 // return _table_name + " " + _as_table_name; 330 // }else{ 331 // return _table_name; 332 // } 333 } 334 335 /** 336 * åˆæœŸå€¤ã‚’å–å¾—ã?(GF92.DEFAULT_VAL) 337 * 338 * @return åˆæœŸå€¤ 339 */ 340 public String getDefaultValue(){ 341 return _default_value; 342 } 343 344 /** 345 * 属æ?å†?®¹ã‚’å–å¾—ã?(GF92.ZOKUSEI) 346 * 347 * @return 属æ?å†?®¹ 348 */ 349 public String getRemarks(){ 350 return _remarks; 351 } 352 353 /** 354 * å¿??ã‚’å–å¾—ã?(GF92.MUST) 355 * 356 * @return å¿?? 357 */ 358 public String getMust(){ 359 return _must; 360 } 361 362 /** 363 * ä¸¦ã³æ›¿ãˆè¨å®šã‹å¦ã‹ã‚’判å®?GF92.USE_ORDER) 364 * 365 * @return åˆ¤å®šçµæžœ 366 */ 367 public String getUseOrder(){ 368 return _use_order; 369 } 370 371 /** 372 * 数値é ?›®ã‹å¦ã‹ã‚’判å®? 373 * 374 * @return åˆ¤å®šçµæžœ 375 */ 376 public boolean isNumber(){ 377 return _is_number; 378 } 379 380 /** 381 * シスãƒ?ƒ ã®åç§°ã‚’å–å¾—ã—ã¾ã™ã?(GF90.NMSYS) 382 * 383 * @return åç§° 384 */ 385 public String getNmSys(){ 386 return _nmsys; 387 } 388 389 /** 390 * プãƒã‚°ãƒ©ãƒ?Dã‚’å–å¾—ã—ã¾ã™ã?(GF92.PGID) 391 * 392 * @return プãƒã‚°ãƒ©ãƒ?D 393 */ 394 public String getPgid(){ 395 return _pgid; 396 } 397 398 /** 399 * プãƒã‚°ãƒ©ãƒ??åç§°ã‚’å–å¾—ã—ã¾ã™ã?(GF90.NMPG) 400 * 401 * @return åç§° 402 */ 403 public String getNmpg(){ 404 return _nmpg; 405 } 406 407 /** 408 * 外部çµåˆã‹ã‚’判å®?GF92.JOIN_TYPE) 409 * 410 * @return åˆ¤å®šçµæžœ 411 */ 412 public String getJoinType(){ 413 return _join_type; 414 } 415 416 /** 417 * 外部çµåˆã‹ã‚’判å®?GF92.JOIN_TYPE) 418 * 419 * @param zokusei 属æ?æƒ?? 420 * 421 * @return 外部çµåˆã®JspConvertEntityオブジェクãƒ? 422 */ 423 private JspConvertEntity createLeftTable( final String zokusei ){ 424 JspConvertEntity rgt = null; 425 426 String[] rgt_data = zokusei.split( "__" ); 427 if( rgt_data.length == 3 ){ 428 String rgt_tbl = rgt_data[1]; 429 String rgt_as_tbl = rgt_data[2].substring( 0 , rgt_data[2].indexOf('.') ); 430 String rgt_clm = rgt_data[2].substring( rgt_data[2].indexOf('.') + 1 ); 431 432 rgt = new JspConvertEntity( "JOIN",rgt_tbl,rgt_as_tbl,rgt_clm ); 433 } 434 435 return rgt; 436 } 437 438 /** 439 * æƒ??ã‚’æ–‡å—å?åŒ? 440 * 引数ã®indexã¯ã‚¤ãƒ³ãƒ?ƒ³ãƒˆã?æ•°ã‚’æ„味ã—ã¾ã™ã? 441 * 通常ã¯0ã‚’ã‚»ãƒ?ƒˆã—ã¦ãŠãã¾ã™ã? 442 * 443 * @param index int 444 * 445 * @return å†?®¹ã®æ–?—å? 446 */ 447 // public String toString( final int index ){ 448 // String indent = ""; 449 // for(int i = 0 ; i < index ; i++){ 450 // indent = indent + "\t"; 451 // } 452 // StringBuilder sb = new StringBuilder(); 453 // if ( index == 0 ){ 454 // sb.append( indent + "##### JspConvertEntity ############################################\r\n" ); 455 // } 456 // sb.append( indent + "\ttype= " + _type + "\r\n" ); 457 // sb.append( indent + "\ttable_name = " + _table_name + "\r\n" ); 458 // sb.append( indent + "\tas_table_name = " + _as_table_name + "\r\n" ); 459 // sb.append( indent + "\tcolumn_name = " + _column_name + "\r\n" ); 460 // sb.append( indent + "\tas_column_name = " + _as_column_name + "\r\n" ); 461 // sb.append( indent + "\tdefault_value = " + _default_value + "\r\n" ); 462 // sb.append( indent + "\tremarks = " + _remarks + "\r\n" ); 463 // sb.append( indent + "\tmust = " + _must + "\r\n" ); 464 // sb.append( indent + "\tuse_order = " + _use_order + "\r\n" ); 465 // sb.append( indent + "\tno_display = " + _is_number + "\r\n" ); 466 // sb.append( indent + "\tjoin_type = " + _join_type + "\r\n" ); 467 // if (_join_column != null ) { 468 // sb.append( indent + "\tjoin_column = {\r\n" + _join_column.toString(1) + "\r\n"+indent + "\t}" ); 469 // } 470 // return sb.toString(); 471 // } 472 }