package org.springframework.roo.addon.tailor;
import java.util.Iterator;
import java.util.Map;
import java.util.logging.Logger;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
import org.springframework.roo.addon.tailor.config.TailorConfiguration;
import org.springframework.roo.addon.tailor.service.ConfigurationLocator;
import org.springframework.roo.shell.CliCommand;
import org.springframework.roo.shell.CliOption;
import org.springframework.roo.shell.CommandMarker;
import org.springframework.roo.support.logging.HandlerUtils;
/**
* Commands to list, activate and deactivate tailor configurations
*
* @author Birgitta Boeckeler
*/
@Component
@Service
public class TailorCommands implements CommandMarker {
private static final Logger LOGGER = HandlerUtils.getLogger(TailorCommands.class);
@Reference
ConfigurationLocator configLocator;
/**
* This method activates a tailor configuration by its name (Name needs to
* be listed with "tailor list" command
*/
@CliCommand(value = "tailor activate", help = "Activate a tailor configuration.")
public void tailorActivate(@CliOption(key = {"name"}, mandatory = true,
help = "The name of the tailor configuration") final String tailorName) {
configLocator.setActiveTailorConfiguration(tailorName);
}
/**
* This method deactivates the current tailor
*/
@CliCommand(value = "tailor deactivate", help = "Deactivate the tailor.")
public void tailorDeactivate() {
configLocator.setActiveTailorConfiguration(null);
}
/**
* This method lists all available tailor configurations in the the Roo
* shell.
*
* @param type
*/
@CliCommand(value = "tailor list", help = "List available tailor configurations.")
public void tailorList() {
LOGGER.info("Available tailor configurations: ");
final Map<String, TailorConfiguration> configs = configLocator.getAvailableConfigurations();
final TailorConfiguration activeConfig = configLocator.getActiveTailorConfiguration();
final Iterator<String> iterator = configs.keySet().iterator();
while (iterator.hasNext()) {
final String configName = iterator.next();
final String isActive =
activeConfig != null && configName.equals(activeConfig.getName()) ? " [ ACTIVE ] " : "";
LOGGER
.info("\to " + configName + isActive + " - " + configs.get(configName).getDescription());
}
}
}