CollBase.java 9.92 KB
package com.sitech.ismp.coll;

import com.sitech.base.AgentProperties;
import com.sitech.ismp.coll.basic.TblATO_KPIDETAIL;
import com.sitech.util.Formater;
import com.sitech.util.RandomGUID;
import com.sitech.util.upload.RomoteController;
import org.apache.log4j.Logger;

import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.StringTokenizer;
import java.util.Vector;

public class CollBase {

    public RomoteController tt = null;
    protected static Logger logger = Logger.getLogger("COLL");
    /** 分隔线 */
    public static final String SPLIT_LINE = "*******************************************************************************************#";

    public Vector<TblATO_KPIDETAIL> KPISet = new Vector<TblATO_KPIDETAIL>();

	public Vector<TblATO_KPIDETAIL> getKPISet() {
		return KPISet;
	}

	public void addKPISet(Vector<TblATO_KPIDETAIL> kpiset) {
		for (int i = 0; i < kpiset.size(); i++) {
			KPISet.add(kpiset.elementAt(i));
		}
	}

	public void displayKPI() {
		for (int i = 0; i < KPISet.size(); i++) {
			TblATO_KPIDETAIL tblato_kpidetail = (TblATO_KPIDETAIL) KPISet
					.elementAt(i);
			if (tblato_kpidetail == null)
				continue;
			System.out.println(tblato_kpidetail.UNIT_ID + " : "
					+ tblato_kpidetail.KPI_ID + " : "
					+ tblato_kpidetail.KPI_VALUE + " : "
					+ tblato_kpidetail.CLL_TIME);
		}
	}

	public void displayKPI(Vector vKPISet) {
		for (int i = 0; i < vKPISet.size(); i++) {
			TblATO_KPIDETAIL tblato_kpidetail = (TblATO_KPIDETAIL) vKPISet
					.elementAt(i);
			if (tblato_kpidetail == null)
				continue;
			System.out.println(tblato_kpidetail.UNIT_ID + " : "
					+ tblato_kpidetail.KPI_ID + " : "
					+ tblato_kpidetail.KPI_VALUE + " : "
					+ tblato_kpidetail.CLL_TIME);
		}
	}

	public String[] getUNIT_IDSet(String UNIT_ID) throws Exception {
		String[] UNIT_IDSet = Formater.split2Array(UNIT_ID, "-");
		for (int i = 1; i < UNIT_IDSet.length; i++) {
			UNIT_IDSet[i] = UNIT_IDSet[i - 1] + "-" + UNIT_IDSet[i];
		}
		return UNIT_IDSet;
	}

	/**
	 * 保存KPI到swap文件中
	 * (文件名随机生成)
	 */
	public void saveKPI2File() {
		if(KPISet == null || KPISet.size() == 0){
			return;
		}
		
		logger.info("Save ["+KPISet.size() + "] kpi to swap file.");
		String swapTempPath = AgentProperties.SWAP_TEMP_PATH;
		String swapPath = AgentProperties.SWAP_PATH;
		String kpiFileName = null;
		PrintWriter kpiFileStream = null;
		
		try {
			for (int i = KPISet.size() - 1; i >= 0; i--) {
				TblATO_KPIDETAIL kpiDetail = KPISet.get(i);
				if (kpiFileStream == null) {
					kpiFileName = RandomGUID.getRandomGUID();
					logger.debug("Create new swap file[" + kpiFileName + "]");
					kpiFileStream = new PrintWriter(new FileWriter(swapTempPath + kpiFileName, true), true);					
				}
				String collTime = Formater.datetimeToString(kpiDetail.CLL_TIME);
				
				String line = kpiDetail.UNIT_ID + "	" + kpiDetail.KPI_ID + "	"
						+ collTime + "	" + kpiDetail.KPI_VALUE + "	"
						+ kpiDetail.INTERVAL + "	" + kpiDetail.EXT_INFO;

				logger.info(line);				
				kpiFileStream.println(line);

				KPISet.remove(i);
			}
		} catch (Exception e) {
			logger.error("Exception while saveKPI2File.", e);
			for (TblATO_KPIDETAIL kpiDetail : KPISet) {
				logger.error(kpiDetail.toString());
			}
		} finally {
			if (kpiFileStream != null) {
				kpiFileStream.close();
			}
		}
		
		try{
			File tempSwapFile = new File(swapTempPath + kpiFileName);		
			File swapFile = new File(swapPath + kpiFileName);		
			tempSwapFile.renameTo(swapFile);
		}catch (Exception e) {
			logger.error("Exception while saveKPI2File.", e);
		}
	}

	public String addKPI(String unitId, String kpiId, String kpiValue) {
		return addKPI(unitId, kpiId,kpiValue,"0");
	}
	
	public String addKPI(String unitId, String kpiId, String kpiValue, String interval, String dataOrig) {
		TblATO_KPIDETAIL tblato_kpidetail = new TblATO_KPIDETAIL();
		tblato_kpidetail.UNIT_ID = unitId;
		tblato_kpidetail.KPI_ID = kpiId;
		tblato_kpidetail.KPI_VALUE = kpiValue;
		tblato_kpidetail.CLL_TIME = new Date();
		if(interval != null && !interval.equals("")){
			tblato_kpidetail.INTERVAL = interval;
		}
		
		if(null != dataOrig && !"".equals(dataOrig)){
			tblato_kpidetail.EXT_INFO = dataOrig;
		}
		
		KPISet.add(tblato_kpidetail);
		return kpiValue;
	}
	
	public String addKPI(String unitId, String kpiId, String kpiValue,
			String interval) {
		return addKPI(unitId, kpiId, kpiValue, interval, null);
	}
	
	public String addKPI(String unitId, String kpiId, String kpiValue,Date collTime, String interval) {
		TblATO_KPIDETAIL tblato_kpidetail = new TblATO_KPIDETAIL();
		tblato_kpidetail.UNIT_ID = unitId;
		tblato_kpidetail.KPI_ID = kpiId;
		tblato_kpidetail.KPI_VALUE = kpiValue;
		tblato_kpidetail.CLL_TIME = collTime;
		if(interval == null || interval.equals("")){
			tblato_kpidetail.INTERVAL = "0";
		}else{
			tblato_kpidetail.INTERVAL = interval;
		}
		KPISet.add(tblato_kpidetail);
		return kpiValue;
	}

	public Vector addKPI(String KBP_ID, String KPI_ID, Vector kpi_valueset) {
		for (int i = 0; i < kpi_valueset.size(); i++) {
			TblATO_KPIDETAIL tblato_kpidetail = new TblATO_KPIDETAIL();
			String KPI_VALUE = (String) kpi_valueset.elementAt(i);
			tblato_kpidetail.UNIT_ID = KBP_ID + "-" + String.valueOf(10 + i);
			tblato_kpidetail.KPI_ID = KPI_ID;
			tblato_kpidetail.KPI_VALUE = KPI_VALUE;
			tblato_kpidetail.CLL_TIME = new Date();
			KPISet.add(tblato_kpidetail);
		}
		return kpi_valueset;
	}

	public String[] addKPI(String KBP_ID, String KPI_ID, String[] kpi_valueset) {
		for (int i = 0; i < kpi_valueset.length; i++) {
			TblATO_KPIDETAIL tblato_kpidetail = new TblATO_KPIDETAIL();
			String KPI_VALUE = kpi_valueset[i];
			tblato_kpidetail.UNIT_ID = KBP_ID + "-" + String.valueOf(10 + i);
			tblato_kpidetail.KPI_ID = KPI_ID;
			tblato_kpidetail.KPI_VALUE = KPI_VALUE;
			tblato_kpidetail.CLL_TIME = new Date();
			KPISet.add(tblato_kpidetail);
		}
		return kpi_valueset;
	}

	public int[] addKPI(String KBP_ID, String KPI_ID, int[] kpi_valueset) {
		for (int i = 0; i < kpi_valueset.length; i++) {
			TblATO_KPIDETAIL tblato_kpidetail = new TblATO_KPIDETAIL();
			String KPI_VALUE = String.valueOf(kpi_valueset[i]);
			tblato_kpidetail.UNIT_ID = KBP_ID + "-" + String.valueOf(10 + i);
			tblato_kpidetail.KPI_ID = KPI_ID;
			tblato_kpidetail.KPI_VALUE = KPI_VALUE;
			tblato_kpidetail.CLL_TIME = new Date();
			KPISet.add(tblato_kpidetail);
		}
		return kpi_valueset;
	}

	public Vector addKPI(String KBP_ID, Vector KBPIndex, String KPI_ID,
			Vector kpi_valueset) {
		int iCount = kpi_valueset.size();
		if (KBPIndex.size() < iCount)
			iCount = KBPIndex.size();

		for (int i = 0; i < iCount; i++) {
			TblATO_KPIDETAIL tblato_kpidetail = new TblATO_KPIDETAIL();
			String KPI_VALUE = (String) kpi_valueset.elementAt(i);
			String index = (String) KBPIndex.elementAt(i);
			tblato_kpidetail.UNIT_ID = KBP_ID + "-" + index;
			tblato_kpidetail.KPI_ID = KPI_ID;
			tblato_kpidetail.KPI_VALUE = KPI_VALUE;
			tblato_kpidetail.CLL_TIME = new Date();
			KPISet.add(tblato_kpidetail);
		}
		return kpi_valueset;
	}

	public int sumKPI(String[] KPI_VALUE) {
		int i = 0;
		return sumKPI(KPI_VALUE, i);
	}

	public int sumKPI(Vector KPI_VALUE) {
		int i = 0;
		return sumKPI(KPI_VALUE, i);
	}

	public int sumKPI(String[] KPI_VALUE, int value) {
		if (KPI_VALUE == null)
			return 0;
		value = 0;
		for (int i = 0; i < KPI_VALUE.length; i++) {
			value = value + Integer.parseInt(KPI_VALUE[i]);
		}
		return value;
	}

	public int sumKPI(Vector KPI_VALUE, int value) {
		if (KPI_VALUE == null)
			return 0;
		value = 0;
		for (int i = 0; i < KPI_VALUE.size(); i++) {
			value = value + Integer.parseInt((String) KPI_VALUE.elementAt(i));
		}
		return value;
	}

	public float sumKPI(String[] KPI_VALUE, float value) {
		if (KPI_VALUE == null)
			return 0;
		value = 0;
		for (int i = 0; i < KPI_VALUE.length; i++) {
			value = value + Float.parseFloat(KPI_VALUE[i]);
		}
		return value;
	}

	public float sumKPI(Vector KPI_VALUE, float value) {
		if (KPI_VALUE == null)
			return 0F;
		value = 0F;
		for (int i = 0; i < KPI_VALUE.size(); i++) {
			value = value + Float.parseFloat((String) KPI_VALUE.elementAt(i));
		}
		return value;
	}

	public double sumKPI(String[] KPI_VALUE, double value) {
		if (KPI_VALUE == null)
			return 0;
		value = 0;
		for (int i = 0; i < KPI_VALUE.length; i++) {
			value = value + Double.parseDouble(KPI_VALUE[i]);
		}
		return value;
	}

	public double sumKPI(Vector KPI_VALUE, double value) {
		if (KPI_VALUE == null)
			return 0.0;
		value = 0.0;
		for (int i = 0; i < KPI_VALUE.size(); i++) {
			value = value + Double.parseDouble((String) KPI_VALUE.elementAt(i));
		}
		return value;
	}

	public String split(String str, int pos) {
		StringTokenizer st = new StringTokenizer(str);
		Vector<String> values = new Vector<String>();
		while (st.hasMoreTokens()) {
			values.add(st.nextToken());
		}
		if (pos >= 0 && pos < values.size()) {
			return (String)values.elementAt(pos);
		}
		return "";
	}
    public ArrayList split(String str, String sp) {
        int ip = 0;
        ArrayList al = new ArrayList();
        ip = str.indexOf(sp);
        if (ip != -1) {
            al.add(str.substring(0, ip));
            str = str.substring(ip + sp.length());
            if (str.length() != 0) {
                al.addAll(split(str, sp));
            }
        } else {
            al.add(str);
        }
        return al;
    }

    /**
     * 释放连接
     */
    public void release() {
        if (tt != null){
            tt.close();
            tt=null;
        }
        System.gc();
    }

    public String[] split2Array(String str, String sp) {
        ArrayList al = split(str, sp);

        Object[] os = al.toArray();
        String[] ss = new String[os.length];
        for (int i = 0; i < os.length; i++) {
            ss[i] = (String) os[i];
        }
        return ss;
    }

    public static void main(String[] args){
		String s="0.00 S  117  2216 root      Mar 12  /usr/sbin/nfsd 16";
		CollBase base = new CollBase();
		System.out.println(base.split(s, 7));
	}

}