캠핑과 개발

메일 발송이나 초대장 발송등의 경우 내용은 동일하지만 몇가지의 정보만 변경되는 경우가 많다.
이런 경우에 MessageFormat 을 사용하면 괜찮겠다.

/**
 *
 */
package kr.pe.anaconda.test;

import java.io.File;
import java.text.MessageFormat;
import java.text.ParseException;
import java.util.Scanner;

/**
 * @author diem
 *
 */
public class MessageFormatTest {
 
 /**
  * msg 문자열에  {숫자}로 지정된 영역을 arguments 배열에 담긴 값으로 채워준다. 
  */
 private static void exam1(){
  String msg = "Name: {0} \nTel: {1} \nAge: {2} \nBirthday: {3}. ";
  Object[] arguments = {"홍길동", "123-1234-1234", "31", "06-22"};
  String result = MessageFormat.format(msg, arguments);
  System.out.println(result);
 }
 
 /**
  * 일정한 형식의 문자열에 패턴에 지정된 문자열을 입력한다.
  */
 private static void exam2(){
  String tableName = "USER";
  String msg = "INSERT INTO " +
    tableName +
    " VALUES (''{0}'', ''{1}'', ''{2}'', ''{3}'');";
  
  Object[][] arguments = {
    {"홍길동", "02-123-1234", "19", "10-11"},
    {"전우치", "02-123-1235", "520", "10-15"}    
  };
  
  for(int i = 0; i < arguments.length; i++){
   String result = MessageFormat.format(msg, arguments[i]);
   System.out.println(result);
  }
 }
 
 /**
  * 문자열에서 지정된 패턴으로 데이터를 추출한다.
  * @throws ParseException
  */
 private static void exam3() throws ParseException{
  String[] data = {
   "INSERT INTO USER VALUES ('홍길동', '02-123-1234', '19', '10-11');",
   "INSERT INTO USER VALUES ('전우치', '02-123-1235', '520', '10-15');"
  };
  
  String pattern = "INSERT INTO USER VALUES ({0}, {1}, {2}, {3});";
  MessageFormat mf = new MessageFormat(pattern);
  
  for(int i = 0; i < data.length; i++){
   Object[] objs = mf.parse(data[i]);
   for(int j = 0; j < objs.length; j++ ){
    System.out.println(objs[j]);
   }
  }
 }
 
 
 /**
  * 지정된 문자열에 정해진 패턴에 맞게 파일에서 정보를 읽어와서 데이타를 채운다.
  * user.text
  * '홍길동', '02-123-1234', '19', '10-11'
  * '전우치', '02-123-1235', '520', '10-15'  
  * @throws Exception
  */
 private static void exam4() throws Exception{
  String tableName = "USER";
  String fileName = "c:\\Noname2.txt";
  String msg = "INSERT INTO " +
   tableName +
   " VALUES (''{0}'', ''{1}'', ''{2}'', ''{3}'');";
  File file = new File(fileName);
  if(file.exists()){
   Scanner s = new Scanner(file);
   String pattern = "{0},{1},{2},{3}";
   MessageFormat mf = new MessageFormat(pattern);
   while(s.hasNextLine()){
    String line = s.nextLine();
    Object[] objs = mf.parse(line);
    System.out.println(MessageFormat.format(msg, objs));
   } 
   
   //작업이 완료 되면 파일을 닫아준다.
   s.close();
  }  
 }

 /**
  * @param args
  */
 public static void main(String[] args) throws Exception {
  // TODO Auto-generated method stub
  //exam1();
  //exam2();
  //exam3();
  exam4();
 }

}