Skip to content

Commit 4e211a3

Browse files
committed
Configuring Custom Function SupportResolving Class Conflicts
1 parent 2edd8fe commit 4e211a3

File tree

2 files changed

+96
-99
lines changed

2 files changed

+96
-99
lines changed

src/main/kotlin/org/domaframework/doma/intellij/common/CommonPathParameterHelper.kt

Lines changed: 90 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,96 @@
1515
*/
1616
package org.domaframework.doma.intellij.common
1717

18-
// TODO Dynamically build the source directory path and retrieve subproject info
19-
// by inspecting file metadata instead of using string manipulation.
20-
object CommonPathParameterHelper {
21-
val SRC_MAIN_PATH: String
22-
get() = "/src/main"
18+
import com.intellij.openapi.module.Module
19+
import com.intellij.openapi.roots.ModuleRootManager
20+
import com.intellij.openapi.vfs.VirtualFile
21+
import org.jetbrains.jps.model.java.JavaResourceRootType
22+
import org.jetbrains.jps.model.java.JavaSourceRootType
2323

24-
val RESOURCES_PATH: String
25-
get() = "resources"
24+
val RESOURCES_META_INF_PATH: String
25+
get() = "META-INF"
2626

27-
val RESOURCES_META_INF_PATH: String
28-
get() = "META-INF"
27+
class CommonPathParameter(
28+
module: Module?,
29+
) {
30+
/**
31+
* module base path ex)Absolute path of "/src/main"
32+
*/
33+
var moduleBasePath: VirtualFile? = null
34+
35+
/**
36+
* module source directories ex) Absolute path of "/src/main/java","/src/main/kotlin"
37+
*/
38+
var moduleSourceDirectories: MutableList<VirtualFile> = mutableListOf()
39+
40+
/**
41+
* module resource directory ex) Absolute path of "/src/main/resources"
42+
*/
43+
var moduleResourceDirectories: MutableList<VirtualFile> = mutableListOf()
44+
45+
var moduleTestSourceDirectories: MutableList<VirtualFile> = mutableListOf()
46+
var moduleTestResourceDirectories: MutableList<VirtualFile> = mutableListOf()
47+
48+
init {
49+
setModuleSourcesFiles(module)
50+
}
51+
52+
private fun setModuleSourcesFiles(module: Module?) {
53+
if (module == null) return
54+
55+
val modulemanager = ModuleRootManager.getInstance(module)
56+
57+
moduleSourceDirectories.clear()
58+
modulemanager?.contentEntries?.firstOrNull()?.let { entry ->
59+
moduleBasePath = entry.file
60+
entry.sourceFolders.map { folder ->
61+
val file = folder.file
62+
if (file != null) {
63+
when (folder.rootType) {
64+
JavaSourceRootType.SOURCE -> {
65+
moduleSourceDirectories.add(file)
66+
}
67+
68+
JavaSourceRootType.TEST_SOURCE -> {
69+
moduleTestSourceDirectories.add(file)
70+
}
71+
72+
JavaResourceRootType.RESOURCE -> {
73+
moduleResourceDirectories.add(file)
74+
}
75+
76+
JavaResourceRootType.TEST_RESOURCE -> {
77+
moduleTestResourceDirectories.add(file)
78+
}
79+
}
80+
}
81+
}
82+
}
83+
}
84+
85+
fun isTest(file: VirtualFile): Boolean {
86+
val testSource =
87+
moduleTestSourceDirectories.firstOrNull { testSource ->
88+
file.path.contains(testSource.path)
89+
}
90+
if (testSource != null) return true
91+
92+
return moduleTestResourceDirectories.firstOrNull { testSource ->
93+
file.path.contains(testSource.path)
94+
} != null
95+
}
96+
97+
fun getResources(file: VirtualFile): MutableList<VirtualFile> =
98+
if (isTest(file)) {
99+
moduleTestResourceDirectories
100+
} else {
101+
moduleResourceDirectories
102+
}
103+
104+
fun getSources(file: VirtualFile): MutableList<VirtualFile> =
105+
if (isTest(file)) {
106+
moduleTestSourceDirectories
107+
} else {
108+
moduleSourceDirectories
109+
}
29110
}

src/main/kotlin/org/domaframework/doma/intellij/setting/state/DomaToolsSettings.kt

Lines changed: 6 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -13,98 +13,14 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package org.domaframework.doma.intellij.common
16+
package org.domaframework.doma.intellij.setting.state
1717

18-
import com.intellij.openapi.module.Module
19-
import com.intellij.openapi.roots.ModuleRootManager
20-
import com.intellij.openapi.vfs.VirtualFile
21-
import org.jetbrains.jps.model.java.JavaResourceRootType
22-
import org.jetbrains.jps.model.java.JavaSourceRootType
18+
import org.domaframework.doma.intellij.setting.SettingComponent
2319

24-
val RESOURCES_META_INF_PATH: String
25-
get() = "META-INF"
20+
interface DomaToolsSettings {
21+
fun isModified(component: SettingComponent?): Boolean
2622

27-
class CommonPathParameter(
28-
module: Module?,
29-
) {
30-
/**
31-
* module base path ex)Absolute path of "/src/main"
32-
*/
33-
var moduleBasePath: VirtualFile? = null
23+
fun apply(component: SettingComponent?)
3424

35-
/**
36-
* module source directories ex) Absolute path of "/src/main/java","/src/main/kotlin"
37-
*/
38-
var moduleSourceDirectories: MutableList<VirtualFile> = mutableListOf()
39-
40-
/**
41-
* module resource directory ex) Absolute path of "/src/main/resources"
42-
*/
43-
var moduleResourceDirectories: MutableList<VirtualFile> = mutableListOf()
44-
45-
var moduleTestSourceDirectories: MutableList<VirtualFile> = mutableListOf()
46-
var moduleTestResourceDirectories: MutableList<VirtualFile> = mutableListOf()
47-
48-
init {
49-
setModuleSourcesFiles(module)
50-
}
51-
52-
private fun setModuleSourcesFiles(module: Module?) {
53-
if (module == null) return
54-
55-
val modulemanager = ModuleRootManager.getInstance(module)
56-
57-
moduleSourceDirectories.clear()
58-
modulemanager?.contentEntries?.firstOrNull()?.let { entry ->
59-
moduleBasePath = entry.file
60-
entry.sourceFolders.map { folder ->
61-
val file = folder.file
62-
if (file != null) {
63-
when (folder.rootType) {
64-
JavaSourceRootType.SOURCE -> {
65-
moduleSourceDirectories.add(file)
66-
}
67-
68-
JavaSourceRootType.TEST_SOURCE -> {
69-
moduleTestSourceDirectories.add(file)
70-
}
71-
72-
JavaResourceRootType.RESOURCE -> {
73-
moduleResourceDirectories.add(file)
74-
}
75-
76-
JavaResourceRootType.TEST_RESOURCE -> {
77-
moduleTestResourceDirectories.add(file)
78-
}
79-
}
80-
}
81-
}
82-
}
83-
}
84-
85-
fun isTest(file: VirtualFile): Boolean {
86-
val testSource =
87-
moduleTestSourceDirectories.firstOrNull { testSource ->
88-
file.path.contains(testSource.path)
89-
}
90-
if (testSource != null) return true
91-
92-
return moduleTestResourceDirectories.firstOrNull { testSource ->
93-
file.path.contains(testSource.path)
94-
} != null
95-
}
96-
97-
fun getResources(file: VirtualFile): MutableList<VirtualFile> =
98-
if (isTest(file)) {
99-
moduleTestResourceDirectories
100-
} else {
101-
moduleResourceDirectories
102-
}
103-
104-
fun getSources(file: VirtualFile): MutableList<VirtualFile> =
105-
if (isTest(file)) {
106-
moduleTestSourceDirectories
107-
} else {
108-
moduleSourceDirectories
109-
}
25+
fun reset(component: SettingComponent?)
11026
}

0 commit comments

Comments
 (0)