Package com.quantcomponents.core.remote

Source Code of com.quantcomponents.core.remote.TaskMonitorHost

/*******************************************************************************
* Copyright (c) 2013 Luigi Sgro. All rights reserved. This
* program and the accompanying materials are made available under the terms of
* the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     Luigi Sgro - initial API and implementation
******************************************************************************/
package com.quantcomponents.core.remote;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger;

import com.quantcomponents.core.model.ITaskMonitor;

public class TaskMonitorHost implements ITaskMonitorHost, ITaskMonitorHostLocal {
  @SuppressWarnings("unused")
  private static final Logger logger = Logger.getLogger(TaskMonitorHost.class.getName());
  private final Map<ServiceHandle<ITaskMonitorHost>, ITaskMonitor> allTaskMonitors = new ConcurrentHashMap<ServiceHandle<ITaskMonitorHost>, ITaskMonitor>();
  private volatile IUIDGenerator uidGenerator;
 
  public TaskMonitorHost() {}
 
  public TaskMonitorHost(IUIDGenerator uidGenerator) {
    this.uidGenerator = uidGenerator;
  }

  public void deactivate() {
    allTaskMonitors.clear();
  }
 
  public void setUidGenerator(IUIDGenerator uidGenerator) {
    this.uidGenerator = uidGenerator;
  }

  @Override
  public ServiceHandle<ITaskMonitorHost> addTaskMonitor(ITaskMonitor taskMonitor) {
    ServiceHandle<ITaskMonitorHost> handle = new ServiceHandle<ITaskMonitorHost>(uidGenerator.nextUID());
    allTaskMonitors.put(handle, taskMonitor);
    return handle;
  }

  @Override
  public void deleteTaskMonitor(ServiceHandle<ITaskMonitorHost> taskMonitorHandle) {
    allTaskMonitors.remove(taskMonitorHandle);
  }

  @Override
  public void beginTask(ServiceHandle<ITaskMonitorHost> taskMonitorHandle, int totalWork) {
    retrieveTaskMonitor(taskMonitorHandle).beginTask(totalWork);
  }

  @Override
  public boolean isCancelled(ServiceHandle<ITaskMonitorHost> taskMonitorHandle) {
    return retrieveTaskMonitor(taskMonitorHandle).isCancelled();
  }

  @Override
  public void setCancelled(ServiceHandle<ITaskMonitorHost> taskMonitorHandle, boolean value) {
    retrieveTaskMonitor(taskMonitorHandle).setCancelled(value);
  }

  @Override
  public void worked(ServiceHandle<ITaskMonitorHost> taskMonitorHandle, int work) {
    retrieveTaskMonitor(taskMonitorHandle).worked(work);
  }

  @Override
  public void done(ServiceHandle<ITaskMonitorHost> taskMonitorHandle) {
    retrieveTaskMonitor(taskMonitorHandle).done();
  }
 
  private ITaskMonitor retrieveTaskMonitor(ServiceHandle<ITaskMonitorHost> taskMonitorHandle) {
    ITaskMonitor taskMonitor = allTaskMonitors.get(taskMonitorHandle);
    if (taskMonitor == null) {
      throw new IllegalArgumentException("Task monitor for handle: " + taskMonitorHandle + " not found");
    }
    return taskMonitor;
  }

}
TOP

Related Classes of com.quantcomponents.core.remote.TaskMonitorHost

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.