package pl.itcrowd.youtrack.api; import pl.itcrowd.youtrack.api.defaults.Fields; import pl.itcrowd.youtrack.api.defaults.StateValues; public class Command { protected StringBuilder command = new StringBuilder(); public static Command assigneeCommand(String assignee) { return new Command().assignee(assignee); } public static Command stateCommand(String state) { return new Command().state(state); } public static Command stateCommand(StateValues state) { return new Command().state(state); } protected Command() { } @Override public String toString() { return command.toString().trim(); } public Command assignee(String assignee) { return command(Fields.assignee, assignee); } public Command state(String state) { return command(Fields.state, state); } public Command state(StateValues state) { if (state.getCommandValue() == null) { throw new IllegalArgumentException("Cannot set readonly state: " + state); } return state(state.getCommandValue()); } protected Command command(Commander commander, String argument) { this.command.append(" ").append(commander.getCommand()).append(" ").append(argument); return this; } }