package cgl.iotcloud.core.cmd;
import cgl.iotcloud.core.Utils;
import cgl.iotcloud.core.api.thrift.TSensor;
import cgl.iotcloud.core.client.SensorClient;
import org.apache.commons.cli.*;
import org.apache.thrift.transport.TTransportException;
import java.util.List;
import java.util.Map;
public class CommandClient {
// read the configuration file
private Map conf = Utils.readConfig();
private SensorClient client;
public CommandClient() {
try {
client = new SensorClient(conf);
} catch (TTransportException e) {
System.out.println("Error occurred while trying to connect to sensor master");
}
}
public void killSensor(String name) {
client.unDeploySensor(name);
}
public void ls() {
List<TSensor> sensors = client.getSensors();
formatSensors(sensors);
}
public void ls(String site) {
List<TSensor> sensors = client.getSensors(site);
formatSensors(sensors);
}
private void formatSensors(List<TSensor> sensors) {
System.out.format("----------------------------------------------------------------------------------%n");
System.out.format("| Sensor Name | Sensor ID |%n");
System.out.format("----------------------------------------------------------------------------------%n");
for (TSensor sensor : sensors) {
System.out.format(" %-40s| %-40s%n", sensor.getName(), sensor.getSensorId());
}
System.out.print("\n");
}
public void startSensor(String name) {
client.startSensor(name);
}
public static void main(String[] args) {
// get the first argument
if (args.length == 0) {
System.out.println("You should specify at least one argument");
System.exit(1);
}
CommandClient client = new CommandClient();
String command = args[0];
String restArgs[] = new String[args.length - 1];
System.arraycopy(args, 1, restArgs, 0, args.length - 1);
if (command.equals("kill")) {
Options options = new Options();
options.addOption("id", true, "ID of sensor");
CommandLineParser commandLineParser = new BasicParser();
try {
CommandLine cmd = commandLineParser.parse(options, restArgs);
String name = cmd.getOptionValue("id");
client.killSensor(name);
} catch (ParseException e) {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("cmd", options);
}
} else if (command.equals("ls")) {
client.ls();
}
}
}