package com.seventh7.mybatis.intention;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiMethod;
import com.intellij.psi.util.PsiTreeUtil;
import com.seventh7.mybatis.annotation.Annotation;
import com.seventh7.mybatis.util.JavaUtils;
import org.jetbrains.annotations.NotNull;
/**
* @author yanglin
*/
public class GenerateStatementChooser extends JavaFileIntentionChooser{
public static final JavaFileIntentionChooser INSTANCE = new GenerateStatementChooser();
@Override
public boolean isAvailable(@NotNull PsiElement element) {
if (!isPositionOfMethodDeclaration(element)) {
return false;
}
PsiMethod method = PsiTreeUtil.getParentOfType(element, PsiMethod.class);
PsiClass clazz = PsiTreeUtil.getParentOfType(element, PsiClass.class);
return null != method && null != clazz &&
!JavaUtils.isAnyAnnotationPresent(method, Annotation.STATEMENT_SYMMETRIES) &&
!isTargetPresentInXml(method) &&
isTargetPresentInXml(clazz);
}
}