KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > hajdbc > balancer > SimpleBalancer


1 /*
2  * HA-JDBC: High-Availability JDBC
3  * Copyright (c) 2004-2006 Paul Ferraro
4  *
5  * This library is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU Lesser General Public License as published by the
7  * Free Software Foundation; either version 2.1 of the License, or (at your
8  * option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful, but WITHOUT
11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
13  * for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with this library; if not, write to the Free Software Foundation,
17  * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18  *
19  * Contact: ferraro@users.sourceforge.net
20  */

21 package net.sf.hajdbc.balancer;
22
23 import java.util.Collection JavaDoc;
24 import java.util.Collections JavaDoc;
25 import java.util.Comparator JavaDoc;
26 import java.util.LinkedList JavaDoc;
27
28 import net.sf.hajdbc.Database;
29
30 /**
31  * @author Paul Ferraro
32  * @since 1.0
33  */

34 public class SimpleBalancer extends AbstractBalancer
35 {
36     private static Comparator JavaDoc<Database> comparator = new Comparator JavaDoc<Database>()
37     {
38         /**
39          * @see java.util.Comparator#compare(T, T)
40          */

41         public int compare(Database database1, Database database2)
42         {
43             return database2.getWeight() - database1.getWeight();
44         }
45     };
46     
47     private LinkedList JavaDoc<Database> databaseQueue = new LinkedList JavaDoc<Database>();
48
49     /**
50      * @see net.sf.hajdbc.balancer.AbstractBalancer#getDatabases()
51      */

52     @Override JavaDoc
53     protected Collection JavaDoc<Database> getDatabases()
54     {
55         return this.databaseQueue;
56     }
57     
58     /**
59      * @see net.sf.hajdbc.Balancer#first()
60      */

61     @Override JavaDoc
62     public synchronized Database first()
63     {
64         return this.databaseQueue.element();
65     }
66     
67     /**
68      * @see net.sf.hajdbc.Balancer#next()
69      */

70     public synchronized Database next()
71     {
72         return this.first();
73     }
74
75     /**
76      * @see net.sf.hajdbc.balancer.AbstractBalancer#add(net.sf.hajdbc.Database)
77      */

78     @Override JavaDoc
79     public synchronized boolean add(Database database)
80     {
81         boolean added = super.add(database);
82         
83         if (added)
84         {
85             Collections.sort(this.databaseQueue, comparator);
86         }
87         
88         return added;
89     }
90 }
91
Popular Tags