List<AbstractRutaCondition> conditions = c.getConditions();
StringBuilder sb = new StringBuilder();
sb.append(name);
Iterator<AbstractRutaCondition> it = conditions.iterator();
while (it.hasNext()) {
AbstractRutaCondition each = (AbstractRutaCondition) it.next();
sb.append(verbalize(each));
if (it.hasNext()) {
sb.append(", ");
}
}
sb.append(")");
return sb.toString();
} else if (condition instanceof ContainsCondition) {
ContainsCondition c = (ContainsCondition) condition;
NumberExpression minE = c.getMin();
String min = verbalizeMin(minE, 1);
NumberExpression maxE = c.getMax();
String max = verbalizeMax(maxE, Integer.MAX_VALUE);
String percent = verbalizer.verbalize(c.getPercent());
percent = !percent.equals("false") ? ", " + percent : "";
if (c.getType() != null) {
String type = verbalizer.verbalize(c.getType());
return name + type + min + max + percent + ")";
} else {
return name + verbalizer.verbalize(c.getArgList()) + ", "
+ verbalizer.verbalize(c.getArg()) + min + max + percent + ")";
}
} else if (condition instanceof ContextCountCondition) {
ContextCountCondition c = (ContextCountCondition) condition;
String type = verbalizer.verbalize(c.getType());
NumberExpression minE = c.getMin();
String min = verbalizeMin(minE, Integer.MIN_VALUE);
NumberExpression maxE = c.getMax();
String max = verbalizeMax(maxE, Integer.MAX_VALUE);
String var = c.getVar() == null ? "" : ", " + c.getVar();
return name + type + min + max + var + ")";
} else if (condition instanceof CountCondition) {
CountCondition c = (CountCondition) condition;
if (c.getArg() == null) {
String type = verbalizer.verbalize(c.getType());
NumberExpression minE = c.getMin();
String min = verbalizeMin(minE, Integer.MIN_VALUE);
NumberExpression maxE = c.getMax();
String max = verbalizeMax(maxE, Integer.MAX_VALUE);
String var = c.getVar() == null ? "" : ", " + c.getVar();
return name + type + min + max + var + ")";
} else {
String list = verbalizer.verbalize(c.getArgList());
String arg = verbalizer.verbalize(c.getArg());
NumberExpression minE = c.getMin();
String min = verbalizeMin(minE, Integer.MIN_VALUE);
NumberExpression maxE = c.getMax();
String max = verbalizeMax(maxE, Integer.MAX_VALUE);
String var = c.getVar() == null ? "" : ", " + c.getVar();
return name + list + ", " + arg + min + max + var + ")";
}
} else if (condition instanceof CurrentCountCondition) {
CurrentCountCondition c = (CurrentCountCondition) condition;
String type = verbalizer.verbalize(c.getType());
NumberExpression minE = c.getMin();
String min = verbalizeMin(minE, Integer.MIN_VALUE);
NumberExpression maxE = c.getMax();
String max = verbalizeMax(maxE, Integer.MAX_VALUE);
String var = c.getVar() == null ? "" : ", " + c.getVar();
return name + type + min + max + var + ")";
} else if (condition instanceof IfCondition) {
IfCondition c = (IfCondition) condition;
return name + verbalizer.verbalize(c.getExpression()) + ")";
} else if (condition instanceof InListCondition) {
InListCondition c = (InListCondition) condition;
String list = "";
if (c.getListExpression() != null) {
list = verbalizer.verbalize(c.getListExpression());
} else {
list = verbalizer.verbalize(c.getStringList());
}
NumberExpression distE = c.getDistance();
String dist = "";
String rel = "";
if (distE != null) {
dist = ", " + verbalizer.verbalize(distE);
}
if (c.getRelative() != null) {
rel = ", " + verbalizer.verbalize(c.getRelative());
}
return name + list + dist + rel + ")";
} else if (condition instanceof LastCondition) {
LastCondition c = (LastCondition) condition;
return name + verbalizer.verbalize(c.getType()) + ")";
} else if (condition instanceof MOfNCondition) {
MOfNCondition c = (MOfNCondition) condition;
StringBuilder sb = new StringBuilder();
sb.append(name);
NumberExpression minE = c.getMin();
String min = verbalizeMin(minE, Integer.MIN_VALUE);
NumberExpression maxE = c.getMax();
String max = verbalizeMax(maxE, Integer.MAX_VALUE);
sb.append(min.substring(2, min.length()));
sb.append(max);
List<AbstractRutaCondition> conditions = c.getConditions();
if (!conditions.isEmpty()) {
sb.append(", ");
}
Iterator<AbstractRutaCondition> it = conditions.iterator();
while (it.hasNext()) {
AbstractRutaCondition each = (AbstractRutaCondition) it.next();
sb.append(verbalize(each));
if (it.hasNext()) {
sb.append(", ");
}
}
sb.append(")");
return sb.toString();
} else if (condition instanceof NearCondition) {
NearCondition c = (NearCondition) condition;
String type = verbalizer.verbalize(c.getType());
String var = verbalizer.verbalize(c.getForward());
NumberExpression minE = c.getMin();
String min = verbalizeMin(minE, Integer.MIN_VALUE);
NumberExpression maxE = c.getMax();
String max = verbalizeMax(maxE, Integer.MAX_VALUE);
String filtered = verbalizer.verbalize(c.getFiltered());
if (!"".equals(filtered)) {
filtered = ", " + filtered;
}
return name + type + min + max + ", " + var + filtered + ")";
} else if (condition instanceof NotCondition) {
NotCondition c = (NotCondition) condition;
List<AbstractRutaCondition> conditions = c.getConditions();
if (conditions.size() != 1) {
StringBuilder sb = new StringBuilder();
sb.append(name);
Iterator<AbstractRutaCondition> it = conditions.iterator();
while (it.hasNext()) {
AbstractRutaCondition each = (AbstractRutaCondition) it.next();
sb.append(verbalize(each));
if (it.hasNext()) {
sb.append(", ");
}
}
sb.append(")");
return sb.toString();
} else {
return "-" + verbalize(conditions.get(0));
}
} else if (condition instanceof OrCondition) {
OrCondition c = (OrCondition) condition;
List<AbstractRutaCondition> conditions = c.getConditions();
StringBuilder sb = new StringBuilder();
sb.append(name);
Iterator<AbstractRutaCondition> it = conditions.iterator();
while (it.hasNext()) {
AbstractRutaCondition each = (AbstractRutaCondition) it.next();
sb.append(verbalize(each));
if (it.hasNext()) {
sb.append(", ");
}
}