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)
fun isModuleConfigured(module: Module): Boolean {
return Extensions.getExtensions(KotlinProjectConfigurator.EP_NAME).any {
return allConfigurators().any {
it.getStatus(module) == ConfigureKotlinStatus.CONFIGURED
}
}
@@ -113,19 +113,21 @@ fun showConfigureKotlinNotificationIfNeeded(project: Project, excludeModules: Li
fun getAbleToRunConfigurators(project: Project): Collection<KotlinProjectConfigurator> {
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 }
}
}
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? {
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> {
return project.allModules()
.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 }
}
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 ableToRunConfigurators = getAbleToRunConfigurators(project)
val configurators = allConfigurators()
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.getAbleToRunConfigurators
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 javax.swing.event.HyperlinkEvent
@@ -60,7 +60,7 @@ class ConfigureKotlinNotification(
companion object {
fun getNotificationString(project: Project, excludeModules: Collection<Module>): String {
val modules = getNonConfiguredModules(project, excludeModules)
val modules = getNonConfiguredModulesWithKotlinFiles(project, excludeModules)
val isOnlyOneModule = modules.size == 1
@@ -136,8 +136,12 @@ class GradleConfiguratorTest : GradleImportingTestCase() {
runReadAction {
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 }
assertSameElements(moduleNamesWithKotlinFiles, "app")