package fr.opensagres.nosql.ide.mongodb.ui.dialogs; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.widgets.Shell; import com.mongodb.tools.process.InvalidMongoHomeDirException; import com.mongodb.tools.process.MongoDBTools; import com.mongodb.tools.process.MongoProcessFiles; import com.mongodb.tools.process.mongod.MongodTools; import fr.opensagres.nosql.ide.core.model.IServerRuntime; import fr.opensagres.nosql.ide.core.utils.StringUtils; import fr.opensagres.nosql.ide.mongodb.core.model.MongoServerRuntime; import fr.opensagres.nosql.ide.mongodb.ui.internal.Messages; import fr.opensagres.nosql.ide.ui.dialogs.AbstractRuntimeDialog; public class MongoRuntimeDialog extends AbstractRuntimeDialog<MongoProcessFiles> { public MongoRuntimeDialog(Shell parentShell) { super(parentShell); } @Override protected MongoProcessFiles validateInstallDir() { // 1) validate install dir if (StringUtils.isEmpty(installDir.getText())) { setErrorMessage(Messages.errorInstallDirRequired); return null; } try { return MongoDBTools.validateMongoHomeDir(installDir.getText()); } catch (InvalidMongoHomeDirException e) { String errorMessage = null; switch (e.getType()) { case baseDirNotExists: errorMessage = NLS.bind( Messages.errorInstallDir_baseDirNotExists, e.getFile() .getPath()); break; case baseDirNotDir: errorMessage = NLS.bind(Messages.errorInstallDir_baseDirNotDir, e.getFile().getPath()); break; case binDirNotExists: errorMessage = NLS.bind( Messages.errorInstallDir_binDirNotExists, e.getFile() .getPath()); break; case processFileNotExists: errorMessage = NLS.bind( Messages.errorInstallDir_processFileNotExists, e .getFile().getPath()); break; } setErrorMessage(errorMessage); return null; } } @Override protected IServerRuntime createRuntime(String name, String installDir) throws Exception { return new MongoServerRuntime(name, installDir); } @Override protected String getGeneratedName(MongoProcessFiles files) throws Exception { return MongodTools.getDBVersion(files.getMongodFile()); } }