1 19 package org.lucane.server.database; 20 21 import java.sql.*; 22 23 import javax.sql.DataSource ; 24 25 import org.apache.commons.dbcp.BasicDataSource; 26 import org.lucane.common.Logging; 27 import org.lucane.server.Server; 28 29 class HSQLDBLayer extends DatabaseAbstractionLayer 30 { 31 private DataSource dataSource; 32 33 public HSQLDBLayer(DataSource dataSource) 34 { 35 this.dataSource = dataSource; 36 BasicDataSource bds = (BasicDataSource)dataSource; 37 bds.setUrl(getAbsoluteUrl(bds.getUrl())); 38 } 39 40 public Connection getConnection() 41 throws SQLException 42 { 43 return dataSource.getConnection(); 44 } 45 46 private String getAbsoluteUrl(String url) 47 { 48 String standardStart = "jdbc:hsqldb:"; 49 50 if(Server.getInstance() != null && url.toLowerCase().startsWith(standardStart)) 51 { 52 String miniurl = url.substring(standardStart.length()).replace('\\','/'); 53 54 if(! miniurl.startsWith("/") && miniurl.charAt(1)!=':') 55 url = standardStart + Server.getInstance().getWorkingDirectory() + miniurl; 56 } 57 58 Logging.getLogger().fine("HSQLdb url : " + url); 59 60 return url; 61 } 62 63 public String resolveType(String type) 64 { 65 if(type.equalsIgnoreCase("SMALLTEXT")) 66 return "VARCHAR(250)"; 67 else if(type.equalsIgnoreCase("TEXT")) 68 return "VARCHAR"; 69 else if(type.equalsIgnoreCase("SMALLINT")) 70 return "SMALLINT"; 71 else if(type.equalsIgnoreCase("INT")) 72 return "INT"; 73 else if(type.equalsIgnoreCase("BIGINT")) 74 return "NUMERIC"; 75 else if(type.equalsIgnoreCase("REAL")) 76 return "REAL"; 77 else 78 return type; 79 } 80 } 81 82 | Popular Tags |