using System; using System.Globalization; using JetBrains.Annotations; using SDA.DataProvider.Core; namespace SDA.DataProvider { /// /// Az databázis-kiszolgálóval való működéshez szükséges osztálygyár. /// public abstract class SDAFactory { /// /// SDAFactory konstruktora. /// /// Command alapértelmezett timeout-ja. 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; /// /// Á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. /// 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); /// /// Az adatbázis-kiszolgáló specifikus osztálygyár példány. /// [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)); } } } }