Changeset 28233


Ignore:
Timestamp:
2013-09-06T11:17:55+12:00 (11 years ago)
Author:
sjm84
Message:

Adding a new edit mode flag

Location:
main/trunk/greenstone3/src/java/org/greenstone/gsdl3
Files:
3 edited

Legend:

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

    r27805 r28233  
    912912                HashMap<String, Serializable> responseParams = GSXML.extractParams(responseParamList, true);
    913913                String groups = (String) responseParams.get(GSXML.GROUPS_ATT);
     914                String editEnabled = (String) responseParams.get("editEnabled");
    914915
    915916                userInformation.setAttribute(GSXML.GROUPS_ATT, groups);
     917                userInformation.setAttribute("editEnabled", (editEnabled != null) ? editEnabled : "false");
    916918                xml_request.appendChild(userInformation);
    917919            }
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/Authentication.java

    r28218 r28233  
    127127    protected static final String AUTHENTICATION_SERVICE = "Authentication";
    128128    protected static final String GET_USER_INFORMATION_SERVICE = "GetUserInformation";
     129    protected static final String CHANGE_USER_EDIT_MODE_SERVICE = "ChangeUserEditMode";
    129130
    130131    protected static boolean _derbyWrapperDoneForcedShutdown = false;
     
    171172        this.short_service_info.appendChild(authentication_service);
    172173
    173         // set up Authentication service info - for now just has name and type
    174174        Element getUserInformation_service = this.doc.createElement(GSXML.SERVICE_ELEM);
    175175        getUserInformation_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS);
     
    177177        this.short_service_info.appendChild(getUserInformation_service);
    178178
     179        Element changeEditMode_service = this.doc.createElement(GSXML.SERVICE_ELEM);
     180        changeEditMode_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS);
     181        changeEditMode_service.setAttribute(GSXML.NAME_ATT, CHANGE_USER_EDIT_MODE_SERVICE);
     182        this.short_service_info.appendChild(changeEditMode_service);
     183
    179184        DerbyWrapper.createDatabaseIfNeeded();
    180        
     185
    181186        NodeList recaptchaElems = info.getElementsByTagName("recaptcha");
    182187        for (int i = 0; i < recaptchaElems.getLength(); i++)
     
    217222            authen_service.setAttribute(GSXML.NAME_ATT, GET_USER_INFORMATION_SERVICE);
    218223        }
     224        else if (service_id.equals(CHANGE_USER_EDIT_MODE_SERVICE))
     225        {
     226            authen_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS);
     227            authen_service.setAttribute(GSXML.NAME_ATT, CHANGE_USER_EDIT_MODE_SERVICE);
     228        }
    219229        else
    220230        {
     
    245255    }
    246256
    247     protected Element processGetUserInformation(Element request)
     257    protected Element processChangeUserEditMode(Element request)
    248258    {
    249259        // Create a new (empty) result message
    250260        Element result = this.doc.createElement(GSXML.RESPONSE_ELEM);
    251261
     262        result.setAttribute(GSXML.FROM_ATT, CHANGE_USER_EDIT_MODE_SERVICE);
     263        result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS);
     264
     265        Element paramList = (Element) GSXML.getChildByTagName(request, GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);
     266        if (paramList == null)
     267        {
     268            GSXML.addError(this.doc, result, _errorMessageMap.get(ERROR_REQUEST_HAS_NO_PARAM_LIST));
     269            return result;
     270        }
     271
     272        HashMap<String, Serializable> params = GSXML.extractParams(paramList, true);
     273
     274        String username = (String) params.get("username");
     275        String editMode = (String) params.get("enabled");
     276
     277        if (!editMode.toLowerCase().equals("true") && !editMode.toLowerCase().equals("false"))
     278        {
     279            editMode = "false";
     280        }
     281
     282        System.err.println("SETTING USER DATA -> " + username + " -> USER_EDIT_ENABLED -> " + editMode);
     283
     284        DerbyWrapper dw = openDatabase();
     285        dw.addUserData(username, "USER_EDIT_ENABLED", editMode);
     286        dw.closeDatabase();
     287
     288        return result;
     289    }
     290
     291    protected Element processGetUserInformation(Element request)
     292    {
     293        // Create a new (empty) result message
     294        Element result = this.doc.createElement(GSXML.RESPONSE_ELEM);
     295
    252296        result.setAttribute(GSXML.FROM_ATT, GET_USER_INFORMATION_SERVICE);
    253297        result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS);
     
    272316        DerbyWrapper derbyWrapper = openDatabase();
    273317
    274         try
    275         {
    276             UserQueryResult userQueryResult = derbyWrapper.findUser(username);
    277 
    278             Vector<UserTermInfo> terms = userQueryResult.getUserTerms();
    279 
    280             if (terms.size() == 0)
    281             {
    282                 GSXML.addError(this.doc, result, _errorMessageMap.get(ERROR_REQUESTED_USER_NOT_FOUND));
    283                 return result;
    284             }
    285 
    286             UserTermInfo userInfo = terms.get(0);
    287             Element userInfoList = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);
    288             result.appendChild(userInfoList);
    289 
    290             Element usernameField = GSXML.createParameter(this.doc, "username", userInfo.username);
    291             Element passwordField = GSXML.createParameter(this.doc, "password", userInfo.password);
    292             Element groupsField = GSXML.createParameter(this.doc, "groups", userInfo.groups);
    293             Element accountStatusField = GSXML.createParameter(this.doc, "accountstatus", userInfo.accountstatus);
    294             Element commentField = GSXML.createParameter(this.doc, "comment", userInfo.comment);
    295 
    296             userInfoList.appendChild(usernameField);
    297             userInfoList.appendChild(passwordField);
    298             userInfoList.appendChild(groupsField);
    299             userInfoList.appendChild(accountStatusField);
    300             userInfoList.appendChild(commentField);
    301         }
    302         catch (SQLException ex)
    303         {
    304             GSXML.addError(this.doc, result, _errorMessageMap.get(ERROR_SQL_EXCEPTION));
    305             ex.printStackTrace();
    306         }
     318        UserQueryResult userQueryResult = derbyWrapper.findUser(username);
     319        String editEnabled = derbyWrapper.getUserData(username, "USER_EDIT_ENABLED");
     320
     321        Vector<UserTermInfo> terms = userQueryResult.getUserTerms();
     322
     323        if (terms.size() == 0)
     324        {
     325            GSXML.addError(this.doc, result, _errorMessageMap.get(ERROR_REQUESTED_USER_NOT_FOUND));
     326            return result;
     327        }
     328
     329        UserTermInfo userInfo = terms.get(0);
     330        Element userInfoList = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);
     331        result.appendChild(userInfoList);
     332
     333        Element usernameField = GSXML.createParameter(this.doc, "username", userInfo.username);
     334        Element passwordField = GSXML.createParameter(this.doc, "password", userInfo.password);
     335        Element groupsField = GSXML.createParameter(this.doc, "groups", userInfo.groups);
     336        Element accountStatusField = GSXML.createParameter(this.doc, "accountstatus", userInfo.accountstatus);
     337        Element commentField = GSXML.createParameter(this.doc, "comment", userInfo.comment);
     338
     339        if (editEnabled != null)
     340        {
     341            Element editEnabledElem = GSXML.createParameter(this.doc, "editEnabled", editEnabled);
     342            userInfoList.appendChild(editEnabledElem);
     343        }
     344
     345        userInfoList.appendChild(usernameField);
     346        userInfoList.appendChild(passwordField);
     347        userInfoList.appendChild(groupsField);
     348        userInfoList.appendChild(accountStatusField);
     349        userInfoList.appendChild(commentField);
    307350
    308351        derbyWrapper.closeDatabase();
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/util/DerbyWrapper.java

    r28219 r28233  
    335335        try
    336336        {
     337            System.err.println("xx" + conn.isClosed());
    337338            Statement state = conn.createStatement();
    338339            ResultSet rs = state.executeQuery("SELECT * FROM " + DATA + " WHERE username='" + username + "' AND name='" + name + "'");
    339340            conn.commit();
    340             state.close();
    341341            if (rs.next())
    342342            {
     
    347347                found = false;
    348348            }
     349            state.close();
    349350        }
    350351        catch (Exception ex)
     
    354355            {
    355356                printSQLError((SQLException) ex);
     357                ex.printStackTrace();
    356358            }
    357359            else
     
    411413            ResultSet rs = state.executeQuery("SELECT * FROM " + DATA + " WHERE username='" + username + "' AND name='" + name + "'");
    412414            conn.commit();
    413             state.close();
    414415            if (rs.next())
    415416            {
    416417                return rs.getString("value");
    417418            }
     419            state.close();
    418420        }
    419421        catch (Exception ex)
     
    423425            {
    424426                printSQLError((SQLException) ex);
     427                ex.printStackTrace();
    425428            }
    426429            else
     
    607610    // findUser(null) will return all users, which is why a UserQueryResult
    608611    // (a vector of UserTermInfo) is returned
    609     public UserQueryResult findUser(String username) throws SQLException
     612    public UserQueryResult findUser(String username)
    610613    {
    611614        UserQueryResult userQueryResult = new UserQueryResult();
     
    625628        ArrayList<HashMap<String, String>> users = new ArrayList<HashMap<String, String>>();
    626629
    627         Statement state = conn.createStatement();
    628         ResultSet rs = state.executeQuery(sql_find_user);
    629         conn.commit();
    630         while (rs.next())
    631         {
    632             HashMap<String, String> user = new HashMap<String, String>();
    633             user.put("username", rs.getString("username"));
    634             user.put("password", rs.getString("password"));
    635             user.put("as", rs.getString("accountstatus"));
    636             user.put("comment", rs.getString("comment"));
    637             user.put("email", rs.getString("email"));
    638 
    639             users.add(user);
    640         }
    641         state.close();
    642 
    643         state = conn.createStatement();
    644         for (HashMap<String, String> user : users)
    645         {
    646             ResultSet gs = state.executeQuery("SELECT role FROM " + ROLES + " WHERE username = '" + user.get("username") + "'");
    647             conn.commit();
    648 
    649             String group = "";
    650             while (gs.next())
    651             {
    652                 if (!group.equals(""))
     630        try
     631        {
     632            Statement state = conn.createStatement();
     633            ResultSet rs = state.executeQuery(sql_find_user);
     634            conn.commit();
     635            while (rs.next())
     636            {
     637                HashMap<String, String> user = new HashMap<String, String>();
     638                user.put("username", rs.getString("username"));
     639                user.put("password", rs.getString("password"));
     640                user.put("as", rs.getString("accountstatus"));
     641                user.put("comment", rs.getString("comment"));
     642                user.put("email", rs.getString("email"));
     643
     644                users.add(user);
     645            }
     646            state.close();
     647
     648            state = conn.createStatement();
     649            for (HashMap<String, String> user : users)
     650            {
     651                ResultSet gs = state.executeQuery("SELECT role FROM " + ROLES + " WHERE username = '" + user.get("username") + "'");
     652                conn.commit();
     653
     654                String group = "";
     655                while (gs.next())
    653656                {
    654                     group += ",";
     657                    if (!group.equals(""))
     658                    {
     659                        group += ",";
     660                    }
     661                    group += gs.getString("role");
    655662                }
    656                 group += gs.getString("role");
    657             }
    658 
    659             userQueryResult.addUserTerm(user.get("username"), user.get("password"), group, user.get("as"), user.get("comment"), user.get("email"));
    660         }
    661         state.close();
     663
     664                userQueryResult.addUserTerm(user.get("username"), user.get("password"), group, user.get("as"), user.get("comment"), user.get("email"));
     665            }
     666            state.close();
     667        }
     668        catch (Exception ex)
     669        {
     670            ex.printStackTrace();
     671        }
    662672
    663673        if (userQueryResult.getSize() > 0)
Note: See TracChangeset for help on using the changeset viewer.