private State handleCharacter()

in core/src/main/java/org/hibernate/ogm/util/parser/impl/LikeExpressionToRegExpConverter.java [80:140]


		private State handleCharacter(Character character, Character escapeCharacter, StringBuilder result) {
			switch ( this ) {
				case INITIAL:
					if ( Character.valueOf( character ).equals( escapeCharacter ) ) {
						return State.ESCAPE;
					}
					else if ( character == '%' ) {
						result.append( ".*" );
						return State.WILDCARD_CHARACTER;
					}
					else if ( character == '_' ) {
						result.append( "." );
						return State.WILDCARD_CHARACTER;
					}
					else {
						result.append( "\\Q" );
						result.append( character );
						return State.PATTERN;
					}
				case PATTERN:
					if ( Character.valueOf( character ).equals( escapeCharacter ) ) {
						return State.ESCAPE;
					}
					else if ( character == '%' ) {
						result.append( "\\E" );
						result.append( ".*" );
						return State.WILDCARD_CHARACTER;
					}
					else if ( character == '_' ) {
						result.append( "\\E" );
						result.append( "." );
						return State.WILDCARD_CHARACTER;
					}
					else {
						result.append( character );
						return State.PATTERN;
					}
				case ESCAPE:
					result.append( character );
					return State.PATTERN;
				case WILDCARD_CHARACTER:
					if ( Character.valueOf( character ).equals( escapeCharacter ) ) {
						return State.ESCAPE;
					}
					else if ( character == '%' ) {
						result.append( ".*" );
						return State.WILDCARD_CHARACTER;
					}
					else if ( character == '_' ) {
						result.append( "." );
						return State.WILDCARD_CHARACTER;
					}
					else {
						result.append( "\\Q" );
						result.append( character );
						return State.PATTERN;
					}
				default:
					throw new IllegalStateException( "Unsupported parsing state" );
			}
		}