Please Enable JavaScript!
Gon[ Enable JavaScript ]

반응형
글로벌 ERP SAP 통신을 하면서 만들었던것인데 다음에 비슷한 경우가 발생하면 그대로
써 먹기 위해 저장하는것이다. 다시 만드는것도 간단하겠지만 얼마나 귀찮은 일인가 ㅋㅋ

이 경우는 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++;

        }

     }

  }

}





반응형
Posted by 녹두장군1
,