/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.atomnuke.cli.command.actor; import org.atomnuke.atombus.config.model.LanguageType; import org.atomnuke.atombus.config.model.MessageActor; import org.atomnuke.cli.CliConfigurationHandler; import org.atomnuke.cli.command.AbstractNukeCommand; import org.atomnuke.util.cli.command.result.CommandFailure; import org.atomnuke.util.cli.command.result.CommandResult; import org.atomnuke.util.cli.command.result.CommandSuccess; /** * * @author zinic */ public class AddActor extends AbstractNukeCommand { private static final int ACTOR_ID = 0, SOURCE_LANG = 1, SOURCE_REFERENCE = 2; public AddActor(CliConfigurationHandler configurationHandler) { super(configurationHandler); } @Override public String getCommandToken() { return "add"; } @Override public String getCommandDescription() { return "Adds a new message actor definition."; } @Override public CommandResult perform(String[] arguments) throws Exception { if (arguments.length < 1 || arguments.length > 3) { return new CommandFailure("Usage: <actor-id> <language-type> <code-ref>"); } final CliConfigurationHandler cfgHandler = getConfigHandler(); if (cfgHandler.findMessageActor(arguments[ACTOR_ID]) != null) { return new CommandFailure("A message actor with the id \"" + arguments[ACTOR_ID] + "\" already exists."); } final LanguageType sinkLanguageType; try { sinkLanguageType = LanguageType.fromValue(arguments[SOURCE_LANG].toLowerCase()); } catch (IllegalArgumentException iae) { return new CommandFailure("Language must be one of: java, javascript, python."); } final MessageActor newActor = new MessageActor(); newActor.setId(arguments[ACTOR_ID]); newActor.setType(sinkLanguageType); newActor.setHref(arguments[SOURCE_REFERENCE]); cfgHandler.getMessageActors().add(newActor); cfgHandler.write(); return new CommandSuccess(); } }