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());
}
}
}