Search in sources :

Example 1 with RegexpExpression

use of org.eclipse.persistence.jpa.jpql.parser.RegexpExpression in project eclipselink by eclipse-ee4j.

the class AbstractEclipseLinkParameterTypeVisitor method visit.

@Override
public void visit(RegexpExpression expression) {
    Expression patternValue = expression.getPatternValue();
    Expression stringExpression = expression.getStringExpression();
    if (patternValue.isAncestor(inputParameter)) {
        this.expression = expression.getStringExpression();
    } else if (stringExpression.isAncestor(inputParameter)) {
        this.expression = expression;
    }
}
Also used : CastExpression(org.eclipse.persistence.jpa.jpql.parser.CastExpression) ExtractExpression(org.eclipse.persistence.jpa.jpql.parser.ExtractExpression) Expression(org.eclipse.persistence.jpa.jpql.parser.Expression) TableExpression(org.eclipse.persistence.jpa.jpql.parser.TableExpression) RegexpExpression(org.eclipse.persistence.jpa.jpql.parser.RegexpExpression)

Example 2 with RegexpExpression

use of org.eclipse.persistence.jpa.jpql.parser.RegexpExpression in project eclipselink by eclipse-ee4j.

the class ExpressionBuilderVisitor method visit.

@Override
public void visit(RegexpExpression expression) {
    // Create the first expression
    expression.getStringExpression().accept(this);
    Expression firstExpression = queryExpression;
    // Create the expression for the pattern value
    expression.getPatternValue().accept(this);
    Expression patternValue = queryExpression;
    // Create the REGEXP expression
    queryExpression = firstExpression.regexp(patternValue);
    // Set the expression type
    type[0] = Boolean.class;
}
Also used : TrimExpression(org.eclipse.persistence.jpa.jpql.parser.TrimExpression) AbsExpression(org.eclipse.persistence.jpa.jpql.parser.AbsExpression) CoalesceExpression(org.eclipse.persistence.jpa.jpql.parser.CoalesceExpression) ConcatExpression(org.eclipse.persistence.jpa.jpql.parser.ConcatExpression) SubstringExpression(org.eclipse.persistence.jpa.jpql.parser.SubstringExpression) SizeExpression(org.eclipse.persistence.jpa.jpql.parser.SizeExpression) CastExpression(org.eclipse.persistence.jpa.jpql.parser.CastExpression) SubExpression(org.eclipse.persistence.jpa.jpql.parser.SubExpression) AndExpression(org.eclipse.persistence.jpa.jpql.parser.AndExpression) JPQLExpression(org.eclipse.persistence.jpa.jpql.parser.JPQLExpression) ExtractExpression(org.eclipse.persistence.jpa.jpql.parser.ExtractExpression) MapEntryExpression(org.eclipse.persistence.internal.expressions.MapEntryExpression) IndexExpression(org.eclipse.persistence.jpa.jpql.parser.IndexExpression) StateFieldPathExpression(org.eclipse.persistence.jpa.jpql.parser.StateFieldPathExpression) UpperExpression(org.eclipse.persistence.jpa.jpql.parser.UpperExpression) ExistsExpression(org.eclipse.persistence.jpa.jpql.parser.ExistsExpression) KeyExpression(org.eclipse.persistence.jpa.jpql.parser.KeyExpression) AllOrAnyExpression(org.eclipse.persistence.jpa.jpql.parser.AllOrAnyExpression) ModExpression(org.eclipse.persistence.jpa.jpql.parser.ModExpression) Expression(org.eclipse.persistence.expressions.Expression) LikeExpression(org.eclipse.persistence.jpa.jpql.parser.LikeExpression) CaseExpression(org.eclipse.persistence.jpa.jpql.parser.CaseExpression) LengthExpression(org.eclipse.persistence.jpa.jpql.parser.LengthExpression) MultiplicationExpression(org.eclipse.persistence.jpa.jpql.parser.MultiplicationExpression) UnknownExpression(org.eclipse.persistence.jpa.jpql.parser.UnknownExpression) NullComparisonExpression(org.eclipse.persistence.jpa.jpql.parser.NullComparisonExpression) ValueExpression(org.eclipse.persistence.jpa.jpql.parser.ValueExpression) ComparisonExpression(org.eclipse.persistence.jpa.jpql.parser.ComparisonExpression) InExpression(org.eclipse.persistence.jpa.jpql.parser.InExpression) NotExpression(org.eclipse.persistence.jpa.jpql.parser.NotExpression) DateConstantExpression(org.eclipse.persistence.internal.expressions.DateConstantExpression) BadExpression(org.eclipse.persistence.jpa.jpql.parser.BadExpression) BetweenExpression(org.eclipse.persistence.jpa.jpql.parser.BetweenExpression) SqrtExpression(org.eclipse.persistence.jpa.jpql.parser.SqrtExpression) FunctionExpression(org.eclipse.persistence.jpa.jpql.parser.FunctionExpression) ConstantExpression(org.eclipse.persistence.internal.expressions.ConstantExpression) TableExpression(org.eclipse.persistence.jpa.jpql.parser.TableExpression) CollectionMemberExpression(org.eclipse.persistence.jpa.jpql.parser.CollectionMemberExpression) AbstractPathExpression(org.eclipse.persistence.jpa.jpql.parser.AbstractPathExpression) NullExpression(org.eclipse.persistence.jpa.jpql.parser.NullExpression) ConstructorExpression(org.eclipse.persistence.jpa.jpql.parser.ConstructorExpression) NullIfExpression(org.eclipse.persistence.jpa.jpql.parser.NullIfExpression) CollectionValuedPathExpression(org.eclipse.persistence.jpa.jpql.parser.CollectionValuedPathExpression) LocateExpression(org.eclipse.persistence.jpa.jpql.parser.LocateExpression) AdditionExpression(org.eclipse.persistence.jpa.jpql.parser.AdditionExpression) ObjectExpression(org.eclipse.persistence.jpa.jpql.parser.ObjectExpression) CollectionExpression(org.eclipse.persistence.jpa.jpql.parser.CollectionExpression) RegexpExpression(org.eclipse.persistence.jpa.jpql.parser.RegexpExpression) ParameterExpression(org.eclipse.persistence.internal.expressions.ParameterExpression) LowerExpression(org.eclipse.persistence.jpa.jpql.parser.LowerExpression) OrExpression(org.eclipse.persistence.jpa.jpql.parser.OrExpression) TreatExpression(org.eclipse.persistence.jpa.jpql.parser.TreatExpression) TypeExpression(org.eclipse.persistence.jpa.jpql.parser.TypeExpression) EmptyCollectionComparisonExpression(org.eclipse.persistence.jpa.jpql.parser.EmptyCollectionComparisonExpression) SubtractionExpression(org.eclipse.persistence.jpa.jpql.parser.SubtractionExpression) EntryExpression(org.eclipse.persistence.jpa.jpql.parser.EntryExpression) DivisionExpression(org.eclipse.persistence.jpa.jpql.parser.DivisionExpression) KeywordExpression(org.eclipse.persistence.jpa.jpql.parser.KeywordExpression)

Example 3 with RegexpExpression

use of org.eclipse.persistence.jpa.jpql.parser.RegexpExpression in project eclipselink by eclipse-ee4j.

the class EclipseLinkGrammarValidator method visit.

@Override
public void visit(RegexpExpression expression) {
    // Wrong JPA version
    if (!isEclipseLink()) {
        addProblem(expression, RegexpExpression_InvalidJPAVersion);
    } else {
        // Missing string expression
        if (!expression.hasStringExpression()) {
            int startPosition = position(expression);
            int endPosition = startPosition;
            addProblem(expression, startPosition, endPosition, RegexpExpression_MissingStringExpression);
        } else {
            Expression stringExpression = expression.getStringExpression();
            // Invalid string expression
            if (!isValid(stringExpression, StringExpressionBNF.ID)) {
                int startPosition = position(stringExpression);
                int endPosition = startPosition + length(stringExpression);
                addProblem(expression, startPosition, endPosition, RegexpExpression_InvalidStringExpression);
            } else // Validate string expression
            {
                stringExpression.accept(this);
            }
        }
        // Missing pattern value
        if (!expression.hasPatternValue()) {
            int startPosition = position(expression) + length(expression.getStringExpression()) + (expression.hasSpaceAfterStringExpression() ? 1 : 0) + 6 + /* REGEXP */
            (expression.hasSpaceAfterIdentifier() ? 1 : 0);
            int endPosition = startPosition;
            addProblem(expression, startPosition, endPosition, RegexpExpression_MissingPatternValue);
        } else {
            Expression patternValue = expression.getStringExpression();
            // Invalid string expression
            if (!isValid(patternValue, PatternValueBNF.ID)) {
                int startPosition = position(expression) + length(expression.getStringExpression()) + (expression.hasSpaceAfterStringExpression() ? 1 : 0) + 6 + /* REGEXP */
                (expression.hasSpaceAfterIdentifier() ? 1 : 0);
                int endPosition = startPosition + length(patternValue);
                addProblem(expression, startPosition, endPosition, RegexpExpression_InvalidPatternValue);
            } else // Validate pattern value
            {
                patternValue.accept(this);
            }
        }
    }
}
Also used : ExtractExpression(org.eclipse.persistence.jpa.jpql.parser.ExtractExpression) InExpression(org.eclipse.persistence.jpa.jpql.parser.InExpression) RegexpExpression(org.eclipse.persistence.jpa.jpql.parser.RegexpExpression) CastExpression(org.eclipse.persistence.jpa.jpql.parser.CastExpression) Expression(org.eclipse.persistence.jpa.jpql.parser.Expression) TableExpression(org.eclipse.persistence.jpa.jpql.parser.TableExpression)

Aggregations

CastExpression (org.eclipse.persistence.jpa.jpql.parser.CastExpression)3 ExtractExpression (org.eclipse.persistence.jpa.jpql.parser.ExtractExpression)3 RegexpExpression (org.eclipse.persistence.jpa.jpql.parser.RegexpExpression)3 TableExpression (org.eclipse.persistence.jpa.jpql.parser.TableExpression)3 Expression (org.eclipse.persistence.jpa.jpql.parser.Expression)2 InExpression (org.eclipse.persistence.jpa.jpql.parser.InExpression)2 Expression (org.eclipse.persistence.expressions.Expression)1 ConstantExpression (org.eclipse.persistence.internal.expressions.ConstantExpression)1 DateConstantExpression (org.eclipse.persistence.internal.expressions.DateConstantExpression)1 MapEntryExpression (org.eclipse.persistence.internal.expressions.MapEntryExpression)1 ParameterExpression (org.eclipse.persistence.internal.expressions.ParameterExpression)1 AbsExpression (org.eclipse.persistence.jpa.jpql.parser.AbsExpression)1 AbstractPathExpression (org.eclipse.persistence.jpa.jpql.parser.AbstractPathExpression)1 AdditionExpression (org.eclipse.persistence.jpa.jpql.parser.AdditionExpression)1 AllOrAnyExpression (org.eclipse.persistence.jpa.jpql.parser.AllOrAnyExpression)1 AndExpression (org.eclipse.persistence.jpa.jpql.parser.AndExpression)1 BadExpression (org.eclipse.persistence.jpa.jpql.parser.BadExpression)1 BetweenExpression (org.eclipse.persistence.jpa.jpql.parser.BetweenExpression)1 CaseExpression (org.eclipse.persistence.jpa.jpql.parser.CaseExpression)1 CoalesceExpression (org.eclipse.persistence.jpa.jpql.parser.CoalesceExpression)1