1 28 package net.sf.jguard.ext.database; 29 30 import java.io.File ; 31 import java.io.FileInputStream ; 32 import java.io.FileNotFoundException ; 33 import java.io.IOException ; 34 import java.net.URI ; 35 import java.net.URISyntaxException ; 36 import java.net.URL ; 37 import java.util.HashMap ; 38 import java.util.Map ; 39 import java.util.Properties ; 40 41 import junit.framework.TestCase; 42 import net.sf.jguard.core.CoreConstants; 43 import net.sf.jguard.core.util.FileUtils; 44 import net.sf.jguard.ext.SecurityConstants; 45 46 public abstract class DatabaseTestCase extends TestCase { 47 private static Properties properties = null; 48 private static Map options = null; 49 private static ConnectionFactory connectionFactory = null; 50 private static String propertiesURIPath = null; 51 protected String database = null; 52 53 public void setUp(){ 54 55 try { 56 super.setUp(); 57 } catch (Exception e) { 58 System.out.println(e.getMessage()); 59 } 60 database = System.getProperty("database"); 61 System.out.println("'database' system property="+database); 62 Properties databaseProperties = null; 63 if(database==null||database.equals("")){ 64 database = "hsqldb"; 65 System.setProperty("database", "hsqldb"); 66 } 67 options = new HashMap (); 68 databaseProperties = new Properties (); 69 String databasePropertiesLocation = null; 70 if(database.equals("JNDI")){ 71 options.put("JNDI","java:/comp/env.jguard"); 72 databasePropertiesLocation = File.separator+"database"+File.separator+"hsqldb.properties"; 73 options.put(SecurityConstants.INITIAL_CONTEXT_FACTORY,"net.sf.jguard.ext.database.MockInitialContextFactory"); 74 75 }else{ 76 databasePropertiesLocation = "/database/"+database+".properties"; 77 } 78 79 loadProperties(databaseProperties, databasePropertiesLocation); 80 options.put(CoreConstants.APPLICATION_NAME,"jGuardExample"); 81 options.put(SecurityConstants.DATABASE_DRIVER,databaseProperties.get(SecurityConstants.DATABASE_DRIVER)); 82 options.put(SecurityConstants.DATABASE_DRIVER_URL,databaseProperties.get(SecurityConstants.DATABASE_DRIVER_URL)); 83 options.put(SecurityConstants.DATABASE_DRIVER_LOGIN,databaseProperties.get(SecurityConstants.DATABASE_DRIVER_LOGIN)); 84 options.put(SecurityConstants.DATABASE_DRIVER_PASSWORD,databaseProperties.get(SecurityConstants.DATABASE_DRIVER_PASSWORD)); 85 86 setConnectionFactory(options); 87 } 88 89 private void loadProperties(Properties properties, String propertiesLocation) { 90 try { 91 URL url = getClass().getResource(propertiesLocation); 92 if(url == null){ 93 throw new IllegalArgumentException (propertiesLocation +" not found "); 94 } 95 URI uri = null; 96 try { 97 uri = new URI (url.toString()); 98 propertiesURIPath = uri.toString(); 99 } catch (URISyntaxException e) { 100 TestCase.fail(e.getMessage()); 101 e.printStackTrace(); 102 } 103 File f = FileUtils.getFile(uri); 104 properties.load(new FileInputStream (f)); 105 } catch (FileNotFoundException e) { 106 TestCase.fail(" propertiesLocation is not found "); 107 e.printStackTrace(); 108 } catch (IOException e) { 109 TestCase.fail(" ioexception "); 110 e.printStackTrace(); 111 } 112 } 113 114 public static void setConnectionFactory(Map options){ 115 connectionFactory = new ConnectionFactory(options); 116 } 117 118 protected void setProperties(String propertiesLocation) { 119 properties = new Properties (); 120 loadProperties(properties,propertiesLocation); 121 } 122 123 124 125 public static Properties getProperties() { 126 return properties; 127 } 128 129 public void setProperties(Properties props) { 130 properties = props; 131 } 132 133 public static ConnectionFactory getConnectionFactory() { 134 if(connectionFactory==null){ 135 setConnectionFactory(options); 136 } 137 return connectionFactory; 138 } 139 140 public static void setConnectionFactory(ConnectionFactory connectionFactory) { 141 DatabaseTestCase.connectionFactory = connectionFactory; 142 } 143 144 public static Map getOptions() { 145 return options; 146 } 147 148 public static void setOptions(Map options) { 149 DatabaseTestCase.options = options; 150 } 151 152 public static String getPropertiesURIPath() { 153 return propertiesURIPath; 154 } 155 156 public static void setPropertiesURIPath(String propertiesURL) { 157 DatabaseTestCase.propertiesURIPath = propertiesURL; 158 } 159 160 161 162 } 163 | Popular Tags |