コード例 #1
0
        /// <summary>
        /// Get input arrays from database
        /// </summary>
        private void InputArraysInit()
        {
            using (Database.SortersVisualizerDBEntities context = new Database.SortersVisualizerDBEntities())
            {
                if (!context.Database.Exists())
                {
                    MessageBox.Show(MessagesArrayInitializationFromDatabaseWindow.DatabaseDoesntExistText,
                                    MessagesRandomArrayCreationWindow.DatabaseConnectionText, MessageBoxButton.OK, MessageBoxImage.Error);

                    _logger.Error("Database doesn't exist");

                    if (CloseViewAction != null)
                    {
                        CloseViewAction();
                    }

                    return;
                }

                _inputArrays = (from item in context.InputArrays
                                select new DatabaseInfoWrapper
                {
                    ArrayId = item.iInputArrayId,
                    NumberOfColumns = item.iNumberOfColumns,
                    NumberOfRows = item.iNumberOfRows
                }).ToArray();
            }
        }
コード例 #2
0
        public void GetInputArrayFromDatabase(int arrayId)
        {
            lock (_syncDatabaseAccessing)
            {
                using (Database.SortersVisualizerDBEntities context = new Database.SortersVisualizerDBEntities())
                {
                    if (!context.Database.Exists())
                    {
                        throw new DatabaseDoesntExistException("The required database does not exist." +
                                                               "Check the availability of the appropriate database and try again.");
                    }

                    Database.InputArrays inputArray = (from array in context.InputArrays
                                                       where array.iInputArrayId == arrayId
                                                       select array).FirstOrDefault();

                    if (inputArray == null)
                    {
                        throw new KeyNotFoundException("The required array with ID = " + arrayId + " does not exist.");
                    }

                    int rows    = inputArray.iNumberOfRows;
                    int columns = inputArray.iNumberOfColumns;

                    _controllerModel.ArrayForSorting = Utils.ConvertToTwoDimensionArray(inputArray.vcInputArrayContent, rows, columns);
                }
            }
        }
コード例 #3
0
        private void RatioTimeSizeButton_Click(object sender, EventArgs e)
        {
            chartControl.Series.Clear();

            Series series1 = new Series("Sorting time", ViewType.SplineArea);

            using (Database.SortersVisualizerDBEntities context = new Database.SortersVisualizerDBEntities())
            {
                if (!context.Database.Exists())
                {
                    MessageBox.Show("Database doesn't exist.", "Database",
                                    MessageBoxButtons.OK, MessageBoxIcon.Error);

                    this.Close();
                }

                string sorterName = _threadParameters[tcInfo.SelectedIndex].SortMethod.ToString();
                int    arraySize  = _threadParameters[tcInfo.SelectedIndex].ArrayForSorting.Length;

                var sortedArrays = (from item in context.SortedArrays
                                    where item.vcSorterName == sorterName
                                    orderby item.iSortedArrayId descending
                                    select item).ToArray();

                var arrays = sortedArrays.Where(item => item.vcSortedArrayContent.Split(new Char[] { ' ' }).Length == arraySize).ToArray();

                for (int i = 0; i < arrays.Length && i < 16; i++) // 16 - manual limit, temporary decision
                {
                    series1.Points.Add(new SeriesPoint(i + 1, arrays[i].fSortingTime));
                }
            }

            // Add the series to the chart.
            chartControl.Series.Add(series1);

            // Access the view-type-specific options of the series.
            ((SplineAreaSeriesView)series1.View).LineTensionPercent = 90;
            ((SplineAreaSeriesView)series1.View).ColorEach          = true;
            ((SplineAreaSeriesView)series1.View).MarkerVisibility   = DevExpress.Utils.DefaultBoolean.True;
            ((SplineAreaSeriesView)series1.View).FillStyle.FillMode = FillMode.Hatch;
            HatchFillOptions hatchFillOptions = ((SplineAreaSeriesView)series1.View).FillStyle.Options as HatchFillOptions;

            hatchFillOptions.HatchStyle = System.Drawing.Drawing2D.HatchStyle.Sphere;

            XYDiagram diagram = (XYDiagram)chartControl.Diagram;

            diagram.AxisY.Title.Visibility = DevExpress.Utils.DefaultBoolean.True;
            diagram.AxisY.Title.Alignment  = StringAlignment.Center;
            diagram.AxisY.Title.Text       = "Секунди";

            diagram.AxisX.Title.Visibility = DevExpress.Utils.DefaultBoolean.True;
            diagram.AxisX.Title.Alignment  = StringAlignment.Center;
            diagram.AxisX.Title.Text       = "Номер сортувальника";

            //Set title for chart
            chartControl.Titles[0].Text = "Статистика для масива з розміром " + _threadParameters[tcInfo.SelectedIndex].ArrayForSorting.Length;
        }
コード例 #4
0
        public void CreateArray(object parameter)
        {
            using (Database.SortersVisualizerDBEntities context = new Database.SortersVisualizerDBEntities())
            {
                if (!context.Database.Exists())
                {
                    MessageBox.Show(MessagesRandomArrayCreationWindow.DatabaseDoesntExistText,
                                    MessagesRandomArrayCreationWindow.DatabaseConnectionText, MessageBoxButton.OK, MessageBoxImage.Error);

                    _logger.Error("Database doesn't exist");

                    if (CloseViewAction != null)
                    {
                        CloseViewAction();
                    }

                    return;
                }

                int[] array = new int[ArrayInfo.RowsNumb * ArrayInfo.ColumnsNumb];

                array = Tools.Utils.GetRandomArray(array.Length, (int)ArrayInfo.MinValue, (int)ArrayInfo.MaxValue);

                Database.InputArrays inputArray = new Database.InputArrays
                {
                    iNumberOfRows       = ArrayInfo.RowsNumb,
                    iNumberOfColumns    = ArrayInfo.ColumnsNumb,
                    vcInputArrayContent = string.Join(" ", array)
                };

                context.InputArrays.Add(inputArray);
                int rowsAffected = context.SaveChanges();

                if (rowsAffected > 0)
                {
                    MessageBox.Show(MessagesRandomArrayCreationWindow.ArraySuccessfullyCreatedText,
                                    MessagesRandomArrayCreationWindow.OperationResultText, MessageBoxButton.OK, MessageBoxImage.Information);
                }
                else
                {
                    MessageBox.Show(MessagesRandomArrayCreationWindow.ArrayUnsuccessfullyCreatedText,
                                    MessagesRandomArrayCreationWindow.OperationResultText, MessageBoxButton.OK, MessageBoxImage.Warning);

                    _logger.Error("Array insertion into database error");
                }
            }

            if (CloseViewAction != null)
            {
                CloseViewAction();
            }
        }
コード例 #5
0
        private void ButtonApplyClick(object sender, EventArgs e)
        {
            using (Database.SortersVisualizerDBEntities context = new Database.SortersVisualizerDBEntities())
            {
                if (!context.Database.Exists())
                {
                    MessageBox.Show(MessagesRandomArrayCreationInDatabaseForm.DatabaseDosentExistText,
                                    MessagesRandomArrayCreationInDatabaseForm.DatabaseConnectionText, MessageBoxButtons.OK, MessageBoxIcon.Error);

                    this.Close();
                }

                int[] array = new int[(int)_rows * (int)_columns];

                array = Tools.Utils.GetRandomArray(array.Length, (int)_minValue, (int)_maxValue);

                Database.InputArrays inputArray = new Database.InputArrays
                {
                    iNumberOfRows       = (int)_rows,
                    iNumberOfColumns    = (int)_columns,
                    vcInputArrayContent = string.Join(" ", array)
                };

                context.InputArrays.Add(inputArray);
                int rowsAffected = context.SaveChanges();

                if (rowsAffected > 0)
                {
                    MessageBox.Show(MessagesRandomArrayCreationInDatabaseForm.ArraySuccessfullyCreatedText,
                                    MessagesRandomArrayCreationInDatabaseForm.OperationResultText, MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    MessageBox.Show(MessagesRandomArrayCreationInDatabaseForm.ArrayUnsuccessfullyCreatedText,
                                    MessagesRandomArrayCreationInDatabaseForm.OperationResultText, MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }

            this.Close();
        }
コード例 #6
0
        public void AddSortedArrayToDatabase(Database.SortedArrays sortedArray)
        {
            lock (_syncDatabaseAccessing)
            {
                using (Database.SortersVisualizerDBEntities _context = new Database.SortersVisualizerDBEntities())
                {
                    if (!_context.Database.Exists())
                    {
                        throw new DatabaseDoesntExistException("Cannot insert sorted array into database. " +
                                                               "The required database does not exist.");
                    }

                    _context.SortedArrays.Add(sortedArray);
                    int rowsAffected = _context.SaveChanges();

                    if (rowsAffected != 1)
                    {
                        throw new System.Data.DBConcurrencyException("Error in inserting sorted array into database.");
                    }
                }
            }
        }
        private void DataGridViewInitialization()
        {
            using (Database.SortersVisualizerDBEntities context = new Database.SortersVisualizerDBEntities())
            {
                if (!context.Database.Exists())
                {
                    MessageBox.Show(MessagesArrayInitializationFromDatabaseForm.DatabaseDosentExistText,
                                    MessagesArrayInitializationFromDatabaseForm.DatabaseConnectionText,
                                    MessageBoxButtons.OK, MessageBoxIcon.Error);

                    this.Close();
                }

                var inputArrays = (from item in context.InputArrays
                                   select new { item.iInputArrayId, item.iNumberOfColumns, item.iNumberOfRows }).ToList();

                foreach (var item in inputArrays)
                {
                    dgvDatabaseContent.Rows.Add(item.iInputArrayId, item.iNumberOfRows, item.iNumberOfColumns);
                }

                dgvDatabaseContent.ClearSelection();
            }
        }