Package wowodc.background.components

Source Code of wowodc.background.components.Main

package wowodc.background.components;

import java.util.concurrent.Callable;

import wowodc.background.tasks.T01T02SimpleBackgroundTask;
import wowodc.background.tasks.T03BackgroundTaskWithProgressFeedback;
import wowodc.background.tasks.T04SimpleEOFTask;
import wowodc.background.tasks.T05MultiThreadedEOFTask;
import wowodc.background.tasks.T07EOFTaskWithSubTasks;
import wowodc.background.tasks.T08CallableWithSimulatedError;
import wowodc.background.tasks.T09RunnableWithSimulatedError;

import com.webobjects.appserver.WOActionResults;
import com.webobjects.appserver.WOContext;
import com.webobjects.eocontrol.EOGlobalID;

import er.coolcomponents.CCAjaxLongResponsePage;
import er.extensions.appserver.ERXNextPageForResultWOAction;
import er.extensions.appserver.IERXPerformWOActionForResult;
import er.extensions.components.ERXComponent;
import er.extensions.concurrency.ERXExecutorService;
import er.extensions.concurrency.IERXPercentComplete;
import er.extensions.concurrency.IERXStoppable;
import er.extensions.foundation.IERXStatus;

public class Main extends ERXComponent {
  public Main(WOContext context) {
    super(context);
  }

  /**
   * Demo 1
   * T01
   * @return the current page (null) after creating a task and starting it in another thread.
   */
  public WOActionResults dispatchBackgroundTask() {
    T01T02SimpleBackgroundTask task = new T01T02SimpleBackgroundTask();
    ERXExecutorService.executorService().execute(task);
    return null;
  }
 
 
 
  /**
   * Demo 2
   *
   * T01
   * @return long response page running the same task in a long response page allowing user to wait and know when it is complete.
   */
  public WOActionResults dispatchBackgroundTaskInLongRsponsePage() {
    Runnable task = new T01T02SimpleBackgroundTask();
   
    CCAjaxLongResponsePage nextPage = pageWithName(CCAjaxLongResponsePage.class);
    nextPage.setTask(task);
   
    return nextPage;
  }
 
 
 
 
  /**
   * Demo 3
   *
   * @return long response page running a task that implements {@link IERXStatus}, {@link IERXPercentComplete} and {@link IERXStoppable} interfaces.
   */
  public WOActionResults dispatchBackgroundTaskWithLongResponsePageFeedback() {
    Runnable task = new T03BackgroundTaskWithProgressFeedback();
   
    CCAjaxLongResponsePage nextPage = pageWithName(CCAjaxLongResponsePage.class);
    nextPage.setTask(task);
   
    return nextPage;
  }
 
 
 
 
 
  /**
   * Demo 4
   *
   * @return result {@link TaskInfoPage} displaying result of task {@link T04SimpleEOFTask}
   */
  public WOActionResults dispatchSimpleEOFTask() {
    // Set up the controller for the end of task action
    IERXPerformWOActionForResult controller = new ERXNextPageForResultWOAction(pageWithName(TaskInfoPage.class), "taskInfo");
   
    Callable<EOGlobalID> task = new T04SimpleEOFTask();
   
   
    CCAjaxLongResponsePage nextPage = pageWithName(CCAjaxLongResponsePage.class);
    nextPage.setNextPageForResultController(controller);
    nextPage.setTask(task);
   
    return nextPage;
  }

 
 
 
 
 
  /**
   * Demo 5
   *
   * @return result {@link TaskInfoPage} displaying result of task {@link T05MultiThreadedEOFTask}
   */
  public WOActionResults dispatchMultiThreadedTask() {
    // Set up the controller for the end of task action
    ERXNextPageForResultWOAction controller = new ERXNextPageForResultWOAction(pageWithName(TaskInfoPage.class), "taskInfo");
   
    Callable<EOGlobalID> task = new T05MultiThreadedEOFTask();
   
    CCAjaxLongResponsePage nextPage = pageWithName(CCAjaxLongResponsePage.class);
    nextPage.setNextPageForResultController(controller);
    nextPage.setTask(task);
   
    return nextPage;
  }
 
 
 
 
 
 
  /**
   * Demo 6
   *
   * Just to better visualize the multi-threaded task, we start it as a background task and
   * go to the App Monitor page to view app current task activity.
   *
   * @return result {@link TaskInfoPage} displaying result of task {@link T05MultiThreadedEOFTask}
   */
  public WOActionResults dispatchMultiThreadedTaskWithoutLongResponse() {

    Callable<EOGlobalID> task = new T05MultiThreadedEOFTask(60000);
    // We just ignore the return value in the case of sending a Callable to background and not
    // caring about handling the result object
    ERXExecutorService.executorService().submit(task);
   
    return pageWithName(AppMonitor.class);
  }

 
 
 
 
 
 
  /**
   * Demo 7
   *
   * @return result {@link TaskInfoPage} displaying result of task {@link T07EOFTaskWithSubTasks}
   */
  public WOActionResults dispatchComboTask() {
    // Set up the controller for the end of task action
    ERXNextPageForResultWOAction controller = new ERXNextPageForResultWOAction(pageWithName(TaskInfoPage.class), "taskInfo");
   
    Callable<EOGlobalID> task = new T07EOFTaskWithSubTasks();
   
    CCAjaxLongResponsePage nextPage = pageWithName(CCAjaxLongResponsePage.class);
    nextPage.setNextPageForResultController(controller);
    nextPage.setTask(task);
   
    return nextPage;
  }
 
  /**
   * Comment out the property <code>er.coolcomponents.CCAjaxLongResponsePage.nextPageForErrorResultControllerClassName</code>
   * in Properties to see the default error handling behavior.
   *
   * @return result of an error in a Callable task.
   */
  public WOActionResults dispatchCallableWithSimulatedError() {
    T08CallableWithSimulatedError task = new T08CallableWithSimulatedError();
   
    CCAjaxLongResponsePage nextPage = pageWithName(CCAjaxLongResponsePage.class);
    nextPage.setTask(task);
   
    return nextPage;
  }
 
  /**
   * Comment out the property <code>er.coolcomponents.CCAjaxLongResponsePage.nextPageForErrorResultControllerClassName</code>
   * in Properties to see the default error handling behavior.
   *
   * @return result of an error in a Runnable task.
   */
  public WOActionResults dispatchRunnableWithSimulatedError() {
    T09RunnableWithSimulatedError task = new T09RunnableWithSimulatedError();
   
    CCAjaxLongResponsePage nextPage = pageWithName(CCAjaxLongResponsePage.class);
    nextPage.setTask(task);
   
    return nextPage;
  }
}
TOP

Related Classes of wowodc.background.components.Main

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.