コード例 #1
0
        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);
            }
        }
コード例 #2
0
 //Проверка на содержание списка указанных таблиц 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); }
 }
コード例 #3
0
 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);
 }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
        //Выполнить запрос 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); }
        }
コード例 #6
0
        //Сжатие базы данных, 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);
            }
        }
コード例 #7
0
        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);
        }