1 25 26 package com.j2biz.blogunity.standalone; 27 28 import java.io.ByteArrayOutputStream ; 29 import java.sql.Connection ; 30 import java.sql.Statement ; 31 import java.util.Properties ; 32 33 import net.sf.hibernate.Session; 34 import net.sf.hibernate.SessionFactory; 35 import net.sf.hibernate.Transaction; 36 import net.sf.hibernate.cfg.Configuration; 37 import net.sf.hibernate.tool.hbm2ddl.SchemaExport; 38 39 import com.j2biz.blogunity.IConstants; 40 import com.j2biz.blogunity.pojo.SystemConfiguration; 41 import com.j2biz.blogunity.pojo.User; 42 import com.j2biz.blogunity.util.BlogUtils; 43 44 public class HsqlShemaCreator { 45 46 public static void main(String [] args) { 47 try { 48 export(); 49 } catch (Exception e) { 50 e.printStackTrace(); 51 } 52 } 53 54 public static void export() throws Exception { 55 Properties hibernateProps = new Properties (); 56 hibernateProps.setProperty("hibernate.connection.driver_class", "org.hsqldb.jdbcDriver"); 57 hibernateProps.setProperty("hibernate.connection.url", 58 "jdbc:hsqldb:file:./standalone-merge/db/blogunitydb"); 59 hibernateProps.setProperty("hibernate.connection.username", "sa"); 60 hibernateProps.setProperty("hibernate.connection.password", ""); 61 hibernateProps.setProperty("hibernate.dialect", "net.sf.hibernate.dialect.HSQLDialect"); 62 hibernateProps.setProperty("hibernate.show_sql", "false"); 63 64 hibernateProps.setProperty("hibernate.cache.provider_class", 65 "net.sf.hibernate.cache.EhCacheProvider"); 66 hibernateProps.setProperty("hibernate.cache.use_query_cache", "true"); 67 68 Configuration cfg = new Configuration(); 69 cfg.setProperties(hibernateProps); 70 71 for (int i = 0; i < IConstants.PERSISTENT_CLASSES.length; i++) { 72 cfg.addClass(IConstants.PERSISTENT_CLASSES[i]); 73 } 74 75 76 System.out.println("Export shema..."); 77 78 SchemaExport export = new SchemaExport(cfg, hibernateProps); 79 export.create(false, true); 80 System.out.println("Success."); 81 82 System.out.println("Building hibernate's session factory...."); 83 SessionFactory sessionFactory = cfg.buildSessionFactory(); 84 Session session = sessionFactory.openSession(); 85 86 saveSystemConfiguration(session); 87 saveSystemAdministrator(session); 88 89 System.out.println("Execute flush..."); 90 session.flush(); 91 92 Connection conn = session.connection(); 93 Statement stmt = conn.createStatement(); 94 stmt.executeUpdate("SHUTDOWN"); 95 stmt.close(); 96 conn.close(); 97 98 session.close(); 99 100 } 101 102 106 private static void saveSystemAdministrator(Session session) throws Exception { 107 109 System.out.print("Creating system administrator..."); 110 111 String adminUser = "admin"; 112 String adminPass = "admin"; 113 String adminEmail = "admin@yoursite.com"; 114 115 Transaction tx = session.beginTransaction(); 116 User u = new User(); 117 118 if (!BlogUtils.getInstance().isValidNickname(adminUser)) adminUser = "admin"; 119 120 u.setNickname(adminUser); 121 u.setPassword(adminPass); 122 123 if (!BlogUtils.getInstance().isValidEmailAddress(adminEmail)) 124 adminEmail = "admin@site.com"; 125 u.setEmail(adminEmail); 126 u.setFirstname("System"); 127 u.setLastname("Administrator"); 128 u.setAdministrator(true); 129 u.setActive(true); 130 u.setShowEmail(false); 131 session.save(u); 132 133 tx.commit(); 134 135 System.out.println("Success."); 136 } 137 138 141 private static void saveSystemConfiguration(Session session) throws Exception { 142 System.out.print("Creating system properties..."); 143 144 String blogunityDataDir = "./webapp/WEB-INF/data"; 145 String blogunityLogsDir = "./webapp/WEB-INF/logs"; 146 String blogunityTempDir = "./webapp/WEB-INF/temp"; 147 148 Transaction tx = session.beginTransaction(); 149 150 Properties props = new Properties (); 151 props.setProperty("resource.loader", "file, class"); 152 153 props.setProperty("file.resource.loader.path", blogunityDataDir); 155 props.setProperty("file.resource.loader.cache", "true"); 156 props.setProperty("file.resource.loader.modificationCheckInterval", "2"); 157 props.setProperty("velocimacro.library", "blogunity_macros.vm"); 158 159 161 props 162 .setProperty("class.resource.loader.description", 163 "Velocity Classpath Resource Loader"); 164 props.setProperty("class.resource.loader.class", 165 "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); 166 167 props.setProperty("runtime.log", blogunityLogsDir + "/velocity.log"); 169 props.setProperty("input.encoding", "UTF-8"); 170 props.setProperty("output.encoding", "UTF-8"); 171 172 SystemConfiguration config = new SystemConfiguration(); 173 config.setAllowNewUsers(true); 174 config.setDataDir(blogunityDataDir); 175 config.setTempDir(blogunityTempDir); 176 config.setValidateNewUsers(true); 178 179 ByteArrayOutputStream outx = new ByteArrayOutputStream (); 180 props.store(outx, "Created by Blogunity Installer"); 181 182 config.setVelocityProperties(new String (outx.toByteArray())); 183 session.save(config); 184 tx.commit(); 185 System.out.println("Success."); 186 } 187 188 } | Popular Tags |