package com.fourinone;
import java.util.ArrayList;
public class ParkGroup{
private ObjValue groups = new ObjValue();
//key--->server(bk)
public ParkGroup(ObjValue groups){
//initGroups();//input Groups
this.groups = groups;
}
private void initGroups()
{
ObjValue group1 = new ObjValue();
Long t1 = new Long(ConfigContext.getDateLong("2010-01-01"));
group1.setObj("localhost:1888,localhost:1889",t1);
group1.setObj("localhost:2000,localhost:2001",t1);
Long t2 = new Long(ConfigContext.getDateLong("2010-05-01"));//2012
group1.setObj("localhost:2002,localhost:2003",t2);
Long t3 = new Long(ConfigContext.getDateLong("2012-05-01"));//2012
group1.setObj("localhost:2004,localhost:2005",t3);
group1.setObj("localhost:2006,localhost:2007",t3);
/*group1.setObj("localhost:2008,localhost:2009",t2);
group1.setObj("localhost:2010,localhost:2011",t2);
group1.setObj("localhost:2012,localhost:2013",t2);
group1.setObj("localhost:1890,localhost:1891",t2);
group1.setObj("localhost:1892,localhost:1893",t2);*/
groups.put(group1, t1);
/*
ObjValue group2 = new ObjValue();
Long t3 = new Long(getDateLong("2010-08-01"));
group2.setObj("localhost:2000,localhost:2001",t3);
group2.setObj("localhost:2002,localhost:2003",t3);
group2.setObj("localhost:2004,localhost:2005",t3);
groups.put(group2, t3);
*/
}
/*
private int getTimeIndex(ObjValue ov, Long kt)
{
ArrayList ls = ov.getObjValues();
for(int i=0;i<ls.size();i++)
if(kt<(Long)ls.get(i))
break;
return i;
}
*/
public static String getKeyId(){
return Long.toHexString(System.currentTimeMillis()).toUpperCase()+"-"+Long.toHexString(System.nanoTime()).toUpperCase();
}
/*public String parseKeyId(String keyid)
{
String[] keyidarr = keyid.split("-");
return Long.decode("0x"+keyidarr[0])+"-"+Long.decode("0x"+keyidarr[1]);
}*/
public String[][] getServers(String keyId){
String[] keyidarr = keyId.split("-");
Long kt = Long.decode("0x"+keyidarr[0]);
LogUtil.fine("[getServers]", "[kt]", kt);
ArrayList gpskeys = groups.getObjNames();
ObjValue keygroup = null;
for(int i=0;i<gpskeys.size();i++){
if(kt>(Long)groups.get(gpskeys.get(i)))
keygroup = (ObjValue)gpskeys.get(i);
}
LogUtil.fine("[getServers]", "[keygroup]", keygroup);
ArrayList servers = keygroup.getObjNames();
int j=0;
for(;j<servers.size();j++){
if(kt<(Long)keygroup.get(servers.get(j)))
break;
}
LogUtil.fine("[getServers]", "[j]", "j:"+j+",kt%j:"+kt%j);
String serverStr = (String)servers.get((int)(kt%j));
return ConfigContext.getServerFromStr(serverStr);
}
public static void main(String[] args){
/*ParkGroup pg = new ParkGroup();
String kid = ParkGroup.getKeyId();
System.out.println(kid);
System.out.println(pg.getServers(kid)[0][1]);*/
//
//System.out.println(groups.get(group2));
//ObjValue<>
}
}