/Cloud/Library/Util/AppMessage.cs
# · C# · 171 lines · 84 code · 12 blank · 75 comment · 18 complexity · 37f69d4a1a9a38276718ed38ed03c9a4 MD5 · raw file
- using System;
- using System.Collections;
- using System.IO;
- using System.Linq;
- using System.Web;
-
- namespace Library.Util
- {
- /// <summary>
- /// Sistemde kullanýlacak mesajlarla ilgili iţlemlerin yapýldýđý sýnýftýr.
- /// Sistemde kullanýlacak mesajlar Web.Config içerisinde AppSettings bölümünde MessageFile ile baţlayan özellikler ile belirtilir.
- /// Mesaj dosyalarýndaki boţ satýrlar ve # iţareti ile baţlayan satýrlar kullanýlmaz.
- /// </summary>
- public class AppMessage
- {
- /// <summary>
- /// Sistem mesajlarýnýn mesaj koduna göre getirilmesini ve String.Format iţlemini sađlayan metoddur.
- /// </summary>
- /// <param name="messageCode">*.msg dosyasýnda belirtilen mesajýn kodu</param>
- /// <param name="parts">Mesaj içerisinde {.} formatlarýnýn yerine kullanýlacak parametreler</param>
- /// <returns>*.msg dosyasýnda belirtilen mesajýn koduna göre formatlanacak mesajýn gösterilecek hali</returns>
- public static string Get(string messageCode, string[] parts)
- {
- if (!IsApplicationMessagesLoaded())
- LoadApplicationMessages(true);
- var messagesTable = (Hashtable)HttpContext.Current.Cache["ApplicationMessages"];
- var message = messagesTable[messageCode] as string;
- if (message == null)
- {
- message = messageCode;
- for (var i = 0; parts != null && i < parts.Length; i++)
- {
- if (message.IndexOf("{" + i + "}") == -1)
- message += " {" + i + "}";
- }
-
- }
- if (parts != null && parts.Length > 0)
- message = String.Format(message, parts);
-
- message = ExceptionTranslator.Translate(message);
- message = message.Replace("\r\n", "<br />");
- message = message.Replace("\t", " ");
- return message;
- }
-
- /// <summary>
- /// Sistem mesajlarýnýn mesaj koduna göre getirilmesini ve String.Format iţlemini gerektirmeyen mesaj kodlarýnda kullanýlýr.
- /// Kodun yazýlmasý sýrasýnda kolaylýk sađlamasý için yapýlmýţtýr.
- /// </summary>
- /// <param name="messageCode">*.msg dosyasýnda belirtilen mesajýn kodu</param>
- /// <returns>*.msg dosyasýnda belirtilen mesajýn koduna göre gösterilecek hali</returns>
- public static string Get(string messageCode)
- {
- return Get(messageCode, new string[] { });
- }
-
- /// <summary>
- /// Sistem mesajlarýnýn mesaj koduna göre getirilmesini ve String.Format iţlemi 1 parametre gerektiriyorsa kullanýlýr.
- /// Kodun yazýlmasý sýrasýnda kolaylýk sađlamasý için yapýlmýţtýr.
- /// </summary>
- /// <param name="messageCode">*.msg dosyasýnda belirtilen mesajýn kodu</param>
- /// <param name="part1">Mesajýn içerisinde bulunan {0} parametresi</param>
- /// <returns>*.msg dosyasýnda belirtilen mesajýn koduna göre formatlanacak mesajýn gösterilecek hali</returns>
- public static string Get(string messageCode, string part1)
- {
- var parts = new[] { part1 };
- return Get(messageCode, parts);
- }
-
- /// <summary>
- /// Sistem mesajlarýnýn mesaj koduna göre getirilmesini ve String.Format iţlemi 2 parametre gerektiriyorsa kullanýlýr.
- /// Kodun yazýlmasý sýrasýnda kolaylýk sađlamasý için yapýlmýţtýr.
- /// </summary>
- /// <param name="messageCode">*.msg dosyasýnda belirtilen mesajýn kodu</param>
- /// <param name="part1">Mesajýn içerisinde bulunan {0} parametresi</param>
- /// <param name="part2">Mesajýn içerisinde bulunan {1} parametresi</param>
- /// <returns>*.msg dosyasýnda belirtilen mesajýn koduna göre formatlanacak mesajýn gösterilecek hali</returns>
- public static string Get(string messageCode, string part1, string part2)
- {
- var parts = new[] { part1, part2 };
- return Get(messageCode, parts);
- }
-
- /// <summary>
- /// Sistem mesajlarýnýn mesaj koduna göre getirilmesini ve String.Format iţlemi 3 parametre gerektiriyorsa kullanýlýr.
- /// Kodun yazýlmasý sýrasýnda kolaylýk sađlamasý için yapýlmýţtýr.
- /// </summary>
- /// <param name="messageCode">*.msg dosyasýnda belirtilen mesajýn kodu</param>
- /// <param name="part1">Mesajýn içerisinde bulunan {0} parametresi</param>
- /// <param name="part2">Mesajýn içerisinde bulunan {1} parametresi</param>
- /// <param name="part3">Mesajýn içerisinde bulunan {2} parametresi</param>
- /// <returns>*.msg dosyasýnda belirtilen mesajýn koduna göre formatlanacak mesajýn gösterilecek hali</returns>
- public static string Get(string messageCode, string part1, string part2, string part3)
- {
- var parts = new[] { part1, part2, part3 };
- return Get(messageCode, parts);
- }
-
- /// <summary>
- /// Sistem mesajlarýnýn mesaj koduna göre getirilmesini ve String.Format iţlemi 4 parametre gerektiriyorsa kullanýlýr.
- /// Kodun yazýlmasý sýrasýnda kolaylýk sađlamasý için yapýlmýţtýr.
- /// </summary>
- /// <param name="messageCode">*.msg dosyasýnda belirtilen mesajýn kodu</param>
- /// <param name="part1">Mesajýn içerisinde bulunan {0} parametresi</param>
- /// <param name="part2">Mesajýn içerisinde bulunan {1} parametresi</param>
- /// <param name="part3">Mesajýn içerisinde bulunan {2} parametresi</param>
- /// <param name="part4">Mesajýn içerisinde bulunan {3} parametresi</param>
- /// <returns>*.msg dosyasýnda belirtilen mesajýn koduna göre formatlanacak mesajýn gösterilecek hali</returns>
- public static string Get(string messageCode, string part1, string part2, string part3, string part4)
- {
- var parts = new[] { part1, part2, part3, part4 };
- return Get(messageCode, parts);
- }
-
- /// <summary>
- /// Sistem mesajlarýnýn mesaj koduna göre getirilmesini ve String.Format iţlemi 4 parametre gerektiriyorsa kullanýlýr.
- /// Kodun yazýlmasý sýrasýnda kolaylýk sađlamasý için yapýlmýţtýr.
- /// </summary>
- /// <param name="messageCode">*.msg dosyasýnda belirtilen mesajýn kodu</param>
- /// <param name="part1">Mesajýn içerisinde bulunan {0} parametresi</param>
- /// <param name="part2">Mesajýn içerisinde bulunan {1} parametresi</param>
- /// <param name="part3">Mesajýn içerisinde bulunan {2} parametresi</param>
- /// <param name="part4">Mesajýn içerisinde bulunan {3} parametresi</param>
- /// <param name="part5">Mesajýn içerisinde bulunan {4} parametresi</param>
- /// <returns>*.msg dosyasýnda belirtilen mesajýn koduna göre formatlanacak mesajýn gösterilecek hali</returns>
- public static string Get(string messageCode, string part1, string part2, string part3, string part4, string part5)
- {
- var parts = new[] { part1, part2, part3, part4, part5 };
- return Get(messageCode, parts);
- }
-
- /// <summary>
- /// Sistem mesajlarýnýn cache'e yüklenmesini sađlar
- /// </summary>
- /// <param name="refreshMessageCache">False olduđu durumda mesajlar cache'de daha önce bulunuyorsa tekrar yüklenmez.</param>
- private static void LoadApplicationMessages(bool refreshMessageCache)
- {
- if (!IsApplicationMessagesLoaded() || refreshMessageCache)
- {
- Hashtable messageTable = GetAllApplicationMessages();
- HttpContext.Current.Cache["ApplicationMessages"] = messageTable;
- }
- }
-
- /// <summary>
- /// Sistem mesajlarýnýn cache'de bulunup bulunmadýđýný belirtir.
- /// </summary>
- /// <returns>Cache'de bulunuyorsa True, bulunmuyorsa False</returns>
- private static bool IsApplicationMessagesLoaded()
- {
- return HttpContext.Current != null && HttpContext.Current.Cache["ApplicationMessages"] != null;
- }
-
- /// <summary>
- /// Mesaj dosyalarýný okuyarak tek bir Hashtable nesnesine aktarýr.
- /// Ayný mesaj kodu, ayný dosyada veya farklý dosyalarda bulunuyorsa tekrar yüklenmez. Ýlk yüklenen kabul edilir.
- /// </summary>
- /// <returns>Mesajlarýn bulunduđu Hashtable nesnesini döndürür.</returns>
- private static Hashtable GetAllApplicationMessages()
- {
- var messageFiles = FrameworkUtil.GetApplicationSettingsStartsWith("MessageFile");
- var messageTable = new Hashtable();
- foreach (string message in messageFiles.Cast<object>().Select(messageFile => File.ReadAllLines(HttpContext.Current.Server.MapPath("~/" + messageFile))).SelectMany(messages => messages.Where(message => !Cast.IsNull(message.Trim()) && !message.StartsWith("#") && !messageTable.ContainsKey(message.Split('=')[0]))))
- {
- messageTable.Add(message.Split('=')[0], message.Split('=')[1]);
- }
- return messageTable;
- }
- }
- }