/**
* Command.java
*
* Object that contains the commands to be executed by the sensor
* Also include information about the sensor such as interval, last and ideal time of execution
*
* @author Peter Shin, Gesuri Ramirez
* @date July 2012
*/
package org.cleos.android.ntl.utils;
import java.util.Calendar;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.cleos.android.lib.Interval;
public class Command {
private String commandString;
private String regexPatern;
private double Timeout;
private int numRetries;
private long sleepDuration;
private String suffix;
private Pattern pattern;
private Matcher matcher;
private String delimiter;
private String[] chNames;
private String[] dTypes;
private String[] units;
private String[] MIMEs;
private String dtSrcName;
private String dtAddress;
private String remoteDtAddress;
private int dtCacheSize;
private String ctMode;
private int dtArchiveSize;
private Interval intervalTime;
private Calendar lastCmdExecTime = Calendar.getInstance();
private Calendar idealNextExecTime = Calendar.getInstance();
public Command(String commandString, String regexPatern, String suffix,
double timeout, int numRetries, long sleepDuration,
Interval intervalTime) {
this.commandString = commandString;
this.suffix = suffix;
this.regexPatern = regexPatern;
Timeout = timeout;
this.numRetries = numRetries;
this.sleepDuration = sleepDuration;
this.intervalTime = intervalTime;
}
public Calendar getLastCmdExcecTime() {
return lastCmdExecTime;
}
public void setLastCmdExcecTime(Calendar last) {
this.lastCmdExecTime = last;
}
public void setLastCmdExcecTime(long ms) {
this.lastCmdExecTime.setTimeInMillis(ms);
}
public Interval getIntervalTime() {
return intervalTime;
}
public void setIntervalTime(Interval intervalTime) {
this.intervalTime = intervalTime;
}
public String getCommandString() {
return commandString;
}
public void setCommandString(String commandString) {
this.commandString = commandString;
}
public String getRegexPatern() {
return regexPatern;
}
public void setRegexPatern(String regexPatern) {
this.regexPatern = regexPatern;
}
public double getTimeout() {
return Timeout;
}
public void setTimeout(double timeout) {
Timeout = timeout;
}
public int getNumRetries() {
return numRetries;
}
public void setNumRetries(int numRetries) {
this.numRetries = numRetries;
}
public long getSleepDuration() {
return sleepDuration;
}
public void setSleepDuration(long sleepDuration) {
this.sleepDuration = sleepDuration;
}
public Pattern getPattern() {
return pattern;
}
public void setPattern(Pattern pattern) {
this.pattern = pattern;
}
public Matcher getMatcher() {
return matcher;
}
public void setMatcher(Matcher matcher) {
this.matcher = matcher;
}
public String getSuffix() {
return suffix;
}
public void setSuffix(String suffix) {
this.suffix = suffix;
}
public String[] getChNames() {
return chNames;
}
public void setChNames(String[] chNames) {
this.chNames = chNames;
}
public String[] getDTypes() {
return dTypes;
}
public void setDTypes(String[] chTypes) {
this.dTypes = chTypes;
}
public String[] getUnits() {
return units;
}
public void setUnits(String[] units) {
this.units = units;
}
public String[] getMIMEs() {
return MIMEs;
}
public void setMIMEs(String[] mIMES) {
MIMEs = mIMES;
}
public void setDelimiter(String delimiter) {
this.delimiter = delimiter;
}
public String getDelimiter() {
return this.delimiter;
}
public String createCommandString() {
return this.commandString + this.suffix;
}
public boolean validateCommandResponse(String response) {
boolean matchfound;
pattern = Pattern.compile(regexPatern);
matcher = pattern.matcher(response);
matchfound = matcher.matches();
return (matchfound);
}
public String[] getdTypes() {
return dTypes;
}
public void setdTypes(String[] dTypes) {
this.dTypes = this.deepcopyStringArr(dTypes);
}
public String getDtSrcName() {
return dtSrcName;
}
public void setDtSrcName(String dtSrcName) {
this.dtSrcName = dtSrcName;
}
public String getDtAddress() {
return dtAddress;
}
public String getRemoteDtAddress() {
return remoteDtAddress;
}
public void setDtAddress(String dtAddress) {
this.dtAddress = dtAddress;
}
public void setRemoteDtAddress(String remoteDtAddress) {
this.remoteDtAddress = remoteDtAddress;
}
public int getDtCacheSize() {
return dtCacheSize;
}
public void setDtCacheSize(int dtCacheSize) {
this.dtCacheSize = dtCacheSize;
}
public String getCtMode() {
return ctMode;
}
public void setCtMode(String ctMode) {
this.ctMode = ctMode;
}
public int getDtArchiveSize() {
return dtArchiveSize;
}
public void setDtArchiveSize(int dtArchiveSize) {
this.dtArchiveSize = dtArchiveSize;
}
private String[] deepcopyStringArr(String[] strArray) {
String[] copyArr = new String[strArray.length];
for (int i = 0; i < strArray.length; i++) {
copyArr[i] = new String(strArray[i]);
}
return copyArr;
}
public Calendar getIdealNextExecTime() {
return idealNextExecTime;
}
public void setIdealNextExecTime(Calendar idealNextExecTime) {
this.idealNextExecTime = idealNextExecTime;
}
public void setIdealNextExecTime(long idealTime) {
this.idealNextExecTime.setTimeInMillis(idealTime);
}
}