All Downloads are FREE. Search and download functionalities are using the official Maven repository.

okw.LogMessenger Maven / Gradle / Ivy

Go to download

This is the core-module of OpenKeyWord. This module is automatically integrated by the adapters. In GUI automation, the core module is automatically integrated by the GUI modules (dependencies).

There is a newer version: 0.2.44
Show newest version
/*
    ==============================================================================
      Author: Zoltán Hrabovszki 

      Copyright © 2012 - 2019 IT-Beratung Hrabovszki
      www.OpenKeyWord.de
    ============================================================================== 

    This file is part of OpenKeyWord.

    OpenKeyWord is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    OpenKeyWord is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with OpenKeyWord.  If not, see .

    Diese Datei ist Teil von OpenKeyWord.

    OpenKeyWord ist Freie Software: Sie können es unter den Bedingungen
    der GNU General Public License, wie von der Free Software Foundation,
    Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren
    veröffentlichten Version, weiterverbreiten und/oder modifizieren.

    OpenKeyWord wird in der Hoffnung, dass es nützlich sein wird, aber
    OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite
    Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.
    Siehe die GNU General Public License für weitere Details.

    Sie sollten eine Kopie der GNU General Public License zusammen mit 
    OpenKeyWord erhalten haben. Wenn nicht, siehe .
*/

package okw;

import okw.exceptions.*;
import org.stringtemplate.v4.*;

 /**  \~german
 *  LogMessenger liest Log-Meldungen sprachspezifisch für die im Konstruktor gegeben Klasse aus der Zugehörigen XML-Datei.
 *  
 *  Die Log-Meldungen sind in XML-Dateien ausgelagert.
 *  Die XML-Dateien müssn in Verzeichniss gegeben in OKW_Ini.Instance.OKW_Enviroment.PathLog abgelegt sein.
 *  (Defaultwert: /XML/Log)
 *  
 *  Die XML-Struktur sieh wie folgt aus:
 *  
 *  ~~~~~~~~~~~~~~~{.c}
 *  
 * 	    
 *          
 *              Text with Parameter '{0:}'.
 *              Text mit einem Parameter '{0:}'.
 *          
 *      
 *  
 *  ~~~~~~~~~~~~~~~
 *  
 *  Dabei können
 *  
 *  - je Klasse n-Methoden
 *  - je Methode n-Textschlüssel.
 *  - Je Textschlüssel können n-Überstezungen
 *  definiert werden.
 *  
 *  Die aktuelle Sprache kommt aus OKW.OKWLanguage.getInstance.Language
 *  
 *  @info
 *  Die englische Üersetzung _muss_ immer vorhanden sein.
 *  Sollte eine andere Übersetzung fehlen, dann wir die englische Log-Meldung zurückgeliefert.
 *  
 *  \~english
 *  
 *  \~
 *  @author Zoltan Hrabovszki
 *  @date 2013_12_22
 */
public class LogMessenger
{

	private String		  cvsClassName	= "";
	private OKW_XmlReader myXmlReader;
	

	/**  \~german
	 * 
	 * -# Speichern des Klassennamens.
	 * -# Initialisieren der Klasse.
	 * 
	 * @param fpsClassname Name der Klasse. Wird verwendet um die Instanz der
	 *  Klasse mit der zugehärige XML-Datei zu verbinden.
	 * \~english
	 * \~
	 * @author Zoltan Hrabovszki
	 * @date 2013_12_22
	 */
	public LogMessenger(String fpsClassname)
	{
		try
		{
			this.cvsClassName = fpsClassname;
			String myXMLFile = "/xml/logmessages/LM_" + this.cvsClassName + ".xml";
			myXmlReader = new OKW_XmlReader(myXMLFile);
		}
		catch (Exception e)
		{
			OKW_HandleException.StopRunning(e, this.getClass());
		}
	}
	
	/**
	 * \~german
	 *  Holt die Log-Meldung für MethodeNmae/Textkey ohne weitere Parameter.
	 * 
	 *  @param MethodName Name der Methode
	 *  @param TextKey Text-Schlüssel
	 * 
	 *  @return Log-Meldung für die gegebene Paremeter und aktuelle Sprache.
	 * 
	 *  \~english
	 *  Gets the Message for the Methodename/TextKey without any Parametres.
	 * 
	 *  @param MethodName Name of the Method
	 *  @param TextKey of the message
	 * 
	 *  @return Log-Message for the given Parameter.
	 *  \~
	 *  @author Zoltan Hrabovszki
	 *  @date 2013.12.22
	 */
	public String GetMessage( String MethodName, String TextKey )
	{
		String lvs_Return = "Message Not Found!";

		try
		{
			lvs_Return = this.ReadMessage(this.cvsClassName, MethodName, TextKey);
		}
		catch (Exception e)
		{
			OKW_HandleException.StopRunning(e, this.getClass());
		}

		return lvs_Return;
	}

	/**
	 *   \~german
	 *  Holt die Log-Meldung für MethodeNmae/Textkey und einem Parameter.
	 * 
	 *  @param MethodName Name der Methode
	 *  @param TextKey Text-Schlüssel
	 *  @param Parameter_1 Wert der in der Log_Meldung mit ausgegeben wird.
	 * 
	 *  @return Log-Meldung für die gegebene Paremeter und aktuelle Sprache.
	 * 
	 *  \~english
	 *  \brief
	 *  Gets the Message for the Methodename/TextKey with _one_ Parametres.
	 * 
	 *  @param MethodName Name of the Method
	 *  @param TextKey of the message
	 *  @param Parameter_1 One Value inserted in the Log-Message
	 *  @return Log-Message for the given Parameter.
	 *  \~
	 *  @author Zoltan Hrabovszki
	 *  @date 2013.12.22
	 */
	public String GetMessage( String MethodName, String TextKey, Object Parameter_1 )
	{
		String lvsReturn = "";
    String lvsTemplate = "";
		try
		{
		  lvsTemplate = this.ReadMessage(this.cvsClassName, MethodName, TextKey);
			
			ST st = new ST(lvsTemplate, '$', '$');
			st.add("P1", Parameter_1);
			lvsReturn = st.render();
			
		}
		catch (Exception e)
		{
			OKW_HandleException.StopRunning(e, this.getClass());
		}

		return lvsReturn;
	}

	/**  \~german
	 *  Holt die Log-Meldung für MethodeNmae/Textkey und einem Parameter.
	 * 
	 *  @param MethodName Name der Methode
	 *  @param TextKey Text-Schlüssel
	 *  @param Parameter_1 1. Wert der in der Log_Meldung mit ausgegeben wird.
	 *  @param Parameter_2 2. Wert der in der Log_Meldung mit ausgegeben wird.
	 * 
	 *  @return Log-Meldung für die gegebene Paremeter und aktuelle Sprache.
	 * 
	 *  \~english
	 *  Gets the Message for the Methodename/TextKey with _one_ Parametres.
	 * 
	 *  @param MethodName Name of the Method
	 *  @param TextKey of the message
	 *  @param Parameter_1 First Value inserted in the Log-Message
	 *  @param Parameter_2 Second Value inserted in the Log-Message
	 * 
	 *  @return Log-Message for the given Parameter.
	 *  \~
	 *  @author Zoltan Hrabovszki
	 *  @date 2013.12.22
	 */
	public String GetMessage( String MethodName, String TextKey, Object Parameter_1, Object Parameter_2 )
  {
    String lvsReturn = "";
    String lvsTemplate = "";
    try
    {
      lvsTemplate = this.ReadMessage(this.cvsClassName, MethodName, TextKey);
      
      ST st = new ST(lvsTemplate, '$', '$');
      st.add("P1", Parameter_1);
      st.add("P2", Parameter_2);
      lvsReturn = st.render();
      
    }
    catch (Exception e)
    {
      OKW_HandleException.StopRunning(e, this.getClass());
    }

    return lvsReturn;
  }


	 /**  \~german
	 *  \brief
	 *  Holt die Log-Meldung für MethodeNmae/Textkey und drei Parameter.
	 * 
	 *  @param MethodName Name der Methode
	 *  @param TextKey Text-Schlüssel
	 *  @param Parameter_1 1. Wert der in der Log_Meldung mit ausgegeben wird.
	 *  @param Parameter_2 2. Wert der in der Log_Meldung mit ausgegeben wird.
	 *  @param Parameter_2 2. Wert der in der Log_Meldung mit ausgegeben wird.
	 * 
	 *  @return Log-Meldung für die gegebene Paremeter und aktuelle Sprache.
	 * 
	 *  \~english
	 *  Gets the Message for the Methodename/TextKey with _one_ Parametres.
	 * 
	 *  @param MethodName Name of the Method
	 *  @param TextKey of the message
	 *  @param Parameter_1 First Value inserted in the Log-Message
	 *  @param Parameter_2 Second Value inserted in the Log-Message
	 * 
	 *  @return Log-Message for the given Parameter.
	 *  \~
	 *  @author Zoltan Hrabovszki
	 *  @date 2013.12.22
	 */
	public String GetMessage( String MethodName, String TextKey, Object Parameter_1, Object Parameter_2,
			Object Parameter_3 )
  {
    String lvsReturn = "";
    String lvsTemplate = "";
    try
    {
      lvsTemplate = this.ReadMessage(this.cvsClassName, MethodName, TextKey);
      
      ST st = new ST(lvsTemplate, '$', '$');
      st.add("P1", Parameter_1);
      st.add("P2", Parameter_2);
      st.add("P3", Parameter_3);
      lvsReturn = st.render();
      
    }
    catch (Exception e)
    {
      OKW_HandleException.StopRunning(e, this.getClass());
    }

    return lvsReturn;
  }


	/**
	 *  \~german
	 *  Interne Kernfunktion holt die Log-Meldung mit Platzhaltern aus der
	 *  XML-Datei.
	 *  "ClassName", "MethodName" and "TextKey" and Actual language from
	 *  ini-file.
	 * 
	 *  @param ClassName Name of the Class.
	 *  @param MethodName Name of the Method.
	 *  @param TextKey Key for the Text-Message.
	 * 
	 *  \~english
	 * 
	 *  @param ClassName Name of the Class.
	 *  @param MethodName Name of the Method.
	 *  @param TextKey Key for the Text-Message.
	 * 
	 *  @return Rreturns the Message for the given language or default language
	 *  if given languae does not exist
* * _"Message Not Found!"_ will be returnd, if a doesn´s exist. * * @exception OKWMessageNotFoundException if a Message ist not found or if * more then one Message is found for the Given Parmeter. * * \~ * @author Zoltan Hrabovszki * @date 2013_12_22 */ private String ReadMessage( String ClassName, String MethodName, String TextKey ) { String lvsReturn = "Message Not Found!"; try { String Language = OKWLanguage.getInstance().getLanguage(); String myXPathExpression = "//Class[@name='" + ClassName + "']/Method[@name='" + MethodName + "']/Text[@key='" + TextKey + "']/" + Language; lvsReturn = myXmlReader.getTextContentSingleValue(myXPathExpression); if (lvsReturn.isEmpty()) { throw new OKWMessageNotFoundException("Message not Found. Class: " + ClassName + ", Method: " + MethodName + ", TextKey: " + TextKey); } } catch (OKWMessageNotFoundException e) { OKW_HandleException.StopRunning(e, this.getClass()); } return lvsReturn; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy