Package org.apache.slide.projector.processor.form

Source Code of org.apache.slide.projector.processor.form.Test

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

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

import org.apache.slide.projector.Context;
import org.apache.slide.projector.Information;
import org.apache.slide.projector.ProcessException;
import org.apache.slide.projector.Processor;
import org.apache.slide.projector.Result;
import org.apache.slide.projector.Store;
import org.apache.slide.projector.URI;
import org.apache.slide.projector.descriptor.ParameterDescriptor;
import org.apache.slide.projector.descriptor.ResultDescriptor;
import org.apache.slide.projector.descriptor.URIValueDescriptor;
import org.apache.slide.projector.engine.ProcessorManager;
import org.apache.slide.projector.i18n.ErrorMessage;
import org.apache.slide.projector.i18n.ParameterMessage;
import org.apache.slide.projector.processor.process.Process;
import org.apache.slide.projector.store.FormStore;
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.URIValue;
import org.apache.slide.projector.value.Value;

public class Test implements Processor {
    private final static URI FORM_PROCESSOR = new URIValue("formGenerator");
    private final static URI RESULT_RENDERER = new URIValue("formResult");
    private final static String PROCESSOR = "processor";

    private final static String FORM_STEP = "form";
    private final static String PROCESS_STEP = "process";
    private final static String RESULT_STEP = "result";
   
    private final static ParameterDescriptor[] parameterDescriptors = new ParameterDescriptor[] {
      new ParameterDescriptor(PROCESSOR, new ParameterMessage("test/parameter/processor"), new URIValueDescriptor(), NullValue.NULL),
  };
 
  public Result process(Map parameter, Context context) throws Exception {
    URI processorUri = ProcessorManager.getInstance().getURI(this);
    context.setBookmark(processorUri);
    Value uri = (Value)parameter.get(PROCESSOR);
        if ( uri == null || uri == NullValue.NULL ) {
          uri = (URI)context.getStore(Store.SESSION).get(PROCESSOR);
        }
        if ( uri == null ) {
          throw new ProcessException(new ErrorMessage("test/noProcessorSpecified"));
        }
        context.setProcess((URI)uri);
      context.getStore(Store.SESSION).put(PROCESSOR, uri);
      Value stepResource = (Value)context.getStore(Store.FORM).get(Process.STEP);
      String step;
      if ( stepResource == null ) {
        step = FORM_STEP;
      } else {
        step = stepResource.toString();
      }
    context.setStep(step);
    Processor formProcessor = ProcessorManager.getInstance().getProcessor(FORM_PROCESSOR);
        Processor resultRenderer = ProcessorManager.getInstance().getProcessor(RESULT_RENDERER);
        Processor processor = ProcessorManager.getInstance().getProcessor((URI)uri);
      parameter.put(Control.ACTION, uri);
        parameter.put(ControlComposer.LOCALE, ProcessorManager.getInstance().process(ProcessorManager.LOCALE_RESOLVER, context.getStore(Store.REQUEST_HEADER).get("accept-language"), context));
        parameter.put(FormGenerator.TARGET_STEP, PROCESS_STEP);
        Result result = null;
        if ( step.equals(FORM_STEP) ) {
          result = formProcessor.process(parameter, context);
        } else if ( step.equals(PROCESS_STEP) ) {
          parameter.putAll(((MapValue)((FormStore)context.getStore(Store.FORM)).getDomain()).getMap());
          Result processorResult = ProcessorManager.process(processor, parameter, context);
          if ( hasErrors(context.getInformations()) ) {
              context.setStep(FORM_STEP);
            ((FormStore)context.getStore(Store.FORM)).put(ControlComposer.VALIDATE, BooleanValue.TRUE);
            result = formProcessor.process(parameter, context);
          } else {
            Map resultParameters = new HashMap();
            resultParameters.put("state", new StringValue(processorResult.getState()));
            result = ProcessorManager.process(resultRenderer, resultParameters, context);
            ((FormStore)context.getStore(Store.FORM)).clear();
          }
        } else {
        ((FormStore)context.getStore(Store.FORM)).clear();
          return Result.OK;
        }
        return result;
  }

    protected boolean hasErrors(List informations) {
        for ( Iterator i = informations.iterator(); i.hasNext(); ) {
          Information info = (Information)i.next();
          if ( info.getSeverity() == Information.ERROR ) {
                return true;
            }
        }
        return false;
    }

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

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

Related Classes of org.apache.slide.projector.processor.form.Test

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.