Skip to content

Commit

Permalink
Fixed #11 - Auto-create Project.Connections and UserSettings.Connecti…
Browse files Browse the repository at this point in the history
…ons when project is loaded.
  • Loading branch information
JoshMcCullough committed Mar 2, 2016
1 parent 7cd9d86 commit 10a47ff
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 17 deletions.
2 changes: 1 addition & 1 deletion Source/Core/ProjectSchema/Connection.cs
Expand Up @@ -69,7 +69,7 @@ public string GetDescription()
const string dataSourceKey = "Data Source";
const string initialCatalogKey = "Initial Catalog";

string[] parts = this.ConnectionString?.Split(';');
string[] parts = this.ConnectionString?.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
Dictionary<string, string> info = parts?.Select(o => o.Split('=')).ToDictionary(o => o[0].Trim(), o => o[1].Trim());
string dataSource = "Unknown";
string initialCatalog = "Unknown";
Expand Down
10 changes: 5 additions & 5 deletions Source/Core/ProjectSchema/ConnectionInfo.cs
@@ -1,9 +1,4 @@
using QuantumConcepts.CodeGenerator.Core.Data;
using QuantumConcepts.CodeGenerator.Core.Exceptions;
using QuantumConcepts.Common.Extensions;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Xml.Serialization;

Expand Down Expand Up @@ -34,6 +29,11 @@ public void JoinToParent(Project project)
this.Attributes.ForEach(o => o.JoinToParent(this));
}

public Connection GetConnection()
{
return this.ContainingProject.UserSettings.Connections.SingleOrDefault(o => string.Equals(this.Name, o.Name));
}

public override string ToString()
{
return this.Name;
Expand Down
39 changes: 28 additions & 11 deletions Source/Core/ProjectSchema/Project.cs
@@ -1,16 +1,12 @@
using QuantumConcepts.CodeGenerator.Core.Utils;
using QuantumConcepts.Common.Extensions;
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml.Serialization;
using QuantumConcepts.CodeGenerator.Core.Utils;
using System.IO;
using System.Xml;
using System.Xml.XPath;
using System.Linq;
using QuantumConcepts.Common.Extensions;
using System.Xml;
using System.Xml.Linq;
using QuantumConcepts.Common.Utils;
using QuantumConcepts.CodeGenerator.Core.Upgrade;
using System.Xml.Serialization;

namespace QuantumConcepts.CodeGenerator.Core.ProjectSchema
{
Expand Down Expand Up @@ -122,6 +118,8 @@ public XDocument GetXDocument(out XmlNamespaceManager nsm)

private void Initialize()
{
EnsureConnectionsExist();

this.UserSettings.JoinToProject(this);
this.Connections.ForEach(o => o.JoinToParent(this));
this.DataTypeMappings.ForEach(o => o.JoinToProject(this));
Expand All @@ -131,6 +129,25 @@ private void Initialize()
this.ForeignKeyMappings.ForEach(o => o.JoinToProject(this));
}

private void EnsureConnectionsExist()
{
var connectionNames = this.Connections.Select(o => o.Name).Union(this.UserSettings.Connections.Select(o => o.Name)).Distinct().ToList();

this.Connections.AddRange((from name in connectionNames
where !this.Connections.Any(o => string.Equals(o.Name, name))
select new ConnectionInfo
{
Name = name
}));

this.UserSettings.Connections.AddRange((from name in connectionNames
where !this.UserSettings.Connections.Any(o => string.Equals(o.Name, name))
select new Connection
{
Name = name
}));
}

public DataTypeMapping FindDataTypeMapping(string databaseDataType)
{
return this.DataTypeMappings.SingleOrDefault(o => o.DatabaseDataType.EqualsIgnoreCase(databaseDataType));
Expand All @@ -140,7 +157,7 @@ public TableMapping FindTableMapping(string connectionName, string schemaName, s
{
return this.TableMappings.SingleOrDefault(o =>
o.ConnectionName.EqualsIgnoreCase(connectionName)
&& o.SchemaName.EqualsIgnoreCase(schemaName)
&& o.SchemaName.EqualsIgnoreCase(schemaName)
&& o.TableName.EqualsIgnoreCase(name));
}

Expand All @@ -151,9 +168,9 @@ public Template FindTemplate(string xsltAbsolutePath)

public ViewMapping FindViewMapping(string connectionName, string schemaName, string name)
{
return this.ViewMappings.SingleOrDefault(o =>
return this.ViewMappings.SingleOrDefault(o =>
o.ConnectionName.EqualsIgnoreCase(connectionName)
&& o.SchemaName.EqualsIgnoreCase(schemaName)
&& o.SchemaName.EqualsIgnoreCase(schemaName)
&& o.TableName.EqualsIgnoreCase(name));
}

Expand Down

0 comments on commit 10a47ff

Please sign in to comment.