content: package com.alipay.bluewhale.core.cluster;
  
  import java.io.Serializable;
  import java.net.UnknownHostException;
  import java.text.SimpleDateFormat;
  import java.util.Date;
  import java.util.HashMap;
  
  import com.alipay.bluewhale.core.work.Worker;
  
  
  public class SolrInfo implements Serializable{
  	public static class ShardCount implements Serializable{
  		private static final long serialVersionUID = 1L;
  		public Long cnt;
  		public ShardCount(Long cnt) {
  			super();
  			this.cnt = cnt;
  		}
  		
  		public boolean isTimeout()
  		{
  			Long nowtimes=(new Date()).getTime();
  			
  			return nowtimes-times>1000l*3600*6;
  
  		}
  		Long times=(new Date()).getTime();
  		@Override
  		public String toString() {
  			SimpleDateFormat fmt=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  			String yyyymmmddd=fmt.format(new Date(times));
  			return "{cnt:" + cnt + ", times:" + yyyymmmddd + "}<br>";
  		}
  	}
  	
      private static final long serialVersionUID = 1L;
      public String localip;
      public String localpath;
      public String hdfsPath;
      public String hdfsfolder;
      public Integer port;
      public Long times;
      public Long startTimes;
      public Long solrhbTimes;
      public ShardsState stat;
  
      public Integer workport;
      
      public String hostname;
  
      public HashMap<String,ShardCount> recorecount = new HashMap<String, ShardCount>();
      public HashMap<String,ShardCount> daycount = new HashMap<String, ShardCount>();
  
      public String memInfo=MemInfo.getInfo(1024*1024);
      public Boolean isMergeServer=false;
  //    public Boolean isRealTime=false;
      
      public String processId=pid();
     
      private static String pid()
      {
      	  String processName = java.lang.management.ManagementFactory.getRuntimeMXBean().getName();
      	   
            String processID = processName.substring(0,processName.indexOf('@'));
       
            return processID;
      }
      
      public  int replication;
      public  int replicationindex;
      public int taskIndex;
  
      public SolrInfo(int replication,int replicationindex,int taskIndex,boolean isRealTime, String localpath, String hdfsPath,
              String hdfsfolder, Integer port, ShardsState stat,HashMap<String,ShardCount> count,HashMap<String,ShardCount> daycount,Long starttimes,Long solrhbTimes,Boolean isMergeServer) throws UnknownHostException {
  	super();
  	this.taskIndex=taskIndex;
  	this.replication=replication;
  	this.replicationindex=replicationindex;
  	this.localip = java.net.InetAddress.getLocalHost().getHostAddress();;
  	this.localpath = localpath;
  	this.hdfsPath = hdfsPath;
  	this.hdfsfolder = hdfsfolder;
  	this.port = port;
  	this.times = System.currentTimeMillis();
  	this.stat=stat;
  	this.workport=Worker.getWorkPort();
  	this.recorecount=count;
  	this.daycount=daycount;
  	this.startTimes=starttimes;
  	this.hostname=String.valueOf(java.net.InetAddress.getLocalHost().getHostName());
  	this.solrhbTimes=solrhbTimes;
  	this.memInfo=MemInfo.getInfo(1024*1024);
  	this.isMergeServer=isMergeServer;
  //	this.isRealTime=isRealTime;
      }
      
      @Override
      public String toString() {
  	SimpleDateFormat fmt=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  	String yyyymmmddd=fmt.format(new Date(times));
  	String yyyymmmdddstart=fmt.format(new Date(startTimes));
  	String yyyymmmdddhb=fmt.format(new Date(solrhbTimes));
  	if(this.isMergeServer)
  	{
  		return this.isMergeServer+" "+this.replicationindex+"@"+this.replication+" ["+this.hostname +"][" + localip + ":"+port+ "]["+this.stat+"] " +" ["+memInfo+"] " +" ["+yyyymmmdddhb+ "][" + yyyymmmddd + "][" + yyyymmmdddstart + "]  "+this.workport  +"<hr>";
  	}
  	
  	
  	String recorecountStr="";
  	if(this.recorecount.size()>0)
  	{
  		recorecountStr=" <br> "+this.recorecount.toString();
  	}
  	String daycountStr="";
  	if(this.daycount.size()>0)
  	{
  		daycountStr=" <br> "+this.daycount.toString();
  	}
  	
  	
  	
  	
  	return this.isMergeServer+" "+this.replicationindex+"@"+this.replication+" ["+this.hostname +"][" + localip + ":"+port+ "]["+this.stat+"] " + hdfsfolder+" ["+memInfo+"] " +" ["+yyyymmmdddhb+ "][" + yyyymmmddd + "][" + yyyymmmdddstart + "]  "+this.workport +recorecountStr +daycountStr+"<br> [" + localpath+"]<br>["+this.hdfsPath+"]<hr>";
  	
      }
      
      
      public String toShortString() {
      	SimpleDateFormat fmt=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      	String yyyymmmddd=fmt.format(new Date(times));
      	String yyyymmmdddstart=fmt.format(new Date(startTimes));
      	String yyyymmmdddhb=fmt.format(new Date(solrhbTimes));
      	if(this.isMergeServer)
      	{
      		return this.isMergeServer+" "+this.replicationindex+"@"+this.replication+" ["+this.hostname +"][" + localip + ":"+port+ "]["+this.stat+"] " +" ["+memInfo+"] " +" ["+yyyymmmdddhb+ "][" + yyyymmmddd + "][" + yyyymmmdddstart + "]  "+this.workport  +"<hr>";
      	}
      	
      	    	
      	return this.isMergeServer+" "+this.replicationindex+"@"+this.replication+" ["+this.hostname +"][" + localip + ":"+port+ "]["+this.stat+"] " + hdfsfolder+" ["+memInfo+"] " +" ["+yyyymmmdddhb+ "][" + yyyymmmddd + "][" + yyyymmmdddstart + "]  "+this.workport  +"<br> [" + localpath+"]<br>["+this.hdfsPath+"]<hr>";
      	
          }
  
  }
  