Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import org.domaframework.doma.intellij.psi.SqlElClass
import org.domaframework.doma.intellij.psi.SqlElForDirective
import org.domaframework.doma.intellij.psi.SqlElFunctionCallExpr
import org.domaframework.doma.intellij.psi.SqlElIdExpr
import org.domaframework.doma.intellij.psi.SqlElParameters
import org.domaframework.doma.intellij.psi.SqlElStaticFieldAccessExpr
import org.domaframework.doma.intellij.psi.SqlTypes

Expand All @@ -41,6 +42,9 @@ class SqlPsiReferenceProvider : PsiReferenceProvider() {
arrayOf(SqlElClassExprReference(element))
} else if (element is SqlElIdExpr) {
when {
getParentClassPsiType(element, SqlElParameters::class.java) != null ->
arrayOf(SqlElIdExprReference(element))

getParentClassPsiType(element, SqlElFunctionCallExpr::class.java) != null ->
arrayOf(SqlElFunctionCallExprReference(element))

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,15 @@ import org.domaframework.doma.intellij.psi.SqlTypes
import org.jetbrains.kotlin.idea.core.util.toPsiFile

class SqlReferenceTestCase : DomaSqlTest() {
val testPackage = "reference"
val testDaoName = "ReferenceTestDao"
private val testPackage = "reference"
private val testDaoName = "ReferenceTestDao"

val forItemResolve = "SqlElIdExprImpl(EL_ID_EXPR)"
val forItemFieldAccessResolve = "SqlElFieldAccessExprImpl(EL_FIELD_ACCESS_EXPR)"
val daoParameterResolve = "PsiParameter"
val fieldResolve = "PsiField"
val methodResolve = "PsiMethod"
val classResolve = "PsiClass"
private val forItemResolve = "SqlElIdExprImpl(EL_ID_EXPR)"
private val forItemFieldAccessResolve = "SqlElFieldAccessExprImpl(EL_FIELD_ACCESS_EXPR)"
private val daoParameterResolve = "PsiParameter"
private val fieldResolve = "PsiField"
private val methodResolve = "PsiMethod"
private val classResolve = "PsiClass"

override fun setUp() {
super.setUp()
Expand Down Expand Up @@ -67,11 +67,15 @@ class SqlReferenceTestCase : DomaSqlTest() {
mapOf(
"detail" to listOf("$daoParameterResolve:detail"),
"getFirstEmployee" to listOf("$methodResolve:getFirstEmployee"),
"getCustomNumber" to listOf("$methodResolve:getCustomNumber"),
"projectCategory" to listOf("$fieldResolve:projectCategory"),
"projectNumber" to listOf("$fieldResolve:projectNumber"),
"projects" to listOf("$daoParameterResolve:projects"),
"project" to listOf(forItemResolve),
"id" to listOf(null),
"null" to listOf(null),
"employeeId" to listOf("$fieldResolve:employeeId"),
"isNotBlank" to listOf("$methodResolve:isNotBlank"),
),
)
}
Expand All @@ -85,7 +89,10 @@ class SqlReferenceTestCase : DomaSqlTest() {
"projectCategory" to listOf("$fieldResolve:projectCategory"),
"getTermNumber" to listOf("$methodResolve:getTermNumber"),
"getFirstEmployee" to listOf("$methodResolve:getFirstEmployee"),
"getCustomNumber" to listOf("$methodResolve:getCustomNumber"),
"detail" to listOf("$daoParameterResolve:detail"),
"employeeId" to listOf("$fieldResolve:employeeId"),
"toString" to listOf("$methodResolve:toString"),
),
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public interface ReferenceTestDao {
Project referenceEntityProperty(List<Project> projects, ProjectDetail detail);

@Select
ProjectDetail referenceStaticField();
ProjectDetail referenceStaticField(ProjectDetail detail);

@Select
List<Employee> referenceListFieldMethod(List<Employee> employeesList);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ public class ProjectDetail {

// Accessible static fields
public static Integr projectNumber;
private static String projectName;
private static String projectCategory;

private static Employee manager = new Employee();
Expand All @@ -39,4 +40,8 @@ public void addTermNumber(){
projectNumber++;
}

public static String getCustomNumber(String prefix) {
return prefix + projectName;
}

}
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
SELECT *
FROM project_detail
WHERE detail_id = /* detail.getFirstEmployee().employeeId */0
/*%if (detail != null && @isNotBlank(detail.projectCategory)) */
AND detail_id = /* detail.getCustomNumber(detail.projectCategory) */'number'
/*%for project : projects */
AND project_id = /* project.id */0
AND detail_sub_id = /* detail.getCustomNumber(project.projectCategory) */'sub'
/*%end*/
OR number = /* detail.projectNumber */
/*%end*/
OR number = /* detail.projectNumber */0
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
SELECT *
FROM project_detail
WHERE category = /* @doma.example.entity.ProjectDetail@projectCategory */'category'
AND number = /* @doma.example.entity.Project@getFirstEmployee().employeeId */'9999'
AND number = /* @doma.example.entity.Project@getFirstEmployee().employeeId.toString() */'9999'
OR number = /* @doma.example.entity.ProjectDetail@getCustomNumber(detail.projectCategory) */'number'