Package org.playorm.cron.impl

Source Code of org.playorm.cron.impl.CronServiceImpl

package org.playorm.cron.impl;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

import javax.inject.Inject;

import org.joda.time.DateTime;
import org.playorm.cron.api.CronListener;
import org.playorm.cron.api.CronService;
import org.playorm.cron.api.PlayOrmCronJob;
import org.playorm.cron.impl.db.MonitorDbo;
import org.playorm.cron.impl.db.WebNodeDbo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.alvazan.orm.api.base.NoSqlEntityManager;
import com.alvazan.orm.api.base.NoSqlEntityManagerFactory;
import com.alvazan.orm.api.z8spi.KeyValue;
import com.alvazan.orm.api.z8spi.iter.Cursor;

public class CronServiceImpl implements CronService {

  private static final Logger log = LoggerFactory.getLogger(CronServiceImpl.class);
 
  @Inject
  private ScheduledExecutorService svc;
  @Inject
  private Config config;
  @Inject
  private CheckClusterRunnable clusterRunnable;

  private NoSqlEntityManagerFactory factory;

  @Override
  public void start() {
    String host = config.getHostName();
    WebNodeDbo node = new WebNodeDbo();
    node.setLastSeen(new DateTime());
    node.setWebServerName(host);
    node.setUp(true);
   
    NoSqlEntityManager mgr = factory.createEntityManager();
    mgr.put(node);
    mgr.flush();
   
    clusterRunnable.setFactory(factory);
    if (log.isInfoEnabled())
      log.info("running monitor service at rate="+config.getRate()+" milliseconds");
    svc.scheduleAtFixedRate(clusterRunnable, 30000, config.getRate(), TimeUnit.MILLISECONDS);
  }

  @Override
  public void addListener(CronListener listener) {
    clusterRunnable.setListener(listener);
  }

  @Override
  public void saveMonitor(PlayOrmCronJob monitor) {
    MonitorDbo m = CopyUtil.copy(monitor);
    NoSqlEntityManager mgr = factory.createEntityManager();
    mgr.put(m, false);
    mgr.flush();
  }

  @Override
  public PlayOrmCronJob getMonitor(String id) {
    NoSqlEntityManager mgr = factory.createEntityManager();
    MonitorDbo mon = mgr.find(MonitorDbo.class, id);
    return CopyUtil.copy(mon);
  }
 
  public List<PlayOrmCronJob> getMonitors(List<String> ids) {
    NoSqlEntityManager mgr = factory.createEntityManager();
    Cursor<KeyValue<MonitorDbo>> cursor = mgr.findAll(MonitorDbo.class, ids);
    List<PlayOrmCronJob> monitors = new ArrayList<PlayOrmCronJob>();
    while(cursor.next()) {
      KeyValue<MonitorDbo> kv = cursor.getCurrent();
      MonitorDbo mon = kv.getValue();
      monitors.add(CopyUtil.copy(mon));
    }
    return monitors;
  }

  public void setFactory(NoSqlEntityManagerFactory factory2) {
    this.factory = factory2;
  }

}
TOP

Related Classes of org.playorm.cron.impl.CronServiceImpl

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.