public void TestDateTimeOffset() { var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("GTB Standard Time"); DateTimeOffset dateTimeOffset; if (DateTimeOffset.TryParseExact("2015-10-26", "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTimeOffset)) { var timeSpan = timeZoneInfo.GetUtcOffset(dateTimeOffset); dateTimeOffset = new DateTimeOffset(dateTimeOffset.Ticks, timeSpan); var timeZone = dateTimeOffset.ToString("zzz"); } foreach (var item in TimeZoneInfo.GetSystemTimeZones()) { var timeSpan = item.GetUtcOffset(dateTimeOffset); dateTimeOffset = new DateTimeOffset(dateTimeOffset.Ticks, timeSpan); } if (!DateTimeOffset.TryParseExact(string.Format("2015-10-28 21:16:50 {0}", DateTimeOffset.Now.ToString("zzz")), "yyyy-MM-dd HH:mm:ss zzz", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTimeOffset)) { dateTimeOffset = dateTimeOffset.Add(TimeSpan.Parse("00:00:01")); } if (DateTimeOffset.TryParseExact("2014-09-06 08:06:40 +03:00", "yyyy-MM-dd HH:mm:ss zzz", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTimeOffset)) { dateTimeOffset = dateTimeOffset.Add(-TimeSpan.Parse("00:00:01")); var eventEntity = new Event { RegisteredOn = new DateTimeOffset(dateTimeOffset.Date.Add(TimeSpan.Parse("09:00:00")), dateTimeOffset.Offset) }; var serialized = EngineStatic.PortableXmlSerialize(eventEntity); } }
//Проверка на содержание списка указанных таблиц tables в указанной базе данных file //Возвращает true, если проверка прошла удачно public static bool Check(string file, IEnumerable <string> tables = null) { try { if (file.IsEmpty() || !new FileInfo(file).Exists) { return(false); } Database db = EngineStatic.OpenDatabase(file); try { var missing = new SortedSet <string>(); if (tables != null) { foreach (var table in tables) { missing.Add(table); } foreach (var t in db.TableDefs) { string s = ((TableDef)t).Name; if (missing.Contains(s)) { missing.Remove(s); } } } return(missing.Count == 0); } finally { CloseDatabase(db); } } catch { return(false); } }
public void TestMethodDayResumeSelect() { Kernel.Instance.Start(); var modelLogic = new ModelLogic(); var dayPredicate = new DayPredicate { Date = new Criteria <DateInterval>(new DateInterval(DateIntervalType.CurrentYear)) }; var serialized = EngineStatic.PortableXmlSerialize(dayPredicate); var genericOutput = modelLogic.DayResumeSelect(dayPredicate); }
public void TestMethodExtractTransformAnalyse() { Kernel.Instance.Start(); var modelLogic = new ModelLogic(); var source = new Source { Date = DateTimeOffset.Now, SourceFileType = SourceFileType.Csv, LoadedOn = DateTimeOffset.Now }; using (source.StreamReader = new StreamReader(@"..\..\Data\online_export.txt")) { modelLogic.Extract(source); modelLogic.Transform(source); modelLogic.Analyse(source); var serialized = EngineStatic.PortableXmlSerialize(source); } }
//Выполнить запрос file - путь к файлу базы данных или сама база, StSql - строка запроса, options - опции запроса public static void Execute(string file, string stSql, object options = null) { if (file.IsEmpty() || stSql.IsEmpty()) { throw new NullReferenceException("Файл базы данных и строка запроса не могут быть пустыми или null"); } Database db = EngineStatic.OpenDatabase(file); try { if (options == null) { db.Execute(stSql); } else { db.Execute(stSql, options); } } finally { CloseDatabase(db); } }
//Сжатие базы данных, file - файл базы, size - размер а байтах, после которого нужно сжимать, //tmpDir - каталог временных фалов, timeout - время ожидания после сжатия в мс //Возвращает nul если все хорошо или Exception public static void Compress(string file, int size, string tmpDir = null, int timeout = 0) { if (file.IsEmpty()) { throw new NullReferenceException("Файл сжимаемой базы данных не может быть пустой строкой или null"); } var fdb = new FileInfo(file); if (fdb.Length < size) { return; } string sdir = fdb.Directory.FullName; if (tmpDir != null) { var dir = new DirectoryInfo(tmpDir); if (!dir.Exists) { dir.Create(); } sdir = tmpDir; } var ftmp = new FileInfo(sdir + @"\Tmp" + fdb.Name); if (ftmp.Exists) { ftmp.Delete(); } fdb.MoveTo(ftmp.FullName); new FileInfo(file).Delete(); EngineStatic.CompactDatabase(ftmp.FullName, file); EngineStatic.FreeLocks(); _engineStatic = null; if (timeout > 0) { Thread.Sleep(timeout); } }
private static GenericOutput <T> Action <T, P>(string storedProcedureName, GenericInput <T, P> genericInput) where T : GenericEntity where P : GenericPredicate { var genericOutput = new GenericOutput <T> { ActionType = genericInput.ActionType, Pager = new Pager(), Entities = new List <T>() }; if (genericInput.Predicate != null && genericInput.Predicate.Pager != null) { genericOutput.Pager = genericInput.Predicate.Pager; } var sqlCommand = new SqlCommand { CommandText = storedProcedureName, CommandType = CommandType.StoredProcedure }; sqlCommand.Parameters.AddWithValue("@genericInput", EngineStatic.PortableXmlSerialize(genericInput)); var number = new SqlParameter { ParameterName = "@number", Direction = ParameterDirection.Output, DbType = DbType.Int32 }; sqlCommand.Parameters.Add(number); using (var sqlConnection = new SqlConnection(Kernel.Instance.ServiceConfiguration.DatabaseConnectionString.ConnectionString)) { sqlConnection.Open(); sqlCommand.Connection = sqlConnection; Kernel.SetDatabaseTimeout(sqlCommand); using (var dataReader = sqlCommand.ExecuteReader()) { while (dataReader.Read()) { var keyValues = new Dictionary <string, object>(); for (var index = 0; index < dataReader.FieldCount; index++) { if (dataReader.IsDBNull(index)) { continue; } keyValues.Add(dataReader.GetName(index), dataReader.GetValue(index)); } var genericEntity = (T)Activator.CreateInstance(typeof(T)); var undefined = genericEntity.Map(keyValues); if (!undefined) { genericOutput.Entities.Add(genericEntity); } } } sqlConnection.Close(); } if (number.Value != DBNull.Value) { genericOutput.Pager.Number = (int)number.Value; } if (genericOutput.Entities.Count > 0) { genericOutput.Entity = genericOutput.Entities[0]; genericOutput.Pager.Count = genericOutput.Entities.Count; } return(genericOutput); }