Changeset 25124

Show
Ignore:
Timestamp:
21.02.2012 16:22:47 (8 years ago)
Author:
sjm84
Message:

Added a new service to get the details about a user

Files:
1 modified

Legend:

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

    r24978 r25124  
    99import org.w3c.dom.NodeList; 
    1010 
     11import java.util.HashMap; 
    1112import java.util.Vector; 
    1213import java.sql.SQLException; 
     
    1920    //the services on offer 
    2021    protected static final String AUTHENTICATION_SERVICE = "Authentication"; 
     22    protected static final String GET_USER_INFORMATION_SERVICE = "GetUserInformation"; 
    2123 
    2224    /** constructor */ 
     
    3638        this.short_service_info.appendChild(authentication_service); 
    3739 
     40        // set up Authentication service info - for now just has name and type 
     41        Element getUserInformation_service = this.doc.createElement(GSXML.SERVICE_ELEM); 
     42        getUserInformation_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS); 
     43        getUserInformation_service.setAttribute(GSXML.NAME_ATT, GET_USER_INFORMATION_SERVICE); 
     44        this.short_service_info.appendChild(getUserInformation_service); 
     45 
    3846        return true; 
    3947    } 
     
    4957            authen_service.setAttribute(GSXML.NAME_ATT, AUTHENTICATION_SERVICE); 
    5058        } 
     59        else if (service_id.equals(GET_USER_INFORMATION_SERVICE)) 
     60        { 
     61            authen_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS); 
     62            authen_service.setAttribute(GSXML.NAME_ATT, GET_USER_INFORMATION_SERVICE); 
     63        } 
    5164        else 
    5265        { 
     
    5467        } 
    5568 
    56         if (subset == null || subset.equals(GSXML.DISPLAY_TEXT_ELEM + GSXML.LIST_MODIFIER)) 
     69        if (service_id.equals(AUTHENTICATION_SERVICE) && (subset == null || subset.equals(GSXML.DISPLAY_TEXT_ELEM + GSXML.LIST_MODIFIER))) 
    5770        { 
    5871            authen_service.appendChild(GSXML.createDisplayTextElement(this.doc, GSXML.DISPLAY_TEXT_NAME, getServiceName(service_id, lang))); 
     
    8396    protected void createParameter(String name, Element param_list, String lang) 
    8497    { 
     98    } 
     99 
     100    protected Element processGetUserInformation(Element request) 
     101    { 
     102        // Create a new (empty) result message 
     103        Element result = this.doc.createElement(GSXML.RESPONSE_ELEM); 
     104 
     105        result.setAttribute(GSXML.FROM_ATT, GET_USER_INFORMATION_SERVICE); 
     106        result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); 
     107 
     108        Element paramList = (Element) GSXML.getChildByTagName(request, GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 
     109        if (paramList == null) 
     110        { 
     111            logger.error(GET_USER_INFORMATION_SERVICE + ": Param list does not exist "); 
     112            return null; 
     113        } 
     114 
     115        HashMap params = GSXML.extractParams(paramList, true); 
     116 
     117        String username = (String) params.get("username"); 
     118 
     119        if (username == null) 
     120        { 
     121            logger.error(GET_USER_INFORMATION_SERVICE + ": No username specified"); 
     122            return result; 
     123        } 
     124 
     125        DerbyWrapper dbWrapper = new DerbyWrapper(); 
     126 
     127        String usersDB_dir = this.site_home + File.separatorChar + "etc" + File.separatorChar + "usersDB"; 
     128        dbWrapper.connectDatabase(usersDB_dir, true); 
     129 
     130        UserQueryResult userQueryResult; 
     131        try 
     132        { 
     133            userQueryResult = dbWrapper.findUser(username); 
     134            Vector<UserTermInfo> terms = userQueryResult.getUserTerms(); 
     135 
     136            if (terms.size() == 0) 
     137            { 
     138                logger.error(GET_USER_INFORMATION_SERVICE + ": Requested user was not found"); 
     139                return result; 
     140            } 
     141 
     142            UserTermInfo userInfo = terms.get(0); 
     143            Element userInfoList = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 
     144            result.appendChild(userInfoList); 
     145 
     146            Element usernameField = GSXML.createParameter(this.doc, "username", userInfo.username_); 
     147            Element passwordField = GSXML.createParameter(this.doc, "password", userInfo.password_); 
     148            Element groupsField = GSXML.createParameter(this.doc, "groups", userInfo.groups_); 
     149            Element accountStatusField = GSXML.createParameter(this.doc, "accountstatus", userInfo.accountstatus_); 
     150            Element commentField = GSXML.createParameter(this.doc, "comment", userInfo.comment_); 
     151 
     152            userInfoList.appendChild(usernameField); 
     153            userInfoList.appendChild(passwordField); 
     154            userInfoList.appendChild(groupsField); 
     155            userInfoList.appendChild(accountStatusField); 
     156            userInfoList.appendChild(commentField); 
     157        } 
     158        catch (Exception ex) 
     159        { 
     160            ex.printStackTrace(); 
     161        } 
     162 
     163        return result; 
    85164    } 
    86165