/*******************************************************************************
* Copyright (c) May 17, 2011 Zend Technologies Ltd.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
package org.zend.sdkcli;
import org.zend.sdkcli.internal.commands.AddRepositoryCommand;
import org.zend.sdkcli.internal.commands.AddTargetCommand;
import org.zend.sdkcli.internal.commands.CommandLine;
import org.zend.sdkcli.internal.commands.CreateCodetracingCommand;
import org.zend.sdkcli.internal.commands.CreatePackageCommand;
import org.zend.sdkcli.internal.commands.CreateProjectCommand;
import org.zend.sdkcli.internal.commands.DeleteCodetracingCommand;
import org.zend.sdkcli.internal.commands.DeployApplicationCommand;
import org.zend.sdkcli.internal.commands.DetectTargetCommand;
import org.zend.sdkcli.internal.commands.DisableCodetracingCommand;
import org.zend.sdkcli.internal.commands.DiscoverApplicationCommand;
import org.zend.sdkcli.internal.commands.EnableCodetracingCommand;
import org.zend.sdkcli.internal.commands.ExportIssueCommand;
import org.zend.sdkcli.internal.commands.GenerateRepositoryCommand;
import org.zend.sdkcli.internal.commands.ExportCodetraceCommand;
import org.zend.sdkcli.internal.commands.GetIssueCommand;
import org.zend.sdkcli.internal.commands.GitCloneProjectCommand;
import org.zend.sdkcli.internal.commands.ListApplicationsCommand;
import org.zend.sdkcli.internal.commands.ListCodetracingCommand;
import org.zend.sdkcli.internal.commands.ListIssuesCommand;
import org.zend.sdkcli.internal.commands.ListRepositoriesCommand;
import org.zend.sdkcli.internal.commands.ListTargetsCommand;
import org.zend.sdkcli.internal.commands.RedeployApplicationCommand;
import org.zend.sdkcli.internal.commands.RemoveApplicationCommand;
import org.zend.sdkcli.internal.commands.RemoveRepositoryCommand;
import org.zend.sdkcli.internal.commands.RemoveTargetCommand;
import org.zend.sdkcli.internal.commands.UpdateApplicationCommand;
import org.zend.sdkcli.internal.commands.UpdateProjectCommand;
import org.zend.sdkcli.internal.commands.UpdateTargetCommand;
import org.zend.sdkcli.internal.commands.UsageCommand;
/**
* Creates command instance.
*
* @author Wojciech Galanciak, 2011
*
*/
public class CommandFactory {
/**
* Creates {@link ICommand} implementor instance based on a given command
* line.
*
* @param line
* - command line
* @return command instance
* @throws ParseError
*/
public static ICommand createCommand(CommandLine line) {
CommandType type = CommandType.byCommandLine(line);
return createCommand(type);
}
public static ICommand createCommand(CommandType type) {
ICommand command = null;
switch (type) {
case CREATE_PROJECT:
command = new CreateProjectCommand();
break;
case UPDATE_PROJECT:
command = new UpdateProjectCommand();
break;
case CLONE_PROJECT:
command = new GitCloneProjectCommand();
break;
case LIST_TARGETS:
command = new ListTargetsCommand();
break;
case ADD_TARGET:
command = new AddTargetCommand();
break;
case REMOVE_TARGET:
command = new RemoveTargetCommand();
break;
case DETECT_TARGET:
command = new DetectTargetCommand();
break;
case UPDATE_TARGET:
command = new UpdateTargetCommand();
break;
case LIST_APPLICATIONS:
command = new ListApplicationsCommand();
break;
case DEPLOY_APPLICATION:
command = new DeployApplicationCommand();
break;
case REDEPLOY_APPLICATION:
command = new RedeployApplicationCommand();
break;
case UPDATE_APPLICATION:
command = new UpdateApplicationCommand();
break;
case REMOVE_APPLICATION:
command = new RemoveApplicationCommand();
break;
case DISCOVER_APPLICATION:
command = new DiscoverApplicationCommand();
break;
case CREATE_PACKAGE:
command = new CreatePackageCommand();
break;
case ADD_REPOSITORY:
command = new AddRepositoryCommand();
break;
case REMOVE_REPOSITORY:
command = new RemoveRepositoryCommand();
break;
case LIST_REPOSITORIES:
command = new ListRepositoriesCommand();
break;
case GENERATE_REPOSITORIES:
command = new GenerateRepositoryCommand();
break;
case ENABLE_CODETRACING:
command = new EnableCodetracingCommand();
break;
case DISABLE_CODETRACING:
command = new DisableCodetracingCommand();
break;
case CREATE_CODETRACE:
command = new CreateCodetracingCommand();
break;
case DELETE_CODETRACE:
command = new DeleteCodetracingCommand();
break;
case LIST_CODETRACES:
command = new ListCodetracingCommand();
break;
case EXPORT_CODETRACE:
command = new ExportCodetraceCommand();
break;
case LIST_ISSUES:
command = new ListIssuesCommand();
break;
case GET_ISSUE:
command = new GetIssueCommand();
break;
case EXPORT_ISSUE:
command = new ExportIssueCommand();
break;
default:
command = new UsageCommand();
break;
}
return command;
}
}