01.JAVA/Java2008. 7. 11. 17:59
반응형

/**
 *
 */
package com.sbdc.util;

import java.text.DecimalFormat;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.*;
import java.io.*;

/**
 * @author jchhkr
 *
 */

public class EtcUtil {
 
 public String checkNull(String pStr){
  if(pStr == null || "NULL".equals(pStr.toUpperCase()))
   return "";
  else
   return pStr;
 }
 
 public String checkNull(String pStr, String retStr){
  if(pStr == null || "NULL".equals(pStr.toUpperCase()))
   return retStr;
  else
   return pStr;
 }
 
 public int checkNull(String pStr, int pInt){
  if(pStr == null || "".equals(pStr))
   return pInt;
  else
   return Integer.parseInt(pStr);
 }
 
 public float checkNull(String pStr, float pInt){
  if(pStr == null)
   return pInt;
  else
   return Float.parseFloat(pStr);
 }  
 
 public String getFomatDate(String strType, String strDate){
  String delim = "";
 
  if("1".equals(strType))
   delim = "-";
  else if("2".equals(strType))
   delim = ".";
  else if("3".equals(strType))
   delim = "/";

  if(strDate == null || "".equals(strDate)){
   return "";
  }else{
   if(strDate.length() == 8){
    return strDate.substring(0, 4) + delim + strDate.substring(4, 6) + delim + strDate.substring(6, 8);
   }else{
    return strDate;
   }
  }
 }

 // 로그파일 작성
 public void writeLog(String who, String msg, String sql){
  String LogDir = "D:/web_root/sbdc/log";

  String writeStr = "";
  writeStr = getTime() + " | " + who + " | " + msg;

  //파일이 없을 경우 생성
  String fileName = LogDir + "/sbdc_" +
        getYear() +  getMonth() + getDay() + ".log";
  try{
   makeFile(fileName);
   
   File file = new File(fileName);
   RandomAccessFile randomaccessfile = new RandomAccessFile(file, "rw");
   
   long i = randomaccessfile.length();
   randomaccessfile.seek(i);
   randomaccessfile.write(writeStr.getBytes());
   randomaccessfile.write("\n".getBytes());
   
   randomaccessfile.close();
 
  }catch(Exception e){
   System.out.println("Write Log Error :::: " + e.toString());
  }
 }
 
 public void makeFile(String fileName) throws Exception{
  File file = new File(fileName);
  if(!file.isFile()){
   file.createNewFile();
  }
 }
 
 //날짜와 시간 가져오기
 public static String getYear(){
  Calendar calendar = Calendar.getInstance();
  return Integer.toString(calendar.get(Calendar.YEAR));
 }
 
 //현재 월 가져오기
  public static String getMonth(){
  Calendar now = Calendar.getInstance();
  int monthN  = now.get(Calendar.MONTH)+1;
  String MON  = (monthN<10)? "0"+Integer.toString(monthN):Integer.toString(monthN) ;
 
  return MON;
  }
 
 //현재 일자 가져오기
 public static String getDay(){
  Calendar now = Calendar.getInstance();
  int dayN     = now.get(Calendar.DAY_OF_MONTH);
  if(dayN <10){
      return '0' + Integer.toString(dayN);
  }
  return Integer.toString(dayN);
 }
 
 public static String getDate(){ //년-월-일
  java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy-MM-dd");
  return  formatter.format(new java.util.Date());
 }
 public static String getTime(){ //년-월-일 시:분:초
  java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  return  formatter.format(new java.util.Date());
 }
 public static String getTime2(){ //시:분:초
  java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("HHmmss");
  return  formatter.format(new java.util.Date());
 }
 public static int getDateNum(){
  java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("yyyyMMdd");
  return  Integer.parseInt(formatter.format(new java.util.Date()));
 }
 
 //한달전 일자 가져오기, sDay:현재일자 sMM:개월수(1은 1개월)
 public String getLastMonth() {
  Calendar cal = new GregorianCalendar();
 
  String sDay = getTime().substring(0,10);
  String sMM = "1";
 
  SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
  Date d = df.parse(sDay, new ParsePosition(0));
 
  cal.setTime(d);
  cal.add(Calendar.MONTH, -Integer.parseInt(sMM));
 
  return df.format(cal.getTime());
 }
 
 // 한달후 일자 가져오기, sDay:현재일자 sMM:개월수(1은 1개월)
 public String getNextMonth() {
  Calendar cal = new GregorianCalendar();
 
  String sDay = getTime().substring(0,10);
  String sMM = "1";
 
  SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
  Date d = df.parse(sDay, new ParsePosition(0));
 
  cal.setTime(d);
  cal.add(Calendar.MONTH, Integer.parseInt(sMM));
 
  return df.format(cal.getTime());
 }
 
 // 어제 일자 가져오기, sDay:현재일자 sMM:일수(1은 1일)
 public String getLastDate() {
  Calendar cal = new GregorianCalendar();
 
  String sDay = getTime().substring(0,10);
  String sMM = "1";
 
  SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
  Date d = df.parse(sDay, new ParsePosition(0));
 
  cal.setTime(d);
  cal.add(Calendar.DATE, -Integer.parseInt(sMM));
 
  return df.format(cal.getTime());
 }
 
 //두 날짜 차이값 비교, sDay:일자1 pDay:일자2
 public long getDiffDate(String day1, String day2) {
 
  long retVal = 0;
  String sDay = day1;
  String pDay = day2;
 
  SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
 
  Date d1 = df.parse(sDay, new ParsePosition(0));
  Date d2 = df.parse(pDay, new ParsePosition(0));
 
  retVal = (d1.getTime() - d2.getTime()) / (1000*60*60*24);
   
  return retVal;
 }
 /**
    * 설명   한글코드처리
    * @param     --String s
    * @return    --String
    * @exception
    */

  public String convToKo(String s){
   String retStr = "";
    try{
     if(s != null){
      retStr = (new String(s.getBytes("8859_1"),"KSC5601"));
     }
    }catch (Exception e){
     retStr = "";
    }
   
    return retStr;
  }
 
  // 파일명변경
 public void setFilerename(String path, String filename_old, String filename_new){
  //파일명 변경..
  File ff = new File(path+"/"+filename_old);
  if(ff.exists()){
   File fileRename = new File(path+"/"+filename_new);
 
   ff.renameTo(fileRename);
  }
 }
 
 // 특수문자에 대해 HTML 형태로 변환
 public String convToDB(String str) {
 
  String tmpStr = "";
 
  if(str == null){
   str = "";
  }
 
  tmpStr = str.replaceAll("&quot;",  "\"");
  tmpStr = tmpStr.replaceAll("&lt;",  "<");
  tmpStr = tmpStr.replaceAll("&gt;",  ">");
  tmpStr = tmpStr.replaceAll("&nbsp;",  " ");
  tmpStr = tmpStr.replaceAll("&amp;",  "&");
 
  return tmpStr;
 }
 
 public String convToHtml(String str) {
 
  String tmpStr = "";
 
  if(str == null){
   str = "";
  }
 
  tmpStr = str.replaceAll("\"", "&quot;");
  tmpStr = tmpStr.replaceAll("<", "&lt;");
  tmpStr = tmpStr.replaceAll(">", "&gt;");
  tmpStr = tmpStr.replaceAll(" ", "&nbsp;");
 
  return tmpStr;
 }
 
 //파일 사이즈 가져오기
 public String getFileSize(File file){
  if(file.exists())
   return Long.toString(file.length());
  else
   return "0";
 }
 
 //파일 확장자 가져오기
 public String getFileExt(String filenm){
  if(!"".equals(filenm))
   return filenm.substring(filenm.lastIndexOf(".")+1);
  else
   return "";  
 }
 
 //지정된 글자수를 초과한 문자열을 대체문자로 교체
 public String getCutUTFString(String s, int len, String tail){
  if (s == null)
   return null;
 
  int srcLen = s.getBytes().length;
  if (srcLen < len)
   return s;
  String tmpTail = tail;
 
  if (tail == null)
   tmpTail = "";
  int tailLen = tmpTail.getBytes().length;
 
  if (tailLen > len)
   return "";
  char a;
  int i = 0;
  int realLen = 0;
 
  for (i = 0; i < len - tailLen && realLen < len - tailLen; i++) {
   a = s.charAt(i);
   if ((a & 0xFF00) == 0)
    realLen += 1;
   else
    realLen += 2;
  }
 
  while (s.substring(0, i).getBytes().length > len - tailLen) {
   i--;
  }
  return s.substring(0, i) + tmpTail;
 }
 
 /**
  * 스트링 자르기
  * 지정한 정수의 개수 만큼 빈칸(" ")을 스트링을 구한다.
  * 절단된 String의 바이트 수가 자를 바이트 개수를 넘지 않도록 한다.
  *
  * @param <str>원본 String
  * @param <int>자를 바이트 개수
  * @param <char>+1 or -1
  * @return <String> 절단된 String
  */
 public String cutString(String str, int length, char type)
 {
     byte[] bytes = str.getBytes();
     int len = bytes.length;
     int counter = 0;

     if(length >= len)
     {
         StringBuffer sb = new StringBuffer();
         sb.append(str);

         for(int i=0;i<length-len;i++) sb.append(' ');
         return sb.toString();
     }

     for(int i=length-1; i>=0; i--)
     {
         if(((int)bytes[i] & 0x80) != 0) counter++;
     }

     String result = null;

     if(type == '+') result = new String(bytes, 0, length + (counter % 2));
     else if(type == '-') result = new String(bytes, 0, length - (counter % 2));
     else result = new String(bytes, 0, length - (counter % 2));
    
     return result + "..";
 }
 
 public String covToDate(String str) {
 
  String tmpStr = "";
  String tmpArray[] = new String[3];
  String retStr = "";
 
  if(!"".equals(str) && !"null".equals(str) && str != null) {
   
   tmpStr = str.replaceAll(" ", "");
   tmpStr = tmpStr.replaceAll("[.]", "-");
   tmpArray = tmpStr.split("-");
   
   if(tmpArray[0].length() < 4) {
    tmpArray[0] = "20" + tmpArray[0];
   }
   
   if(tmpArray[1].length() < 2) {
    tmpArray[1] = "0" + tmpArray[1];
   }
   
   if(tmpArray[2].length() < 2) {
    tmpArray[2] = "0" + tmpArray[2];
   }
   
   retStr = tmpArray[0] + "-" + tmpArray[1] + "-" + tmpArray[2];
  }
  return retStr;
 }
 
 //원본 문자를 구분자로 분해하여 배열을 리턴한다.
 //전화번호, 팩스의 경우 - 구분으로 3개의 배열값을 갖도록 할 경우 사용
 public String[] getSepStringArr(String tarVal, String sepVal, int arrLen){
  String[] retStrArr = new String[arrLen];
  String[] tarStrArr = tarVal.split(sepVal);
 
  for(int i=0; i<arrLen; i++){
   if(i>=tarStrArr.length){
    retStrArr[i] = "";
   }else{
    retStrArr[i] = tarStrArr[i];
   }
  }
  return retStrArr;
 }
 
 /**
  * 문자열의 특수문자장 줄바꿈 Escape 문자열을 HTML 문서의 줄바꿈 태그("&lt;br/&gt;")로 변경
  * 2007-07-16 김형섭 추가
  *
  * @param <String>input 변경할 문자열
  * @return <String>"\r\n"과 "\r"이 "&lt;br/&gt;"로 치환된 문자열
  *
  */
 public String toLineBreak(String input)
 {
  return input.replaceAll("\r\n", "<br/>").replaceAll("\r", "<br/>");
 }
 
 public String toLine(String input)
 {
  return input.replaceAll("<br/>", "\r\n").replaceAll("<br/>", "\r");
 }
 
 /**
  * 퍼센트를 계산
  * 2007-07-17 김형섭 추가
  *
  * @param <int>decimalCount 소수점 자릿수
  * @param <int>number 대상값
  * @param <int>sum 합계값
  * @return <float>퍼센트값
  *
  */
 public float getPercent(int decimalCount, int number, int sum)
 {
  return this.getPercent(decimalCount, (float)number, (float)sum);
 }

 /**
  * 퍼센트를 계산
  * 2007-07-17 김형섭 추가
  *
  * @param <int>decimalCount 소수점 자릿수
  * @param <int>number 대상값
  * @param <float>sum 합계값
  * @return <float>퍼센트값
  *
  */
 public float getPercent(int decimalCount, int number, float sum)
 {
  return this.getPercent(decimalCount, (float)number, sum);
 }

 /**
  * 퍼센트를 계산
  * 2007-07-17 김형섭 추가
  *
  * @param <int>decimalCount 소수점 자릿수
  * @param <float>number 대상값
  * @param <int>sum 합계값
  * @return <float>퍼센트값
  *
  */
 public float getPercent(int decimalCount, float number, int sum)
 {
  return this.getPercent(decimalCount, number, (float)sum);
 }

 /**
  * 퍼센트를 계산
  * 2007-07-17 김형섭 추가
  *
  * @param <int>decimalCount 소수점 자릿수
  * @param <float>number 대상값
  * @param <float>sum 합계값
  * @return <float>퍼센트값
  *
  */
 public float getPercent(int decimalCount, float number, float sum)
 {
     float devidedNumber = 0f;

     if(sum != (float)0) devidedNumber = number/sum;

  return formatDecimal(decimalCount, devidedNumber * 100f);
 }

 /**
  * 소수점 자릿수를 지정하여 변경
  * 2007-07-17 김형섭 추가
  *
  * @param <int>decimalCount 소수점 자릿수
  * @param <float>number 대상값
  * @return <float>변경된값
  *
  */
 public float formatDecimal(int decimalCount, float number)
 {
  String pattern = "#.";
 
  for(int i=0; i<decimalCount; i++)
  {
   pattern+= "0";
  }
 
  DecimalFormat dformat = new DecimalFormat(pattern);
  return Double.valueOf(dformat.format(number)).floatValue();
 }
 
 /**
  * 소수점 자릿수를 지정하여 변경
  * 2007-07-17 김형섭 추가
  *
  * @param <int>decimalCount 소수점 자릿수
  * @param <double>number 대상값
  * @return <float>변경된값
  *
  */
 public float formatDecimal(int decimalCount, double number)
 {
  String pattern = "#.";
 
  for(int i=0; i<decimalCount; i++)
  {
   pattern+= "0";
  }
 
  DecimalFormat dformat = new DecimalFormat(pattern);
  return Double.valueOf(dformat.format(number)).floatValue();
 }
 
 /**
  * 숫자를 받아 3자리마다 ,를 넣어 리턴
  * 2007-07-27 정상욱 추가
  *
  * @param <String>변경할 수
  * @return <String>변경된 값
  */

 public String convToMoney(String strNumber) {
  String Money = "";
  if (strNumber == null) {
   Money = "";
  } else {
   try{
    float floatMoney = Float.parseFloat(strNumber);
   
    java.text.DecimalFormat tstFormat = new java.text.DecimalFormat("#,###");
   
    Money = tstFormat.format(floatMoney);
   }catch(Exception e){
    Money = strNumber;
   }
  }
 
  return Money;
 }
 
 public String padStr (String orgStr, String direction, String repStr, int len) {
  orgStr = checkNull(orgStr, "");
  for(int i = 1; i <= len; i++){
   if("L".equals(direction))
    orgStr = repStr + orgStr;
   else
    orgStr = orgStr + repStr;
  }
 
  return orgStr;
 }

    /**
  * 현재의 날짜를 스트링으로 리턴
  * 2007/09/13 추가 (김형섭)
  *
     * @param <String>format 날짜포맷 (ex-yyyyMMdd)
  * @return <String>날짜
  */
    public String getCurrentDate(String format)
    {
        SimpleDateFormat formatter = new SimpleDateFormat(format, new Locale("ko", "KOREA"));

        return formatter.format(new Date());
    }

    /**
  * 지정한 자리수만큼 0을 채움
  * 2007/09/13 추가 (김형섭)
  *
     * @param <int>sourceNumber 대상숫자
     * @param <int>formatLength 자리수
  * @return <String>날짜
  */
    public String formatZeroString(int sourceNumber, int formatLength)
    {
        String sourceString = Integer.toString(sourceNumber);
        String result = "";

        for(int i=sourceString.length(); i<formatLength; i++) result+= '0';

        return result + sourceString;
    }
}


 

Posted by 1010