content: package com.taobao.taokeeper.monitor.core.task.runable;
  
  import java.util.List;
  
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  import org.springframework.web.context.ContextLoader;
  import org.springframework.web.context.WebApplicationContext;
  
  import com.taobao.taokeeper.common.GlobalInstance;
  import com.taobao.taokeeper.dao.ZooKeeperClusterDAO;
  import com.taobao.taokeeper.model.ZooKeeperCluster;
  import common.toolkit.java.exception.DaoException;
  
  /**
   * Description: Dump zooKeeper cluster config info from database.
   * @author nileader / nileader@gmail.com
   * @Date Feb 16, 2012
   */
  public class ZKClusterConfigDumper implements Runnable {
  
  	private static final Logger LOG = LoggerFactory.getLogger( ZKClusterConfigDumper.class );
  
  	@Override
  	public void run() {
  		try {
  			dumpZooKeeperClusterMapToMemory();
  		} catch ( DaoException daoException ) {
  			LOG.error( "Error when dump zookeeper cluster config info to memeory: " + daoException.getMessage() );
  			daoException.printStackTrace();
  		} catch ( Throwable e ) {
  			LOG.error( "Error when dump zookeeper cluster config info to memeory: " + e.getMessage() );
  			e.printStackTrace();
  		}
  	}
  
  	/**
  	 * Dump zooKeeper cluster config info from database
  	 */
  	private boolean dumpZooKeeperClusterMapToMemory() throws DaoException {
  		WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
  		ZooKeeperClusterDAO zooKeeperClusterDAO = ( ZooKeeperClusterDAO ) wac.getBean( "zooKeeperClusterDAO" );
  		List< ZooKeeperCluster > zookeeperClusterSet = zooKeeperClusterDAO.getAllDetailZooKeeperCluster();
  		if ( null == zookeeperClusterSet || zookeeperClusterSet.isEmpty() ) {
  			LOG.warn( "No zookeeper cluster" );
  		} else {
  			// First clean up catch.
  			GlobalInstance.clearZooKeeperCluster();
  			
  			for ( ZooKeeperCluster zooKeeperCluster : zookeeperClusterSet ) { 
  				GlobalInstance.putZooKeeperCluster( zooKeeperCluster.getClusterId(), zooKeeperCluster );
  			}
  			LOG.info( "Finsh dump all cluster info from db: " + GlobalInstance.getAllZooKeeperCluster() );
  		}
  		return true;
  	}
  
  }
  