public static void Main()
    {
        IMessagePrinter i1 = new MessagePrinter();
        MessagePrinter  m1 = new MessagePrinter();

        i1.PrintMessage();
        m1.PrintMessage();
        i1.Message = "New Message";
        m1.Message = "Another Message";
        i1.PrintMessage();
        m1.PrintMessage();
    }
Пример #2
0
        /// <summary>
        /// Метод, проверяющий наличие объекта в базе данных по имени
        /// </summary>
        /// <param name="obj_name">Искомый объект</param>
        /// <param name="obj_type">Тип объекта(таблица, триггер и т.д.)</param>
        /// <param name="CaseSensivity">Чувствительность регистра</param>
        /// <returns></returns>
        public override bool IsDBObjectExists(string obj_name, DataBaseObjects obj_type, bool CaseSensivity)
        {
            if (Connected)
            {
                //--Тут надо переделывать, т.к. в объектах нет колонок, да и ф-ции тоже разных типов! так что пока только таблички можно искать
                string sql = "";
                if (CaseSensivity)
                {
                    sql = string.Format("select 1 from sys.objects where type='{0}' and name='{1}'",
                                        GetObjectTypeCode(obj_type),
                                        obj_name);
                }
                else
                {
                    sql = string.Format("select 1 from sys.objects where type='{0}' and lower(name)=lower('{1}')",
                                        GetObjectTypeCode(obj_type),
                                        obj_name);
                }

                var exec_res = ExecuteScalarCommand(CreateCommand(sql).ExecuteScalar);
                if (exec_res != null && exec_res != DBNull.Value)
                {
                    return(true);
                }
            }
            else
            {
                if (MessagePrinter != null)
                {
                    MessagePrinter.PrintMessage(ErrorsManager.Messages.NotConnectedMsg, ErrorsManager.Messages.ErrorMsg, 1, 1);
                }
            }

            return(false);
        }
Пример #3
0
        public override bool IsDBObjectExists(string obj_name, DataBaseObjects obj_type, bool CaseSensivity)
        {
            //--надо смотреть табличку sqlite_master
            if (Connected)
            {
                string sql = "";
                if (CaseSensivity)
                {
                    sql = string.Format("select 1 from sqlite_master where type='{0}' and name='{1}'",
                                        GetObjectTypeCode(obj_type),
                                        obj_name);
                }
                else
                {
                    sql = string.Format("select 1 from sqlite_master where type='{0}' and lower(name)=lower('{1}')",
                                        GetObjectTypeCode(obj_type),
                                        obj_name);
                }

                var exec_res = ExecuteScalarCommand(CreateCommand(sql).ExecuteScalar);
                if (exec_res != null && exec_res != DBNull.Value)
                {
                    return(true);
                }
            }
            else
            {
                if (MessagePrinter != null)
                {
                    MessagePrinter.PrintMessage(ErrorsManager.Messages.NotConnectedMsg, ErrorsManager.Messages.ErrorMsg, 1, 1);
                }
            }

            return(false);
        }
Пример #4
0
        private void ProcessProductListPage(ProcessQueueItem pqi)
        {
            if (cancel)
            {
                return;
            }

            var wi   = (ExtWareInfo)pqi.Item;
            var html = PageRetriever.ReadFromServer(pqi.URL);
            var doc  = CreateDoc(html);

            pqi.Processed = true;

            var products = doc.DocumentNode.SelectNodes("//ul[contains(@class,'ProductList')]/li");

            if (products == null)
            {
                Log.Error(products, new NullReferenceException());

                return;
            }

            foreach (var product in products)
            {
                var a    = product.SelectSingleNode(".//div[@class='ProductDetails']/strong/a[@href]");
                var name = a.InnerTextOrNull();

                if (string.IsNullOrWhiteSpace(name))
                {
                    Log.Warn(product, new NullReferenceException());

                    continue;
                }

                var url = a.AttributeOrNull("href");

                wi.Url = url;

                lock (this)
                {
                    lstProcessQueue.Add(new ProcessQueueItem
                    {
                        Item     = wi,
                        Name     = name,
                        ItemType = ProcessLevels.ProductDetails,
                        URL      = url
                    });
                }
            }

            OnItemLoaded(null);
            pqi.Processed = true;

            MessagePrinter.PrintMessage("Product list processed");
            StartOrPushPropertiesThread();
        }
Пример #5
0
        private void formatAndPrintMessage(Message unFormatedMessage)
        {
            string formatedMessage =
                MessagePrinter.MessageFormatter.FormatMessage(
                    unFormatedMessage
                    );

            MessagePrinter.PrintMessage(formatedMessage);
            ClerkLog.LogFileManager.LogMessage(formatedMessage);
        }
Пример #6
0
        private void ProcessCategoryListPage(ProcessQueueItem pqi)
        {
            if (cancel)
            {
                return;
            }

            var html = PageRetriever.ReadFromServer(pqi.URL);
            var doc  = CreateDoc(html);

            pqi.Processed = true;

            var categories = doc.DocumentNode.SelectNodes("//ul[@class='category-list']/li/ul/li");

            if (categories == null)
            {
                Log.Error(categories, new NullReferenceException());
                return;
            }

            foreach (var category in categories)
            {
                var a    = category.SelectSingleNode(".//a[@href]");
                var name = a.InnerTextOrNull();

                if (string.IsNullOrWhiteSpace(name))
                {
                    Log.Warn(category, new NullReferenceException());
                    continue;
                }

                var wi = new ExtWareInfo
                {
                    Category = name
                };
                var url = a.AttributeOrNull("href");

                lock (this)
                {
                    lstProcessQueue.Add(new ProcessQueueItem
                    {
                        Item     = wi,
                        ItemType = ProcessLevels.SubCategory,
                        URL      = Url + url,
                        Name     = name
                    });
                }
            }

            OnItemLoaded(null);
            pqi.Processed = true;

            MessagePrinter.PrintMessage("Category list processed");
            StartOrPushPropertiesThread();
        }
Пример #7
0
        private void ProcessBrandsListPage(ProcessQueueItem pqi)
        {
            if (cancel)
            {
                return;
            }

            pqi.Processed = true;
            MessagePrinter.PrintMessage("Brands list processed");
            StartOrPushPropertiesThread();
        }
        private void PrintProgress(int minibatchNumber)
        {
            if (_trainer == null || Configuration?.MinibatchConfig == null)
            {
                throw new InvalidOperationException();
            }

            if ((minibatchNumber % Configuration.MinibatchConfig.HowManyMinibatchesPerProgressPrint) == 0 && _trainer.PreviousMinibatchSampleCount() != 0)
            {
                double trainLossValue  = _trainer.PreviousMinibatchLossAverage();
                double evaluationValue = _trainer.PreviousMinibatchEvaluationAverage();
                MessagePrinter.PrintMessage($"Minibatch: {minibatchNumber} CrossEntropyLoss = {trainLossValue}, EvaluationCriterion = {evaluationValue}");
            }
        }
Пример #9
0
        protected override void ExecuteCommand(ExecuteCmdDelegate proc)
        {
            try
            {
                proc.Invoke();
            }
            catch (DbException e)
            {
                if (MessagePrinter != null)
                {
                    MessagePrinter.PrintMessage(e.Message, ErrorsManager.Messages.DBErrorMsg, 1, 1);
                }

                _last_error = e.ErrorCode;
            }
        }
Пример #10
0
 /// <summary>
 /// Установить соединение с сервером
 /// </summary>
 /// <param name="ConnectionString">Строка инициализации</param>
 public override void Connect(string ConnectionString)
 {
     _connectionString = ConnectionString;
     _conn             = new MySqlConnection(ConnectionString);
     try
     {
         _conn.Open();
     }
     catch (MySqlException ex)
     {
         if (MessagePrinter != null)
         {
             MessagePrinter.PrintMessage(ex.Message, ErrorsManager.Messages.DBErrorMsg, 1, 1);
         }
     }
 }
Пример #11
0
 /// <summary>
 /// Обертка для выполнения DbCommand
 /// </summary>
 /// <param name="proc"></param>
 protected override void ExecuteCommand(ExecuteCmdDelegate proc)
 {
     try
     {
         _last_error = 0;
         proc.Invoke();
     }
     catch (SqlException e)
     {
         string msg = GetErrorMessage(e);
         if (MessagePrinter != null)
         {
             MessagePrinter.PrintMessage(msg, ErrorsManager.Messages.DBErrorMsg, 1, 1);
         }
     }
 }
Пример #12
0
        public override bool IsDBObjectExists(string obj_name, DataBaseObjects obj_type, bool CaseSensivity)
        {
            if (Connected)
            {
                string sql = "";
                if (CaseSensivity)
                {
                    sql = "select 1 from all_objects where object_name='{0}' and object_type='{1}'";
                    if (!string.IsNullOrEmpty(_owner))
                    {
                        sql += " and owner='{2}'";
                    }
                }
                else
                {
                    sql = "select 1 from all_objects where upper(object_name)=upper('{0}') and object_type='{1}'";
                    if (!string.IsNullOrEmpty(_owner))
                    {
                        sql += " and upper(owner)=upper('{2}')";
                    }
                }

                if (string.IsNullOrEmpty(_owner))
                {
                    sql = string.Format(sql, obj_name, GetObjectTypeCode(obj_type));
                }
                else
                {
                    sql = string.Format(sql, obj_name, GetObjectTypeCode(obj_type), _owner);
                }

                var exec_res = ExecuteScalarCommand(CreateCommand(sql).ExecuteScalar);
                if (exec_res != null && exec_res != DBNull.Value)
                {
                    return(true);
                }
            }
            else
            {
                if (MessagePrinter != null)
                {
                    MessagePrinter.PrintMessage(ErrorsManager.Messages.NotConnectedMsg, ErrorsManager.Messages.ErrorMsg, 1, 1);
                }
            }

            return(false);
        }
Пример #13
0
        /// <summary>
        /// Установить соединение с сервером
        /// </summary>
        /// <param name="ConnectionString">Строка инициализации</param>
        public override void Connect(string ConnectionString)
        {
            try
            {
                _conn = new OracleConnection(ConnectionString);
                _conn.Open();
            }
            catch (OracleException ex)
            {
                if (MessagePrinter != null)
                {
                    MessagePrinter.PrintMessage(ex.Message, ErrorsManager.Messages.DBErrorMsg, 1, 1);
                }

                _last_error = ex.ErrorCode;
            }
        }
Пример #14
0
        protected override DbDataReader ExecuteDataReader(ExecuteDataReaderCmdDelegate proc)
        {
            try
            {
                return(proc.Invoke());
            }
            catch (OracleException e)
            {
                if (MessagePrinter != null)
                {
                    MessagePrinter.PrintMessage(e.Message, ErrorsManager.Messages.DBErrorMsg, 1, 1);
                }

                _last_error = e.ErrorCode;
            }

            return(null);
        }
Пример #15
0
        protected override object ExecuteScalarCommand(ExecuteScalarCmdDelegate proc)
        {
            try
            {
                return(proc.Invoke());
            }
            catch (Npgsql.NpgsqlException e)
            {
                if (MessagePrinter != null)
                {
                    MessagePrinter.PrintMessage(e.Message, ErrorsManager.Messages.DBErrorMsg, 1, 1);
                }

                _last_error = e.ErrorCode;
            }

            return(null);
        }
Пример #16
0
        /// <summary>
        /// Обертка для выполнения DbCommand.ExecuteReader
        /// </summary>
        /// <param name="proc"></param>
        protected override DbDataReader ExecuteDataReader(ExecuteDataReaderCmdDelegate proc)
        {
            try
            {
                _last_error = 0;
                return(proc.Invoke());
            }
            catch (SqlException e)
            {
                string msg = GetErrorMessage(e);
                if (MessagePrinter != null)
                {
                    MessagePrinter.PrintMessage(msg, ErrorsManager.Messages.DBErrorMsg, 1, 1);
                }
            }

            return(null);
        }
Пример #17
0
        private void ProcessDetailsPage(ProcessQueueItem pqi)
        {
            if (cancel)
            {
                return;
            }

            var wi   = (ExtWareInfo)pqi.Item;
            var html = PageRetriever.ReadFromServer(pqi.URL);
            var doc  = CreateDoc(html);

            pqi.Processed = true;

            var details = doc.DocumentNode.SelectSingleNode("//div[@class='BlockContent']");

            if (details == null)
            {
                Log.Error(details, new NullReferenceException());
                return;
            }

            var images = details.SelectNodes("//div[@class='ProductTinyImageList']/ul/li/div[@class='TinyOuterDiv']/div/a[@rel]")
                         .Select(s => JsonConvert.DeserializeObject <ImageObject>(s.AttributeOrNull("rel")));
            var item = new ExtWareInfo
            {
                Category    = wi.Category,
                SubCategory = wi.SubCategory,
                Page        = wi.Page,
                Url         = wi.Url,
                Title       = details.SelectSingleNode("//h1").InnerTextOrNull(),
                Description = details.SelectSingleNode("//div[@class='ProductDescriptionContainer']").InnerTextOrNull(),
                Price       = ParsePrice(details.SelectSingleNode("//em[@class='ProductPrice VariationProductPrice']").InnerTextOrNull()),
                Weight      = ParseDouble(details.SelectSingleNode("//span[@class='VariationProductWeight']").InnerTextOrNull()),
                Images      = String.Join(";", images.Select(s => s.largeimage))
            };

            AddWareInfo(item);

            OnItemLoaded(null);
            MessagePrinter.PrintMessage("Product '" + item.Title + "' details processed");
            StartOrPushPropertiesThread();
        }
Пример #18
0
        public override void CreateTable(DataTable table, DataInsertMethod insert_method, bool PrepareTableForInsert)
        {
            //insert_method = DataInsertMethod.Normal;
            if (Connected)
            {
                base.CreateTable(table, insert_method, PrepareTableForInsert);

                string sqlsc;
                sqlsc = "CREATE TABLE " + table.TableName + "(";
                for (int i = 0; i < table.Columns.Count; i++)
                {
                    sqlsc += "\n" + table.Columns[i].ColumnName;
                    if (table.Columns[i].DataType.ToString().Contains("System.Int32") && !table.Columns[i].AutoIncrement)
                    {
                        sqlsc += " integer";
                    }
                    else if (table.Columns[i].DataType.ToString().Contains("System.Int32") && table.Columns[i].AutoIncrement)
                    {
                        sqlsc += " serial";
                    }
                    else if (table.Columns[i].DataType.ToString().Contains("System.Int64"))//--если будут ошибки, то заменить на bigint
                    {
                        sqlsc += " integer";
                    }
                    else if (table.Columns[i].DataType.ToString().Contains("System.DateTime"))
                    {
                        sqlsc += " date";
                    }
                    else if (table.Columns[i].DataType.ToString().Contains("System.Decimal"))
                    {
                        sqlsc += " decimal";//--возможны ошибки
                    }
                    else if (table.Columns[i].DataType.ToString().Contains("System.String"))
                    {
                        if (table.Columns[i].MaxLength <= 8000)
                        {
                            sqlsc += " varchar(" + (table.Columns[i].MaxLength > -1 ? table.Columns[i].MaxLength.ToString() : "50") + ")";
                        }
                        else
                        {
                            sqlsc += " text";
                        }
                    }

                    /*else if (table.Columns[i].DataType.ToString().Contains("System.Single"))
                     *  sqlsc += " single";*/
                    else if (table.Columns[i].DataType.ToString().Contains("System.Double"))
                    {
                        sqlsc += " real";
                    }
                    else if (table.Columns[i].DataType.ToString().Contains("System.Guid"))
                    {
                        sqlsc += " UUID";
                    }
                    else if (table.Columns[i].DataType.ToString().Contains("System.Boolean"))
                    {
                        sqlsc += " boolean";
                    }
                    else if (table.Columns[i].DataType.ToString().Contains("System.Byte"))
                    {
                        sqlsc += " smallint";
                    }
                    else if (table.Columns[i].DataType.ToString().Contains("System.Int16"))
                    {
                        sqlsc += " smallint";
                    }
                    else
                    {
                        sqlsc += " varchar(" + (table.Columns[i].MaxLength > -1 ? table.Columns[i].MaxLength.ToString() : "50") + ")";
                    }


                    //if (table.Columns[i].AutoIncrement)//--будут проблемы....
                    //    sqlsc += " serial";// +table.Columns[i].AutoIncrementSeed.ToString() + "," + table.Columns[i].AutoIncrementStep.ToString() + ")";
                    if (!table.Columns[i].AllowDBNull)
                    {
                        sqlsc += " NOT NULL ";
                    }
                    if (table.Columns[i].DefaultValue != null && table.Columns[i].DefaultValue != DBNull.Value)
                    {
                        sqlsc += " DEFAULT " + table.Columns[i].DefaultValue.ToString();
                    }
                    sqlsc += ",";
                }

                if (table.PrimaryKey.Length > 0)
                {
                    string pks = "\nCONSTRAINT PK_" + table.TableName + " PRIMARY KEY (";
                    for (int i = 0; i < table.PrimaryKey.Length; i++)
                    {
                        pks += table.PrimaryKey[i].ColumnName + ",";
                    }
                    pks    = pks.Substring(0, pks.Length - 1) + ")";
                    sqlsc += pks;
                    sqlsc  = sqlsc + ");";
                }
                else
                {
                    sqlsc = sqlsc.Substring(0, sqlsc.Length - 1) + ");";
                }

                ExecuteCommand(CreateCommand(sqlsc).ExecuteNonQuery);

                if (_last_error == 0)//--Если табличка успешно создана, то надо ее заполнить
                {
                    if (insert_method == DataInsertMethod.Normal)
                    {
                        InsertDataToDb(table, _parameters_prefix, PrepareTableForInsert);
                    }
                    if (insert_method == DataInsertMethod.FastIfPossible)
                    {
                        BeginTransaction();
                        InsertDataToDbBulkMethod(table);
                        CommitTransaction();
                    }
                }
                else
                {
                    if (MessagePrinter != null)
                    {
                        MessagePrinter.PrintMessage(ErrorsManager.Messages.DBErrorMsg, ErrorsManager.Messages.ErrorMsg, 1, 1);
                    }
                }
            }
            else
            {
                if (MessagePrinter != null)
                {
                    MessagePrinter.PrintMessage(ErrorsManager.Messages.NotConnectedMsg, ErrorsManager.Messages.ErrorMsg, 1, 1);
                }
            }
        }
        protected override void BuildNeuralNetwork(ITrainingDatasetDefinition datasetDefinition)
        {
            _input = datasetDefinition.AsInputFor(this);

            TrainingDataset      = datasetDefinition.BuildDatasetIfNotPresent();
            NetworkConfiguration = new ConvolutionalNeuralNetworkConfiguration(
                _input.ScaledForConvolutionalNetwork(this),
                (int)datasetDefinition.LabelsAmount,
                ClassifierName);

            //INPUT -> CONV -> RELU -> MAX POOL -> CONV -> RELU -> MAX POOL -> FC

            //28x28x1 -> 14x14x4
            NetworkConfiguration.AppendConvolutionLayer(
                new ConvolutionParams
            {
                FilterSize             = new Dimension2D(3, 3),
                Channels               = 1,
                OutputFeatureMapsCount = 4,
                Stride = new Stride3D(1, 1, 1)
            }, Device);

            NetworkConfiguration.AppendReluActivation();
            NetworkConfiguration.AppendPoolingLayer(
                new PoolingParams
            {
                Type          = PoolingType.Max,
                PoolingWindow = new Dimension2D(3, 3),
                Stride        = new Stride2D(2, 2)
            });

            //14x14x4 -> 7x7x8
            NetworkConfiguration.AppendConvolutionLayer(
                new ConvolutionParams
            {
                FilterSize             = new Dimension2D(3, 3),
                Channels               = 4,
                OutputFeatureMapsCount = 8,
                Stride = new Stride3D(1, 1, 4)
            }, Device);

            NetworkConfiguration.AppendTanHActivation();
            NetworkConfiguration.AppendPoolingLayer(
                new PoolingParams
            {
                Type          = PoolingType.Max,
                PoolingWindow = new Dimension2D(3, 3),
                Stride        = new Stride2D(2, 2)
            });

            //Fully Connect
            NetworkConfiguration.AppendFullyConnectedLinearLayer(Device);

            _networkClassifier = NetworkConfiguration.Evaluate();

            MessagePrinter.PrintMessage(NetworkConfiguration.ToString());

            _labels = CNTKLib.InputVariable(new int[] { (int)datasetDefinition.LabelsAmount }, DataType.Float, LabelsStreamName);
            _trainingLossFunction = CNTKLib.CrossEntropyWithSoftmax(new Variable(_networkClassifier), _labels, LossFunctionName);
            _evaluationFunction   = CNTKLib.ClassificationError(new Variable(_networkClassifier), _labels, ClassificationErrorName);
        }
Пример #20
0
        public override void CreateTable(DataTable table, DataInsertMethod insert_method, bool PrepareTableForInsert)
        {
            if (Connected)
            {
                base.CreateTable(table, insert_method, PrepareTableForInsert);

                string sqlsc;
                sqlsc = "CREATE TABLE " + table.TableName + "(";
                for (int i = 0; i < table.Columns.Count; i++)
                {
                    sqlsc += "" + table.Columns[i].ColumnName;
                    if (table.Columns[i].DataType.ToString().Contains("System.Int32"))
                    {
                        sqlsc += " number";
                    }
                    else if (table.Columns[i].DataType.ToString().Contains("System.DateTime"))
                    {
                        sqlsc += " datetime";
                    }
                    else if (table.Columns[i].DataType.ToString().Contains("System.String"))
                    {
                        sqlsc += " varchar2(" + (table.Columns[i].MaxLength > -1 ? table.Columns[i].MaxLength.ToString() : "50") + ")";
                    }

                    /*else if (table.Columns[i].DataType.ToString().Contains("System.Single"))
                     *  sqlsc += " single ";*/
                    else if (table.Columns[i].DataType.ToString().Contains("System.Double"))
                    {
                        sqlsc += " float";
                    }
                    else if (table.Columns[i].DataType.ToString().Contains("System.Guid"))
                    {
                        sqlsc += " raw(32)";
                    }
                    else if (table.Columns[i].DataType.ToString().Contains("System.Boolean"))
                    {
                        sqlsc += " number(1)";
                    }
                    else if (table.Columns[i].DataType.ToString().Contains("System.Byte"))
                    {
                        sqlsc += " number(1)";
                    }
                    else if (table.Columns[i].DataType.ToString().Contains("System.Int16"))
                    {
                        sqlsc += " number";
                    }
                    else
                    {
                        sqlsc += " varchar2(" + (table.Columns[i].MaxLength > -1 ? table.Columns[i].MaxLength.ToString() : "50") + ")";
                    }


                    #warning Придумать как сделать создание сиквенцов и привязку триггера

                    /*if (table.Columns[i].AutoIncrement)
                     *  sqlsc += " IDENTITY(" + table.Columns[i].AutoIncrementSeed.ToString() + "," + table.Columns[i].AutoIncrementStep.ToString() + ") ";*/
                    if (!table.Columns[i].AllowDBNull)
                    {
                        sqlsc += " NOT NULL";
                    }
                    if (table.Columns[i].DefaultValue != null && table.Columns[i].DefaultValue != DBNull.Value)
                    {
                        sqlsc += " DEFAULT " + table.Columns[i].DefaultValue.ToString();
                    }
                    sqlsc += ",";
                }

                if (table.PrimaryKey.Length > 0)
                {
                    string pks = "CONSTRAINT PK_" + table.TableName + " PRIMARY KEY (";
                    for (int i = 0; i < table.PrimaryKey.Length; i++)
                    {
                        pks += table.PrimaryKey[i].ColumnName + ",";
                    }
                    pks    = pks.Substring(0, pks.Length - 1) + ")";
                    sqlsc += pks;
                    sqlsc  = sqlsc + ")";
                }
                else
                {
                    sqlsc = sqlsc.Substring(0, sqlsc.Length - 1) + ");";
                }

                ExecuteCommand(CreateCommand(sqlsc).ExecuteNonQuery);

                if (_last_error == 0)//--Если табличка успешно создана, то надо ее заполнить
                {
                    if (insert_method == DataInsertMethod.Normal)
                    {
                        InsertDataToDb(table, _parameters_prefix, PrepareTableForInsert);
                    }
                    if (insert_method == DataInsertMethod.FastIfPossible)
                    {
                        InsertDataToDbBulkMethod(table);
                    }
                }
            }
            else
            {
                if (MessagePrinter != null)
                {
                    MessagePrinter.PrintMessage(ErrorsManager.Messages.NotConnectedMsg, ErrorsManager.Messages.ErrorMsg, 1, 1);
                }
            }
        }
Пример #21
0
        public override void CreateTable(DataTable table, DataInsertMethod insert_method, bool PrepareTableForInsert)
        {
            if (Connected)
            {
                base.CreateTable(table, insert_method, PrepareTableForInsert);

                string sqlsc;
                sqlsc = "CREATE TABLE " + table.TableName + "(";
                for (int i = 0; i < table.Columns.Count; i++)
                {
                    sqlsc += "\n" + table.Columns[i].ColumnName;
                    if (table.Columns[i].DataType.ToString().Contains("System.Int32"))
                    {
                        sqlsc += " integer";
                    }
                    else if (table.Columns[i].DataType.ToString().Contains("System.DateTime"))
                    {
                        sqlsc += " text";
                    }
                    else if (table.Columns[i].DataType.ToString().Contains("System.String"))
                    {
                        sqlsc += " text";
                    }
                    else if (table.Columns[i].DataType.ToString().Contains("System.Single"))
                    {
                        sqlsc += " integer";
                    }
                    else if (table.Columns[i].DataType.ToString().Contains("System.Double"))
                    {
                        sqlsc += " real";
                    }

                    /*else if (table.Columns[i].DataType.ToString().Contains("System.Double"))
                     *  sqlsc += " integer";*/
                    else if (table.Columns[i].DataType.ToString().Contains("System.Guid"))
                    {
                        sqlsc += " text";
                    }
                    else if (table.Columns[i].DataType.ToString().Contains("System.Boolean"))
                    {
                        sqlsc += " integer";
                    }
                    else if (table.Columns[i].DataType.ToString().Contains("System.Byte"))
                    {
                        sqlsc += " integer";
                    }
                    else if (table.Columns[i].DataType.ToString().Contains("System.Int16"))
                    {
                        sqlsc += " integer";
                    }
                    else if (table.Columns[i].DataType.ToString().Contains("System.Byte[]"))
                    {
                        sqlsc += " blob";
                    }
                    else
                    {
                        sqlsc += " text";
                    }

                    /*if (table.Columns[i].AutoIncrement)
                     *  sqlsc += " AUTOINCREMENT(" + table.Columns[i].AutoIncrementSeed.ToString() + "," + table.Columns[i].AutoIncrementStep.ToString() + ")";*/
                    if (!table.Columns[i].AllowDBNull)
                    {
                        sqlsc += " NOT NULL";
                    }
                    if (table.Columns[i].DefaultValue != null && table.Columns[i].DefaultValue != DBNull.Value)
                    {
                        sqlsc += " DEFAULT " + table.Columns[i].DefaultValue.ToString();
                    }
                    sqlsc += ",";
                }

                if (table.PrimaryKey.Length > 0)
                {
                    string pks = "\nCONSTRAINT PK_" + table.TableName + " PRIMARY KEY (";
                    for (int i = 0; i < table.PrimaryKey.Length; i++)
                    {
                        pks += table.PrimaryKey[i].ColumnName + ",";
                    }
                    pks    = pks.Substring(0, pks.Length - 1) + ")";
                    sqlsc += pks;
                    sqlsc  = sqlsc + ")";
                }
                else
                {
                    sqlsc = sqlsc.Substring(0, sqlsc.Length - 1) + ");";
                }

                ExecuteCommand(CreateCommand(sqlsc).ExecuteNonQuery);

                if (_last_error == 0)//--Если табличка успешно создана, то надо ее заполнить
                {
                    if (insert_method == DataInsertMethod.Normal)
                    {
                        InsertDataToDb(table, _parameters_prefix, PrepareTableForInsert);
                    }
                    if (insert_method == DataInsertMethod.FastIfPossible)
                    {
                        BeginTransaction();
                        InsertDataToDb(table, _parameters_prefix, PrepareTableForInsert);
                        CommitTransaction();
                    }
                }
            }
            else
            {
                if (MessagePrinter != null)
                {
                    MessagePrinter.PrintMessage(ErrorsManager.Messages.NotConnectedMsg, ErrorsManager.Messages.ErrorMsg, 1, 1);
                }
            }
        }
Пример #22
0
        private void ProcessProductPagerPage(ProcessQueueItem pqi)
        {
            if (cancel)
            {
                return;
            }


            var wi   = (ExtWareInfo)pqi.Item;
            var html = PageRetriever.ReadFromServer(pqi.URL);
            var doc  = CreateDoc(html);

            pqi.Processed = true;

            var pages = doc.DocumentNode.SelectNodes("//ul[@class='PagingList'][1]/li/a[@href]");

            if (pages == null)
            {
                wi.Page = 1;

                lock (this)
                {
                    lstProcessQueue.Add(new ProcessQueueItem
                    {
                        Item     = wi,
                        ItemType = ProcessLevels.ProductList,
                        URL      = pqi.URL
                    });
                }
            }
            else
            {
                wi.Page = 1;

                lock (this)
                {
                    lstProcessQueue.Add(new ProcessQueueItem
                    {
                        Item     = wi,
                        ItemType = ProcessLevels.ProductList,
                        URL      = pqi.URL
                    });
                }

                foreach (var page in pages)
                {
                    var name = page.InnerTextOrNull();

                    if (string.IsNullOrWhiteSpace(name))
                    {
                        Log.Warn(page, new NullReferenceException());
                        continue;
                    }

                    wi.Page = ParseInt(name);

                    lock (this)
                    {
                        lstProcessQueue.Add(new ProcessQueueItem
                        {
                            Item     = wi,
                            ItemType = ProcessLevels.ProductList,
                            URL      = page.AttributeOrNull("href")
                        });
                    }
                }
            }

            OnItemLoaded(null);
            pqi.Processed = true;

            MessagePrinter.PrintMessage("Product pager processed");
            StartOrPushPropertiesThread();
        }