package fr.opensagres.mongodb.ide.launching.internal.launchConfigurations.mongo; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.ILaunch; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.model.IProcess; import fr.opensagres.mongodb.ide.core.model.Database; import fr.opensagres.mongodb.ide.core.model.MongoRuntime; import fr.opensagres.mongodb.ide.core.model.Server; import fr.opensagres.mongodb.ide.core.utils.StringUtils; import fr.opensagres.mongodb.ide.launching.internal.LaunchHelper; import fr.opensagres.mongodb.ide.launching.internal.launchConfigurations.MongoProcessType; import fr.opensagres.mongodb.ide.launching.internal.launchConfigurations.ProcessLaunchConfigurationDelegate; public class MongoLaunchConfigurationDelegate extends ProcessLaunchConfigurationDelegate { public MongoLaunchConfigurationDelegate() { super(MongoProcessType.mongo); } @Override protected String[] getArguments(ILaunchConfiguration configuration, MongoRuntime runtime) throws CoreException { List<String> args = new ArrayList<String>(); Database database = LaunchHelper.getDatabase(configuration); Server server = database.getParent(); Integer port = server.getPort(); // see // http://www.mongodb.org/display/DOCS/Overview+-+The+MongoDB+Interactive+Shell // Host+Port+Database String hostPortAndDatabase = database.getStartMongoConsoleCommand(); args.add(hostPortAndDatabase.toString()); // Add other args like username, password, etc database.updateMongoConsoleArgs(args); return args.toArray(StringUtils.EMPTY_STRING_ARRAY); } @Override protected IProcess createProcess(ILaunch launch, IPath location, Process p, Map processAttributes) { return DebugPlugin.newProcess(launch, p, location.toOSString(), processAttributes); } @Override protected MongoRuntime getRuntime(ILaunchConfiguration configuration) throws CoreException { Database database = LaunchHelper.getDatabase(configuration); if (database != null) { MongoRuntime runtime = database.getParent().getRuntime(); if (runtime != null) { return runtime; } } return null; } }