package asandatabasebrowser.model;

/**
 * 	メタデータから取得できる型情報
	 1. TYPE_NAME String => 型名
	 2. DATA_TYPE int => java.sql.Types からの SQL データ型
	 3. PRECISION int => 最大の精度
	 4. LITERAL_PREFIX String => リテラルを引用するのに使用する接頭辞 (null の可能性がある)
	 5. LITERAL_SUFFIX String => リテラルを引用するのに使用する接尾辞 (null の可能性がある)
	 6. CREATE_PARAMS String => 型の作成に使用するパラメータ (null の可能性がある)
	 7. NULLABLE short => この型に NULL を使用できるか
	        * typeNoNulls - NULL 値を許さない
	        * typeNullable - NULL 値を許す
	        * typeNullableUnknown - NULL 値を許すかどうかは不明 
	 8. CASE_SENSITIVE boolean=> 大文字小文字を区別するか
	 9. SEARCHABLE short => この型に基づき、"WHERE" を使用できる
	        * typePredNone - サポートしない
	        * typePredChar - WHERE .. LIKE でだけサポートされる
	        * typePredBasic - WHERE .. LIKE 以外に対しサポートされる
	        * typeSearchable - すべての WHERE .. でサポートされる 
	10. UNSIGNED_ATTRIBUTE boolean => 符号なしか
	11. FIXED_PREC_SCALE boolean => 通貨の値になれるか
	12. AUTO_INCREMENT boolean => 自動インクリメントの値に使用できるか
	13. LOCAL_TYPE_NAME String => 型名のローカライズされたバージョン (null の可能性がある)
	14. MINIMUM_SCALE short => サポートされる最小スケール
	15. MAXIMUM_SCALE short => サポートされる最大スケール
	16. SQL_DATA_TYPE int => 未使用
	17. SQL_DATETIME_SUB int => 未使用
	18. NUM_PREC_RADIX int => 通常は、2 または 10 
 */
public class DbTypeInfo {
	public String	typeName;		//  1. TYPE_NAME String => 型名
	public int		dataType;		//  2. DATA_TYPE int => java.sql.Types からの SQL データ型
	public int		precision;		//  3. PRECISION int => 最大の精度
	public String	literalPrefix;	//  4. LITERAL_PREFIX String => リテラルを引用するのに使用する接頭辞 (null の可能性がある)
	public String	literalSuffix;	//  5. LITERAL_SUFFIX String => リテラルを引用するのに使用する接尾辞 (null の可能性がある)
	public String	createParams;	//  6. CREATE_PARAMS String => 型の作成に使用するパラメータ (null の可能性がある)
	public short	nullable;		//  7. NULLABLE short => この型に NULL を使用できるか
									//         * typeNoNulls - NULL 値を許さない
									//         * typeNullable - NULL 値を許す
									//         * typeNullableUnknown - NULL 値を許すかどうかは不明 
	public boolean	caseSensitive;	//  8. CASE_SENSITIVE boolean=> 大文字小文字を区別するか
	public short	searchable;		//  9. SEARCHABLE short => この型に基づき、"WHERE" を使用できる
									//         * typePredNone - サポートしない
									//         * typePredChar - WHERE .. LIKE でだけサポートされる
									//         * typePredBasic - WHERE .. LIKE 以外に対しサポートされる
									//         * typeSearchable - すべての WHERE .. でサポートされる 
	public boolean	unsignedAttribute;	// 10. UNSIGNED_ATTRIBUTE boolean => 符号なしか
	public boolean	fixedPrecScale;	// 11. FIXED_PREC_SCALE boolean => 通貨の値になれるか
	public boolean	autoIncrement;	// 12. AUTO_INCREMENT boolean => 自動インクリメントの値に使用できるか
	public String	localTypeName;	// 13. LOCAL_TYPE_NAME String => 型名のローカライズされたバージョン (null の可能性がある)
	public short	minimumScale;	// 14. MINIMUM_SCALE short => サポートされる最小スケール
	public short	maximumScale;	// 15. MAXIMUM_SCALE short => サポートされる最大スケール
	public int		sqlDataType;	// 16. SQL_DATA_TYPE int => 未使用
	public int		sqlDatetimeSub;	// 17. SQL_DATETIME_SUB int => 未使用
	public int		numPrecRadix;	// 18. NUM_PREC_RADIX int => 通常は、2 または 10 


	DbTypeInfo(String typeName, int dataType, int precision,
			String literalPrefix, String literalSuffix, String createParams,
			short nullable, boolean caseSensitive, short searchable,
			boolean unsignedAttribute, boolean fixedPrecScale,
			boolean autoIncrement, String localTypeName, short minimumScale,
			short maximumScale, int sqlDataType, int sqlDatetimeSub,
			int numPrecRadix) {
		this.typeName = typeName;
		this.dataType = dataType;
		this.precision = precision;
		this.literalPrefix = literalPrefix;
		this.literalSuffix = literalSuffix;
		this.createParams = createParams;
		this.nullable = nullable;
		this.caseSensitive = caseSensitive;
		this.searchable = searchable;
		this.unsignedAttribute = unsignedAttribute;
		this.fixedPrecScale = fixedPrecScale;
		this.autoIncrement = autoIncrement;
		this.localTypeName = localTypeName;
		this.minimumScale = minimumScale;
		this.maximumScale = maximumScale;
		this.sqlDataType = sqlDataType;
		this.sqlDatetimeSub = sqlDatetimeSub;
		this.numPrecRadix = numPrecRadix;	 
	}
	
}
