Examples of GeonetworkResumptionToken


Examples of org.fao.oaipmh.responses.GeonetworkResumptionToken

    //UserSession  session = context.getUserSession();
    SearchResult result;

    //String token = req.getResumptionToken();
    String strToken = req.getResumptionToken();
    GeonetworkResumptionToken token = null;
   

   
    int pos = 0;

    if ( strToken == null )
    {
            if(Log.isDebugEnabled(Geonet.OAI_HARVESTER))
                Log.debug(Geonet.OAI_HARVESTER,"OAI " +this.getClass().getSimpleName()+ " : new request (no resumptionToken)");
      Element params = new Element("request");

      ISODate from   = req.getFrom();
      ISODate until  = req.getUntil();
      String  set    = req.getSet();
      String  prefix = req.getMetadataPrefix();

      if (from != null)
      {
        String sFrom = from.isDateOnly() ? from.getDateAsString() : from.toString();
        params.addContent(new Element(getDateFrom()).setText(sFrom));
      }

      if (until != null)
      {
        String sTo = until.isDateOnly() ? until.getDateAsString() : until.toString();
        params.addContent(new Element(getDateUntil()).setText(sTo));
      }

      if (from != null && until != null && from.timeDifferenceInSeconds(until) > 0)
        throw new BadArgumentException("From is greater than until");

      if (set != null)
        params.addContent(new Element("category").setText(set));

      params.addContent(new Element("_schema").setText(prefix));

      // now do the search
      result     = new SearchResult(prefix);
      if (schemaMan.existsSchema(prefix)) {
        result.setIds(Lib.search(context, params));
      } else {
        // collect up all the schemas that we can convert to create prefix,
        // search ids and add to the result set
        List<String> schemas = getSchemasThatCanConvertTo(prefix);
        for (String schema : schemas) {
          params.removeChild("_schema");
          params.addContent(new Element("_schema").setText(schema));
          result.addIds(Lib.search(context, (Element)params.clone()));
        }
        if (schemas.size() == 0) result.setIds(new ArrayList<Integer>());
      }

      if (result.getIds().size() == 0)
        throw new NoRecordsMatchException("No results");

      // we only need a new token if the result set is big enough
      if (result.getIds().size() > Lib.MAX_RECORDS ) {
        token = new GeonetworkResumptionToken(req,result);
        cache.storeResumptionToken(token);
      }
     
    }
    else
    {
      //result = (SearchResult) session.getProperty(Lib.SESSION_OBJECT);
      token = cache.getResumptionToken( GeonetworkResumptionToken.buildKey(req)  );
            if(Log.isDebugEnabled(Geonet.OAI_HARVESTER))
                Log.debug(Geonet.OAI_HARVESTER,"OAI ListRecords : using ResumptionToken :"+GeonetworkResumptionToken.buildKey(req));
     
      if (token  == null)
        throw new BadResumptionTokenException("No session for token : "+ GeonetworkResumptionToken.buildKey(req));

      result = token.getRes();
     
      //pos = result.parseToken(token);
      pos = GeonetworkResumptionToken.getPos(req);
    }

    ListResponse res = processRequest(req,pos,result,context);
    pos = pos + res.getSize();
   
    if (token == null && res.getSize() == 0)
      throw new NoRecordsMatchException("No results");
   
    //result.setupToken(res, pos);
    if (token != null) token.setupToken(pos);
    res.setResumptionToken(token);

    return res;
   
   
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.