1 package in.co.daffodil.db.rmi; 2 3 import java.util.Hashtable ; 4 import javax.naming.*; 5 import javax.naming.spi.ObjectFactory ; 6 import com.daffodilwoods.database.resource.*; 7 import in.co.daffodil.db.jdbc.*; 8 9 15 public class DataSourceFactory 16 implements ObjectFactory { 17 18 private final String rmiDataSourceClassName = 19 "in.co.daffodil.db.rmi.RmiDaffodilDBDataSource"; 20 21 private final String embeddedDataSourceClassName = 22 "in.co.daffodil.db.jdbc.DBDataSource"; 23 24 private final String [] rmiMandatoryProperties = new String [] { 25 "user", "password", "databaseName", "hostName", "portNumber"}; 26 27 private final String [] embeddedMandatoryProperties = new String [] { 28 "user", "password", "databaseName", "databaseHome"}; 29 30 public DataSourceFactory() {} 31 32 public Object getObjectInstance(Object referenceObj, Name name, 33 Context context, Hashtable environment) throws 34 Exception { 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 ) reference.get("user").getContent()); 47 ds.setPassword( (String ) reference.get("password").getContent()); 48 ds.setDatabaseName( (String ) reference.get("databaseName").getContent()); 49 ds.setHostName( (String ) reference.get("hostName").getContent()); 50 ds.setPortNumber( (String ) reference.get("portNumber").getContent()); 51 52 tempRefAddr = reference.get("createDatabase"); 53 ds.setCreateDatabase(tempRefAddr != null ? 54 ( (String ) tempRefAddr.getContent()) : "false"); 55 tempRefAddr = reference.get("schema"); 56 ds.setDefaultSchema(tempRefAddr != null ? 57 ( (String ) 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 ) reference.get("user").getContent()); 68 ds.setPassword( (String ) reference.get("password").getContent()); 69 ds.setDatabaseName( (String ) reference.get("databaseName").getContent()); 70 ds.setDatabaseHome( (String ) reference.get("databaseHome").getContent()); 71 72 tempRefAddr = reference.get("createDatabase"); 73 ds.setCreateDatabase(tempRefAddr != null ? 74 ( (String ) tempRefAddr.getContent()) : "false"); 75 tempRefAddr = reference.get("schema"); 76 ds.setDefaultSchema(tempRefAddr != null ? 77 ( (String ) tempRefAddr.getContent()) : "users"); 78 return ds; 79 80 } 81 return null; 82 83 } 84 85 92 private void checkRequiredProperties(Reference ref, String [] 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 [] {specProp[i]}); 97 98 } 99 } 100 } 101 | Popular Tags |