smartGeoinfoOriginal/src/main/java/egovframework/com/cmm/util/EgovNumberUtil.java

217 lines
6.2 KiB
Java

/**
* @Class Name : EgovNumberUtil.java
* @Description : 숫자 데이터 처리 관련 유틸리티
* @Modification Information
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2009.02.13 이삼섭 최초 생성
*
* @author 공통 서비스 개발팀 이삼섭
* @since 2009. 02. 13
* @version 1.0
* @see
*
*/
package egovframework.com.cmm.util;
import java.security.SecureRandom;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class EgovNumberUtil {
/**
* 특정숫자 집합에서 랜덤 숫자를 구하는 기능 시작숫자와 종료숫자 사이에서 구한 랜덤 숫자를 반환한다
*
* @param startNum - 시작숫자
* @param endNum - 종료숫자
* @return 랜덤숫자
* @see
*/
public static int getRandomNum(int startNum, int endNum) {
int randomNum = 0;
// 랜덤 객체 생성
SecureRandom rnd = new SecureRandom();
do {
// 종료숫자내에서 랜덤 숫자를 발생시킨다.
randomNum = rnd.nextInt(endNum + 1);
} while (randomNum < startNum); // 랜덤 숫자가 시작숫자보다 작을경우 다시 랜덤숫자를 발생시킨다.
return randomNum;
}
/**
* 특정 숫자 집합에서 특정 숫자가 있는지 체크하는 기능 12345678에서 7이 있는지 없는지 체크하는 기능을 제공함
*
* @param sourceInt - 특정숫자집합
* @param searchInt - 검색숫자
* @return 존재여부
* @see
*/
public static Boolean getNumSearchCheck(int sourceInt, int searchInt) {
String sourceStr = String.valueOf(sourceInt);
String searchStr = String.valueOf(searchInt);
// 특정숫자가 존재하는지 하여 위치값을 리턴한다. 없을 시 -1
if (sourceStr.indexOf(searchStr) == -1) {
return false;
} else {
return true;
}
}
/**
* 숫자타입을 문자열로 변환하는 기능 숫자 20081212를 문자열 '20081212'로 변환하는 기능
*
* @param srcNumber - 숫자
* @return 문자열
* @see
*/
public static String getNumToStrCnvr(int srcNumber) {
String rtnStr = null;
rtnStr = String.valueOf(srcNumber);
return rtnStr;
}
/**
* 숫자타입을 데이트 타입으로 변환하는 기능
* 숫자 20081212를 데이트타입 '2008-12-12'로 변환하는 기능
* @param srcNumber - 숫자
* @return String
* @see
*/
public static String getNumToDateCnvr(int srcNumber) {
String pattern = null;
String cnvrStr = null;
String srcStr = String.valueOf(srcNumber);
// Date 형태인 8자리 및 14자리만 정상처리
if (srcStr.length() != 8 && srcStr.length() != 14) {
throw new IllegalArgumentException("Invalid Number: " + srcStr + " Length=" + srcStr.trim().length());
}
if (srcStr.length() == 8) {
pattern = "yyyyMMdd";
} else if (srcStr.length() == 14) {
pattern = "yyyyMMddhhmmss";
}
SimpleDateFormat dateFormatter = new SimpleDateFormat(pattern, Locale.KOREA);
Date cnvrDate = null;
try {
cnvrDate = dateFormatter.parse(srcStr);
} catch (ParseException e) {
throw new RuntimeException(e);
}
cnvrStr = String.format("%1$tY-%1$tm-%1$td", cnvrDate);
return cnvrStr;
}
/**
* 체크할 숫자 중에서 숫자인지 아닌지 체크하는 기능
* 숫자이면 True, 아니면 False를 반환한다
* @param checkStr - 체크문자열
* @return 숫자여부
* @see
*/
public static Boolean getNumberValidCheck(String checkStr) {
int i;
//String sourceStr = String.valueOf(sourceInt);
int checkStrLt = checkStr.length();
for (i = 0; i < checkStrLt; i++) {
// 아스키코드값( '0'-> 48, '9' -> 57)
if (checkStr.charAt(i) > 47 && checkStr.charAt(i) < 58) {
continue;
} else {
return false;
}
}
return true;
}
/**
* 특정숫자를 다른 숫자로 치환하는 기능 숫자 12345678에서 123를 999로 변환하는 기능을 제공(99945678)
*
* @param srcNumber - 숫자집합
* @param cnvrSrcNumber - 원래숫자
* @param cnvrTrgtNumber - 치환숫자
* @return 치환숫자
* @see
*/
public static int getNumberCnvr(int srcNumber, int cnvrSrcNumber, int cnvrTrgtNumber) {
// 입력받은 숫자를 문자열로 변환
String source = String.valueOf(srcNumber);
String subject = String.valueOf(cnvrSrcNumber);
String object = String.valueOf(cnvrTrgtNumber);
StringBuffer rtnStr = new StringBuffer();
String preStr = "";
String nextStr = source;
// 원본숫자에서 변환대상숫자의 위치를 찾는다.
while (source.indexOf(subject) >= 0) {
preStr = source.substring(0, source.indexOf(subject)); // 변환대상숫자 위치까지 숫자를 잘라낸다
nextStr = source.substring(source.indexOf(subject) + subject.length(), source.length());
source = nextStr;
rtnStr.append(preStr).append(object); // 변환대상위치 숫자에 변환할 숫자를 붙여준다.
}
rtnStr.append(nextStr); // 변환대상 숫자 이후 숫자를 붙여준다.
return Integer.parseInt(rtnStr.toString());
}
/**
* 특정숫자가 실수인지, 정수인지, 음수인지 체크하는 기능 123이 실수인지, 정수인지, 음수인지 체크하는 기능을 제공함
*
* @param srcNumber - 숫자집합
* @return -1(음수), 0(정수), 1(실수)
* @see
*/
public static int checkRlnoInteger(double srcNumber) {
// byte 1바이트 ▶소수점이 없는 숫자로, 범위 -2^7 ~ 2^7 -1
// short 2바이트 ▶소수점이 없는 숫자로, 범위 -2^15 ~ 2^15 -1
// int 4바이트 ▶소수점이 없는 숫자로, 범위 -2^31 ~ 2^31 - 1
// long 8바이트 ▶소수점이 없는 숫자로, 범위 -2^63 ~ 2^63-1
// float 4바이트 ▶소수점이 있는 숫자로, 끝에 F 또는 f 가 붙는 숫자 (예:3.14f)
// double 8바이트 ▶소수점이 있는 숫자로, 끝에 아무것도 붙지 않는 숫자 (예:3.14)
// ▶소수점이 있는 숫자로, 끝에 D 또는 d 가 붙는 숫자(예:3.14d)
String cnvrString = null;
if (srcNumber < 0) {
return -1;
} else {
cnvrString = String.valueOf(srcNumber);
if (cnvrString.indexOf(".") == -1) {
return 0;
} else {
return 1;
}
}
}
}