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

org.unlaxer.tinyexpression.CalculationContext Maven / Gradle / Ivy

package org.unlaxer.tinyexpression;

import java.math.RoundingMode;
import java.util.Optional;

public interface CalculationContext {
	
	public enum Angle{
		RADIAN,DEGREE
	}

  default void set(Enum name, String value) {
    set(name.name(),value);
  }

	void set(String name, String value);


	default Optional getString(Enumname){
	  return getString(name.name());
	}

	Optional getString(String name);
	
	default void set(Enum name, float value) {
	  set(name.name(),value);
	}

	void set(String name, float value);
	

  default Optional getValue(Enum name){
    return getValue(name.name());
  }

	Optional getValue(String name);
	
	default void set(Enum name, boolean value) {
	  set(name.name(),value);
	}

	void set(String name, boolean value);
	
	default Optional getBoolean(Enum name){
	  return getBoolean(name.name());
	}

	Optional getBoolean(String name);
	
	default  Optional getObject(Enum name , Class clazz){
	  return getObject(name.name(),clazz);
	}

	 Optional getObject(String name , Class clazz);

	default void setObject(Enum name , Object object) {
	  setObject(name.name() ,object);
	}

	void setObject(String name , Object object);

	default  Optional getObject(Class clazz){
		return getObject(clazz.getName() ,clazz);
	}
	
	default void set(Object object) {
		setObject(object.getClass().getName(), object);
	}
	
  default boolean isExists(Enum name) {
    return isExists(name.name());
  }
	
	boolean isExists(String name);

	double radianAngle(double angleValue);

	float nextRandom();
	
	public static CalculationContext newContext(int scale, RoundingMode roundingMode , Angle angle) {
		return new NormalCalculationContext(scale , roundingMode , angle);
	}
	
	public static CalculationContext newContext() {
		return new NormalCalculationContext();
	}
	
	public static CalculationContext newConcurrentContext(int scale, RoundingMode roundingMode , Angle angle) {
		return new ConcurrentCalculationContext(scale , roundingMode , angle);
	}
	
	public static CalculationContext newConcurrentContext() {
		return new ConcurrentCalculationContext();
	}
	
	public Angle angle();
	
	public int scale();
	
	public RoundingMode roundingMode();
	
	public default Object getFromNumberOrStringOrBoolean(String name) {
    Optional value = getValue(name);
    if(value.isPresent()){
      return value.get();
    }
    Optional string = getString(name);
    if(string.isPresent()) {
      return string.get();
    }
    Optional boolean1 = getBoolean(name);
    if(boolean1.isPresent()) {
      return boolean1.get();
    }
    return null;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy