Ignore:
Timestamp:
2012-03-23T14:23:55+13:00 (12 years ago)
Author:
sjm84
Message:

Some major changes to the derby wrapper

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/util/DerbyWrapper.java

    r25125 r25261  
    2020
    2121import javax.swing.*;
     22
     23import org.greenstone.gsdl3.service.Authentication;
     24
    2225import java.io.File;
    2326import java.sql.Connection;
     
    106109        {
    107110            conn.setAutoCommit(false);
    108             state.execute("create table users (username varchar(40) not null, password varchar(40) not null, accountstatus varchar(10), comment varchar(100), primary key(username))");
     111            state.execute("create table users (username varchar(40) not null, password varchar(40) not null, accountstatus varchar(10), comment varchar(100), email varchar(40), primary key(username))");
    109112            state.execute("create table roles (username varchar(40) not null, role varchar(40) not null, primary key (username, role))");
    110             //ystem.out.println("table users created successfully!");
    111             state.execute("insert into " + USERS + " values ('admin', 'admin', 'true', 'change the password for this account as soon as possible')");
     113            state.execute("insert into " + USERS + " values ('admin', '" + Authentication.hashPassword("admin") + "', 'true', 'change the password for this account as soon as possible', '')");
    112114            state.execute("insert into " + ROLES + " values ('admin', 'administrator')");
    113115            state.execute("insert into " + ROLES + " values ('admin', 'all-collections-editor')");
     
    123125    {
    124126        UserQueryResult userQueryResult = new UserQueryResult();
    125         String sql_list_all_user = "SELECT username, password, accountstatus, comment FROM " + USERS;
     127        String sql_list_all_user = "SELECT username, password, accountstatus, email, comment FROM " + USERS;
    126128
    127129        ArrayList<HashMap<String, String>> users = new ArrayList<HashMap<String, String>>();
     
    134136            user.put("as", rs.getString("accountstatus"));
    135137            user.put("comment", rs.getString("comment"));
     138            user.put("email", rs.getString("email"));
    136139
    137140            users.add(user);
     
    150153                group += gs.getString("role");
    151154            }
    152             userQueryResult.addUserTerm(user.get("username"), user.get("password"), group, user.get("as"), user.get("comment"));
     155            userQueryResult.addUserTerm(user.get("username"), user.get("password"), group, user.get("as"), user.get("comment"), user.get("email"));
    153156        }
    154157
     
    164167    }
    165168
    166     public String addUser(String username, String password, String groups, String accountstatus, String comment)
     169    public boolean addUser(String username, String password, String groups, String accountstatus, String comment, String email)
    167170    {
    168171        try
    169172        {
    170173            conn.setAutoCommit(false);
    171             String sql_insert_user = "insert into " + USERS + " values ('" + username + "', '" + password + "', '" + accountstatus + "', '" + comment + "')";
     174            String sql_insert_user = "insert into " + USERS + " values ('" + username + "', '" + password + "', '" + accountstatus + "', '" + comment + "', '" + email + "')";
    172175            state.execute(sql_insert_user);
    173176
     
    194197            closeDatabase();
    195198            System.out.println("Error:" + e.getMessage());
    196             return "Error:" + e.getMessage();
    197         }
    198 
    199         return "succeed";
    200     }
    201 
    202     public String deleteUser(String del_username)
     199            return false;
     200        }
     201
     202        return true;
     203    }
     204
     205    public boolean deleteUser(String del_username)
    203206    {
    204207        try
     
    223226            }
    224227            closeDatabase();
    225             return "Error:" + e.getMessage();
    226         }
    227         return "succeed";
     228            return false;
     229        }
     230        return true;
    228231    }
    229232
     
    254257    }
    255258
    256     public UserQueryResult findUser(String username, String password) throws SQLException
     259    public UserQueryResult findUser(String username, String password)
    257260    {
    258261        UserQueryResult userQueryResult = new UserQueryResult();
    259262
     263        try
     264        {
     265            conn.setAutoCommit(false);
     266        }
     267        catch (Exception ex)
     268        {
     269            ex.printStackTrace();
     270            return null;
     271        }
     272
     273        String sql_find_user = "SELECT  username, password, accountstatus, comment, email FROM " + USERS;
     274        String append_sql = "";
     275
     276        if (username != null)
     277        {
     278            append_sql = " WHERE username = '" + username + "'";
     279        }
     280        if (password != null)
     281        {
     282            if (append_sql.equals(""))
     283            {
     284                append_sql = " WHERE password = '" + password + "'";
     285            }
     286            else
     287            {
     288                append_sql += " and password = '" + password + "'";
     289            }
     290        }
     291        if (!append_sql.equals(""))
     292        {
     293            sql_find_user += append_sql;
     294        }
     295
     296        try
     297        {
     298            ArrayList<HashMap<String, String>> users = new ArrayList<HashMap<String, String>>();
     299            ResultSet rs = state.executeQuery(sql_find_user);
     300            while (rs.next())
     301            {
     302                HashMap<String, String> user = new HashMap<String, String>();
     303                user.put("username", rs.getString("username"));
     304                user.put("password", rs.getString("password"));
     305                user.put("as", rs.getString("accountstatus"));
     306                user.put("comment", rs.getString("comment"));
     307                user.put("email", rs.getString("email"));
     308
     309                users.add(user);
     310            }
     311            conn.commit();
     312
     313            for (HashMap<String, String> user : users)
     314            {
     315                ResultSet gs = state.executeQuery("SELECT role FROM " + ROLES + " WHERE username = '" + user.get("username") + "'");
     316
     317                String group = "";
     318                while (gs.next())
     319                {
     320                    if (!group.equals(""))
     321                    {
     322                        group += ",";
     323                    }
     324                    group += gs.getString("role");
     325                }
     326
     327                userQueryResult.addUserTerm(user.get("username"), user.get("password"), group, user.get("as"), user.get("comment"), user.get("email"));
     328            }
     329        }
     330        catch (Exception ex)
     331        {
     332            ex.printStackTrace();
     333            return null;
     334        }
     335
     336        if (userQueryResult.getSize() > 0)
     337        {
     338            return userQueryResult;
     339        }
     340        else
     341        {
     342            System.out.println("couldn't find the user");
     343            return null;
     344        }
     345    }
     346
     347    public UserQueryResult findUser(String username) throws SQLException
     348    {
     349        UserQueryResult userQueryResult = new UserQueryResult();
     350
    260351        conn.setAutoCommit(false);
    261         String sql_find_user = "SELECT  username, password, accountstatus, comment FROM " + USERS;
     352        String sql_find_user = "SELECT  username, password, accountstatus, comment, email FROM " + USERS;
    262353        String append_sql = "";
    263354
     
    265356        {
    266357            append_sql = " WHERE username = '" + username + "'";
    267         }
    268         if (password != null)
    269         {
    270             if (append_sql.equals(""))
    271             {
    272                 append_sql = " WHERE password = '" + password + "'";
    273             }
    274             else
    275             {
    276                 append_sql += " and password = '" + password + "'";
    277             }
    278358        }
    279359        if (!append_sql.equals(""))
     
    291371            user.put("as", rs.getString("accountstatus"));
    292372            user.put("comment", rs.getString("comment"));
     373            user.put("email", rs.getString("email"));
    293374
    294375            users.add(user);
     
    310391            }
    311392
    312             userQueryResult.addUserTerm(user.get("username"), user.get("password"), group, user.get("as"), user.get("comment"));
     393            userQueryResult.addUserTerm(user.get("username"), user.get("password"), group, user.get("as"), user.get("comment"), user.get("email"));
    313394        }
    314395
     
    324405    }
    325406
    326     public UserQueryResult findUser(String username) throws SQLException
    327     {
    328         UserQueryResult userQueryResult = new UserQueryResult();
    329 
    330         conn.setAutoCommit(false);
    331         String sql_find_user = "SELECT  username, password, accountstatus, comment FROM " + USERS;
    332         String append_sql = "";
    333 
    334         if (username != null)
    335         {
    336             append_sql = " WHERE username = '" + username + "'";
    337         }
    338         if (!append_sql.equals(""))
    339         {
    340             sql_find_user += append_sql;
    341         }
    342 
    343         ArrayList<HashMap<String, String>> users = new ArrayList<HashMap<String, String>>();
    344         ResultSet rs = state.executeQuery(sql_find_user);
    345         while (rs.next())
    346         {
    347             HashMap<String, String> user = new HashMap<String, String>();
    348             user.put("username", rs.getString("username"));
    349             user.put("password", rs.getString("password"));
    350             user.put("as", rs.getString("accountstatus"));
    351             user.put("comment", rs.getString("comment"));
    352 
    353             users.add(user);
    354         }
    355         conn.commit();
    356 
    357         for (HashMap<String, String> user : users)
    358         {
    359             ResultSet gs = state.executeQuery("SELECT role FROM " + ROLES + " WHERE username = '" + user.get("username") + "'");
    360 
    361             String group = "";
    362             while (gs.next())
    363             {
    364                 if (!group.equals(""))
    365                 {
    366                     group += ",";
    367                 }
    368                 group += gs.getString("role");
    369             }
    370 
    371             userQueryResult.addUserTerm(user.get("username"), user.get("password"), group, user.get("as"), user.get("comment"));
    372         }
    373 
    374         if (userQueryResult.getSize() > 0)
    375         {
    376             return userQueryResult;
    377         }
    378         else
    379         {
    380             System.out.println("couldn't find the user");
    381             return null;
    382         }
    383     }
    384 
    385     public String modifyUserInfo(String username, String new_password, String groups, String accountstatus, String comment)
     407    public String modifyUserInfo(String username, String new_password, String groups, String accountstatus, String comment, String email)
    386408    {
    387409        try
     
    389411            conn.setAutoCommit(false);
    390412            String sql_modify_user_info = "update " + USERS + " set ";
     413           
     414            boolean needComma = false;
    391415            if (new_password != null && !new_password.equals(""))
    392416            {
    393417                sql_modify_user_info += "password='" + new_password + "'";
     418                needComma = true;
    394419            }
    395420
    396421            if (accountstatus != null && comment != null)
    397422            {
    398                 sql_modify_user_info += ", accountstatus='" + accountstatus + "'" + ", comment='" + comment + "'";
    399             }
     423                sql_modify_user_info += (needComma ? "," : "") + " accountstatus='" + accountstatus + "'" + ", comment='" + comment + "'";
     424                needComma = true;
     425            }
     426           
     427            if(email != null)
     428            {
     429                sql_modify_user_info += (needComma ? "," : "") + " email='" + email + "'";
     430            }
     431           
    400432            sql_modify_user_info += " where username='" + username + "'";
    401             System.out.println(sql_modify_user_info);
    402433            state.execute(sql_modify_user_info);
    403434
     
    431462    }
    432463
    433     public void db2txt() throws SQLException
    434     {
    435         UserQueryResult userQueryResult = new UserQueryResult();
    436         String sql_list_all_user = "select username, password, accountstatus, comment from " + USERS;
    437         ResultSet rs = state.executeQuery(sql_list_all_user);
    438 
    439         while (rs.next())
    440         {
    441             String returned_username = rs.getString("username");
    442             System.out.println("[" + returned_username + "]");
    443             String returned_comment = rs.getString("comment");
    444             System.out.println("<comment>" + returned_comment);
    445             String returned_accountstatus = rs.getString("accountstatus");
    446             System.out.println("<enabled>" + returned_accountstatus);
    447             ResultSet groupsSet = state.executeQuery("SELECT role FROM " + ROLES + " WHERE username = '" + returned_username + "'");
    448             String returned_groups = "";
    449             while (groupsSet.next())
    450             {
    451                 if (!returned_groups.equals(""))
     464    public void db2txt()
     465    {
     466        try
     467        {
     468            conn.setAutoCommit(false);
     469            String sql_list_all_user = "select username, password, accountstatus, comment, email from " + USERS;
     470            ResultSet rs = state.executeQuery(sql_list_all_user);
     471
     472            ArrayList<HashMap<String, String>> infoMap = new ArrayList<HashMap<String, String>>();
     473
     474            while (rs.next())
     475            {
     476                HashMap<String, String> userMap = new HashMap<String, String>();
     477                userMap.put("username", rs.getString("username"));
     478                userMap.put("password", rs.getString("password"));
     479                userMap.put("status", rs.getString("accountstatus"));
     480                userMap.put("comment", rs.getString("comment"));
     481                userMap.put("email", rs.getString("email"));
     482                infoMap.add(userMap);
     483            }
     484            conn.commit();
     485
     486            for (HashMap<String, String> user : infoMap)
     487            {
     488                ResultSet groupsSet = state.executeQuery("SELECT role FROM " + ROLES + " WHERE username = '" + user.get("username") + "'");
     489                String returnedGroups = "";
     490                while (groupsSet.next())
    452491                {
    453                     returned_groups += ",";
     492                    if (!returnedGroups.equals(""))
     493                    {
     494                        returnedGroups += ",";
     495                    }
     496                    returnedGroups += groupsSet.getString("role");
    454497                }
    455                 returned_groups += groupsSet.getString("role");
    456             }
    457             System.out.println("<groups>" + returned_groups);
    458             String returned_password = rot13(rs.getString("password"));
    459             System.out.println("<password>" + returned_password);
    460             System.out.println("<username>" + returned_username);
    461             System.out.println("");
    462             System.out.println("----------------------------------------------------------------------");
    463         }
    464         conn.commit();
    465         closeDatabase();
     498                conn.commit();
     499
     500                System.err.println("-------------------------------------");
     501                System.err.println("USERNAME = " + user.get("username"));
     502                System.err.println("PASSWORD = " + user.get("password"));
     503                System.err.println("GROUPS = " + returnedGroups);
     504                System.err.println("STATUS = " + user.get("status"));
     505                System.err.println("COMMENT = " + user.get("comment"));
     506                System.err.println("EMAIL = " + user.get("email"));
     507                System.err.println("-------------------------------------");
     508            }
     509
     510            conn.commit();
     511            closeDatabase();
     512        }
     513        catch (Exception ex)
     514        {
     515            ex.printStackTrace();
     516        }
    466517    }
    467518
     
    474525        }
    475526    }
    476 
    477     //Simply use rot-13 to encrypt and decrypt the password
    478     public String rot13(String password)
    479     {
    480         String out_password = "";
    481         for (int i = 0; i < password.length(); i++)
    482         {
    483             char c = password.charAt(i);
    484             if (c >= 'a' && c <= 'm')
    485                 c += 13;
    486             else if (c >= 'n' && c <= 'z')
    487                 c -= 13;
    488             else if (c >= 'A' && c <= 'M')
    489                 c += 13;
    490             else if (c >= 'A' && c <= 'Z')
    491                 c -= 13;
    492             out_password += c;
    493         }
    494         return out_password;
    495     }
    496527}
Note: See TracChangeset for help on using the changeset viewer.