# HG changeset patch # User Bjoern Ricks # Date 1345817078 0 # Node ID f5ecca16f601ff78b0406ed87702ad399f3e24fc # Parent f4b14240ffa359c007f84743f718ce3edd63b91c Implement method to find/get a user by its account name artifacts/trunk@5260 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r f4b14240ffa3 -r f5ecca16f601 artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java --- a/artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java Thu Aug 23 14:03:16 2012 +0000 +++ b/artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java Fri Aug 24 14:04:38 2012 +0000 @@ -96,6 +96,7 @@ public String SQL_USERS_INSERT; public String SQL_USERS_SELECT_ID_BY_GID; public String SQL_USERS_SELECT_GID; + public String SQL_USERS_SELECT_ACCOUNT; public String SQL_USERS_DELETE_ID; public String SQL_USERS_DELETE_COLLECTIONS; public String SQL_USERS_SELECT_ALL; @@ -311,6 +312,7 @@ SQL_USERS_INSERT = sql.get("users.insert"); SQL_USERS_SELECT_ID_BY_GID = sql.get("users.select.id.by.gid"); SQL_USERS_SELECT_GID = sql.get("users.select.gid"); + SQL_USERS_SELECT_ACCOUNT = sql.get("users.select.account"); SQL_USERS_DELETE_ID = sql.get("users.delete.id"); SQL_USERS_DELETE_COLLECTIONS = sql.get("users.delete.collections"); SQL_USERS_SELECT_ALL = sql.get("users.select.all"); @@ -981,6 +983,43 @@ return exec.runRead() ? user[0] : null; } + /** + * Find/Get user by account + */ + public User findUser( + final String account, + final UserFactory factory, + final Object context + ) { + + final User [] user = new User[1]; + logger.debug("Tying to find user by account " + account); + + SQLExecutor.Instance exec = sqlExecutor.new Instance() { + public boolean doIt() throws SQLException { + prepareStatement(SQL_USERS_SELECT_ACCOUNT); + stmnt.setString(1, account); + result = stmnt.executeQuery(); + if (!result.next()) { // no such user + logger.debug("No user found."); + return false; + } + String identifier = result.getString(1); + String name = result.getString(2); + String account = result.getString(3); + byte [] roleData = result.getBytes(4); + + Document role = XMLUtils.fromByteArray(roleData, true); + + user[0] = factory.createUser( + identifier, name, account, role, context); + return true; + } + }; + + return exec.runRead() ? user[0] : null; + } + public User [] getUsers( final UserFactory factory, final Object context diff -r f4b14240ffa3 -r f5ecca16f601 artifact-database/src/main/resources/sql/org-h2-driver.properties --- a/artifact-database/src/main/resources/sql/org-h2-driver.properties Thu Aug 23 14:03:16 2012 +0000 +++ b/artifact-database/src/main/resources/sql/org-h2-driver.properties Fri Aug 24 14:04:38 2012 +0000 @@ -37,6 +37,7 @@ users.select.id.by.gid=SELECT id FROM users WHERE gid = ? users.select.gid=SELECT id, name, account, role FROM users WHERE gid = ? +users.select.account=SELECT id, name, account, role FROM users WHERE account = ? users.delete.id=DELETE FROM users WHERE id = ? diff -r f4b14240ffa3 -r f5ecca16f601 artifact-database/src/main/resources/sql/org-postgresql-driver.properties --- a/artifact-database/src/main/resources/sql/org-postgresql-driver.properties Thu Aug 23 14:03:16 2012 +0000 +++ b/artifact-database/src/main/resources/sql/org-postgresql-driver.properties Fri Aug 24 14:04:38 2012 +0000 @@ -37,6 +37,7 @@ users.select.id.by.gid=SELECT id FROM users WHERE gid = ?::uuid users.select.gid=SELECT id, name, account, role FROM users WHERE gid = ?::uuid +users.select.account=SELECT id, name, account, role FROM users WHERE account = ? users.delete.id=DELETE FROM users WHERE id = ?