package com.taobao.top.analysis.statistics.map; import java.util.ArrayList; import java.util.List; import com.taobao.top.analysis.node.job.JobTask; import com.taobao.top.analysis.statistics.data.ReportEntry; import com.taobao.top.analysis.util.AnalysisConstants; /** * IspErrorCodeMapper.java * @author yunzhan.jtq * * @since 2012-2-15 下午09:39:39 */ public class IspErrorCodeMapper extends DefaultMapper { /** * */ private static final long serialVersionUID = -1438780686686027335L; private static final String ERROR_CODE = "errorCode"; private static final String SUB_ERROR_CODE = "subErrorCode"; private static final List<String> subErrorCodes = new ArrayList<String>(); static { subErrorCodes.add("900"); subErrorCodes.add("901"); subErrorCodes.add("902"); }; /* (non-Javadoc) * @see com.taobao.top.analysis.statistics.map.AbstractMapper#generateKey(com.taobao.top.analysis.statistics.data.ReportEntry, java.lang.String[], com.taobao.top.analysis.node.job.JobTask) */ @Override protected String generateKey(ReportEntry entry, String[] contents, JobTask jobtask) { String key = super.generateKey(entry, contents, jobtask); if (AnalysisConstants.IGNORE_PROCESS.equals(key)) return AnalysisConstants.IGNORE_PROCESS; int position = jobtask.getStatisticsRule().getAliasPool().get(ERROR_CODE).getKey(); String errorCode = contents[Integer.valueOf(position) - 1]; int errorCode_num = 0; try { errorCode_num = Integer.parseInt(errorCode); } catch (RuntimeException e) { return AnalysisConstants.IGNORE_PROCESS; } position = jobtask.getStatisticsRule().getAliasPool().get(SUB_ERROR_CODE).getKey(); String subErrorCode = contents[Integer.valueOf(position) - 1]; if ((errorCode_num > 100 || errorCode_num == 15) && null != subErrorCode && (subErrorCodes.contains(subErrorCode) || subErrorCode.startsWith("isp.") || "null" .equals(subErrorCode))) { return key; } else { return AnalysisConstants.IGNORE_PROCESS; } } }