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

io.vertigo.account.authorization.definitions.rulemodel.RuleExpression Maven / Gradle / Ivy

/**
 * vertigo - application development platform
 *
 * Copyright (C) 2013-2021, Vertigo.io, [email protected]
 *
 * Licensed 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 io.vertigo.account.authorization.definitions.rulemodel;

import io.vertigo.core.lang.Assertion;

/**
 * Single Expression Definition.
 * (field)(operator)(value)
 * @author npiedeloup
 */
public final class RuleExpression {
	/**
	 * All authorized operators.
	 * Should be ordered for parsing.
	 */
	public enum ValueOperator implements RuleOperator {
		/** Lesser Than or Equals. */
		LTE("<="),
		/** Greater Than or Equals. */
		GTE(">="),
		/** Not Equals. */
		NEQ("!="),
		/** Equals. */
		EQ("="),
		/** Lesser Than. */
		LT("<"),
		/** Greater Than. */
		GT(">");

		private final String[] asString;

		ValueOperator(final String... asString) {
			this.asString = asString;
		}

		/** {@inheritDoc} */
		@Override
		public String[] authorizedString() {
			return asString;
		}

		/** {@inheritDoc} */
		@Override
		public String toString() {
			return asString[0];
		}

	}

	private final String fieldName;
	private final ValueOperator operator;
	private final RuleValue value;

	/**
	 * @param fieldName FieldName
	 * @param operator OperatorDefinition
	 * @param value QueryDefinition
	 */
	public RuleExpression(final String fieldName, final ValueOperator operator, final RuleValue value) {
		Assertion.check()
				.isNotBlank(fieldName)
				.isNotNull(operator)
				.isNotNull(value);
		//-----
		this.fieldName = fieldName;
		this.operator = operator;
		this.value = value;
	}

	/** {@inheritDoc} */
	@Override
	public String toString() {
		return fieldName + operator + value;
	}

	/**
	 * @return FieldName
	 */
	public String getFieldName() {
		return fieldName;
	}

	/**
	 * @return operator
	 */
	public ValueOperator getOperator() {
		return operator;
	}

	/**
	 * @return value
	 */
	public RuleValue getValue() {
		return value;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy