Package org.w3c.jigsaw.pics

Source Code of org.w3c.jigsaw.pics.LabelBureauFrame

// LabelBureauFrame.java
// $Id: LabelBureauFrame.java,v 1.6 2000/08/16 21:37:43 ylafon Exp $
// (c) COPYRIGHT MIT and INRIA, 1998.
// Please first read the full copyright statement in file COPYRIGHT.html

package org.w3c.jigsaw.pics ;

import org.w3c.tools.resources.FramedResource;
import org.w3c.tools.resources.ProtocolException;

import org.w3c.www.http.HTTP;

import org.w3c.jigsaw.http.HTTPException;
import org.w3c.jigsaw.http.Reply;
import org.w3c.jigsaw.http.Request;

import org.w3c.jigsaw.forms.URLDecoder;
import org.w3c.jigsaw.forms.URLDecoderException;

import org.w3c.jigsaw.frames.HTTPFrame;
import org.w3c.jigsaw.frames.PostableFrame;

/**
* @version $Revision: 1.6 $
* @author  Beno�t Mah� (bmahe@w3.org)
*/
public class LabelBureauFrame extends PostableFrame {

    protected LabelBureauResource labelb = null;

    /**
     * Register our resource. Must be an instance of ServletWrapper.
     */
    public void registerResource(FramedResource resource) {
  super.registerOtherResource(resource);
  if (resource instanceof LabelBureauResource)
      labelb = (LabelBureauResource) resource;
    }

    /**
     * Parse the URLs given in the URLDecoder, as the <strong>u</strong> field.
     * This method just unquote any quoted URLs, before sending them back.
     * @param data The URLDecoder to get data from.
     * @return An array of String, properly parsed.
     */

    protected String[] parseURLs (String us[]) {
  //FIXME .... no FIX IE!
  if (us[0] == null)
      return null;
  String urls[] = new String[us.length] ;
  for (int i = 0 ; i < us.length ; i++) {
      if ( us[i].charAt(0) == '"' ) {
    int ulen = us[i].length() ;
    // unquote only if last char is a quote, otherwise, leave as is
    // which will trigger an exception when trying to build the URL
    // object out of it.
    if (us[i].charAt(ulen-1) == '"')
        urls[i] = us[i].substring(1, ulen-1) ;
      } else {
    urls[i] = us[i] ;
      }
  }
  return urls ;
    }

    /**
     * Get the integer code for the String based PICS format.
     * @param request The request to be handled.
     * @param format The string representation of the format.
     * @return An LabelBureauInterface defined format code.
     * @exception HTTPException if processing the request failed.
     * @see org.w3c.jigsaw.pics.LabelBureauInterface
     */

    protected int parseFormat (Request request, String format)
  throws HTTPException
    {
  if ( format == null ) {
      return LabelBureauInterface.FMT_FULL;
  } else if ( format.equals ("minimal") ) {
      return LabelBureauInterface.FMT_MINIMAL ;
  } else if ( format.equals ("short") ) {
      return LabelBureauInterface.FMT_SHORT ;
  } else if ( format.equals ("full") ) {
      return LabelBureauInterface.FMT_FULL ;
  } else if ( format.equals ("signed") ) {
      return LabelBureauInterface.FMT_SIGNED ;
  }
  Reply error = request.makeReply(HTTP.BAD_REQUEST) ;
  error.setContent ("Unknown label format: "+format);
  throw new HTTPException (error) ;
    }

    /**
     * Handle the request.
     * @param request The request to be handled.
     * @param data The URLDecoder
     * @return A Reply instance.
     * @exception ProtocolException if processing the request failed.
     * @see org.w3c.jigsaw.pics.LabelBureauInterface
     */
    public Reply handle (Request request, URLDecoder data)
  throws ProtocolException
    {
  if (labelb == null) {
      Reply reply = request.makeReply(HTTP.INTERNAL_SERVER_ERROR);
      reply.setContent("LabelBureauFrame not configured properly: "+
           "must be attached to a LabelBureauResource.");
      throw new HTTPException(reply);
  }
  // Get opt (only generic/normal/insert)
  String opt        = data.getValue("opt") ;
  String urls[]     = parseURLs (data.getMultipleValues ("u")) ;
  int    iformat   = parseFormat(request,data.getValue("format"));
  String services[] = parseURLs (data.getMultipleValues ("s")) ;
  if (services == null)
      services = labelb.getServices();
  if ((services == null) || (services.length == 0))
      return labelb.makePICSErrorReply(request,
             "no-ratings \"unknown service\"");
  // Perform request
  if (labelb.getDebugFlag()) {
      System.out.println("******** PICS REQUEST ********");
      System.out.println("opt      : "+opt);
      System.out.println("format   : "+data.getValue("format"));
      System.out.print("services : ");
      for (int i=0; i < services.length; i++)
    System.out.println(services[i]);
      System.out.print("urls     : ");
      for (int i=0; i < urls.length; i++)
    System.out.println(urls[i]);
      System.out.println("******************************");
  }
  if ( opt.equals ("generic") ) {
      return labelb.getGenericLabels (request, iformat,
              urls, services, data) ;
  } else if ( opt.equals ("normal") ) {
      return labelb.getNormalLabels (request, iformat, urls,
             services, data) ;
  } else if ( opt.equals ("tree") ) {
      return labelb.getTreeLabels (request, iformat, urls,
           services, data) ;
  } else  if ( opt.equals ("generic+tree") ) {
      return labelb.getGenericTreeLabels(request,iformat,
                 urls, services, data);
  } else {
      Reply error = request.makeReply(HTTP.BAD_REQUEST);
      error.setContent ("Invalid label bureau query, bad option: "+opt);
      throw new HTTPException (error) ;
  }
    }
}
TOP

Related Classes of org.w3c.jigsaw.pics.LabelBureauFrame

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.