content: package org.apache.solr.common.params;
  
  import java.util.ArrayList;
  import java.util.HashMap;
  import java.util.List;
  
  public class MergeShards {
  	
  //	public static String[] get(HashMap<String,ArrayList<String>> map,int numshards)
  //	{
  //		HashMap<Integer, StringBuffer> groups=new HashMap<Integer, StringBuffer>();
  //		int index=0;
  //		for(Entry<String,ArrayList<String>> e:map.entrySet())
  //		{
  //			ArrayList<String> lst=e.getValue();
  //		  	 String[] sards=lst.toArray(new String[lst.size()]);
  //		  	for(int i=0;i<sards.length;i++)
  //			  {
  //				  Integer g=index%numshards;
  //				  StringBuffer group=groups.get(g);
  //				  if(group==null)
  //				  {
  //					  group=new StringBuffer();
  //					  group.append("issubshard");
  //					  groups.put(g, group);
  //				  }
  //				  group.append(",");
  //				  group.append(sards[i]);
  //				  index++;
  //			  }
  //		}
  //		
  //		  String[] ssubshards=new String[groups.size()];
  //		  index=0;
  //		  for(StringBuffer s:groups.values())
  //		  {
  //			  ssubshards[index]=s.toString();
  //			  index++;
  //		  }
  //		  return ssubshards;
  //	}
  	
  	public static String[] split(List<String> lst,int numshards)
  	{
  		HashMap<Integer, StringBuffer> groups=new HashMap<Integer, StringBuffer>();
  		int index=0;
  
  	  	 String[] sards=lst.toArray(new String[lst.size()]);
  	  	for(int i=0;i<sards.length;i++)
  		  {
  			  Integer g=index%numshards;
  			  StringBuffer group=groups.get(g);
  			  if(group==null)
  			  {
  				  group=new StringBuffer();
  				  groups.put(g, group);
  				  group.append(sards[i]);
  			  }else{
  				  group.append(",");
  				  group.append(sards[i]);
  			  }
  			 
  			  index++;
  		  }
  	
  		
  		  String[] ssubshards=new String[groups.size()];
  		  index=0;
  		  for(StringBuffer s:groups.values())
  		  {
  			  ssubshards[index]=s.toString();
  			  index++;
  		  }
  		  return ssubshards;
  	}
  	
  //	/**
  //	 * 按照host:port 解析shards
  //	 */
  //	public static HashMap<String,ArrayList<String>> getByHostport(List<String> lst)
  //	{
  //		HashMap<String,ArrayList<String>> hostposts=new HashMap<String, ArrayList<String>>();
  //		for(String shard:lst)
  //		{
  //	    	String[] shardparams=shard.split("@");
  //	    	String hostport=shardparams[0];
  //	    	ArrayList<String> l=hostposts.get(hostport);
  //	    	if(l==null)
  //	    	{
  //	    		l=new ArrayList<String>();
  //	    		hostposts.put(hostport, l);
  //	    	}
  //	    	l.add(shard);
  //		}
  //	  return hostposts;
  //	}
  	
  	/**
  	 * 按照host解析shards
  	 */
  	public static HashMap<String,ArrayList<String>> getByHost(List<String> lst)
  	{
  		HashMap<String,ArrayList<String>> hostposts=new HashMap<String, ArrayList<String>>();
  		for(String shard:lst)
  		{
  	    	String[] shardparams=shard.split("@");
  	    	String hostport=shardparams[0];
  	    	String host=hostport.split(":")[0];
  	    	ArrayList<String> l=hostposts.get(host);
  	    	if(l==null)
  	    	{
  	    		l=new ArrayList<String>();
  	    		hostposts.put(host, l);
  	    	}
  	    	l.add(shard);
  		}
  	  return hostposts;
  	}
  
  }
  