/*
* Microsoft JDBC Driver for SQL Server
*
* Copyright(c) Microsoft Corporation All rights reserved.
*
* This program is made available under the terms of the MIT License. See the LICENSE file in the project root for more information.
*/
package com.microsoft.sqlserver.testframework;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import com.microsoft.sqlserver.testframework.sqlType.SqlBigInt;
import com.microsoft.sqlserver.testframework.sqlType.SqlBinary;
import com.microsoft.sqlserver.testframework.sqlType.SqlBit;
import com.microsoft.sqlserver.testframework.sqlType.SqlChar;
import com.microsoft.sqlserver.testframework.sqlType.SqlDate;
import com.microsoft.sqlserver.testframework.sqlType.SqlDateTime;
import com.microsoft.sqlserver.testframework.sqlType.SqlDateTime2;
import com.microsoft.sqlserver.testframework.sqlType.SqlDateTimeOffset;
import com.microsoft.sqlserver.testframework.sqlType.SqlDecimal;
import com.microsoft.sqlserver.testframework.sqlType.SqlFloat;
import com.microsoft.sqlserver.testframework.sqlType.SqlInt;
import com.microsoft.sqlserver.testframework.sqlType.SqlMoney;
import com.microsoft.sqlserver.testframework.sqlType.SqlNChar;
import com.microsoft.sqlserver.testframework.sqlType.SqlNVarChar;
import com.microsoft.sqlserver.testframework.sqlType.SqlNumeric;
import com.microsoft.sqlserver.testframework.sqlType.SqlReal;
import com.microsoft.sqlserver.testframework.sqlType.SqlSmallDateTime;
import com.microsoft.sqlserver.testframework.sqlType.SqlSmallInt;
import com.microsoft.sqlserver.testframework.sqlType.SqlSmallMoney;
import com.microsoft.sqlserver.testframework.sqlType.SqlTime;
import com.microsoft.sqlserver.testframework.sqlType.SqlTinyInt;
import com.microsoft.sqlserver.testframework.sqlType.SqlType;
import com.microsoft.sqlserver.testframework.sqlType.SqlVarBinary;
import com.microsoft.sqlserver.testframework.sqlType.SqlVarChar;
/**
* Collection of SqlType used to create table in {@link DBTable}
*
* @author Microsoft
*
*/
public class DBSchema {
private List<SqlType> sqlTypes;
/**
*
* @param autoGenerateSchema
*/
DBSchema(boolean autoGenerateSchema) {
sqlTypes = new ArrayList<SqlType>();
if (autoGenerateSchema) {
// Exact Numeric
sqlTypes.add(new SqlBigInt());
sqlTypes.add(new SqlInt());
sqlTypes.add(new SqlSmallInt());
sqlTypes.add(new SqlTinyInt());
sqlTypes.add(new SqlBit());
sqlTypes.add(new SqlDecimal());
sqlTypes.add(new SqlNumeric());
sqlTypes.add(new SqlMoney());
sqlTypes.add(new SqlSmallMoney());
// Appx Numeric
sqlTypes.add(new SqlFloat());
sqlTypes.add(new SqlReal());
// Character
sqlTypes.add(new SqlChar());
sqlTypes.add(new SqlVarChar());
// Unicode
sqlTypes.add(new SqlNChar());
sqlTypes.add(new SqlNVarChar());
// Temporal
sqlTypes.add(new SqlDateTime());
sqlTypes.add(new SqlDate());
sqlTypes.add(new SqlTime());
sqlTypes.add(new SqlSmallDateTime());
sqlTypes.add(new SqlDateTime2());
sqlTypes.add(new SqlDateTimeOffset());
// Binary
sqlTypes.add(new SqlBinary());
sqlTypes.add(new SqlVarBinary());
// TODO:
// Other types
}
}
/**
*
* @param autoGenerateSchema
* @param alternateSchema
*/
DBSchema(boolean autoGenerateSchema,
boolean alternateSchema) {
this(autoGenerateSchema);
if (alternateSchema) {
Collections.shuffle(this.sqlTypes);
}
}
/**
*
* @param index
* @return
*/
SqlType getSqlType(int index) {
return sqlTypes.get(index);
}
/**
*
* @param sqlType
*/
void addSqlTpe(SqlType sqlType) {
sqlTypes.add(sqlType);
}
/**
*
* @return number of sqlTypes in the schema object
*/
int getNumberOfSqlTypes() {
return sqlTypes.size();
}
}