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    }