package com.sandwich.koan.cmdline;
import java.util.Arrays;
import com.sandwich.koan.constant.ArgumentType;
public class CommandLineArgument implements Runnable, Comparable<CommandLineArgument> {
private ArgumentType argType;
private String[] values;
boolean isPlantedByApp = false;
public CommandLineArgument(ArgumentType argType, String... values) {
this(argType, false, values);
}
public CommandLineArgument(ArgumentType argType, boolean isPlantedByApp, String... values) {
this.argType = argType;
this.values = values;
this.isPlantedByApp = isPlantedByApp;
}
public String[] getValues() {
return values;
}
public ArgumentType getArgumentType() {
return argType;
}
public void setPlantedByApp(boolean isPlantedByApp){
this.isPlantedByApp = isPlantedByApp;
}
public boolean isPlantedByApp() {
return isPlantedByApp;
}
public void run(){
argType.run(values);
}
public int compareTo(CommandLineArgument o) {
if(o == null){
return -1;
}
if(argType == null){
return 1;
}
return argType.compareTo(o.getArgumentType());
}
@Override
public String toString() {
return new StringBuilder("CommandLineArgument [argType=").append(argType)
.append(", value=").append(Arrays.toString(values)).append("]").toString();
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((argType == null) ? 0 : argType.hashCode());
result = prime * result + ((values == null) ? 0 : Arrays.hashCode(values));
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
CommandLineArgument other = (CommandLineArgument) obj;
if (argType != other.argType)
return false;
if (values == null) {
if (other.values != null)
return false;
} else if (!Arrays.equals(values, other.values))
return false;
return true;
}
}