ConfigMatchUtil.java 2.06 KB
package com.sitech.ismp.util;

/**
 * 用于模糊匹配告警配置
 * 
 * linxc 2013-05-03 修改模糊匹配算法
 */
public class ConfigMatchUtil {
	public static boolean matchUNIT_ID(String cfgUnitId, String collUnitId) {
		if (cfgUnitId == null || cfgUnitId.trim().length() == 0
				|| cfgUnitId.trim().endsWith("*")
				|| cfgUnitId.trim().equals(collUnitId.trim())) {
			return true;

		}
		// 配置了unit_id, 那么进行kbp_class, instance逐项匹配
		String[][] configs = splitUnitId(cfgUnitId);
		String[][] colls = splitUnitId(collUnitId);

		String[] cfgKbpClass = configs[0];
		String[] collKbpClass = colls[0];
		for (int i = 0; i < collKbpClass.length && i < cfgKbpClass.length; i++) {
			if (!cfgKbpClass[i].trim().equals(collKbpClass[i].trim())) {
				// KBP_CLASS不匹配
				return false;
			}
		}

		String[] configInstance = configs[1];
		String[] collInstance = colls[1];
		if (collInstance != null && collInstance.length > 0) {
			// 采集子实体不为空
			if (configInstance == null || configInstance.length == 0) {
				// 当配置子实体为空时,匹配
				return true;
			}

			if (configInstance != null
					&& configInstance.length > collInstance.length) {
				// 当配置子实体不为空并且长度大于采集子实体时,不匹配
				return false;
			}

			for (int i = 0; i < configInstance.length; i++) {
				if (!configInstance[i].trim().equals(collInstance[i].trim())) {
					// 子实体不匹配
					return false;
				}
			}
		} else if (configInstance != null && configInstance.length > 0) {
			return false;
		}

		return true;

	}

	public static boolean matchKPI_ID(String cfgKpiId, String collKpiId) {
		if (cfgKpiId == null || cfgKpiId.trim().length() == 0
				|| cfgKpiId.trim().endsWith("*")) {
			return true;
		} else {
			return cfgKpiId.trim().equals(collKpiId.trim());
		}
	}

	public static String[][] splitUnitId(String unitId) {
		String[][] result = new String[2][];
		String[] tmp = unitId.split(":");

		result[0] = tmp[0].split("-");
		if (tmp.length == 2) {
			result[1] = tmp[1].split("-");
		}

		return result;
	}

}