Ignore:
Timestamp:
2013-06-13T13:13:46+12:00 (11 years ago)
Author:
sjm84
Message:

Various improvements and fixes mostly to do with adding depositor functionality

File:
1 edited

Legend:

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

    r27316 r27617  
    2121import java.sql.Connection;
    2222import java.sql.DriverManager;
     23import java.sql.PreparedStatement;
    2324import java.sql.ResultSet;
    2425import java.sql.SQLException;
     
    3637    static final String USERS = "users";
    3738    static final String ROLES = "roles";
     39    static final String DATA = "data";
    3840    private Connection conn = null;
    3941    private Statement state = null;
     
    142144            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))");
    143145            state.execute("create table roles (username varchar(40) not null, role varchar(40) not null, primary key (username, role))");
     146            state.execute("create table data (username varchar(40) not null, name varchar(128) not null, value clob, primary key (username, name))");
    144147            state.execute("insert into " + USERS + " values ('admin', '" + Authentication.hashPassword("admin") + "', 'true', 'change the password for this account as soon as possible', '')");
    145148            state.execute("insert into " + ROLES + " values ('admin', 'administrator')");
     
    174177        for (HashMap<String, String> user : users)
    175178        {
    176             ResultSet gs = state.executeQuery("SELECT role FROM roles WHERE username = '" + user.get("username") + "'");
     179            ResultSet gs = state.executeQuery("SELECT role FROM " + ROLES + " WHERE username = '" + user.get("username") + "'");
    177180            String group = "";
    178181            while (gs.next())
     
    196199            return userQueryResult;
    197200        }
     201    }
     202
     203    public boolean addUserData(String username, String name, String value)
     204    {
     205        //Check if we already have a value under this name
     206        boolean found = false;
     207        try
     208        {
     209            ResultSet rs = state.executeQuery("SELECT * FROM " + DATA + " WHERE username='" + username + "' AND name='" + name + "'");
     210            if (rs.next())
     211            {
     212                found = true;
     213            }
     214            else
     215            {
     216                found = false;
     217            }
     218        }
     219        catch (Exception ex)
     220        {
     221            System.out.println("exception thrown:");
     222            if (ex instanceof SQLException)
     223            {
     224                printSQLError((SQLException) ex);
     225            }
     226            else
     227            {
     228                ex.printStackTrace();
     229            }
     230            closeDatabase();
     231            System.out.println("Error:" + ex.getMessage());
     232            return false;
     233        }
     234
     235        try
     236        {
     237            if (!found)
     238            {
     239                PreparedStatement stmt = null;
     240                stmt = conn.prepareStatement("INSERT INTO " + DATA + " VALUES (?, ?, ?)");
     241                stmt.setString(1, username);
     242                stmt.setString(2, name);
     243                stmt.setString(3, value);
     244                stmt.executeUpdate();
     245            }
     246            else
     247            {
     248                PreparedStatement stmt = null;
     249                stmt = conn.prepareStatement("UPDATE " + DATA + " SET value=? WHERE username=? AND name=?");
     250                stmt.setString(1, value);
     251                stmt.setString(2, username);
     252                stmt.setString(3, name);
     253                stmt.executeUpdate();
     254            }
     255        }
     256        catch (Exception ex)
     257        {
     258            System.out.println("exception thrown:");
     259            if (ex instanceof SQLException)
     260            {
     261                printSQLError((SQLException) ex);
     262            }
     263            else
     264            {
     265                ex.printStackTrace();
     266            }
     267            closeDatabase();
     268            System.out.println("Error:" + ex.getMessage());
     269            return false;
     270        }
     271        return true;
     272    }
     273
     274    public String getUserData(String username, String name)
     275    {
     276        try
     277        {
     278            ResultSet rs = state.executeQuery("SELECT * FROM " + DATA + " WHERE username='" + username + "' AND name='" + name + "'");
     279            if (rs.next())
     280            {
     281                return rs.getString("value");
     282            }
     283        }
     284        catch (Exception ex)
     285        {
     286            System.out.println("exception thrown:");
     287            if (ex instanceof SQLException)
     288            {
     289                printSQLError((SQLException) ex);
     290            }
     291            else
     292            {
     293                ex.printStackTrace();
     294            }
     295            closeDatabase();
     296            System.out.println("Error:" + ex.getMessage());
     297        }
     298        return null;
    198299    }
    199300
Note: See TracChangeset for help on using the changeset viewer.