public synchronized void run()

in src/com/intellij/idea/plugin/hybris/project/tasks/ImportProjectProgressModalWindow.java [133:219]


    public synchronized void run(@NotNull final ProgressIndicator indicator) {
        indicator.setIndeterminate(true);
        indicator.setText(message("hybris.project.import.preparation"));

        final var cache = new HybrisConfiguratorCache();
        final var allModules = getHybrisModuleDescriptors();
        final var allYModules = allModules.stream()
            .filter(YModuleDescriptor.class::isInstance)
            .map(YModuleDescriptor.class::cast)
            .distinct()
            .collect(Collectors.toMap(YModuleDescriptor::getName, Function.identity()));
        final var allModuleDescriptors = allModules.stream()
            .collect(Collectors.toMap(ModuleDescriptor::getName, Function.identity()));
        final var appSettings = ApplicationSettingsComponent.getInstance().getState();

        final var projectSettingsComponent = ProjectSettingsComponent.getInstance(project);
        final var projectSettings = projectSettingsComponent.getState();

        final var modulesFilesDirectory = hybrisProjectDescriptor.getModulesFilesDirectory();
        if (modulesFilesDirectory != null && !modulesFilesDirectory.exists()) {
            modulesFilesDirectory.mkdirs();
        }

        this.initializeHybrisProjectSettings(project, projectSettings);
        this.updateProjectDictionary(project, hybrisProjectDescriptor.getModulesChosenForImport());
        this.selectSdk(project);

        if (!refresh) {
            this.saveCustomDirectoryLocation(project, projectSettings);
            projectSettings.setExcludedFromScanning(hybrisProjectDescriptor.getExcludedFromScanning());
        }

        this.saveImportedSettings(projectSettings, appSettings, projectSettingsComponent);
        this.disableWrapOnType(ImpexLanguage.INSTANCE);

        PropertiesComponent.getInstance(project).setValue(SHOW_UNLINKED_GRADLE_POPUP, false);

        processUltimateEdition(indicator);

        ModifiableModuleModel rootProjectModifiableModel = model == null
            ? modifiableModelsProvider.getModifiableModuleModel()
            : model;

        configuratorFactory.getSpringConfigurator().process(indicator, hybrisProjectDescriptor, allModuleDescriptors);
        configuratorFactory.getGroupModuleConfigurator().process(indicator, allModules);

        int counter = 0;

        for (ModuleDescriptor moduleDescriptor : allModules) {
            final Module javaModule = createJavaModule(indicator, allYModules, rootProjectModifiableModel, moduleDescriptor, appSettings);
            modules.add(javaModule);
            counter++;

            if (counter >= COMMITTED_CHUNK_SIZE) {
                counter = 0;
                ApplicationManager.getApplication().invokeAndWait(
                    () -> ApplicationManager.getApplication().runWriteAction(modifiableModelsProvider::commit));

                modifiableModelsProvider = new IdeModifiableModelsProviderImpl(project);

                rootProjectModifiableModel = model == null
                    ? modifiableModelsProvider.getModifiableModuleModel()
                    : model;
            }
        }

        configuratorFactory.getModuleDependenciesConfigurator().configure(indicator, hybrisProjectDescriptor, modifiableModelsProvider);
        configuratorFactory.getSpringConfigurator().configure(indicator, hybrisProjectDescriptor, allModuleDescriptors, modifiableModelsProvider);
        configuratorFactory.getRunConfigurationConfigurator().configure(indicator, hybrisProjectDescriptor, project, cache);
        configuratorFactory.getVersionControlSystemConfigurator().configure(indicator, hybrisProjectDescriptor, project);
        configuratorFactory.getSearchScopeConfigurator().configure(indicator, project, appSettings, rootProjectModifiableModel);

        configureProjectIcon();

        indicator.setText(message("hybris.project.import.saving.project"));

        ApplicationManager.getApplication().invokeAndWait(
            () -> ApplicationManager.getApplication().runWriteAction(modifiableModelsProvider::commit));

        configuratorFactory.getLoadedConfigurator().configure(project, hybrisProjectDescriptor.getModulesChosenForImport());

        configureJavaCompiler(indicator, cache);
        configureKotlinCompiler(indicator, cache);
        configureEclipseModules(indicator);
        configureGradleModules(indicator);
        project.putUserData(ExternalSystemDataKeys.NEWLY_CREATED_PROJECT, Boolean.TRUE);
    }