rana_b      2002/10/10 09:10:43

  Modified:    ftpserver/src/java/org/apache/avalon/ftpserver/usermanager
                        DbUserManager.java
  Log:
  parameterized table creation script
  
  Revision  Changes    Path
  1.10      +33 -45    
jakarta-avalon-apps/ftpserver/src/java/org/apache/avalon/ftpserver/usermanager/DbUserManager.java
  
  Index: DbUserManager.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-avalon-apps/ftpserver/src/java/org/apache/avalon/ftpserver/usermanager/DbUserManager.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- DbUserManager.java        30 Jul 2002 10:23:11 -0000      1.9
  +++ DbUserManager.java        10 Oct 2002 16:10:43 -0000      1.10
  @@ -1,3 +1,4 @@
  +//$Id$
   /*
    * Copyright (C) The Apache Software Foundation. All rights reserved.
    *
  @@ -8,6 +9,8 @@
   package org.apache.avalon.ftpserver.usermanager;
   
   import java.io.File;
  +import java.io.IOException;
  +import java.io.FileReader;
   import java.util.List;
   import java.util.ArrayList;
   import java.util.Collections;
  @@ -20,25 +23,14 @@
   
   import org.apache.avalon.framework.configuration.Configuration;
   import org.apache.avalon.framework.configuration.ConfigurationException;
  -
  +import org.apache.avalon.ftpserver.util.IoUtils; 
   
   /**
    * This is another database based user manager class. I have
    * tested it using MySQL and Oracle database. 
  - * The table structure is:
    *
  - * <pre>
  - * CREATE TABLE FTP_USER (      
  - *    LOGIN_ID VARCHAR(64) NOT NULL PRIMARY KEY,       
  - *    PASSWORD VARCHAR(64),      
  - *    HOME_DIR VARCHAR(128) NOT NULL,             
  - *    ENABLED VARCHAR(8) NOT NULL,    
  - *    WRITE_PERM VARCHAR(8) NOT NULL,       
  - *    IDLE_TIME INT NOT NULL,             
  - *    UPLOAD_RATE INT NOT NULL,             
  - *    DOWNLOAD_RATE INT NOT NULL
  - * )
  - * </pre>
  + * If the table not found it tries to create one. The class then reads the table
  + * structure from </code>ftp-db.sql</code> file and creates the table.
    *
    * @phoenix:block
    * @phoenix:service 
name="org.apache.avalon.ftpserver.usermanager.UserManagerInterface"
  @@ -47,22 +39,13 @@
    */
   public
   class DbUserManager extends AbstractUserManager {
  -    private static final String CREATE_USER_TABLE_SQL = "CREATE TABLE FTP_USER (" +
  -     "LOGIN_ID VARCHAR(64) NOT NULL PRIMARY KEY," +
  -     "PASSWORD VARCHAR(64)," +
  -     "HOME_DIR VARCHAR(128) NOT NULL," +
  -     "ENABLED VARCHAR(8) NOT NULL," +
  -     "WRITE_PERM VARCHAR(8) NOT NULL," +
  -     "IDLE_TIME INT NOT NULL," +
  -     "UPLOAD_RATE INT NOT NULL," +
  -     "DOWNLOAD_RATE INT NOT NULL" +
  -     ")";
  -    private static final String COUNT_USERS_SQL = "SELECT COUNT(*) FROM FTP_USER";
  +
  +    private static final String COUNT_USERS_SQL   = "SELECT COUNT(*) FROM FTP_USER";
       private static final String GET_ALL_USERS_SQL = "SELECT LOGIN_ID FROM FTP_USER";
  -    private static final String GET_USER_SQL = "SELECT * FROM FTP_USER WHERE 
LOGIN_ID = ?";
  -    private static final String NEW_USER_SQL = "INSERT INTO FTP_USER VALUES (?, ?, 
?, ?, ?, ?, ?, ?)";
  -    private static final String UPDATE_USER_SQL = "UPDATE FTP_USER SET PASSWORD = 
?, HOME_DIR = ?, ENABLED = ?, WRITE_PERM = ?, IDLE_TIME = ?, UPLOAD_RATE = ?, 
DOWNLOAD_RATE = ? WHERE LOGIN_ID = ?";
  -    private static final String DELETE_USER_SQL = "DELETE FROM FTP_USER WHERE 
LOGIN_ID = ?";
  +    private static final String GET_USER_SQL      = "SELECT * FROM FTP_USER WHERE 
LOGIN_ID = ?";
  +    private static final String NEW_USER_SQL      = "INSERT INTO FTP_USER VALUES 
(?, ?, ?, ?, ?, ?, ?, ?)";
  +    private static final String UPDATE_USER_SQL   = "UPDATE FTP_USER SET PASSWORD = 
?, HOME_DIR = ?, ENABLED = ?, WRITE_PERM = ?, IDLE_TIME = ?, UPLOAD_RATE = ?, 
DOWNLOAD_RATE = ? WHERE LOGIN_ID = ?";
  +    private static final String DELETE_USER_SQL   = "DELETE FROM FTP_USER WHERE 
LOGIN_ID = ?";
   
       private Connection mDbConnection = null;
   
  @@ -109,21 +92,21 @@
               getLogger().info("Database user manager opened.");
           }
           catch(Exception ex) {
  -            throw new ConfigurationException(ex.getMessage(), ex);
  +            throw new ConfigurationException("DbUserManager.configure()", ex);
           }
       }
       
  -    
       /**
        * Create table if necesary
        */
  -    private void createTable() throws SQLException {
  +    private void createTable() throws IOException, SQLException {
           
  -        // check existance
  +        // check table existance
           boolean bExist = false;
           try {
  +            String usrCnt = "SELECT COUNT(*) FROM FTP_USER";
               Statement stmt = mDbConnection.createStatement();
  -            ResultSet rs = stmt.executeQuery( COUNT_USERS_SQL );
  +            ResultSet rs = stmt.executeQuery(usrCnt);
               rs.close();
               stmt.close();
               bExist = true;
  @@ -135,11 +118,16 @@
               return;
           }
           
  -        // table does not exist - trying to create
  +        // table does not exist - try to create
           getLogger().info("Table FTP_USER does non exist - creating table.");
  +        File sqlFile = new File(getContext().getBaseDirectory(), "ftp-db.sql");
  +        System.out.println(sqlFile.getAbsolutePath());
  +        FileReader reader = new FileReader(sqlFile);
  +        String sql = IoUtils.readFully(reader);
  +        reader.close();
   
           Statement stmt = mDbConnection.createStatement();
  -        stmt.execute( CREATE_USER_TABLE_SQL );
  +        stmt.execute(sql);
           stmt.close();
       }
       
  @@ -208,7 +196,7 @@
               return thisUser;
           }
           catch(SQLException ex) {
  -             getLogger().error(ex.getMessage(), ex);
  +             getLogger().error("DbUserManager.getUserByName()", ex);
           }
           return null;
       }
  @@ -227,7 +215,7 @@
           }
           catch(SQLException ex) {
               bValid = false;
  -             getLogger().error(ex.getMessage(), ex);
  +             getLogger().error("DbUserManager.doesExist()", ex);
           }
           return bValid;
       }
  @@ -246,7 +234,7 @@
               rs.close();
           }
           catch(SQLException ex) {
  -             getLogger().error(ex.getMessage(), ex);
  +             getLogger().error("DbUserManager.getAllUserNames()", ex);
           }
           Collections.sort(names);
           return names;
  @@ -255,6 +243,7 @@
       
       /**
        * Get user password.
  +     * <pre>
        * If the password value is not null
        *    password = new password 
        * else 
  @@ -262,6 +251,7 @@
        *     password = old password
        *   else 
        *     password = ""
  +     * </pre>
        */
       private synchronized String getPassword(User user) throws SQLException {
        
  @@ -292,13 +282,13 @@
           try {
               mGetUserStmt.setString(1, user);
               ResultSet rs = mGetUserStmt.executeQuery();
  -                if (rs.next()) {
  -                    existPassword = rs.getString("PASSWORD");
  +            if (rs.next()) {
  +                existPassword = rs.getString("PASSWORD");
                }
  -                rs.close();
  +            rs.close();
           }
           catch(SQLException ex) {
  -            getLogger().error(ex.getMessage(), ex);
  +            getLogger().error("DbUserManager.authenticate()", ex);
               return false;
           }
           
  @@ -314,7 +304,6 @@
        * Close this user manager. Close the database statements and connection.
        */
       public synchronized void dispose() {
  -        getLogger().info("Closing database user manager...");
           if (mNewUserStmt != null) {
               try {mNewUserStmt.close(); } catch(SQLException ex) {}
               mNewUserStmt = null;
  @@ -345,5 +334,4 @@
               mDbConnection = null;
           }
       }
  -        
   }
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to