Skip to content

Commit

Permalink
UpdateとDeleteの引数チェックを追加
Browse files Browse the repository at this point in the history
  • Loading branch information
siosio committed Nov 21, 2017
1 parent 6c8ff34 commit bbf7521
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 22 deletions.
35 changes: 21 additions & 14 deletions src/main/java/siosio/doma/inspection/dao/DaoInspectorFactory.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,35 +3,42 @@ package siosio.doma.inspection.dao
import com.intellij.codeInsight.*
import com.intellij.psi.util.*

val parameterTypeCheck: ParameterRule.() -> Unit = {
message = "inspection.dao.entity-param-not-found"
rule = {
when (size) {
1 -> {
PsiTypesUtil.getPsiClass(first().type)?.let {
AnnotationUtil.isAnnotated(it, "org.seasar.doma.Entity", false)
} ?: false
}
else -> false
}
}
}

val insertMethodRule =
rule {
sql(false)

// 引数チェック
parameterRule {
message = "inspection.dao.entity-param-not-found"
rule = {
when (size) {
1 -> {
val type = first().type
PsiTypesUtil.getPsiClass(type)?.let {
AnnotationUtil.isAnnotated(it, "org.seasar.doma.Entity", false)
} ?: false
}
else -> false
}
}
}
parameterRule(parameterTypeCheck)
}

val updateMethodRule =
rule {
sql(false)

// 引数チェック
parameterRule(parameterTypeCheck)
}

val deleteMethodRule =
rule {
sql(false)

// 引数チェック
parameterRule(parameterTypeCheck)
}

val batchInsertMethodRule =
Expand Down
21 changes: 17 additions & 4 deletions testData/siosio/doma/inspection/dao/DeleteDao.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,36 @@

import org.seasar.doma.*;
import org.seasar.doma.jdbc.*;
import siosio.doma.inspection.dao.entity.*;

@Dao
public interface DeleteDao {

// デフォルトSQLファイルは不要
@Delete
int SQLファイル不要();
int SQLファイル不要(MutableEntity entity);

// 明示的にSQLファイルの不要設定を
@Delete(sqlFile = false)
int SQLファイル不要2();
int SQLファイル不要2(MutableEntity entity);

// SQLが必要な場合でSQLファイルがある場合
@Delete(sqlFile = true)
int SQLファイルあり();
int SQLファイルあり(MutableEntity entity);

// SQLが必要な場合でSQLファイルがない場合
@Delete(sqlFile = true)
int <error descr="SQLファイルがありません。">SQLファイルなし</error>();
int <error descr="SQLファイルがありません。">SQLファイルなし</error>(MutableEntity entity);

// 引数がないの場合
@Delete
int パラメータなし<error descr="引数にEntityを1つ指定してください。">()</error>;

// 引数が複数の場合
@Delete
int パラメータなし<error descr="引数にEntityを1つ指定してください。">(MutableEntity entity1, MutableEntity entity2)</error>;

// 引数が非Entityの場合
@Delete
int パラメータなし<error descr="引数にEntityを1つ指定してください。">(String entity)</error>;
}
21 changes: 17 additions & 4 deletions testData/siosio/doma/inspection/dao/UpdateDao.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,36 @@

import org.seasar.doma.*;
import org.seasar.doma.jdbc.*;
import siosio.doma.inspection.dao.entity.*;

@Dao
public interface UpdateDao {

// デフォルトSQLファイルは不要
@Update
int SQLファイル不要();
int SQLファイル不要(MutableEntity entity);

// 明示的にSQLファイルの不要設定を
@Update(sqlFile = false)
int SQLファイル不要2();
int SQLファイル不要2(MutableEntity entity);

// SQLが必要な場合でSQLファイルがある場合
@Update(sqlFile = true)
int SQLファイルあり();
int SQLファイルあり(MutableEntity entity);

// SQLが必要な場合でSQLファイルがない場合
@Update(sqlFile = true)
int <error descr="SQLファイルがありません。">SQLファイルなし</error>();
int <error descr="SQLファイルがありません。">SQLファイルなし</error>(MutableEntity entity);

// 引数がないの場合
@Update
int パラメータなし<error descr="引数にEntityを1つ指定してください。">()</error>;

// 引数が複数の場合
@Update
int パラメータなし<error descr="引数にEntityを1つ指定してください。">(MutableEntity entity1, MutableEntity entity2)</error>;

// 引数が非Entityの場合
@Update
int パラメータなし<error descr="引数にEntityを1つ指定してください。">(String entity)</error>;
}

0 comments on commit bbf7521

Please sign in to comment.