1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Text;
5: using System.Xml.Linq;
6: using System.IO;
7: using System.Reflection;
8: using System.Collections;
9:
10: namespace Ia.TentPlay.Cl.Model.Data.Trek
11: {
12: ////////////////////////////////////////////////////////////////////////////
13:
14: /// <summary publish="true">
15: /// FeatureDesignation Support class for TentPlay Trek data model
16: /// </summary>
17: ///
18: /// <remarks>
19: /// Copyright © 2006-2017 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 FeatureDesignation
32: {
33: private static XDocument xDocument;
34: private static List<Ia.TentPlay.Cl.Model.Trek.FeatureDesignation> list;
35: private static List<Ia.Cl.Model.Language> languageList;
36:
37: ////////////////////////////////////////////////////////////////////////////
38:
39: /// <summary>
40: ///
41: /// </summary>
42: public FeatureDesignation() { }
43:
44: ////////////////////////////////////////////////////////////////////////////
45:
46: /// <summary>
47: ///
48: /// </summary>
49: public static List<Ia.TentPlay.Cl.Model.Trek.FeatureDesignation> ListFromDatabase(out Ia.Cl.Model.Result result)
50: {
51: result = new Ia.Cl.Model.Result();
52:
53: list = new List<Ia.TentPlay.Cl.Model.Trek.FeatureDesignation>();
54:
55: using (var db = new Ia.TentPlay.Db())
56: {
57: list = (from nfdc in db.FeatureDesignations select nfdc).ToList();
58: }
59:
60: result.AddSuccess("FeatureDesignation count: " + list.Count);
61:
62: return list;
63: }
64:
65: ////////////////////////////////////////////////////////////////////////////
66:
67: /// <summary>
68: ///
69: /// </summary>
70: public static List<Ia.Cl.Model.Language> LanguageList
71: {
72: get
73: {
74: if (languageList == null || languageList.Count == 0)
75: {
76: languageList = new List<Ia.Cl.Model.Language>();
77:
78: languageList.Add(new Ia.Cl.Model.Language("en"));
79: languageList.Add(new Ia.Cl.Model.Language("ar"));
80: languageList.Add(new Ia.Cl.Model.Language("da"));
81:
82: languageList.Add(new Ia.Cl.Model.Language("zh_traditional"));
83: languageList.Add(new Ia.Cl.Model.Language("zh_simplified"));
84:
85: languageList.Add(new Ia.Cl.Model.Language("hi"));
86: languageList.Add(new Ia.Cl.Model.Language("ja"));
87: languageList.Add(new Ia.Cl.Model.Language("de"));
88: languageList.Add(new Ia.Cl.Model.Language("ru"));
89: languageList.Add(new Ia.Cl.Model.Language("pt"));
90: languageList.Add(new Ia.Cl.Model.Language("id"));
91: languageList.Add(new Ia.Cl.Model.Language("fr"));
92: languageList.Add(new Ia.Cl.Model.Language("es"));
93: languageList.Add(new Ia.Cl.Model.Language("it"));
94: languageList.Add(new Ia.Cl.Model.Language("ko"));
95: languageList.Add(new Ia.Cl.Model.Language("tr"));
96: languageList.Add(new Ia.Cl.Model.Language("fa"));
97: languageList.Add(new Ia.Cl.Model.Language("th"));
98: languageList.Add(new Ia.Cl.Model.Language("ha"));
99: languageList.Add(new Ia.Cl.Model.Language("ig"));
100: languageList.Add(new Ia.Cl.Model.Language("yo"));
101: languageList.Add(new Ia.Cl.Model.Language("pl"));
102: languageList.Add(new Ia.Cl.Model.Language("ur"));
103: languageList.Add(new Ia.Cl.Model.Language("nl"));
104: languageList.Add(new Ia.Cl.Model.Language("ms"));
105: languageList.Add(new Ia.Cl.Model.Language("tl"));
106: languageList.Add(new Ia.Cl.Model.Language("af"));
107: languageList.Add(new Ia.Cl.Model.Language("zu"));
108: languageList.Add(new Ia.Cl.Model.Language("xh"));
109: languageList.Add(new Ia.Cl.Model.Language("bn"));
110: languageList.Add(new Ia.Cl.Model.Language("vi"));
111: languageList.Add(new Ia.Cl.Model.Language("kk"));
112: languageList.Add(new Ia.Cl.Model.Language("ro"));
113: languageList.Add(new Ia.Cl.Model.Language("no"));
114: languageList.Add(new Ia.Cl.Model.Language("uk"));
115: languageList.Add(new Ia.Cl.Model.Language("cs"));
116: languageList.Add(new Ia.Cl.Model.Language("he"));
117: languageList.Add(new Ia.Cl.Model.Language("el"));
118: languageList.Add(new Ia.Cl.Model.Language("my"));
119: languageList.Add(new Ia.Cl.Model.Language("hu"));
120: languageList.Add(new Ia.Cl.Model.Language("ga"));
121: languageList.Add(new Ia.Cl.Model.Language("si"));
122: languageList.Add(new Ia.Cl.Model.Language("ta"));
123: languageList.Add(new Ia.Cl.Model.Language("fi"));
124: languageList.Add(new Ia.Cl.Model.Language("uz"));
125: languageList.Add(new Ia.Cl.Model.Language("az"));
126: languageList.Add(new Ia.Cl.Model.Language("be"));
127: languageList.Add(new Ia.Cl.Model.Language("sk"));
128: languageList.Add(new Ia.Cl.Model.Language("am"));
129: languageList.Add(new Ia.Cl.Model.Language("sw"));
130: languageList.Add(new Ia.Cl.Model.Language("bg"));
131: languageList.Add(new Ia.Cl.Model.Language("hr"));
132: languageList.Add(new Ia.Cl.Model.Language("lt"));
133: languageList.Add(new Ia.Cl.Model.Language("ne"));
134: languageList.Add(new Ia.Cl.Model.Language("sl"));
135: languageList.Add(new Ia.Cl.Model.Language("ps"));
136: languageList.Add(new Ia.Cl.Model.Language("lb"));
137: languageList.Add(new Ia.Cl.Model.Language("km"));
138: languageList.Add(new Ia.Cl.Model.Language("lv"));
139: languageList.Add(new Ia.Cl.Model.Language("bs"));
140: languageList.Add(new Ia.Cl.Model.Language("et"));
141: languageList.Add(new Ia.Cl.Model.Language("lo"));
142: languageList.Add(new Ia.Cl.Model.Language("mn"));
143: languageList.Add(new Ia.Cl.Model.Language("mg"));
144: languageList.Add(new Ia.Cl.Model.Language("ka"));
145: languageList.Add(new Ia.Cl.Model.Language("sq"));
146: languageList.Add(new Ia.Cl.Model.Language("mk"));
147: languageList.Add(new Ia.Cl.Model.Language("hy"));
148: languageList.Add(new Ia.Cl.Model.Language("tg"));
149: languageList.Add(new Ia.Cl.Model.Language("ky"));
150: languageList.Add(new Ia.Cl.Model.Language("is"));
151: languageList.Add(new Ia.Cl.Model.Language("mt"));
152: languageList.Add(new Ia.Cl.Model.Language("ca"));
153: }
154:
155: return languageList;
156: }
157: }
158:
159: ////////////////////////////////////////////////////////////////////////////
160:
161: /// <summary>
162: ///
163: /// </summary>
164: public static List<Ia.TentPlay.Cl.Model.Trek.FeatureDesignation> List
165: {
166: get
167: {
168: if (list == null || list.Count == 0)
169: {
170: Ia.TentPlay.Cl.Model.Trek.FeatureDesignation featureDesignationCode;
171:
172: list = new List<Ia.TentPlay.Cl.Model.Trek.FeatureDesignation>();
173:
174: foreach (XElement xe in XDocument.Element("featureDesignationList").Elements("featureDesignation"))
175: {
176: featureDesignationCode = new Ia.TentPlay.Cl.Model.Trek.FeatureDesignation();
177:
178: featureDesignationCode.Id = xe.Attribute("id").Value;
179:
180: featureDesignationCode.En = xe.Attribute("en").Value;
181: featureDesignationCode.Ar = xe.Attribute("ar").Value;
182: featureDesignationCode.Da = xe.Attribute("da").Value;
183: featureDesignationCode.Zh_Simplified = xe.Attribute("zh_simplified").Value;
184: featureDesignationCode.Zh_Traditional = xe.Attribute("zh_traditional").Value;
185: featureDesignationCode.Hi = xe.Attribute("hi").Value;
186: featureDesignationCode.Ja = xe.Attribute("ja").Value;
187: featureDesignationCode.De = xe.Attribute("de").Value;
188: featureDesignationCode.Ru = xe.Attribute("ru").Value;
189: featureDesignationCode.Pt = xe.Attribute("pt").Value;
190: featureDesignationCode._Id = xe.Attribute("_id").Value;
191: featureDesignationCode.Fr = xe.Attribute("fr").Value;
192: featureDesignationCode.Es = xe.Attribute("es").Value;
193: featureDesignationCode.It = xe.Attribute("it").Value;
194: featureDesignationCode.Ko = xe.Attribute("ko").Value;
195: featureDesignationCode.Tr = xe.Attribute("tr").Value;
196: featureDesignationCode.Fa = xe.Attribute("fa").Value;
197: featureDesignationCode.Th = xe.Attribute("th").Value;
198: featureDesignationCode.Ha = xe.Attribute("ha").Value;
199: featureDesignationCode.Ig = xe.Attribute("ig").Value;
200: featureDesignationCode.Yo = xe.Attribute("yo").Value;
201: featureDesignationCode.Pl = xe.Attribute("pl").Value;
202: featureDesignationCode.Ur = xe.Attribute("ur").Value;
203: featureDesignationCode.Nl = xe.Attribute("nl").Value;
204: featureDesignationCode.Ms = xe.Attribute("ms").Value;
205: featureDesignationCode.Tl = xe.Attribute("tl").Value;
206: featureDesignationCode.Af = xe.Attribute("af").Value;
207: featureDesignationCode.Zu = xe.Attribute("zu").Value;
208: featureDesignationCode.Xh = xe.Attribute("xh").Value;
209: featureDesignationCode.Bn = xe.Attribute("bn").Value;
210: featureDesignationCode.Vi = xe.Attribute("vi").Value;
211: featureDesignationCode.Kk = xe.Attribute("kk").Value;
212: featureDesignationCode.Ro = xe.Attribute("ro").Value;
213: featureDesignationCode.No = xe.Attribute("no").Value;
214: featureDesignationCode.Uk = xe.Attribute("uk").Value;
215: featureDesignationCode.Cs = xe.Attribute("cs").Value;
216: featureDesignationCode.He = xe.Attribute("he").Value;
217: featureDesignationCode.El = xe.Attribute("el").Value;
218: featureDesignationCode.My = xe.Attribute("my").Value;
219: featureDesignationCode.Hu = xe.Attribute("hu").Value;
220: featureDesignationCode.Ga = xe.Attribute("ga").Value;
221: featureDesignationCode.Si = xe.Attribute("si").Value;
222: featureDesignationCode.Ta = xe.Attribute("ta").Value;
223: featureDesignationCode.Fi = xe.Attribute("fi").Value;
224: featureDesignationCode.Uz = xe.Attribute("uz").Value;
225: featureDesignationCode.Az = xe.Attribute("az").Value;
226: featureDesignationCode.Be = xe.Attribute("be").Value;
227: featureDesignationCode.Sk = xe.Attribute("sk").Value;
228: featureDesignationCode.Am = xe.Attribute("am").Value;
229: featureDesignationCode.Sw = xe.Attribute("sw").Value;
230: featureDesignationCode.Bg = xe.Attribute("bg").Value;
231: featureDesignationCode.Hr = xe.Attribute("hr").Value;
232: featureDesignationCode.Lt = xe.Attribute("lt").Value;
233: featureDesignationCode.Ne = xe.Attribute("ne").Value;
234: featureDesignationCode.Sl = xe.Attribute("sl").Value;
235: featureDesignationCode.Ps = xe.Attribute("ps").Value;
236: featureDesignationCode.Lb = xe.Attribute("lb").Value;
237: featureDesignationCode.Km = xe.Attribute("km").Value;
238: featureDesignationCode.Lv = xe.Attribute("lv").Value;
239: featureDesignationCode.Bs = xe.Attribute("bs").Value;
240: featureDesignationCode.Et = xe.Attribute("et").Value;
241: featureDesignationCode.Lo = xe.Attribute("lo").Value;
242: featureDesignationCode.Mn = xe.Attribute("mn").Value;
243: featureDesignationCode.Mg = xe.Attribute("mg").Value;
244: featureDesignationCode.Ka = xe.Attribute("ka").Value;
245: featureDesignationCode.Sq = xe.Attribute("sq").Value;
246: featureDesignationCode.Mk = xe.Attribute("mk").Value;
247: featureDesignationCode.Hy = xe.Attribute("hy").Value;
248: featureDesignationCode.Tg = xe.Attribute("tg").Value;
249: featureDesignationCode.Ky = xe.Attribute("ky").Value;
250: featureDesignationCode.Is = xe.Attribute("is").Value;
251: featureDesignationCode.Mt = xe.Attribute("mt").Value;
252: featureDesignationCode.Ca = xe.Attribute("ca").Value;
253: featureDesignationCode.Description = xe.Attribute("enDescription").Value;
254: featureDesignationCode.Class = xe.Attribute("class").Value.Substring(0, 1); // read just the first letter of, say, "A - Administrative"
255:
256: featureDesignationCode.Created = DateTime.UtcNow.AddHours(3);
257: featureDesignationCode.Updated = DateTime.UtcNow.AddHours(3);
258:
259: list.Add(featureDesignationCode);
260: }
261: }
262:
263: return list;
264: }
265: }
266:
267: ////////////////////////////////////////////////////////////////////////////
268:
269: /// <summary>
270: ///
271: /// </summary>
272: public static Hashtable DesignationIdToClassIdHashtable
273: {
274: get
275: {
276: Hashtable ht;
277:
278: ht = new Hashtable();
279:
280: foreach (Ia.TentPlay.Cl.Model.Trek.FeatureDesignation fd in Ia.TentPlay.Cl.Model.Data.Trek.FeatureDesignation.List)
281: {
282: ht[fd.Id] = fd.Class;
283: }
284:
285: return ht;
286: }
287: }
288:
289: ////////////////////////////////////////////////////////////////////////////
290:
291: /// <summary>
292: ///
293: /// </summary>
294: public static Hashtable DesignationIdToDesignationCaptionHashtable(string languageIso6391)
295: {
296: Hashtable ht;
297:
298: ht = new Hashtable();
299:
300: foreach (Ia.TentPlay.Cl.Model.Trek.FeatureDesignation fd in Ia.TentPlay.Cl.Model.Data.Trek.FeatureDesignation.List)
301: {
302: switch (languageIso6391)
303: {
304: case "en": ht[fd.Id] = fd.En; break;
305: case "ar": ht[fd.Id] = fd.Ar; break;
306: case "da": ht[fd.Id] = fd.Da; break;
307: case "zh_simplified": ht[fd.Id] = fd.Zh_Simplified; break;
308: case "zh_traditional": ht[fd.Id] = fd.Zh_Traditional; break;
309: case "hi": ht[fd.Id] = fd.Hi; break;
310: case "ja": ht[fd.Id] = fd.Ja; break;
311: case "de": ht[fd.Id] = fd.De; break;
312: case "ru": ht[fd.Id] = fd.Ru; break;
313: case "pt": ht[fd.Id] = fd.Pt; break;
314: case "fr": ht[fd.Id] = fd.Fr; break;
315: case "es": ht[fd.Id] = fd.Es; break;
316: case "it": ht[fd.Id] = fd.It; break;
317: case "ko": ht[fd.Id] = fd.Ko; break;
318: case "tr": ht[fd.Id] = fd.Tr; break;
319: case "fa": ht[fd.Id] = fd.Fa; break;
320: case "th": ht[fd.Id] = fd.Th; break;
321: case "ha": ht[fd.Id] = fd.Ha; break;
322: case "ig": ht[fd.Id] = fd.Ig; break;
323: case "yo": ht[fd.Id] = fd.Yo; break;
324: case "pl": ht[fd.Id] = fd.Pl; break;
325: case "ur": ht[fd.Id] = fd.Ur; break;
326: case "nl": ht[fd.Id] = fd.Nl; break;
327: case "ms": ht[fd.Id] = fd.Ms; break;
328: case "tl": ht[fd.Id] = fd.Tl; break;
329: case "af": ht[fd.Id] = fd.Af; break;
330: case "zu": ht[fd.Id] = fd.Zu; break;
331: case "xh": ht[fd.Id] = fd.Xh; break;
332: case "bn": ht[fd.Id] = fd.Bn; break;
333: case "vi": ht[fd.Id] = fd.Vi; break;
334: case "kk": ht[fd.Id] = fd.Kk; break;
335: case "ro": ht[fd.Id] = fd.Ro; break;
336: case "no": ht[fd.Id] = fd.No; break;
337: case "uk": ht[fd.Id] = fd.Uk; break;
338: case "cs": ht[fd.Id] = fd.Cs; break;
339: case "he": ht[fd.Id] = fd.He; break;
340: case "el": ht[fd.Id] = fd.El; break;
341: case "my": ht[fd.Id] = fd.My; break;
342: case "hu": ht[fd.Id] = fd.Hu; break;
343: case "ga": ht[fd.Id] = fd.Ga; break;
344: case "si": ht[fd.Id] = fd.Si; break;
345: case "ta": ht[fd.Id] = fd.Ta; break;
346: case "fi": ht[fd.Id] = fd.Fi; break;
347: case "uz": ht[fd.Id] = fd.Uz; break;
348: case "az": ht[fd.Id] = fd.Az; break;
349: case "be": ht[fd.Id] = fd.Be; break;
350: case "sk": ht[fd.Id] = fd.Sk; break;
351: case "am": ht[fd.Id] = fd.Am; break;
352: case "sw": ht[fd.Id] = fd.Sw; break;
353: case "bg": ht[fd.Id] = fd.Bg; break;
354: case "hr": ht[fd.Id] = fd.Hr; break;
355: case "lt": ht[fd.Id] = fd.Lt; break;
356: case "ne": ht[fd.Id] = fd.Ne; break;
357: case "sl": ht[fd.Id] = fd.Sl; break;
358: case "ps": ht[fd.Id] = fd.Ps; break;
359: case "lb": ht[fd.Id] = fd.Lb; break;
360: case "km": ht[fd.Id] = fd.Km; break;
361: case "lv": ht[fd.Id] = fd.Lv; break;
362: case "bs": ht[fd.Id] = fd.Bs; break;
363: case "et": ht[fd.Id] = fd.Et; break;
364: case "lo": ht[fd.Id] = fd.Lo; break;
365: case "mn": ht[fd.Id] = fd.Mn; break;
366: case "mg": ht[fd.Id] = fd.Mg; break;
367: case "ka": ht[fd.Id] = fd.Ka; break;
368: case "sq": ht[fd.Id] = fd.Sq; break;
369: case "mk": ht[fd.Id] = fd.Mk; break;
370: case "hy": ht[fd.Id] = fd.Hy; break;
371: case "tg": ht[fd.Id] = fd.Tg; break;
372: case "ky": ht[fd.Id] = fd.Ky; break;
373: case "is": ht[fd.Id] = fd.Is; break;
374: case "mt": ht[fd.Id] = fd.Mt; break;
375: case "ca": ht[fd.Id] = fd.Ca; break;
376:
377: default: ht[fd.Id] = fd.En; break;
378: }
379: }
380:
381: return ht;
382: }
383:
384: ////////////////////////////////////////////////////////////////////////////
385: ////////////////////////////////////////////////////////////////////////////
386:
387: /// <summary>
388: ///
389: /// How to embed and access resources by using Visual C# http://support.microsoft.com/kb/319292/en-us
390: ///
391: /// 1. Change the "Build Action" property of your XML file from "Content" to "Embedded Resource".
392: /// 2. Add "using System.Reflection".
393: /// 3. Manifest resource stream will start with the project namespace, the location of XML file.
394: ///
395: /// </summary>
396:
397: private static XDocument XDocument
398: {
399: get
400: {
401: Assembly _assembly;
402: StreamReader streamReader;
403:
404: if (xDocument == null)
405: {
406: _assembly = Assembly.GetExecutingAssembly();
407: streamReader = new StreamReader(_assembly.GetManifestResourceStream("cl.model.data.trek.feature-designation.xml"));
408:
409: try
410: {
411: if (streamReader.Peek() != -1) xDocument = System.Xml.Linq.XDocument.Load(streamReader);
412: }
413: catch (Exception)
414: {
415: }
416: finally
417: {
418: }
419: }
420:
421: return xDocument;
422: }
423: }
424:
425: ////////////////////////////////////////////////////////////////////////////
426: ////////////////////////////////////////////////////////////////////////////
427: }
428: }