Package org.rzo.yajsw.condition

Source Code of org.rzo.yajsw.condition.Condition

package org.rzo.yajsw.condition;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import java.util.logging.Logger;

import org.rzo.yajsw.config.YajswConfigurationImpl;
import org.rzo.yajsw.script.Script;
import org.rzo.yajsw.script.ScriptFactory;
import org.rzo.yajsw.wrapper.WrappedProcess;

public class Condition
{
  Script          _script;

  /** The _config. */
  YajswConfigurationImpl  _config;

  /** The _wp. */
  WrappedProcess      _wp;

  /** The _has trigger. */
  boolean          _hasTrigger  = false;

  /** The _triggered. */
  boolean          _triggered  = false;

  long          _period    = -1;

  static Timer      _timer    = new Timer("yajsw.condition");

  Logger          _log;

  public Condition(YajswConfigurationImpl config, WrappedProcess wrappedProcess, Logger log)
  {
    _config = config;
    _wp = wrappedProcess;
    _log = log;
  }

  public void init()
  {
    String fileName = _config.getString("wrapper.condition.script");
    if (fileName == null)
      return;
    File f = new File(fileName);
    if (!f.exists() || !f.isFile())
    {
      try
      {
        System.out.println("file not found -> ignoring condition script " + f.getCanonicalPath());
      }
      catch (IOException e)
      {
        e.printStackTrace();
      }
    }
    List args = _config.getList("wrapper.condition.script.args", new ArrayList());
    String[] argsArr = new String[args.size()];
    for (int i = 0; i < argsArr.length; i++)
      argsArr[i] = args.get(i).toString();
    _script = ScriptFactory.createScript(fileName, "condition", _wp, argsArr, _log, 0);
    _hasTrigger = _script != null;
    _period = _config.getLong("wrapper.condition.cycle", -1) * 1000;
  }

  public void stop()
  {
    _timer.cancel();
    _triggered = false;
  }

  public boolean isHasTrigger()
  {
    return _hasTrigger;
  }

  public boolean isTriggered()
  {
    return _triggered;
  }

  public void start()
  {
    _triggered = true;
    if (_period > 0)
      _timer.schedule(new TimerTask()
      {

        @Override
        public void run()
        {
          _script.execute();
        }

      }, new Date(), _period);
    else
      _timer.schedule(new TimerTask()
      {

        @Override
        public void run()
        {
          _script.execute();
        }

      }, new Date());

  }

}
TOP

Related Classes of org.rzo.yajsw.condition.Condition

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.