// $Id: PoolCellQueryContainer.java,v 1.1 2006-06-05 08:51:27 patrick Exp $Cg package diskCacheV111.services.web; import com.google.common.collect.Ordering; import java.io.Serializable; import java.util.HashMap; import java.util.List; import java.util.Map; import diskCacheV111.pools.PoolCellInfo; import static com.google.common.base.Preconditions.checkNotNull; class PoolCellQueryInfo implements Serializable { private static final long serialVersionUID = 8645599090478465260L; private final PoolCellInfo _poolInfo; private final long _pingTime; private final long _arrivalTime; public PoolCellQueryInfo(PoolCellInfo poolInfo, long pingTime, long arrivalTime) { _poolInfo = checkNotNull(poolInfo); _pingTime = pingTime; _arrivalTime = arrivalTime; } public String toString() { return _poolInfo.toString(); } public PoolCellInfo getPoolCellInfo() { return _poolInfo; } public long getPingTime() { return _pingTime; } public boolean isOk() { return true; } } public class PoolCellQueryContainer implements Serializable { private static final long serialVersionUID = 1883299694718571158L; private final Map<String,PoolCellQueryInfo> _infoMap = new HashMap<>(); private Map<String,Map<String,Map<String,Object>>> _topology; public synchronized void put(String name, PoolCellQueryInfo info) { _infoMap.put(name, info); } public synchronized PoolCellQueryInfo getInfoByName(String name) { return _infoMap.get(name); } public synchronized void setTopology(Map<String,Map<String,Map<String,Object>>> topology) { _topology = topology; } public synchronized List<String> getPoolClasses() { return Ordering.natural().sortedCopy(_topology.keySet()); } public synchronized List<String> getPoolGroupSetByClassName(String className) { Map<String, Map<String, Object>> map = _topology.get(className); if (map == null) { return null; } return Ordering.natural().sortedCopy(map.keySet()); } public synchronized Map<String,Object> getPoolMap(String className, String groupName) { Map<String, Map<String, Object>> groupMap = _topology.get(className); if (groupMap == null) { return null; } return groupMap.get(groupName); } public synchronized String toString() { StringBuilder sb = new StringBuilder(); for (Map.Entry<String, Map<String, Map<String, Object>>> classes: _topology.entrySet()) { String className = classes.getKey(); sb.append(" ").append(className).append("\n"); for (Map.Entry<String, Map<String, Object>> groups: classes.getValue().entrySet()){ String groupName = groups.getKey(); sb.append(" ").append(groupName).append("\n"); for (Map.Entry<String, Object> pools: groups.getValue().entrySet()) { String poolName = pools.getKey(); Object info = pools.getValue(); sb.append(" ").append(poolName) .append(info.toString()).append("\n"); } } } return sb.toString(); } }