package net.northking.cctp.maven.analyse;

/**
 * 全局常量类
 *
 * @author 谢秀松
 * @since 1.0
 */
public final class Constants
{
  /**
   * 数据库常量：table catalog
   */
  public static final String TABLE_CAT = "TABLE_CAT";

  /**
   * 数据库常量：table schema
   */
  public static final String TABLE_SCHEMA = "TABLE_SCHEM";

  /**
   * 数据库常量：表名
   */
  public static final String TABLE_NAME = "TABLE_NAME";

  /**
   * 数据库常量：表类型，"TABLE", "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM".
   */
  public static final String TABLE_TYPE = "TABLE_TYPE";

  /**
   * 数据库常量：字段注释
   */
  public static final String REMARKS = "REMARKS";

  /**
   * 数据库常量：表注释
   */
  public static final String TABLE_COMMENT = "TABLE_COMMENT";

  /**
   * 数据库常量：列名
   */
  public static final String COLUMN_NAME = "COLUMN_NAME";

  /**
   * 数据库常量：主键名称
   */
  public static final String PK_NAME = "PK_NAME"; // String => 主键的名称（可为 null）

  /**
   * int => 来自 java.sql.Types 的 SQL 类型
   */
  public static final String DATA_TYPE = "DATA_TYPE";
  /**
   * // String => 数据源依赖的类型名称，对于 UDT，该类型名称是完全限定的
   */
  public static final String TYPE_NAME = "TYPE_NAME";
  /**
   * int => 列的大小。对于 char 或 date 类型，列的大小是最大字符数，对于 numeric 和 decimal 类型，<br>
   * 列的大小就是精度。
   */
  public static final String COLUMN_SIZE = "COLUMN_SIZE";
  /**
   * int => 小数部分的位数
   */
  public static final String DECIMAL_DIGITS = "DECIMAL_DIGITS";
  /**
   * int => 基数（通常为 10 或 2）
   */
  public static final String NUM_PREC_RADI = "NUM_PREC_RADIX";
  /**
   * int => 是否允许使用 NULL。
   */
  public static final String NULLABLE = "NULLABLE";
  /**
   * String => 默认值（可为 null）
   */
  public static final String COLUMN_DEF = "COLUMN_DEF";

  /**
   * 数据库常量：表
   */
  public static final String TYPE_TABLE = "TABLE";

  /**
   * 数据库常量：视图
   */
  public static final String TYPE_VIEW = "VIEW";

  /**
   * String => 被导入的主键表类别（可为 null）
   */
  public static final String PKTABLE_CAT = "PKTABLE_CAT";
  /**
   * String => 被导入的主键表模式（可为 null）
   */
  public static final String PKTABLE_SCHEM = "PKTABLE_SCHEM";
  /**
   * String => 被导入的主键表名称
   */
  public static final String PKTABLE_NAME = "PKTABLE_NAME";
  /**
   * String => 被导入的主键列名称
   */
  public static final String PKCOLUMN_NAME = "PKCOLUMN_NAME";
  /**
   * String => 外键表类别（可为 null）
   */
  public static final String FKTABLE_CAT = "FKTABLE_CAT";
  /**
   * String => 外键表模式（可为 null）
   */
  public static final String FKTABLE_SCHEM = "FKTABLE_SCHEM";
  /**
   * String => 外键表名称
   */
  public static final String FKTABLE_NAME = "FKTABLE_NAME";
  /**
   * String => 外键列名称
   */
  public static final String FKCOLUMN_NAME = "FKCOLUMN_NAME";
  /**
   * short => 外键中的序列号
   */
  public static final String KEY_SEQ = "KEY_SEQ";
  /**
   * short => 更新主键时外键发生的变化： <br>
   * importedNoAction - 如果已经被导入，则不允许更新主键 <br>
   * importedKeyCascade - 将导入的键更改为与主键更新一致 <br>
   * importedKeySetNull - 如果已更新导入键的主键，则将导入键更改为 NULL <br>
   * importedKeySetDefault - 如果已更新导入键的主键，则将导入键更改为默认值<br>
   * importedKeyRestrict - 与 importedKeyNoAction 相同（为了与 ODBC 2.x 兼容） <br>
   */
  public static final String UPDATE_RULE = "UPDATE_RULE";

  /**
   * short => 删除主键时外键发生的变化。<br>
   * <br>
   * importedKeyNoAction - 如果已经导入，则不允许删除主键 <br>
   * importedKeyCascade - 删除导入删除键的行 <br>
   * importedKeySetNull - 如果已删除导入键的主键，则将导入键更改为 NULL <br>
   * importedKeyRestrict - 与 importedKeyNoAction 相同（为了与 ODBC 2.x 兼容） <br>
   * importedKeySetDefault - 如果已删除导入键的主键，则将导入键更改为默认值 <br>
   */
  public static final String DELETE_RULE = "DELETE_RULE";

  /**
   * String => 外键的名称（可为 null）
   */
  public static final String FK_NAME = "FK_NAME";

  /**
   * short => 是否可以将对外键约束的评估延迟到提交时间 <br>
   * importedKeyInitiallyDeferred - 有关定义，请参见 SQL92 <br>
   * importedKeyInitiallyImmediate - 有关定义，请参见 SQL92 <br>
   * importedKeyNotDeferrable - 有关定义，请参见 SQL92 <br>
   */
  public static final String DEFERRABILITY = "DEFERRABILITY";

  /**
   * 索引名称
   */
  public static final String INDEX_NAME = "INDEX_NAME";

  // =======================================================================

  /**
   * 工程默认java源代码目录，maven标准
   */
  public static final String JAVA_DIR = "/src/main/java/";


  /**
   * 常量类隐藏构造函数
   */
  private Constants()
  {
  }
}
