コード例 #1
0
        public void invoiceByName()
        {
            InvoiceDataAccessor daInvoice = new InvoiceDataAccessor();
            DataSet1 dataSet1 = new DataSet1();
            AbstractConnection connection = null;
            AbstractTransaction transaction = null;
            try
            {
                connection = DBFactory.createConnection();
                connection.open();
                transaction = connection.beginTransaction();
                daInvoice.Read(connection, transaction, dataSet1);
                transaction.commit();
            }
            catch (Exception e)
            {
                transaction.rollback();
            }
            finally
            {
                connection.close();
            }

            List<DataRow> list = dataSet1.invoice.Select("invoice_number = '000001'").OfType<DataRow>().ToList();

            Assert.That(list.Count, Is.EqualTo(1));

            Assert.That((int)(list[0]["id"]), Is.EqualTo(1));
            Assert.That((string)(list[0]["invoice_number"]), Is.EqualTo("000001"));
            Assert.That((int)(list[0]["organization_id"]), Is.EqualTo(2));
        }
コード例 #2
0
        public void GetAll()
        {
            //Setup();
            InvoiceDataAccessor daInvoice = new InvoiceDataAccessor();
            DataSet1 dataSet1 = new DataSet1();
            AbstractConnection connection = null;
            AbstractTransaction transaction = null;
            try
            {
                connection = DBFactory.createConnection();
                connection.open();
                transaction = connection.beginTransaction();
                daInvoice.Read(connection, transaction, dataSet1);
                transaction.commit();
            }
            catch (Exception e)
            {
                transaction.rollback();
            }
            finally
            {
                connection.close();
            }

            List<DataRow> list = dataSet1.invoice.Select().OfType<DataRow>().ToList();
            list.Sort((x, y) => ((int)x["id"]).CompareTo((int)y["id"]));  //сортируем по ид

            Assert.That(1, Is.EqualTo(1));
            Assert.That(list.Count, Is.EqualTo(2));
            Assert.That((int)(list[0]["id"]), Is.EqualTo(1));
            Assert.That((string)(list[0]["invoice_number"]), Is.EqualTo("000001"));
            Assert.That((int)(list[0]["organization_id"]), Is.EqualTo(2));
        }
コード例 #3
0
        public void Read(AbstractConnection c, AbstractTransaction t, DataSet1 ds)
        {
            MySqlDataAdapter a = new MySqlDataAdapter();

            a.SelectCommand = new MySqlCommand("SELECT * FROM invoice", c.get(), t.get());
            a.Fill(ds, "invoice");
        }
コード例 #4
0
        public void SightDelete()
        {
            AbstractConnection abstractConnection = ConnectionFactory.CreateConnection();

            abstractConnection.Open();
            TouristDataSet      ds = new TouristDataSet();
            SightDataAccessor   sightDataAccessor   = new SightDataAccessor();
            AbstractTransaction abstractTransaction = abstractConnection.BeginTransaction();

            //Читаем данные с БД в датасет и смотрим число строк
            sightDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);
            int countElements = ds.Sight.Count;

            ds.Sight.Clear();

            //Добавляем строку в датасет и записываем в БД
            ds.Sight.AddSightRow("String", "ToDelete");
            sightDataAccessor.WriteData(abstractTransaction, abstractConnection, ds);

            //Чистим датасет, записываем в него ещё раз и удаляем из него последнюю запись
            ds.Sight.Clear();
            sightDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);
            ds.Sight[countElements].Delete();

            //Пишем в БД и снова читаем из неё в датасет
            sightDataAccessor.WriteData(abstractTransaction, abstractConnection, ds);
            ds.Sight.Clear();
            sightDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);

            abstractTransaction.Commit();
            abstractConnection.Close();

            //Смотрим число строк до всех манипуляций и после
            Assert.AreEqual(ds.Sight.Count, countElements);
        }
コード例 #5
0
        private void write(IDataAccessor da)
        {
            bool exx = false;
            AbstractConnection  connection  = null;
            AbstractTransaction transaction = null;

            try
            {
                connection = DBFactory.CreateConnection();
                connection.Open();
                transaction = connection.BeginTransaction();
                da.Update(connection, transaction, dataSet);
                transaction.Commit();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                exx = true;
                transaction.Rollback();
            }
            finally
            {
                connection.Close();
            }
            Assert.IsFalse(exx, "Exceptions not throwed");
        }
コード例 #6
0
        public void ScheduleInsert()
        {
            AbstractConnection abstractConnection = ConnectionFactory.CreateConnection();

            abstractConnection.Open();
            TouristDataSet       ds = new TouristDataSet();
            ScheduleDataAccessor scheduleDataAccessor = new ScheduleDataAccessor();
            AbstractTransaction  abstractTransaction  = abstractConnection.BeginTransaction();

            //Читаем данные с БД, считаем число записей в датасете
            scheduleDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);
            int countElement = ds.Schedule.Count;

            //Добавляем строку в датасет, сохраняем в БД, снова читаем в датасет
            DateTime currentDateTime = DateTime.Now;

            currentDateTime = new DateTime(currentDateTime.Year, currentDateTime.Month, currentDateTime.Day,
                                           currentDateTime.Hour, currentDateTime.Minute, currentDateTime.Second);
            ds.Schedule.AddScheduleRow(currentDateTime);
            scheduleDataAccessor.WriteData(abstractTransaction, abstractConnection, ds);
            ds.Schedule.Clear();
            scheduleDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);

            abstractTransaction.Commit();
            abstractConnection.Close();

            Assert.AreEqual(currentDateTime, ds.Schedule[countElement].tour_date);
        }
コード例 #7
0
        public DataSet1 getUnits()
        {
            UnitsDataAccessor    DA             = new UnitsDataAccessor();
            PositionDataAccessor DApos          = new PositionDataAccessor();
            DataSet1             dataSet1       = new DataSet1();
            AbstractConnection   absConnection  = null;
            AbstractTransaction  absTransaction = null;

            try
            {
                absConnection = DBFactory.createConnection();
                absConnection.open();
                absTransaction = absConnection.beginTransaction();
                DA.Read(absConnection, absTransaction, dataSet1);
                DApos.Read(absConnection, absTransaction, dataSet1);
                absTransaction.commit();
            }
            catch (Exception e)
            {
                absTransaction.rollback();
            }
            finally
            {
                absConnection.close();
            }

            return(dataSet1);
        }
コード例 #8
0
        private void read(IDataAccessor da)
        {
            bool exx = false;
            AbstractConnection  connection  = null;
            AbstractTransaction transaction = null;

            dataSet = new UPrintDataSet();
            try
            {
                connection = DBFactory.CreateConnection();
                connection.Open();
                transaction = connection.BeginTransaction();
                da.Read(connection, transaction, dataSet);
                transaction.Commit();
            }
            catch (Exception e)
            {
                transaction.Rollback();
            }
            finally
            {
                connection.Close();
            }
            Assert.IsFalse(exx, "Exceptions not throwed");
        }
コード例 #9
0
        public void updateMaterials(DataSet1 dataSet1)
        {
            MaterialDataAccessor DA             = new MaterialDataAccessor();
            PositionDataAccessor DApos          = new PositionDataAccessor();
            AbstractConnection   absConnection  = null;
            AbstractTransaction  absTransaction = null;

            try
            {
                absConnection = DBFactory.createConnection();
                absConnection.open();
                absTransaction = absConnection.beginTransaction();
                DA.Update(absConnection, absTransaction, dataSet1);
                DApos.Update(absConnection, absTransaction, dataSet1);
                absTransaction.commit();
            }
            catch (Exception e)
            {
                absTransaction.rollback();
            }
            finally
            {
                absConnection.close();
            }
        }
コード例 #10
0
        public void updateOrganizations(DataSet1 dataSet1)
        {
            OrganizationDataAccessor DA             = new OrganizationDataAccessor();
            InvoiceDataAccessor      DAinvoice      = new InvoiceDataAccessor();
            AbstractConnection       absConnection  = null;
            AbstractTransaction      absTransaction = null;

            try
            {
                absConnection = DBFactory.createConnection();
                absConnection.open();
                absTransaction = absConnection.beginTransaction();
                DA.Update(absConnection, absTransaction, dataSet1);
                DAinvoice.Update(absConnection, absTransaction, dataSet1);
                absTransaction.commit();
            }
            catch (Exception e)
            {
                absTransaction.rollback();
            }
            finally
            {
                absConnection.close();
            }
        }
コード例 #11
0
        // todo support logging framework
        /// <summary>
        /// Adds a transaction to the transactionpool.
        /// </summary>
        /// <param name="tx"></param>
        public bool AddTransaction(AbstractTransaction tx)
        {
            //_logger.Information("Miner received transaction: {0}", JsonConvert.SerializeObject(tx));
            try
            {
                if (_txPool.Keys.Contains(tx.Hash))
                {
                    throw new TransactionRejectedException("Transaction already submitted to txpool");
                }

                _transactionValidator.ValidateTransaction(tx);
                return(_txPool.TryAdd(tx.Hash, tx));
                //_logger.Information("Added transaction to txpool ({0})", tx.Hash);
            }
            catch (TransactionRejectedException)
            {
                //_logger.Information("Transaction with hash {0} was rejected: {1}", e.Transaction.Hash, e.Message);
            }
            catch (Exception)
            {
                //_logger.Information("An {0} occurred: {1}", e.GetType().Name, e.Message);
            }

            return(false);
        }
コード例 #12
0
        public void ScheduleReadNotEmptyTable()
        {
            AbstractConnection abstractConnection = ConnectionFactory.CreateConnection();

            abstractConnection.Open();
            TouristDataSet       ds = new TouristDataSet();
            ScheduleDataAccessor scheduleDataAccessor = new ScheduleDataAccessor();
            AbstractTransaction  abstractTransaction  = abstractConnection.BeginTransaction();

            //Читаем строки с БД и смотрим их число
            scheduleDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);
            int countElements = ds.Schedule.Count;

            //Добавляем строку и пишем в базу
            DateTime currentDateTime = DateTime.Now;

            currentDateTime = new DateTime(currentDateTime.Year, currentDateTime.Month, currentDateTime.Day,
                                           currentDateTime.Hour, currentDateTime.Minute, currentDateTime.Second);
            ds.Schedule.AddScheduleRow(currentDateTime);
            scheduleDataAccessor.WriteData(abstractTransaction, abstractConnection, ds);
            ds.Schedule.Clear();

            //Читаем снова и смотрим на последнюю строку
            scheduleDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);

            abstractTransaction.Commit();
            abstractConnection.Close();
            Assert.AreEqual(currentDateTime, ds.Schedule[countElements].tour_date);
        }
コード例 #13
0
        public void Read(AbstractConnection c, AbstractTransaction t, DataSet1 ds)
        {
            MySqlDataAdapter a = new MySqlDataAdapter();

            a.SelectCommand = new MySqlCommand("SELECT * FROM unit_of_measurement", c.get(), t.get());
            a.Fill(ds, "unit_of_measurement");
        }
コード例 #14
0
        public void GetAll()
        {
            //Setup();
            PositionDataAccessor daInvoice   = new PositionDataAccessor();
            DataSet1             dataSet1    = new DataSet1();
            AbstractConnection   connection  = null;
            AbstractTransaction  transaction = null;

            try
            {
                connection = DBFactory.createConnection();
                connection.open();
                transaction = connection.beginTransaction();
                daInvoice.Read(connection, transaction, dataSet1);
                transaction.commit();
            }
            catch (Exception e)
            {
                transaction.rollback();
            }
            finally
            {
                connection.close();
            }

            List <DataRow> list = dataSet1.position_in_mat_delivery_note.Select().OfType <DataRow>().ToList();

            list.Sort((x, y) => ((int)x["id_"]).CompareTo((int)y["id_"]));  //сортируем по ид

            Assert.That(1, Is.EqualTo(1));
            Assert.That(list.Count, Is.EqualTo(5));
            Assert.That((int)(list[0]["id_"]), Is.EqualTo(1));
            Assert.That((double)(list[0]["amount"]), Is.EqualTo(10));
            Assert.That((int)(list[0]["invoice_id"]), Is.EqualTo(1));
        }
コード例 #15
0
        public void SightInsert()
        {
            AbstractConnection abstractConnection = ConnectionFactory.CreateConnection();

            abstractConnection.Open();
            TouristDataSet      ds = new TouristDataSet();
            SightDataAccessor   sightDataAccessor   = new SightDataAccessor();
            AbstractTransaction abstractTransaction = abstractConnection.BeginTransaction();

            //Читаем данные с БД, считаем число записей в датасете
            sightDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);
            int countElement = ds.Sight.Count;

            //Добавляем строку в датасет, сохраняем в БД, снова читаем в датасет
            ds.Sight.AddSightRow("Insert", "Str.");
            sightDataAccessor.WriteData(abstractTransaction, abstractConnection, ds);
            ds.Sight.Clear();
            sightDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);

            abstractTransaction.Commit();
            abstractConnection.Close();

            Assert.AreEqual("Insert", ds.Sight[countElement].sight_name);
            Assert.AreEqual("Str.", ds.Sight[countElement].sight_descr);
        }
コード例 #16
0
        public void SightReadNotEmptyTable()
        {
            AbstractConnection abstractConnection = ConnectionFactory.CreateConnection();

            abstractConnection.Open();
            TouristDataSet      ds = new TouristDataSet();
            SightDataAccessor   sightDataAccessor   = new SightDataAccessor();
            AbstractTransaction abstractTransaction = abstractConnection.BeginTransaction();

            //Читаем строки с БД и смотрим их число
            sightDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);
            int countElements = ds.Sight.Count;

            //Добавляем строку и пишем в базу
            ds.Sight.AddSightRow("Памятник Ленину", "Обычный памятник в городе");
            sightDataAccessor.WriteData(abstractTransaction, abstractConnection, ds);
            ds.Sight.Clear();

            //Читаем снова и смотрим на последнюю строку
            sightDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);

            abstractTransaction.Commit();
            abstractConnection.Close();
            Assert.AreEqual("Памятник Ленину", ds.Sight[countElements].sight_name);
            Assert.AreEqual("Обычный памятник в городе", ds.Sight[countElements].sight_descr);
        }
コード例 #17
0
ファイル: Miner.cs プロジェクト: SpenQ/Prototype
        public bool AddTransactionToPool(AbstractTransaction tx, bool publishToNetwork)
        {
            //_logger.LogInformation("Miner received transaction: {0}", JsonConvert.SerializeObject(tx));
            try
            {
                if (_txPool.Contains(tx))
                {
                    throw new TransactionRejectedException("Transaction already submitted to txpool");
                }

                _transactionValidator.ValidateTransaction(tx);
                _txPool.AddTransaction(tx);
                _logger.LogInformation("Added transaction to txpool ({0})", tx.Hash);

                if (publishToNetwork) // todo move this to ConcurrentTransactionPool maybe?
                {
                    EventPublisher.GetInstance().PublishValidTransactionReceived(this, new TransactionReceivedEventArgs(tx));
                }
                return(true);
            }
            catch (TransactionRejectedException e)
            {
                var errorTx = e.Transaction ?? tx;
                _logger.LogInformation("Transaction with hash {0} was rejected: {1}", errorTx.Hash, e.Message);
                return(false);
            }
            catch (Exception e)
            {
                _logger.LogInformation("An {0} occurred: {1}", e.GetType().Name, e.Message);
                return(false);
            }
        }
コード例 #18
0
        public void GetAll()
        {
            //Setup();
            MaterialDataAccessor daMaterial  = new MaterialDataAccessor();
            DataSet1             dataSet1    = new DataSet1();
            AbstractConnection   connection  = null;
            AbstractTransaction  transaction = null;

            try
            {
                connection = DBFactory.createConnection();
                connection.open();
                transaction = connection.beginTransaction();
                daMaterial.Read(connection, transaction, dataSet1);
                transaction.commit();
            }
            catch (Exception e)
            {
                transaction.rollback();
            }
            finally
            {
                connection.close();
            }

            List <DataRow> list = dataSet1.material.Select().OfType <DataRow>().ToList();

            list.Sort((x, y) => ((int)x["id"]).CompareTo((int)y["id"]));  //сортируем по ид

            Assert.That(1, Is.EqualTo(1));
            Assert.That(list.Count, Is.EqualTo(8));
            Assert.That((int)(list[0]["id"]), Is.EqualTo(1));
            Assert.That((string)(list[0]["name_material"]), Is.EqualTo("Бревна буковые"));
            Assert.That((string)(list[0]["code_material"]), Is.EqualTo("02.20.12.112"));
        }
コード例 #19
0
        public void materialByName()
        {
            MaterialDataAccessor daMaterial  = new MaterialDataAccessor();
            DataSet1             dataSet1    = new DataSet1();
            AbstractConnection   connection  = null;
            AbstractTransaction  transaction = null;

            try
            {
                connection = DBFactory.createConnection();
                connection.open();
                transaction = connection.beginTransaction();
                daMaterial.Read(connection, transaction, dataSet1);
                transaction.commit();
            }
            catch (Exception e)
            {
                transaction.rollback();
            }
            finally
            {
                connection.close();
            }

            List <DataRow> list = dataSet1.material.Select("name_material = 'Бревна буковые'").OfType <DataRow>().ToList();

            Assert.That(list.Count, Is.EqualTo(1));

            Assert.That((int)(list[0]["id"]), Is.EqualTo(1));
            Assert.That((string)(list[0]["name_material"]), Is.EqualTo("Бревна буковые"));
            Assert.That((string)(list[0]["code_material"]), Is.EqualTo("02.20.12.112"));
        }
コード例 #20
0
        public void TourReadEmptyTable()
        {
            AbstractConnection abstractConnection = ConnectionFactory.CreateConnection();

            abstractConnection.Open();
            TouristDataSet      ds = new TouristDataSet();
            TourDataAccessor    tourDataAccessor    = new TourDataAccessor();
            AbstractTransaction abstractTransaction = abstractConnection.BeginTransaction();

            //Чтение в датасет и удаление оттуда всех записей
            tourDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);
            for (int i = 0; i < ds.Tour.Count; i++)
            {
                ds.Tour[i].Delete();
            }

            //Сохранение в БД
            tourDataAccessor.WriteData(abstractTransaction, abstractConnection, ds);
            ds.Tour.Clear();

            //Чтение в датасет из пустой таблицы
            tourDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);
            int countElement = ds.Tour.Count;

            abstractTransaction.Commit();
            abstractConnection.Close();

            Assert.AreEqual(0, countElement);
        }
コード例 #21
0
        public void organizationByName()
        {
            OrganizationDataAccessor dalOrganization = new OrganizationDataAccessor();
            DataSet1            dataSet1             = new DataSet1();
            AbstractConnection  connection           = null;
            AbstractTransaction transaction          = null;

            try
            {
                connection = DBFactory.createConnection();
                connection.open();
                transaction = connection.beginTransaction();
                dalOrganization.Read(connection, transaction, dataSet1);
                transaction.commit();
            }
            catch (Exception e)
            {
                transaction.rollback();
            }
            finally
            {
                connection.close();
            }

            List <DataRow> list = dataSet1.organization.Select("organization_name = 'ОАО \"КРАСНОЯРСКЛЕСОМАТЕРИАЛЫ\"'").OfType <DataRow>().ToList();

            Assert.That(list.Count, Is.EqualTo(1));

            Assert.That((int)(list[0]["id"]), Is.EqualTo(2));
            Assert.That((string)(list[0]["organization_name"]), Is.EqualTo("ОАО \"КРАСНОЯРСКЛЕСОМАТЕРИАЛЫ\""));
            Assert.That((int)(list[0]["okpo_number"]), Is.EqualTo(47828137));
        }
コード例 #22
0
        public void unit_of_measurementByName()
        {
            UnitsDataAccessor   daUnit      = new UnitsDataAccessor();
            DataSet1            dataSet1    = new DataSet1();
            AbstractConnection  connection  = null;
            AbstractTransaction transaction = null;

            try
            {
                connection = DBFactory.createConnection();
                connection.open();
                transaction = connection.beginTransaction();
                daUnit.Read(connection, transaction, dataSet1);
                transaction.commit();
            }
            catch (Exception e)
            {
                transaction.rollback();
            }
            finally
            {
                connection.close();
            }

            List <DataRow> list = dataSet1.unit_of_measurement.Select("unit_name = 'Миллиметр'").OfType <DataRow>().ToList();

            Assert.That(list.Count, Is.EqualTo(1));

            Assert.That((int)(list[0]["id"]), Is.EqualTo(4));
            Assert.That((string)(list[0]["unit_name"]), Is.EqualTo("Миллиметр"));
            Assert.That((string)(list[0]["code"]), Is.EqualTo("003"));
            Assert.That((string)(list[0]["national_symbol"]), Is.EqualTo("мм"));
        }
コード例 #23
0
        public void Read(AbstractConnection c, AbstractTransaction t, DataSet1 ds)
        {
            MySqlDataAdapter a = new MySqlDataAdapter();

            a.SelectCommand = new MySqlCommand("SELECT * FROM position_in_mat_delivery_note", c.get(), t.get());
            a.Fill(ds, "position_in_mat_delivery_note");
        }
コード例 #24
0
        public void TourTypeReadNotEmptyTable()
        {
            AbstractConnection abstractConnection = ConnectionFactory.CreateConnection();

            abstractConnection.Open();
            TouristDataSet       ds = new TouristDataSet();
            TourTypeDataAccessor tourTypeDataAccessor = new TourTypeDataAccessor();
            AbstractTransaction  abstractTransaction  = abstractConnection.BeginTransaction();

            //Читаем строки с БД и смотрим их число
            tourTypeDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);
            int countElements = ds.TourType.Count;

            //Добавляем строку и пишем в базу
            ds.TourType.AddTourTypeRow("Поход в горы");
            tourTypeDataAccessor.WriteData(abstractTransaction, abstractConnection, ds);
            ds.TourType.Clear();

            //Читаем снова и смотрим на последнюю строку
            tourTypeDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);

            abstractTransaction.Commit();
            abstractConnection.Close();
            Assert.AreEqual("Поход в горы", ds.TourType[countElements].tour_type_name);
        }
コード例 #25
0
        public void InstructorDelete()
        {
            AbstractConnection abstractConnection = ConnectionFactory.CreateConnection();

            abstractConnection.Open();
            TouristDataSet         ds = new TouristDataSet();
            ScheduleDataAccessor   scheduleDataAccessor   = new ScheduleDataAccessor();
            TourTypeDataAccessor   tourTypeDataAccessor   = new TourTypeDataAccessor();
            InstructorDataAccessor instructorDataAccessor = new InstructorDataAccessor();
            AbstractTransaction    abstractTransaction    = abstractConnection.BeginTransaction();

            //Читаем строки с БД и смотрим их число
            instructorDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);
            scheduleDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);
            tourTypeDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);
            int countElements = ds.Instructor.Count;

            //Проверка, есть ли значения в таблицах расписания и типа экскурсии. Если значения нет, записываем его и считываем еще раз
            if (ds.Schedule.Count == 0)
            {
                DateTime currentDateTime = DateTime.Now;
                currentDateTime = new DateTime(currentDateTime.Year, currentDateTime.Month, currentDateTime.Day,
                                               currentDateTime.Hour, currentDateTime.Minute, currentDateTime.Second);
                ds.Schedule.AddScheduleRow(currentDateTime);
                scheduleDataAccessor.WriteData(abstractTransaction, abstractConnection, ds);
            }
            if (ds.TourType.Count == 0)
            {
                ds.TourType.AddTourTypeRow("Первая строка списка туров от делита");
                tourTypeDataAccessor.WriteData(abstractTransaction, abstractConnection, ds);
            }
            //Чистим таблицы датасета и читаем заново данные с базы
            ds.Instructor.Clear();
            ds.Schedule.Clear();
            ds.TourType.Clear();
            instructorDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);
            scheduleDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);
            tourTypeDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);

            //Добавляем строку и пишем в базу
            ds.Instructor.AddInstructorRow("Делитов", "Алексей", "Петрович", ds.Schedule[0], ds.TourType[0]);
            instructorDataAccessor.WriteData(abstractTransaction, abstractConnection, ds);

            //Чистим датасет, записываем в него ещё раз и удаляем из него последнюю запись
            ds.Instructor.Clear();
            instructorDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);
            ds.Instructor[countElements].Delete();

            //Пишем в БД и снова читаем из неё в датасет
            instructorDataAccessor.WriteData(abstractTransaction, abstractConnection, ds);
            ds.Instructor.Clear();
            instructorDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);

            abstractTransaction.Commit();
            abstractConnection.Close();

            //Смотрим число строк до всех манипуляций и после
            Assert.AreEqual(ds.Instructor.Count, countElements);
        }
コード例 #26
0
        public void InstructorReadNotEmptyTable()
        {
            AbstractConnection abstractConnection = ConnectionFactory.CreateConnection();

            abstractConnection.Open();
            TouristDataSet         ds = new TouristDataSet();
            InstructorDataAccessor instructorDataAccessor = new InstructorDataAccessor();
            ScheduleDataAccessor   scheduleDataAccessor   = new ScheduleDataAccessor();
            TourTypeDataAccessor   tourTypeDataAccessor   = new TourTypeDataAccessor();
            AbstractTransaction    abstractTransaction    = abstractConnection.BeginTransaction();

            //Читаем строки с БД и смотрим их число
            instructorDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);
            scheduleDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);
            tourTypeDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);
            int countElements = ds.Instructor.Count;

            //Проверка, есть ли значения в таблицах расписания и типа экскурсии. Если значения нет, записываем его и считываем еще раз
            if (ds.Schedule.Count == 0)
            {
                DateTime currentDateTime = DateTime.Now;
                currentDateTime = new DateTime(currentDateTime.Year, currentDateTime.Month, currentDateTime.Day,
                                               currentDateTime.Hour, currentDateTime.Minute, currentDateTime.Second);
                ds.Schedule.AddScheduleRow(currentDateTime);
                scheduleDataAccessor.WriteData(abstractTransaction, abstractConnection, ds);
            }
            if (ds.TourType.Count == 0)
            {
                ds.TourType.AddTourTypeRow("Первая строка списка туров");
                tourTypeDataAccessor.WriteData(abstractTransaction, abstractConnection, ds);
            }
            //Чистим таблицы датасета и читаем заново данные с базы
            ds.Instructor.Clear();
            ds.Schedule.Clear();
            ds.TourType.Clear();
            instructorDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);
            scheduleDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);
            tourTypeDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);

            //Сохраняем ID первой записи таблиц
            Int32 savedScheduleId = ds.Schedule[0].id;
            Int32 savedTourTypeId = ds.TourType[0].id;

            //Добавляем строку и пишем в базу
            ds.Instructor.AddInstructorRow("Петров", "Алексей", "Петрович", ds.Schedule[0], ds.TourType[0]);
            instructorDataAccessor.WriteData(abstractTransaction, abstractConnection, ds);
            ds.Instructor.Clear();

            //Читаем снова и смотрим на последнюю строку
            instructorDataAccessor.ReadData(abstractTransaction, abstractConnection, ds);

            abstractTransaction.Commit();
            abstractConnection.Close();
            Assert.AreEqual("Петров", ds.Instructor[countElements].surname);
            Assert.AreEqual("Алексей", ds.Instructor[countElements].forename);
            Assert.AreEqual("Петрович", ds.Instructor[countElements].patronymic);
            Assert.AreEqual(savedScheduleId, ds.Instructor[countElements].id_schedule);
            Assert.AreEqual(savedTourTypeId, ds.Instructor[countElements].id_tour_type);
        }
コード例 #27
0
        public void Update(AbstractConnection c, AbstractTransaction t, DataSet1 ds)
        {
            MySqlDataAdapter adapter = new MySqlDataAdapter();

            // SELECT
            String sqlSelect = "SELECT * FROM organization";

            adapter.SelectCommand = new MySqlCommand(sqlSelect, c.get(), t.get());

            //INSERT
            String sqlInsert = "INSERT INTO organization (okpo_number, organization_name) VALUES (@okpo_number, @organization_name)";

            adapter.InsertCommand = new MySqlCommand(sqlInsert, c.get(), t.get());
            adapter.InsertCommand.Parameters.Add(new MySqlParameter()
            {
                SourceColumn  = "okpo_number",
                ParameterName = "@okpo_number"
            });
            adapter.InsertCommand.Parameters.Add(new MySqlParameter()
            {
                SourceColumn  = "organization_name",
                ParameterName = "@organization_name"
            });


            //UPDATE
            String sqlUpdate = "Update organization SET okpo_number=@okpo_number, organization_name=@organization_name where id=@id";

            adapter.UpdateCommand = new MySqlCommand(sqlUpdate, c.get(), t.get());
            adapter.UpdateCommand.Parameters.Add(new MySqlParameter()
            {
                SourceColumn  = "id",
                ParameterName = "@id"
            });
            adapter.UpdateCommand.Parameters.Add(new MySqlParameter()
            {
                SourceColumn  = "okpo_number",
                ParameterName = "@okpo_number"
            });
            adapter.UpdateCommand.Parameters.Add(new MySqlParameter()
            {
                SourceColumn  = "organization_name",
                ParameterName = "@organization_name"
            });

            //DELETE
            String sqlDelete = "DELETE FROM organization WHERE id = @id";

            adapter.DeleteCommand = new MySqlCommand(sqlDelete, c.get(), t.get());
            adapter.DeleteCommand.Parameters.Add(new MySqlParameter()
            {
                SourceColumn  = "id",
                ParameterName = "@id"
            });

            MySqlCommandBuilder mySqlCommandBuilder = new MySqlCommandBuilder(adapter);

            adapter.Update(ds, "organization");
        }
コード例 #28
0
ファイル: ReplicationTable.cs プロジェクト: cotyar/braindump
        /// VectorClock

        public VectorClock GetLastClock(AbstractTransaction txn, string replicaId)
        {
            var ret = txn.TryGet(_table, ToClockTableKey(replicaId));

            return(ret.HasValue
                ? FromClockTableValue(ret.Value)
                : VectorClockHelper.Create(replicaId, 0));
        }
コード例 #29
0
        public (ulong, VectorClock)? GetLastClock(AbstractTransaction txn)
        {
            var ret = txn.TryGetLast(_table);

            return(ret.HasValue
                ? (FromTableKey(ret.Value.Item1), FromTableValue(ret.Value.Item2).LocallySaved)
                : ((ulong, VectorClock)?)null);
        }
コード例 #30
0
        public ReplicaCounters GetCounters(AbstractTransaction txn)
        {
            var ret = txn.TryGet(_table, _countersKey);

            return(ret.HasValue
                ? FromCountersTableValue(ret.Value)
                : new ReplicaCounters());
        }