-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathModDatabase.vb
More file actions
339 lines (206 loc) · 11.7 KB
/
ModDatabase.vb
File metadata and controls
339 lines (206 loc) · 11.7 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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
Imports System.Data
Imports System.IO
Imports ClosedXML.Excel
Imports DocumentFormat.OpenXml.Spreadsheet
Module ModDatabase
Public Sub SubCreateDatabase(StrInputSpreadsheet As String)
Dim SQLquery As New SQLite.SQLiteCommand()
SQLquery.Connection = ConSQLite
'================================
'Create the tables
'================================
SQLquery.CommandText = "CREATE TABLE tbl_Core (Id INTEGER PRIMARY KEY ASC, fld_Name TEXT, fld_Type TEXT, fld_Abstract BOOL DEFAULT FALSE, fld_Nillable BOOL DEFAULT FALSE, fld_SubstitutionGroup TEXT, fld_PeriodType TEXT)"
SQLquery.ExecuteNonQuery()
SQLquery.CommandText = "CREATE TABLE tbl_Linkroles (Id INTEGER PRIMARY KEY ASC, fld_Id TEXT, fld_Definition TEXT, fld_UsedOn TEXT)"
SQLquery.ExecuteNonQuery()
SQLquery.CommandText = "CREATE TABLE tbl_Labels (Id INTEGER PRIMARY KEY ASC, fld_Name TEXT, fld_Language TEXT, fld_Role TEXT, fld_ArcRole TEXT, fld_Label TEXT)"
SQLquery.ExecuteNonQuery()
SQLquery.CommandText = "CREATE TABLE tbl_References (Id INTEGER PRIMARY KEY ASC, fld_Name TEXT, fld_Role TEXT, fld_ArcRole TEXT, fld_RefChapter TEXT, fld_RefName TEXT, fld_RefParagraph TEXT, fld_RefPublisher TEXT)"
SQLquery.ExecuteNonQuery()
SQLquery.CommandText = "CREATE TABLE tbl_Presentation (Id INTEGER PRIMARY KEY ASC, fld_Name TEXT, fld_ItemID INTEGER DEFAULT 0, fld_ParentID INTEGER DEFAULT 0, fld_Parent TEXT, fld_Order INTEGER DEFAULT 0, fld_Linkrole TEXT, fld_PresentationDescription TEXT)"
SQLquery.ExecuteNonQuery()
SQLquery.CommandText = "CREATE TABLE tbl_Definition (Id INTEGER PRIMARY KEY ASC, fld_Name TEXT, fld_ItemID INTEGER DEFAULT 0, fld_ParentID INTEGER DEFAULT 0, fld_Parent TEXT, fld_Arcrole TEXT, fld_ContextElement TEXT, fld_Closed TEXT, fld_Order INTEGER DEFAULT 0, fld_Linkrole TEXT)"
SQLquery.ExecuteNonQuery()
SQLquery.CommandText = "CREATE TABLE tbl_Entrypoints (Id INTEGER PRIMARY KEY ASC, fld_Name TEXT, fld_Description TEXT, fld_Version TEXT, fld_languages TEXT , fld_Prefix TEXT)"
SQLquery.ExecuteNonQuery()
'================================
'Import worksheet Core from spreadsheet to tbl_Core
'================================
Dim strSQL As String = "SELECT * FROM tbl_Core"
Dim da As SQLite.SQLiteDataAdapter
Dim ds As New DataSet
Dim dsNewRow As DataRow
da = New SQLite.SQLiteDataAdapter(strSQL, ConSQLite)
Dim cb As New SQLite.SQLiteCommandBuilder(da)
da.Fill(ds, "dsCore")
Using Workbook As XLWorkbook = New XLWorkbook(StrInputSpreadsheet)
' Get worksheet Core
Dim Worksheet As IXLWorksheet = Workbook.Worksheet("Core")
' Collect data starting at row 2
For Each row As IXLRow In Worksheet.RowsUsed.Skip(1)
dsNewRow = ds.Tables("dsCore").NewRow
dsNewRow.Item("fld_Name") = row.Cell(1).Value
dsNewRow.Item("fld_Type") = row.Cell(2).Value
dsNewRow.Item("fld_Abstract") = Convert.ToBoolean(row.Cell(3).Value)
dsNewRow.Item("fld_Nillable") = Convert.ToBoolean(row.Cell(4).Value)
dsNewRow.Item("fld_SubstitutionGroup") = row.Cell(5).Value
dsNewRow.Item("fld_PeriodType") = row.Cell(6).Value
ds.Tables("dsCore").Rows.Add(dsNewRow)
Next
End Using
da.Update(ds, "dsCore")
'================================
'Import worksheet Linkroles from spreadsheet to tbl_Linkrole
'================================
strSQL = "SELECT * FROM tbl_Linkroles"
da = New SQLite.SQLiteDataAdapter(strSQL, ConSQLite)
Dim cb1 As New SQLite.SQLiteCommandBuilder(da)
da.Fill(ds, "dsLinkroles")
Using Workbook As XLWorkbook = New XLWorkbook(StrInputSpreadsheet)
' Get worksheet Linkroles
Dim Worksheet As IXLWorksheet = Workbook.Worksheet("Linkroles")
' Collect data starting at row 2
For Each row As IXLRow In Worksheet.RowsUsed.Skip(1)
dsNewRow = ds.Tables("dsLinkroles").NewRow
dsNewRow.Item("fld_Id") = row.Cell(1).Value
dsNewRow.Item("fld_Definition") = row.Cell(2).Value
dsNewRow.Item("fld_UsedOn") = row.Cell(3).Value
ds.Tables("dsLinkroles").Rows.Add(dsNewRow)
Next
End Using
da.Update(ds, "dsLinkroles")
'================================
'Import worksheet Labels from spreadsheet to tbl_Labels
'================================
strSQL = "SELECT * FROM tbl_Labels"
da = New SQLite.SQLiteDataAdapter(strSQL, ConSQLite)
Dim cb2 As New SQLite.SQLiteCommandBuilder(da)
da.Fill(ds, "dsLabels")
Using Workbook As XLWorkbook = New XLWorkbook(StrInputSpreadsheet)
' Get worksheet labels
Dim Worksheet As IXLWorksheet = Workbook.Worksheet("Labels")
' Collect data starting at row 2
For Each row As IXLRow In Worksheet.RowsUsed.Skip(1)
dsNewRow = ds.Tables("dsLabels").NewRow
dsNewRow.Item("fld_Name") = row.Cell(1).Value
dsNewRow.Item("fld_language") = row.Cell(2).Value
dsNewRow.Item("fld_Role") = row.Cell(3).Value
dsNewRow.Item("fld_ArcRole") = row.Cell(4).Value
dsNewRow.Item("fld_Label") = row.Cell(5).Value
ds.Tables("dsLabels").Rows.Add(dsNewRow)
Next
End Using
da.Update(ds, "dsLabels")
'================================
'Import worksheet References from spreadsheet to tbl_References
'================================
strSQL = "SELECT * FROM tbl_References"
da = New SQLite.SQLiteDataAdapter(strSQL, ConSQLite)
Dim cb3 As New SQLite.SQLiteCommandBuilder(da)
da.Fill(ds, "dsReferences")
Using Workbook As XLWorkbook = New XLWorkbook(StrInputSpreadsheet)
' Get worksheet References
Dim Worksheet As IXLWorksheet = Workbook.Worksheet("References")
' Collect data starting at row 2
For Each row As IXLRow In Worksheet.RowsUsed.Skip(1)
'Check if a reference is available (key is de presence of an ArcRole)
If Not String.IsNullOrEmpty(row.Cell(2).Value) Then
dsNewRow = ds.Tables("dsReferences").NewRow
dsNewRow.Item("fld_Name") = row.Cell(1).Value
dsNewRow.Item("fld_Role") = row.Cell(2).Value
dsNewRow.Item("fld_ArcRole") = row.Cell(3).Value
dsNewRow.Item("fld_RefChapter") = row.Cell(4).Value
dsNewRow.Item("fld_RefName") = row.Cell(5).Value
dsNewRow.Item("fld_RefParagraph") = row.Cell(6).Value
dsNewRow.Item("fld_RefPublisher") = row.Cell(7).Value
ds.Tables("dsReferences").Rows.Add(dsNewRow)
End If
Next
End Using
da.Update(ds, "dsReferences")
'================================
'Import the presentation worksheets from spreadsheet to tbl_Presentation
'================================
'Get a list of sheets with a presentation
Dim ArrayPresentations() As String = Nothing 'Array to store all presentation sheets
ReDim Preserve ArrayPresentations(0)
Using Workbook As XLWorkbook = New XLWorkbook(StrInputSpreadsheet)
For Each sheet In Workbook.Worksheets
If sheet.Name.StartsWith("Presentation_") Then
ArrayPresentations(UBound(ArrayPresentations)) = sheet.Name
ReDim Preserve ArrayPresentations(UBound(ArrayPresentations) + 1)
End If
Next
End Using
ReDim Preserve ArrayPresentations(UBound(ArrayPresentations) - 1) 'Remove last item (is empty)
strSQL = "SELECT * FROM tbl_Presentation"
da = New SQLite.SQLiteDataAdapter(strSQL, ConSQLite)
Dim cb4 As New SQLite.SQLiteCommandBuilder(da)
da.Fill(ds, "dsPresentation")
For Each presentation In ArrayPresentations
Using Workbook As XLWorkbook = New XLWorkbook(StrInputSpreadsheet)
' Get worksheet Presentation_??
Dim Worksheet As IXLWorksheet = Workbook.Worksheet(presentation)
' Collect data starting at row 2
For Each row As IXLRow In Worksheet.RowsUsed.Skip(1)
dsNewRow = ds.Tables("dsPresentation").NewRow
dsNewRow.Item("fld_Name") = Trim(row.Cell(1).Value)
dsNewRow.Item("fld_ItemId") = row.Cell(2).Value
dsNewRow.Item("fld_ParentId") = row.Cell(3).Value
dsNewRow.Item("fld_Order") = row.Cell(4).Value
dsNewRow.Item("fld_Linkrole") = row.Cell(5).Value
dsNewRow.Item("fld_PresentationDescription") = presentation.Substring(13)
ds.Tables("dsPresentation").Rows.Add(dsNewRow)
Next
End Using
Next
da.Update(ds, "dsPresentation")
'================================
'Import worksheet Definition from spreadsheet to tbl_Definition
'================================
strSQL = "SELECT * FROM tbl_Definition"
da = New SQLite.SQLiteDataAdapter(strSQL, ConSQLite)
Dim cb5 As New SQLite.SQLiteCommandBuilder(da)
da.Fill(ds, "dsDefinition")
Using Workbook As XLWorkbook = New XLWorkbook(StrInputSpreadsheet)
' Get worksheet Definition
Dim Worksheet As IXLWorksheet = Workbook.Worksheet("Definition")
' Collect data starting at row 2
For Each row As IXLRow In Worksheet.RowsUsed.Skip(1)
dsNewRow = ds.Tables("dsDefinition").NewRow
dsNewRow.Item("fld_Name") = row.Cell(1).Value
dsNewRow.Item("fld_ItemID") = row.Cell(2).Value
dsNewRow.Item("fld_ParentID") = row.Cell(3).Value
dsNewRow.Item("fld_Arcrole") = row.Cell(4).Value
dsNewRow.Item("fld_Order") = row.Cell(5).Value
dsNewRow.Item("fld_ContextElement") = row.Cell(6).Value
dsNewRow.Item("fld_Closed") = row.Cell(7).Value
dsNewRow.Item("fld_Linkrole") = row.Cell(8).Value
ds.Tables("dsDefinition").Rows.Add(dsNewRow)
Next
End Using
da.Update(ds, "dsDefinition")
'================================
'Import worksheet Entrypoints from spreadsheet to tbl_Entrypoints
'================================
strSQL = "SELECT * FROM tbl_Entrypoints"
da = New SQLite.SQLiteDataAdapter(strSQL, ConSQLite)
Dim cb6 As New SQLite.SQLiteCommandBuilder(da)
da.Fill(ds, "dsEntrypoints")
Using Workbook As XLWorkbook = New XLWorkbook(StrInputSpreadsheet)
' Get worksheet Definition
Dim Worksheet As IXLWorksheet = Workbook.Worksheet("Entrypoints")
' Collect data starting at row 2
For Each row As IXLRow In Worksheet.RowsUsed.Skip(1)
dsNewRow = ds.Tables("dsEntrypoints").NewRow
dsNewRow.Item("fld_Name") = row.Cell(1).Value
dsNewRow.Item("fld_Description") = row.Cell(2).Value
dsNewRow.Item("fld_Version") = row.Cell(3).Value
dsNewRow.Item("fld_Languages") = row.Cell(4).Value
dsNewRow.Item("fld_Prefix") = row.Cell(5).Value
ds.Tables("dsEntrypoints").Rows.Add(dsNewRow)
Next
End Using
da.Update(ds, "dsEntrypoints")
End Sub
End Module