细心!用心!耐心!

吾非文人,乃市井一俗人也,读百卷书,跨江河千里,故申城一游; 一两滴辛酸,三四年学业,五六点粗墨,七八笔买卖,九十道人情。

BlogJava 联系 聚合 管理
  1 Posts :: 196 Stories :: 10 Comments :: 0 Trackbacks
  1 package  com.stt.dosp.datacollect.util;
  2
  3 // import java.io.BufferedReader;
  4 // import java.io.File;
  5 // import java.io.FileInputStream;
  6 // import java.io.IOException;
  7 // import java.io.InputStreamReader;
  8 import  java.text.SimpleDateFormat;
  9 import  java.util.ArrayList;
 10 import  java.util.Calendar;
 11 import  java.util.Date;
 12 import  java.util.GregorianCalendar;
 13
 14 import  org.apache.log4j.Logger;
 15
 16 import  com.stt.dosp.datacollect.pojo.Cdr;
 17
 18 /**
 19  * 校验工具类
 20  *  @author  zhangjp
 21  *  @version  1.0
 22   */

 23 public   class  DataUtil  {
 24      private   static  Logger log  =  Logger.getLogger(DataUtil. class );
 25      private   static  SimpleDateFormat sdf  =   new  SimpleDateFormat( " yyyyMMddHHmmss " );
 26     
 27      /**
 28      * 判断是否是数字
 29       */

 30      public   static   boolean  isNum(String str)  {
 31          if ( str.equalsIgnoreCase( " NULL " ||  str.trim().length()  ==   0 ) {
 32              return   true ;
 33         }

 34          boolean  retVal  =   false ;
 35
 36          try   {
 37             Long.parseLong(str.trim());
 38             retVal  =   true ;
 39         }
  catch  (Exception e)  {        
 40              return  retVal;
 41         }

 42
 43          return  retVal;
 44     }

 45      /**
 46      * 判断是否是浮点数
 47      *  */

 48      public   static   boolean  isDouble(String str)  {
 49          if ( str.trim().equalsIgnoreCase( " NULL " ||  str.trim().length()  ==   0 ) {
 50              return   true ;
 51         }

 52          boolean  retVal  =   false ;
 53
 54          try   {
 55             Double.parseDouble(str.trim());
 56             retVal  =   true ;
 57         }
  catch  (Exception e)  {        
 58              return  retVal;
 59         }

 60
 61          return  retVal;
 62     }

 63
 64      /**
 65      * 判断浮点类型
 66      *  */

 67      public   static   boolean  isDoubleOK(String str, int  length, int  point) {
 68          if  (str  ==   null   ||  str.trim().equalsIgnoreCase( " NULL " ))  {
 69              return   true ;   
 70         }

 71          if (isNum(str)) {
 72              return  str.trim().length()  <=  (length  -  point);
 73         }

 74          if (isDouble(str)  &&  (str.trim().length()  <=  (length  +   1 ))) {
 75             String ss  =  str.substring( 0 ,str.indexOf( " . " ));
 76              return  ss.trim().length()  <=  (length  -  point);
 77         }

 78          return   false ;
 79     }

 80
 81      /**
 82      * 判断数字
 83       */

 84      public   static   boolean  isLengthOk(String str,  int  len)  {
 85          if  (str  ==   null {
 86              return   false ;
 87         }

 88          return  (str.trim().getBytes().length  ==  len);
 89
 90     }

 91     
 92      /**
 93      * 判断数字
 94      * len代表小于等于
 95       */

 96      public   static   boolean  isSmallLengthRang(String str,  int  len)  {
 97         
 98          if  (str  ==   null   ||  str.trim().equalsIgnoreCase( " NULL " ))  {
 99              return   true ;  
100         }

101                 
102          if (isNum(str)) {
103 //             return (str.trim().getBytes().length <= len);
104              return  (str.getBytes().length  <=  len);
105         }

106          if (str.split( " . " ).length  ==   2 ) {
107              if (isDouble(str)) {
108                  return  (str.trim().getBytes().length  <=  len  +   1 );
109             }

110         }

111 //         return (str.trim().getBytes().length <= len);
112          return  (str.getBytes().length  <=  len);
113     }

114      /**
115      * 判断数字
116      * len代表大于等于
117       */

118      public   static   boolean  isBigLengthRang(String str,  int  len)  {
119          if  (str  ==   null {
120              return   false ;
121         }

122         
123          return  (str.trim().getBytes().length  >=  len);
124
125     }

126
127      /**
128      * 判断是否日期
129       */

130      public   static   boolean  isDate(String dateStr, String formatter)  {
131                         
132          if ( dateStr.trim().equalsIgnoreCase( " NULL " ||  dateStr.trim().length()  ==   0   ||  dateStr  ==   null  ) {
133              return   true ;
134         }
            
135         
136         SimpleDateFormat sdF  =   null ;                
137         sdF  =   new  SimpleDateFormat(formatter);                    
138          try   {            
139             sdF.parse(dateStr);
140         }
  catch  (Exception e)  {
141              return   false ;
142         }

143         
144          long  year  =   0 ;
145          long  month  =   0 ;
146          long  day  =   0 ;
147          long  hour  =   0 ;
148          long  miniutes  =   0 ;
149          long  seconds  =   0 ;
150         
151          if (formatter.equals( " yyyyMM " )) {
152              try {
153                 year  =  Long.parseLong(dateStr.substring( 0 , 4 ));
154                 month  =  Long.parseLong(dateStr.substring( 4 , 6 ));
155             }
catch (Exception e) {
156                  return   false ;
157             }

158             
159              if (year >= 1970   &&  month >= 1   &&  month <= 12 ) {
160                  return   true ;
161             }

162         }

163         
164          if (formatter.equals( " yyyyMMdd " )) {
165              try {
166                 year  =  Long.parseLong(dateStr.substring( 0 , 4 ));
167                 month  =  Long.parseLong(dateStr.substring( 4 , 6 ));
168                 day  =  Long.parseLong(dateStr.substring( 6 , 8 ));
169             }
catch (Exception e) {
170                  return   false ;
171             }

172         
173              if (year >= 1970   &&  month >= 1   &&  month <= 12   &&  day >= 1   &&  day <= 31 ) {                                
174                  if (month  ==   1 ) {
175                      return  day  <=   31 ;    
176                 }

177                 
178                  if (month  ==   2 ) {
179                      if (((year % 4   ==   0 &&  (year % 100   !=   0 ))  ||  (year % 400   ==   0 )) {
180                          return  day  <=   28 ;    
181                     }
else   return  day  <=   29 ;
182                     
183                 }

184                 
185                  if (month  ==   3 ) {
186                      return  day  <=   31 ;    
187                 }

188                 
189                  if (month  ==   4 ) {
190                      return  day  <=   30 ;    
191                 }

192                 
193                  if (month  ==   5 ) {
194                      return  day  <=   31 ;    
195                 }

196                 
197                  if (month  ==   6 ) {
198                      return  day  <=   30 ;    
199                 }

200                 
201                  if (month  ==   7 ) {
202                      return  day  <=   31 ;    
203                 }

204                 
205                  if (month  ==   8 ) {
206                      return  day  <=   31 ;    
207                 }

208                 
209                  if (month  ==   9 ) {
210                      return  day  <=   30 ;    
211                 }

212                 
213                  if (month  ==   10 ) {
214                      return  day  <=   31 ;    
215                 }

216                 
217                  if (month  ==   11 ) {
218                      return  day  <=   30 ;    
219                 }

220                 
221                  if (month  ==   12 ) {
222                      return  day  <=   31 ;    
223                 }

224             }

225             
226              return   false ;
227             
228         }

229         
230         
231          if (formatter.equals( " yyyyMMddHHmmss " ||  formatter.equals( " yyyy-MM-dd HH:mm:ss " )) {
232              try {
233                  if (formatter.equals( " yyyyMMddHHmmss " )) {
234                     year  =  Long.parseLong(dateStr.substring( 0 , 4 ));
235                     month  =  Long.parseLong(dateStr.substring( 4 , 6 ));
236                     day  =  Long.parseLong(dateStr.substring( 6 , 8 ));
237                     hour  =  Long.parseLong(dateStr.substring( 8 , 10 ));
238                     miniutes  =  Long.parseLong(dateStr.substring( 10 , 12 ));
239                     seconds  =  Long.parseLong(dateStr.substring( 12 , 14 ));
240                 }
else {
241                     year  =  Long.parseLong(dateStr.substring( 0 , 4 ));
242                     month  =  Long.parseLong(dateStr.substring( 5 , 7 ));
243                     day  =  Long.parseLong(dateStr.substring( 8 , 10 ));
244                      try {
245                         hour  =  Long.parseLong(dateStr.substring( 11 , 13 ));
246                         miniutes  =  Long.parseLong(dateStr.substring( 14 , 16 ));
247                         seconds  =  Long.parseLong(dateStr.substring( 17 , 19 ));
248                     }
catch (Exception e) {
249                         hour  =  Long.parseLong(dateStr.substring( 11 , 12 ));
250                         miniutes  =  Long.parseLong(dateStr.substring( 13 , 15 ));
251                         seconds  =  Long.parseLong(dateStr.substring( 16 , 18 ));
252                         }

253                     
254                 }

255                 
256             }
catch (Exception e) {
257                  return   false ;
258             }

259         
260              if (year >= 1970   &&  month >= 1   &&  month <= 12   &&  day >= 1   &&  day <= 31   &&  hour >= 0   &&  hour <= 24   &&  miniutes >= 0   &&  miniutes <= 59   &&  seconds >= 0   &&  seconds <= 59 ) {                                
261                  if (month  ==   1 ) {
262                      return  day  <=   31 ;    
263                 }

264                 
265                  if (month  ==   2 ) {
266                      if (((year % 4   ==   0 &&  (year % 100   !=   0 ))  ||  (year % 400   ==   0 )) {
267                          return  day  <=   28 ;    
268                     }
else   return  day  <=   29 ;
269                     
270                 }

271                 
272                  if (month  ==   3 ) {
273                      return  day  <=   31 ;    
274                 }

275                 
276                  if (month  ==   4 ) {
277                      return  day  <=   30 ;    
278                 }

279                 
280                  if (month  ==   5 ) {
281                      return  day  <=   31 ;    
282                 }

283                 
284                  if (month  ==   6 ) {
285                      return  day  <=   30 ;    
286                 }

287                 
288                  if (month  ==   7 ) {
289                      return  day  <=   31 ;    
290                 }

291                 
292                  if (month  ==   8 ) {
293                      return  day  <=   31 ;    
294                 }

295                 
296                  if (month  ==   9 ) {
297                      return  day  <=   30 ;    
298                 }

299                 
300                  if (month  ==   10 ) {
301                      return  day  <=   31 ;    
302                 }

303                 
304                  if (month  ==   11 ) {
305                      return  day  <=   30 ;    
306                 }

307                 
308                  if (month  ==   12 ) {
309                      return  day  <=   31 ;    
310                 }

311             }

312              return   false ;
313         }

314          return   false ;
315         
316                 
317
318     }

319
320      /**
321      * 判断是否是手机号码
322      *  */

323      public   static   boolean  isMobile(String mobileStr)  {
324          if  (mobileStr  ==   null {
325              return   false ;
326         }

327         String str  =  mobileStr.trim();
328          if  (isNum(str)  &&  isLengthOk(str,  11 ))  {
329              if (str.startsWith( " 13 " ||  str.startsWith( " 159 " )) {
330                  return   true ;
331             }
                        
332
333         }

334          return   false ;
335
336     }

337     
338      /**
339      * 判断空值
340      *  */

341      public   static   boolean  isNotNull(String str, int  len) {
342          if (str.trim().length() == 0   ||  str.trim().equalsIgnoreCase( " NULL " )) {
343              return   false ;
344         }

345
346          if (isNum(str)) {
347              return  (str.trim().getBytes().length  <=  len);
348         }

349          if (isDouble(str)) {
350              return  (str.trim().getBytes().length  <=  len  +   1 );
351         }

352          return  (str.trim().getBytes().length  <=  len);
353     }

354
355     
356      /**
357      * 分割字符串
358      *  */

359      public   static  Cdr splitString(String lineString) {
360         Cdr cdr  =   new  Cdr();
361         Calendar cal  =  GregorianCalendar.getInstance();
362       try {         
363          ArrayList list  =   new  ArrayList();
364          StringBuffer sb  =   new  StringBuffer();
365          String[] temp_columnArray  =   null ;
366          String[] columnArray  =   null ;
367           // 字符串如果含有空格,则空格为“半角状态下的空格”,如果为全角状态下,则空格长度为1
368          lineString  =  lineString.trim();         
369           char [] chars  =  lineString.toCharArray();
370           int  length  =  chars.length;
371           for ( int  i  =   0 ; i  <  chars.length; i ++ ) {    
372               if (String.valueOf(chars[i]).trim().length() < 1 ) {                
373                  length  -- ;
374              }
else {
375                  sb.append(String.valueOf(chars[i]));
376              }

377          }

378          String str  =  sb.toString();
379          temp_columnArray  =  str.split( " ['\ "' ]");
380           for ( int  i  =   0 ; i  <  temp_columnArray.length; i ++ ) {
381               if (temp_columnArray[i].trim().length() >= 1 ) {
382                  list.add(temp_columnArray[i]);
383              }

384          }

385          columnArray  =  (String[])list.toArray( new  String[(temp_columnArray.length / 2 ) - 1 ]);
386           for ( int  i  =   0 ; i  <  columnArray.length; i ++ ) {
387               if (i  ==   0 ) {
388                  cdr.setSmSequenceId(Long.parseLong(columnArray[i].trim()));
389              }
else   if (i  ==   1 ) {
390                  cdr.setBillType(Integer.parseInt(columnArray[i].trim()));
391              }
else   if (i  ==   2 ) {
392                  cdr.setUserType(Integer.parseInt(columnArray[i].trim()));
393              }
else   if (i  ==   3 ) {
394                  cdr.setPayer(Long.parseLong(columnArray[i].trim()));
395              }
else   if (i  ==   4 ) {
396                  cdr.setSpId(Long.parseLong(columnArray[i].trim()));
397              }
else   if (i  ==   5 ) {
398                  cdr.setReceiver(Long.parseLong(columnArray[i].trim()));                 
399              }
else   if (i  ==   6 ) {
400                  cdr.setServiceId((columnArray[i].trim()));
401              }
else   if (i  ==   8 ) {
402                  cdr.setPayerType(Integer.parseInt(columnArray[i].trim()));
403              }
else   if (i  ==   9 ) {
404                  cdr.setRatedPrice(Integer.parseInt(columnArray[i].trim()));
405              }
else   if (i  ==   10 ) {
406                  cdr.setMonthlyPrice(Integer.parseInt(columnArray[i].trim()));
407              }
else   if (i  ==   11 ) {
408                  cdr.setSendingStatus(Integer.parseInt(columnArray[i].trim()));
409              }
else   if (i  ==   12 ) {
410                  cdr.setMessagePriority(Integer.parseInt(columnArray[i].trim()));
411              }
else   if (i  ==   13 ) {
412                  cdr.setMessageLength(Integer.parseInt(columnArray[i].trim()));
413              }
else   if (i  ==   14 ) {
414                  cdr.setProvinceOfReceiver(columnArray[i].trim());
415              }
else   if (i  ==   15 ) {
416                   if (columnArray.length  ==   21 ) {
417                      cdr.setLocalSmgId(columnArray[i]);
418                  }
else {
419                      cdr.setLocalSmgId( "" );
420                  }
                
421              }
else   if (i  ==   16 ) {                
422 //                  if(columnArray.length == 21){
423 //                      cdr.setForwardInSmgId(columnArray[i-1].trim());
424 //                      cdr.setForwardOutSmgId(columnArray[i-1].trim());
425 //                  }else{
426 //                      cdr.setForwardInSmgId(columnArray[i].trim());
427 //                      cdr.setForwardOutSmgId(columnArray[i].trim());
428 //                  }
429                  cdr.setForwardInSmgId( "" );
430                  cdr.setForwardOutSmgId( "" );
431              }
else   if (i  ==   17 ) {               
432                   if (columnArray.length  ==   21 ) {
433                      cdr.setSmscId(Long.parseLong(columnArray[i - 1 ].trim()));
434                  }
else {
435                      cdr.setSmscId(Long.parseLong(columnArray[i].trim()));
436                  }

437              }
else   if (i  ==   18 ) {                 
438                   if (columnArray.length  ==   21 ) {
439                      cal.setTime(sdf.parse(columnArray[i - 1 ].trim()));
440                      cdr.setApplyTime(cal);
441                  }
else {
442                      cal.setTime(sdf.parse(columnArray[i].trim()));
443                      cdr.setApplyTime(cal);
444                  }

445              }
else   if (i  ==   19 )
446                   if (columnArray.length  ==   21 ) {
447                      cal.setTime(sdf.parse(columnArray[i - 1 ].trim()));
448                      cdr.setFinishTime(cal);
449                  }
else {
450                      cal.setTime(sdf.parse(columnArray[i].trim()));
451                      cdr.setFinishTime(cal);
452                  }

453              }
else {
454                   int  payerType  =  cdr.getPayerType();
455                   if (payerType  ==   3 ) {
456                      cdr.setPrice(cdr.getMonthlyPrice());
457                  }
else   if (payerType  ==   2 ) {
458                      cdr.setPrice(cdr.getRatedPrice());
459                  }
else {
460                      cdr.setPrice( 0 );
461                  }

462              }
                          
463          }

464         }
catch (Exception e) {
465             log.error(e.getMessage());
466              return   null ;
467         }

468          return  cdr;
469     }

470     
471       /**
472      * 进行SQL字符串的规则化。
473      * 目前只处理将其中的'转换为内容,即加上转义符。
474       */

475      public   static  String normalizeString(String sql) {
476          //  在null的情况下,返回"",以便插入数据库。
477          //  因为null在数据库中插入后成为"null",不正确。
478          if  ( ( null   ==  sql)  ||  ( "" .equals(sql)) )
479              return   "" ;
480
481          int  lastIndex  =  sql.lastIndexOf( " ' " );
482          if  ( lastIndex  <   0  )
483              return  sql;
484          if  (  0   ==  lastIndex )
485              return   " ' "   +  sql;
486
487          int [] sepIndexArray  =   new   int [lastIndex  +   1   +   2 ];
488         sepIndexArray[ 0 =   0 ;
489
490          int  startIndex  =   - 1 ;
491          int  sepIndex  =   1 ;
492          while  ( (startIndex  =  sql.indexOf( " ' " , startIndex  +   1 ))  >=   0  )
493             sepIndexArray[sepIndex ++ =  startIndex;
494
495         sepIndexArray[sepIndex]  =  sql.length();
496
497         String result  =  sql.substring(sepIndexArray[ 0 ], sepIndexArray[ 1 ]);
498          for  (  int  i  =   1 ; i  <  sepIndex; i ++  )
499             result  =  result
500                  +   " ' "   +  sql.substring(sepIndexArray[i], sepIndexArray[i  +   1 ]);
501
502          return  result;
503     }

504     
505      /**
506      * 格式化日期1
507      *  */

508      public   static  String formatTime( Calendar cal, String format ) {
509         SimpleDateFormat localTimeFormatter
510              =   new  SimpleDateFormat(format);
511          return  localTimeFormatter.format(cal.getTime());
512     }

513      /**
514      * 格式化日期2
515      *  */

516      public   static  Calendar formatDate( String time, String format ) {
517          try {
518             Date d  =   new  Date();
519             SimpleDateFormat timeFormatter1
520                  =   new  SimpleDateFormat(format);
521             d  =  timeFormatter1.parse(time);
522             Calendar cal  =  Calendar.getInstance();
523             cal.setTime(d);
524              return  cal;
525         }
catch  ( Exception ex ) {
526             log.error( " error:  " , ex);
527              return  Calendar.getInstance();
528         }

529     }

530     
531    
532 //     public static void main(String[] args) throws IOException{
533 //         File file = new File("c:\\hello.txt");
534 //         FileInputStream in = new FileInputStream(file);
535 //         BufferedReader br = new BufferedReader(new InputStreamReader(in));
536 //         ValidateContent vv = new ValidateContent();
537 //         vv.splitString(br.readLine());                
538 //     }    
539 }

540
posted on 2007-02-07 11:02 张金鹏 阅读(468) 评论(0)  编辑  收藏 所属分类: core java中的一些数据结构的处理

只有注册用户登录后才能发表评论。


网站导航: