Exemplo n.º 1
0
        /// <summary>
        ///     Gets the tenants.
        /// </summary>
        /// <returns></returns>
        public static IEnumerable <Tenant> GetTenants( )
        {
            if (_tenants == null)
            {
                lock ( SyncRoot )
                {
                    if (_tenants == null)
                    {
                        var tenants = new List <Tenant>( );

                        var databaseInfo = new SqlDatabaseInfo(Config.ServerName, Config.DatabaseName, DatabaseAuthentication.Integrated, null, 60, 30, 300);

                        /////
                        // Set the base properties
                        /////

                        using (DatabaseContext context = DatabaseContext.GetContext(databaseInfo: databaseInfo))
                        {
                            using (IDbCommand command = context.CreateCommand( ))
                            {
                                command.CommandText = @"
DECLARE @name BIGINT = dbo.fnAliasNsId( 'name', 'core', 0 )
DECLARE @isOfType BIGINT = dbo.fnAliasNsId( 'isOfType', 'core', 0 )
DECLARE @tenant BIGINT = dbo.fnAliasNsId( 'tenant', 'core', 0 )

SELECT
	EntityId = n.EntityId, Name = n.Data
FROM
	Relationship r
JOIN
	Data_NVarChar n ON
		n.TenantId = r.TenantId AND
		r.FromId = n.EntityId AND
		n.FieldId = @name
WHERE
	r.TypeId = @isOfType AND
	r.ToId = @tenant AND
	r.TenantId = 0"    ;

                                using (IDataReader reader = command.ExecuteReader( ))
                                {
                                    while (reader.Read( ))
                                    {
                                        tenants.Add(new Tenant
                                        {
                                            EntityId = reader.GetInt64(0),
                                            Name     = reader.GetString(1)
                                        });
                                    }
                                }
                            }
                        }

                        return(_tenants = tenants);
                    }
                }
            }

            return(_tenants);
        }
Exemplo n.º 2
0
        public void DatabaseExists_ValidLocalDatabase_ReturnsTrue( )
        {
            var databaseInfo = new SqlDatabaseInfo("localhost", "master", DatabaseAuthentication.Integrated);

            Assert.IsTrue(DatabaseHelper.DatabaseExists(databaseInfo, "master"));

            DatabaseHelper.GetDatabases(databaseInfo);

            DatabaseHelper.GetDatabaseVersion(databaseInfo);
            DatabaseHelper.GetDatabasePath(databaseInfo, "master");
        }
Exemplo n.º 3
0
        public void GetConnectionString_BasicIntegratedAuthenticationTemplate_ReturnsCorrectConnectionString( )
        {
            var databaseInfo = new SqlDatabaseInfo("LocalServer", "Northwind", DatabaseAuthentication.Integrated, null, 60, 30, 60, 50);

            string connectionString = databaseInfo.ConnectionString;

            Assert.IsTrue(connectionString.Contains("Data Source=LocalServer"));
            Assert.IsTrue(connectionString.Contains("Initial Catalog=Northwind"));
            Assert.IsTrue(connectionString.Contains("Integrated Security=True"));
            Assert.IsTrue(connectionString.Contains("Connect Timeout=60"));
            Assert.IsTrue(connectionString.Contains("Max Pool Size=50"));
        }
Exemplo n.º 4
0
        /// <summary>
        ///     Converts database information from one object format to another.
        /// </summary>
        /// <param name="element">
        ///     The database configuration settings to convert.
        /// </param>
        /// <returns>
        ///     An object representing database information.
        /// </returns>
        public static DatabaseInfo Convert(DatabaseSettings element)
        {
            if (element == null)
            {
                throw new ArgumentNullException("element");
            }

            DatabaseInfo databaseInfo;

            databaseInfo = new SqlDatabaseInfo(element.Server, element.Database, element.Authentication, element.Authentication == DatabaseAuthentication.Database ? new NetworkCredential(element.Username, element.Password) : null, element.ConnectionTimeout, element.CommandTimeout, element.TransactionTimeout, element.MaxPoolSize);

            return(databaseInfo);
        }
Exemplo n.º 5
0
        public void GetConnectionString_BasicDatabaseAuthenticationTemplate_ReturnsCorrectConnectionString( )
        {
            var databaseInfo = new SqlDatabaseInfo("LocalServer", "Northwind", DatabaseAuthentication.Database, new NetworkCredential("username", "password", "domain"), 60, 30, 60);

            string connectionString = databaseInfo.ConnectionString;

            Assert.IsTrue(connectionString.Contains("Data Source=LocalServer"));
            Assert.IsTrue(connectionString.Contains("Initial Catalog=Northwind"));
            Assert.IsTrue(connectionString.Contains("User ID=domain\\username"));
            Assert.IsTrue(connectionString.Contains("Password=password"));
            Assert.IsTrue(connectionString.Contains("Connect Timeout=60"));
            Assert.IsTrue(connectionString.Contains("Max Pool Size=200"));
        }
Exemplo n.º 6
0
        public void GetConnectionString_ModifyServer_ReturnsCorrectConnectionString( )
        {
            var databaseInfo = new SqlDatabaseInfo("Server1", "Northwind", DatabaseAuthentication.Integrated, null, 60, 30, 60);

            string connectionString = databaseInfo.ConnectionString;

            Assert.IsTrue(connectionString.Contains("Data Source=Server1"));

            // Update the base properties
            databaseInfo = new SqlDatabaseInfo("Server2", databaseInfo.Database, databaseInfo.Authentication, databaseInfo.Credentials, databaseInfo.ConnectionTimeout, databaseInfo.CommandTimeout, databaseInfo.TransactionTimeout);

            connectionString = databaseInfo.ConnectionString;
            Assert.IsTrue(connectionString.Contains("Data Source=Server2"));
        }
Exemplo n.º 7
0
        public void GetConnectionString_ModifyDatabase_ReturnsCorrectConnectionString( )
        {
            // Set the base properties
            var databaseInfo = new SqlDatabaseInfo("LocalServer", "Database1", DatabaseAuthentication.Integrated, null, 60, 30, 60);

            string connectionString = databaseInfo.ConnectionString;

            Assert.IsTrue(connectionString.Contains("Initial Catalog=Database1"));

            // Update the base properties
            databaseInfo = new SqlDatabaseInfo(databaseInfo.Server, "Database2", databaseInfo.Authentication, databaseInfo.Credentials, databaseInfo.ConnectionTimeout, databaseInfo.CommandTimeout, databaseInfo.TransactionTimeout);

            connectionString = databaseInfo.ConnectionString;
            Assert.IsTrue(connectionString.Contains("Initial Catalog=Database2"));
        }
Exemplo n.º 8
0
        public SqlDatabaseInfoModel(SqlDatabaseInfo info)
            : this()
        {
            Name           = info.Name;
            InstanceName   = info.InstanceName;
            IsSystemObject = info.IsSystemObject;
            if (!info.LastBackupDate.Equals(new DateTime()))
            {
                LastBackupDate = info.LastBackupDate;
            }

            SizeInBytes           = info.SizeInMB * 1024 * 1024;
            Size                  = SizeInBytes.ToPrettySize(2);
            SpaceAvailableInBytes = info.SpaceAvailableInKB * 1024;
            SpaceAvailable        = SpaceAvailableInBytes.ToPrettySize(2);
        }
Exemplo n.º 9
0
        public void GetConnectionString_ModifyAuthentication_ReturnsCorrectConnectionString( )
        {
            // Set the base properties
            var databaseInfo = new SqlDatabaseInfo("LocalServer", "Northwind", DatabaseAuthentication.Integrated, null, 60, 30, 60);

            string connectionString = databaseInfo.ConnectionString;

            Assert.IsTrue(connectionString.Contains("Integrated Security=True"));

            // Update the base properties
            databaseInfo = new SqlDatabaseInfo(databaseInfo.Server, databaseInfo.Database, DatabaseAuthentication.Database, new NetworkCredential("username", "password", "domain"), databaseInfo.ConnectionTimeout, databaseInfo.CommandTimeout, databaseInfo.TransactionTimeout);

            connectionString = databaseInfo.ConnectionString;
            Assert.IsTrue(connectionString.Contains("Initial Catalog=Northwind"));
            Assert.IsTrue(connectionString.Contains("User ID=domain\\username"));
        }
Exemplo n.º 10
0
        /// <summary>
        ///     Gets the version string.
        /// </summary>
        /// <returns></returns>
        public string GetVersionString( )
        {
            /////
            // Set the base properties
            /////
            var databaseInfo = new SqlDatabaseInfo(Config.ServerName, Config.DatabaseName, DatabaseAuthentication.Integrated, null, 60, 30, 300);

            using (DatabaseContext ctx = DatabaseContext.GetContext(databaseInfo: databaseInfo))
            {
                using (IDbCommand command = ctx.CreateCommand( ))
                {
                    command.CommandText = @"
SELECT
	v.Data
FROM
	AppData_NVarChar v
JOIN
	AppData_Alias a ON a.EntityUid = v.FieldUid
	AND
		a.Data = 'solutionVersionString'
	AND
		a.Namespace = 'core'
	AND
		a.AliasMarkerId = 0
WHERE
	v.EntityUid = @entityUid"    ;

                    ctx.AddParameter(command, "@entityUid", DbType.Guid, ApplicationId);

                    object val = command.ExecuteScalar( );

                    if (val == null || val == DBNull.Value)
                    {
                        return(string.Empty);
                    }

                    return(( string )val);
                }
            }
        }
Exemplo n.º 11
0
        /// <summary>
        ///     Gets the applications.
        /// </summary>
        /// <returns></returns>
        public static IEnumerable <Application> GetApplications( )
        {
            var applications = new List <Application>( );

            /////
            // Set the base properties
            /////
            var databaseInfo = new SqlDatabaseInfo(Config.ServerName, Config.DatabaseName, DatabaseAuthentication.Integrated, null, 60, 30, 300);

            using (DatabaseContext ctx = DatabaseContext.GetContext(databaseInfo: databaseInfo))
            {
                using (IDbCommand command = ctx.CreateCommand( ))
                {
                    command.CommandText = @"
SELECT
	SolutionEntityId = r.FromId,
	SolutionName = n.Data,
	SolutionDescription = d.Data,
	Publisher = p.Data,
	PublisherUrl = u.Data,
	ReleaseDate = c.Data,
	ApplicationId = g.Data
FROM
	Relationship r
JOIN
	Data_Alias aty ON
		aty.TenantId = r.TenantId AND
		r.TypeId = aty.EntityId AND
		aty.Data = 'isOfType' AND
		aty.Namespace = 'core'
JOIN
	Data_Alias ato ON
		ato.TenantId = r.TenantId AND
		r.ToId = ato.EntityId AND
		ato.Data = 'app' AND
		ato.Namespace = 'core'
JOIN
	Data_Guid g ON
		g.TenantId = r.TenantId AND
		r.FromId = g.EntityId
JOIN
	Data_Alias ag ON
		ag.TenantId = g.TenantId AND
		g.FieldId = ag.EntityId AND
		ag.Data = 'applicationId' AND
		ag.Namespace = 'core'
JOIN
(
	SELECT
		n.EntityId,
		n.TenantId,
		n.Data
	FROM
		Data_NVarChar n
	JOIN
		Data_Alias an ON
			n.TenantId = an.TenantId AND
			n.FieldId = an.EntityId AND
			an.Data = 'name' AND
			an.Namespace = 'core'
	WHERE
		n.TenantId = 0
) n ON
	n.TenantId = r.TenantId AND
	r.FromId = n.EntityId
LEFT JOIN
(
	SELECT
		d.EntityId,
		d.TenantId,
		d.Data
	FROM
		Data_NVarChar d
	JOIN
		Data_Alias ad ON
			d.TenantId = ad.TenantId AND
			d.FieldId = ad.EntityId AND
			ad.Data = 'description' AND
			ad.Namespace = 'core'
	WHERE
		d.TenantId = 0
) d ON
	d.TenantId = r.TenantId AND
	r.FromId = d.EntityId
LEFT JOIN
(
	SELECT
		p.EntityId,
		p.TenantId,
		p.Data
	FROM
		Data_NVarChar p
	JOIN
		Data_Alias ap ON
			p.TenantId = ap.TenantId AND
			p.FieldId = ap.EntityId AND
			ap.Data = 'publisher' AND
			ap.Namespace = 'core'
) p ON
	p.TenantId = r.TenantId AND
	r.FromId = p.EntityId
LEFT JOIN
(
	SELECT
		u.EntityId,
		u.TenantId,
		u.Data
	FROM
		Data_NVarChar u
	JOIN
		Data_Alias au ON
			u.TenantId = au.TenantId AND
			u.FieldId = au.EntityId AND
			au.Data = 'publisherUrl' AND
			au.Namespace = 'core'
	WHERE
		u.TenantId = 0
) u ON
	u.TenantId = r.TenantId AND
	r.FromId = u.EntityId
LEFT JOIN
(
	SELECT
		c.EntityId,
		c.TenantId,
		c.Data
	FROM
		Data_DateTime c
	JOIN
		Data_Alias ac ON
		c.TenantId = ac.TenantId AND
			c.FieldId = ac.EntityId AND
			ac.Data = 'releaseDate' AND
			ac.Namespace = 'core'
	WHERE
		c.TenantId = 0
) c ON
	c.TenantId = r.TenantId AND
	r.FromId = c.EntityId
WHERE
	r.TenantId = 0"    ;

                    using (IDataReader reader = command.ExecuteReader( ))
                    {
                        while (reader.Read( ))
                        {
                            var app = new Application
                            {
                                SolutionEntityId = reader.GetInt64(0),
                                Name             = reader.GetString(1),
                                Description      = reader.GetString(2, null),
                                Publisher        = reader.GetString(3, null),
                                PublisherUrl     = reader.GetString(4, null),
                                ReleaseDate      = reader.GetDateTime(5, DateTime.MinValue),
                                ApplicationId    = reader.GetGuid(6)
                            };

                            applications.Add(app);
                        }
                    }
                }
            }

            return(applications);
        }
Exemplo n.º 12
0
        /// <summary>
        ///     Gets the applications.
        /// </summary>
        /// <returns></returns>
        public static IEnumerable <Package> GetPackages(Guid appId)
        {
            var packages = new List <Package>( );

            var databaseInfo = new SqlDatabaseInfo(Config.ServerName, Config.DatabaseName, DatabaseAuthentication.Integrated, null, 60, 30, 300);

            /////
            // Set the base properties
            /////

            using (DatabaseContext ctx = DatabaseContext.GetContext(databaseInfo: databaseInfo))
            {
                using (IDbCommand command = ctx.CreateCommand( ))
                {
                    command.CommandText = @"
SELECT
	PackageId = ar.FromId,
	PackageName = n.Data,
	PackageDescription = d.Data,
	PackageVersion = v.Data,
	AppVerId = g.Data,
	PublishDate = dt.Data
FROM
	dbgData_Guid eg
JOIN
	Relationship ar ON
		eg.EntityId = ar.ToId AND
		eg.Data = @appId AND
		eg.TenantId = 0
JOIN
	Data_Alias aeg ON
		eg.TenantId = eg.TenantId AND
		eg.FieldId = aeg.EntityId AND
		aeg.Data = 'applicationId' AND
		aeg.Namespace = 'core'
JOIN
	Data_Alias a ON
		a.TenantId = ar.TenantId AND
		ar.TypeId = a.EntityId AND
		a.Data = 'packageForApplication' AND
		a.Namespace = 'core'
JOIN
	Data_Guid g ON
		g.TenantId = ar.TenantId AND
		ar.FromId = g.EntityId
JOIN
	Data_Alias ga ON
		ga.TenantId = g.TenantId AND
		g.FieldId = ga.EntityId AND
		ga.Data = 'appVerId' AND
		ga.Namespace = 'core'
LEFT JOIN
(
	SELECT
		n.EntityId,
		n.TenantId,
		n.Data
	FROM
		Data_NVarChar n
	JOIN
		Data_Alias a ON
			a.TenantId = n.TenantId AND
			n.FieldId = a.EntityId AND
			a.Data = 'name' AND
			a.Namespace = 'core'
	WHERE
		n.TenantId = 0
) n ON
	n.TenantId = ar.TenantId AND
	ar.FromId = n.EntityId
LEFT JOIN
(
	SELECT
		d.EntityId,
		d.TenantId,
		d.Data
	FROM
		Data_NVarChar d
	JOIN
		Data_Alias a ON
			d.TenantId = a.TenantId AND
			d.FieldId = a.EntityId AND
			a.Data = 'description' AND
			a.Namespace = 'core'
	WHERE
		d.TenantId = 0
) d ON
	d.TenantId = ar.TenantId AND
	ar.FromId = d.EntityId
LEFT JOIN
(
	SELECT
		v.EntityId,
		v.TenantId,
		v.Data
	FROM
		Data_NVarChar v
	JOIN
		Data_Alias a ON
			v.TenantId = a.TenantId AND
			v.FieldId = a.EntityId AND
			a.Data = 'appVersionString' AND
			a.Namespace = 'core'
	WHERE
		v.TenantId = 0
) v ON
	v.TenantId = ar.TenantId AND
	ar.FromId = v.EntityId
LEFT JOIN
(
	SELECT
		dt.EntityId,
		dt.TenantId,
		dt.Data
	FROM
		Data_DateTime dt
	JOIN
		Data_Alias adt ON
			dt.TenantId = adt.TenantId AND
			dt.FieldId = adt.EntityId AND
			adt.Data = 'publishDate' AND
			adt.Namespace = 'core'
	WHERE
		dt.TenantId = 0
) dt ON
	dt.TenantId = ar.TenantId AND
	ar.FromId = dt.EntityId
WHERE
	eg.TenantId = 0
ORDER BY
	v.Data"    ;

                    ctx.AddParameter(command, "@appId", DbType.Guid, appId);

                    using (IDataReader reader = command.ExecuteReader( ))
                    {
                        while (reader.Read( ))
                        {
                            var package = new Package
                            {
                                Id          = reader.GetInt64(0),
                                Name        = reader.GetString(1),
                                Description = reader.GetString(2, null),
                                Version     = reader.GetString(3, null),
                                AppVerId    = reader.GetGuid(4),
                                ReleaseDate = reader.GetDateTime(5, DateTime.MinValue)
                            };

                            packages.Add(package);
                        }
                    }
                }
            }

            return(packages);
        }
Exemplo n.º 13
0
        /// <summary>
        ///     Gets the package.
        /// </summary>
        /// <param name="appVerId">The app version id.</param>
        /// <returns></returns>
        public static Package GetPackage(Guid appVerId)
        {
            var databaseInfo = new SqlDatabaseInfo(Config.ServerName, Config.DatabaseName, DatabaseAuthentication.Integrated, null, 60, 30, 300);

            /////
            // Set the base properties
            /////

            using (DatabaseContext ctx = DatabaseContext.GetContext(databaseInfo: databaseInfo))
            {
                using (IDbCommand command = ctx.CreateCommand( ))
                {
                    command.CommandText = @"
SELECT
	PackageId = g.EntityId,
	PackageName = n.Data,
	PackageDescritpion = d.Data,
	PackageVersion = v.Data,
	AppVerId = @appVerId,
	PublishDate = dt.Data
FROM
	Data_Guid g
JOIN
	Data_NVarChar n ON
		g.TenantId = n.TenantId AND
		g.EntityId = n.EntityId
JOIN
	Data_Alias a ON
		a.TenantId = n.TenantId AND
		n.FieldId = a.EntityId AND
		a.Data = 'name' AND
		a.Namespace = 'core'
JOIN
	Data_NVarChar d ON
		d.TenantId = g.TenantId AND
		g.EntityId = d.EntityId
JOIN
	Data_Alias ad ON
		ad.TenantId = d.TenantId AND
		d.FieldId = ad.EntityId AND
		ad.Data = 'description' AND
		ad.Namespace = 'core'
JOIN
	Data_NVarChar v ON
		v.TenantId = g.TenantId AND
		g.EntityId = v.EntityId
JOIN
	Data_Alias av ON
		av.TenantId = v.TenantId AND
		v.FieldId = av.EntityId AND
		av.Data = 'appVersionString' AND
		av.Namespace = 'core'
LEFT JOIN
(
	SELECT
		dt.EntityId,
		dt.TenantId,
		dt.Data
	FROM
		Data_DateTime dt
	JOIN
		Data_Alias adt ON
			dt.FieldId = adt.EntityId AND
			adt.Data = 'publishDate' AND
			adt.Namespace = 'core'
	WHERE
		dt.TenantId = 0
) dt ON
	dt.TenantId = g.TenantId AND
	g.EntityId = dt.EntityId
WHERE
	g.Data = @appVerId AND
	g.TenantId = 0"    ;

                    ctx.AddParameter(command, "@appVerId", DbType.Guid, appVerId);

                    using (IDataReader reader = command.ExecuteReader( ))
                    {
                        if (reader.Read( ))
                        {
                            return(new Package
                            {
                                Id = reader.GetInt64(0),
                                Name = reader.GetString(1),
                                Description = reader.GetString(2, null),
                                Version = reader.GetString(3, null),
                                AppVerId = reader.GetGuid(4),
                                ReleaseDate = reader.GetDateTime(5, DateTime.MinValue)
                            });
                        }
                    }
                }
            }

            return(null);
        }
Exemplo n.º 14
0
        public void DatabaseExists_InvalidLocalDatabase_ReturnsFalse( )
        {
            var databaseInfo = new SqlDatabaseInfo("localhost", "master", DatabaseAuthentication.Integrated, null);

            Assert.IsFalse(DatabaseHelper.DatabaseExists(databaseInfo, Guid.NewGuid( ).ToString("B")));
        }
Exemplo n.º 15
0
        /// <summary>
        ///     Gets the tenant activated packages.
        /// </summary>
        /// <returns></returns>
        public static IEnumerable <TenantActivatedPackage> GetTenantActivatedPackages( )
        {
            var activations = new List <TenantActivatedPackage>( );

            var databaseInfo = new SqlDatabaseInfo(Config.ServerName, Config.DatabaseName, DatabaseAuthentication.Integrated, null, 60, 30, 300);

            /////
            // Set the base properties
            /////

            using (DatabaseContext context = DatabaseContext.GetContext(databaseInfo: databaseInfo))
            {
                using (IDbCommand command = context.CreateCommand( ))
                {
                    command.CommandText = @"
SELECT
	Tenant = r.TenantId,
	PackageId = pid.Data
FROM
	Relationship r
JOIN
	Data_Alias a1 ON
		r.TypeId = a1.EntityId AND
		a1.Data = 'isOfType' AND
		a1.Namespace = 'core' AND
		r.TenantId = a1.TenantId
JOIN
	Data_Alias a2 ON
		r.ToId = a2.EntityId AND
		a2.Data = 'solution' AND
		a2.Namespace = 'core' AND
		r.TenantId = a2.TenantId
JOIN
	Data_Guid pid ON
		pid.TenantId = r.TenantId AND
		r.FromId = pid.EntityId
JOIN
	Data_Alias a3 ON
		pid.FieldId = a3.EntityId AND
		a3.Data = 'packageId' AND
		a3.Namespace = 'core' AND
		pid.TenantId = a3.TenantId
WHERE
	r.TenantId <> 0"    ;

                    using (IDataReader reader = command.ExecuteReader( ))
                    {
                        while (reader.Read( ))
                        {
                            activations.Add(new TenantActivatedPackage
                            {
                                AppVerId = reader.GetGuid(1),
                                TenantId = reader.GetInt64(0)
                            });
                        }
                    }
                }
            }

            return(activations);
        }