CustomTask.java :  » Linux » sshxcute » net » neoremind » sshxcute » task » Java Open Source

Java Open Source » Linux » sshxcute 
sshxcute » net » neoremind » sshxcute » task » CustomTask.java
package net.neoremind.sshxcute.task;

import java.util.LinkedList;
import java.util.List;


/**
 * 
 * This abstract class is the parent class of all custom tasks. In other words, if you want to 
 * develop your own task, the class should extend CustomCode class. <br>
 * <p>
 * Here, the task that extends CustomCode class can be whatever you want to execute on remote machine. It can be executing a shell script, executing an ordinary command, executing a specified script(like startRFIDIC.sh, deployMetadata.sh), or WAS jacl script. <br>
 * <p>
 * The sub class just need to override the following method:  <p>
 * 1) public abstract Boolean checkStdOut(String stdout);  // check the sysout that returns from a command or script. <p>
 * <p>
 * 2) public abstract Boolean checkExitCode(int stdout);   // check the exit code that after running a command or script. <p>
 * <p> 
 * 3) public abstract String getCommand();  // returns the real command you want to run <p>
 * <p>
 * 4) public abstract String getInfo();  // returns the description of the task <p>
 * <br>
 * 
 * The parent class has wrap some common method that can be used by sub class. <p>
 * 1) protected String cat(String... args)  // Use to concatenate strings with blank<p>
 * <p>
 * 2) protected String getITSHomeBin()  // return ITS home bin path<p>
 * <p>
 * 3) protected String getWASCredential()  // return WAS credential information: -was_admin_user=*** -was_admin_password=***<p>
 * <p>
 * @author zxucdl
 *
 */
public abstract class CustomTask {
  
  /**
   * Command line delimiter 
   */
  protected static String DELIMETER = ";";
  
  protected List err_sysout_keyword_list = new LinkedList();
  
  protected String[] err_sysout_keywords = {
      "Usage", 
      "usage",
      "not found",
      "fail",
      "Fail",
      "error",
      "Error",
      "exception",
      "Exception",
      "not a valid"
  };
  
  {
    resetErrSysoutKeyword(err_sysout_keywords);
  }

  
  public void resetErrSysoutKeyword (String[] str){
    err_sysout_keyword_list.clear();
    for (int i = 0; i < str.length; i++) 
    {
      err_sysout_keyword_list.add(str[i]);
    }
  }
  
  /**
   * Check whether task executes successful or not.
   *
   * @param stdout 
   * @param exitCode 
   * @return If it executes successfully, returns true. Or else returns false.
   */
  public Boolean isSuccess(String stdout, int exitCode){
    if (checkStdOut(stdout) && checkExitCode(exitCode))
      return true;
    else 
      return false;
  }
  
  /**
   * Check the sysout that returns from a command or script.
   * 
   * @param stdout
   * @return If it executes successfully, returns true. Or else returns false.
   */
  protected abstract Boolean checkStdOut(String stdout);
  
  /**
   * Check the exit code that after running a command or script. 
   * 
   * @param exitCode 
   * @return If it executes successfully, returns true. Or else returns false.
   */
  protected abstract Boolean checkExitCode(int exitCode);

  /**
   * Get the command 
   * 
   * @return command that used to finish the task
   */
  public abstract String getCommand();
  
  /**
   * Get task description
   * 
   * @return description of the task 
   */
  public abstract String getInfo();
  
  /**
   * Use to concatenate strings with blank
   * @param args - a list or string
   * @return String that concatenate with blank
   */
  protected String cat(String... args) {
    StringBuilder sb = new StringBuilder();
    for(int i = 0; i < args.length; i++)
    {
      sb.append(args[i]);
      sb.append(" ");
    }
    return sb.toString();
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.