This commit is contained in:
skidoodle 2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View file

@ -0,0 +1,177 @@
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
}
}