1 19 20 package org.polepos.teams.jdo; 21 22 import java.io.*; 23 import java.util.*; 24 25 26 import javax.jdo.*; 27 import javax.jdo.PersistenceManager; 28 29 import org.polepos.framework.*; 30 import org.polepos.teams.jdbc.*; 31 32 import com.versant.core.jdo.tools.ant.*; 33 34 37 public class JdoCar extends Car { 38 39 private PersistenceManagerFactory mFactory; 40 41 private final String mDbName; 42 private final String mName; 43 44 JdoCar(String name, String dbName) throws CarMotorFailureException { 45 46 mName = name; 47 mDbName = dbName; 48 49 mWebsite = Jdo.settings().getWebsite(name); 50 mDescription = Jdo.settings().getDescription(name); 51 52 initialize(); 53 54 } 55 56 private boolean isSQL() { 57 return mDbName != null; 58 } 59 60 private void versantCreateSchema(){ 61 try{ 62 CreateJdbcSchemaTask t = new CreateJdbcSchemaTask(); 63 t.setDroptables("true"); 64 t.setCreatetables("true"); 65 66 t.setConfig("versant." + mDbName + ".properties"); 70 71 t.execute(); 72 73 }catch(Exception e){ 74 e.printStackTrace(); 75 } 76 } 77 78 79 private void initialize() { 80 81 if(mName.equals("voa")){ 82 versantCreateSchema(); 83 } 84 85 86 87 Properties properties = new Properties(); 88 89 properties.setProperty("javax.jdo.PersistenceManagerFactoryClass", Jdo.settings() 90 .getFactory(mName)); 91 92 properties.setProperty("javax.jdo.option.NontransactionalRead", "true"); 93 94 properties.setProperty("versant.metadata.0", "org/polepos/teams/jdo/data/package.jdo"); 95 properties.setProperty("versant.hyperdrive", "false"); 97 98 properties.setProperty("versant.metricSnapshotIntervalMs", "1000000000"); 100 101 properties.setProperty("versant.logging.logEventsToSysOut", "false"); 102 103 if (isSQL()) { 104 try { 105 Class.forName(Jdbc.settings().getDriverClass(mDbName)).newInstance(); 106 } catch (Exception ex) { 107 ex.printStackTrace(); 108 } 109 110 properties.setProperty("javax.jdo.option.ConnectionDriverName", Jdbc.settings() 111 .getDriverClass(mDbName)); 112 properties.setProperty("javax.jdo.option.ConnectionURL", Jdbc.settings().getConnectUrl( 113 mDbName)); 114 String user = Jdbc.settings().getUsername(mDbName); 115 if (user != null) { 116 properties.setProperty("javax.jdo.option.ConnectionUserName", user); 117 } 118 119 String password = Jdbc.settings().getPassword(mDbName); 120 if (password != null) { 121 properties.setProperty("javax.jdo.option.ConnectionPassword", password); 122 } 123 } else { 124 125 properties.setProperty("javax.jdo.option.ConnectionURL", Jdo.settings().getURL(mName)); 126 127 String user = Jdo.settings().getUsername(mName); 128 if (user != null) { 129 properties.setProperty("javax.jdo.option.ConnectionUserName", user); 130 } 131 132 String password = Jdo.settings().getPassword(mName); 133 if (password != null) { 134 properties.setProperty("javax.jdo.option.ConnectionPassword", password); 135 } 136 137 properties.setProperty("javax.jdo.option.ConnectionUserName", "login"); 138 properties.setProperty("javax.jdo.option.ConnectionPassword", "password"); 139 } 140 141 properties.setProperty("org.jpox.autoCreateSchema", "true"); 142 properties.setProperty("org.jpox.validateTables", "false"); 143 properties.setProperty("org.jpox.validateConstraints", "false"); 144 145 147 mFactory = JDOHelper.getPersistenceManagerFactory(properties, JDOHelper.class 148 .getClassLoader()); 149 150 } 152 153 156 public PersistenceManager getPersistenceManager() { 157 return mFactory.getPersistenceManager(); 158 } 159 160 163 private void deleteObjectDBFile() { 164 String path = Jdo.settings().getConnectUrl(); 165 if (!path.startsWith("objectdb://")) { 167 new File(path).delete(); 168 } 169 } 170 171 @Override 172 public String name() { 173 174 String name = mName; 175 176 String publicName=Jdo.settings().getName(name); 177 if(publicName != null && publicName.length() > 1){ 178 name = publicName; 179 } 180 181 if (isSQL()) { 182 return name + "/" + mDbName; 183 } 184 return name; 185 } 186 187 } 188 | Popular Tags |