ContextValueUtils.java

package com.mycim.valueobject.prp;

import com.mycim.framework.utils.lang.StringUtils;

/**
 * @author Qiansheng.Wang
 * @since 2020-08-17
 */
public class ContextValueUtils {

    /**
     *
     */
    private static final String DEFAULT_EMPTY_VALUE = " ";

    private ContextValueUtils() {
    }

    public static String toString(Object obj) {
        return obj == null ? DEFAULT_EMPTY_VALUE : StringUtils.toString(obj);
    }

    /**
     * @param processRrn
     * @param processVersion
     * @param routeRrn
     * @param operationRrn
     * @return "processRrn|processVersion|routeRrn|operationRrn| | "
     */
    public static String buildKeyByProcess(Long processRrn, Integer processVersion, Long routeRrn, Long operationRrn) {
        return buildKey(toString(processRrn), toString(processVersion), toString(routeRrn), toString(operationRrn),
                        DEFAULT_EMPTY_VALUE, DEFAULT_EMPTY_VALUE);
    }

    /**
     * @param processRrn
     * @param processVersion
     * @param routeRrn
     * @param operationRrn
     * @param productRrn
     * @param productVersion
     * @return "processRrn|processVersion|routeRrn|operationRrn|productRrn|productVersion"
     */
    public static String buildKeyByProduct(Long processRrn, Integer processVersion, Long routeRrn, Long operationRrn,
                                           Long productRrn, Integer productVersion) {
        return buildKey(toString(processRrn), toString(processVersion), toString(routeRrn), toString(operationRrn),
                        toString(productRrn), toString(productVersion));
    }

    /**
     * @param processRrn
     * @param processVersion
     * @param routeRrn
     * @param operationRrn
     * @param productRrn
     * @param productVersion
     * @return
     */
    private static String buildKey(String processRrn, String processVersion, String routeRrn, String operationRrn,
                                   String productRrn, String productVersion) {
        StringBuilder result = new StringBuilder();

        result.append(processRrn).append("|");
        result.append(processVersion).append("|");
        result.append(routeRrn).append("|");
        result.append(operationRrn).append("|");
        result.append(productRrn).append("|");
        result.append(productVersion);

        return result.toString();
    }

}