101 lines
3.5 KiB
C#
101 lines
3.5 KiB
C#
using System;
|
|
using System.Data;
|
|
using Kreta.Framework;
|
|
using Kreta.Framework.Util;
|
|
|
|
namespace Kreta.DataAccessManual.Util
|
|
{
|
|
public sealed class DictionaryItemCacheUtil
|
|
{
|
|
private const string DictionaryNamePostfix = "_DNAME";
|
|
private const string SeparatorString = ",;";
|
|
|
|
/// <summary>
|
|
/// Létrehoz új oszlopokat processedTable-ben {ColumnName}_DNAME névvel(ha még ilyen nevű oszlopok nem léteznek).
|
|
/// Kitölti a DictionaryCache-ből a columnNamesString értéke alapján {ColumnName}_DNAME értékét.
|
|
/// Ha már létezik a {ColumnName}_DNAME oszlop, akkor felülírja az oszlop tartalmát.
|
|
/// </summary>
|
|
/// <param name="processedTable"></param>
|
|
/// <param name="columnNamesString"></param>
|
|
public static void TableColumnFromDictionaryCache(DataTable processedTable, string columnNamesString)
|
|
{
|
|
#region Argumentnull-ellenőrzés
|
|
|
|
if (processedTable == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(processedTable));
|
|
}
|
|
|
|
if (columnNamesString == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(columnNamesString));
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Oszlopnevek kinyerése columnNamesString argumentumból
|
|
|
|
// oszlopnevek szeparálása
|
|
var separator = SeparatorString.ToCharArray();
|
|
var columnNames = columnNamesString.Split(separator);
|
|
var columnCount = columnNames.Length;
|
|
|
|
#endregion
|
|
|
|
#region Egzisztencia-ellenőrzés
|
|
|
|
for (var i = 0; i < columnCount; i++)
|
|
{
|
|
var columnName = columnNames[i];
|
|
if (processedTable.Columns.Contains(columnName) == false)
|
|
{
|
|
throw new ArgumentOutOfRangeException(nameof(columnNamesString), columnNamesString, @"The columnNamesString parameter contains columnName that not exists in the specified table!");
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Oszlopok hozzáadása
|
|
|
|
for (var i = 0; i < columnCount; i++)
|
|
{
|
|
var newColumnName = columnNames[i] + DictionaryNamePostfix;
|
|
if (processedTable.Columns[newColumnName] == null)
|
|
{
|
|
processedTable.Columns.Add(newColumnName);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Szövegek beállítása a cache-selt szótárból (nyelvesen)
|
|
|
|
// DNAME beállítás a cache-ből
|
|
foreach (DataRow dataRow in processedTable.Rows)
|
|
{
|
|
for (var i = 0; i < columnCount; i++)
|
|
{
|
|
var rowHasValue = true;
|
|
|
|
var newColumnName = columnNames[i] + DictionaryNamePostfix;
|
|
if (dataRow[columnNames[i]] == DBNull.Value || string.IsNullOrWhiteSpace(dataRow[columnNames[i]].ToString()))
|
|
{
|
|
rowHasValue = false;
|
|
}
|
|
|
|
if (rowHasValue)
|
|
{
|
|
var strActCache = Convert.ToInt32(dataRow[columnNames[i]]).GetItemNameFromCache(UserContext.Instance.SelectedTanevId);
|
|
dataRow[newColumnName] = strActCache;
|
|
}
|
|
else
|
|
{
|
|
dataRow[newColumnName] = string.Empty;
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|
|
}
|