SPCResultUtils.java

package com.mycim.valueobject.spc.util;

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

import java.util.ArrayList;
import java.util.List;

/**
 * @author kang.zhang
 * @since 2021-01-20
 */
public class SPCResultUtils {

    private static final String JOB_ID_PREFIX = "JobID=";

    private static final String JOB_NAME_PREFIX = " ( ";

    private static final String JOB_NAME_SUFFIX = " ) ";

    private static final String JOB_URL_PREFIX = "<a href=";

    private static final String JOB_URL_SUFFIX = ">Click";

    private static final String UNIT_ID_PREFIX = "[";

    private static final String UNIT_ID_SUFFIX = "]";

    private SPCResultUtils() {
    }

    public static String parseJobIdFromReasonCode(String reasonCode) {
        return StringUtils.substringBefore(StringUtils.substringAfter(reasonCode, JOB_ID_PREFIX), JOB_NAME_PREFIX);
    }

    public static String parseJobNameFromReasonCode(String reasonCode) {
        return StringUtils.substringBefore(StringUtils.substringAfter(reasonCode, JOB_NAME_PREFIX), JOB_NAME_SUFFIX);
    }

    public static String parseSPCUrlFromReasonCode(String reasonCode) {
        return StringUtils.substringBefore(StringUtils.substringAfter(reasonCode, JOB_URL_PREFIX), JOB_URL_SUFFIX);
    }

    public static String parseUnitIdFromReasonCode(String reasonCode) {
        return StringUtils.substringBefore(StringUtils.substringAfter(reasonCode, UNIT_ID_PREFIX), UNIT_ID_SUFFIX);
    }

    public static String parseSPCUrlHtmlFromReasonCode(String reasonCode) {
        return StringUtils.substring(reasonCode, StringUtils.indexOf(reasonCode, JOB_URL_PREFIX));
    }

    public static List<String> getSPCVioRules(String reasonCode) {
        List<String> vioRule = new ArrayList<String>();

        String vioInfo = StringUtils.substring(reasonCode, 0, StringUtils.indexOf(reasonCode, JOB_ID_PREFIX));
        if (StringUtils.isNotBlank(vioInfo)) {
            String[] infos = StringUtils.split(vioInfo, ";");
            for (String info : infos) {
                String[] rules = StringUtils.split(StringUtils.split(info, "/")[3], "_");
                for (String rule : rules) {
                    if (!vioRule.contains(rule)) {
                        vioRule.add(rule);
                    }
                }
            }
        }
        return vioRule;
    }


    public static String buildSpcNonRtResultString(String spcMessage, String jobId, String jobName, String url) {
        StringBuilder reasonCode = new StringBuilder();

        reasonCode.append(StringUtils.defaultString(spcMessage));
        reasonCode.append(JOB_ID_PREFIX).append(StringUtils.defaultString(jobId));
        reasonCode.append(JOB_NAME_PREFIX).append(StringUtils.defaultString(jobName)).append(JOB_NAME_SUFFIX);
        reasonCode.append(StringUtils.defaultString(url));

        return reasonCode.toString();
    }

}