kreta/Sda.DataProvider/Core/SDAFactory.cs
2024-03-13 00:33:46 +01:00

87 lines
2.9 KiB
C#

using System;
using System.Globalization;
using JetBrains.Annotations;
using SDA.DataProvider.Core;
namespace SDA.DataProvider
{
/// <summary>
/// Az databázis-kiszolgálóval való működéshez szükséges osztálygyár.
/// </summary>
public abstract class SDAFactory
{
/// <summary>
/// SDAFactory konstruktora.
/// </summary>
/// <param name="commandTimeout">Command alapértelmezett timeout-ja.</param>
public SDAFactory(int? commandTimeout)
{
CommandTimeout = commandTimeout;
}
private const bool UseOptimizations = false;
//ORA bulk insert (arrray dml) impl. needed
public bool UseOptimizedDataAccessLayer { get; set; } = UseOptimizations;
//ORA work needed to create a range sequence sp
public bool UseOptimizedIdGeneration { get; set; } = UseOptimizations;
//ORA ok
public bool UseOptimizedPrintName { get; set; } = UseOptimizations;
//ORA ok
public bool UseOptimizedOrgName { get; set; } = UseOptimizations;
//ORA ?
public bool UseOptimizedUpdateIratState { get; set; } = UseOptimizations;
//ORA ?
public bool UseOptimizedUserHandling { get; set; } = UseOptimizations;
//ORA ?
public bool UseOptimizedInteriorOrganizationHandling { get; set; } = UseOptimizations;
public bool UseOptimizedEntityCache { get; set; } = UseOptimizations;
/// <summary>
/// Általános command-k alapértelmezett timeout paramétere. Egy sql művelet hány másodpercig tartson.
///
/// Nem kötelező. Jelenleg MSSQL 300 sec-re van állítva, Oracle nincs beállítva.
/// </summary>
public int? CommandTimeout { get; internal set; }
[NotNull]
internal abstract SDAConnectionWrapper CreateConnection();
[NotNull]
internal abstract SDACommandWrapper CreateCommand();
[NotNull]
internal abstract SDADataAdapterWrapper CreateDataAdapter();
[NotNull]
internal abstract SDACommandBuilderWrapper CreateCommandBuilder();
[NotNull]
internal abstract SDACommandBuilderWrapper CreateCommandBuilder([NotNull] SDADataAdapterWrapper dataAdapter);
/// <summary>
/// Az adatbázis-kiszolgáló specifikus osztálygyár példány.
/// </summary>
[CanBeNull]
public static SDAFactory Instance { get; set; }
[NotNull]
internal static SDAFactory GetByDatabaseType(DatabaseType databaseType, int? commandTimeout)
{
switch (databaseType)
{
case DatabaseType.NativeMSSQL:
return new Factories.MSSQLFactory(commandTimeout);
default:
throw new NotSupportedException(string.Format(CultureInfo.InvariantCulture, "Database '{0}' not supported.", databaseType));
}
}
}
}