private void determineIntegrationContext() {
   if (configurationMap.get(ToolIntegrationConstants.INTEGRATION_TYPE) != null) {
     for (ToolIntegrationContext context :
         integrationContextRegistry.getAllIntegrationContexts()) {
       if (context
           .getContextType()
           .equals(configurationMap.get(ToolIntegrationConstants.INTEGRATION_TYPE))) {
         integrationContext = context;
       }
     }
   } else {
     integrationContext =
         integrationContextRegistry.getToolIntegrationContext(
             ToolIntegrationConstants.COMMON_TOOL_INTEGRATION_CONTEXT_UID);
   }
 }
  /** Removes old integrated component for updating the new one. */
  public void removeOldIntegration() {
    integrationService.setFileWatcherActive(false);
    String previousToolName = "";
    String toolName = (String) configurationMap.get(ToolIntegrationConstants.KEY_TOOL_NAME);
    File previousToolDir = null;
    if (previousConfiguration != null) {
      previousToolName = (String) previousConfiguration.get(ToolIntegrationConstants.KEY_TOOL_NAME);
      previousToolDir =
          new File(
              new File(
                  integrationContext.getRootPathToToolIntegrationDirectory(),
                  integrationContext.getNameOfToolIntegrationDirectory()),
              previousToolName);
    } else {
      previousToolName = toolName;
    }
    if (previousToolDir != null) {
      storeIconAndDocuInTempDir(previousToolDir);
    }
    integrationService.unregisterIntegration(previousToolName, integrationContext);
    integrationService.removeTool(previousToolName, integrationContext);
    if (!previousToolName.equals(toolName)) {

      File delete = previousToolDir;
      try {
        FileUtils.forceDelete(delete);
      } catch (IOException e) {
        LogFactory.getLog(ToolIntegrationWizard.class).error(e);
      }
    } else {
      if (configurationMap.get(ToolIntegrationConstants.KEY_DOC_FILE_PATH) == null
          || ((String) configurationMap.get(ToolIntegrationConstants.KEY_DOC_FILE_PATH))
              .isEmpty()) {
        File docDir = new File(previousToolDir, ToolIntegrationConstants.DOCS_DIR_NAME);
        if (docDir.listFiles() != null) {
          for (File f : docDir.listFiles()) {
            try {
              FileUtils.forceDelete(f);
            } catch (IOException e) {
              LOGGER.error("Could not delete file in tool docs directory: ", e);
            }
          }
        }
      }
    }
    integrationService.setFileWatcherActive(true);
  }
 /**
  * Saves the wizards configuration to the given path.
  *
  * @param folderPath where to store the configuration.
  */
 public void performSaveAs(String folderPath) {
   determineIntegrationContext();
   File toolConfigFile =
       new File(
           folderPath,
           integrationContext.getNameOfToolIntegrationDirectory()
               + File.separator
               + integrationContext.getToolDirectoryPrefix()
               + configurationMap.get(ToolIntegrationConstants.KEY_TOOL_NAME));
   try {
     integrationService.writeToolIntegrationFileToSpecifiedFolder(
         folderPath, configurationMap, integrationContext);
     MessageBox infoDialog = new MessageBox(getShell(), SWT.ICON_INFORMATION | SWT.OK);
     if (toolConfigFile.exists()) {
       infoDialog.setText("Tool saved");
       infoDialog.setMessage(
           StringUtils.format(
               "Successfully saved tool: %s\nLocation: " + toolConfigFile.getAbsolutePath(),
               configurationMap.get(ToolIntegrationConstants.KEY_TOOL_NAME)));
     } else {
       infoDialog.setText("Saving failed");
       infoDialog.setMessage(
           StringUtils.format(
               "Could not save tool: %s\nLocation tried: " + toolConfigFile.getAbsolutePath(),
               configurationMap.get(ToolIntegrationConstants.KEY_TOOL_NAME)));
     }
     infoDialog.open();
   } catch (IOException e) {
     MessageBox errorDialog = new MessageBox(getShell(), SWT.ICON_ERROR | SWT.OK);
     errorDialog.setText("Saving failed");
     errorDialog.setMessage(
         StringUtils.format(
             "Failed to save tool configuration to: "
                 + toolConfigFile.getAbsolutePath()
                 + "\nCause: "
                 + e.getMessage(),
             configurationMap.get(ToolIntegrationConstants.KEY_TOOL_NAME)));
     errorDialog.open();
   }
 }
  /**
   * Setter for the configuration map to edit.
   *
   * @param newPreviousConfiguration loaded map
   * @param configJson where the config came from
   */
  public void setPreviousConfiguration(
      Map<String, Object> newPreviousConfiguration, File configJson) {
    Map<String, Object> configurationMapCopy = new HashMap<>();
    previousConfiguration = new HashMap<>(newPreviousConfiguration);
    if (newPreviousConfiguration != null) {
      configurationMapCopy.putAll(newPreviousConfiguration);
    }
    setConfigurationMap(configurationMapCopy);
    if (configJson != null) {
      if (newPreviousConfiguration != null
          && newPreviousConfiguration.get(ToolIntegrationConstants.INTEGRATION_TYPE) != null) {
        for (ToolIntegrationContext context :
            integrationContextRegistry.getAllIntegrationContexts()) {
          if (newPreviousConfiguration
              .get(ToolIntegrationConstants.INTEGRATION_TYPE)
              .equals(context.getContextType())) {
            integrationContext = context;
          }
        }
      } else {
        integrationContext =
            integrationContextRegistry.getToolIntegrationContext(
                ToolIntegrationConstants.COMMON_TOOL_INTEGRATION_CONTEXT_UID);
      }
    }

    updateAllPages();
    for (Entry<String, List<ToolIntegrationWizardPage>> addPages : additionalPages.entrySet()) {
      if (newPreviousConfiguration != null
          && !addPages
              .getKey()
              .equals(newPreviousConfiguration.get(ToolIntegrationConstants.INTEGRATION_TYPE))) {
        for (ToolIntegrationWizardPage page : addPages.getValue()) {
          page.setPageComplete(true);
        }
      }
    }
  }