You are viewing a plain text version of this content. The canonical link for it is here.
Posted to stonehenge-commits@incubator.apache.org by be...@apache.org on 2009/07/30 03:26:47 UTC
svn commit: r799159 - in
/incubator/stonehenge/trunk/stocktrader/dotnet/setup_utilities/SetupActions:
App.config Program.cs SetupAction.cs SetupActions.csproj XmlLoadData.cs
Author: bendewey
Date: Thu Jul 30 03:26:43 2009
New Revision: 799159
URL: http://svn.apache.org/viewvc?rev=799159&view=rev
Log:
STONEHENGE-95, Additionally I made a pretty major refactor to the SetupActions class.
Added:
incubator/stonehenge/trunk/stocktrader/dotnet/setup_utilities/SetupActions/XmlLoadData.cs
Modified:
incubator/stonehenge/trunk/stocktrader/dotnet/setup_utilities/SetupActions/App.config
incubator/stonehenge/trunk/stocktrader/dotnet/setup_utilities/SetupActions/Program.cs
incubator/stonehenge/trunk/stocktrader/dotnet/setup_utilities/SetupActions/SetupAction.cs
incubator/stonehenge/trunk/stocktrader/dotnet/setup_utilities/SetupActions/SetupActions.csproj
Modified: incubator/stonehenge/trunk/stocktrader/dotnet/setup_utilities/SetupActions/App.config
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/dotnet/setup_utilities/SetupActions/App.config?rev=799159&r1=799158&r2=799159&view=diff
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/dotnet/setup_utilities/SetupActions/App.config (original)
+++ incubator/stonehenge/trunk/stocktrader/dotnet/setup_utilities/SetupActions/App.config Thu Jul 30 03:26:43 2009
@@ -21,7 +21,6 @@
<!--This is the input parameters for the db setup routine. -->
<add key="dbServer" value="." />
<add key="installPath" value="C:\StockTraderDemo\" />
- <add key="createDBs" value="StockTraderDB" />
<add key="dbAdmin" value="sa" />
<add key="dbPassword" value="Abc.123" />
<add key="authType" value="SQL" />
Modified: incubator/stonehenge/trunk/stocktrader/dotnet/setup_utilities/SetupActions/Program.cs
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/dotnet/setup_utilities/SetupActions/Program.cs?rev=799159&r1=799158&r2=799159&view=diff
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/dotnet/setup_utilities/SetupActions/Program.cs (original)
+++ incubator/stonehenge/trunk/stocktrader/dotnet/setup_utilities/SetupActions/Program.cs Thu Jul 30 03:26:43 2009
@@ -21,42 +21,25 @@
using System.Text;
using System.Configuration;
-namespace SetupAction
+namespace SetupActions
{
class Program
- {
- public static string INSTALL_PATH = null;
- public static string dbServer = null;
- public static string installPath = null;
- public static string createDBs = null;
- public static string dbAdmin = null;
- public static string dbPassword = null;
- public static string authType = null;
-
+ {
static void Main()
{
Console.WriteLine("Setting up Database");
+
//These are only for display
- //The install method wil get them again.
- dbServer = ConfigurationManager.AppSettings.Get("dbServer");
- installPath = ConfigurationManager.AppSettings.Get("installPath");
- //not used createDBs = ConfigurationManager.AppSettings.Get("createDBs");
- dbAdmin = ConfigurationManager.AppSettings.Get("dbAdmin");
- dbPassword = ConfigurationManager.AppSettings.Get("dbPassword");
- authType = ConfigurationManager.AppSettings.Get("authType");
-
+ //The install method will get them again.
Console.WriteLine("Config.AppSettings:");
- Console.WriteLine("dbServer is {0}",dbServer );
- Console.WriteLine("installPath is {0}", installPath);
- //not used Console.WriteLine("createDBs is {0}", createDBs);
- Console.WriteLine("dbAdmin is {0}", dbAdmin);
- Console.WriteLine("authType is {0}", authType);
-
-
+ Console.WriteLine("dbServer is {0}", ConfigurationManager.AppSettings.Get("dbServer"));
+ Console.WriteLine("installPath is {0}", ConfigurationManager.AppSettings.Get("installPath"));
+ Console.WriteLine("dbAdmin is {0}", ConfigurationManager.AppSettings.Get("dbAdmin"));
+ Console.WriteLine("authType is {0}", ConfigurationManager.AppSettings.Get("authType"));
- SetupAction s = new SetupAction();
try
{
+ SetupAction s = new SetupAction();
s.Install();
Console.WriteLine();
Console.WriteLine("Setup completed. Press Enter to continue");
@@ -64,7 +47,9 @@
catch (Exception ex)
{
Console.WriteLine();
+ Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(ex.ToString());
+ Console.ForegroundColor = ConsoleColor.Gray;
Console.WriteLine("Setup Failed. Press Enter to continue");
}
Console.ReadLine();
Modified: incubator/stonehenge/trunk/stocktrader/dotnet/setup_utilities/SetupActions/SetupAction.cs
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/dotnet/setup_utilities/SetupActions/SetupAction.cs?rev=799159&r1=799158&r2=799159&view=diff
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/dotnet/setup_utilities/SetupActions/SetupAction.cs (original)
+++ incubator/stonehenge/trunk/stocktrader/dotnet/setup_utilities/SetupActions/SetupAction.cs Thu Jul 30 03:26:43 2009
@@ -16,186 +16,103 @@
//
using System;
-using System.DirectoryServices;
-using System.Data;
-using System.ComponentModel;
-using System.Collections.Generic;
-using System.Text;
-using System.Net;
-using System.Threading;
-using System.Diagnostics;
-using System.IO;
-using System.Reflection;
using System.Configuration;
+using System.Data;
using System.Data.SqlClient;
-using Microsoft.SqlServer.Management;
-using Microsoft.SqlServer.Management.Smo;
-using Microsoft.SqlServer.Management.Common;
-
-
+using System.IO;
+using System.Collections.Generic;
-namespace SetupAction
+namespace SetupActions
{
/// <summary>
/// This is a custom setup action that overrides Installer base and is called after setup copies filed, automatically
/// by the setup program. It will create IIS virtual directories based on WMI, register script maps, and create the databases.
/// </summary>
- public partial class SetupAction
+ internal sealed class SetupAction
{
- private string SQL_CONN = null;
- public static readonly string CONNSTRING_SQLAUTH = "server={0};Database={1};user id={2};password={3};Pooling=false;";
- public static readonly string CONNSTRING_WINAUTH = @"server={0};Database={1};Integrated Security=SSPI;";
- //newstrings
- string CREATE_LOADACCOUNTPROFILEXML = @"setup_utilities\DATALOAD\CreateInsertXMLAccountProfileProc.sql";
- string CREATE_LOADACCOUNTXML = @"setup_utilities\DATALOAD\CreateInsertXMLAccountProc.sql";
- string CREATE_LOADHOLDINGXML = @"setup_utilities\DATALOAD\CreateInsertXMLHoldingProc.sql";
- string CREATE_LOADORDERSXML = @"setup_utilities\DATALOAD\CreateInsertXMLOrdersProc.sql";
- string CREATE_LOADQUOTEXML = @"setup_utilities\DATALOAD\CreateInsertXMLQuoteProc.sql";
- string MSG_CHECK_SQL_AUTH = string.Empty;
+ // Connection Strings
+ private readonly string CONNSTRING_SQLAUTH = @"server={0};Database={1};user id={2};password={3};Pooling=false;";
+ private readonly string CONNSTRING_WINAUTH = @"server={0};Database={1};Integrated Security=SSPI;";
+
+ // DB Create/Load Scripts
+ private readonly string TRADEDB_CREATE_FILE = @"setup_utilities\DataLoad\createdb.sql";
+ private readonly string TRADEDB_CREATE_DBCONFIG = @"setup_utilities\DataLoad\createdbconfig.sql";
+ private readonly string TRADEDB_INSERT_DBCONFIG = @"setup_utilities\DataLoad\insertdbconfig.sql";
+
+ // Xml Loading Stored Proc Scripts
+ private readonly List<string> CREATE_PROC_SCRIPTS = new List<string>() {
+ @"setup_utilities\DataLoad\CreateInsertXMLAccountProfileProc.sql",
+ @"setup_utilities\DataLoad\CreateInsertXMLAccountProc.sql",
+ @"setup_utilities\DataLoad\CreateInsertXMLHoldingProc.sql",
+ @"setup_utilities\DataLoad\CreateInsertXMLOrdersProc.sql",
+ @"setup_utilities\DataLoad\CreateInsertXMLQuoteProc.sql"
+ };
- public static string dbServer = null;
- private string installPath = null;
- //private string createDBs = null;
- public string dbAdmin = null;
- public string dbPassword = null;
- public string authType = null;
- public static readonly string tradeuser = "trade";
- public static readonly string tradepassword = "yyy";
- public static readonly string TRADEDB = "StockTraderDB";
- public const string TRADEDB_CREATE_FILE = "createdb.sql";
- public const string TRADEDB_CREATE_DBCONFIG = "createdbconfig.sql";
- public const string TRADEDB_INSERT_DBCONFIG = "insertdbconfig.sql";
+ // Xml Files to Load
+ private readonly List<XmlLoadData> XML_LOAD_DATA = new List<XmlLoadData>() {
+ new XmlLoadData { Filename=@"setup_utilities\DataLoad\StockTraderDB\Account.xml", StoredProcName="InsertAccountFromXML", Table="dbo.ACCOUNT" },
+ new XmlLoadData { Filename=@"setup_utilities\DataLoad\StockTraderDB\AccountProfile.xml", StoredProcName="InsertAccountProfileFromXML" },
+ new XmlLoadData { Filename=@"setup_utilities\DataLoad\StockTraderDB\Holding.xml", StoredProcName="InsertHoldingFromXML", Table="dbo.HOLDING" },
+ new XmlLoadData { Filename=@"setup_utilities\DataLoad\StockTraderDB\Quote.xml", StoredProcName="InsertQuoteFromXML" },
+ new XmlLoadData { Filename=@"setup_utilities\DataLoad\StockTraderDB\Orders.xml", StoredProcName="InsertOrdersFromXML", Table="dbo.ORDERS" }
+ };
+
+ // Error Messages
+ private readonly string CREATE_LOGIN_FAILED_MSG = "Unable to login with the newly created trade user account.";
+
+ // DB Creation Configuration
+ private readonly string _dbServer;
+ private readonly string _installPath;
+ private readonly string _dbAdmin;
+ private readonly string _dbPassword;
+ private readonly string _authType;
+ private readonly string _tradeUser = "trade";
+ private readonly string _tradePassword = "yyy";
+ private readonly string _tradeDb = "StockTraderDB";
- string GetConnectionString(string databaseName)
+ private string _connectionString = null;
+
+ public SetupAction()
{
- if (authType != null && authType.Equals("Integrated", StringComparison.InvariantCultureIgnoreCase))
- return string.Format(CONNSTRING_WINAUTH, new object[] { dbServer, databaseName });
-
- return string.Format(CONNSTRING_SQLAUTH, new object[] { dbServer, databaseName, dbAdmin, dbPassword });
+ //Get values from config
+ _dbServer = ConfigurationManager.AppSettings.Get("dbServer");
+ _installPath = ConfigurationManager.AppSettings.Get("installPath");
+ _dbAdmin = ConfigurationManager.AppSettings.Get("dbAdmin");
+ _dbPassword = ConfigurationManager.AppSettings.Get("dbPassword");
+ _authType = ConfigurationManager.AppSettings.Get("authType");
}
- //public void Install(System.Collections.IDictionary stateSaver)
public void Install()
{
-
- //Get values from config
- dbServer = ConfigurationManager.AppSettings.Get("dbServer");
- installPath = ConfigurationManager.AppSettings.Get("installPath");
- //not used createDBs = ConfigurationManager.AppSettings.Get("createDBs");
- dbAdmin = ConfigurationManager.AppSettings.Get("dbAdmin");
- dbPassword = ConfigurationManager.AppSettings.Get("dbPassword");
- authType = ConfigurationManager.AppSettings.Get("authType");
-
- //string CREATE_LOADACCOUNTPROFILEXML = @"setup_utilities\DATALOAD\" + createfilename;
- //string CREATE_LOADACCOUNTXML = string.Empty;
- //string CREATE_LOADHOLDINGXML = string.Empty;
- //string CREATE_LOADORDERSXML = string.Empty;
- //string CREATE_LOADQUOTEXML = string.Empty;
-
- try
- {
- createDatabase(installPath, TRADEDB_CREATE_FILE, TRADEDB, tradeuser, tradepassword);
- createLoadXmlStockTraderDBProcs(installPath, TRADEDB);
- loadStockTraderDB(installPath, TRADEDB);
- addDBConfig(installPath, TRADEDB, TRADEDB_CREATE_DBCONFIG, TRADEDB_INSERT_DBCONFIG);
- }
- catch (Exception e)
- {
- throw new Exception("MSG_DBFAIL " + e.Message);
- }
+ CreateDatabase(_tradeDb, _tradeUser, _tradePassword);
+ CreateLoadXmlStoredProcs(_tradeDb);
+ LoadStockTraderDB(_tradeDb);
+ AddDBConfig(_tradeDb);
}
/// <summary>
- /// Creates the tables needed for the database configuration system
- /// i.e. SERVICE, CLIENTTOBS, BSTOOPS, DBCONFIG
+ /// Gets a Connection string based on the authentication Type and supplied DB Name
/// </summary>
- /// <param name="installPath"></param>
- /// <param name="databaseName"></param>
- private void addDBConfig(string installPath, string databaseName, string createdbconfigfilename, string insertdbconfigfilename)
+ /// <param name="databaseName">The database name to connect</param>
+ /// <returns>A SQL Server ConnectionString</returns>
+ private string GetConnectionString(string databaseName)
{
- SQL_CONN = GetConnectionString(databaseName);
- SqlConnection sqlConnection = new SqlConnection(SQL_CONN);
- sqlConnection.Open();
-
- //creates the necessary tables: CLIENTTOBS, BSTOOPS, SERVICE, DBCONFIG
- System.IO.StreamReader file = new System.IO.StreamReader(installPath + @"setup_utilities\DATALOAD\" + createdbconfigfilename);
- string createCommand = file.ReadToEnd();
- file.Close();
- SqlCommand sqlCommand = new SqlCommand(createCommand, sqlConnection);
- sqlCommand.CommandType = CommandType.Text;
- sqlCommand.ExecuteNonQuery();
- Console.Write(".");
-
- //inserts the config info into these tables
- file = new System.IO.StreamReader(installPath + @"setup_utilities\DATALOAD\" + insertdbconfigfilename);
- createCommand = file.ReadToEnd();
- file.Close();
- sqlCommand = new SqlCommand(createCommand, sqlConnection);
- sqlCommand.CommandType = CommandType.Text;
- sqlCommand.ExecuteNonQuery();
- Console.Write(".");
-
- sqlConnection.Close();
- return;
+ return GetConnectionString(databaseName, _dbAdmin, _dbPassword);
}
-
+
/// <summary>
- /// Similar to createLoadXmlRepositoryProcs, except for StockTraderDB tables.
+ /// Gets a Connection string based on the authentication Type and supplied DB Name
/// </summary>
- /// <param name="installPath"></param>
- /// <param name="databaseName"></param>
- public void createLoadXmlStockTraderDBProcs(string installPath, string databaseName)
+ /// <param name="databaseName">The database name to connect</param>
+ /// <param name="username">The username to use when connecting to the database</param>
+ /// <param name="password">The password for the supplied username</param>
+ /// <returns>A SQL Server ConnectionString</returns>
+ private string GetConnectionString(string databaseName, string username, string password)
{
- SQL_CONN = GetConnectionString(databaseName);
- SqlConnection sqlConnection = new SqlConnection(SQL_CONN);
- sqlConnection.Open();
-
- ///ACCOUNT_PROFILE_LOAD_XML
- System.IO.StreamReader file = new System.IO.StreamReader(installPath + CREATE_LOADACCOUNTPROFILEXML);
- string createCommand = file.ReadToEnd();
- file.Close();
- SqlCommand sqlCommand = new SqlCommand(createCommand, sqlConnection);
- sqlCommand.CommandType = CommandType.Text;
- sqlCommand.ExecuteNonQuery();
- Console.Write(".");
-
- ///ACCOUNT_LOAD_XML
- file = new System.IO.StreamReader(installPath + CREATE_LOADACCOUNTXML);
- createCommand = file.ReadToEnd();
- file.Close();
- sqlCommand = new SqlCommand(createCommand, sqlConnection);
- sqlCommand.CommandType = CommandType.Text;
- sqlCommand.ExecuteNonQuery();
- Console.Write(".");
-
- ///HOLDING_LOAD_XML
- file = new System.IO.StreamReader(installPath + CREATE_LOADHOLDINGXML);
- createCommand = file.ReadToEnd();
- file.Close();
- sqlCommand = new SqlCommand(createCommand, sqlConnection);
- sqlCommand.CommandType = CommandType.Text;
- sqlCommand.ExecuteNonQuery();
- Console.Write(".");
-
- ///ORDERS_LOAD_XML
- file = new System.IO.StreamReader(installPath + CREATE_LOADORDERSXML);
- createCommand = file.ReadToEnd();
- file.Close();
- sqlCommand = new SqlCommand(createCommand, sqlConnection);
- sqlCommand.CommandType = CommandType.Text;
- sqlCommand.ExecuteNonQuery();
- Console.Write(".");
-
- ///QUOTE_LOAD_XML
- file = new System.IO.StreamReader(installPath + CREATE_LOADQUOTEXML);
- createCommand = file.ReadToEnd();
- file.Close();
- sqlCommand = new SqlCommand(createCommand, sqlConnection);
- sqlCommand.CommandType = CommandType.Text;
- sqlCommand.ExecuteNonQuery();
- Console.Write(".");
+ if (_authType != null && _authType.Equals("Integrated", StringComparison.InvariantCultureIgnoreCase))
+ return string.Format(CONNSTRING_WINAUTH, new object[] { _dbServer, databaseName });
- sqlConnection.Close();
+ return string.Format(CONNSTRING_SQLAUTH, new object[] { _dbServer, databaseName, username, password });
}
/// <summary>
@@ -206,224 +123,258 @@
/// <param name="repositoryName"></param>
/// <param name="userid"></param>
/// <param name="password"></param>
- public void createDatabase(string installPath, string createfilename, string repositoryName, string userid, string password)
+ private void CreateDatabase(string databaseName, string userid, string password)
{
- string configDB = "IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled')) EXEC [" + repositoryName + "].[dbo].[sp_fulltext_database] @action = 'enable';" +
- "ALTER DATABASE [" + repositoryName + "] SET ANSI_NULL_DEFAULT OFF;" +
- "ALTER DATABASE [" + repositoryName + "] SET ANSI_NULLS OFF;" +
- "ALTER DATABASE [" + repositoryName + "] SET ANSI_PADDING OFF;" +
- "ALTER DATABASE [" + repositoryName + "] SET ANSI_WARNINGS OFF;" +
- "ALTER DATABASE [" + repositoryName + "] SET ARITHABORT OFF;" +
- "ALTER DATABASE [" + repositoryName + "] SET AUTO_CLOSE OFF;" +
- "ALTER DATABASE [" + repositoryName + "] SET AUTO_CREATE_STATISTICS ON;" +
- "ALTER DATABASE [" + repositoryName + "] SET AUTO_SHRINK OFF;" +
- "ALTER DATABASE [" + repositoryName + "] SET AUTO_UPDATE_STATISTICS ON;" +
- "ALTER DATABASE [" + repositoryName + "] SET CURSOR_CLOSE_ON_COMMIT OFF;" +
- "ALTER DATABASE [" + repositoryName + "] SET CURSOR_DEFAULT GLOBAL;" +
- "ALTER DATABASE [" + repositoryName + "] SET CONCAT_NULL_YIELDS_NULL OFF;" +
- "ALTER DATABASE [" + repositoryName + "] SET NUMERIC_ROUNDABORT OFF;" +
- "ALTER DATABASE [" + repositoryName + "] SET QUOTED_IDENTIFIER OFF;" +
- "ALTER DATABASE [" + repositoryName + "] SET RECURSIVE_TRIGGERS OFF;" +
- "ALTER DATABASE [" + repositoryName + "] SET ENABLE_BROKER;" +
- "ALTER DATABASE [" + repositoryName + "] SET AUTO_UPDATE_STATISTICS_ASYNC OFF;" +
- "ALTER DATABASE [" + repositoryName + "] SET DATE_CORRELATION_OPTIMIZATION OFF;" +
- "ALTER DATABASE [" + repositoryName + "] SET TRUSTWORTHY OFF;" +
- "ALTER DATABASE [" + repositoryName + "] SET ALLOW_SNAPSHOT_ISOLATION OFF;" +
- "ALTER DATABASE [" + repositoryName + "] SET PARAMETERIZATION SIMPLE;" +
- "ALTER DATABASE [" + repositoryName + "] SET READ_WRITE;" +
- "ALTER DATABASE [" + repositoryName + "] SET RECOVERY FULL;" +
- "ALTER DATABASE [" + repositoryName + "] SET MULTI_USER;" +
- "ALTER DATABASE [" + repositoryName + "] SET PAGE_VERIFY CHECKSUM;" +
- "ALTER DATABASE [" + repositoryName + "] SET DB_CHAINING OFF;";
-
- string dropDB = null;
- SQL_CONN = GetConnectionString("master");
- SqlConnection sqlConnection = new SqlConnection(SQL_CONN);
+ _connectionString = GetConnectionString("master");
+ SqlConnection sqlConnection = new SqlConnection(_connectionString);
try
{
+ // Connect to master
sqlConnection.Open();
- dropDB = "IF EXISTS (SELECT name FROM sys.databases WHERE name = N'" + repositoryName + "') DROP DATABASE [" + repositoryName + "]";
- SqlCommand sqlCommand = new SqlCommand(dropDB, sqlConnection);
- sqlCommand.CommandTimeout = 1200;
- sqlCommand.CommandType = CommandType.Text;
//Drop DB
+ string dropDB = "IF EXISTS (SELECT name FROM sys.databases WHERE name = N'" + databaseName + "') DROP DATABASE [" + databaseName + "]";
+ SqlCommand sqlCommand = new SqlCommand(dropDB, sqlConnection);
sqlCommand.ExecuteNonQuery();
//Create DB
- string strCreateDB = "CREATE DATABASE [" + repositoryName + "];";
- sqlCommand.CommandText = strCreateDB;
+ string createDB = "CREATE DATABASE [" + databaseName + "];";
+ sqlCommand.CommandText = createDB;
sqlCommand.ExecuteNonQuery();
Console.Write(".");
//Config DB
+ string configDB = "IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled')) EXEC [" + databaseName + "].[dbo].[sp_fulltext_database] @action = 'enable';" +
+ "ALTER DATABASE [" + databaseName + "] SET ANSI_NULL_DEFAULT OFF;" +
+ "ALTER DATABASE [" + databaseName + "] SET ANSI_NULLS OFF;" +
+ "ALTER DATABASE [" + databaseName + "] SET ANSI_PADDING OFF;" +
+ "ALTER DATABASE [" + databaseName + "] SET ANSI_WARNINGS OFF;" +
+ "ALTER DATABASE [" + databaseName + "] SET ARITHABORT OFF;" +
+ "ALTER DATABASE [" + databaseName + "] SET AUTO_CLOSE OFF;" +
+ "ALTER DATABASE [" + databaseName + "] SET AUTO_CREATE_STATISTICS ON;" +
+ "ALTER DATABASE [" + databaseName + "] SET AUTO_SHRINK OFF;" +
+ "ALTER DATABASE [" + databaseName + "] SET AUTO_UPDATE_STATISTICS ON;" +
+ "ALTER DATABASE [" + databaseName + "] SET CURSOR_CLOSE_ON_COMMIT OFF;" +
+ "ALTER DATABASE [" + databaseName + "] SET CURSOR_DEFAULT GLOBAL;" +
+ "ALTER DATABASE [" + databaseName + "] SET CONCAT_NULL_YIELDS_NULL OFF;" +
+ "ALTER DATABASE [" + databaseName + "] SET NUMERIC_ROUNDABORT OFF;" +
+ "ALTER DATABASE [" + databaseName + "] SET QUOTED_IDENTIFIER OFF;" +
+ "ALTER DATABASE [" + databaseName + "] SET RECURSIVE_TRIGGERS OFF;" +
+ "ALTER DATABASE [" + databaseName + "] SET ENABLE_BROKER;" +
+ "ALTER DATABASE [" + databaseName + "] SET AUTO_UPDATE_STATISTICS_ASYNC OFF;" +
+ "ALTER DATABASE [" + databaseName + "] SET DATE_CORRELATION_OPTIMIZATION OFF;" +
+ "ALTER DATABASE [" + databaseName + "] SET TRUSTWORTHY OFF;" +
+ "ALTER DATABASE [" + databaseName + "] SET ALLOW_SNAPSHOT_ISOLATION OFF;" +
+ "ALTER DATABASE [" + databaseName + "] SET PARAMETERIZATION SIMPLE;" +
+ "ALTER DATABASE [" + databaseName + "] SET READ_WRITE;" +
+ "ALTER DATABASE [" + databaseName + "] SET RECOVERY FULL;" +
+ "ALTER DATABASE [" + databaseName + "] SET MULTI_USER;" +
+ "ALTER DATABASE [" + databaseName + "] SET PAGE_VERIFY CHECKSUM;" +
+ "ALTER DATABASE [" + databaseName + "] SET DB_CHAINING OFF;";
+
sqlCommand.CommandText = configDB;
sqlCommand.ExecuteNonQuery();
Console.Write(".");
- string createlogin = "IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE name = N'" + userid + "') " +
+ // Create Login
+ string createLogin = "IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE name = N'" + userid + "') " +
"CREATE LOGIN [" + userid + "] WITH PASSWORD='" + password + "', DEFAULT_DATABASE=" +
- "[" + repositoryName + "], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF;";
- string createuser = "IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'" + userid + "') CREATE USER" +
- "[" + userid + "] FOR LOGIN [" + userid + "] WITH DEFAULT_SCHEMA=[dbo];";
+ "[" + databaseName + "], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF;";
- //create login
- sqlCommand.CommandText = createlogin;
+ sqlCommand.CommandText = createLogin;
sqlCommand.ExecuteNonQuery();
Console.Write(".");
- //Logout of Master
-
+ // Logout of Master
sqlConnection.Close();
- //Now create user for new DB by logging in to new DB with admin rights
+ // Login to the databaseName using the Master Account
+ _connectionString = GetConnectionString(databaseName);
+ sqlConnection = new SqlConnection(_connectionString);
+ sqlConnection.Open();
- SQL_CONN = GetConnectionString(repositoryName);
- sqlConnection = new SqlConnection(SQL_CONN);
- Server server = new Server(new ServerConnection(sqlConnection));
- server.ConnectionContext.ExecuteNonQuery(createuser);
- Console.Write(".");
+ // Create User
+ string createUser = "IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'" + userid + "') CREATE USER" +
+ "[" + userid + "] FOR LOGIN [" + userid + "] WITH DEFAULT_SCHEMA=[dbo];";
- //Logout of Trade DB
- sqlConnection.Close();
- System.Data.SqlClient.SqlConnection.ClearAllPools();
+ sqlCommand = new SqlCommand(createUser, sqlConnection);
+ sqlCommand.ExecuteNonQuery();
+ Console.Write(".");
- //Login to Master and use SMO to create role mapping of DBO
- sqlConnection = new SqlConnection(SQL_CONN);
- //new SMO functionality
- server = new Server(new ServerConnection(sqlConnection));
- server.ConnectionContext.ExecuteNonQuery("exec sp_addrolemember 'db_owner','" + userid + "'");
+ // Add Role
+ string addRole = "EXEC sp_addrolemember 'db_owner', '" + userid + "'";
+ sqlCommand.CommandText = addRole;
+ sqlCommand.ExecuteNonQuery();
Console.Write(".");
- //Logout
+ // Logout of databaseName with Master credentials
sqlConnection.Close();
- //Login as newly created user. Don't need to but rather test connectivity here right away to make sure DB in good state for new trade user.
- SQL_CONN = GetConnectionString(repositoryName);
- sqlConnection = new SqlConnection(SQL_CONN);
+ // Login as newly created user.
+ // Don't need to but rather test connectivity here right away to make sure
+ // the DB is in good state for the new trade user.
+ _connectionString = GetConnectionString(databaseName, userid, password);
+ sqlConnection = new SqlConnection(_connectionString);
try
{
sqlConnection.Open();
}
catch (Exception e)
{
- throw new Exception(MSG_CHECK_SQL_AUTH + ". Exc: " + e.Message);
+ throw new Exception(CREATE_LOGIN_FAILED_MSG + " Error: " + e.Message);
}
///Create Schema for DB
- System.IO.StreamReader file = new System.IO.StreamReader(installPath + @"setup_utilities\DATALOAD\" + createfilename);
- string createCommand = file.ReadToEnd();
- file.Close();
+ string createCommand = ReadTextFile(Path.Combine(_installPath, TRADEDB_CREATE_FILE));
sqlCommand = new SqlCommand(createCommand, sqlConnection);
- sqlCommand.CommandType = CommandType.Text;
sqlCommand.ExecuteNonQuery();
Console.Write(".");
- sqlConnection.Close();
- return;
}
- catch (Exception e)
+ finally
{
+ // Close the connection
if (sqlConnection.State == ConnectionState.Open)
sqlConnection.Close();
- System.Data.SqlClient.SqlConnection.ClearAllPools();
sqlConnection.Dispose();
- throw new Exception(e.Message);
+
+ // Clear all pools so we don't get any master connections going forward
+ SqlConnection.ClearAllPools();
}
}
-
/// <summary>
- /// Loads the StockTraderDB tables with initial data from XML files.
+ /// Similar to createLoadXmlRepositoryProcs, except for StockTraderDB tables.
/// </summary>
- /// <param name="installPath"></param>
- /// <param name="repository"></param>
- public void loadStockTraderDB(string installPath, string repository)
+ ///
+ /// <param name="databaseName"></param>
+ private void CreateLoadXmlStoredProcs(string databaseName)
{
- SQL_CONN = GetConnectionString(repository);
- string xmlFile = null;
- string sql = null;
- string table = null;
- for (int i = 0; i < 5; i++)
+ _connectionString = GetConnectionString(databaseName);
+ SqlConnection sqlConnection = new SqlConnection(_connectionString);
+ try
{
- switch (i)
- {
- case 0:
- {
- xmlFile = installPath + "setup_utilities\\DATALOAD\\" + repository + "\\Account.xml";
- sql = "InsertAccountFromXML";
- table = "dbo.ACCOUNT";
- break;
- }
- case 1:
- {
- xmlFile = installPath + "setup_utilities\\DATALOAD\\" + repository + "\\AccountProfile.xml";
- sql = "InsertAccountProfileFromXML";
- table = null;
- break;
- }
- case 2:
- {
- xmlFile = installPath + "setup_utilities\\DATALOAD\\" + repository + "\\Quote.xml";
- sql = "InsertQuoteFromXML";
- table = null;
- break;
- }
- case 3:
- {
- xmlFile = installPath + "setup_utilities\\DATALOAD\\" + repository + "\\Holding.xml";
- sql = "InsertHoldingFromXML";
- table = "dbo.HOLDING";
- break;
- }
- case 4:
- {
- xmlFile = installPath + "setup_utilities\\DATALOAD\\" + repository + "\\Orders.xml";
- sql = "InsertOrdersFromXML";
- table = "dbo.ORDERS";
- break;
- }
- }
- SqlConnection conn = new SqlConnection(SQL_CONN);
- conn.Open();
- string configContent = null;
- if (table != null)
- {
- //Need to turn off identities first for certain tables.
- SqlCommand cmd = new SqlCommand("SET IDENTITY_INSERT " + table + " ON");
- cmd.Connection = conn;
- cmd.CommandType = CommandType.Text;
- cmd.ExecuteNonQuery();
- Console.Write(".");
- }
- using (StreamReader sr = new StreamReader(xmlFile))
- {
- configContent = sr.ReadToEnd();
- }
- SqlParameter parmDoc = new SqlParameter("sXML", SqlDbType.NText, 60000000);
- parmDoc.Value = configContent;
- SqlCommand cmd2 = new SqlCommand(sql);
- cmd2.CommandType = CommandType.StoredProcedure;
- cmd2.Connection = conn;
- cmd2.Parameters.Add(parmDoc);
- try
+ sqlConnection.Open();
+
+ foreach (string file in CREATE_PROC_SCRIPTS)
{
- cmd2.ExecuteNonQuery();
+ // Create Store
+ string createCommand = ReadTextFile(Path.Combine(_installPath, file));
+ SqlCommand sqlCommand = new SqlCommand(createCommand, sqlConnection);
+ sqlCommand.ExecuteNonQuery();
Console.Write(".");
}
- catch (Exception e)
- {
- throw new Exception(e.Message);
- }
- if (table != null)
+ }
+ finally
+ {
+ // Close the connection
+ if (sqlConnection.State == ConnectionState.Open)
+ sqlConnection.Close();
+ sqlConnection.Dispose();
+ }
+ }
+
+ /// <summary>
+ /// Loads the StockTraderDB tables with initial data from XML files.
+ /// </summary>
+ ///
+ /// <param name="repository"></param>
+ private void LoadStockTraderDB(string repository)
+ {
+ _connectionString = GetConnectionString(repository);
+ SqlConnection sqlConnection = new SqlConnection(_connectionString);
+ try
+ {
+ sqlConnection.Open();
+
+ foreach (var xmlData in XML_LOAD_DATA)
{
- cmd2 = new SqlCommand("SET IDENTITY_INSERT " + table + " OFF");
- cmd2.Connection = conn;
- cmd2.CommandType = CommandType.Text;
- cmd2.ExecuteNonQuery();
+ SqlCommand identityCommand;
+ if (xmlData.Table != null)
+ {
+ // Need to turn off identities first for certain tables.
+ identityCommand = new SqlCommand("SET IDENTITY_INSERT " + xmlData.Table + " ON", sqlConnection);
+ identityCommand.ExecuteNonQuery();
+ Console.Write(".");
+ }
+
+ // Create the sql parameter with the xml data from the file
+ SqlParameter xmlParameter = new SqlParameter("sXML", SqlDbType.NText, 60000000);
+ xmlParameter.Value = ReadTextFile(Path.Combine(_installPath, xmlData.Filename));
+
+ // execute the load xml Stored Procedure
+ SqlCommand insertProcCommand = new SqlCommand(xmlData.StoredProcName, sqlConnection);
+ insertProcCommand.CommandType = CommandType.StoredProcedure;
+ insertProcCommand.Parameters.Add(xmlParameter);
+ insertProcCommand.ExecuteNonQuery();
Console.Write(".");
+
+ if (xmlData.Table != null)
+ {
+ // reset the identities for certain tables
+ identityCommand = new SqlCommand("SET IDENTITY_INSERT " + xmlData.Table + " OFF", sqlConnection);
+ identityCommand.ExecuteNonQuery();
+ Console.Write(".");
+ }
}
- conn.Close();
}
+ finally
+ {
+ // Close the connection
+ if (sqlConnection.State == ConnectionState.Open)
+ sqlConnection.Close();
+ sqlConnection.Dispose();
+ }
+ }
+
+ /// <summary>
+ /// Creates the tables needed for the database configuration system
+ /// i.e. SERVICE, CLIENTTOBS, BSTOOPS, DBCONFIG
+ /// </summary>
+ /// <param name="installPath"></param>
+ /// <param name="databaseName"></param>
+ private void AddDBConfig(string databaseName)
+ {
+ _connectionString = GetConnectionString(databaseName);
+ SqlConnection sqlConnection = new SqlConnection(_connectionString);
+ try
+ {
+ sqlConnection.Open();
+
+ //creates the necessary tables: CLIENTTOBS, BSTOOPS, SERVICE, DBCONFIG
+ string createCommand = ReadTextFile(Path.Combine(_installPath, TRADEDB_CREATE_DBCONFIG));
+ SqlCommand sqlCommand = new SqlCommand(createCommand, sqlConnection);
+ sqlCommand.ExecuteNonQuery();
+ Console.Write(".");
+
+ //inserts the config info into these tables
+ createCommand = ReadTextFile(Path.Combine(_installPath, TRADEDB_INSERT_DBCONFIG));
+ sqlCommand = new SqlCommand(createCommand, sqlConnection);
+ sqlCommand.ExecuteNonQuery();
+ Console.Write(".");
+ }
+ finally
+ {
+ // Close the connection
+ if (sqlConnection.State == ConnectionState.Open)
+ sqlConnection.Close();
+ sqlConnection.Dispose();
+ }
+ }
+
+ /// <summary>
+ /// Use a StreamReader to return the string value of a text document.
+ /// </summary>
+ /// <param name="filename">The text file to load</param>
+ /// <returns>A string of the contents in the text file</returns>
+ private static string ReadTextFile(string filename)
+ {
+ string fileContents = string.Empty;
+ using (StreamReader file = new StreamReader(filename))
+ {
+ fileContents = file.ReadToEnd();
+ file.Close();
+ }
+ return fileContents;
}
}
}
Modified: incubator/stonehenge/trunk/stocktrader/dotnet/setup_utilities/SetupActions/SetupActions.csproj
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/dotnet/setup_utilities/SetupActions/SetupActions.csproj?rev=799159&r1=799158&r2=799159&view=diff
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/dotnet/setup_utilities/SetupActions/SetupActions.csproj (original)
+++ incubator/stonehenge/trunk/stocktrader/dotnet/setup_utilities/SetupActions/SetupActions.csproj Thu Jul 30 03:26:43 2009
@@ -31,12 +31,6 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
- <Reference Include="Microsoft.SqlServer.ConnectionInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL" />
- <Reference Include="Microsoft.SqlServer.Management.Sdk.Sfc, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
- <SpecificVersion>False</SpecificVersion>
- <HintPath>..\Util\Microsoft.SqlServer.Management.Sdk.Sfc.dll</HintPath>
- </Reference>
- <Reference Include="Microsoft.SqlServer.Smo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL" />
<Reference Include="System" />
<Reference Include="System.configuration" />
<Reference Include="System.Core">
@@ -56,6 +50,7 @@
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SetupAction.cs" />
+ <Compile Include="XmlLoadData.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
Added: incubator/stonehenge/trunk/stocktrader/dotnet/setup_utilities/SetupActions/XmlLoadData.cs
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/dotnet/setup_utilities/SetupActions/XmlLoadData.cs?rev=799159&view=auto
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/dotnet/setup_utilities/SetupActions/XmlLoadData.cs (added)
+++ incubator/stonehenge/trunk/stocktrader/dotnet/setup_utilities/SetupActions/XmlLoadData.cs Thu Jul 30 03:26:43 2009
@@ -0,0 +1,26 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You 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
+//
+// http://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.
+//
+
+namespace SetupActions
+{
+ internal class XmlLoadData
+ {
+ public string Filename { get; set; }
+ public string StoredProcName { get; set; }
+ public string Table { get; set; }
+ }
+}