Exemplo n.º 1
0
        public void Open(string aConnectionString, ServerType serverType)
        {
            dbCache.ConnectionString = aConnectionString;
            dbCache.ServerType       = serverType;
            switch (serverType)
            {
            case ServerType.Firebird:
                connection = new FbConnection {
                    ConnectionString = aConnectionString
                };
                break;

            case ServerType.MsSql:
                connection = new SqlConnection {
                    ConnectionString = aConnectionString
                };
                break;
            }
            connection.Open();

            if (serverType == ServerType.Firebird)
            {
                using (var transaction = connection.BeginTransaction())
                {
                    DbData.GetFieldValue(connection, transaction,
                                         "select rdb$set_context('USER_SESSION','RPL_SERVICE','1') from rdb$database;");
                    transaction.Commit();
                }
            }

            var t = new Thread(LoadData);

            t.Start();
        }
Exemplo n.º 2
0
        private void DoCacheLength()
        {
            cacheLength.Clear();
            DbConnection connection;

            if (ServerType == ServerType.Firebird)
            {
                connection = new FbConnection(ConnectionString);
            }
            else
            {
                connection = new SqlConnection(ConnectionString);
            }
            try
            {
                connection.Open();
                using (var transaction = connection.BeginTransaction())
                {
                    var databaseMap =
                        FiasDatabaseMap.LoadFromFile(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) +
                                                     "\\Fias.Mapping.xml");
                    foreach (var tableMap in databaseMap.Tables)
                    {
                        if (stopEvent.WaitOne(0))
                        {
                            return; //throw new StopException();
                        }
                        var pkFieldMap = tableMap.Fields.First(a => a.IsPrimaryKey);
                        var length     =
                            Convert.ToInt32(DbData.GetFieldValue(connection, transaction,
                                                                 string.Format("select count({0})from {1};", pkFieldMap.DatabaseName,
                                                                               tableMap.DatabaseName)));
                        cacheLength.Add(tableMap.DatabaseName, length);
                    }
                }
            }
            finally
            {
                connection.Dispose();
            }
        }
Exemplo n.º 3
0
        private void LoadData()
        {
            if (OnLoadDataStart != null)
            {
                OnLoadDataStart();
            }

            try
            {
                ClearList();
                var databaseMap = FiasDatabaseMap.LoadFromFile(RootFolder + "\\Fias.Mapping.xml");
                using (var transaction = connection.BeginTransaction())
                {
                    var dataFolder = RootFolder + "\\Data\\";
                    foreach (var dateFolder in Directory.GetDirectories(dataFolder).OrderBy(a => a))
                    {
                        var extractedFolder = dateFolder + "\\Extracted\\";
                        if (!Directory.Exists(extractedFolder))
                        {
                            continue;
                        }
                        foreach (var xmlFileName in Directory.GetFiles(extractedFolder))
                        {
                            var fInfo = new FiasFileInfo
                            {
                                Description = Path.GetFileName(dateFolder),
                                FileName    = xmlFileName
                            };
                            var fileName = Path.GetFileName(xmlFileName);
                            var dtImport = DbData.GetFieldValue(connection, transaction, string.Format("select DT_IMPORT from FIAS_IMPORT_HISTORY where name = '{0}';", fileName));
                            if (dtImport == null || dtImport is DBNull)
                            {
                                var c       = 0;
                                var updated = DbData.GetFieldValue(connection, transaction, string.Format("select LAST_COMMIT_COUNT from FIAS_IMPORT_HISTORY where name = '{0}';", fileName));
                                if (!(updated == null || updated is DBNull))
                                {
                                    c = Convert.ToInt32(updated);
                                }
                                fInfo.StatusPos = c;
                                fInfo.Status    = c == 0 ? string.Format("Пусто") : string.Format("Загружено записей {0}", c);
                                fInfo.IsExists  = false;
                            }
                            else
                            {
                                fInfo.Url      = dtImport.ToString();
                                fInfo.Status   = "Полностью загружен";
                                fInfo.IsExists = true;
                            }

                            var tableMap = databaseMap.Tables.FirstOrDefault(a =>
                            {
                                var name = Path.GetFileName(fInfo.FileName);
                                return(name != null && name.StartsWith(a.XmlDescription));
                            });
                            fInfo.Length  = tableMap == null ? 0 : tableMap.OrderNum;
                            fInfo.Checked = tableMap != null;
                            AddListItem(fInfo);
                        }
                    }
                }
            }
            finally
            {
                if (OnLoadDataComplete != null)
                {
                    OnLoadDataComplete();
                }
            }
        }