|
What this is
Other links
The source code/***************************************************************************** * Sun Public License Notice * * The contents of this file are subject to the Sun Public License Version * 1.0 (the "License"). You may not use this file except in compliance with * the License. A copy of the License is available at http://www.sun.com/ * The Original Code is the CVS Client Library. * The Initial Developer of the Original Code is Robert Greig. * Portions created by Robert Greig are Copyright (C) 2000. * All Rights Reserved. * Contributor(s): Robert Greig. *****************************************************************************/ package org.netbeans.lib.cvsclient.commandLine; import java.lang.reflect.*; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.netbeans.lib.cvsclient.command.*; import org.netbeans.lib.cvsclient.commandLine.command.CommandProvider; /** * A factory for commands. Given a command name, and any arguments passed to * that command on the command line, it will return a configured Command * object, ready for execution. * @author Robert Greig * @see org.netbeans.lib.cvsclient.command.Command */ public class CommandFactory { private static final String[] COMMAND_CLASSES = new String[] { "Import", "add", "annotate", "checkout", "commit", "diff", "export", "locbundlecheck", "log", "rannotate", "remove", "rlog", "rtag", "status", "tag", "update" }; private static CommandFactory instance; private Map commandProvidersByNames; private CommandFactory() { createCommandProviders(); } private void createCommandProviders() { commandProvidersByNames = new HashMap(); String packageName = CommandFactory.class.getPackage().getName() + ".command."; for (int i = 0; i < COMMAND_CLASSES.length; i++) { Class providerClass; try { providerClass = Class.forName(packageName + COMMAND_CLASSES[i]); CommandProvider provider = (CommandProvider) providerClass.newInstance(); commandProvidersByNames.put(provider.getName(), provider); String[] synonyms = provider.getSynonyms(); for (int j = 0; j < synonyms.length; j++) { commandProvidersByNames.put(synonyms[j], provider); } } catch (Exception e) { System.err.println("Creation of command '"+COMMAND_CLASSES[i]+"' failed:"); e.printStackTrace(System.err); continue; } } } /** * Get the default instance of CommandFactory. */ public static synchronized CommandFactory getDefault() { if (instance == null) { instance = new CommandFactory(); } return instance; } /** * Create a CVS command. * @param commandName The name of the command to create * @param args The array of arguments * @param startingIndex The index of the first argument of the command in the array * @param workingDir The working directory */ public Command createCommand(String commandName, String[] args, int startingIndex, GlobalOptions gopt, String workingDir) throws IllegalArgumentException { CommandProvider provider = (CommandProvider) commandProvidersByNames.get(commandName); if (provider == null) { throw new IllegalArgumentException("Unknown command: '"+commandName+"'"); } return provider.createCommand(args, startingIndex, gopt, workingDir); } /** * Get the provider of a command. * @param name The name of the command to get the provider for. */ public CommandProvider getCommandProvider(String name) { return (CommandProvider) commandProvidersByNames.get(name); } /** * Get the array of all command providers. */ public CommandProvider[] getCommandProviders() { Set providers = new HashSet(commandProvidersByNames.values()); return (CommandProvider[]) providers.toArray(new CommandProvider[0]); } /* public static Command getCommand(String commandName, String[] args, int startingIndex, String workingDir) throws IllegalArgumentException { Class helper; try { helper = Class.forName("org.netbeans.lib.cvsclient.commandLine." + "command." + commandName); } catch (Exception e) { commandName = Character.toUpperCase(commandName.charAt(0)) + commandName.substring(1); try { helper = Class.forName("org.netbeans.lib.cvsclient.commandLine." + "command." + commandName); } catch (Exception ex) { System.err.println("Exception is: " + ex); throw new IllegalArgumentException("Unknown command " + commandName); } } // the method invoked can throw an exception try { Method m = helper.getMethod("createCommand", new Class[]{ String[].class, Integer.class, String.class}); return (Command) m.invoke(null, new Object[] { args, new Integer(startingIndex), workingDir }); } catch (IllegalArgumentException e) { throw e; } catch (InvocationTargetException ite) { Throwable t = ite.getCause(); if (t instanceof IllegalArgumentException) { throw (IllegalArgumentException) t; } else { IllegalArgumentException iaex = new IllegalArgumentException(t.getMessage()); iaex.initCause(t); throw iaex; } } catch (Exception e) { IllegalArgumentException iaex = new IllegalArgumentException(e.getMessage()); iaex.initCause(e); throw iaex; } } */ } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.