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

de.invation.code.toval.constraint.StringOperator Maven / Gradle / Ivy

package de.invation.code.toval.constraint;

import de.invation.code.toval.validate.ParameterException;
import de.invation.code.toval.validate.Validate;
import de.invation.code.toval.validate.ParameterException.ErrorCode;

public enum StringOperator implements Operator {
	
	EQUAL(OperatorFormats.EQUAL, String.format(OperatorFormats.COMPARISON_FORMAT, OperatorFormats.EQUAL)), 
	NOT_EQUAL(OperatorFormats.NOT_EQUAL, String.format(OperatorFormats.COMPARISON_FORMAT, OperatorFormats.NOT_EQUAL));
	
	private String[] argumentNames = new String[] {"Attribute", "Comparator"};
	private String sign = null;
	private String toStringFormat = null;
	
	private StringOperator(String sign, String toStringFormat){
		this.sign = sign;
		this.toStringFormat = toStringFormat;
	}
	
	private StringOperator(String[] arguments, String sign, String toStringFormat){
		this(sign, toStringFormat);
		this.argumentNames = arguments;
	}

	@Override
	public int getRequiredArguments(){
		return argumentNames.length;
	}
	
	@Override
	public String[] getArgumentNames(){
		return argumentNames;
	}
	
	protected void validateValueType(Object value) throws ParameterException{
		if(!String.class.isAssignableFrom(value.getClass()))
			throw new ParameterException(ErrorCode.TYPE, "Wrong type of validation value, expected type: " + String.class);
	}
	
	@Override
	public boolean validate(Object value, String... parameters) throws ParameterException {
		Validate.notNull(value);
		validateValueType(value);
		Validate.notNull(parameters);
		Validate.noNullElements(parameters);
		Validate.isFalse(parameters.length + 1 != getRequiredArguments());
		
		switch(this){
		case EQUAL:			return value.equals(parameters[0]);
		case NOT_EQUAL:		return !value.equals(parameters[0]);
		default: return false;
		}
	}
	
	@Override
	public String getStringFormat(){
		return toStringFormat;
	}
	
	@Override
	public String toString(){
		return sign;
	}
	
	public static StringOperator parse(String operatorString){
		if(operatorString.equals("=="))
			return StringOperator.EQUAL;
		if(operatorString.equals("!="))
			return StringOperator.NOT_EQUAL;
		return null;
	}
	
	
	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy