DirectivePersistenceThread.java 1.29 KB
package com.bsth.vehicle.directive;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.bsth.vehicle.directive.buffer.DirectiveBuffer;
import com.bsth.vehicle.directive.entity.Directive;
import com.bsth.vehicle.directive.repository.DirectiveRepository;

/**
 * 
 * @ClassName: DirectivePersistenceThread 
 * @Description: TODO(调度指令定时入库) 
 * @author PanZhao
 * @date 2016年6月8日 上午10:42:32 
 *
 */
@Component
public class DirectivePersistenceThread extends Thread{

	@Autowired
	DirectiveRepository directiveRepository;
	
	Logger logger = LoggerFactory.getLogger(this.getClass());
	
	@Override
	public void run() {
		LinkedList<Directive> list = DirectiveBuffer.transientList;
		
		List<Directive> persList = new ArrayList<>();
		
		Directive directive;
		for(int i = 0; i < 1000; i ++){
			directive = list.poll();
			
			if(null == directive)
				break;
			
			persList.add(directive);
		}
		
		if(persList.size() > 0){
			try{
				directiveRepository.save(persList);
			}catch(Exception e){
				logger.error("", e);
			}
		}
	}
}