Ignore:
Timestamp:
2018-12-03T13:07:00+13:00 (5 years ago)
Author:
kjdon
Message:

we are now putting group info into restful url, eg library/group/MyGroup/SubGroup, or library/collection/MyGroup/collname

File:
1 edited

Legend:

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

    r30483 r32646  
    44import java.io.IOException;
    55import java.util.ArrayList;
     6import java.util.Arrays;
    67import java.util.HashMap;
    78import java.util.Map;
     
    2021
    2122import org.apache.commons.io.FileUtils;
     23import org.apache.commons.lang.StringUtils;
     24
    2225import org.apache.log4j.Logger;
    2326import org.greenstone.gsdl3.util.GSParams;
     
    4952    protected static final String DOCUMENT_PATH = "document";
    5053    protected static final String COLLECTION_PATH = "collection";
     54  protected static final String GROUP_PATH = "group";
    5155    protected static final String PAGE_PATH = "page";
    5256    protected static final String SYSTEM_PATH = "system";
     57  protected static final String BROWSE_PATH = "browse";
     58  protected static final String SEARCH_PATH = "search";
    5359
    5460    protected static final String METADATA_RETRIEVAL_SERVICE = "DocumentMetadataRetrieve";
     
    8389            GSHttpServletRequestWrapper gRequest = new GSHttpServletRequestWrapper(hRequest);
    8490
     91            // this is the part before the ?
    8592            String url = hRequest.getRequestURI().toString();
    8693
     
    235242            else
    236243            {
     244              ArrayList<String> keywords = new ArrayList<String>();
     245              keywords.add(PAGE_PATH);
     246              keywords.add(BROWSE_PATH);
     247              keywords.add(SEARCH_PATH);
    237248                //If we have a jsessionid on the end of our URL we want to ignore it
    238249                int index;
     
    246257                    String[] additionalParameters = null;
    247258                    String[] defaultParamValues = null;
    248 
    249259                    //COLLECTION
    250                     if (segments[i].equals(COLLECTION_PATH) && (i + 1) < segments.length)
    251                     {
    252                         gRequest.setParameter(GSParams.COLLECTION, segments[i + 1]);
    253                     }
     260                    if (segments[i].equals(COLLECTION_PATH) && (i + 1) < segments.length) {
     261                      int j=i+1;
     262                      while(j+1 < segments.length && !keywords.contains(segments[j+1])) {
     263                        j++;
     264                      }
     265                     
     266                      if (j>i+1) {
     267                        // we had a group part
     268                        String [] groups = Arrays.copyOfRange(segments, i+1, j);
     269                        String group = StringUtils.join(groups, "/");
     270                        gRequest.setParameter(GSParams.GROUP, group);
     271                      }
     272                      gRequest.setParameter(GSParams.COLLECTION, segments[j]);
     273                    }
     274                    // GROUP
     275                    else if(segments[i].equals(GROUP_PATH) && (i + 1) < segments.length)
     276                      {
     277                        // assume for now, no other path parts for group links
     278                        int j= segments.length - 1;
     279                        String group;
     280                        if (j==i+1) {
     281                          group = segments[j];
     282                        } else {
     283                          String [] groups = Arrays.copyOfRange(segments, i+1, j+1);
     284                          group = StringUtils.join(groups, "/");
     285                        }
     286                        gRequest.setParameter(GSParams.GROUP, group);
     287                        gRequest.setParameter(GSParams.ACTION, "p");
     288                        gRequest.setParameter(GSParams.SUBACTION, "home");
     289                       
     290                      }
    254291                    //DOCUMENT
    255292                    else if (segments[i].equals(DOCUMENT_PATH) && (i + 1) < segments.length)
     
    317354                    }
    318355                    //BROWSE
    319                     else if (segments[i].equals("browse") && (i + 1) < segments.length)
     356                    else if (segments[i].equals(BROWSE_PATH) && (i + 1) < segments.length)
    320357                    {
    321358                        String cl = "";
     
    361398                    }
    362399                    //QUERY
    363                     else if (segments[i].equals("search"))
     400                    else if (segments[i].equals(SEARCH_PATH))
    364401                    {
    365402                        String serviceName = "";
Note: See TracChangeset for help on using the changeset viewer.