OpenKeyWord  Version: 426, Datum:
LogMessenger.cs
1 #region Header
2 /*
3  ==============================================================================
4  Author: Zoltan Hrabovszki <zh@openkeyword.de>
5 
6  Copyright © 2012, 2013, 2014, 2015 IT-Beratung Hrabovszki
7  www.OpenKeyWord.de
8  ==============================================================================
9 
10  This file is part of OpenKeyWord.
11 
12  OpenKeyWord is free software: you can redistribute it and/or modify
13  it under the terms of the GNU General Public License as published by
14  the Free Software Foundation, either version 3 of the License, or
15  (at your option) any later version.
16 
17  OpenKeyWord is distributed in the hope that it will be useful,
18  but WITHOUT ANY WARRANTY; without even the implied warranty of
19  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20  GNU General Public License for more details.
21 
22  You should have received a copy of the GNU General Public License
23  along with OpenKeyWord. If not, see <http://www.gnu.org/licenses/>.
24 
25  Diese Datei ist Teil von OpenKeyWord.
26 
27  OpenKeyWord ist Freie Software: Sie können es unter den Bedingungen
28  der GNU General Public License, wie von der Free Software Foundation,
29  Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren
30  veröffentlichten Version, weiterverbreiten und/oder modifizieren.
31 
32  OpenKeyWord wird in der Hoffnung, dass es nützlich sein wird, aber
33  OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite
34  Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.
35  Siehe die GNU General Public License für weitere Details.
36 
37  Sie sollten eine Kopie der GNU General Public License zusammen mit
38  OpenKeyWord erhalten haben. Wenn nicht, siehe <http://www.gnu.org/licenses/>.
39 */
40 #endregion Header
41 
42 namespace OKW
43 {
44  using System;
45  using System.IO;
46  using System.Xml.XPath;
47 
90  public class LogMessenger
91  {
92  #region Fields
93 
94  private bool bInit = false;
95  private string cvsClassName = string.Empty;
96  private string __XMLFile = string.Empty;
97  private XPathDocument MyXPathDocument;
98  private XPathNavigator MyXPathNavigator;
99 
100 
101  public string XMLFile
102  {
103  get { return __XMLFile; }
104  }
105 
106  #endregion Fields
107 
108 
109  #region Constructors
110  public LogMessenger(string fpsClassname)
123  {
124  this.cvsClassName = fpsClassname;
125  this.Init();
126  }
127 
128  #endregion Constructors
129 
130  #region Methods
131 
151  public string GetMessage(string MethodName, string TextKey)
152  {
153  string lvs_Return = "Message Not Found!";
154 
155  lvs_Return = this.ReadMessage(this.cvsClassName, MethodName, TextKey);
156 
157  return lvs_Return;
158  }
159 
181  public string GetMessage(string MethodName, string TextKey, object Parameter_1)
182  {
183  string lvs_Return = string.Empty;
184 
185  lvs_Return = this.ReadMessage(this.cvsClassName, MethodName, TextKey);
186  lvs_Return = string.Format(lvs_Return, Parameter_1);
187 
188  return lvs_Return;
189  }
190 
215  public string GetMessage(string MethodName, string TextKey, object Parameter_1, object Parameter_2)
216  {
217  string lvs_Return = "Message Not Found!";
218 
219  lvs_Return = this.ReadMessage(this.cvsClassName, MethodName, TextKey);
220  lvs_Return = string.Format(lvs_Return, Parameter_1, Parameter_2);
221 
222  return lvs_Return;
223  }
224 
250  public string GetMessage(string MethodName, string TextKey, object Parameter_1, object Parameter_2, object Parameter_3)
251  {
252  string lvs_Return = "Message Not Found!";
253 
254  lvs_Return = this.ReadMessage(this.cvsClassName, MethodName, TextKey);
255  lvs_Return = string.Format(lvs_Return, Parameter_1, Parameter_2, Parameter_3);
256 
257  return lvs_Return;
258  }
259 
273  private void Init()
274  {
275  if (!this.bInit) {
276  try {
277 
278  this.__XMLFile = System.IO.Path.Combine(OKW_Ini.Instance.OKW_Enviroment.Folder_LogMessages, "LM_" + this.cvsClassName + ".xml");
279 
280  if (!System.IO.File.Exists(this.XMLFile)) {
281  System.Console.WriteLine("============================================================================================================");
282  System.Console.WriteLine("OKW Exception: File not found! -> '" + this.XMLFile + "'");
283  System.Console.WriteLine("============================================================================================================");
284 
285  throw new FileNotFoundException("File not found! The File was: '" + this.XMLFile + "'");
286  } else {
287  this.MyXPathDocument = new XPathDocument(this.XMLFile);
288  this.MyXPathNavigator = this.MyXPathDocument.CreateNavigator();
289  }
290 
291  this.bInit = true;
292  } finally {
293  System.Console.WriteLine(string.Empty);
294  }
295  }
296  }
297 
321  private string ReadMessage(string ClassName, string MethodName, string TextKey)
322  {
323  string lvsReturn = "Message Not Found!";
324  string myPath = "//Class[@name='" + ClassName + "']/Method[@name='" + MethodName + "']/Text[@key='" + TextKey + "']/" + OKW.OKWLanguage.Instance.Language;
325 
326  XPathNodeIterator iter = this.MyXPathNavigator.Select(myPath);
327 
328  if (iter.Count < 1 || iter.Count > 1) {
329  // Es wurde kein Wert gefunden -> Exception MsgNitFound auslösen...
330  throw new OKWMessageNotFoundException("Message not Found. Class: " + ClassName +
331  ", Method: " + MethodName +
332  ", TextKey: " + TextKey,
333  ", Gefunden Werte: " + iter.Count);
334  } else {
335  iter.MoveNext();
336  lvsReturn = iter.Current.Value;
337  }
338 
339  return lvsReturn;
340  }
341 
342  #endregion Methods
343  }
344 }
string GetMessage(string MethodName, string TextKey)
Holt die Log-Meldung für MethodeNmae/Textkey ohne weitere Parameter.
void Init()
Initialisiert die Klasse:
string Folder_LogMessages
Property get/set von __Folder_LogMessages.
string GetMessage(string MethodName, string TextKey, object Parameter_1, object Parameter_2, object Parameter_3)
Holt die Log-Meldung für MethodeNmae/Textkey und drei Parameter.
static OKW_Ini Instance
Singelton-Pattern: Instanz gibt die aktuelle, gültige und einzige Innstanz der Klasse zurück...
Definition: OKW_Ini.cs:306
http://de.wikipedia.org/wiki/ISO-3166-1-Kodierliste
Definition: OKWLanguage.cs:50
static T Instance
Holt die einzige Instanz dieser Klasse.
OKW_Enviroment OKW_Enviroment
Dieses Feld hält den Abschnitt OKW_Enviroment der OKW_Ini.xml vor.
Definition: OKW_Ini.cs:219
string GetMessage(string MethodName, string TextKey, object Parameter_1)
Holt die Log-Meldung für MethodeNmae/Textkey und einem Parameter.
LogMessenger(string fpsClassname)
Speichern des Klassennamens.Initialisieren der Klasse.
LogMessenger liest Log-Meldungen sprachspezifisch für die im Konstruktor gegeben Klasse aus der Zugeh...
Definition: LogMessenger.cs:90
OKW.OKW_Ini ist die Klasse zur Konfigurationsdatei OKW_Ini.xml.
Definition: OKW_Ini.cs:188
string GetMessage(string MethodName, string TextKey, object Parameter_1, object Parameter_2)
Holt die Log-Meldung für MethodeNmae/Textkey und einem Parameter.
string ReadMessage(string ClassName, string MethodName, string TextKey)
Interne Kernfunktion holt die Log-Meldung mit Platzhaltern aus der XML-Datei. "ClassName", "MethodName" and "TextKey" and Actual language from ini-file.
Definition: Core.cs:40