Changeset 32646

Show
Ignore:
Timestamp:
03.12.2018 13:07:00 (11 days ago)
Author:
kjdon
Message:

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

Files:
1 modified

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 = "";