/**
   * {@inheritDoc}
   *
   * @see org.eclipse.jface.action.Action#run()
   */
  @Override
  public void run() {
    // Make sure default teiid instance is connected
    if (!checkForConnectedServer()) return;

    ITeiidServer teiidServer = getServerManager().getDefaultServer();

    for (IFile nextVDB : this.selectedVDBs) {
      boolean doDeploy = VdbRequiresSaveChecker.insureOpenVdbSaved(nextVDB);
      if (doDeploy) {
        boolean deploySuccess = deployVdb(teiidServer, nextVDB);

        String vdbName = nextVDB.getFullPath().removeFileExtension().lastSegment();
        try {
          // make sure deployment worked before going on to the next one
          if (!teiidServer.hasVdb(vdbName)) {
            deploySuccess = false;
            break;
          }
        } catch (Exception ex) {
          DqpPlugin.Util.log(ex);
          Shell shell = UiUtil.getWorkbenchShellOnlyIfUiThread();
          String title =
              UTIL.getString(
                  I18N_PREFIX + "problemDeployingVdbDataSource.title",
                  vdbName,
                  teiidServer); //$NON-NLS-1$
          String message =
              UTIL.getString(
                  I18N_PREFIX + "problemDeployingVdbDataSource.msg",
                  vdbName,
                  teiidServer); //$NON-NLS-1$
          ErrorDialog.openError(
              shell, title, null, new Status(IStatus.ERROR, PLUGIN_ID, message, ex));
        }

        if (deploySuccess) {
          try {
            CreateVdbDataSourceAction.doCreateDataSource(vdbName, teiidServer);
          } catch (Exception ex) {
            Shell shell = UiUtil.getWorkbenchShellOnlyIfUiThread();
            MessageDialog.openError(
                shell,
                UTIL.getString("CreateVdbDataSourceAction.errorCreatingDataSourceForVDB", vdbName),
                ex.getMessage()); // $NON-NLS-1$
            DqpUiConstants.UTIL.log(
                IStatus.ERROR,
                ex,
                UTIL.getString(
                    "CreateVdbDataSourceAction.errorCreatingDataSourceForVDB",
                    vdbName)); //$NON-NLS-1$
          }
        }
      }
    }
  }
  /** Ask the user to select the vdb and deploy it */
  public void queryUserAndRun() {
    // Make sure default teiid instance is connected
    if (!checkForConnectedServer()) return;

    ITeiidServer teiidServer = getServerManager().getDefaultServer();

    DeployVdbDialog dialog =
        new DeployVdbDialog(
            DqpUiPlugin.getDefault().getCurrentWorkbenchWindow().getShell(), designerProperties);

    dialog.open();

    if (dialog.getReturnCode() == Window.OK) {
      IFile vdb = dialog.getSelectedVdb();
      boolean doCreateDS = dialog.doCreateVdbDataSource();
      String jndiName = dialog.getVdbDataSourceJndiName();
      if (vdb != null) {
        boolean doDeploy = VdbRequiresSaveChecker.insureOpenVdbSaved(vdb);
        if (doDeploy) {
          deployVdb(teiidServer, vdb, true);
        }

        String vdbName = vdb.getFullPath().removeFileExtension().lastSegment();
        try {
          if (teiidServer.hasVdb(vdbName) && doCreateDS) {
            createVdbDataSource(vdb, jndiName, jndiName);
          }
        } catch (Exception ex) {
          DqpPlugin.Util.log(ex);
          Shell shell = UiUtil.getWorkbenchShellOnlyIfUiThread();
          String title =
              UTIL.getString(
                  I18N_PREFIX + "problemDeployingVdbDataSource.title",
                  vdbName,
                  teiidServer); //$NON-NLS-1$
          String message =
              UTIL.getString(
                  I18N_PREFIX + "problemDeployingVdbDataSource.msg",
                  vdbName,
                  teiidServer); //$NON-NLS-1$
          ErrorDialog.openError(
              shell, title, null, new Status(IStatus.ERROR, PLUGIN_ID, message, ex));
        }
      }
    }
  }