...
|
...
|
@@ -8,7 +8,13 @@ import java.util.Iterator; |
|
|
|
|
|
import org.apache.commons.collections.Predicate;
|
|
|
import org.apache.commons.collections.functors.AndPredicate;
|
|
|
import org.apache.commons.collections.functors.NotNullPredicate;
|
|
|
import org.apache.commons.collections.functors.NotPredicate;
|
|
|
import org.apache.commons.collections.functors.NullIsExceptionPredicate;
|
|
|
import org.apache.commons.collections.functors.NullIsFalsePredicate;
|
|
|
import org.apache.commons.collections.functors.NullIsTruePredicate;
|
|
|
import org.apache.commons.collections.functors.NullPredicate;
|
|
|
import org.apache.commons.collections.functors.OnePredicate;
|
|
|
import org.apache.commons.collections.functors.OrPredicate;
|
|
|
import org.apache.commons.logging.Log;
|
|
|
import org.apache.commons.logging.LogFactory;
|
...
|
...
|
@@ -35,9 +41,20 @@ import org.springmodules.validation.valang.functions.SubtractFunction; |
|
|
import org.springmodules.validation.valang.functions.TargetBeanFunction;
|
|
|
import org.springmodules.validation.valang.functions.UpperCaseFunction;
|
|
|
import org.springmodules.validation.valang.predicates.BasicValidationRule;
|
|
|
import org.springmodules.validation.valang.predicates.BetweenTestPredicate;
|
|
|
import org.springmodules.validation.valang.predicates.EqualsTestPredicate;
|
|
|
import org.springmodules.validation.valang.predicates.GenericTestPredicate;
|
|
|
import org.springmodules.validation.valang.predicates.GreaterThanOrEqualTestPredicate;
|
|
|
import org.springmodules.validation.valang.predicates.GreaterThanTestPredicate;
|
|
|
import org.springmodules.validation.valang.predicates.InTestPredicate;
|
|
|
import org.springmodules.validation.valang.predicates.LessThanOrEqualTestPredicate;
|
|
|
import org.springmodules.validation.valang.predicates.LessThanTestPredicate;
|
|
|
import org.springmodules.validation.valang.predicates.NotBetweenTestPredicate;
|
|
|
import org.springmodules.validation.valang.predicates.NotEqualsTestPredicate;
|
|
|
import org.springmodules.validation.valang.predicates.NotInTestPredicate;
|
|
|
import org.springmodules.validation.valang.predicates.Operator;
|
|
|
import org.springmodules.validation.valang.predicates.ValidationRule;
|
|
|
/**
|
|
|
import org.springmodules.validation.valang.predicates.Operator.BetweenOperator;
|
|
|
import org.springmodules.validation.valang.predicates.Operator.EqualsOperator;
|
|
|
import org.springmodules.validation.valang.predicates.Operator.HasLengthOperator;
|
...
|
...
|
@@ -61,7 +78,7 @@ import org.springmodules.validation.valang.predicates.Operator.NotBetweenOperato |
|
|
import org.springmodules.validation.valang.predicates.Operator.NotEqualsOperator;
|
|
|
import org.springmodules.validation.valang.predicates.Operator.NotInOperator;
|
|
|
import org.springmodules.validation.valang.predicates.Operator.NotNullOperator;
|
|
|
import org.springmodules.validation.valang.predicates.Operator.NullOperator;
|
|
|
import org.springmodules.validation.valang.predicates.Operator.NullOperator;**/
|
|
|
|
|
|
@SuppressWarnings("rawtypes")
|
|
|
public class ValangJavaScriptTranslator {
|
...
|
...
|
@@ -222,7 +239,41 @@ public class ValangJavaScriptTranslator { |
|
|
visit((AndPredicate) value);
|
|
|
} else if (value instanceof OrPredicate) {
|
|
|
visit((OrPredicate) value);
|
|
|
} else {
|
|
|
} else if (value instanceof BetweenTestPredicate) {
|
|
|
visit((BetweenTestPredicate) value);
|
|
|
} else if (value instanceof LessThanOrEqualTestPredicate) {
|
|
|
visit((LessThanOrEqualTestPredicate) value);
|
|
|
} else if (value instanceof LessThanTestPredicate) {
|
|
|
visit((LessThanTestPredicate) value);
|
|
|
} else if (value instanceof NotBetweenTestPredicate) {
|
|
|
visit((NotBetweenTestPredicate) value);
|
|
|
} else if (value instanceof NotEqualsTestPredicate) {
|
|
|
visit((NotEqualsTestPredicate) value);
|
|
|
} else if (value instanceof NotInTestPredicate) {
|
|
|
visit((NotInTestPredicate) value);
|
|
|
} else if (value instanceof InTestPredicate) {
|
|
|
visit((InTestPredicate) value);
|
|
|
} else if (value instanceof EqualsTestPredicate) {
|
|
|
visit((EqualsTestPredicate) value);
|
|
|
} else if (value instanceof GreaterThanOrEqualTestPredicate) {
|
|
|
visit((GreaterThanOrEqualTestPredicate) value);
|
|
|
} else if (value instanceof GreaterThanTestPredicate) {
|
|
|
visit((GreaterThanTestPredicate) value);
|
|
|
} else if (value instanceof NotNullPredicate) {
|
|
|
visit((NotNullPredicate) value);
|
|
|
} else if (value instanceof NullIsExceptionPredicate) {
|
|
|
visit((NullIsExceptionPredicate) value);
|
|
|
} else if (value instanceof NullIsFalsePredicate) {
|
|
|
visit((NullIsFalsePredicate) value);
|
|
|
} else if (value instanceof NullIsTruePredicate) {
|
|
|
visit((NullIsTruePredicate) value);
|
|
|
} else if (value instanceof NullPredicate) {
|
|
|
visit((NullPredicate) value);
|
|
|
} else if (value instanceof OnePredicate) {
|
|
|
visit((OnePredicate) value);
|
|
|
}
|
|
|
|
|
|
else {
|
|
|
throw new UnsupportedOperationException("Unexpected Predicate type '" + value.getClass() + "'.");
|
|
|
}
|
|
|
|
...
|
...
|
@@ -292,6 +343,65 @@ public class ValangJavaScriptTranslator { |
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
void visit(BetweenTestPredicate p) throws IOException {
|
|
|
|
|
|
}
|
|
|
|
|
|
void visit(LessThanOrEqualTestPredicate p) throws IOException {
|
|
|
|
|
|
}
|
|
|
|
|
|
void visit(LessThanTestPredicate p) throws IOException {
|
|
|
|
|
|
}
|
|
|
|
|
|
void visit(NotBetweenTestPredicate p) throws IOException {
|
|
|
|
|
|
}
|
|
|
|
|
|
void visit(NotEqualsTestPredicate p) throws IOException {
|
|
|
|
|
|
}
|
|
|
|
|
|
void visit(NotInTestPredicate p) throws IOException {
|
|
|
|
|
|
}
|
|
|
|
|
|
void visit(InTestPredicate p) throws IOException {
|
|
|
|
|
|
}
|
|
|
|
|
|
void visit(GreaterThanOrEqualTestPredicate p) throws IOException {
|
|
|
|
|
|
}
|
|
|
|
|
|
void visit(EqualsTestPredicate p) throws IOException {
|
|
|
|
|
|
}
|
|
|
|
|
|
void visit(GreaterThanTestPredicate p) throws IOException {
|
|
|
|
|
|
}
|
|
|
|
|
|
void visit(NotNullPredicate p) throws IOException {
|
|
|
|
|
|
}
|
|
|
void visit(NullIsExceptionPredicate p) throws IOException {
|
|
|
|
|
|
}
|
|
|
void visit(NullIsFalsePredicate p) throws IOException {
|
|
|
|
|
|
}
|
|
|
void visit(NullIsTruePredicate p) throws IOException {
|
|
|
|
|
|
}
|
|
|
void visit(NullPredicate p) throws IOException {
|
|
|
|
|
|
}
|
|
|
void visit(OnePredicate p) throws IOException {
|
|
|
|
|
|
}
|
|
|
|
|
|
void visit(GenericTestPredicate p) throws IOException {
|
|
|
append(operatorToFunctionName(p.getOperator()));
|
...
|
...
|
@@ -303,57 +413,58 @@ public class ValangJavaScriptTranslator { |
|
|
}
|
|
|
|
|
|
protected String operatorToFunctionName(Operator operator) {
|
|
|
if (operator instanceof EqualsOperator) {
|
|
|
return "this.equals";
|
|
|
} else if (operator instanceof NotEqualsOperator) {
|
|
|
return "! this.equals";
|
|
|
} else if (operator instanceof LessThanOperator) {
|
|
|
return "this.lessThan";
|
|
|
} else if (operator instanceof LessThanOrEqualOperator) {
|
|
|
return "this.lessThanOrEquals";
|
|
|
} else if (operator instanceof MoreThanOperator) {
|
|
|
return "this.moreThan";
|
|
|
} else if (operator instanceof MoreThanOrEqualOperator) {
|
|
|
return "this.moreThanOrEquals";
|
|
|
} else if (operator instanceof InOperator) {
|
|
|
return "this.inFunc";
|
|
|
} else if (operator instanceof NotInOperator) {
|
|
|
return "! this.inFunc";
|
|
|
} else if (operator instanceof BetweenOperator) {
|
|
|
return "this.between";
|
|
|
} else if (operator instanceof NotBetweenOperator) {
|
|
|
return "! this.between";
|
|
|
} else if (operator instanceof NullOperator) {
|
|
|
return "this.nullFunc";
|
|
|
} else if (operator instanceof NotNullOperator) {
|
|
|
return "! this.nullFunc";
|
|
|
} else if (operator instanceof HasTextOperator) {
|
|
|
return "this.hasText";
|
|
|
} else if (operator instanceof HasNoTextOperator) {
|
|
|
return "! this.hasText";
|
|
|
} else if (operator instanceof HasLengthOperator) {
|
|
|
return "this.hasLength";
|
|
|
} else if (operator instanceof HasNoLengthOperator) {
|
|
|
return "! this.hasLength";
|
|
|
} else if (operator instanceof IsBlankOperator) {
|
|
|
return "this.isBlank";
|
|
|
} else if (operator instanceof IsNotBlankOperator) {
|
|
|
return "! this.isBlank";
|
|
|
} else if (operator instanceof IsWordOperator) {
|
|
|
return "this.isWord";
|
|
|
} else if (operator instanceof IsNotWordOperator) {
|
|
|
return "! this.isWord";
|
|
|
} else if (operator instanceof IsUpperCaseOperator) {
|
|
|
return "this.isUpper";
|
|
|
} else if (operator instanceof IsNotUpperCaseOperator) {
|
|
|
return "! this.isUpper";
|
|
|
} else if (operator instanceof IsLowerCaseOperator) {
|
|
|
return "this.isLower";
|
|
|
} else if (operator instanceof IsNotLowerCaseOperator) {
|
|
|
return "! this.isLower";
|
|
|
} else {
|
|
|
throw new UnsupportedOperationException("Unexpected operator type '" + operator.getClass().getName() + "'");
|
|
|
switch (operator) {
|
|
|
case EQUAL:
|
|
|
return "this.equals";
|
|
|
case NOT_EQUAL:
|
|
|
return "! this.equals";
|
|
|
case LESS_THAN:
|
|
|
return "this.lessThan";
|
|
|
case LESS_THAN_OR_EQUAL:
|
|
|
return "this.lessThanOrEquals";
|
|
|
case GREATER_THAN:
|
|
|
return "this.moreThan";
|
|
|
case GREATER_THAN_OR_EQUAL:
|
|
|
return "this.moreThanOrEquals";
|
|
|
case IN:
|
|
|
return "this.inFunc";
|
|
|
case NOT_IN:
|
|
|
return "! this.inFunc";
|
|
|
case BETWEEN:
|
|
|
return "this.between";
|
|
|
case NOT_BETWEEN:
|
|
|
return "! this.between";
|
|
|
case NULL:
|
|
|
return "this.nullFunc";
|
|
|
case NOT_NULL:
|
|
|
return "! this.nullFunc";
|
|
|
case HAS_TEXT:
|
|
|
return "this.hasText";
|
|
|
case HAS_NO_TEXT:
|
|
|
return "! this.hasText";
|
|
|
case HAS_LENGTH:
|
|
|
return "this.hasLength";
|
|
|
case HAS_NO_LENGTH:
|
|
|
return "! this.hasLength";
|
|
|
case IS_BLANK:
|
|
|
return "this.isBlank";
|
|
|
case IS_NOT_BLANK:
|
|
|
return "! this.isBlank";
|
|
|
case IS_WORD:
|
|
|
return "this.isWord";
|
|
|
case IS_NOT_WORD:
|
|
|
return "! this.isWord";
|
|
|
case IS_UPPERCASE:
|
|
|
return "this.isUpper";
|
|
|
case IS_NOT_UPPERCASE:
|
|
|
return "! this.isUpper";
|
|
|
case IS_LOWERCASE:
|
|
|
return "this.isLower";
|
|
|
case IS_NOT_LOWERCASE:
|
|
|
return "! this.isLower";
|
|
|
}
|
|
|
|
|
|
throw new UnsupportedOperationException("Unexpected operator type '" + operator.getClass().getName() + "'");
|
|
|
}
|
|
|
|
|
|
void visit(TargetBeanFunction f) throws IOException {
|
...
|
...
|
|