package com.intellij.tasks.jira.jql.psi.impl; import com.intellij.lang.ASTNode; import com.intellij.tasks.jira.jql.psi.JqlClauseWithHistoryPredicates; import com.intellij.tasks.jira.jql.psi.JqlHistoryPredicate; import com.intellij.tasks.jira.jql.psi.JqlOperand; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** * @author Mikhail Golubev */ public abstract class JqlClauseWithHistoryPredicatesImpl extends JqlTerminalClauseImpl implements JqlClauseWithHistoryPredicates { public JqlClauseWithHistoryPredicatesImpl(@NotNull ASTNode node) { super(node); } @Nullable @Override public JqlOperand getAfter() { return findOperandOfPredicate(JqlHistoryPredicate.Type.AFTER); } @Nullable @Override public JqlOperand getBefore() { return findOperandOfPredicate(JqlHistoryPredicate.Type.BEFORE); } @Nullable @Override public JqlOperand getOn() { return findOperandOfPredicate(JqlHistoryPredicate.Type.ON); } @Nullable @Override public JqlOperand getBy() { return findOperandOfPredicate(JqlHistoryPredicate.Type.BY); } @Nullable @Override public JqlOperand getDuring() { return findOperandOfPredicate(JqlHistoryPredicate.Type.DURING); } @Nullable @Override public JqlOperand getFrom() { return findOperandOfPredicate(JqlHistoryPredicate.Type.FROM); } @Nullable @Override public JqlOperand getTo() { return findOperandOfPredicate(JqlHistoryPredicate.Type.TO); } @NotNull @Override public JqlHistoryPredicate[] getHistoryPredicates() { return findChildrenByClass(JqlHistoryPredicate.class); } private JqlOperand findOperandOfPredicate(JqlHistoryPredicate.Type type) { for (JqlHistoryPredicate predicate : getHistoryPredicates()) { if (predicate.getType() == type) { return predicate.getOperand(); } } return null; } }