using System;
using SDA.DataProvider;
namespace Kreta.Framework.Entities
{
///
/// A generált DataAccessor-ok által használt statikus segédosztály,
/// a generált kód mennyiségének csökkentésére. Az osztály kézzel írt kód számára tabu.
///
///
/// Az osztály metódusai teljesítménykritikusak, ezért paraméterellenőrzés nem történik bennük,
/// megbízunk a hívóban.
///
public sealed class DAUtil
{
// <>
///
/// Az osztály alapértelmezett konstruktora.
///
/// Az osztály statikus, példányosítását nem szándékozzuk.
private DAUtil()
{
}
///
/// Létrehoz egy új SDA.DataProvider.SDACommand parancsobjektumot,
/// és inicializálja a Commandtext, Connection, Transaction tulajdonságait.
///
/// A parancsobjektum sql szövege
/// A létrehozott parancsobjektum
public static SDACommand CreateCommand(string commandText)
{
SDACommand result = new SDACommand
{
CommandText = commandText,
Connection = UserContext.Instance.SDAConnection,
Transaction = UserContext.Instance.SDATransaction
};
return result;
}
///
/// Az entitás felvétele után utólag lekérdezi az entitás ID-ját.
///
///
public static int? GetEntityID(SDAConnection connection, SDATransaction transaction)
{
using (SDACommand command = new SDACommand())
{
command.Connection = connection;
command.Transaction = transaction;
command.CommandText = "SELECT @@IDENTITY as ID";
var id = command.ExecuteScalar();
return id != DBNull.Value ? Convert.ToInt32(id) : (int?)null;
}
}
#region BindParameter
///
/// Hozzáad a parancsobjektumhoz egy új paramétert.
///
/// A tulajdonos objektum
/// A paraméter neve
/// A paraméter típusa
/// A paraméter hossza
/// A paraméter értéke
/// A paraméter null-e vagy sem
public static void BindParameter(SDA.DataProvider.SDACommand command, string parameterName, SDA.DataProvider.SDADBType type, int length, object value, bool isNull)
{
if (isNull || value == null)
{
command.Parameters.Add(parameterName, type, length).Value = DBNull.Value;
}
else
{
command.Parameters.Add(parameterName, type, length).Value = value;
}
}
///
/// Hozzáad a parancsobjektumhoz egy új paramétert.
///
/// A tulajdonos objektum
/// A paraméter neve
/// A paraméter típusa
/// A paraméter értéke
/// A paraméter null-e vagy sem
public static void BindParameter(SDA.DataProvider.SDACommand command, string parameterName, SDA.DataProvider.SDADBType type, object value, bool isNull)
{
if (isNull || value == null)
{
command.Parameters.Add(parameterName, type).Value = DBNull.Value;
}
else
{
command.Parameters.Add(parameterName, type).Value = value;
}
}
///
/// Hozzáad a parancsobjektumhoz egy új paramétert.
///
/// A tulajdonos objektum
/// A paraméter neve
/// A paraméter értéke
public static void BindIdParameter(SDA.DataProvider.SDACommand command, string parameterName, int value)
{
if (value == -1)
{
command.Parameters.Add(parameterName, SDA.DataProvider.SDADBType.Int).Value = DBNull.Value;
}
else
{
command.Parameters.Add(parameterName, SDA.DataProvider.SDADBType.Int).Value = value;
}
}
#endregion
#region ReadAttribute
///
/// Bináris típusú attribútum értékét olvassa be.
///
/// A forrás objektum
/// Az attribútum indexe
/// Alapértelmezett érték null olvasása esetén
/// True, ha nem null lett olvasva; egyébként false
public static bool ReadBinaryAttribute(SDA.DataProvider.SDADataReader reader, int index, ref byte[] target, ref bool isNull, byte[] defaultValue)
{
if (reader.IsDBNull(index))
{
isNull = true;
target = defaultValue;
return false;
}
isNull = false;
target = (byte[])reader.GetValue(index);
return true;
}
public static byte[] ReadBinaryAttribute(SDA.DataProvider.SDADataReader reader, int index, byte[] defaultValue)
{
if (reader.IsDBNull(index))
{
return defaultValue;
}
return (byte[])reader.GetValue(index);
}
public static byte[] ReadBinaryAttribute(SDA.DataProvider.SDADataReader reader, int index)
{
if (reader.IsDBNull(index))
{
return null;
}
return (byte[])reader.GetValue(index);
}
///
/// Logikai típusú attribútum értékét olvassa be.
///
/// A forrás objektum
/// Az attribútum indexe
/// Alapértelmezett érték null olvasása esetén
/// True, ha nem null lett olvasva; egyébként false
public static bool ReadBooleanAttribute(SDA.DataProvider.SDADataReader reader, int index, ref bool target, ref bool isNull, bool defaultValue)
{
if (reader.IsDBNull(index))
{
isNull = true;
target = defaultValue;
return false;
}
isNull = false;
char tmp = reader.GetString(index)[0];
target = (tmp == 'T' || tmp == 'I');
return true;
}
public static bool ReadBooleanAttribute(SDA.DataProvider.SDADataReader reader, int index, bool defaultValue)
{
if (reader.IsDBNull(index))
{
return defaultValue;
}
char tmp = reader.GetString(index)[0];
return (tmp == 'T' || tmp == 'I');
}
public static bool? ReadBooleanAttribute(SDA.DataProvider.SDADataReader reader, int index)
{
if (reader.IsDBNull(index))
{
return null;
}
char tmp = reader.GetString(index)[0];
return (tmp == 'T' || tmp == 'I');
}
///
/// Dátum típusú attribútum értékét olvassa be.
///
/// A forrás objektum
/// Az attribútum indexe
/// Alapértelmezett érték null olvasása esetén
/// True, ha nem null lett olvasva; egyébként false
public static bool ReadDateTimeAttribute(SDA.DataProvider.SDADataReader reader, int index, ref DateTime target, ref bool isNull, DateTime defaultValue)
{
if (reader.IsDBNull(index))
{
isNull = true;
target = defaultValue;
return false;
}
isNull = false;
target = reader.GetDateTime(index);
return true;
}
public static DateTime ReadDateTimeAttribute(SDA.DataProvider.SDADataReader reader, int index, DateTime defaultValue)
{
if (reader.IsDBNull(index))
{
return defaultValue;
}
return reader.GetDateTime(index);
}
public static DateTime? ReadDateTimeAttribute(SDA.DataProvider.SDADataReader reader, int index)
{
if (reader.IsDBNull(index))
{
return null;
}
return reader.GetDateTime(index);
}
///
/// Lebegőpontos típusú attribútum értékét olvassa be.
///
/// A forrás objektum
/// Az attribútum indexe
/// Alapértelmezett érték null olvasása esetén
/// True, ha nem null lett olvasva; egyébként false
public static bool ReadDoubleAttribute(SDA.DataProvider.SDADataReader reader, int index, ref double target, ref bool isNull, double defaultValue)
{
if (reader.IsDBNull(index))
{
isNull = true;
target = defaultValue;
return false;
}
isNull = false;
target = Convert.ToDouble(reader.GetValue(index));
return true;
}
public static double ReadDoubleAttribute(SDA.DataProvider.SDADataReader reader, int index, double defaultValue)
{
if (reader.IsDBNull(index))
{
return defaultValue;
}
return Convert.ToDouble(reader.GetValue(index));
}
public static double? ReadDoubleAttribute(SDA.DataProvider.SDADataReader reader, int index)
{
if (reader.IsDBNull(index))
{
return null;
}
return Convert.ToDouble(reader.GetValue(index));
}
///
/// ID típusú attribútum értékét olvassa be.
///
/// A forrás objektum
/// Az attribútum indexe
/// A cél
/// Alapértelmezett érték null olvasása esetén
/// True, ha nem null lett olvasva; egyébként false
public static bool ReadIDAttribute(SDA.DataProvider.SDADataReader reader, int index, ref int target, int defaultValue)
{
if (reader.IsDBNull(index))
{
target = defaultValue;
return false;
}
target = Convert.ToInt32(reader.GetValue(index));
return true;
}
///
/// Egész típusú attribútum értékét olvassa be.
///
/// A forrás objektum
/// Az attribútum indexe
/// Alapértelmezett érték null olvasása esetén
/// True, ha nem null lett olvasva; egyébként false
public static bool ReadIntegerAttribute(SDA.DataProvider.SDADataReader reader, int index, ref int target, ref bool isNull, int defaultValue)
{
if (reader.IsDBNull(index))
{
isNull = true;
target = defaultValue;
return false;
}
isNull = false;
target = Convert.ToInt32(reader.GetValue(index));
return true;
}
public static int ReadIntegerAttribute(SDA.DataProvider.SDADataReader reader, int index, int defaultValue)
{
if (reader.IsDBNull(index))
{
return defaultValue;
}
return Convert.ToInt32(reader.GetValue(index));
}
public static int? ReadIntegerAttribute(SDA.DataProvider.SDADataReader reader, int index)
{
if (reader.IsDBNull(index))
{
return null;
}
return Convert.ToInt32(reader.GetValue(index));
}
///
/// Karakterlánc típusú attribútum értékét olvassa be.
///
/// A forrás objektum
/// Az attribútum indexe
/// A cél
/// Null-t olvasott vagy nem null-t
/// Alapértelmezett érték null olvasása esetén
/// True, ha nem null lett olvasva; egyébként false
public static bool ReadStringAttribute(SDA.DataProvider.SDADataReader reader, int index, ref string target, ref bool isNull, string defaultValue)
{
if (reader.IsDBNull(index))
{
isNull = true;
target = defaultValue;
return false;
}
isNull = false;
target = reader.GetString(index);
return true;
}
public static string ReadStringAttribute(SDA.DataProvider.SDADataReader reader, int index, string defaultValue)
{
if (reader.IsDBNull(index))
{
return defaultValue;
}
return reader.GetString(index);
}
public static string ReadStringAttribute(SDA.DataProvider.SDADataReader reader, int index)
{
if (reader.IsDBNull(index))
{
return null;
}
return reader.GetString(index);
}
public static bool ReadGuidAttribute(SDA.DataProvider.SDADataReader reader, int index, ref Guid target, ref bool isNull, Guid defaultValue)
{
if (reader.IsDBNull(index))
{
isNull = true;
target = defaultValue;
return false;
}
isNull = false;
target = Guid.Parse(reader.GetString(index));
return true;
}
public static Guid ReadGuidAttribute(SDA.DataProvider.SDADataReader reader, int index, Guid defaultValue)
{
if (reader.IsDBNull(index))
{
return defaultValue;
}
return reader.GetGuid(index);
}
public static Guid? ReadGuidAttribute(SDA.DataProvider.SDADataReader reader, int index)
{
if (reader.IsDBNull(index))
{
return null;
}
return reader.GetGuid(index);
}
#endregion
#region Read methods for framework
///
/// DateTime? típusú értékét olvas be
///
/// A forrás objektum
/// Az attribútum indexe
/// A beolvasott dátum, vagy null
internal static DateTime? ReadDateTime(SDA.DataProvider.SDADataReader reader, int index)
{
if (reader.IsDBNull(index))
{
return null;
}
return reader.GetDateTime(index);
}
///
/// Karakterlánc típusú attribútum értékét olvas be
///
/// A forrás objektum
/// Az attribútum indexe
/// A beolvasott string vagy null
internal static string ReadString(SDA.DataProvider.SDADataReader reader, int index)
{
if (reader.IsDBNull(index))
{
return null;
}
return reader.GetString(index);
}
#endregion
}
}