Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (C) 2012 eXo Platform SAS.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
   * the License, or (at your option) any later version.
   *
   * This software is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
 package org.crsh.cron;
 
 
 import java.io.File;
 import java.util.List;

Author(s):
Benjamin Prato
 
 public class CronPlugin extends CRaSHPlugin<CronPluginimplements TaskCollector {
 
   public static PropertyDescriptor<StringCRON_CONFIG_PATH = new PropertyDescriptor<String>(String.class"cron.config.path"null"The contrab file path") {
     @Override
     protected String doParse(String sthrows Exception {
       return s;
     }
   };

  
Logger
 
   protected final Logger log = Logger.getLogger(getClass().getName());

  
.
 
   private final Scheduler scheduler = new Scheduler();

  
.
 
.
 
 
   @Override
   public CronPlugin getImplementation() {
     return this;
   }
 
   public Scheduler getScheduler() {
     return ;
   }
 
   @Override
     return Collections.<PropertyDescriptor<?>>singleton();
   }
 
   @Override
   public void init() {
     .addTaskCollector(this);
     .start();
   }
 
   @Override
   public void destroy() {
     .stop();
   }

  
Returns the processes currently running.

Returns:
the running processes
    return ;
  }

  
Returns the processes history.

Returns:
the running processes
    return ;
  }

  
Spawn the job immediatly.

Returns:
true when the jobs have been spawned successfully
  public boolean spawn() {
    try {
      Method spawn = Scheduler.class.getDeclaredMethod("spawnLauncher"long.class);
      spawn.setAccessible(true);
      spawn.invoke(, System.currentTimeMillis());
      return true;
    }
    catch (Exception e) {
      e.printStackTrace();
      return false;
    }
  }

  
This method is protected so it can be overriden for unit tests

Returns:
read the config file and return it
  protected Resource getConfig() {
    //
    Resource config = null;
    String configPath = getContext().getProperty();
    if (configPath != null) {
      File configFile = new File(configPath);
      if (configFile.exists()) {
        .log(."Found crontab file " + configPath);
        if (configFile.isFile()) {
          try {
            config = new Resource("crontab"configFile.toURI().toURL());
          }
          catch (MalformedURLException e) {
            .log(."Could not retrieve cron config file from " + configPathe);
          }
          catch (IOException e) {
            .log(."Could not load cron config file from " + configPathe);
          }
        } else {
          .log(."Crontab file " + configPath + " is not a file");
        }
      } else {
        .log(."Crontab file " + configPath + " does not exist");
      }
    } else {
      // Override from config if any
      Resource res = getContext().loadResource("crontab".);
      if (res != null) {
        config = res;
        .log(."Found crontab config url " + res);
      }
    }
    //
    if (config == null) {
      .log(."No crontab configuration");
    }
    //
    return config;
  }
  public TaskTable getTasks() {
    //
    Resource res = getConfig();
    List<Stringlines = null;
    try {
      lines = new ArrayList<String>();
      BufferedReader reader = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(res.getContent()), "UTF-8"));
      while (true) {
        String cronLine = reader.readLine();
        if (cronLine == null) {
          break;
        } else {
          lines.add(cronLine);
        }
      }
    }
    catch (IOException e) {
      .log(."Could not read cron file"e);
    }
    //
    ShellFactory factory = getContext().getPlugin(ShellFactory.class);
    TaskTable table = new TaskTable();
    for (String cronLine : lines) {
      CRaSHTaskDef crshTask = validateAndParseCronLine(cronLine);
      if (crshTask != null) {
        table.add(crshTask.getSchedullingPattern(), new CRaSHTask(thisfactorycrshTask));
      }
      else {
        .log(."Cannot parse cron line " + cronLine);
      }
    }
    return table;
  }
  private CRaSHTaskDef validateAndParseCronLine(String cronLine) {
    //
    cronLine = cronLine.trim();
    if (cronLine.length() == 0 || cronLine.charAt(0) == '#') {
      return null;
    }
    //
    List<StringcronLineParts = Arrays.asList(cronLine.split("\\s+"));
    if (cronLineParts.size() < 6) {
      return null;
    }
    //
    String schedulePart = Utils.join(cronLineParts.subList(0, 5), " ");
    String commandPart = Utils.join(cronLineParts.subList(5, cronLineParts.size()), " ");
    try {
      return new CRaSHTaskDef(new SchedulingPattern(schedulePart), commandPart);
    }
    catch (InvalidPatternException e) {
      // ?
      return null;
    }
  }
New to GrepCode? Check out our FAQ X