All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.codelibs.elasticsearch.index.query.RegexpFlag Maven / Gradle / Ivy

/*
 * Licensed to Elasticsearch under one or more contributor
 * license agreements. See the NOTICE file distributed with
 * this work for additional information regarding copyright
 * ownership. Elasticsearch licenses this file to you under
 * the Apache License, Version 2.0 (the "License"); you may
 * not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
package org.codelibs.elasticsearch.index.query;

import org.apache.lucene.util.automaton.RegExp;
import org.codelibs.elasticsearch.common.Strings;

import java.util.Locale;

/**
 * Regular expression syntax flags. Each flag represents optional syntax support in the regular expression:
 * 
    *
  • INTERSECTION - Support for intersection notation: <expression> & <expression>
  • *
  • COMPLEMENT - Support for complement notation: <expression> & <expression>
  • *
  • EMPTY - Support for the empty language symbol: #
  • *
  • ANYSTRING - Support for the any string symbol: @
  • *
  • INTERVAL - Support for numerical interval notation: <n-m>
  • *
  • NONE - Disable support for all syntax options
  • *
  • ALL - Enables support for all syntax options
  • *
* * @see RegexpQueryBuilder#flags(RegexpFlag...) * @see RegexpQueryBuilder#flags(RegexpFlag...) */ public enum RegexpFlag { /** * Enables intersection of the form: <expression> & <expression> */ INTERSECTION(RegExp.INTERSECTION), /** * Enables complement expression of the form: ~<expression> */ COMPLEMENT(RegExp.COMPLEMENT), /** * Enables empty language expression: # */ EMPTY(RegExp.EMPTY), /** * Enables any string expression: @ */ ANYSTRING(RegExp.ANYSTRING), /** * Enables numerical interval expression: <n-m> */ INTERVAL(RegExp.INTERVAL), /** * Disables all available option flags */ NONE(RegExp.NONE), /** * Enables all available option flags */ ALL(RegExp.ALL); final int value; private RegexpFlag(int value) { this.value = value; } public int value() { return value; } /** * Resolves the combined OR'ed value for the given list of regular expression flags. The given flags must follow the * following syntax: *

* flag_name(|flag_name)* *

* Where flag_name is one of the following: *

    *
  • INTERSECTION
  • *
  • COMPLEMENT
  • *
  • EMPTY
  • *
  • ANYSTRING
  • *
  • INTERVAL
  • *
  • NONE
  • *
  • ALL
  • *
*

* Example: INTERSECTION|COMPLEMENT|EMPTY * * @param flags A string representing a list of regular expression flags * @return The combined OR'ed value for all the flags */ public static int resolveValue(String flags) { if (flags == null || flags.isEmpty()) { return RegExp.ALL; } int magic = RegExp.NONE; for (String s : Strings.delimitedListToStringArray(flags, "|")) { if (s.isEmpty()) { continue; } try { RegexpFlag flag = RegexpFlag.valueOf(s.toUpperCase(Locale.ROOT)); if (flag == RegexpFlag.NONE) { continue; } if (flag == RegexpFlag.ALL) { return flag.value(); } magic |= flag.value(); } catch (IllegalArgumentException iae) { throw new IllegalArgumentException("Unknown regexp flag [" + s + "]"); } } return magic; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy