001 // Copyright (c) 2001 Hursh Jain (http://www.mollypages.org)
002 // The Molly framework is freely distributable under the terms of an
003 // MIT-style license. For details, see the molly pages web site at:
004 // http://www.mollypages.org/. Use, modify, have fun !
005
006 package fc.jdbc;
007
008 import fc.util.*;
009
010 /**
011 Enumerates database names. Useful for methods that must be customized for
012 each type of database.
013
014 @author hursh jain
015 */
016 public final class DBName
017 {
018 /* IMPORTANT:
019 When more names are added, the fromDriver() method MUST ALSO BE UPDATED */
020 /* The singleton DBName class corresponding to mysql. */
021 public static final DBName mysql = new DBName("mysql");
022
023 /* The singleton DBName class corresponding to postgres. */
024 public static final DBName postgres = new DBName("postgresql");
025
026 /* The singleton DBName class corresponding to oracel. */
027 public static final DBName oracle = new DBName("oracle");
028
029 private String name;
030 private DBName(String name) { this.name = name;}
031
032 /**
033 Returns the DBName corresponding to the specified jdbc driver or
034 <tt>null</tt> if the jdbc driver could not be parsed.
035
036 @param driver_name a jdbc driver name such as
037 <tt>com.mysql.jdbc.Driver</tt> or
038 <tt>org.postgresql.Driver</tt>
039 */
040 public static DBName fromDriver(String driver_name)
041 {
042 driver_name = driver_name.toLowerCase();
043 Argcheck.notnull(driver_name, "the specified driver_name was null");
044
045 if (driver_name.indexOf(mysql.name.toLowerCase()) >= 0)
046 return mysql;
047 else if (driver_name.indexOf(postgres.name.toLowerCase()) >= 0)
048 return postgres;
049 else if (driver_name.indexOf(oracle.name.toLowerCase()) >=0 )
050 return oracle;
051 else
052 return null;
053 }
054
055
056 public String toString() { return name; }
057
058 public static void main(String args[])
059 {
060 Args myargs = new Args(args);
061 myargs.setUsage("java fc.jdbc.DBName -fromDriver driver-name ");
062
063 if (! myargs.flagExists("fromDriver"))
064 {
065 myargs.showError();
066 }
067
068 String driver = myargs.get("fromDriver");
069 if (driver != null) {
070 System.out.println("dbname=" + DBName.fromDriver(driver));
071 }
072 }
073 }