using System; using System.Text.RegularExpressions; namespace Kreta.Framework.Entities { /// /// Segédosztály entitás funkcionalitások részére. /// public static class EntityUtil { // <> /// /// A jelenlegi nyelv indexe, kizárólag a generált kód használja, kézi kód számára tabu. /// public static int CurrentLanguageIndex { get { return LanguageContext.Current.LanguageIndex; } } /// /// Visszaadja egy asszociáció leírását, ha az definiált. /// /// A forrás tábla neve /// Az asszociáció kapcsolómezőjének neve /// Az asszociáció leírása, ha az létezik; egyébként 'N/A'. 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"; } } /// /// Reguláris kifejezéseket elemző függvény. A generált kód használja, kézi kód számára tabu. /// /// Ezt a karakterláncot elemezzük, hogy megfelel-e a kifejezésünknek /// Ezt a mintát keressuk a karakterláncban /// True, ha illeszkedik; egyébként false public static bool VerifyRegEx(char data, string regexPattern) { return VerifyRegEx(data.ToString(), regexPattern); } /// /// Reguláris kifejezéseket elemző függvény. A generált kód használja, kézi kód számára tabu. /// /// Ezt a karakterláncot elemezzük, hogy megfelel-e a kifejezésünknek /// Ezt a mintát keressuk a karakterláncban /// True, ha illeszkedik; egyébként false 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 /// /// Azonosító alapján feltölti az entitást adatbázisból. /// /// A betöltendő entitás /// A munkamenet azonosítója /// Az entitás azonosítója /// Az entitás verziószáma 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); } } /// /// Azonosító alapján feltölti az entitást adatbázisból. /// /// A betöltendő entitás /// A munkamenet azonosítója /// Az entitás azonosítója 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 } }