KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > in > co > daffodil > db > rmi > DataSourceFactory


1 package in.co.daffodil.db.rmi;
2
3 import java.util.Hashtable JavaDoc;
4 import javax.naming.*;
5 import javax.naming.spi.ObjectFactory JavaDoc;
6 import com.daffodilwoods.database.resource.*;
7 import in.co.daffodil.db.jdbc.*;
8
9 /**
10  * <B>DataSourceFactory</b> class represent a factory to get RmiDataSource /Embedded datasource object
11  * with specified properties.
12  * <B> Maintenance : 6/1/2005
13  * @author Manoj Kr. Sheoran
14  * */

15 public class DataSourceFactory
16     implements ObjectFactory JavaDoc {
17
18   private final String JavaDoc rmiDataSourceClassName =
19       "in.co.daffodil.db.rmi.RmiDaffodilDBDataSource";
20
21   private final String JavaDoc embeddedDataSourceClassName =
22       "in.co.daffodil.db.jdbc.DBDataSource";
23
24   private final String JavaDoc[] rmiMandatoryProperties = new String JavaDoc[] {
25       "user", "password", "databaseName", "hostName", "portNumber"};
26
27   private final String JavaDoc[] embeddedMandatoryProperties = new String JavaDoc[] {
28       "user", "password", "databaseName", "databaseHome"};
29
30   public DataSourceFactory() {}
31
32   public Object JavaDoc getObjectInstance(Object JavaDoc referenceObj, Name name,
33                                   Context context, Hashtable JavaDoc environment) throws
34       Exception JavaDoc {
35     RefAddr tempRefAddr = null;
36     Reference reference = (Reference) referenceObj;
37     if (reference == null)
38       return null;
39
40     if (reference.getClassName().equalsIgnoreCase(rmiDataSourceClassName)) {
41
42       checkRequiredProperties(reference, rmiMandatoryProperties);
43
44       RmiDaffodilDBDataSource ds = new RmiDaffodilDBDataSource();
45
46       ds.setUser( (String JavaDoc) reference.get("user").getContent());
47       ds.setPassword( (String JavaDoc) reference.get("password").getContent());
48       ds.setDatabaseName( (String JavaDoc) reference.get("databaseName").getContent());
49       ds.setHostName( (String JavaDoc) reference.get("hostName").getContent());
50       ds.setPortNumber( (String JavaDoc) reference.get("portNumber").getContent());
51
52       tempRefAddr = reference.get("createDatabase");
53       ds.setCreateDatabase(tempRefAddr != null ?
54                            ( (String JavaDoc) tempRefAddr.getContent()) : "false");
55       tempRefAddr = reference.get("schema");
56       ds.setDefaultSchema(tempRefAddr != null ?
57                           ( (String JavaDoc) tempRefAddr.getContent()) : "users");
58
59       return ds;
60     }
61     else if (reference.getClassName().equalsIgnoreCase(
62         embeddedDataSourceClassName)) {
63       checkRequiredProperties(reference, embeddedMandatoryProperties);
64
65       DBDataSource ds = new DBDataSource();
66
67       ds.setUser( (String JavaDoc) reference.get("user").getContent());
68       ds.setPassword( (String JavaDoc) reference.get("password").getContent());
69       ds.setDatabaseName( (String JavaDoc) reference.get("databaseName").getContent());
70       ds.setDatabaseHome( (String JavaDoc) reference.get("databaseHome").getContent());
71
72       tempRefAddr = reference.get("createDatabase");
73       ds.setCreateDatabase(tempRefAddr != null ?
74                            ( (String JavaDoc) tempRefAddr.getContent()) : "false");
75       tempRefAddr = reference.get("schema");
76       ds.setDefaultSchema(tempRefAddr != null ?
77                           ( (String JavaDoc) tempRefAddr.getContent()) : "users");
78       return ds;
79
80     }
81     return null;
82
83   }
84
85   /** This method checks required property in Reference object.
86    *
87    * @param ref : Naming Reference Object
88    * @param specProp : Required properties that much be pre-binded in reference object.
89    * @author : Manoj Kr.
90    *
91    */

92   private void checkRequiredProperties(Reference ref, String JavaDoc[] specProp) throws
93       DException {
94     for (int i = 0; i < specProp.length; i++) {
95       if (ref.get(specProp[i]) == null)
96         throw new DException("DSE8200", new String JavaDoc[] {specProp[i]});
97
98     }
99   }
100 }
101
Popular Tags