File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
/**
* @Class Name : EgovNumberUtil.java
* @Description : 숫자 데이터 처리 관련 유틸리티
* @Modification Information
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2009.02.13 이삼섭 최초 생성
*
* @author 공통 서비스 개발팀 이삼섭
* @since 2009. 02. 13
* @version 1.0
* @see
*
*/
package itn.let.utl.fcc.service;
import java.security.SecureRandom;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* 숫자 데이터 처리 관련 유틸리티
* @author 공통서비스개발팀 이삼섭
* @since 2009.02.13
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2009.02.13 이삼섭 최초 생성
* 2011.08.31 JJY 경량환경 템플릿 커스터마이징버전 생성
*
* </pre>
*/
public class EgovNumberUtil {
private static final Logger LOGGER = LoggerFactory.getLogger(EgovNumberUtil.class);
/**
* 특정숫자 집합에서 랜덤 숫자를 구하는 기능 시작숫자와 종료숫자 사이에서 구한 랜덤 숫자를 반환한다
*
* @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) {
LOGGER.error("ERROR parsing", e.getMessage());
}
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;
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;
}
}
}
}