package com.techcavern.wavetact.consoleCommands.config;
import com.techcavern.wavetact.annot.ConCMD;
import com.techcavern.wavetact.objects.CommandIO;
import com.techcavern.wavetact.objects.ConsoleCommand;
import com.techcavern.wavetact.utils.DatabaseUtils;
import com.techcavern.wavetact.utils.GeneralUtils;
import org.jooq.Record;
import static com.techcavern.wavetactdb.Tables.CONFIG;
import static com.techcavern.wavetactdb.Tables.RELAYS;
@ConCMD
public class Relay extends ConsoleCommand {
public Relay() {
super(GeneralUtils.toArray("relay"), "relay (+)(-)[name] [channels to relay in networkname.channelname format separated by commas]", "add/remove relays");
}
@Override
public void onCommand(String command, String[] args, CommandIO commandIO) throws Exception {
boolean isModify = false;
boolean isDelete = false;
boolean viewonly = false;
if (args.length < 2) {
viewonly = true;
}
if (args[0].startsWith("-")) {
args[0] = args[0].replaceFirst("-", "");
isDelete = true;
} else if (args[0].startsWith("+")) {
args[0] = args[0].replaceFirst("\\+", "");
isModify = true;
} else {
args[0] = args[0];
}
Record relay = DatabaseUtils.getRelay(args[0]);
if (relay != null && (isDelete || isModify)) {
if (isDelete) {
DatabaseUtils.removeRelay(args[0]);
commandIO.getPrintStream().println("Property removed");
} else if (isModify) {
if (viewonly)
commandIO.getPrintStream().println(relay.getValue(RELAYS.VALUE));
else {
relay.setValue(RELAYS.VALUE, GeneralUtils.buildMessage(1, args.length, args));
DatabaseUtils.updateRelay(relay);
commandIO.getPrintStream().println("Property modified");
}
}
} else if (relay == null && !isDelete && !isModify) {
DatabaseUtils.addRelay(args[0], GeneralUtils.buildMessage(1, args.length, args));
commandIO.getPrintStream().println("Property added");
} else {
commandIO.getPrintStream().println("property already exists (If you were adding) or property does not exist");
}
}
}