package pl.it_crowd.youtrack.api; import pl.it_crowd.youtrack.api.defaults.Fields; import pl.it_crowd.youtrack.api.defaults.StateValues; public class Command { // ------------------------------ FIELDS ------------------------------ protected StringBuilder command = new StringBuilder(); // -------------------------- STATIC METHODS -------------------------- 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); } // --------------------------- CONSTRUCTORS --------------------------- protected Command() { } // ------------------------ CANONICAL METHODS ------------------------ @Override public String toString() { return command.toString().trim(); } // -------------------------- OTHER METHODS -------------------------- 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; } }