package org.opencb.opencga.storage.app.cli.server.executors;
import org.opencb.opencga.storage.app.cli.CommandExecutor;
import org.opencb.opencga.storage.app.cli.server.options.ServerCommandOptions;
import java.lang.reflect.InvocationTargetException;
/**
* Created by joaquin on 2/2/17.
*/
public class ServerCommandExecutor extends CommandExecutor {
private static ServerCommandOptions serverCommandOptions;
public ServerCommandExecutor(ServerCommandOptions serverCommandOptions) {
super(serverCommandOptions.commonCommandOptions);
this.serverCommandOptions = serverCommandOptions;
}
@Override
public void execute() throws Exception {
String subCommandString = getParsedSubCommand(serverCommandOptions.jCommander);
switch (subCommandString) {
case "rest":
rest();
break;
case "grpc":
grpc();
break;
default:
logger.error("Subcommand not valid");
break;
}
}
/**
* rest support: start, stop, status...
*/
void rest() throws Exception {
RestCommandExecutor restCommandExecutor = new RestCommandExecutor(serverCommandOptions.restServerCommandOptions,
configuration, logger);
if (serverCommandOptions.restServerCommandOptions.start) {
restCommandExecutor.start();
} else if (serverCommandOptions.restServerCommandOptions.stop) {
restCommandExecutor.stop();
} else {
logger.error(usage("REST"));
}
}
/**
* gRPC support: start, stop, status...
*/
void grpc() throws Exception {
GrpcCommandExecutor grpcCommandExecutor = new GrpcCommandExecutor(serverCommandOptions.grpcServerCommandOptions,
configuration, logger);
if (serverCommandOptions.grpcServerCommandOptions.start) {
grpcCommandExecutor.start();
} else if (serverCommandOptions.grpcServerCommandOptions.stop) {
grpcCommandExecutor.stop();
} else {
logger.error(usage("gRPC"));
}
}
/**
* Error message when no action was specified.
*
* @param type Type of server: REST, GRPC
* @return Error message
*/
private String usage(String type) {
StringBuilder sb = new StringBuilder();
sb.append("None action for the ").append(type).append(" server.\n");
sb.append("\tTo start the server, use --start.\n");
sb.append("\tTo stop the server, use --stop.\n");
sb.append("For additional parameters, use -h or --help.\n");
return sb.toString();
}
}