/// <summary>
        /// Import movie file. Filename has been provided in the constructor.
        /// </summary>
        public override void Import(object o)
        {
            // Initialise progress to zero for progress bar.
            Progress = 0f;
            ImportResult results = new ImportResult();

            try
            {
                // Read file
                string fileData = null;
                using (StreamReader reader = File.OpenText(fileName))
                {
                    // Read file  using ReadToEnd
                    fileData = reader.ReadToEnd();
                }
                string[] lines = fileData.Replace("\r\n", "\n").Replace("\r", "\n").Split('\n'); // To deal with Windows, Mac and Linux line endings the same.

                // Check if first line is column names.
                string firstLine = lines[0]; //receives first line of file import

                //Sets the first line of the lines array to blank to remove column headings in csv file
                string[] columns = firstLine.Split(',');
                string   column1 = columns[0].ToLower().Trim();
                string   column2 = columns[1].ToLower().Trim();
                if (columns.Length == 2 && column1.Equals("movieid") && column2.Equals("title"))
                {
                    lines[0] = "";
                }

                // Line count and line numbers to allow progress tracking.
                int lineCount = lines.Length; //for use by the progress bar
                int lineNum   = 1;            //for tracking importing and creating error messages

                // Get all movies.
                List <Movie> movies = DataLayer.DataLayer.GetAllMovies();

                foreach (string line in lines)
                // Check whether we need to stop after importing each line.
                {
                    if (Stop)
                    {
                        return;
                    }


                    // Just to make it slow enough to test stopping functionality.
                    Thread.Sleep(500);

                    // Update progress of import.
                    try
                    {
                        //THIS WILL NEED MORE CODE AROUND PROGRESS UPDATE: STEP 25, PAGE 1-71
                        Progress = lineNum / lineCount;
                        RaiseProgressChanged();

                        // Skip blank lines
                        if (String.IsNullOrEmpty(line))
                        {
                            continue;
                        }
                        else
                        {
                            results.TotalRows = results.TotalRows++;
                        }

                        // Break up line by commas, each item in array will be one column.
                        columns = line.Split(',');
                        if (columns.Length != 2)
                        {
                            results.FailedRows++;
                            results.ErrorMessages.Add(string.Format("Line {0}: Wrong number of columns.", lineNum));
                            continue;
                        }

                        // Check the format of data, and update ImportResult accordingly.
                        int movieID = 0;
                        if (!int.TryParse(columns[0], out movieID))
                        {
                            results.FailedRows++;
                            results.ErrorMessages.Add(string.Format("Line {0}: MovieID is not a number.", lineNum));
                            continue;
                        }

                        //Check that the title field contains a string
                        string title = "";
                        title = columns[1].Trim();
                        if (String.IsNullOrEmpty(title))
                        {
                            results.FailedRows = results.FailedRows++;
                            results.ErrorMessages.Add(string.Format("Line {0}: Movie title is blank.", lineNum));
                            continue;
                        }


                        // Insert/update DB if okay.
                        Movie movieToUpdate = movies.Where(m => m.MovieID == movieID).FirstOrDefault();
                        if (movieToUpdate == null)
                        {
                            Movie movieToAdd = new Movie()
                            {
                                MovieID = movieID, Title = title
                            };
                            DataLayer.DataLayer.AddMovie(movieToAdd);
                        }
                        else
                        {
                            movieToUpdate.Title = title;
                            DataLayer.DataLayer.UpdateMovie(movieToUpdate);
                        }
                        results.ImportedRows = results.ImportedRows++; //Successfully imported row
                    }
                    catch
                    {
                        results.ErrorMessages.Add(string.Format("Line {0}: Some unknown error within the foreach loop.", lineNum));
                    }
                    finally
                    {
                        lineNum++;
                    }
                }
            }
            catch (IOException)
            {
                results.ErrorMessages.Add(String.Format("An Input/Output error has occurred."));
            }
            catch (Exception)
            {
                results.ErrorMessages.Add(String.Format("A general exception has occurred. Program better bozo!"));
            }
            finally
            {
                RaiseCompleted(results);
            }
        }
        /// <summary>
        /// Import session file. Filename has been provided in the constructor.
        /// </summary>
        public override void Import(object o)
        {
            // Initialise progress to zero for progress bar.
            Progress = 0f;
            ImportResult results = new ImportResult();

            try
            {
                // Read file
                string fileData = null;
                using (StreamReader reader = File.OpenText(fileName))
                {
                    fileData = reader.ReadToEnd();
                }
                string[] lines = fileData.Replace("\r\n", "\n").Replace("\r", "\n").Split('\n'); // To deal with Windows, Mac and Linux line endings the same.

                // Check if first line is column names.
                string   firstLine = lines[0];
                string[] columns   = firstLine.Split(',');
                if (columns.Length == 4)
                {
                    if (columns[0].Trim().ToLower() == "sessionid" && columns[1].Trim().ToLower() == "movieid" &&
                        columns[2].Trim().ToLower() == "sessiondate" && columns[3].Trim().ToLower() == "cinemanumber")
                    {
                        lines[0] = "";
                    }
                }

                // Line count and line numbers to allow progress tracking.
                int lineCount = lines.Length;
                int lineNum   = 1;

                // Get all movies. These will be used to check that MovieIDs are valid.
                List <Movie> movies = DataLayer.DataLayer.GetAllMovies();

                foreach (string line in lines)
                {
                    // Check whether we need to stop after importing each line.
                    if (Stop)
                    {
                        return;
                    }

                    try
                    {
                        // Just to make it slow enough to testing stopping functionality.
                        Thread.Sleep(500);

                        // Update progress of import.
                        Progress = lineNum / lineCount;
                        RaiseProgressChanged();


                        // Skip blank lines
                        if (line == "")
                        {
                            continue;
                        }
                        results.TotalRows++;

                        // Break up line by commas, each item in array will be one column.
                        columns = line.Split(',');
                        if (columns.Length != 4)
                        {
                            results.FailedRows++;
                            results.ErrorMessages.Add(string.Format("Line {0}: Wrong number of columns.", lineNum));
                            continue;
                        }

                        // Check the format of data, and update ImportResult accordingly.

                        // Check session ID.
                        int sessionID = 0;
                        if (!int.TryParse(columns[0].Trim(), out sessionID))
                        {
                            results.FailedRows++;
                            results.ErrorMessages.Add(string.Format("Line {0}: SessionID is not a number.", lineNum));
                            continue;
                        }

                        // Check movie ID.
                        int movieID = 0;
                        if (!int.TryParse(columns[1].Trim(), out movieID))
                        {
                            results.FailedRows++;
                            results.ErrorMessages.Add(string.Format("Line {0}: MovieID is not a number.", lineNum));
                            continue;
                        }
                        if (movies.Count(m => m.MovieID == movieID) < 1)
                        {
                            results.FailedRows++;
                            results.ErrorMessages.Add(string.Format("Line {0}: MovieID not found in movie database.", lineNum));
                            continue;
                        }

                        // Check session date/time.
                        DateTime sessionDate = DateTime.MinValue;
                        if (!DateTime.TryParse(columns[2].Trim(), out sessionDate))
                        {
                            results.FailedRows++;
                            results.ErrorMessages.Add(string.Format("Line{0}: Session date is not a date/time.", lineNum));
                            continue;
                        }

                        // Check cinema number.
                        byte cinemaNumber;
                        if (!byte.TryParse(columns[3].Trim(), out cinemaNumber))
                        {
                            results.FailedRows++;
                            results.ErrorMessages.Add(string.Format("Line{0}: Cinema number is not a byte.", lineNum));
                            continue;
                        }
                        if (!((int)cinemaNumber >= 1))
                        {
                            results.FailedRows++;
                            results.ErrorMessages.Add(string.Format("Line{0}: Cinema number cannot be less than 1.", lineNum));
                            continue;
                        }


                        // Insert/update DB if okay.
                        Session sessionToUpdate = DataLayer.DataLayer.GetSessionByID(sessionID);
                        if (sessionToUpdate == null)
                        {
                            Session sessionToAdd = new Session()
                            {
                                SessionID = sessionID, MovieID = movieID, SessionDate = sessionDate, CinemaNumber = cinemaNumber
                            };
                            DataLayer.DataLayer.AddSession(sessionToAdd);
                        }
                        else
                        {
                            sessionToUpdate.MovieID      = movieID;
                            sessionToUpdate.SessionDate  = sessionDate;
                            sessionToUpdate.CinemaNumber = cinemaNumber;
                            DataLayer.DataLayer.UpdateSession(sessionToUpdate);
                        }
                        results.ImportedRows++;
                    }
                    catch (System.Data.Common.DbException dbEx)
                    {
                        results.FailedRows++;
                        results.ErrorMessages.Add(string.Format("Line {0}: Database error occurred updating data.", lineNum));
                    }
                    finally
                    {
                        lineNum++;
                    }
                }
            }
            catch (System.IO.IOException)
            {
                results.ErrorMessages.Add("Error occurred opening file. Please check that the file exists and that you have permissions to open it.");
            }
            catch (Exception)
            {
                results.ErrorMessages.Add("An unknown error occurred during importing.");
            }
            finally
            {
                // Do callback to end import.
                RaiseCompleted(results);
            }
        }
Beispiel #3
0
        /// <summary>
        /// Import movie file. Filename has been provided in the constructor.
        /// </summary>
        public override void Import(object o)
        {
            ImportResult results = new ImportResult();

            Progress = 0;// Initialise progress to zero for progress bar.

            try
            {
                // Read file
                string fileData = null;
                using (StreamReader reader = File.OpenText(fileName))
                {
                    // Read file  using ReadToEnd
                    String line = reader.ReadToEnd();
                }
                string[] lines = fileData.Replace("\r\n", "\n").Replace("\r", "\n").Split('\n'); // To deal with Windows, Mac and Linux line endings the same.

                // Check if first line is column names.
                String firstLine = lines[0];

                String[] columns = firstLine.Split(',');

                if (columns.Length != 2)
                {
                    lines[0] = "";
                }



                // Line count and line numbers to allow progress tracking.
                int lineCount;
                lineCount = lines.Length;
                int lineNum = 1;


                List <Movie> movies = DataLayer.DataLayer.GetAllMovies();

                // Get all movies.


                foreach (string line in lines)
                {
                    try
                    {
                        // Check whether we need to stop after importing each line.
                        if (Stop)
                        {
                            return;
                        }


                        // Just to make it slow enough to test stopping functionality.
                        Thread.Sleep(500);

                        // Update progress of import.
                        Progress = Progress / lineCount;
                        RaiseProgressChanged();


                        // Skip blank lines
                        if (line.Equals(null))
                        {
                            continue;
                        }
                        if (line != null)
                        {
                            results.TotalRows++;
                        }



                        // Break up line by commas, each item in array will be one column.
                        columns = line.Split(',');
                        if (columns.Length != 2)
                        {
                            results.FailedRows++;
                            results.ErrorMessages.Add(string.Format("Line {0}: Wrong number of columns.", lineNum));
                            continue;
                        }

                        // Check the format of data, and update ImportResult accordingly.
                        int movieID = 0;
                        if (!int.TryParse(columns[0], out movieID))
                        {
                            results.FailedRows++;
                            results.ErrorMessages.Add(string.Format("Line {0}: MovieID is not a number.", lineNum));
                            continue;
                        }
                        String title;
                        title = columns.ToString();
                        title = title.Trim();

                        if (title == null)
                        {
                            results.FailedRows++;
                            results.ErrorMessages.Add(string.Format("Line {0}: title is empty", lineNum));

                            continue;
                        }



                        // Insert/update DB if okay.
                        Movie movieToUpdate = movies.Where(m => m.movieId == movieID).FirstOrDefault();

                        if (movieToUpdate == null)
                        {
                            Movie movieToAdd = new Movie(); //{
                            //  SetMovieId(movieID), title = title
                            //};
                            movieToAdd.SetMovieId(movieID);
                            movieToAdd.SetTitle(title);
                            DataLayer.DataLayer.AddMovie(movieToAdd);
                        }
                        else
                        {
                            movieToUpdate.SetTitle(title);
                            movieToUpdate.SetMovieId(movieID);
                            //  movieToUpdate title = title;

                            DataLayer.DataLayer.UpdateMovie(movieToUpdate);
                        }
                        results.ImportedRows++;
                    }
                    finally
                    {
                        lineNum++;
                    }
                }
            }
            catch (System.IO.IOException ex)
            {
                results.ErrorMessages.Add("format expection");
                Console.WriteLine(ex);
                results.FailedRows++;
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                results.FailedRows++;
                //  results.ErrorMessages.Add("Exception occurred ");
            }
            finally
            {
                RaiseCompleted(results);
            }
        }
        /// <summary>
        /// Import movie file. Filename has been provided in the constructor.
        /// </summary>
        public override void Import(object o)
        {
            // Initialise progress to zero for progress bar.
            Progress = 0f;
            ImportResult results = new ImportResult();

            try
            {
                // Read file
                string fileData = null;
                using (StreamReader reader = File.OpenText(fileName))
                {
                    fileData = reader.ReadToEnd();
                }

                string[] lines = fileData.Replace("\r\n", "\n").Replace("\r", "\n").Split('\n'); // To deal with Windows, Mac and Linux line endings the same.


                // Check if first line is column names.
                string   firstLine = lines[0];
                string[] columns   = firstLine.Split(',');
                if (columns.Length == 2)
                {
                    if (columns[0].Trim().ToLower() == "movieid" && columns[1].Trim().ToLower() == "title")
                    {
                        lines[0] = "";
                    }
                }


                // Line count and line numbers to allow progress tracking.
                int lineCount = lines.Length;
                int lineNum   = 1;


                // Get all movies.
                List <Movie> movies = DataLayer.DataLayer.GetAllMovies();

                foreach (string line in lines)
                {
                    // Check whether we need to stop after importing each line.
                    if (Stop)
                    {
                        return;
                    }


                    // Just to make it slow enough to test stopping functionality.
                    Thread.Sleep(500);

                    // Update progress of import.
                    try
                    {
                        Progress = lineNum / lineCount;
                        RaiseProgressChanged();


                        // Skip blank lines
                        if (line == "")
                        {
                            continue;
                        }
                        results.TotalRows++;


                        // Break up line by commas, each item in array will be one column.
                        columns = line.Split(',');
                        if (columns.Length != 2)
                        {
                            results.FailedRows++;
                            results.ErrorMessages.Add(string.Format("Line {0}: Wrong number of columns.", lineNum));
                            continue;
                        }


                        // Check the format of data, and update ImportResult accordingly.
                        int movieID = 0;
                        if (!int.TryParse(columns[0], out movieID))
                        {
                            results.FailedRows++;
                            results.ErrorMessages.Add(string.Format("Line {0}: MovieID is not a number.", lineNum));
                            continue;
                        }


                        string title = columns[1].Trim();
                        if (title == "")
                        {
                            results.FailedRows++;
                            results.ErrorMessages.Add(string.Format("Line {0}: Title is empty.", lineNum));
                            continue;
                        }


                        // Insert/update DB if okay.
                        Movie movieToUpdate = movies.Where(m => m.MovieID == movieID).FirstOrDefault();
                        if (movieToUpdate == null)
                        {
                            Movie movieToAdd = new Movie()
                            {
                                MovieID = movieID, Title = title
                            };
                            DataLayer.DataLayer.AddMovie(movieToAdd);
                        }
                        else
                        {
                            movieToUpdate.Title = title;
                            DataLayer.DataLayer.UpdateMovie(movieToUpdate);
                        }
                        results.ImportedRows++;
                    }
                    finally
                    {
                        lineNum++;
                    }
                }
            }
            catch (IOException ioe)
            {
                results.ErrorMessages.Add("Input/Output error occurred.");
            }
            catch (Exception e)
            {
                results.ErrorMessages.Add("Unknown occurred.");
            }
            finally
            {
                RaiseCompleted(results);
            }
        }
Beispiel #5
0
        /// <summary>
        /// Import session file. Filename has been provided in the constructor.
        /// </summary>
        public override void Import(object o)
        {
            // Initialise progress to zero for progress bar.
            Progress = 0f;
            ImportResult results = new ImportResult();

            try
            {
                // Read file
                string fileData = null;
                using (StreamReader reader = File.OpenText(fileName))
                {
                    fileData = reader.ReadToEnd();
                }
                string[] lines = fileData.Replace("\r\n", "\n").Replace("\r", "\n").Split('\n'); // To deal with Windows, Mac and Linux line endings the same.

                String firstLine = lines[0];

                String[] columns = firstLine.Split(',');

                if (columns.Length != 4)
                {
                    lines[0] = "";
                }
                // Check if first line is column names.


                // Line count and line numbers to allow progress tracking.
                int lineCount = lines.Length;
                int lineNum   = 1;



                foreach (string line in lines)
                {
                    // Check whether we need to stop after importing each line.
                    if (Stop)
                    {
                        return;
                    }

                    try
                    {
                        // Just to make it slow enough to testing stopping functionality.
                        Thread.Sleep(500);

                        // Update progress of import.
                        Progress = Progress / lineCount;
                        RaiseProgressChanged();



                        // Skip blank lines
                        if (line.Equals(null))
                        {
                            continue;
                        }
                        if (line != null)
                        {
                            results.TotalRows++;
                        }

                        // Break up line by commas, each item in array will be one column.
                        columns = line.Split(',');


                        // Check the format of data, and update ImportResult accordingly.
                        // Check session ID.

                        int sessionID = 0;
                        if (!int.TryParse(columns[0].Trim(), out sessionID))
                        {
                            results.FailedRows++;
                            results.ErrorMessages.Add(string.Format("Line {0}: sessionid is not a number.", lineNum));
                            continue;
                        }

                        // Check cinema number.
                        byte cinemaNumber = 0;
                        if (!byte.TryParse(columns[3].Trim(), out cinemaNumber))
                        {
                            results.FailedRows++;
                            results.ErrorMessages.Add(string.Format("Line {0}: cinemanumber is not a number.", lineNum));
                            continue;
                        }



                        // Check session date/time.
                        DateTime sessionDate = DateTime.MinValue;
                        if (!DateTime.TryParse(columns[2].Trim(), out sessionDate))
                        {
                            results.FailedRows++;
                            results.ErrorMessages.Add(string.Format("Line{0}: Session date is not a date/time", lineNum));
                            continue;
                        }



                        int.TryParse(columns[1], out int movieID);


                        // Insert/update DB if okay.
                        //  int movieID = columns[1].Trim();
                        Session sessionToUpdate;
                        sessionToUpdate = DataLayer.DataLayer.GetSessionByID(sessionID);
                        if (sessionToUpdate.Equals(null))
                        {
                            Session sessionToAdd = new Session();
                            sessionToAdd.SetMovieId(movieID);
                            sessionToAdd.SetSessionDate(sessionDate);
                            sessionToAdd.SetSessionId(sessionID);
                            sessionToAdd.SetCinemaNumber(cinemaNumber);
                            DataLayer.DataLayer.AddSession(sessionToAdd);
                        }
                        else
                        { //update session
                          // sessionToUpdate. = title;
                            sessionToUpdate.SetMovieId(movieID);
                            sessionToUpdate.SetSessionDate(sessionDate);
                            sessionToUpdate.SetSessionId(sessionID);
                            sessionToUpdate.SetCinemaNumber(cinemaNumber);
                            DataLayer.DataLayer.UpdateSession(sessionToUpdate);
                        }
                        results.ImportedRows++;
                    }
                    catch (DbException dbx)
                    {
                        Console.WriteLine(dbx);
                        results.FailedRows++;
                        results.ErrorMessages.Add(string.Format("Line {0}: Database error occurred updating data.", lineNum));
                    }
                    finally
                    {
                        lineNum++;
                    }
                }
            }
            catch (System.IO.IOException)
            {
                results.ErrorMessages.Add("Error occurred opening file. Please check that the file exists and that you have permissions to open it.");
            }
            catch (Exception)
            {
                results.ErrorMessages.Add("An unknown error occurred during importing.");
            }
            finally
            {
                // Do callback to end import.
                RaiseCompleted(results);
            }
        }
 public CompletedEventArgs(ImportResult result)
 {
     Result = result;
 }