package com.dronecontrol.droneapi.commands.composed;
import com.google.common.collect.Lists;
import com.dronecontrol.droneapi.commands.Command;
import com.dronecontrol.droneapi.commands.simple.ControlDataATCommand;
import com.dronecontrol.droneapi.commands.simple.SetConfigValueATCommand;
import com.dronecontrol.droneapi.data.LoginData;
import com.dronecontrol.droneapi.data.enums.ControlDataMode;
import java.util.Collection;
import static com.google.common.base.Preconditions.checkState;
public class SetConfigValueCommand extends UnconditionalComposedCommandAbstract
{
private final LoginData loginData;
private final String key;
private final Object value;
protected SetConfigValueCommand(LoginData loginData)
{
this.loginData = loginData;
this.key = null;
this.value = null;
}
public SetConfigValueCommand(LoginData loginData, String key, Object value)
{
this.loginData = loginData;
this.key = key;
this.value = value;
}
@Override
public Collection<Command> getCommands()
{
Command resetAckFlagCommand = new ControlDataATCommand(ControlDataMode.RESET_ACK_FLAG);
Command setConfigValueCommand = getConfigValueCommand();
return Lists.newArrayList(resetAckFlagCommand, setConfigValueCommand);
}
protected Command getConfigValueCommand()
{
checkState(key != null && value != null, "Key and value must be set");
return new SetConfigValueATCommand(loginData, key, value);
}
protected LoginData getLoginData()
{
return loginData;
}
}