Refactor getNonConfiguredModules(Project)

Rename to getNonConfiguredModulesWithKotlinFiles() to match what it
actually does, remove duplicate configurator status check, extract code
for collecting all configurators
This commit is contained in:
Dmitry Jemerov
2017-03-10 19:18:40 +01:00
parent b86fe60a24
commit 9f8af1feea
3 changed files with 17 additions and 11 deletions
@@ -59,7 +59,7 @@ val EAP_11_REPOSITORY = RepositoryDescription(
isSnapshot = false) isSnapshot = false)
fun isModuleConfigured(module: Module): Boolean { fun isModuleConfigured(module: Module): Boolean {
return Extensions.getExtensions(KotlinProjectConfigurator.EP_NAME).any { return allConfigurators().any {
it.getStatus(module) == ConfigureKotlinStatus.CONFIGURED it.getStatus(module) == ConfigureKotlinStatus.CONFIGURED
} }
} }
@@ -113,19 +113,21 @@ fun showConfigureKotlinNotificationIfNeeded(project: Project, excludeModules: Li
fun getAbleToRunConfigurators(project: Project): Collection<KotlinProjectConfigurator> { fun getAbleToRunConfigurators(project: Project): Collection<KotlinProjectConfigurator> {
val modules = getConfigurableModulesWithKotlinFiles(project).ifEmpty { project.allModules() } val modules = getConfigurableModulesWithKotlinFiles(project).ifEmpty { project.allModules() }
return Extensions.getExtensions(KotlinProjectConfigurator.EP_NAME).filter { configurator -> return allConfigurators().filter { configurator ->
modules.any { module -> configurator.getStatus(module) == ConfigureKotlinStatus.CAN_BE_CONFIGURED } modules.any { module -> configurator.getStatus(module) == ConfigureKotlinStatus.CAN_BE_CONFIGURED }
} }
} }
fun getAbleToRunConfigurators(module: Module): Collection<KotlinProjectConfigurator> { fun getAbleToRunConfigurators(module: Module): Collection<KotlinProjectConfigurator> {
return Extensions.getExtensions(KotlinProjectConfigurator.EP_NAME).filter { it.getStatus(module) == ConfigureKotlinStatus.CAN_BE_CONFIGURED } return allConfigurators().filter { it.getStatus(module) == ConfigureKotlinStatus.CAN_BE_CONFIGURED }
} }
fun getConfiguratorByName(name: String): KotlinProjectConfigurator? { fun getConfiguratorByName(name: String): KotlinProjectConfigurator? {
return Extensions.getExtensions(KotlinProjectConfigurator.EP_NAME).firstOrNull { it.name == name } return allConfigurators().firstOrNull { it.name == name }
} }
fun allConfigurators() = Extensions.getExtensions(KotlinProjectConfigurator.EP_NAME)
fun getNonConfiguredModules(project: Project, configurator: KotlinProjectConfigurator): List<Module> { fun getNonConfiguredModules(project: Project, configurator: KotlinProjectConfigurator): List<Module> {
return project.allModules() return project.allModules()
.filter { module -> configurator.getStatus(module) == ConfigureKotlinStatus.CAN_BE_CONFIGURED } .filter { module -> configurator.getStatus(module) == ConfigureKotlinStatus.CAN_BE_CONFIGURED }
@@ -167,11 +169,11 @@ fun getNonConfiguredModulesWithKotlinFiles(project: Project, configurator: Kotli
return modules.filter { module -> configurator.getStatus(module) == ConfigureKotlinStatus.CAN_BE_CONFIGURED } return modules.filter { module -> configurator.getStatus(module) == ConfigureKotlinStatus.CAN_BE_CONFIGURED }
} }
fun getNonConfiguredModules(project: Project, excludeModules: Collection<Module> = emptyList()): Collection<Module> { fun getNonConfiguredModulesWithKotlinFiles(project: Project, excludeModules: Collection<Module> = emptyList()): Collection<Module> {
val modulesWithKotlinFiles = getConfigurableModulesWithKotlinFiles(project) - excludeModules val modulesWithKotlinFiles = getConfigurableModulesWithKotlinFiles(project) - excludeModules
val ableToRunConfigurators = getAbleToRunConfigurators(project) val configurators = allConfigurators()
return modulesWithKotlinFiles.filter { module -> return modulesWithKotlinFiles.filter { module ->
ableToRunConfigurators.any { it.getStatus(module) == ConfigureKotlinStatus.CAN_BE_CONFIGURED } configurators.any { it.getStatus(module) == ConfigureKotlinStatus.CAN_BE_CONFIGURED }
} }
} }
@@ -24,7 +24,7 @@ import com.intellij.openapi.project.Project
import org.jetbrains.kotlin.idea.configuration.KotlinProjectConfigurator import org.jetbrains.kotlin.idea.configuration.KotlinProjectConfigurator
import org.jetbrains.kotlin.idea.configuration.getAbleToRunConfigurators import org.jetbrains.kotlin.idea.configuration.getAbleToRunConfigurators
import org.jetbrains.kotlin.idea.configuration.getConfiguratorByName import org.jetbrains.kotlin.idea.configuration.getConfiguratorByName
import org.jetbrains.kotlin.idea.configuration.getNonConfiguredModules import org.jetbrains.kotlin.idea.configuration.getNonConfiguredModulesWithKotlinFiles
import org.jetbrains.kotlin.idea.configuration.ui.KotlinConfigurationCheckerComponent import org.jetbrains.kotlin.idea.configuration.ui.KotlinConfigurationCheckerComponent
import javax.swing.event.HyperlinkEvent import javax.swing.event.HyperlinkEvent
@@ -60,7 +60,7 @@ class ConfigureKotlinNotification(
companion object { companion object {
fun getNotificationString(project: Project, excludeModules: Collection<Module>): String { fun getNotificationString(project: Project, excludeModules: Collection<Module>): String {
val modules = getNonConfiguredModules(project, excludeModules) val modules = getNonConfiguredModulesWithKotlinFiles(project, excludeModules)
val isOnlyOneModule = modules.size == 1 val isOnlyOneModule = modules.size == 1
@@ -136,8 +136,12 @@ class GradleConfiguratorTest : GradleImportingTestCase() {
runReadAction { runReadAction {
val configurator = findGradleModuleConfigurator() val configurator = findGradleModuleConfigurator()
val moduleNames = getNonConfiguredModules(myProject, configurator).map { it.name }
assertSameElements(moduleNames, "app", "project") val moduleNames = getNonConfiguredModulesWithKotlinFiles(myProject).map { it.name }
assertSameElements(moduleNames, "app")
val moduleNamesFromConfigurator = getNonConfiguredModules(myProject, configurator).map { it.name }
assertSameElements(moduleNamesFromConfigurator, "app", "project")
val moduleNamesWithKotlinFiles = getNonConfiguredModulesWithKotlinFiles(myProject, configurator).map { it.name } val moduleNamesWithKotlinFiles = getNonConfiguredModulesWithKotlinFiles(myProject, configurator).map { it.name }
assertSameElements(moduleNamesWithKotlinFiles, "app") assertSameElements(moduleNamesWithKotlinFiles, "app")