177 lines
6.2 KiB
C#
177 lines
6.2 KiB
C#
using System;
|
|
using System.Text.RegularExpressions;
|
|
|
|
namespace Kreta.Framework.Entities
|
|
{
|
|
/// <summary>
|
|
/// Segédosztály entitás funkcionalitások részére.
|
|
/// </summary>
|
|
public static class EntityUtil
|
|
{
|
|
// <<Facade>>
|
|
|
|
/// <summary>
|
|
/// A jelenlegi nyelv indexe, kizárólag a generált kód használja, kézi kód számára tabu.
|
|
/// </summary>
|
|
public static int CurrentLanguageIndex
|
|
{
|
|
get
|
|
{
|
|
return LanguageContext.Current.LanguageIndex;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Visszaadja egy asszociáció leírását, ha az definiált.
|
|
/// </summary>
|
|
/// <param name="sourceTable">A forrás tábla neve</param>
|
|
/// <param name="sourceColumn">Az asszociáció kapcsolómezőjének neve</param>
|
|
/// <returns>Az asszociáció leírása, ha az létezik; egyébként 'N/A'.</returns>
|
|
public static string GetAssociationDescription(string sourceTable, string sourceColumn)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(sourceTable) || string.IsNullOrWhiteSpace(sourceColumn))
|
|
{
|
|
return "N/A";
|
|
}
|
|
|
|
try
|
|
{
|
|
using (SDA.DataProvider.SDACommand command = new SDA.DataProvider.SDACommand())
|
|
{
|
|
command.Connection = UserContext.Instance.SDAConnection;
|
|
command.Transaction = UserContext.Instance.SDATransaction;
|
|
command.CommandText = @"
|
|
select distinct
|
|
T_DSTRANSLATION.C_DISPLAYTEXT
|
|
from
|
|
T_FDLPALETTELINK
|
|
left join T_DSTRANSLATION on T_DSTRANSLATION.C_FDLPALETTELINKID = T_FDLPALETTELINK.ID
|
|
where
|
|
lower(T_FDLPALETTELINK.C_DBKEYTABLEOFSOURCE) = :pTABLE
|
|
and
|
|
lower(T_FDLPALETTELINK.C_DBKEYFIELDOFSOURCE) = :pCOLUMN
|
|
";
|
|
command.Parameters.Add("pTABLE", sourceTable.ToLower());
|
|
command.Parameters.Add("pCOLUMN", sourceColumn.ToLower());
|
|
object result = command.ExecuteScalar();
|
|
if (result != null && !(result is DBNull))
|
|
{
|
|
return result.ToString().Replace("\u0001", "\n");
|
|
}
|
|
|
|
return "N/A";
|
|
}
|
|
}
|
|
catch (Exception exception)
|
|
{
|
|
SDAServer.Instance.Logger.ExceptionThrown(exception);
|
|
return "N/A";
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Reguláris kifejezéseket elemző függvény. A generált kód használja, kézi kód számára tabu.
|
|
/// </summary>
|
|
/// <param name="data">Ezt a karakterláncot elemezzük, hogy megfelel-e a kifejezésünknek</param>
|
|
/// <param name="regexPattern">Ezt a mintát keressuk a karakterláncban</param>
|
|
/// <returns>True, ha illeszkedik; egyébként false</returns>
|
|
public static bool VerifyRegEx(char data, string regexPattern)
|
|
{
|
|
return VerifyRegEx(data.ToString(), regexPattern);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Reguláris kifejezéseket elemző függvény. A generált kód használja, kézi kód számára tabu.
|
|
/// </summary>
|
|
/// <param name="data">Ezt a karakterláncot elemezzük, hogy megfelel-e a kifejezésünknek</param>
|
|
/// <param name="regexPattern">Ezt a mintát keressuk a karakterláncban</param>
|
|
/// <returns>True, ha illeszkedik; egyébként false</returns>
|
|
public static bool VerifyRegEx(string data, string regexPattern)
|
|
{
|
|
if (data == null)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
RegexOptions options = RegexOptions.Singleline;
|
|
MatchCollection matches = Regex.Matches(data, regexPattern, options);
|
|
|
|
foreach (Match match in matches)
|
|
{
|
|
if (match.Success && match.Index == 0 && match.Length == data.Length)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
#region CRUD Logika weben
|
|
|
|
/// <summary>
|
|
/// Azonosító alapján feltölti az entitást adatbázisból.
|
|
/// </summary>
|
|
/// <param name="entity">A betöltendő entitás</param>
|
|
/// <param name="sessionId">A munkamenet azonosítója</param>
|
|
/// <param name="id">Az entitás azonosítója</param>
|
|
/// <param name="serial">Az entitás verziószáma</param>
|
|
public static void LoadById(Entity entity, string sessionId, int id, int serial)
|
|
{
|
|
if (UserContext.Instance == null)
|
|
{
|
|
try
|
|
{
|
|
SDAServer.Instance.SessionManager.ActivateSession(sessionId);
|
|
entity.LoadByID(id, serial);
|
|
}
|
|
catch (Exception exception)
|
|
{
|
|
SDAServer.Instance.Logger.ExceptionThrown(exception);
|
|
throw;
|
|
}
|
|
finally
|
|
{
|
|
SDAServer.Instance.SessionManager.DeActivateSession(sessionId);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
entity.LoadByID(id, serial);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Azonosító alapján feltölti az entitást adatbázisból.
|
|
/// </summary>
|
|
/// <param name="entity">A betöltendő entitás</param>
|
|
/// <param name="sessionId">A munkamenet azonosítója</param>
|
|
/// <param name="id">Az entitás azonosítója</param>
|
|
public static void LoadById(Entity entity, string sessionId, int id)
|
|
{
|
|
if (UserContext.Instance == null)
|
|
{
|
|
try
|
|
{
|
|
SDAServer.Instance.SessionManager.ActivateSession(sessionId);
|
|
entity.LoadByID(id);
|
|
}
|
|
catch (Exception exception)
|
|
{
|
|
SDAServer.Instance.Logger.ExceptionThrown(exception);
|
|
throw;
|
|
}
|
|
finally
|
|
{
|
|
SDAServer.Instance.SessionManager.DeActivateSession(sessionId);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
entity.LoadByID(id);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|