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; /** * IsvBizErrorCodeMapper.java * @author yunzhan.jtq * * @since 2012-2-15 下午09:51:50 */ public class IsvBizErrorCodeMapper extends DefaultMapper { /** * */ private static final long serialVersionUID = 6751234200700102109L; private static final String ERROR_CODE = "errorCode"; private static final String SUB_ERROR_CODE = "subErrorCode"; private static final List<String> subErrorCodes = new ArrayList<String>(); private static final List<String> errorCodes = new ArrayList<String>(); static { errorCodes.add("23"); errorCodes.add("40"); errorCodes.add("41"); errorCodes.add("43"); }; static { subErrorCodes.add("501"); subErrorCodes.add("503"); subErrorCodes.add("504"); subErrorCodes.add("505"); subErrorCodes.add("506"); subErrorCodes.add("507"); subErrorCodes.add("508"); subErrorCodes.add("509"); subErrorCodes.add("511"); subErrorCodes.add("554"); subErrorCodes.add("556"); subErrorCodes.add("558"); subErrorCodes.add("559"); subErrorCodes.add("562"); subErrorCodes.add("563"); subErrorCodes.add("564"); subErrorCodes.add("566"); subErrorCodes.add("567"); subErrorCodes.add("568"); subErrorCodes.add("569"); subErrorCodes.add("571"); subErrorCodes.add("581"); subErrorCodes.add("582"); subErrorCodes.add("583"); subErrorCodes.add("594"); subErrorCodes.add("595"); subErrorCodes.add("596"); subErrorCodes.add("597"); subErrorCodes.add("601"); subErrorCodes.add("611"); subErrorCodes.add("612"); subErrorCodes.add("613"); subErrorCodes.add("614"); subErrorCodes.add("621"); subErrorCodes.add("622"); subErrorCodes.add("623"); subErrorCodes.add("651"); subErrorCodes.add("653"); subErrorCodes.add("654"); subErrorCodes.add("655"); subErrorCodes.add("656"); subErrorCodes.add("657"); subErrorCodes.add("658"); subErrorCodes.add("659"); subErrorCodes.add("661"); subErrorCodes.add("662"); subErrorCodes.add("663"); subErrorCodes.add("664"); subErrorCodes.add("510"); subErrorCodes.add("550"); subErrorCodes.add("551"); subErrorCodes.add("552"); subErrorCodes.add("553"); subErrorCodes.add("555"); subErrorCodes.add("557"); subErrorCodes.add("560"); subErrorCodes.add("561"); subErrorCodes.add("570"); subErrorCodes.add("580"); subErrorCodes.add("590"); subErrorCodes.add("591"); subErrorCodes.add("592"); subErrorCodes.add("540"); subErrorCodes.add("541"); subErrorCodes.add("542"); subErrorCodes.add("610"); subErrorCodes.add("615"); subErrorCodes.add("620"); subErrorCodes.add("630"); subErrorCodes.add("650"); subErrorCodes.add("652"); subErrorCodes.add("660"); subErrorCodes.add("670"); subErrorCodes.add("673"); subErrorCodes.add("674"); subErrorCodes.add("710"); subErrorCodes.add("ID is illegal"); subErrorCodes.add("invalid parameter"); subErrorCodes.add("invalid-parameter"); subErrorCodes.add("invalid-permission"); subErrorCodes.add("MEDIA_CAT_NAME_IS_EXISTS"); subErrorCodes.add("MEDIA_EXSIT_FILE_NAME"); subErrorCodes.add("MEDIA_FILE_NAME_OVER_MAXLENGTH"); subErrorCodes.add("MEDIA_VIDEO_FILE_NEED_2SCALE"); subErrorCodes.add("MEIA_NAME_NOT_ALLOW_CHAR"); subErrorCodes.add("missing-parameter"); subErrorCodes.add("parameters-mismatch"); subErrorCodes.add("PICTURE_ERROR_FORMAT"); subErrorCodes.add("PICTURE_OVER_AVAILSPACE"); subErrorCodes.add("PICTURE_PARAMETER_ERROR"); subErrorCodes.add("trade-not-exist"); subErrorCodes.add("user-not-exist"); }; @Override public 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]; position = jobtask.getStatisticsRule().getAliasPool().get(SUB_ERROR_CODE).getKey(); String subErrorCode = contents[Integer.valueOf(position) - 1]; int errorCode_num = 0; try { errorCode_num = Integer.parseInt(errorCode); } catch (RuntimeException e) { return AnalysisConstants.IGNORE_PROCESS; } if (errorCodes.contains(errorCode) || subErrorCodes.contains(subErrorCode) || (errorCode_num > 100 || errorCode_num == 15) && (null != subErrorCode && subErrorCode.startsWith("isv"))) { return key; } else { return AnalysisConstants.IGNORE_PROCESS; } } }