Ignore:
Timestamp:
2016-05-16T14:24:50+12:00 (8 years ago)
Author:
Georgiy Litvinov
Message:

Added collection groups. Config file in web/sites/localsite/groupConfig.xml
PageAction now send request to CollectionGroups service to retrieve information about collections and groups.

File:
1 edited

Legend:

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

    r28964 r30540  
    2626
    2727    public Node process(Node message_node)
     28   
    2829    {
    2930        Element message = GSXML.nodeToElement(message_node);
     
    9293      Document doc = XMLConverter.newDOM();
    9394       
     95
    9496        UserContext userContext = new UserContext(request);
    9597        // first, get the message router info
    9698        Element info_message = doc.createElement(GSXML.MESSAGE_ELEM);
    97         Element coll_list_request = GSXML.createBasicRequest(doc, GSXML.REQUEST_TYPE_DESCRIBE, "", userContext);
    98         info_message.appendChild(coll_list_request);
     99        Element info_request = GSXML.createBasicRequest(doc, GSXML.REQUEST_TYPE_DESCRIBE, "", userContext);
     100        //Create param list
     101        Element param_list_element = doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);
     102        info_request.appendChild(param_list_element);
     103        //Describe params without collectionlist. Collectionlist provided by CollectionGroup service
     104        GSXML.addParameterToList(param_list_element, GSXML.SUBSET_PARAM, GSXML.CLUSTER_ELEM + GSXML.LIST_MODIFIER);
     105        GSXML.addParameterToList(param_list_element, GSXML.SUBSET_PARAM, GSXML.SERVICE_ELEM + GSXML.LIST_MODIFIER);
     106        GSXML.addParameterToList(param_list_element, GSXML.SUBSET_PARAM, GSXML.SITE_ELEM + GSXML.LIST_MODIFIER);
     107        GSXML.addParameterToList(param_list_element, GSXML.SUBSET_PARAM, GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER);
     108        info_message.appendChild(info_request);
     109        //Send request to message router
    99110        Element info_response_message = (Element) this.mr.process(info_message);
     111        //Check if it is not null
    100112        if (info_response_message == null)
    101113        {
     
    103115            return null;
    104116        }
     117        //Check if it is not null
    105118        Element info_response = (Element) GSXML.getChildByTagName(info_response_message, GSXML.RESPONSE_ELEM);
    106119        if (info_response == null)
     
    108121            logger.error("couldn't query the message router!");
    109122            return null;
     123        }
     124       
     125        Element resp_service_list = (Element) GSXML.getChildByTagName(info_response, GSXML.SERVICE_ELEM + GSXML.LIST_MODIFIER);
     126       
     127        if (resp_service_list == null) {
     128            logger.error("No services available. Couldn't query the message router!");
     129            return null;
     130        }
     131        Element groupInfoService = GSXML.getNamedElement(resp_service_list, GSXML.SERVICE_ELEM, GSXML.TYPE_ATT,
     132                GSXML.SERVICE_TYPE_GROUPINFO);
     133        if (groupInfoService != null) {
     134            // Prepare request for CollectionGroup service to get current
     135            // collections and groups list
     136            Element group_info_message = doc.createElement(GSXML.MESSAGE_ELEM);
     137            Element group_info_request = GSXML.createBasicRequest(doc, GSXML.TO_ATT,
     138                    groupInfoService.getAttribute(GSXML.NAME_ATT), userContext);
     139            group_info_message.appendChild(group_info_request);
     140            //Append group request if exists
     141            Element paramList = (Element) GSXML.getChildByTagName(request, GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER);
     142            if (paramList != null) {
     143                group_info_request.appendChild(doc.importNode(paramList, true));
     144            }
     145            Element group_info_response_message = (Element) this.mr.process(group_info_message);
     146            Element group_info_response = (Element) GSXML.getChildByTagName(group_info_response_message,
     147                    GSXML.RESPONSE_ELEM);
     148            Element collection_list = (Element) GSXML.getChildByTagName(group_info_response,
     149                    GSXML.COLLECTION_ELEM + GSXML.LIST_MODIFIER);
     150            // Add Collection List from CollectionGroup Service to response
     151            // from message router
     152            info_response = (Element) doc.importNode(info_response, true);
     153            if (collection_list != null) {
     154                info_response.appendChild(doc.importNode(collection_list, true));
     155            }
     156            Element group_list = (Element) GSXML.getChildByTagName(group_info_response,
     157                    GSXML.GROUP_ELEM + GSXML.LIST_MODIFIER);
     158            if (group_list != null) {
     159                info_response.appendChild(doc.importNode(group_list, true));
     160            }
     161            // Send message to groupInfoType Services
     162        } else {
     163            // If no service with type SERVICE_TYPE_GROUPINFO could be provided
     164            // request message router for all available collections
     165            GSXML.addParameterToList(param_list_element, GSXML.SUBSET_PARAM,
     166                    GSXML.COLLECTION_ELEM + GSXML.LIST_MODIFIER);
     167            info_response_message = (Element) this.mr.process(info_message);
     168
     169            if (info_response_message == null) {
     170                logger.error(" couldn't query the message router!");
     171                return null;
     172            }
     173            info_response = (Element) GSXML.getChildByTagName(info_response_message, GSXML.RESPONSE_ELEM);
     174            if (info_response == null) {
     175                logger.error("couldn't query the message router!");
     176                return null;
     177            }
    110178        }
    111179
     
    113181        // elements but for now, we'll just get it all
    114182        Element collection_list = (Element) GSXML.getChildByTagName(info_response, GSXML.COLLECTION_ELEM + GSXML.LIST_MODIFIER);
    115         logger.debug(GSXML.xmlNodeToString(collection_list));
     183        //logger.debug(GSXML.xmlNodeToString(collection_list));
    116184        if (collection_list != null)
    117185        {
Note: See TracChangeset for help on using the changeset viewer.