package com.nms.server.thread.errorinfo;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.Callable;

import org.apache.log4j.Logger;

import com.nms.server.bean.NmsErrorInfo;
import com.nms.server.common.Constants;
import com.nms.server.dao.CommonDao;
import com.nms.server.service.CommonService;

/**
 * CSV解析线程
 * 
 * @author ZGGG3
 * 
 */
public class ErrorInfoResoveThread implements Callable<Object> {
	Logger logger = Logger.getLogger(ErrorInfoResoveThread.class);
	volatile boolean stop = false;//线程是否被取消标志
	private String name; // 自定义Thread Name
	private LinkedList<NmsErrorInfo> dsbList;
	
	public ErrorInfoResoveThread(String name,LinkedList<NmsErrorInfo> dsbList) {
		this.name = name;
		this.dsbList = dsbList;
	}

	/*
	 * 线程操作
	 * 
	 * 依次解析urlList中仍存在的Files
	 * 
	 * 实现了依次解析Files，由于后期实现多线程解析操作
	 */
	public Object call() {
		// 为当前线程命名 ，用与开发阶段友好输出。
		Thread.currentThread().setName(name);
		logger.debug(" 本次解析错误信息数 "+(dsbList==null?"null":dsbList.size()));
		
		CommonDao dao = null;
		try {
			dao = new CommonDao();
			CommonService service = new CommonService(dao);
			 
			//-- 空数据集合 结束操作
			if(dsbList == null || dsbList.size() == 0 ){
				return null;
			}
			
			long sTime = System.currentTimeMillis();
			logger.debug("错误信息数据 " + (dsbList.size())+ "条，保存开始");
		
			//-- 执行数据解析
			String id = service.resoveErrorInfo(dsbList);//入库到表detection_info和detection_info_new中。直接用返回的id，若是systeminfo，则入库第一行之后的行
			dsbList.clear();

		} catch (Exception e) {
			
			logger.error("Running exception",e);
		}finally{
			
			if(dao!=null){
				dao.close();
				dao=null;
			}
			logger.debug("数据清理 解析完成");
		}
		
		return null;
	}
	
//	public static void main(String[] args) {
//		try {
//			LinkedList<NmsErrorInfo> neiList = new LinkedList<NmsErrorInfo>();
//			neiList.add(new NmsErrorInfo(Constants.ERROR_CODE_CREATE_SOCKET,new Date(),Common.getLocalIp(),"10.0.6.113",Constants.ERROR_INFO_SATAE_ERROR,"描述"));
//			Common.service.submit(new ErrorInfoResoveThread("xx",neiList));
//		}catch(Exception e) {
//			e.printStackTrace();
//		}
//	}
}
