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]>