ResultMapping.java

/*
 * Copyright 2004-2022 the original author or authors.
 *
 * 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
 *
 *    https://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 com.ibatis.sqlmap.engine.mapping.result;

import com.ibatis.sqlmap.engine.type.JdbcTypeRegistry;
import com.ibatis.sqlmap.engine.type.TypeHandler;

/**
 * Basic implementation of ResultMapping.
 */
public class ResultMapping {

  /** The property name. */
  private String propertyName;

  /** The column name. */
  private String columnName;

  /** The column index. */
  private int columnIndex;

  /** The type handler. */
  private TypeHandler typeHandler;

  /** The jdbc type. */
  private int jdbcType;

  /** The jdbc type name. */
  private String jdbcTypeName;

  /** The null value. */
  private String nullValue;

  /** The not null column. */
  private String notNullColumn;

  /** The statement name. */
  private String statementName;

  /** The java type. */
  private Class javaType;

  /** The nested result map name. */
  private String nestedResultMapName;

  /** The error string. */
  private String errorString;

  /**
   * Gets the property name.
   *
   * @return the property name
   */
  public String getPropertyName() {
    return propertyName;
  }

  /**
   * Setter for the object property name (used by the automap, and the builder).
   *
   * @param propertyName
   *          - the property name
   */
  public void setPropertyName(String propertyName) {
    this.errorString = "Check the result mapping for the '" + propertyName + "' property.";
    this.propertyName = propertyName;
  }

  /**
   * Getter for the error message when something goes wrong mapping this property.
   *
   * @return - the error message
   */
  public String getErrorString() {
    return errorString;
  }

  /**
   * Getter for the column name that we are mapping.
   *
   * @return - the column name
   */
  public String getColumnName() {
    return columnName;
  }

  /**
   * Setter for the column name we are mapping (used by the automap or builder).
   *
   * @param columnName
   *          - the column name
   */
  public void setColumnName(String columnName) {
    this.columnName = columnName;
  }

  /**
   * Getter for the column index that we are mapping.
   *
   * @return - the column index
   */
  public int getColumnIndex() {
    return columnIndex;
  }

  /**
   * Setter for the column index we are mapping (used by the automap or builder).
   *
   * @param columnIndex
   *          - the column index
   */
  public void setColumnIndex(int columnIndex) {
    this.columnIndex = columnIndex;
  }

  /**
   * Getter for the type handler for the column.
   *
   * @return - the type handler
   */
  public TypeHandler getTypeHandler() {
    return typeHandler;
  }

  /**
   * Setter for the type handler for the column.
   *
   * @param typeHandler
   *          - the type handler
   */
  public void setTypeHandler(TypeHandler typeHandler) {
    this.typeHandler = typeHandler;
  }

  /**
   * Setter for the Java type of the column.
   *
   * @return - the Java type
   */
  public Class getJavaType() {
    return javaType;
  }

  /**
   * Setter for the Java type of the column.
   *
   * @param javaType
   *          - the Java type
   */
  public void setJavaType(Class javaType) {
    this.javaType = javaType;
  }

  /**
   * Getter for the JDBC type of the column.
   *
   * @return - the JDBC type
   */
  public int getJdbcType() {
    return jdbcType;
  }

  /**
   * Getter for the JDBC type name of the column.
   *
   * @return - the JDBC type name
   */
  public String getJdbcTypeName() {
    return jdbcTypeName;
  }

  /**
   * Setter for the JDBC type name of the column.
   *
   * @param jdbcTypeName
   *          - the JDBC type name
   */
  public void setJdbcTypeName(String jdbcTypeName) {
    this.jdbcTypeName = jdbcTypeName;
    this.jdbcType = JdbcTypeRegistry.getType(jdbcTypeName);
  }

  /**
   * Getter for what to return if the column is null.
   *
   * @return - the null substitution
   */
  public String getNullValue() {
    return nullValue;
  }

  /**
   * Setter for what to return if the column is null.
   *
   * @param nullValue
   *          - the null substitution
   */
  public void setNullValue(String nullValue) {
    this.nullValue = nullValue;
  }

  /**
   * Getter for the name of the column to check for null before instantiating a nested resultMapping value.
   *
   * @return - the null substitution
   */
  public String getNotNullColumn() {
    return notNullColumn;
  }

  /**
   * Setter for the name of the column to check for null before instantiating a nested resultMapping value.
   *
   * @param notNullColumn
   *          - the column name
   */
  public void setNotNullColumn(String notNullColumn) {
    this.notNullColumn = notNullColumn;
  }

  /**
   * Getter for the name of the statement.
   *
   * @return - the name
   */
  public String getStatementName() {
    return statementName;
  }

  /**
   * Setter for the name of the statement.
   *
   * @param statementName
   *          - the name
   */
  public void setStatementName(String statementName) {
    this.statementName = statementName;
  }

  /**
   * Gets the nested result map name.
   *
   * @return the nested result map name
   */
  public String getNestedResultMapName() {
    return nestedResultMapName;
  }

  /**
   * Sets the nested result map name.
   *
   * @param nestedResultMapName
   *          the new nested result map name
   */
  public void setNestedResultMapName(String nestedResultMapName) {
    this.nestedResultMapName = nestedResultMapName;
  }

}