써 먹기 위해 저장하는것이다. 다시 만드는것도 간단하겠지만 얼마나 귀찮은 일인가 ㅋㅋ
이 경우는 SOAP 에서 데이타를 던질때 정해진 메시지 변수들을 던지는데
문자가 완성되서 오는게 아니다. MESSAGE_V1,MESSAGE_V2 등 이렇게 변수에 담겨서 오는 메시지는
MESSAGE 문자열에 & 과 치환해서 완성된 문자를 만들어야 한다.
치환규칙이 몇가지 있다. "The message & & for " 처럼 오게 되면 첫번째것이 MESSAGE_V1
해당하는 메시지이고 그 다음이 MESSAGE_V2 된다.
다음경우는 "The message &1 &2 for " 아니면 &3 &4 되는경우가 있는데
&3 이면 MESSAGE_V3 치환하면되는 식이다. 그 치환하는 과정이 다음과 같다.
/** 특정문자에 해당하는 문자열을 치환하여 완성문을 만든다. */
List message = new ArrayList();
Map map = new HashMap();
map.put("TYPE", "S");
map.put("LOG_NO", "VL");
map.put("LOG_MSG_NO", "VL");
map.put("NUMBER", "000");
map.put("ID", "");
map.put("MESSAGE_V1", "Test message");
map.put("MESSAGE_V2", "");
map.put("MESSAGE", "Transaction &1 is outdated");
message.add(map);
if (message != null){
for (int i=0; i < message.size(); i++){
Map temp = (Map)message.get(i);
String select = "1"; // 1:&1, &2 .. 나열
if (temp.get("MESSAGE") != null && !temp.get("MESSAGE").equals("")){
String logMessage = temp.get("MESSAGE").toString();
int ch = logMessage.indexOf('&');
if (ch > -1){
String plag = logMessage.substring(ch+1, ch+2);
for (int j=0; j < 4; j++){
if (plag.equals(Integer.toString((j+1)))){
select = "2";
}
}
}
/** 경우의 수에 따른 MESSAGE_V 를 MESSAGE 에 맵핑시작 */
int count = 1;
while(logMessage.indexOf('&') > -1){
String msgTemp = "MESSAGE_V" + count;
String value;
if (temp.get(msgTemp) != null){
value = temp.get(msgTemp).toString();
}else{
value = "";
}
// 경우의 수에 따른다
if (select.equals("1")){
logMessage = logMessage.replaceFirst("&", value);
}else if (select.equals("2")){
logMessage = logMessage.replaceFirst("&" + count, value);
}
count++;
}
}
}
}
'자바(JAVA)' 카테고리의 다른 글
spring framework 적용하여 controller 에서 error stacktrace 에러 내용이 찍히지 않을때 (0) | 2009.05.26 |
---|---|
Locale format 정보을 이용해서 Date outputs 를 원하는 형태로 만들어보자 (0) | 2009.05.19 |
윈도우 OS 에서 돌아가고 있는 프로세스명을 자바로 넘겨받는 방법 (0) | 2009.05.17 |
log4j.additivity 옵션으로 중복출력 제외 시키기 (0) | 2009.02.21 |
원하는 위치의 문자열을 다른것으로 바꾸고 싶을때(치환) 간단 로직 (0) | 2009.02.21 |
소숫점 이하를 버리는 방식 2가지 (0) | 2009.02.19 |
Java applet 과 javascript, html form 과의 통신방법 (0) | 2009.02.08 |
velocity 페이지에서 java 제공하는 date, 시간관련 객체를 사용하고싶을때 (0) | 2009.02.08 |