Package org.apache.slide.projector.processor.core

Source Code of org.apache.slide.projector.processor.core.Link

package org.apache.slide.projector.processor.core;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.apache.slide.projector.Constants;
import org.apache.slide.projector.Context;
import org.apache.slide.projector.HttpContext;
import org.apache.slide.projector.ProcessException;
import org.apache.slide.projector.Processor;
import org.apache.slide.projector.Result;
import org.apache.slide.projector.URI;
import org.apache.slide.projector.descriptor.BooleanValueDescriptor;
import org.apache.slide.projector.descriptor.MapValueDescriptor;
import org.apache.slide.projector.descriptor.ParameterDescriptor;
import org.apache.slide.projector.descriptor.ResultDescriptor;
import org.apache.slide.projector.descriptor.StateDescriptor;
import org.apache.slide.projector.descriptor.StringValueDescriptor;
import org.apache.slide.projector.descriptor.URIValueDescriptor;
import org.apache.slide.projector.i18n.ErrorMessage;
import org.apache.slide.projector.i18n.ParameterMessage;
import org.apache.slide.projector.processor.SimpleProcessor;
import org.apache.slide.projector.processor.process.Process;
import org.apache.slide.projector.value.BooleanValue;
import org.apache.slide.projector.value.MapValue;
import org.apache.slide.projector.value.NullValue;
import org.apache.slide.projector.value.StringValue;
import org.apache.slide.projector.value.Value;

public class Link implements Processor {
  private final static String PROCESSOR = "processor";
  private final static String CONTINUE = "continue";
  private final static String PARAMETERS = "parameterS";
 
  private final static ParameterDescriptor[] parameterDescriptors = new ParameterDescriptor[] {
      new ParameterDescriptor(PROCESSOR, new ParameterMessage("link/parameter/processor"), new URIValueDescriptor()),
      new ParameterDescriptor(Process.STEP, new ParameterMessage("link/parameter/step"), new StringValueDescriptor(), new NullValue()),
      new ParameterDescriptor(CONTINUE, new ParameterMessage("link/parameter/continue"), new BooleanValueDescriptor(), BooleanValue.TRUE),
      new ParameterDescriptor(PARAMETERS, new ParameterMessage("link/parameter/parameters"), MapValueDescriptor.ANY, new MapValue(new HashMap()))
  };
  private final static ResultDescriptor resultDescriptor = new ResultDescriptor(new StateDescriptor[] { StateDescriptor.OK_DESCRIPTOR });
 
  public Result process(Map parameter, Context context) throws Exception {
    URI uri = (URI)parameter.get(PROCESSOR);
    boolean continueProcess = ((BooleanValue)parameter.get(CONTINUE)).booleanValue();
    MapValue parameterMap = (MapValue)parameter.get(PARAMETERS);
    Value step = (Value)parameter.get(Process.STEP);
    StringBuffer linkBuffer = new StringBuffer(128);
    if ( context instanceof HttpContext ) {
            linkBuffer.append(((HttpContext)context).getContextPath()).append(uri);
            boolean first = true;
            if ( continueProcess ) {
              parameterMap.getMap().put(Constants.PROCESS_ID_PARAMETER, context.getProcessId());
            }
            if ( step != null ) {
              parameterMap.getMap().put(Process.STEP, step);
            }
            for ( Iterator i = parameterMap.getMap().entrySet().iterator(); i.hasNext(); ) {
              Map.Entry entry = (Map.Entry)i.next();
              if ( first ) {
                linkBuffer.append('?');
                first = false;
              } else {
                linkBuffer.append('&');
              }
            linkBuffer.append(entry.getKey());
            linkBuffer.append('=');
            linkBuffer.append(entry.getValue());
            }
    } else {
            throw new ProcessException(new ErrorMessage("httpContextRequired"));
        }
        return new Result(StateDescriptor.OK, SimpleProcessor.OUTPUT, new StringValue(linkBuffer.toString()));
  }

  public ParameterDescriptor[] getParameterDescriptors() {
    return parameterDescriptors;
  }

  public ResultDescriptor getResultDescriptor() {
    return resultDescriptor;
  }
}
TOP

Related Classes of org.apache.slide.projector.processor.core.Link

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.