com.skplanet.tcloud.common.OmcLogAdvice.java Source code

Java tutorial

Introduction

Here is the source code for com.skplanet.tcloud.common.OmcLogAdvice.java

Source

/*
* Copyright (c) 2013 SK planet.
* All right reserved.
*
* This software is the confidential and proprietary information of SK planet.
* You shall not disclose such Confidential Information and
* shall use it only in accordance with the terms of the license agreement
* you entered into with SK planet.
*/
package com.skplanet.tcloud.common;

import java.net.UnknownHostException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.Signature;
import org.springframework.util.StopWatch;
import org.springframework.web.servlet.ModelAndView;

import tframe.common.configuration.ConfigurationService;

import com.skplanet.tcloud.common.configuration.ConfigProperties;
import com.skplanet.tcloud.common.exception.UserHandleableException;
import com.skplanet.tcloud.common.interceptor.SessionCheckInterceptor;
import com.skplanet.tcloud.common.model.RequestCustomHeaderInfo;
import com.skplanet.tcloud.common.util.CodeMessage;
import com.skplanet.tcloud.common.util.Encryption;
import com.skplanet.tcloud.common.util.HttpRequest;
import com.skplanet.tcloud.common.util.ServiceConstants;

/**
 * @author JM
 *
 */
public class OmcLogAdvice {

    /**     ConfigurationService ? */
    @Resource(name = "configurationService")
    protected ConfigurationService appConfig;

    /** LOG4J ?  Log ? */
    protected static final Log logger = LogFactory.getLog("OMC_LOG");

    private static String localHostName;
    //private static String localHostAddress;

    static {
        try {
            // Local Server ? HostName ? HostAddress
            java.net.InetAddress localMachine = java.net.InetAddress.getLocalHost();
            localHostName = localMachine.getHostName();
            //localHostAddress = localMachine.getHostAddress();
        } catch (UnknownHostException uhe) {
            logger.error("Cannot obtain local host name", uhe);
        }
    }

    /**
     * <pre>
     *   
     * </pre>
     * @author ?
     */
    public static class JobConstants {

        /**  */
        public static String SERVICE_NAME = "TCLOUD";

        /* ?  -------------------------------------------------------------------- */
        /** ? ? ?   ?  */
        public static String DIRECTION_REQ = "REQ";
        /**  ?  ? ?    */
        public static String DIRECTION_REP = "REP";

        /* ?   -------------------------------------------------------------- */
        /** Application  ? */
        public static String SERVICE_SYS_NAME_APP = "APP";
        /** Storage Control ? */
        public static String SERVICE_SYS_NAME_STORAGE = "STORAGE";
        /** ?  ? */
        public static String SERVICE_SYS_NAME_USER = "USER";
        /** ? ? */
        public static String SERVICE_SYS_NAME_LOGIN = "LOGIN";
        /** ? / ? */
        public static String SERVICE_SYS_NAME_MEMBER = "MEMBER";
        /** ?  ? */
        public static String SERVICE_SYS_NAME_SMS = "SMS";
        /** ?? / FAQ, , ?   */
        public static String SERVICE_SYS_NAME_CUG = "CUG";
        /** Sample ? */
        public static String SERVICE_SYS_NAME_SAMPLE = "SAMPLE";
        /** ? */
        public static String SERVICE_SYS_NAME_MYDIARY = "MYDIARY";
        /**  */
        public static String SERVICE_SYS_NAME_BUDDY = "BUDDY";
        /** SNS */
        public static String SERVICE_SYS_NAME_SNS = "SNS";
        /** SNS OPENAPI */
        public static String SERVICE_SYS_NAME_SNS_OPENAPI = "SNSOPENAPI";
        /** EMBEDED */
        public static String SERVICE_SYS_NAME_EMBEDED = "EMBEDED";

        /** ?  ?  */
        public static String SERVICE_SYS_NAME_ADDR = "ADDR";

        /** SPEED PIMS  */
        public static String SERVICE_SYS_NAME_SPEEDPIMS_STAT = "SPEEDPIMS";

        /** MDN ?  */
        public static String SERVICE_SYS_NAME_MDN_MEMBER = "MDNMEMBER";

        /* 2   */
        /** PRESENSE */
        public static String SERVICE_SYS_NAME_PRESENSE = "PRESENSE";
        /** META */
        public static String SERVICE_SYS_NAME_META = "META";
        /** PUSH */
        public static String SERVICE_SYS_NAME_PUSH = "PUSH";
        /** DEVICE */
        public static String SERVICE_SYS_NAME_DEVICE = "DEVICE";
        /** TAG */
        public static String SERVICE_SYS_NAME_TAG = "TAG";
        /** STATS */
        public static String SERVICE_SYS_NAME_STATS = "STATS";
        /** PLAYTIME */
        public static String SERVICE_SYS_NAME_PLAYTIME = "PLAYTIME";
        /** SHARE */
        public static String SERVICE_SYS_NAME_SHARE = "SHARE";
        /** USERINDEX */
        public static String SERVICE_SYS_NAME_USERINDEX = "USERINDEX";
        /** MULTIMEDIA */
        public static String SERVICE_SYS_NAME_MULTIMEDIA = "MULTIMEDIA";
        /** SHAREURL */
        public static String SERVICE_SYS_NAME_SHAREURL = "SHAREURL";
        /** login request */
        public static String SERVICE_SYS_NAME_REQUEST = "login";
        /** OMC */
        public static String SERVICE_SYS_NAME_OMC = "OMC";

        /* v6  */
        /** TIMELINE */
        public static String SERVICE_SYS_NAME_TIMELINE = "TIMELINE";
        /** CLIPPING */
        public static String SERVICE_SYS_NAME_CLIPPING = "CLIPPING";
        /** CLOUD */
        public static String SERVICE_SYS_NAME_CLOUD = "CLOUD";
        /** CONTENTS */
        public static String SERVICE_SYS_NAME_CONTENTS = "CONTENTS";
        /**ALBUM**/
        public static String SERVICE_SYS_NAME_ALBUM = "ALBUM";

        /* Tstore - Tcloud ? Hidden Invoke   2013-11-14 jung-su.Jang */
        /** OMC */
        public static String SERVICE_SYS_NAME_INVOKE = "INVOKE";

        /* ?  -------------------------------------------------------------- */
        /**    */
        public static String SERVICE_RESULT_CODE_SUCC = "200";
        /**     ?  */
        public static String SERVICE_RESULT_CODE_FAIL = "999";
        /** ??  ? IP  */
        public static String SERVICE_RESULT_UNAUTHORIZED_IP = "2006";

        /*  -------------------------------------------------------------- */
        /**  */
        public static String OMC_RESULT_CODE_SUCC = "SUCC";
        /**  */
        public static String OMC_RESULT_CODE_FAIL = "FAIL";
        /** ? */
        public static String OMC_RESULT_CODE_CHECK = "CHECK";
        /** Unknown */
        public static String OMC_RESULT_CODE_UNKNOWN = "Unknown";
    }

    public OmcLogAdvice() {
    }

    /**
     * <pre>
     *  ? ?? ?? ? .
     * </pre>
     * @param joinPoint AOP ? ?(logging,exception,etc...) ? ?     ?
     * @return {@link Object} 
     * @throws Throwable
     */
    public Object invoke(ProceedingJoinPoint joinPoint) throws Throwable {

        long startTime = System.currentTimeMillis(); //  
        String startTimeStr = ""; // 
        Map<String, Object> inResutlMap = new HashMap<String, Object>(); //    
        Map<String, Object> outResutlMap = new HashMap<String, Object>(); //    
        Map<String, Object> etcResutlMap = new HashMap<String, Object>(); //    
        StopWatch stopWatch = new StopWatch(); // ?  
        Signature signature = joinPoint.getSignature(); // 
        String targetClassName = joinPoint.getTarget().getClass().getName(); // Class Name
        Object returnObj = null;
        // String hostAddress = "";
        HttpServletRequest request = null;
        String key1 = "";

        try {
            // Service ?    - ETC
            SimpleDateFormat sdfYMDHMS = new SimpleDateFormat("yyyyMMddHHmmss");
            startTimeStr = sdfYMDHMS.format(new Date(startTime));
            etcResutlMap.put("serviceName", OmcLogAdvice.JobConstants.SERVICE_NAME);
            etcResutlMap.put("startTimeStr", startTimeStr);
            //         etcResutlMap.put("hostName", hostName+" / "+hostAddress);
            etcResutlMap.put("hostName", localHostName);
            etcResutlMap.put("direction", OmcLogAdvice.JobConstants.DIRECTION_REP);

            // Service   
            inResutlMap = getMakeIn(targetClassName, signature.getName(), joinPoint.getArgs(), request);
            stopWatch.start(joinPoint.toShortString()); // ? 

            // Access ?  IP?   ? .
            //         if (isAccessIp(inResutlMap.get("sysModule"), inResutlMap.get("clientIp"))) {
            if (true) {
                returnObj = joinPoint.proceed(); // Service ? 
                if (stopWatch.isRunning()) {
                    stopWatch.stop(); // ? 
                }

                // Service   
                outResutlMap = getMakeOut(returnObj, inResutlMap);
                outResutlMap.put("totalTimeSeconds", stopWatch.getTotalTimeMillis()); // 

                if (inResutlMap.get("requestUrl").toString().contains("regMemberTOI") || // sjsim@20120920
                        inResutlMap.get("requestUrl").toString().contains("regIdpMemberTOI")
                        || inResutlMap.get("requestUrl").toString().contains("modifyMemberIdTOI")
                        || inResutlMap.get("requestUrl").toString().contains("ssoLoginTOI")
                        || inResutlMap.get("signatureName").toString().contains("getSendEmail")) { // sjsim@20130207

                    String keyStr = inResutlMap.get("key1").toString();

                    if (JobConstants.SERVICE_RESULT_CODE_SUCC.equals(outResutlMap.get("resultCode"))) {
                        if (keyStr.length() >= 5) {
                            if (!keyStr.subSequence(0, 5).equals("memNo")) {
                                ModelAndView mav = (ModelAndView) returnObj;
                                String memNo = mav.getModel().get("memNo").toString();
                                inResutlMap.put("key1", "memNo=" + memNo);
                            }
                        }
                    } else {
                        if (keyStr.length() >= 7) {
                            if (!keyStr.subSequence(0, 7).equals("loginId")) {
                                ModelAndView mav = (ModelAndView) returnObj;
                                String loginId = mav.getModel().get("loginId").toString();
                                inResutlMap.put("key1", "loginId=" + loginId);
                            }
                        }
                    }

                } else if (JobConstants.SERVICE_SYS_NAME_REQUEST.equals(inResutlMap.get("signatureName"))) {
                    if (JobConstants.SERVICE_RESULT_CODE_SUCC.equals(outResutlMap.get("resultCode"))) {
                        if (!inResutlMap.get("key1").toString().subSequence(0, 5).equals("memNo")) {
                            ModelAndView mav = (ModelAndView) returnObj;
                            String memNo = mav.getModel().get("memNo").toString();
                            key1 = "memNo=" + memNo;
                            inResutlMap.put("key1", key1);
                        }
                    } else {
                        if (!inResutlMap.get("key1").toString().subSequence(0, 7).equals("loginId")) {
                            ModelAndView mav = (ModelAndView) returnObj;
                            String loginId = mav.getModel().get("loginId").toString();
                            key1 = "loginId=" + loginId;
                            inResutlMap.put("key1", key1);
                        }
                    }

                    // ? ? ?  KEY1 ? sjsim@20130104
                    // ? ? , ?  Key1 ? ?   2013.01.22. jhkwon 
                } else if ("joinMdn".equals(signature.getName()) || "loginMdn".equals(signature.getName())
                        || "secedeMdn".equals(signature.getName())) {
                    ModelAndView mav = (ModelAndView) returnObj;
                    String memNo = mav.getModel().get("memNo").toString();
                    key1 = "memNo=" + memNo;
                    inResutlMap.put("key1", key1);
                } else if ("loginMdnEx".equals(signature.getName())) {
                    ModelAndView mav = (ModelAndView) returnObj;
                    String memNo = mav.getModel().get("memNo").toString();
                    key1 = "memNo=" + memNo;
                    inResutlMap.put("key1", key1);
                    String userMdn = "userMdn="
                            + StringUtils.defaultString(mav.getModel().get("userMdn").toString());
                    String etc = userMdn;
                    inResutlMap.put("etc", etc);

                } else if ("getSmsKey".equals(signature.getName()) || "getSmsKeyTOI".equals(signature.getName())) {
                    ModelAndView mav = (ModelAndView) returnObj;
                    String gubun = ",";
                    String mdn = key1 + gubun + "mdn="
                            + StringUtils.defaultString(mav.getModel().get("mdn").toString());
                    String userMdnType = "userMdnType="
                            + StringUtils.defaultString(mav.getModel().get("userMdnType").toString());
                    //String smsAuthKey = "smsAuthKey="+StringUtils.defaultString(mav.getModel().get("smsAuthKey").toString());
                    //String etc=mdn+gubun+userMdnType+gubun+smsAuthKey;
                    String etc = mdn + gubun + userMdnType + gubun;

                    inResutlMap.put("etc", etc);

                } else if (inResutlMap.get("signatureName").toString().contains("startup")) { // dikey@20130220
                    for (Object object : joinPoint.getArgs()) {
                        if (object instanceof HttpServletRequest) {
                            request = (HttpServletRequest) object;
                        }
                    }

                    // key1? ? ?? key2? T store? ? mdn
                    if (request != null) {
                        String etc = (String) inResutlMap.get("etc");
                        String deviceId = request.getParameter("deviceId") == null ? ""
                                : request.getParameter("deviceId");
                        etc = etc + "|deviceId=" + deviceId;

                        String userAgent = null;
                        userAgent = request.getHeader("user-agent");
                        if (userAgent != null && !userAgent.trim().isEmpty()) {

                            if (userAgent.contains("T store")) {
                                etc = etc + new StringBuffer("|mdn=").append(
                                        request.getParameter("mdn") == null ? "" : request.getParameter("mdn"))
                                        .toString();
                            }
                        }
                        /*
                         * Tstore -Tcloud?  
                         * - T store? T cloud? ? ?? T cloud ? UV -
                         *    startup.do ? etc? tctd-src? ?? append
                         * 2013-11-26 jung-su.jang  
                         */
                        ModelAndView mav = (ModelAndView) returnObj;
                        if (mav != null && mav.getModel() != null && mav.getModel().get("tcdSrc") != null) {
                            String tcdSrc = mav.getModel().get("tcdSrc").toString();
                            etc += tcdSrc != null ? "|tcd-src=" + tcdSrc : "";
                        }

                        String referer = request.getParameter("referer") == null ? ""
                                : request.getParameter("referer");
                        etc = etc + "|referer=" + referer;

                        String pushId = request.getParameter("pushId");
                        if (pushId != null && !"".equals(pushId)) {
                            etc = etc + "|pushId=" + pushId;
                        }

                        inResutlMap.put("etc", etc);
                    }

                } else if ("deviceToDevice".equals(signature.getName())) { // sjsim@20130402
                    String etc = (String) inResutlMap.get("etc");
                    ModelAndView mav = (ModelAndView) returnObj;
                    String medTyCd = mav.getModel().get("medTyCd").toString();

                    etc += "|medTyCd=" + medTyCd;
                    inResutlMap.put("etc", etc);
                } else if ("omcLog".equals(signature.getName()) || "omcDetailLog".equals(signature.getName())) { // dikey@20130423
                    ModelAndView mav = (ModelAndView) returnObj;
                    inResutlMap.put("key2", mav.getModel().get("key2").toString());
                }

                String requestUrl = inResutlMap.get("requestUrl") == null ? ""
                        : inResutlMap.get("requestUrl").toString();

                if (requestUrl.contains("regMemberTOI.do") || requestUrl.contains("mdnJoin.do")
                        || requestUrl.contains("regIdpMemberTOI.do")) {
                    ModelAndView mav = (ModelAndView) returnObj;

                    if (mav.getModel().get("key2") != null)
                        inResutlMap.put("key2", mav.getModel().get("key2").toString());
                }

                /* Tstore-Tcloud ?   omc  ?? ??  ??  
                 * ? requestHeader? ? ?   ?? ??  ?   
                 *      ? ? put  2013-11-14 jung-su.Jang
                 */
                if ("sync".equals(signature.getName())) {
                    HttpServletRequest syncRequest = null;
                    Object[] args = joinPoint.getArgs();
                    for (Object object : args) {
                        if (object instanceof HttpServletRequest) {
                            syncRequest = (HttpServletRequest) object;
                        }
                    }
                    String tcdSrc = (String) syncRequest.getAttribute("tcdSrc");
                    if (tcdSrc != null && !"".equals(tcdSrc)) {
                        String etc = (String) inResutlMap.get("etc");
                        etc += "|tcd-src=" + tcdSrc;
                        inResutlMap.put("etc", etc);
                    }
                }
                if ("startupsc".equals(signature.getName())) {
                    ModelAndView mav = (ModelAndView) returnObj;
                    if (mav != null && mav.getModel() != null) {
                        inResutlMap.put("sessionID",
                                mav.getModel().get("sessionID") != null
                                        && mav.getModel().get("sessionID").toString() != null
                                                ? mav.getModel().get("sessionID").toString()
                                                : "");
                        inResutlMap.put("key1",
                                "memNo=" + mav.getModel().get("key1") != null
                                        && mav.getModel().get("key1").toString() != null
                                                ? mav.getModel().get("key1").toString()
                                                : "memNo=");
                        inResutlMap.put("etc",
                                mav.getModel().get("etc") != null && mav.getModel().get("etc").toString() != null
                                        ? mav.getModel().get("etc").toString()
                                        : "tcd-src=1");
                    }
                }
                if ("checkJoinMdn".equals(signature.getName())) {
                    ModelAndView mav = (ModelAndView) returnObj;
                    if (mav != null && mav.getModel() != null) {
                        inResutlMap.put("etc",
                                "uesrMdn=" + StringUtils.defaultString(mav.getModel().get("userMdn").toString()));
                    }
                }

                // ? ? ??  log .
                /* Tstore-Tcloud ? mdnJoinNew ? ? OMC  ? ?? 
                 * && !"mdnJoinNew".equals(signature.getName()) 
                 * 2013.11.18 jung-su.Jang 
                 */
                // ? ? ??  log .
                if (!"".equals(inResutlMap.get("sysModule"))
                        && !(inResutlMap.get("sysModule").equals(JobConstants.SERVICE_SYS_NAME_SAMPLE))
                        && !"mdnJoinNew".equals(signature.getName())
                        && !"mdnJoinNewForm".equals(signature.getName())) {
                    //logger.info(makeLogString(inResutlMap, outResutlMap, etcResutlMap, true));
                    // artf120005 Token Expire ?  OMC Log ?   by jaeyeon.hwang 2014.03.13
                    if (!CodeMessage.RESPONSE_CODE_EXPIRED_TOKEN.equals(outResutlMap.get("resultCode"))) {
                        logger.info(getFilterOmc(makeLogString(inResutlMap, outResutlMap, etcResutlMap, true)));
                    }
                }
            }
            return returnObj;

        } catch (UserHandleableException ue) {
            if (!JobConstants.SERVICE_RESULT_UNAUTHORIZED_IP.equals(ue.getErrorCode())) { //   IP?   
                if (stopWatch.isRunning()) {
                    stopWatch.stop(); //  ?  
                }
                outResutlMap.put("totalTimeSeconds", stopWatch.getTotalTimeMillis()); // 
                outResutlMap.put("resultCode", ue.getErrorCode());

                /* Tstore-Tcloud ?   omc  ?? ??  ??  
                 * ? requestHeader? ? ?   ?? ??  ?   
                 *      ? ? put  2013-11-14 jung-su.Jang
                 *  */
                if ("startupsc".equals(signature.getName()) || "mdnJoinNew".equals(signature.getName())) {
                    inResutlMap.put("etc", "tcd-src=1");
                    if ("startupsc".equals(signature.getName())) {
                        outResutlMap.put("resultCode", CodeMessage.RESPONSE_CODE_FAIL);
                        logger.error(makeLogString(inResutlMap, outResutlMap, etcResutlMap, false));
                    }
                }
                /* artf113224 mdnLogin - TOKEN Expire ?? memNo     by  
                 * Token Expired  AOP ? OMC  ?
                 * jaeyeon.hwang 2014.02.18 */
                if (!"startupsc".equals(signature.getName())
                        //artf120005 TokenExpire ?   OMC Log   by jaeyeon.hwang  2014.03.13
                        && !CodeMessage.RESPONSE_CODE_EXPIRED_TOKEN.equals(ue.getErrorCode())) {
                    if (JobConstants.SERVICE_RESULT_CODE_FAIL.equals(ue.getErrorCode())) {
                        logger.error(makeLogString(inResutlMap, outResutlMap, etcResutlMap, false));
                    } else {
                        logger.error(makeLogString(inResutlMap, outResutlMap, etcResutlMap, true));
                    }
                }
            }

            throw new Exception(ue);
        } catch (Exception e) {
            if (stopWatch.isRunning()) {
                stopWatch.stop(); //  ?  
            }
            outResutlMap.put("totalTimeSeconds", stopWatch.getTotalTimeMillis()); // 
            outResutlMap.put("resultCode", JobConstants.SERVICE_RESULT_CODE_FAIL);

            /* Tstore-Tcloud ?   omc  ?? ??  ??  
             * ? requestHeader? ? ?   ?? ??  ?   
             *      ? ? put  2013-11-14 jung-su.Jang
             *  */
            if ("startupsc".equals(signature.getName()) || "mdnJoinNew".equals(signature.getName())) {
                inResutlMap.put("etc", "tcd-src=1");
                if ("startupsc".equals(signature.getName())) {
                    outResutlMap.put("resultCode", CodeMessage.RESPONSE_CODE_FAIL);
                }
            } else {
                logger.error(makeLogString(inResutlMap, outResutlMap, etcResutlMap, false));
            }
            throw new Exception(e);
        }
    }

    @SuppressWarnings("unchecked")
    private Map<String, Object> getMakeIn(String targetClassName, String signatureName, Object[] args,
            HttpServletRequest request) {
        String clientIp = "";
        String requestUrl = "";
        String remoteUrl = "";
        String key1 = "";
        String key2 = "";
        String etc = "";
        String prameterName = "";
        String prameterValue = "";
        String sysModule = "";
        String userAgent = ""; // OLAP ??    jhkwon
        String sessionId = ""; // OLAP ??   jhkwon (  )
        String methodType = "";

        Map<String, Object> resutlMap = new HashMap<String, Object>();

        HttpServletRequest request2 = null;
        HttpRequest httpRequest = null;

        try {
            for (Object object : args) {
                if (object instanceof HttpServletRequest) {
                    request = (HttpServletRequest) object;
                }
            }

            if (request != null) {
                //  
                clientIp = request.getRemoteHost();
                requestUrl = request.getRequestURL().toString();
                userAgent = request.getHeader("user-agent"); // OLAP ??    jhkwon

                methodType = request.getMethod();

                request2 = request;
                httpRequest = new HttpRequest(request2);

                /*            Enumeration num = request.getHeaderNames();
                            while(num.hasMoreElements()){
                  String name = (String)num.nextElement();
                  String value = request.getHeader(name);
                  logger.info(""+name+":"+value);
                            }*/

                // KEY1  ?
                try {
                    //String sessionId = "";
                    if (request.getHeader("tcd-sessionid") != null) {
                        sessionId = request.getHeader("tcd-sessionid").toString();

                    }

                    RequestCustomHeaderInfo requestCustomHeaderInfo = new RequestCustomHeaderInfo();
                    requestCustomHeaderInfo = SessionCheckInterceptor.sessionCheckInfo
                            .getSessionCheckInfo(sessionId);
                    String memNo = requestCustomHeaderInfo.getTcdMemNo().toString();
                    clientIp = requestCustomHeaderInfo.getTcdCip().toString();
                    key1 = "memNo=" + memNo;

                } catch (NullPointerException ex) {
                    // ? ??  loginId  .
                    Enumeration<String> e = request.getParameterNames();
                    // ? key
                    while (e.hasMoreElements()) {
                        prameterName = e.nextElement();
                        if (request.getParameterValues(prameterName) != null && "loginId".equals(prameterName)) {
                            prameterValue = request.getParameter(prameterName);
                            key1 = prameterName + "=" + prameterValue;
                            break;
                        } else if (request.getParameterValues(prameterName) != null
                                && "memNo".equals(prameterName)) {
                            prameterValue = request.getParameter(prameterName);
                            key1 = prameterName + "=" + prameterValue;
                            break;
                        } else if (request.getParameterValues(prameterName) != null
                                && "updateStorageMetaFile".equals(signatureName) && "cntsId".equals(prameterName)) {
                            prameterValue = request.getParameter(prameterName);
                            key2 = prameterName + "=" + prameterValue;
                        }
                    }
                }

            }

            String packageName = "tcloud.client.web.";
            String packageNameV6 = "com.skplanet.tcloud.";
            if ( // ?
            StringUtils.contains(targetClassName, packageName + "member.UserController")
                    || StringUtils.contains(targetClassName, packageName + "member.dummy.UserDummyController")) {
                sysModule = JobConstants.SERVICE_SYS_NAME_USER;
            } else if ( // ?
            StringUtils.contains(targetClassName, packageName + "member.LoginController")
                    || StringUtils.contains(targetClassName, packageName + "member.dummy.LoginDummyController")) {
                sysModule = JobConstants.SERVICE_SYS_NAME_LOGIN;
                /* Tstore-Tcloud ? Hidden Invoke  sysModul  2013-11-14 jung-su.Jang */
                if ("startupsc".equals(signatureName)) {
                    sysModule = JobConstants.SERVICE_SYS_NAME_INVOKE;
                }
            } else if ( // ?
            StringUtils.contains(targetClassName, packageName + "member.MemberController")
                    || StringUtils.contains(targetClassName, packageName + "member.dummy.MemberDummyController")) {
                sysModule = JobConstants.SERVICE_SYS_NAME_MEMBER;
            } else if ( // ?
            StringUtils.contains(targetClassName, packageName + "mydiary")) {
                sysModule = JobConstants.SERVICE_SYS_NAME_MYDIARY;

                //  ?  ?  
                String memNo = key1.split("=")[1];

                Enumeration<String> e = request.getParameterNames();
                while (e.hasMoreElements()) {
                    prameterName = e.nextElement();
                    if (request.getParameterValues(prameterName) != null && "tagetMemNO".equals(prameterName)) {
                        if (StringUtils.isNotEmpty(request.getParameter(prameterName))
                                && !memNo.equals(request.getParameter(prameterName))) {
                            key2 = "path=" + "buddyDiary";
                            break;
                        } else {
                            break;
                        }
                    }
                }

            } else if ( // 
            StringUtils.contains(targetClassName, packageName + "buddy")) {
                sysModule = JobConstants.SERVICE_SYS_NAME_BUDDY;

            } else if ( // SNS
            StringUtils.contains(targetClassName, packageName + "sns")) {

                if (StringUtils.contains(targetClassName, "SnsOpenApiController")) {
                    //SNS OPENAPI  .openapi (tcif)? .
                    //sysModule = JobConstants.SERVICE_SYS_NAME_SNS_OPENAPI;
                    ;
                } else {
                    sysModule = JobConstants.SERVICE_SYS_NAME_SNS;
                    if (StringUtils.contains(targetClassName, "SnsCyworldController")) {
                        etc = "snsType=cyworld";
                    } else if (StringUtils.contains(targetClassName, "SnsFacebookController")) {
                        etc = "snsType=facebook";
                    } else if (StringUtils.contains(targetClassName, "SnsNateonController")) {
                        etc = "snsType=nateon";
                    } else if (StringUtils.contains(targetClassName, "SnsMelonController")) {
                        etc = "snsType=melon";
                    } else {
                        etc = "snsType=" + request.getParameter("snsType");
                    }
                }

            } else if (isPackageCheck(targetClassName, packageName + "app.", false)) { // APP
                sysModule = JobConstants.SERVICE_SYS_NAME_APP;
            } else if (isPackageCheck(targetClassName, packageName + "cug.", false)) { // CUG
                sysModule = JobConstants.SERVICE_SYS_NAME_CUG;
            } else if (isPackageCheck(targetClassName, packageName + "sms.", false)) { // SMS
                sysModule = JobConstants.SERVICE_SYS_NAME_SMS;
            } else if (isPackageCheck(targetClassName, packageName + "sample", false)) { // Sample
                sysModule = JobConstants.SERVICE_SYS_NAME_SAMPLE;
            } else if (isPackageCheck(targetClassName, packageName + "presense", false)) { // 
                sysModule = JobConstants.SERVICE_SYS_NAME_PRESENSE;

                if ("deviceToDevice".equals(signatureName)) {
                    etc = "reqCl=" + StringUtils.defaultString(request.getParameter("reqCl"));
                }

            } else if (isPackageCheck(targetClassName, packageName + "meta", false)) {
                sysModule = JobConstants.SERVICE_SYS_NAME_META;
                Enumeration<String> e = request.getParameterNames();
                while (e.hasMoreElements()) {
                    prameterName = e.nextElement();
                    if (("modStorgeAndDbMetaFile".equals(signatureName)
                            || "modDirStorageAndMetaInfoIUD".equals(signatureName))
                            && request.getParameterValues(prameterName) != null && "wrkDiv".equals(prameterName)) {
                        prameterValue = request.getParameter(prameterName);
                        if (StringUtils.isNotEmpty(prameterValue)) {
                            key2 = "wrkDiv=" + prameterValue;
                        }
                    }
                    if (("modStorgeAndDbMetaFile".equals(signatureName)
                            || "modDirStorageAndMetaInfoIUD".equals(signatureName))
                            && request.getParameterValues(prameterName) != null
                            && "strgWrkDiv".equals(prameterName)) {
                        prameterValue = request.getParameter(prameterName);
                        if (StringUtils.isNotEmpty(prameterValue)) {
                            key2 += "|strgWrkDiv=" + prameterValue;
                        }
                    }
                }

                if (("findLibraryList".equals(signatureName) || "findLibraryMusicList".equals(signatureName))
                        || "modStorgeAndDbMetaFile".equals(signatureName) || "precheckMeta".equals(signatureName)) {
                    if (StringUtils.isNotEmpty(request.getParameter("medTyCd"))) {
                        etc = "medTyCd=" + request.getParameter("medTyCd");
                    }
                }

                // OLAB ?  sysModule , 2013.03.19
                if (("metaFileDirectorySearch".equals(signatureName)) || ("findLibraryList".equals(signatureName))
                        || ("findLibraryMusicList".equals(signatureName))) {
                    sysModule = JobConstants.SERVICE_SYS_NAME_TAG;
                } else if ("modStorgeAndDbMetaFile".equals(signatureName)) {
                    sysModule = JobConstants.SERVICE_SYS_NAME_STORAGE;
                }

            } else if (isPackageCheck(targetClassName, packageName + "push", false)) { // 
                sysModule = JobConstants.SERVICE_SYS_NAME_PUSH;
            } else if (isPackageCheck(targetClassName, packageName + "device", false)) { // 
                sysModule = JobConstants.SERVICE_SYS_NAME_DEVICE;
            } else if (isPackageCheck(targetClassName, packageName + "tag", false)) { //

                sysModule = JobConstants.SERVICE_SYS_NAME_TAG;

                if ("tagMapList".equals(signatureName) || "selectPlayInDeviceList".equals(signatureName)
                        || "tagMapSimpleList".equals(signatureName) || "insertMediaTagIud".equals(signatureName) //  
                        || "insertMediaTagMapIud".equals(signatureName) // ?? /
                        || "selectCloudTag".equals(signatureName) // Tag  ? 
                        || "tagList".equals(signatureName)) {

                    if ("tagMapList".equals(signatureName)) {
                        if (StringUtils.isNotEmpty(request.getParameter("tagType"))) {
                            etc = "tagType=" + request.getParameter("tagType");
                        } else {
                            if (StringUtils.isNotEmpty(request.getParameter("chnlClCd"))) {
                                etc = "chnlClCd=" + request.getParameter("chnlClCd");
                            }
                        }
                    }

                    etc = StringUtils.isNotEmpty(etc) ? etc + "|medTyCd=" + request.getParameter("medTyCd")
                            : "medTyCd=" + request.getParameter("medTyCd");
                }

            } else if (isPackageCheck(targetClassName, packageName + "stats", false)) { // 
                sysModule = JobConstants.SERVICE_SYS_NAME_STATS;
            } else if (isPackageCheck(targetClassName, packageName + "playtime", false)) { // 
                sysModule = JobConstants.SERVICE_SYS_NAME_PLAYTIME;
            } /*else if (isPackageCheck(targetClassName, packageName+"share", false)){ // 
              sysModule = JobConstants.SERVICE_SYS_NAME_SHARE;
              Enumeration<String> e = request.getParameterNames();
              while (e.hasMoreElements()) {
                  prameterName = e.nextElement();
                  if (("setShare".equals(signatureName) 
                      || "deleteShare".equals(signatureName) 
                      || "shareTagMapIUD".equals(signatureName)) 
                      && request.getParameterValues(prameterName) != null && "wrkDiv".equals(prameterName)) {
                      prameterValue = request.getParameter(prameterName);
                      if (StringUtils.isNotEmpty(prameterValue)) {
                          key2 = "wrkDiv=" + prameterValue;
                      }
                  }
              }
              }*/ else if (isPackageCheck(targetClassName, packageName + "userindex", false)) { // 
                sysModule = JobConstants.SERVICE_SYS_NAME_USERINDEX;

            } else if (isPackageCheck(targetClassName, packageName + "multimedia", false)) { // Multimedia
                sysModule = JobConstants.SERVICE_SYS_NAME_MULTIMEDIA;
                etc = "objectType=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("objectType"));
                etc += "|networkType=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("networkType"));
                etc += "|deviceType=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("deviceType"));
                etc += "|hsModel=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("hsModel"));
                etc += "|medTyCd=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("objectType")); // 1:?, 2:???

            } else if (isPackageCheck(targetClassName, packageName + "addr", false)) { // 
                sysModule = JobConstants.SERVICE_SYS_NAME_ADDR;
            } else if (isPackageCheck(targetClassName, packageName + "stat.SpeedPimsStatController", false)) { // SpeedPIMS 
                sysModule = JobConstants.SERVICE_SYS_NAME_SPEEDPIMS_STAT;
                etc = "userMdn=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("userMdn"));
                etc += "|model=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("model"));
                etc += "|OStype=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("OStype"));
                etc += "|addrTotalCount="
                        + tframe.common.util.StringUtils.nvlStr(request.getParameter("addrTotalCount"));
                etc += "|addrTotalSize="
                        + tframe.common.util.StringUtils.nvlStr(request.getParameter("addrTotalSize"));
                etc += "|picTotalCount="
                        + tframe.common.util.StringUtils.nvlStr(request.getParameter("picTotalCount"));
                etc += "|picTotalSize="
                        + tframe.common.util.StringUtils.nvlStr(request.getParameter("picTotalSize"));
                etc += "|agencyNo=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("agencyNo"));
                etc += "|agencyType=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("agencyType"));
                etc += "|agencyHsNo=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("agencyHsNo"));
                etc += "|joinStatus=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("joinStatus"));
            } else if (isPackageCheck(targetClassName, packageName + "member.MdnController", false)) {
                sysModule = JobConstants.SERVICE_SYS_NAME_MDN_MEMBER;
                if (signatureName.equals("regMemberMDN")) {
                    etc = "IDtoMDN"; // MDN -> ID/PW  

                } else if (signatureName.equals("regIdpMemberMDN")) {
                    etc = "IDPtoMDN"; // MDN -> IDP    

                } else if (signatureName.equals("checkMdnJoinForPIMS")
                        || signatureName.equals("getSmsKeyForPIMS")) {
                    etc = "userMdn=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("mdn"));

                } else {
                    etc = "userMdn=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("userMdn"));
                }
            } else if (isPackageCheck(targetClassName, packageName + "embeded.EmbededController", false)) {
                sysModule = JobConstants.SERVICE_SYS_NAME_EMBEDED;
                if ("mediaSetAutoUpload".equals(signatureName)) {
                    etc = "medTyCd=" + StringUtils.defaultString(request.getParameter("medTyCd"));
                    etc += "|autoUploadYn=" + StringUtils.defaultString(request.getParameter("autoUploadYn"));
                    etc += "|standardDate=" + StringUtils.defaultString(request.getParameter("standardDate"));
                    etc += "|imageSize=" + StringUtils.defaultString(request.getParameter("imageSize"));
                } else if ("mediaNetworkSet".equals(signatureName)) {
                    etc = "wifiYn=" + StringUtils.defaultString(request.getParameter("wifiYn"));
                }

            } else if (isPackageCheck(targetClassName, packageName + "shareurl", false)) { // shareurl
                sysModule = JobConstants.SERVICE_SYS_NAME_SHAREURL;
                etc = "urlType=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("urlType"));
                etc += "|shareType=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("shareType"));
                etc += "|medTyCd=" + tframe.common.util.StringUtils.nvlStr(request.getParameter("medTyCd"));
                etc += "|externalShareApp="
                        + tframe.common.util.StringUtils.nvlStr(request.getParameter("externalShareApp"));
            } else if (isPackageCheck(targetClassName, packageName + "omc.OmcController", false)) {
                sysModule = JobConstants.SERVICE_SYS_NAME_OMC;

                //?? ? package ?  Default 
                //ex) tcloud.client.web.embeded.EmbededController ==> EMBEDED
            }

            else if (isPackageCheck(targetClassName, packageNameV6 + "timeline.controller", false)) { // timeline
                sysModule = JobConstants.SERVICE_SYS_NAME_TIMELINE;
                etc = "method[" + methodType + "] - " + httpRequest.getOMCPameter();
            }

            else if (isPackageCheck(targetClassName, packageNameV6 + "share.controller", false)) { // share - cloud
                sysModule = JobConstants.SERVICE_SYS_NAME_CLOUD;
                etc = "method[" + methodType + "] - " + httpRequest.getOMCPameter();
            }

            else if (isPackageCheck(targetClassName, packageNameV6 + "contents.controller", false)) { // contents 

                if ("getSearch".equals(signatureName)) { //  - cloud
                    sysModule = JobConstants.SERVICE_SYS_NAME_CLOUD;
                } else { // contents
                    sysModule = JobConstants.SERVICE_SYS_NAME_CONTENTS;
                }
                etc = "method[" + methodType + "] - " + httpRequest.getOMCPameter();
            }

            else if (isPackageCheck(targetClassName, packageNameV6 + "setting.controller", false)) { // setting - cloud
                sysModule = JobConstants.SERVICE_SYS_NAME_CLOUD;
                etc = "method[" + methodType + "] - " + httpRequest.getOMCPameter();
            }

            else if (isPackageCheck(targetClassName, packageNameV6 + "clipping.controller", false)) { // clipping
                sysModule = JobConstants.SERVICE_SYS_NAME_CLIPPING;
                etc = "method[" + methodType + "] - " + httpRequest.getOMCPameter();
            }

            else if (isPackageCheck(targetClassName, packageNameV6 + "contents.controller.RegionController",
                    false)) { //  - cloud
                sysModule = JobConstants.SERVICE_SYS_NAME_CLOUD;
                etc = "method[" + methodType + "] - " + httpRequest.getOMCPameter();
            }

            else if (isPackageCheck(targetClassName, packageNameV6 + "album.controller", false)) { // 
                sysModule = JobConstants.SERVICE_SYS_NAME_ALBUM;
                etc = "method[" + methodType + "] - " + httpRequest.getOMCPameter();
            }

            else {
                if (requestUrl != null) {
                    try {
                        sysModule = targetClassName
                                .substring(targetClassName.indexOf(packageName) + packageName.length(),
                                        targetClassName.lastIndexOf("."))
                                .toUpperCase();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }

            if (isPackageCheck(targetClassName, packageName + "storage.UploadCompleteAckController", false)) {

                if (StringUtils.isNotEmpty(prameterName) && "uploadType".equals(prameterName)) {
                    etc = etc + "|" + prameterName + "=" + request.getParameter("uploadType");
                }

                if (StringUtils.isNotEmpty(etc) && etc.indexOf("uploadType") == -1) {
                    etc = etc + "|uploadType=0";
                }

                if (StringUtils.isNotEmpty(prameterName) && "objectId".equals(prameterName)) {
                    etc = etc + "|" + prameterName + "=" + request.getParameter("objectId");
                }

                etc = getFilterParamUploadBasicAck(etc);
            }

            if (request != null
                    && StringUtils.isNotEmpty(request.getHeader(ServiceConstants.RequestHeaderName.REQ_TCD_POC))) {
                etc = StringUtils.isNotEmpty(etc)
                        ? etc + "|" + ServiceConstants.RequestHeaderName.REQ_TCD_POC + "="
                                + request.getHeader(ServiceConstants.RequestHeaderName.REQ_TCD_POC)
                        : ServiceConstants.RequestHeaderName.REQ_TCD_POC + "="
                                + request.getHeader(ServiceConstants.RequestHeaderName.REQ_TCD_POC);

            } else {
                //thumbnail daemon? /meta/regStorageMetaFile.do   update  tcd-poc=9
                if ("updateStorageMetaFile".equals(signatureName) || "deleteMemberForIdpdown".equals(signatureName)
                        || "uploadCompleteBasickAckNoSession".equals(signatureName)) { // sjsim@20130401
                    //etc = etc + "|" + ServiceConstants.RequestHeaderName.REQ_TCD_POC + "=9";
                    etc = ServiceConstants.RequestHeaderName.REQ_TCD_POC + "=9";
                }
            }

            // request.getHeader("tcd-poc")

        } catch (Exception e) {
        }
        if (signatureName.equals("loginNew") || signatureName.equals("loginSimple")
                || signatureName.equals("loginOld")) {
            signatureName = "login";
        }
        resutlMap.put("sysModule", sysModule);
        resutlMap.put("signatureName", signatureName);
        resutlMap.put("key1", key1);
        resutlMap.put("key2", key2);
        resutlMap.put("clientIp", clientIp);
        resutlMap.put("requestUrl", requestUrl);
        resutlMap.put("remoteUrl", remoteUrl);
        resutlMap.put("etc", etc);

        if (userAgent != null) // http request header ? user-agent  ?  . 
        {
            resutlMap.put("userAgent", userAgent); // OLAP ??    jhkwon
        } else {
            resutlMap.put("userAgent", "");
        }

        if (sessionId != null) {
            if (sessionId.length() > 0) {
                Encryption sha = new Encryption();
                sessionId = sha.getSHA256Digest(sessionId + "roffjrtlshxm"); // 

                resutlMap.put("sessionID", sessionId); // OLAP ??    jhkwon
            } else {
                resutlMap.put("sessionID", "");

            }
        } else {
            resutlMap.put("sessionID", "");
        }

        return resutlMap;
    }

    private Map<String, Object> getMakeOut(Object returnObj, Map<String, Object> paramMap) {
        //String voKey = "";
        String result = "";
        String resultCode = "";
        //String etc = "";
        //ModelAndView mav = null;

        String nationCd = "";
        String imChgType = "";
        String chgType = "";
        String chgStatCd = "";

        String fileCount = "0";

        Map<String, Object> resutlMap = new HashMap<String, Object>();

        // TCloud 6.0?    ? ( 2014.09.16 )
        // returnObj = com.skplanet.tcloud.common.model.ResultMaster
        /*try {        
           mav = (ModelAndView) returnObj;
               
           // Return ? ModelAndView? VO  ? key  ?
           if (mav.getModel().get("result") != null) {
        voKey = "result";
            
        if (mav.getModel().get("resultCode") != null) {
           voKey = "resultCode";
        }
           } else if (mav.getModel().get("info") != null) {
        voKey = "info";
           } else if (mav.getModel().get("resultCode") != null) {
        voKey = "resultCode";
           }
               
               
           if (!"".equals(voKey)) {
        if ("resultCode".equals(voKey)) {
           resultCode =  mav.getModel().get("resultCode").toString();
        } else {
           ResponseHeaderInfo info = (ResponseHeaderInfo) mav.getModel().get(voKey);
           resultCode =  info.getCode();
               
           // Upload Ack  ?  ? .
           if (StringUtils.isNotEmpty(info.getOmcMedTyCd())) {
               etc = paramMap.get("etc") != null || !"".equals(paramMap.get("etc").toString()) 
                    ? paramMap.get("etc").toString() + "|medTyCd=" + info.getOmcMedTyCd(): "medTyCd=" + info.getOmcMedTyCd();
                        
                   paramMap.put("etc", etc);    
           }
               
        }
           }
               
           if(mav.getModel().get("nationCd")!= null){
        nationCd = mav.getModel().get("nationCd").toString();
           }
           if(mav.getModel().get("imChgType") != null){
        imChgType = mav.getModel().get("imChgType").toString();
           }
           if(mav.getModel().get("chgType")!= null){
        chgType = mav.getModel().get("chgType").toString();
           }
           if(mav.getModel().get("chgStatCd") != null){
        chgStatCd = mav.getModel().get("chgStatCd").toString();
           }
           if(mav.getModel().get("fileCount") != null){
        fileCount = mav.getModel().get("fileCount").toString();
           }
               
           if(mav.getModel().get("memNo") != null){
        resutlMap.put("key1", "memNo="+mav.getModel().get("memNo").toString());
           }
               
        } catch (Exception e) {
           e.printStackTrace();
        }*/

        resutlMap.put("resultCode", resultCode);
        resutlMap.put("result", result);
        resutlMap.put("nationCd", nationCd);
        resutlMap.put("imChgType", imChgType);
        resutlMap.put("chgType", chgType);
        resutlMap.put("chgStatCd", chgStatCd);
        resutlMap.put("fileCount", fileCount);
        return resutlMap;
    }

    /**
     * <pre>
     * Log ? ?? ?.
     * </pre>
     * @param inResutlMap
     * @param outResutlMap
     * @param etcResutlMap
     * @param isSucc
     * @return
     */
    private String makeLogString(Map<String, Object> inResutlMap, Map<String, Object> outResutlMap,
            Map<String, Object> etcResutlMap, boolean isSucc) {
        // null    
        if (outResutlMap.get("totalTimeSeconds") == null) {
            outResutlMap.put("totalTimeSeconds", "");
        }

        //   ?
        String result = JobConstants.OMC_RESULT_CODE_FAIL;
        if (isSucc) {
            result = JobConstants.OMC_RESULT_CODE_SUCC;
        }

        // log ?
        StringBuffer strLog = new StringBuffer();
        String gubun = ",";
        strLog.append(etcResutlMap.get("startTimeStr")).append(gubun); //  - yyyymmddhhmmss
        strLog.append(etcResutlMap.get("serviceName")).append(gubun); //  - TCLOUD
        strLog.append(etcResutlMap.get("hostName")).append(gubun); //  - tcHs1
        strLog.append(etcResutlMap.get("direction")).append(gubun); // ? : REQ ? REP

        strLog.append(inResutlMap.get("sysModule")).append(gubun); // ?

        // sjsim@20130205
        if (inResutlMap.get("key1").toString().contains("loginId")) { // ? ? ?  ? KEY1?  
            strLog.append(inResutlMap.get("key1")).append(gubun);
        } else if (outResutlMap.get("key1") != null) {
            strLog.append(outResutlMap.get("key1")).append(gubun); // ?Key1 - memNo=1000
        } else {
            strLog.append(inResutlMap.get("key1")).append(gubun); // ?Key1 - memNo=1000
        }

        strLog.append(inResutlMap.get("key2")).append(gubun); // ?Key2 - /S001/XXX/YYY/

        strLog.append("").append(gubun); // 
        strLog.append(outResutlMap.get("resultCode")).append(gubun); // ?
        strLog.append(outResutlMap.get("totalTimeSeconds")).append(gubun); // ?() - msec
        strLog.append(result).append(gubun); // 

        strLog.append(inResutlMap.get("clientIp")).append(gubun); // ClientIP
        strLog.append(inResutlMap.get("signatureName")).append(gubun); //  : ??  Local ?  ? ?
        strLog.append(inResutlMap.get("requestUrl")).append(gubun); // ? : ??  Local ? ?(JSP,  ) 
        strLog.append(inResutlMap.get("remoteUrl")).append(gubun); // Remote?URL : ? ?   ? ?? URL ? 
        strLog.append(inResutlMap.get("etc")).append(gubun); // 
        // OLAP     2012.07.18. jhkwon 
        strLog.append(inResutlMap.get("userAgent")).append(gubun);
        strLog.append(inResutlMap.get("sessionID")).append(gubun);
        // One ID sjsim
        strLog.append(outResutlMap.get("nationCd")).append(gubun); // 
        strLog.append(outResutlMap.get("imChgType")).append(gubun); // 
        strLog.append(outResutlMap.get("chgType")).append(gubun); // 
        strLog.append(outResutlMap.get("chgStatCd")).append(gubun); // ?
        // sjsim@20121212
        strLog.append(outResutlMap.get("fileCount")); // ? 

        return strLog.toString().replaceAll("null", "");
    }

    /**
     * <pre>
     *  ??  ? ?
     * </pre>
     * @param targetPath
     * @param currentPath
     * @return
     */
    private boolean isPackageCheck(String targetPath, String currentPath, boolean isFullPath) {
        try {
            if (isFullPath) {
                int targetLen = targetPath.lastIndexOf(".");
                int currentLen = currentPath.lastIndexOf(".");

                if (targetLen == -1 || currentLen == -1) {
                    targetLen = targetPath.length();
                    currentLen = currentPath.length();
                }

                String targetStr = targetPath.substring(0, targetLen);
                String currentStr = currentPath.substring(0, currentLen);
                if (targetStr.equals(currentStr)) {
                    return true;
                }
            } else {
                String[] targetArr = targetPath.split("\\.");
                String[] currentArr = currentPath.split("\\.");

                if (targetArr[3].equals(currentArr[3])) {
                    return true;
                }
            }
        } catch (Exception e) {
            return false;
        }
        return false;
    }

    /**
     * <pre>
     * access  IP  Properties  ?.
     * </pre>
     * @param accessIp
     * @param clientIp
     * @return
     */
    public boolean isAccessIpCheck(String accessIp, String clientIp) {
        if ("".equals(accessIp) || accessIp == null || "".equals(clientIp) || clientIp == null) {
            return false;
        }

        try {
            // client IP?  3? 
            String[] clientIpArr = clientIp.split("\\.");
            if (clientIpArr.length != 4) { // 4? IP  ? 
                return false;
            }

            String currentIp = "";
            StringBuffer buf = new StringBuffer();
            for (int i = 0; i < 3; i++) {
                String gubun = ".";
                if (i == 2) {
                    gubun = "";
                }
                buf.append(clientIpArr[i]).append(gubun);
                //currentIp += clientIpArr[i]+gubun;
            }
            currentIp = buf.toString();
            String[] accessIpArr = accessIp.split("#");
            for (String string : accessIpArr) { // access  IP ? 
                if (string.equals(currentIp)) {
                    return true;
                }
            }
        } catch (Exception e) {
            return false;
        }

        return false;
    }

    /**
     * <pre>
     * access  IP  ?.
     * </pre>
     * @return
     */
    @SuppressWarnings("unused")
    private boolean isAccessIp(Object sysModule, Object clientIp) throws UserHandleableException {

        try {
            if (JobConstants.SERVICE_SYS_NAME_SAMPLE.equals(sysModule)) {
                String strClientIp = "";
                if (clientIp != null) {
                    strClientIp = clientIp.toString();

                    //  IP Properties ? ? ? Access  IP ??  ?.
                    boolean isAccessIp = isAccessIpCheck(ConfigProperties.getProperty("omc.access.ip"),
                            strClientIp);

                    // Sample ??  Access ?  IP   ? . 
                    if (!isAccessIp) {
                        return false;
                    }
                }
            }
        } catch (Exception e) {
        }

        return true;
    }

    public String getSHA256Digest(String input) {
        String encryptData = "";

        try {
            MessageDigest sha = MessageDigest.getInstance("SHA-256");
            sha.update(input.getBytes());

            byte[] messageDigest = sha.digest();
            StringBuffer buf = new StringBuffer();
            for (int i = 0; i < messageDigest.length; i++) {
                buf.append(Integer.toHexString(messageDigest[i] & 0xFF).toUpperCase());
                //encryptData += Integer.toHexString(messageDigest[i] & 0xFF).toUpperCase();
            }
            encryptData = buf.toString();

        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }

        return encryptData;
    }

    /**
     * uploadBasicAck   ?     filter 
     * @param param
     * @return
     */
    private String getFilterParamUploadBasicAck(String param) {
        StringTokenizer st = new StringTokenizer(param, "|");
        StringBuffer buf = new StringBuffer();
        while (st.hasMoreTokens()) {
            String param2 = st.nextToken();

            if (buf.indexOf(param2) == -1) {
                buf.append(param2 + "|");
            }
        }
        return buf.toString().substring(0, buf.toString().length() - 1);

    }

    /**
     * log4j?   .
     * @param omc
     * @return
     */
    private String getFilterOmc(String omc) {
        if (StringUtils.isNotEmpty(omc)) {
            omc = omc.replaceAll("\n", "");
        }
        return omc;
    }
}