| package com.intellij.tasks.jira.jql.psi.impl; |
| |
| import com.intellij.lang.ASTNode; |
| import com.intellij.psi.PsiElement; |
| import com.intellij.tasks.jira.jql.JqlTokenTypes; |
| import com.intellij.tasks.jira.jql.psi.JqlElementVisitor; |
| import com.intellij.tasks.jira.jql.psi.JqlOperand; |
| import com.intellij.tasks.jira.jql.psi.JqlSimpleClause; |
| import org.jetbrains.annotations.NotNull; |
| import org.jetbrains.annotations.Nullable; |
| |
| /** |
| * @author Mikhail Golubev |
| */ |
| public class JqlSimpleClauseImpl extends JqlTerminalClauseImpl implements JqlSimpleClause { |
| public JqlSimpleClauseImpl(@NotNull ASTNode node) { |
| super(node); |
| } |
| |
| @Override |
| public void accept(JqlElementVisitor visitor) { |
| visitor.visitJqlSimpleClause(this); |
| } |
| |
| @NotNull |
| @Override |
| public Type getType() { |
| if (findChildByType(JqlTokenTypes.IN_KEYWORD) != null) { |
| return findChildByType(JqlTokenTypes.NOT_KEYWORD) != null ? Type.NOT_IN : Type.IN; |
| } |
| if (findChildByType(JqlTokenTypes.IS_KEYWORD) != null) { |
| return findChildByType(JqlTokenTypes.NOT_KEYWORD) != null ? Type.IS_NOT : Type.IS; |
| } |
| PsiElement opElem = findChildByType(JqlTokenTypes.SIGN_OPERATORS); |
| assert opElem != null; |
| Type type = Type.fromTokenType(opElem.getNode().getElementType()); |
| assert type != null; |
| return type; |
| } |
| |
| /** |
| * Operand can be missing in malformed query. |
| */ |
| @Nullable |
| @Override |
| public JqlOperand getOperand() { |
| return findChildByClass(JqlOperand.class); |
| } |
| } |