private SQLOperation getOperationFromBuilder( PropertyIsLike op, SQLExpression propName, String sqlEncoded ) { SQLOperationBuilder builder = new SQLOperationBuilder(); if ( !op.isMatchCase() ) { builder.add( "LOWER(" ); } builder.add( propName ); if ( op.isMatchCase() ) { builder.add( "::TEXT LIKE '" ); } else { builder.add( "::TEXT) LIKE '" ); } builder.add( sqlEncoded ); builder.add( "'" ); return builder.toOperation(); }
private SQLOperation toProtoSql( PropertyIsLike op, String literal ) throws UnmappableException, FilterEvaluationException { String escape = "" + op.getEscapeChar(); String wildCard = "" + op.getWildCard(); String singleChar = "" + op.getSingleChar(); SQLExpression propName = toProtoSQL( op.getExpression() ); IsLikeString specialString = new IsLikeString( literal, wildCard, singleChar, escape ); String sqlEncoded = specialString.toSQL( !op.isMatchCase() ); if ( propName.isMultiValued() ) { // TODO escaping of pipe symbols sqlEncoded = "%|" + sqlEncoded + "|%"; } return getOperationFromBuilder( op, propName, sqlEncoded ); }
writer.writeAttribute( "singleChar", isLikeOperator.getSingleChar() ); writer.writeAttribute( "escapeChar", isLikeOperator.getEscapeChar() ); if ( isLikeOperator.isMatchCase() != null ) { writer.writeAttribute( "matchCase", "" + isLikeOperator.isMatchCase() );
String sqlEncoded = specialString.toSQL( !op.isMatchCase() ); if ( !op.isMatchCase() ) { builder.add( "LOWER (" + propName + ")" ); } else {
String sqlEncoded = specialString.toSQL( !op.isMatchCase() ); if ( !op.isMatchCase() ) { builder.add( "LOWER (" + propName + ")" ); } else {
return new PropertyIsLike( copy( pil.getExpression() ), copyExpression( pil.getPattern(), values ), pil.getWildCard(), pil.getSingleChar(), pil.getEscapeChar(), pil.isMatchCase(), pil.getMatchAction() ); case PROPERTY_IS_NOT_EQUAL_TO: PropertyIsNotEqualTo pine = (PropertyIsNotEqualTo) op;