首页->企业网站->中小企业网站系统前台源码(SmallBusinessStarterKit)>>smallbusiness_vb/App-Code/Catalog/XmlCatalogProvider.vb>>源码在线查看
温馨提示:代码在线浏览功能只能做为源码浏览参考,如果想更进一步了解该代码请下载:中小企业网站系统前台源码(SmallBusinessStarterKit)
当前文件:
SmallBusinessStarterKit/smallbusiness_vb/App_Code/Catalog/XmlCatalogProvider.vb[6K,2009-6-12 11:54:22],打开代码结构图
SmallBusinessStarterKit/smallbusiness_vb/App_Code/Catalog/XmlCatalogProvider.vb[6K,2009-6-12 11:54:22],打开代码结构图1Imports System 2
Imports System.Data 3
Imports System.Configuration 4
Imports System.Web 5
Imports System.Xml 6
Imports System.Xml.Schema 7
Imports System.IO 8
Imports System.Collections.Generic 9
10
11
' <summary> 12
' XML Data Layer for Items and Cateogories 13
' </summary> 14
Public Class XmlCatalogProvider 15
Inherits CatalogProvider 16
17
Private _xmlFile As String 18
Private _xsdFile As String 19
20
21
22
Public Sub New() 23
Dim sec As SmallBusinessDataProvidersSection = ConfigurationManager.GetSection("SmallBusinessDataProviders") 24
Dim xmlFile As String = sec.CatalogProviders(sec.CatalogProviderName).Parameters("dataFile") 25
Dim xsdFile As String = sec.CatalogProviders(sec.CatalogProviderName).Parameters("schemaFile") 26
27
_xmlFile = HttpContext.Current.Request.MapPath(("~/App_Data/" + xmlFile)) 28
_xsdFile = HttpContext.Current.Request.MapPath(("~/App_Data/schemas/" + xsdFile)) 29
End Sub 'New 30
31
32
33
' <summary> 34
' Returns child categories of a given cateogory 35
' If 'parentCategoryId' = null , top level categories are returned 36
' </summary> 37
Public Overrides Function GetChildCategories(ByVal parentCategoryId As String) As List(Of Category) 38
39
If [String].IsNullOrEmpty(parentCategoryId) Then 40
parentCategoryId = "NULL" 41
End If 42
Dim dataSet As DataSet = Util.ReadAndValidateXml(_xmlFile, _xsdFile) 43
44
' tables, in order in the dataset: category | childItemId| item 45
Dim categoryTbl As DataTable = dataSet.Tables(0) 46
Dim list As New List(Of Category) 47
Dim r As DataRow 48
For Each r In categoryTbl.Rows 49
If CStr(r("parentCategoryId")) = parentCategoryId Then ' match found 50
If TypeOf r("id") Is DBNull Or TypeOf r("visible") Is DBNull Or TypeOf r("title") Is DBNull Then 51
Throw New InvalidOperationException(Messages.CategoryRequiredAttributesMissing) 52
End If 53
Dim curr As New Category(CStr(r("id")), [Boolean].Parse(CStr(r("visible"))), CStr(r("title"))) 54
curr.Description = Util.ReturnEmptyStringIfDbNull(r("description")) 55
curr.ImageUrl = Util.ReturnEmptyStringIfDbNull(r("imageUrl")) 56
curr.ImageAltText = Util.ReturnEmptyStringIfDbNull(r("imageAltText")) 57
list.Add(curr) 58
End If 59
Next r 60
Return list 61
End Function 'New 62
63
64
65
' <summary> 66
' Returns child items of a given cateogory 67
' Returns empty list if 'parentCategoryId' = null , 68
' </summary> 69
Public Overrides Function GetChildItems(ByVal parentCategoryId As String) As List(Of Item) 70
71
Dim itemList As New List(Of Item) 72
73
If [String].IsNullOrEmpty(parentCategoryId) Then 74
Return itemList 75
End If 76
Dim dataSet As DataSet = Util.ReadAndValidateXml(_xmlFile, _xsdFile) 77
78
' find index correspondig to parentCategorId 79
Dim categoryTbl As DataTable = dataSet.Tables(0) 80
Dim index As Integer = -1 81
Dim counter As Integer = 0 82
Dim r As DataRow 83
For Each r In categoryTbl.Rows 84
If CStr(r("id")) = parentCategoryId Then 85
index = counter 86
Exit For 87
End If 88
counter += 1 89
Next r 90
91
' populate the list of child items ids and then construct Item objects 92
Dim categorizationTbl As DataTable = dataSet.Tables(1) 93
Dim childItemIds As New List(Of String) 94
95
96
For Each r In categorizationTbl.Rows 97
If CInt(r("category_Id")) = index Then 98
childItemIds.Add(CStr(r("childItemId_Text"))) 99
End If 100
Next r 101
102
Dim itemsTbl As DataTable = dataSet.Tables(2) 103
Dim curr As Item 104
105
For Each r In itemsTbl.Rows 106
If childItemIds.Contains(CStr(r("id"))) Then 107
If TypeOf r("id") Is DBNull Or TypeOf r("visible") Is DBNull Or TypeOf r("title") Is DBNull Then 108
Throw New InvalidOperationException(Messages.ItemRequiredAttributesMissing) 109
End If 110
curr = New Item(CStr(r("id")), [Boolean].Parse(CStr(r("visible"))), CStr(r("title"))) 111
curr.Description = Util.ReturnEmptyStringIfDbNull(r("description")) 112
curr.Price = Util.ReturnEmptyStringIfDbNull(r("price")) 113
If (TypeOf r("inStock") Is DBNull) Then 114
curr.InStock = True 115
Else 116
curr.InStock = r("inStock") 117
End If 118
curr.ImageUrl = Util.ReturnEmptyStringIfDbNull(r("imageUrl")) 119
curr.ImageAltText = Util.ReturnEmptyStringIfDbNull(r("imageAltText")) 120
itemList.Add(curr) 121
End If 122
Next r 123
Return itemList 124
End Function 'New 125
126
'/<summary> 127
'/ Returns item having the id 'itemId' 128
'/</summary> 129
Public Overrides Function GetItem(ByVal itemId As String) As Item 130
If [String].IsNullOrEmpty(itemId) Then 131
Return Nothing 132
End If 133
Dim dataSet As DataSet = Util.ReadAndValidateXml(_xmlFile, _xsdFile) 134
135
Dim itemsTbl As DataTable = dataSet.Tables(2) 136
Dim curr As Item = Nothing 137
Dim r As DataRow 138
For Each r In itemsTbl.Rows 139
If TypeOf r("id") Is DBNull Then 140
Throw New InvalidOperationException(Messages.ItemRequiredAttributesMissing) 141
End If 142
If itemId = CStr(r("id")) Then 143
' assert: r[id] is not DBNull 144
If TypeOf r("visible") Is DBNull Or TypeOf r("title") Is DBNull Then 145
Throw New InvalidOperationException(Messages.ItemRequiredAttributesMissing) 146
End If 147
curr = New Item(CStr(r("id")), [Boolean].Parse(CStr(r("visible"))), CStr(r("title"))) 148
curr.Description = Util.ReturnEmptyStringIfDbNull(r("description")) 149
curr.Price = Util.ReturnEmptyStringIfDbNull(r("price")) 150
If (TypeOf r("inStock") Is DBNull) Then 151
curr.InStock = True 152
Else 153
curr.InStock = r("inStock") 154
End If 155
curr.ImageUrl = Util.ReturnEmptyStringIfDbNull(r("imageUrl")) 156
curr.ImageAltText = Util.ReturnEmptyStringIfDbNull(r("imageAltText")) 157
End If 158
Next r 159
Return curr 160
End Function 'GetItem 161
162
163
164
165
End Class 'XmlCatalogProvider







