Changeset 28233

Show
Ignore:
Timestamp:
06.09.2013 11:17:55 (6 years ago)
Author:
sjm84
Message:

Adding a new edit mode flag

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

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)