blob: fb38d4d18f46dd405f84735cfff21fe7f5a90457 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.uima.ruta.condition;
import java.util.List;
import org.antlr.runtime.Token;
import org.apache.uima.ruta.RutaBlock;
import org.apache.uima.ruta.expression.RutaExpression;
import org.apache.uima.ruta.expression.bool.BooleanExpression;
import org.apache.uima.ruta.expression.list.ListExpression;
import org.apache.uima.ruta.expression.list.StringListExpression;
import org.apache.uima.ruta.expression.list.TypeListExpression;
import org.apache.uima.ruta.expression.number.NumberExpression;
import org.apache.uima.ruta.expression.resource.WordListExpression;
import org.apache.uima.ruta.expression.string.StringExpression;
import org.apache.uima.ruta.expression.type.TypeExpression;
public class ConditionFactory {
private ConditionFactory() {
}
public static AbstractRutaCondition createConditionAnd(List<AbstractRutaCondition> conds,
RutaBlock parent) {
return new AndCondition(conds);
}
public static AbstractRutaCondition createConditionOr(List<AbstractRutaCondition> conds,
RutaBlock parent) {
return new OrCondition(conds);
}
public static AbstractRutaCondition createConditionNot(AbstractRutaCondition cond,
RutaBlock parent) {
return new NotCondition(cond);
}
public static AbstractRutaCondition createConditionContains(TypeExpression typeExpr,
NumberExpression min, NumberExpression max, BooleanExpression percent, RutaBlock parent) {
return new ContainsCondition(typeExpr, min, max, percent);
}
public static AbstractRutaCondition createConditionContextCount(TypeExpression typeExpr,
NumberExpression min, NumberExpression max, Token var, RutaBlock parent) {
String varString = null;
if (var != null) {
varString = var.getText();
}
return new ContextCountCondition(typeExpr, min, max, varString);
}
public static AbstractRutaCondition createConditionCurrentCount(TypeExpression typeExpr,
NumberExpression min, NumberExpression max, Token var, RutaBlock parent) {
String varString = null;
if (var != null) {
varString = var.getText();
}
return new CurrentCountCondition(typeExpr, min, max, varString);
}
public static AbstractRutaCondition createConditionCount(TypeExpression typeExpr,
NumberExpression min, NumberExpression max, Token var, RutaBlock parent) {
String varString = null;
if (var != null) {
varString = var.getText();
}
return new CountCondition(typeExpr, min, max, varString);
}
public static AbstractRutaCondition createConditionTotalCount(TypeExpression typeExpr,
NumberExpression min, NumberExpression max, Token var, RutaBlock parent) {
String varString = null;
if (var != null) {
varString = var.getText();
}
return new TotalCountCondition(typeExpr, min, max, varString);
}
public static AbstractRutaCondition createConditionInList(WordListExpression listExpr,
NumberExpression dist, BooleanExpression rel, RutaBlock parent) {
return new InListCondition(listExpr, dist, rel);
}
public static AbstractRutaCondition createConditionMOfN(List<AbstractRutaCondition> conds,
NumberExpression min, NumberExpression max, RutaBlock parent) {
return new MOfNCondition(conds, min, max);
}
public static AbstractRutaCondition createConditionNear(TypeExpression typeExpr,
NumberExpression min, NumberExpression max, BooleanExpression direction,
BooleanExpression filtered, RutaBlock parent) {
return new NearCondition(typeExpr, min, max, direction, filtered);
}
public static AbstractRutaCondition createConditionPartOf(TypeExpression type,
TypeListExpression list, RutaBlock parent) {
if (type != null) {
return new PartOfCondition(type);
} else {
return new PartOfCondition(list);
}
}
public static AbstractRutaCondition createConditionPosition(TypeExpression typeExpr,
NumberExpression pos, BooleanExpression rel, RutaBlock parent) {
return new PositionCondition(typeExpr, pos, rel);
}
public static AbstractRutaCondition createConditionRegExp(StringExpression patternExpr,
BooleanExpression ignoreCase, RutaBlock parent) {
return new RegExpCondition(patternExpr, ignoreCase);
}
public static AbstractRutaCondition createConditionRegExp(StringExpression v,
StringExpression patternExpr, BooleanExpression ignoreCase, RutaBlock parent) {
return new RegExpCondition(v, patternExpr, ignoreCase);
}
public static AbstractRutaCondition createConditionScore(NumberExpression min,
NumberExpression max, Token var, RutaBlock parent) {
String varString = null;
if (var != null) {
varString = var.getText();
}
return new ScoreCondition(min, max, varString);
}
public static AbstractRutaCondition createConditionVote(TypeExpression type1Expr,
TypeExpression type2Expr, RutaBlock parent) {
return new VoteCondition(type1Expr, type2Expr);
}
public static AbstractRutaCondition createConditionLast(TypeExpression typeExpr, RutaBlock parent) {
return new LastCondition(typeExpr);
}
public static AbstractRutaCondition createConditionIf(BooleanExpression e, RutaBlock parent) {
return new IfCondition(e);
}
public static AbstractRutaCondition createConditionFeature(StringExpression se, Object v,
RutaBlock parent) {
if (v instanceof NumberExpression) {
return new FeatureCondition(se, (NumberExpression) v);
} else if (v instanceof BooleanExpression) {
return new FeatureCondition(se, (BooleanExpression) v);
} else if (v instanceof StringExpression) {
return new FeatureCondition(se, (StringExpression) v);
}
return null;
}
public static AbstractRutaCondition createConditionParse(Token id, RutaBlock env) {
String var = id == null ? "" : id.getText();
return new ParseCondition(var);
}
public static AbstractRutaCondition createConditionVariable(Token id) {
return new VariableCondition(id.getText());
}
public static AbstractRutaCondition createConditionIs(TypeExpression type,
TypeListExpression list, RutaBlock env) {
if (type != null) {
return new IsCondition(type);
} else {
return new IsCondition(list);
}
}
public static AbstractRutaCondition createConditionAfter(TypeExpression type,
TypeListExpression list, RutaBlock env) {
if (type != null) {
return new AfterCondition(type);
} else {
return new AfterCondition(list);
}
}
public static AbstractRutaCondition createConditionBefore(TypeExpression type,
TypeListExpression list, RutaBlock env) {
if (type != null) {
return new BeforeCondition(type);
} else {
return new BeforeCondition(list);
}
}
public static AbstractRutaCondition createConditionEndsWith(TypeExpression type,
TypeListExpression list, RutaBlock env) {
if (type != null) {
return new EndsWithCondition(type);
} else {
return new EndsWithCondition(list);
}
}
public static AbstractRutaCondition createConditionStartsWith(TypeExpression type,
TypeListExpression list, RutaBlock env) {
if (type != null) {
return new StartsWithCondition(type);
} else {
return new StartsWithCondition(list);
}
}
public static AbstractRutaCondition createConditionPartOfNeq(TypeExpression type,
TypeListExpression list, RutaBlock env) {
if (type != null) {
return new PartOfNeqCondition(type);
} else {
return new PartOfNeqCondition(list);
}
}
public static AbstractRutaCondition createConditionSize(ListExpression<?> list,
NumberExpression min, NumberExpression max, Token var, RutaBlock env) {
return new SizeCondition(list, min, max, var == null ? null : var.getText());
}
public static AbstractRutaCondition createConditionInList(StringListExpression list,
NumberExpression dist, BooleanExpression rel, RutaBlock env) {
return new InListCondition(list, dist, rel);
}
public static AbstractRutaCondition createConditionCount(ListExpression<Object> type,
RutaExpression a, NumberExpression min, NumberExpression max, Token var, RutaBlock env) {
return new CountCondition(type, a, min, max, var == null ? null : var.getText());
}
public static AbstractRutaCondition createConditionContains(ListExpression list,
RutaExpression a, NumberExpression min, NumberExpression max, BooleanExpression percent,
RutaBlock env) {
return new ContainsCondition(list, a, min, max, percent);
}
public static AbstractRutaCondition createImplicitCondition(RutaExpression expr) {
return new ImplicitCondition(expr);
}
}