Skip to content

Commit 10a47ff

Browse files
Fixed #11 - Auto-create Project.Connections and UserSettings.Connections when project is loaded.
1 parent 7cd9d86 commit 10a47ff

File tree

3 files changed

+34
-17
lines changed

3 files changed

+34
-17
lines changed

Source/Core/ProjectSchema/Connection.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public string GetDescription()
6969
const string dataSourceKey = "Data Source";
7070
const string initialCatalogKey = "Initial Catalog";
7171

72-
string[] parts = this.ConnectionString?.Split(';');
72+
string[] parts = this.ConnectionString?.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
7373
Dictionary<string, string> info = parts?.Select(o => o.Split('=')).ToDictionary(o => o[0].Trim(), o => o[1].Trim());
7474
string dataSource = "Unknown";
7575
string initialCatalog = "Unknown";

Source/Core/ProjectSchema/ConnectionInfo.cs

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
using QuantumConcepts.CodeGenerator.Core.Data;
2-
using QuantumConcepts.CodeGenerator.Core.Exceptions;
3-
using QuantumConcepts.Common.Extensions;
4-
using System;
51
using System.Collections.Generic;
6-
using System.Data;
72
using System.Linq;
83
using System.Xml.Serialization;
94

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

32+
public Connection GetConnection()
33+
{
34+
return this.ContainingProject.UserSettings.Connections.SingleOrDefault(o => string.Equals(this.Name, o.Name));
35+
}
36+
3737
public override string ToString()
3838
{
3939
return this.Name;

Source/Core/ProjectSchema/Project.cs

+28-11
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
1+
using QuantumConcepts.CodeGenerator.Core.Utils;
2+
using QuantumConcepts.Common.Extensions;
13
using System;
24
using System.Collections.Generic;
3-
using System.Text;
4-
using System.Xml.Serialization;
5-
using QuantumConcepts.CodeGenerator.Core.Utils;
65
using System.IO;
7-
using System.Xml;
8-
using System.Xml.XPath;
96
using System.Linq;
10-
using QuantumConcepts.Common.Extensions;
7+
using System.Xml;
118
using System.Xml.Linq;
12-
using QuantumConcepts.Common.Utils;
13-
using QuantumConcepts.CodeGenerator.Core.Upgrade;
9+
using System.Xml.Serialization;
1410

1511
namespace QuantumConcepts.CodeGenerator.Core.ProjectSchema
1612
{
@@ -122,6 +118,8 @@ public XDocument GetXDocument(out XmlNamespaceManager nsm)
122118

123119
private void Initialize()
124120
{
121+
EnsureConnectionsExist();
122+
125123
this.UserSettings.JoinToProject(this);
126124
this.Connections.ForEach(o => o.JoinToParent(this));
127125
this.DataTypeMappings.ForEach(o => o.JoinToProject(this));
@@ -131,6 +129,25 @@ private void Initialize()
131129
this.ForeignKeyMappings.ForEach(o => o.JoinToProject(this));
132130
}
133131

132+
private void EnsureConnectionsExist()
133+
{
134+
var connectionNames = this.Connections.Select(o => o.Name).Union(this.UserSettings.Connections.Select(o => o.Name)).Distinct().ToList();
135+
136+
this.Connections.AddRange((from name in connectionNames
137+
where !this.Connections.Any(o => string.Equals(o.Name, name))
138+
select new ConnectionInfo
139+
{
140+
Name = name
141+
}));
142+
143+
this.UserSettings.Connections.AddRange((from name in connectionNames
144+
where !this.UserSettings.Connections.Any(o => string.Equals(o.Name, name))
145+
select new Connection
146+
{
147+
Name = name
148+
}));
149+
}
150+
134151
public DataTypeMapping FindDataTypeMapping(string databaseDataType)
135152
{
136153
return this.DataTypeMappings.SingleOrDefault(o => o.DatabaseDataType.EqualsIgnoreCase(databaseDataType));
@@ -140,7 +157,7 @@ public TableMapping FindTableMapping(string connectionName, string schemaName, s
140157
{
141158
return this.TableMappings.SingleOrDefault(o =>
142159
o.ConnectionName.EqualsIgnoreCase(connectionName)
143-
&& o.SchemaName.EqualsIgnoreCase(schemaName)
160+
&& o.SchemaName.EqualsIgnoreCase(schemaName)
144161
&& o.TableName.EqualsIgnoreCase(name));
145162
}
146163

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

152169
public ViewMapping FindViewMapping(string connectionName, string schemaName, string name)
153170
{
154-
return this.ViewMappings.SingleOrDefault(o =>
171+
return this.ViewMappings.SingleOrDefault(o =>
155172
o.ConnectionName.EqualsIgnoreCase(connectionName)
156-
&& o.SchemaName.EqualsIgnoreCase(schemaName)
173+
&& o.SchemaName.EqualsIgnoreCase(schemaName)
157174
&& o.TableName.EqualsIgnoreCase(name));
158175
}
159176

0 commit comments

Comments
 (0)