package com.med.sql; /* * This class implements non-DBMS specific features of a JdbcUrl. * * @author Jane Eisenstein * * Copyright (c) 2008 MEDecision, Inc. All rights reserved. */ public abstract class AbstractJdbcUrl implements JdbcUrl { protected String url = null; protected String host = null; protected Long port = null; protected String database = null; protected abstract String getHostPrefix(); protected abstract String getPortPrefix(); protected abstract String getDatabasePrefix(); /* (non-Javadoc) * @see com.med.installer.JdbcUrl#setProperties(java.lang.String, java.lang.String, java.lang.String) */ public void setProperties(String host, Long port, String database) throws IllegalArgumentException { if (host != null && port != null && database != null) { this.host = host; this.port = port; this.database = database; url = getHostPrefix()+host+getPortPrefix()+port+getDatabasePrefix()+database; } else throw new IllegalArgumentException(); } /* (non-Javadoc) * @see com.med.installer.JdbcUrl#setUrl(java.lang.String) */ public void setUrl(String url) throws IllegalArgumentException { boolean valid = url != null && url.startsWith(getHostPrefix()); if (valid) { int hostIdx = getHostPrefix().length(); int portIdx = url.indexOf(getPortPrefix(), hostIdx) + 1; int databaseIdx = url.indexOf(getDatabasePrefix(), portIdx) + 1; valid = portIdx > 1 && databaseIdx > 1; if (valid) { host = url.substring(hostIdx, portIdx - 1); String portString = url.substring(portIdx, databaseIdx - 1); port = new Long(portString); database = url.substring(databaseIdx, url.length()); this.url = url; } } if (!valid) throw new IllegalArgumentException(); } /* (non-Javadoc) * @see com.med.installer.JdbcUrl#getUrl() */ public String getUrl() { return url; } /* (non-Javadoc) * @see com.med.installer.JdbcUrl#getHost() */ public String getHost() { return host; } /* (non-Javadoc) * @see com.med.installer.JdbcUrl#getPort() */ public Long getPort() { return port; } /* (non-Javadoc) * @see com.med.installer.JdbcUrl#getDatabase() */ public String getDatabase() { return database; } public String toString() { String string = "host="+getHost() + ", port="+getPort() + ", database=" + getDatabase() + ", url="+ getUrl(); return string; } }