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

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

/*
*
* ====================================================================
*
* Copyright 2004 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.apache.slide.projector.processor.core;

import java.util.Map;

import org.apache.slide.projector.Context;
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.URIValueDescriptor;
import org.apache.slide.projector.descriptor.XMLValueDescriptor;
import org.apache.slide.projector.engine.Job;
import org.apache.slide.projector.engine.ProcessorManager;
import org.apache.slide.projector.engine.Scheduler;
import org.apache.slide.projector.expression.Expression;
import org.apache.slide.projector.expression.ExpressionFactory;
import org.apache.slide.projector.i18n.ParameterMessage;
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.URIValue;
import org.apache.slide.projector.value.Value;
import org.apache.slide.projector.value.XMLValue;

/**
*/
public class Thread implements Processor {
  // parameters
  public final static String PROCESSOR = "processor";
  public final static String REPEAT = "repeat";
  public final static String CONDITION = "condition";
  public final static String REMAINING_CONDITION = "remainingCondition";
  public final static String PARAMETERS = "parameters";
  public final static String PERSISTENT = "persistent";
 
  private final static ParameterDescriptor[] parameterDescriptors = new ParameterDescriptor[] {
      new ParameterDescriptor(PROCESSOR, new ParameterMessage("job/parameter/processor"), new URIValueDescriptor()),
      new ParameterDescriptor(REPEAT, new ParameterMessage("job/parameter/repeat"), new BooleanValueDescriptor(), BooleanValue.FALSE),
      new ParameterDescriptor(PERSISTENT, new ParameterMessage("job/parameter/persistent"), new BooleanValueDescriptor(), BooleanValue.TRUE),
      new ParameterDescriptor(CONDITION, new ParameterMessage("job/parameter/condition"), new XMLValueDescriptor()),
      new ParameterDescriptor(REMAINING_CONDITION, new ParameterMessage("job/parameter/remainingCondition"), new XMLValueDescriptor(), NullValue.NULL),
      new ParameterDescriptor(PARAMETERS, new ParameterMessage("job/parameter/parameters"), MapValueDescriptor.ANY)
  };
 
  private final static ResultDescriptor resultDescriptor = new ResultDescriptor(new StateDescriptor[] {
    StateDescriptor.OK_DESCRIPTOR
  });
 
  public Result process(Map parameters, Context context) throws Exception {
      Map jobParameters = ((MapValue)parameters.get(PARAMETERS)).getMap();
      URI jobUri = (URIValue)parameters.get(PROCESSOR);
      XMLValue initialCondition = (XMLValue)parameters.get(CONDITION);
      boolean repeatJob = ((BooleanValue)parameters.get(REPEAT)).booleanValue();
      Value remainingConditionValue = (Value)parameters.get(REMAINING_CONDITION);
      XMLValue remainingCondition = null;
      if ( remainingConditionValue == NullValue.NULL ) {
        remainingCondition = initialCondition;
      } else {
        remainingCondition = (XMLValue)remainingConditionValue;
      }
      boolean persistentJob = ((BooleanValue)parameters.get(PERSISTENT)).booleanValue();
      Expression remainingExpression = ExpressionFactory.create(remainingCondition.getRootElement());
      Expression initialExpression = ExpressionFactory.create(initialCondition.getRootElement());
      Processor jobProcessor = ProcessorManager.getInstance().getProcessor(jobUri);
      ProcessorManager.prepareValues(jobProcessor.getParameterDescriptors(), jobParameters, context);
      String processorId = context.getProcessId();
      Job job;
      if ( processorId == null ) {
        job = new Job(context.getStep(), jobUri, initialExpression, remainingExpression, jobParameters, repeatJob, persistentJob);
      } else {
        job = new Job(context.getProcessId()+":"+context.getStep(), jobUri, initialExpression, remainingExpression, jobParameters, repeatJob, persistentJob);
      }
      Scheduler.getInstance().registerJob(job);
      Scheduler.getInstance().saveJobs();
      return Result.OK;
  }
 
  public ParameterDescriptor[] getParameterDescriptors() {
    return parameterDescriptors;
  }
 
  public ResultDescriptor getResultDescriptor() {
    return resultDescriptor;
  }
}
TOP

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

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.