Changeset 25128

Show
Ignore:
Timestamp:
21.02.2012 16:26:17 (8 years ago)
Author:
sjm84
Message:

Second round of changes adding in the login ability, also interface options are now returned whenever site metadata is returned

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

Legend:

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

    r25092 r25128  
    1414import javax.servlet.http.*; 
    1515 
    16 import java.security.Principal; 
    1716import java.util.Collection; 
    1817import java.util.Enumeration; 
     
    9998     */ 
    10099    protected Hashtable session_ids_table = new Hashtable(); 
    101      
     100 
    102101    /** 
    103102     * the maximum interval that the cached info remains in session_ids_table 
     
    722721            request.login(username[0], password[0]); 
    723722        } 
    724          
    725         if(request.getAuthType() != null) 
     723 
     724        if (request.getAuthType() != null) 
    726725        { 
    727726            Element userInformation = this.doc.createElement("userInformation"); 
    728727            xml_request.appendChild(userInformation); 
    729728            userInformation.setAttribute("username", request.getUserPrincipal().getName()); 
    730         } 
    731              
     729 
     730            Element userInfoMessage = this.doc.createElement(GSXML.MESSAGE_ELEM); 
     731            Element userInfoRequest = GSXML.createBasicRequest(this.doc, GSXML.REQUEST_TYPE_SECURITY, "GetUserInformation", userContext); 
     732            userInfoMessage.appendChild(userInfoRequest); 
     733 
     734            Element paramList = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 
     735            userInfoRequest.appendChild(paramList); 
     736 
     737            Element param = this.doc.createElement(GSXML.PARAM_ELEM); 
     738            param.setAttribute(GSXML.NAME_ATT, "username"); 
     739            param.setAttribute(GSXML.VALUE_ATT, request.getUserPrincipal().getName()); 
     740            paramList.appendChild(param); 
     741 
     742            Element userInformationResponse = (Element) GSXML.getChildByTagName(this.recept.process(userInfoMessage), GSXML.RESPONSE_ELEM); 
     743            Element responseParamList = (Element) GSXML.getChildByTagName(userInformationResponse, GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 
     744            if (responseParamList == null) 
     745            { 
     746                logger.error("Can't get the groups for user " + request.getUserPrincipal().getName()); 
     747            } 
     748 
     749            HashMap responseParams = GSXML.extractParams(responseParamList, true); 
     750            String groups = (String) responseParams.get("groups"); 
     751 
     752            userInformation.setAttribute("groups", groups); 
     753        } 
    732754 
    733755        //If we are in a collection-related page then make sure this user is allowed to access it 
     
    771793                    Element paramList = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 
    772794                    loginPageRequest.appendChild(paramList); 
    773                      
     795 
    774796                    Element messageParam = this.doc.createElement(GSXML.PARAM_ELEM); 
    775797                    messageParam.setAttribute(GSXML.NAME_ATT, "loginMessage"); 
    776                     if(request.getAuthType() == null) 
     798                    if (request.getAuthType() == null) 
    777799                    { 
    778800                        messageParam.setAttribute(GSXML.VALUE_ATT, "Please log in to view this page"); 
     
    780802                    else 
    781803                    { 
    782                         messageParam.setAttribute(GSXML.VALUE_ATT, "You are not in the correct group to view this page"); 
     804                        messageParam.setAttribute(GSXML.VALUE_ATT, "You are not in the correct group to view this page, would you like to log in as a different user?"); 
    783805                    } 
    784806                    paramList.appendChild(messageParam); 
    785                      
     807 
    786808                    Element urlParam = this.doc.createElement(GSXML.PARAM_ELEM); 
    787809                    urlParam.setAttribute(GSXML.NAME_ATT, "redirectURL"); 
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/Action.java

    r24993 r25128  
    255255    } 
    256256 
     257    protected void addInterfaceOptions(Element elem) 
     258    { 
     259        Element documentOptionList = this.doc.createElement("interfaceOptions"); 
     260        for(Object key : this.config_params.keySet()) 
     261        { 
     262            Element option = this.doc.createElement("option"); 
     263            option.setAttribute(GSXML.NAME_ATT, (String)key); 
     264            option.setAttribute(GSXML.VALUE_ATT, this.config_params.get(key).toString()); 
     265            documentOptionList.appendChild(option); 
     266        } 
     267        elem.appendChild(elem.getOwnerDocument().importNode(documentOptionList, true)); 
     268    } 
    257269} 
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/BrowseAction.java

    r24993 r25128  
    9292    //append site metadata 
    9393    addSiteMetadata(page_response, userContext); 
     94    addInterfaceOptions(page_response); 
    9495 
    9596    // if rt=d, then we are just displaying the service 
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/DocumentAction.java

    r24993 r25128  
    147147        //append site metadata 
    148148        addSiteMetadata(page_response, userContext); 
     149        addInterfaceOptions(page_response); 
    149150 
    150151        // get the additional data needed for the page 
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/GS2BrowseAction.java

    r24993 r25128  
    8686        //append site metadata 
    8787        addSiteMetadata(page_response, userContext); 
     88        addInterfaceOptions(page_response); 
    8889 
    8990        // if rt=d, then we are just displaying the service 
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/GeneralAction.java

    r24993 r25128  
    22 
    33import org.greenstone.gsdl3.util.*; 
     4import org.greenstone.util.GlobalProperties; 
    45// XML classes 
     6import org.w3c.dom.Document; 
    57import org.w3c.dom.Node; 
    68import org.w3c.dom.Element; 
     9import org.w3c.dom.NodeList; 
    710 
     11import java.io.File; 
    812import java.util.HashMap; 
     13 
     14import javax.xml.parsers.DocumentBuilder; 
     15import javax.xml.parsers.DocumentBuilderFactory; 
     16import javax.xml.transform.Result; 
     17import javax.xml.transform.Transformer; 
     18import javax.xml.transform.TransformerFactory; 
     19import javax.xml.transform.dom.DOMSource; 
     20import javax.xml.transform.stream.StreamResult; 
    921 
    1022public class GeneralAction extends Action 
     
    3143        Element cgi_param_list = (Element) GSXML.getChildByTagName(request, GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 
    3244        HashMap params = GSXML.extractParams(cgi_param_list, false); 
     45 
     46        if (params.get("configChangeName") != null && params.get("configChangeValue") != null) 
     47        { 
     48            String optionName = (String) params.get("configChangeName"); 
     49            String optionValue = (String) params.get("configChangeValue"); 
     50             
     51            changeConfig(optionName, optionValue); 
     52        } 
     53 
    3354        String service_name = (String) params.get(GSParams.SERVICE); 
    3455        String cluster_name = (String) params.get(GSParams.CLUSTER); 
     
    6687            Element mr_query_message = this.doc.createElement(GSXML.MESSAGE_ELEM); 
    6788            Element mr_query_request = GSXML.createBasicRequest(this.doc, GSXML.REQUEST_TYPE_PROCESS, to, userContext); 
    68              
    69             if(request_type.equals("s")) 
     89 
     90            if (request_type.equals("s")) 
    7091            { 
    7192                mr_query_request.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_STATUS); 
     
    91112                // just send the reponse as is 
    92113                addSiteMetadata(result_response, userContext); 
     114                addInterfaceOptions(result_response); 
    93115                return result_response; 
    94116            } 
     
    107129        mr_info_message.appendChild(mr_info_request); 
    108130        Element mr_info_response = (Element) this.mr.process(mr_info_message); 
    109          
     131 
    110132        String path = GSXML.RESPONSE_ELEM; 
    111133        path = GSPath.appendLink(path, GSXML.SERVICE_ELEM); 
     
    118140 
    119141        addSiteMetadata(page_response, userContext); 
    120          
     142        addInterfaceOptions(page_response); 
     143 
    121144        return result; 
    122145    } 
     146     
     147    protected void changeConfig (String optionName, String optionValue) 
     148    { 
     149        if(this.config_params.get(optionName) != null) 
     150        { 
     151            this.config_params.put(optionName, optionValue); 
     152             
     153            File interfaceConfigFile = new File(GSFile.interfaceConfigFile(GSFile.interfaceHome(GlobalProperties.getGSDL3Home(), (String)this.config_params.get("interface_name")))); 
     154             
     155            Document interfaceXML = null; 
     156            try 
     157            { 
     158                DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
     159                DocumentBuilder db = dbf.newDocumentBuilder(); 
     160                interfaceXML = db.parse(interfaceConfigFile); 
     161                Element topElement = interfaceXML.getDocumentElement(); 
     162                Element optionListElem = (Element) GSXML.getChildByTagName(topElement, "optionList"); 
    123163 
     164                NodeList optionList = optionListElem.getElementsByTagName("option"); 
     165                 
     166                for(int i = 0; i < optionList.getLength(); i++) 
     167                { 
     168                    Element currentOption = (Element)optionList.item(i); 
     169                    if(currentOption.getAttribute(GSXML.NAME_ATT) != null && currentOption.getAttribute(GSXML.NAME_ATT).equals(optionName)) 
     170                    { 
     171                        currentOption.setAttribute(GSXML.VALUE_ATT, optionValue); 
     172                    } 
     173                } 
     174                 
     175                DOMSource source = new DOMSource(interfaceXML); 
     176                Result xmlresult = new StreamResult(interfaceConfigFile); 
     177 
     178                Transformer transformer = TransformerFactory.newInstance().newTransformer(); 
     179                transformer.transform(source, xmlresult); 
     180            } 
     181            catch(Exception ex) 
     182            { 
     183                ex.printStackTrace(); 
     184            } 
     185        } 
     186        else 
     187        { 
     188            logger.error("Could not set param \"" + optionName + "\" to \"" + optionValue + "\" because that option does not exist."); 
     189        } 
     190    } 
    124191} 
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/PageAction.java

    r24993 r25128  
    1717public class PageAction extends Action 
    1818{ 
    19  
    2019    static Logger logger = Logger.getLogger(org.greenstone.gsdl3.action.PageAction.class.getName()); 
    2120 
     
    2726    public Node process(Node message_node) 
    2827    { 
    29  
    3028        Element message = this.converter.nodeToElement(message_node); 
    3129 
     
    6866    protected Element homePage(Element request) 
    6967    { 
    70  
    7168        UserContext userContext = new UserContext(request); 
    7269        // first, get the message router info 
     
    130127    protected Element aboutPage(Element request) 
    131128    { 
    132  
    133129        UserContext userContext = new UserContext(request); 
    134130        // extract the params from the cgi-request,  
     
    143139            Element response = this.doc.createElement(GSXML.RESPONSE_ELEM); 
    144140            addSiteMetadata(response, userContext); 
     141            addInterfaceOptions(response); 
    145142            return response; 
    146143        } 
     
    200197        //add the site metadata 
    201198        addSiteMetadata(response, userContext); 
     199        addInterfaceOptions(response); 
    202200        return response; 
    203201    } 
     
    224222            Element response = this.doc.createElement(GSXML.RESPONSE_ELEM); 
    225223            addSiteMetadata(response, userContext); 
     224            addInterfaceOptions(response); 
    226225            return response; 
    227226        } 
     
    242241        //add the site metadata 
    243242        addSiteMetadata(response, userContext); 
     243        addInterfaceOptions(response); 
    244244 
    245245        return response; 
     
    249249    protected boolean sendMultipleRequests(NodeList items, String path_prefix, String request_type, UserContext userContext) 
    250250    { 
    251  
    252251        // we will send all the requests in a single message 
    253252        Element message = this.doc.createElement(GSXML.MESSAGE_ELEM); 
     
    321320        return page_response; 
    322321    } 
    323  
    324322} 
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/QueryAction.java

    r24993 r25128  
    9797            //append site metadata 
    9898            addSiteMetadata(page_response, userContext); 
     99            addInterfaceOptions(page_response); 
    99100            return page_response; 
    100101        } 
     
    106107            //append site metadata 
    107108            addSiteMetadata(page_response, userContext); 
     109            addInterfaceOptions(page_response); 
    108110            return page_response; 
    109111        } 
     
    132134            //append site metadata 
    133135            addSiteMetadata(page_response, userContext); 
     136            addInterfaceOptions(page_response); 
    134137            return page_response; 
    135138        } 
     
    168171            //append site metadata 
    169172            addSiteMetadata(page_response, userContext); 
     173            addInterfaceOptions(page_response); 
    170174            return page_response; 
    171175        } 
     
    180184            //append site metadata 
    181185            addSiteMetadata(page_response, userContext); 
     186            addInterfaceOptions(page_response); 
    182187            return page_response; 
    183188        } 
     
    236241        //append site metadata 
    237242        addSiteMetadata(page_response, userContext); 
     243        addInterfaceOptions(page_response); 
    238244        return page_response; 
    239245    }