001 package org.hackystat.sensor.xmldata.option; 002 003 import java.util.List; 004 005 import org.hackystat.sensor.xmldata.XmlDataController; 006 007 /** 008 * The class which follows the factory pattern to encapsulate the creation of 009 * options based on the specified parameters. 010 * @author aito 011 * 012 */ 013 public class OptionFactory { 014 /** Private constructor to prevent instantiation. */ 015 private OptionFactory() { 016 } 017 018 /** 019 * Returns an option instance based on the specified option name and 020 * parameters. If an option cannot be created, null is returned. 021 * @param controller the specified controller used to create an option. 022 * @param optionName the option name. 023 * @param parameters the option parameters. 024 * @return the option instance if it can be created, or null if an option 025 * instance cannot be created using the specified arguments. 026 */ 027 public static Option getInstance(XmlDataController controller, String optionName, 028 List<String> parameters) { 029 030 if (SdtOption.OPTION_NAME.equals(optionName)) { 031 return new SdtOption(controller, parameters); 032 } 033 else if (FileOption.OPTION_NAME.equals(optionName)) { 034 return new FileOption(controller, parameters); 035 } 036 else if (VerboseOption.OPTION_NAME.equals(optionName)) { 037 return new VerboseOption(controller, parameters); 038 } 039 else if (ArgListOption.OPTION_NAME.equals(optionName)) { 040 return new ArgListOption(controller, parameters); 041 } 042 else if (UniqueTstampOption.OPTION_NAME.equals(optionName)) { 043 return new UniqueTstampOption(controller, parameters); 044 } 045 else if (MigrationOption.OPTION_NAME.equals(optionName)) { 046 return new MigrationOption(controller, parameters); 047 } 048 else if (MultiShellOption.OPTION_NAME.equals(optionName)) { 049 return new MultiShellOption(controller, parameters); 050 } 051 else if (SetRuntimeOption.OPTION_NAME.equals(optionName)) { 052 return new SetRuntimeOption(controller, parameters); 053 } 054 else if (ResourceOption.OPTION_NAME.equals(optionName)) { 055 return new ResourceOption(controller, parameters); 056 } 057 else { 058 controller.fireMessage("The '" + optionName + "' option is not supported."); 059 } 060 return null; 061 } 062 }