Class SqlProcessContext

java.lang.Object
org.sqlproc.engine.impl.SqlProcessContext
All Implemented Interfaces:
SqlRuntimeContext

public class SqlProcessContext extends Object implements SqlRuntimeContext
The crate (design pattern) for all input parameters for the SqlMetaStatement.process(org.sqlproc.engine.impl.SqlMetaStatement.Type, Object, SqlControl, SqlEngine) Also can work as a context for a dynamic ANSI SQL query generation. This processing is based on the contract SqlMetaElement.process(SqlProcessContext).
Author:
Vladimir Hudec
  • Field Details

    • sqlStatementType

      private SqlMetaStatement.Type sqlStatementType
      The SQL command type.
    • dynamicInputValues

      private Object dynamicInputValues
      The SQL statement dynamic parameters.
    • sqlControl

      private SqlControl sqlControl
      The compound parameters controlling the META SQL execution.
    • sqlEngine

      private SqlEngine sqlEngine
      The primary SQL Processor class for the META SQL execution.
    • sqlFragmentType

      private SqlMetaSqlFragment.Type sqlFragmentType
      The type of the META SQL fragment.
    • oppositeNames

      private Set<String> oppositeNames
      Unset features in the runtime.
  • Constructor Details

    • SqlProcessContext

      SqlProcessContext(SqlMetaStatement.Type sqlStatementType, Object dynamicInputValues, SqlControl sqlControl, SqlEngine sqlEngine)
      Creates a new instance.
      Parameters:
      sqlStatementType - the type of the SQL command
      dynamicInputValues - the dynamic input parameters
      sqlControl - the compound parameters controlling the META SQL execution
      sqlEngine - the primary SQL Processor class for the META SQL execution
    • SqlProcessContext

      SqlProcessContext(SqlProcessContext ctx, Object dynamicInputValues, SqlControl sqlControl)
      Creates a new instance.
      Parameters:
      ctx - the crate for all input parameters and the context of processing
      dynamicInputValues - the dynamic input parameters
      sqlControl - the compound parameters controlling the META SQL execution
  • Method Details

    • initFeatures

      private void initFeatures()
      Initialize the optional features.
    • getSqlStatementType

      SqlMetaStatement.Type getSqlStatementType()
      Returns the SQL command type.
      Returns:
      the SQL command type
    • getDynamicInputValues

      public Object getDynamicInputValues()
      Returns the SQL statement dynamic parameters.
      Returns:
      the SQL statement dynamic parameters
    • getStaticInputValues

      public Object getStaticInputValues()
      Returns the SQL statement static parameters.
      Returns:
      the SQL statement static parameters
    • getMoreResultClasses

      public Map<String,Class<?>> getMoreResultClasses()
      Returns the compound parameters controlling the META SQL execution.
      Returns:
      the compound parameters controlling the META SQL execution
    • setSqlFragmentType

      public void setSqlFragmentType(SqlMetaSqlFragment.Type sqlFragmentType)
      Sets the type of the META SQL fragment.
      Parameters:
      sqlFragmentType - the type of the META SQL fragment
    • isInSetOrInsert

      public boolean isInSetOrInsert()
      Returns the indicator the SET or VALUES fragment of META SQL is in process
      Returns:
      the indicator the SET or VALUES fragment of META SQL is in process
    • getFeature

      public String getFeature(String name)
      Convenient method to obtain a String feature based on the name.
      Specified by:
      getFeature in interface SqlRuntimeContext
      Parameters:
      name - name of the feature
      Returns:
      value of the feature
    • getFeature

      public String getFeature(SqlFeature feature)
      Convenient method to obtain a String feature based on the name.
      Specified by:
      getFeature in interface SqlRuntimeContext
      Parameters:
      feature - the feature
      Returns:
      value of the feature
    • getFeature

      public String getFeature(SqlFeature feature, String specName)
      Convenient method to obtain a String feature based on the name.
      Specified by:
      getFeature in interface SqlRuntimeContext
      Parameters:
      feature - the feature
      specName - the specific name
      Returns:
      value of the feature
    • getFeatures

      public String[] getFeatures(String name)
      Convenient method to obtain a String array features based on the name.
      Specified by:
      getFeatures in interface SqlRuntimeContext
      Parameters:
      name - the feature
      Returns:
      the array of the feature values
    • isFeature

      public boolean isFeature(SqlFeature feature)
      Convenient method to obtain a boolean feature based on the name.
      Specified by:
      isFeature in interface SqlRuntimeContext
      Parameters:
      feature - the feature
      Returns:
      value of the feature
    • getFeatureAsInt

      public Integer getFeatureAsInt(SqlFeature feature)
      Convenient method to obtain an Integer feature based on the name.
      Specified by:
      getFeatureAsInt in interface SqlRuntimeContext
      Parameters:
      feature - the feature
      Returns:
      value of the feature
    • getFeatureAsObject

      public Object getFeatureAsObject(SqlFeature feature)
      Convenient method to obtain an Object feature based on the name.
      Specified by:
      getFeatureAsObject in interface SqlRuntimeContext
      Parameters:
      feature - the feature
      Returns:
      value of the feature
    • getRawFeature

      protected Object getRawFeature(SqlFeature feature)
      Convenient method to obtain a feature based on the name.
      Parameters:
      feature - the feature
      Returns:
      value of the feature
    • getRawFeature

      protected Object getRawFeature(String name)
      Convenient method to obtain a feature based on the name.
      Parameters:
      name - name of the feature
      Returns:
      value of the feature
    • getOrder

      List<SqlOrder> getOrder()
      Returns the list of ordering directives.
      Returns:
      the list of ordering directives
    • getOrderIndex

      int getOrderIndex(String orderId)
      Convenient method to obtain the index of the ordering directive.
      Parameters:
      orderId - the order number
      Returns:
      the index of the ordering directive
    • getOrder

      SqlOrder.Order getOrder(int orderIndex)
      Convenient method to obtain the ordering directive based on the index.
      Parameters:
      orderIndex - the index of the ordering rule
      Returns:
      the ordering directive
    • getTypeFactory

      public SqlTypeFactory getTypeFactory()
      Returns the factory responsible for the META types construction.
      Specified by:
      getTypeFactory in interface SqlRuntimeContext
      Returns:
      the factory for the META types construction
    • getPluginFactory

      public SqlPluginFactory getPluginFactory()
      Returns the factory responsible for the SQL Processor plugins.
      Specified by:
      getPluginFactory in interface SqlRuntimeContext
      Returns:
      the factory for the SQL Processor plugins
    • getInstance

      public Object getInstance(Class<?> clazz)
      Returns the new class instance
      Specified by:
      getInstance in interface SqlRuntimeContext
      Parameters:
      clazz - the class to be constructed
      Returns:
      the new class instance. Null in the case of any error.
    • getAttributeType

      public Class<?> getAttributeType(Class<?> clazz, String attrName)
      Returns the Java type info for the attribute, if there is one.
      Specified by:
      getAttributeType in interface SqlRuntimeContext
      Parameters:
      clazz - the class for which the attribute type is requested
      attrName - the name of the attribute which type is requested
      Returns:
      the object that represents the Java type info. Null in the case there's no such attribute.
    • getAttributeParameterizedTypes

      public Class<?>[] getAttributeParameterizedTypes(Class<?> clazz, String attrName)
      Returns the Java parameterized type info for the attribute, if there is one.
      Specified by:
      getAttributeParameterizedTypes in interface SqlRuntimeContext
      Parameters:
      clazz - the class for which the attribute type is requested
      attrName - the name of the attribute which type is requested
      Returns:
      the object that represents the Java parameterized type info. Null in the case there's no such attribute.
    • getGetterType

      public BeanUtilsPlugin.GetterType getGetterType(Class<?> clazz, String attrName)
      Returns the attribute getter method types, if there is one.
      Specified by:
      getGetterType in interface SqlRuntimeContext
      Parameters:
      clazz - the class for which the getter is requested
      attrName - the name of the attribute which getter is requested
      Returns:
      The method that should be used to read the property value. Null in the case there's no such attribute's getter.
    • getGetterType

      public BeanUtilsPlugin.GetterType getGetterType(Object bean, String attrName)
      Returns the attribute getter method types, if there is one.
      Specified by:
      getGetterType in interface SqlRuntimeContext
      Parameters:
      bean - the bean for which the getter is requested
      attrName - the name of the attribute which getter is requested
      Returns:
      The getter method types that should be used to read the property value. Null in the case there's no such attribute's getter.
    • checkAttribute

      public boolean checkAttribute(Object bean, String attrName)
      Checks the attribute getter method existence.
      Specified by:
      checkAttribute in interface SqlRuntimeContext
      Parameters:
      bean - the bean for which the getter is checked
      attrName - the name of the attribute which getter is checked
      Returns:
      True if there's the attribute getter method
    • getAttribute

      public Object getAttribute(Object bean, String attrName)
      Returns the value of the specified simple attribute of the specified bean.
      Specified by:
      getAttribute in interface SqlRuntimeContext
      Parameters:
      bean - the bean for which the attribute value is requested
      attrName - the name of the attribute which value is requested
      Returns:
      the attribute value
    • simpleSetAttribute

      public boolean simpleSetAttribute(Object bean, String attrName, Object attrValue, Class<?>... attrTypes)
      Sets the value of the specified simple attribute of the specified bean, if there is one.
      Specified by:
      simpleSetAttribute in interface SqlRuntimeContext
      Parameters:
      bean - the bean for which the attribute value is to be modified
      attrName - the name of the attribute to be modified
      attrValue - the value to which the attribute should be set
      attrTypes - the possible attribute types
      Returns:
      True if the attribute was successfully modified
    • setAttribute

      public void setAttribute(Object bean, String attrName, Object attrValue)
      Sets the value of the specified simple attribute of the specified bean.
      Specified by:
      setAttribute in interface SqlRuntimeContext
      Parameters:
      bean - the bean for which the attribute value is to be modified
      attrName - the name of the attribute to be modified
      attrValue - the value to which the attribute should be set
    • checkMethod

      public boolean checkMethod(Class<?> clazz, String methodName, Class<?>... args)
      Checks the class method existence.
      Specified by:
      checkMethod in interface SqlRuntimeContext
      Parameters:
      clazz - the class for which the method existence is checked
      methodName - the name of the method to be checked
      args - the method parameters types
      Returns:
      True if there's such a method
    • checkMethod

      public boolean checkMethod(Object bean, String methodName, Object... args)
      Checks the bean method existence.
      Specified by:
      checkMethod in interface SqlRuntimeContext
      Parameters:
      bean - the bean for which the method existence is checked
      methodName - the name of the method to be checked
      args - the method parameters
      Returns:
      True if there's such a method
    • invokeMethod

      public Object invokeMethod(Class<?> clazz, String methodName, Object... args)
      Invokes the class method with the specified name and parameters. The method can be a static one.
      Specified by:
      invokeMethod in interface SqlRuntimeContext
      Parameters:
      clazz - the class which method is going to be invoked
      methodName - the requested method name
      args - the method parameters
      Returns:
      the result of the method invocation
    • invokeMethod

      public Object invokeMethod(Object bean, String methodName, Object... args)
      Invokes the bean method with the specified name and parameters.
      Specified by:
      invokeMethod in interface SqlRuntimeContext
      Parameters:
      bean - the bean which method is going to be invoked
      methodName - the requested method name
      args - the method parameters
      Returns:
      the result of the method invocation
    • getEnumToValue

      public Object getEnumToValue(Object bean)
      Returns the bean enumeration value.
      Specified by:
      getEnumToValue in interface SqlRuntimeContext
      Parameters:
      bean - the bean of the enumeration type
      Returns:
      the enumeration value. Null in the case of any error.
    • getEnumToClass

      public Class<?> getEnumToClass(Class<?> clazz)
      Returns the bean enumeration type.
      Specified by:
      getEnumToClass in interface SqlRuntimeContext
      Parameters:
      clazz - the class of the enumeration type
      Returns:
      the enumeration type. Null in the case of any error.
    • getValueToEnum

      public Object getValueToEnum(Class<?> objClass, Object val)
      Returns the enumeration instance for the enumeration value
      Specified by:
      getValueToEnum in interface SqlRuntimeContext
      Parameters:
      objClass - the class of the enumeration type
      val - the enumeration value
      Returns:
      the enumeration instance. Null in the case of any error.
    • toString

      public String toString()
      For debug purposes.
      Overrides:
      toString in class Object
      Returns:
      a String representation for a debug output