| 1 21 package net.sf.hajdbc.balancer; 22 23 import java.util.HashMap ; 24 import java.util.Map ; 25 26 import net.sf.hajdbc.Balancer; 27 import net.sf.hajdbc.Messages; 28 29 33 public final class BalancerFactory 34 { 35 private static Map <String , Class <? extends Balancer>> balancerMap = new HashMap <String , Class <? extends Balancer>>(); 36 37 static 38 { 39 balancerMap.put("simple", SimpleBalancer.class); 40 balancerMap.put("random", RandomBalancer.class); 41 balancerMap.put("round-robin", RoundRobinBalancer.class); 42 balancerMap.put("load", LoadBalancer.class); 43 } 44 45 51 public static Balancer deserialize(String id) throws Exception  52 { 53 Class <? extends Balancer> balancerClass = balancerMap.get(id); 54 55 if (balancerClass == null) 56 { 57 throw new IllegalArgumentException (Messages.getMessage(Messages.INVALID_BALANCER, id)); 58 } 59 60 return balancerClass.newInstance(); 61 } 62 63 68 public static String serialize(Balancer balancer) 69 { 70 for (Map.Entry <String , Class <? extends Balancer>> balancerMapEntry: balancerMap.entrySet()) 71 { 72 if (balancerMapEntry.getValue().isInstance(balancer)) 73 { 74 return balancerMapEntry.getKey(); 75 } 76 } 77 78 throw new IllegalArgumentException (Messages.getMessage(Messages.INVALID_BALANCER, balancer.getClass())); 79 } 80 81 private BalancerFactory() 82 { 83 } 85 } 86 | Popular Tags |