-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathConnectionStringsStorage.vb
More file actions
87 lines (77 loc) · 4.62 KB
/
ConnectionStringsStorage.vb
File metadata and controls
87 lines (77 loc) · 4.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
Imports Microsoft.VisualBasic
Imports DevExpress.DashboardCommon
Imports DevExpress.DashboardWeb
Imports DevExpress.DataAccess.ConnectionParameters
Imports DevExpress.DataAccess.Json
Imports DevExpress.DataAccess.Web
Imports System
Imports System.Collections.Generic
Imports System.Configuration
Imports System.Data
Imports System.Data.Entity
Imports System.Linq
Namespace DXWebApplication26
Public Class ConnectionStringsStorage
Implements IDataSourceWizardConnectionStringsStorage
Private Shared storage_Renamed As Dictionary(Of String, DataConnectionParametersBase)
Private connectionString As String
Private Shared ReadOnly Property Storage() As Dictionary(Of String, DataConnectionParametersBase)
Get
If storage_Renamed Is Nothing Then
storage_Renamed = New Dictionary(Of String, DataConnectionParametersBase)()
End If
Return storage_Renamed
End Get
End Property
Public Sub New(ByVal connectionString As String)
storage_Renamed = CreateNewStorage()
Me.connectionString = connectionString
End Sub
Private Function CreateNewStorage() As Dictionary(Of String, DataConnectionParametersBase)
Dim dictionary = New Dictionary(Of String, DataConnectionParametersBase)()
' Load existing SQL Connection Strings from Web.config
For Each connectionStringSettings As ConnectionStringSettings In ConfigurationManager.ConnectionStrings
dictionary.Add(connectionStringSettings.Name, New CustomStringConnectionParameters(connectionStringSettings.ConnectionString))
Next connectionStringSettings
' Add predefined JSON connections
Dim jsonConnectionParams = New JsonSourceConnectionParameters()
jsonConnectionParams.JsonSource = New UriJsonSource(New Uri("https://raw.githubusercontent.com/DevExpress-Examples/DataSources/master/JSON/customers.json"))
dictionary.Add("Customers_JSON", jsonConnectionParams)
' Load JSON connections from a DB
Dim context As New JsonConnectionContext()
context.Connections.ToList().ForEach(Sub(c)
If ((Not dictionary.ContainsKey(c.Name))) Then
dictionary.Add(c.Name, New CustomStringConnectionParameters(c.ConnectionString))
Else
dictionary(c.Name) = New CustomStringConnectionParameters(c.ConnectionString)
End If
End Sub)
Return dictionary
End Function
Private Function GetConnectionDescriptions() As Dictionary(Of String, String) Implements IDataSourceWizardConnectionStringsProvider.GetConnectionDescriptions
Return Storage.Keys.ToDictionary(Function(key) key, Function(value) value)
End Function
Private Function GetDataConnectionParameters(ByVal name As String) As DataConnectionParametersBase Implements IDataSourceWizardConnectionStringsProvider.GetDataConnectionParameters
Return Storage(name)
End Function
' Save JSON connections to a DB
Private Sub SaveDataConnectionParameters(ByVal name As String, ByVal connectionParameters As DataConnectionParametersBase, ByVal saveCredentials As Boolean) Implements IDataSourceWizardConnectionStringsStorage.SaveDataConnectionParameters
Dim jsonParams As JsonSourceConnectionParameters = TryCast(connectionParameters, JsonSourceConnectionParameters)
If jsonParams IsNot Nothing Then
Dim context As New JsonConnectionContext()
Dim dataConnection As New JsonDataConnection(jsonParams.JsonSource)
Dim existingConnection = context.Connections.Where(Function(c) c.Name = name).FirstOrDefault()
If existingConnection Is Nothing Then
Dim jsonConnection As New MyJsonConnection()
jsonConnection.Name = name
jsonConnection.ConnectionString = dataConnection.CreateConnectionString()
context.Connections.Add(jsonConnection)
Else
existingConnection.ConnectionString = dataConnection.CreateConnectionString()
End If
context.SaveChanges()
Storage(name) = New CustomStringConnectionParameters(connectionString)
End If
End Sub
End Class
End Namespace