1: using System;
2: using System.Collections.Generic;
3: using System.Data;
4: using System.IO;
5: using System.Linq;
6: using System.Reflection;
7: using System.Web;
8: using System.Xml.Linq;
9:
10: namespace Ia.Ngn.Cl.Model.Data
11: {
12: ////////////////////////////////////////////////////////////////////////////
13:
14: /// <summary publish="true">
15: /// Guide support class for Optical Fiber Network (OFN) data model.
16: /// </summary>
17: ///
18: /// <remarks>
19: /// Copyright © 2006-2022 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
20: ///
21: /// This library is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by
22: /// the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
23: ///
24: /// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
25: /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
26: ///
27: /// You should have received a copy of the GNU General Public License along with this library. If not, see http://www.gnu.org/licenses.
28: ///
29: /// Copyright notice: This notice may not be removed or altered from any source distribution.
30: /// </remarks>
31: public class Guide
32: {
33: private static XDocument xDocument;
34:
35: private static readonly object objectLock = new object();
36:
37: ////////////////////////////////////////////////////////////////////////////
38:
39: /// <summary>
40: ///
41: /// </summary>
42: public Guide() { }
43:
44: ////////////////////////////////////////////////////////////////////////////
45:
46: /// <summary>
47: ///
48: /// </summary>
49: public static List<string> FrequentAnswerList()
50: {
51: var list = (from c in XDocument.Elements("guide").Elements("frequentAnswers").Elements("answer")
52: select c.Value).ToList();
53:
54: return list;
55: }
56:
57: ////////////////////////////////////////////////////////////////////////////
58:
59: /// <summary>
60: ///
61: /// </summary>
62: public static List<string> ArticleList()
63: {
64: var list = (from c in XDocument.Elements("articles").Elements("article")
65: select c.Value).ToList();
66:
67: return list;
68: }
69:
70: /*
71: ////////////////////////////////////////////////////////////////////////////
72:
73: /// <summary>
74: ///
75: /// </summary>
76: public static Dictionary<int, string> CategoryDictionary
77: {
78: get
79: {
80: Dictionary<int, string> dictionary;
81:
82: dictionary = new Dictionary<int, string>(100);
83:
84: dictionary = (from c in XDocument.Elements("report").Elements("category")
85: select new { Id = int.Parse(c.Attribute("id").Value), Name = c.Attribute("name").Value }).ToDictionary(r => r.Id, r => r.Name);
86:
87: return dictionary;
88: }
89: }
90: */
91:
92: ////////////////////////////////////////////////////////////////////////////
93: ////////////////////////////////////////////////////////////////////////////
94:
95: /// <summary>
96: ///
97: /// How to embed and access resources by using Visual C# http://support.microsoft.com/kb/319292/en-us
98: ///
99: /// 1. Change the "Build Action" property of your XML file from "Content" to "Embedded Resource".
100: /// 2. Add "using System.Reflection".
101: /// 3. Manifest resource stream will start with the project namespace, the location of XML file.
102: ///
103: /// </summary>
104:
105: public static XDocument XDocument
106: {
107: get
108: {
109: if (xDocument == null)
110: {
111: lock (objectLock)
112: {
113: Assembly _assembly;
114: StreamReader streamReader;
115:
116: _assembly = Assembly.GetExecutingAssembly();
117: streamReader = new StreamReader(_assembly.GetManifestResourceStream("Ia.Ngn.Cl.model.data.guide.xml"));
118:
119: try
120: {
121: if (streamReader.Peek() != -1) xDocument = System.Xml.Linq.XDocument.Load(streamReader);
122: }
123: catch (Exception)
124: {
125: }
126: finally
127: {
128: }
129: }
130: }
131:
132: return xDocument;
133: }
134: }
135:
136: ////////////////////////////////////////////////////////////////////////////
137: ////////////////////////////////////////////////////////////////////////////
138: }
139:
140: ////////////////////////////////////////////////////////////////////////////
141: ////////////////////////////////////////////////////////////////////////////
142: }