Example #1
0
        private bool AddNewScenarioResultAndLogFiles(string FileName, MikeScenario CurrentMikeScenario)
        {
            richTextBoxStatus.AppendText("\r\n\r\nFile [" + FileName + "]\r\n");

            FileInfo   fi = new FileInfo(FileName);
            FileStream fs = fi.OpenRead();

            string FilePath      = FileName.Substring(0, FileName.LastIndexOf("\\") + 1);
            string ShortFileName = FileName.Substring(FileName.LastIndexOf("\\") + 1);

            Application.DoEvents();

            //Read all file bytes into an array from the specified file.
            int nBytes = (int)fi.Length;

            Byte[] ByteArray  = new byte[nBytes];
            int    nBytesRead = fs.Read(ByteArray, 0, nBytes);

            fs.Close();

            richTextBoxStatus.AppendText("Checking if file already in DB ...\r\n");
            Application.DoEvents();

            //string TheFileName = fi.FullName.Substring(fi.FullName.LastIndexOf("\\") + 1);
            CSSPFile csspFileExist = (from f in vpse.CSSPFiles
                                      where f.FileName == ShortFileName &&
                                      f.FileOriginalPath == FilePath &&
                                      f.FileType == fi.Extension
                                      select f).FirstOrDefault <CSSPFile>();

            if (csspFileExist != null)
            {
                // just replace the content of the file
                richTextBoxStatus.AppendText("File already exist in DB ...\r\n");
                richTextBoxStatus.AppendText("Updating the fileContent in DB ...\r\n");
                csspFileExist.FileContent = ByteArray;

                try
                {
                    vpse.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
                    richTextBoxStatus.AppendText("fileContent updated ...\r\n");
                    return(true);
                }
                catch (Exception ex)
                {
                    richTextBoxStatus.AppendText("Error while updating fileContent ...\r\n");
                    richTextBoxStatus.AppendText("Error message [" + ex.Message + "] ...\r\n");
                    lblStatusWorking.Text = "Error ... ";
                    lblStatusUpdate.Text  = "See details below ... ";
                    return(false);
                }
            }

            richTextBoxStatus.AppendText("File does not exist in DB ...\r\n");
            richTextBoxStatus.AppendText("Saving file in DB ...\r\n");
            Application.DoEvents();

            CSSPFile csspFile = new CSSPFile();

            csspFile.CSSPGuid         = Guid.NewGuid();
            csspFile.FileName         = ShortFileName;
            csspFile.FileOriginalPath = FilePath;
            csspFile.FileSize         = fi.Length;
            csspFile.FileDescription  = "";
            csspFile.FileCreatedDate  = fi.CreationTime;
            csspFile.FileType         = fi.Extension;
            csspFile.FileContent      = ByteArray;
            if (fi.Extension.ToLower() == ".dfsu")
            {
                csspFile.Purpose = PurposeType.MikeResult.ToString();

                MemoryStream ms = new MemoryStream(ByteArray);

                Dfs dfs = new Dfs(Dfs.DFSType.DFSU, true);

                dfs.StreamToDfs(ms);

                csspFile.DataStartDate     = dfs.DataStartDate;
                csspFile.DataEndDate       = dfs.DataStartDate.AddSeconds(dfs.TimeSteps * dfs.XValueList.Count);
                csspFile.TimeStepsInSecond = dfs.TimeSteps;
                string ParamNameTxt = "";
                string ParamUnitTxt = "";
                foreach (Dfs.Parameter p in dfs.ParameterList)
                {
                    ParamUnitTxt += string.Format("[{0}]-", p.UnitCode.ToString());
                    ParamNameTxt += string.Format("[{0}]-", p.Description);
                }
                csspFile.ParameterNames = ParamNameTxt.Substring(0, ParamNameTxt.Length - 1);
                csspFile.ParameterUnits = ParamUnitTxt.Substring(0, ParamUnitTxt.Length - 1);
            }
            else if (fi.Extension.ToLower() == ".log")
            {
                csspFile.Purpose = PurposeType.MikeResult.ToString();
            }
            else
            {
                richTextBoxStatus.AppendText("File extension should only be .dfsu and .log. It is [" + fi.Extension + "] ...\r\n");
                return(false);
            }

            try
            {
                vpse.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
                richTextBoxStatus.AppendText("CSSPFile saved in DB ...\r\n");
                Application.DoEvents();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Could not store file [" + FileName + "] in DB\r\n" + ex.Message + "\r\n");
                richTextBoxStatus.AppendText("Could not store file [" + FileName + "] in DB\r\n" + ex.Message + "\r\n");
                Application.DoEvents();
                lblStatusWorking.Text = "Error ... ";
                lblStatusUpdate.Text  = "See details below ... ";
                return(false);
            }

            int msID = CurrentMikeScenario.MikeScenarioID;

            CurrentMikeScenario = (from ms in vpse.MikeScenarios
                                   where ms.MikeScenarioID == msID
                                   select ms).FirstOrDefault <MikeScenario>();

            if (CurrentMikeScenario == null)
            {
                richTextBoxStatus.AppendText("Could not find MikeScenario with MikeScenarioID = [" + msID + "] ...\r\n");
                lblStatusWorking.Text = "Error ... ";
                lblStatusUpdate.Text  = "See details below ... ";
                return(false);
            }

            MikeScenarioFile NewMikeScenarioFile = new MikeScenarioFile();

            NewMikeScenarioFile.MikeScenario   = CurrentMikeScenario;
            NewMikeScenarioFile.CSSPFile       = csspFile;
            NewMikeScenarioFile.CSSPParentFile = csspFile;

            try
            {
                richTextBoxStatus.AppendText("Linking MikeScenario to CSSPFile using MikeScenarioFile ...\r\n");
                Application.DoEvents();
                vpse.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
                richTextBoxStatus.AppendText("Linked MikeScenario to CSSPFile using MikeScenarioFile ...\r\n");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Could not link MikeScenario to CSSPFile\r\n" + ex.Message + "\r\n");
                richTextBoxStatus.AppendText("Could not link MikeScenario to CSSPFile\r\n" + ex.Message + "\r\n");
                Application.DoEvents();
                lblStatusWorking.Text = "Error ... ";
                lblStatusUpdate.Text  = "See details below ... ";
                return(false);
            }

            return(true);
        }
Example #2
0
        private void processMikeExited()
        {
            richTextBoxStatus.AppendText(string.Format("processMIKE ended at [{0:yyyy-MM-dd hh:mm:ss tt}] ...\r\n", DateTime.Now));
            timerMzLaunchStillRunning.Enabled = false;

            lblStatusWorking.Text = "Process ended ...";
            lblStatusUpdate.Text  = string.Format("at [{0:yyyy-MM-dd hh:mm:ss tt}]", DateTime.Now);

            if (!CopyDfsuAndLogToDB())
            {
                lblStatusWorking.Text = "Error ...";
                lblStatusUpdate.Text  = "";
                return;
            }


            // should be changing MikeScenario status
            MikeScenario mikeScenarioToChange = (from ms in vpse.MikeScenarios
                                                 where ms.MikeScenarioID == CurrentMikeScenario.MikeScenarioID
                                                 select ms).FirstOrDefault <MikeScenario>();

            if (mikeScenarioToChange == null)
            {
                richTextBoxStatus.AppendText("Could not find MikeScenario to update. Looking for MikeScenarioID = [" + CurrentMikeScenario.MikeScenarioID + "] ... \r\n");
                lblStatusWorking.Text = "Error ...";
                lblStatusUpdate.Text  = "";
                return;
            }

            // should Check if the log file shows the normal completion line as the last line
            string       LogFileName = CurrentFile.Substring(0, CurrentFile.LastIndexOf(".")) + ".log";
            MemoryStream mems        = new MemoryStream();

            mems = fileToMemoryStream(LogFileName);

            richTextBoxStatus.AppendText("Parsing the log file [" + LogFileName + "]\r\n");
            if (!m21fmLog.StreamToM21fmLog(mems))
            {
                richTextBoxStatus.AppendText("Error while parsing the log file\r\n");
                mikeScenarioToChange.ScenarioStatus = ScenarioStatusType.Error.ToString();
            }

            if (m21fmLog.CompletionTxt == "Run cancelled by user")
            {
                richTextBoxStatus.AppendText("Run cancelled by user\r\n");
                mikeScenarioToChange.ScenarioStatus = ScenarioStatusType.Canceled.ToString();
            }

            if (m21fmLog.CompletionTxt == "Abnormal run completion")
            {
                richTextBoxStatus.AppendText("Abnormal run completion\r\n");
                mikeScenarioToChange.ScenarioStatus = ScenarioStatusType.Error.ToString();
            }

            if (m21fmLog.CompletionTxt == "Normal run completion")
            {
                richTextBoxStatus.AppendText("Normal run completion\r\n");
                mikeScenarioToChange.ScenarioStatus = ScenarioStatusType.Completed.ToString();
            }

            mikeScenarioToChange.ScenarioStartExecutionDateAndTime = m21fmLog.StartExecutionDate;
            mikeScenarioToChange.ScenarioExecutionTimeInMinutes    = m21fmLog.TotalElapseTimeInSeconds / 60;

            try
            {
                richTextBoxStatus.AppendText("Updating mikeScenario ScenarioStatus to [" + mikeScenarioToChange.ScenarioStatus + "] ... \r\n");
                vpse.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
                richTextBoxStatus.AppendText("Updated mikeScenario ScenarioStatus to [" + mikeScenarioToChange.ScenarioStatus + "] ... \r\n");
            }
            catch (Exception ex)
            {
                richTextBoxStatus.AppendText("Error while updating mikeScenario ScenarioStatus to [" + mikeScenarioToChange.ScenarioStatus + "] ... \r\n");
                richTextBoxStatus.AppendText("Error message [" + ex.Message + "] ... \r\n");
                lblStatusWorking.Text = "Error ...";
                lblStatusUpdate.Text  = ex.Message;
                return;
            }

            lblStatusWorking.Text = "Done ... ";
            lblStatusUpdate.Text  = " ";

            FileInfo fi = new FileInfo(CurrentFile);

            string AutoRunMikeLogFileName = string.Format("[{0}] AutoRunMike.log", mikeScenarioToChange.MikeScenarioID);
            string FilePath = fi.DirectoryName + "\\";

            CSSPFile csspFileExist = (from cf in vpse.CSSPFiles
                                      from msf in vpse.MikeScenarioFiles
                                      where cf.CSSPFileID == msf.CSSPFile.CSSPFileID &&
                                      cf.FileType == ".log" &&
                                      cf.FileOriginalPath == fi.DirectoryName + "\\" &&
                                      cf.FileName == AutoRunMikeLogFileName &&
                                      cf.Purpose == "Other"
                                      select cf).FirstOrDefault <CSSPFile>();

            if (csspFileExist == null)
            {
                CSSPFile csspFile = new CSSPFile();
                csspFile.CSSPGuid         = Guid.NewGuid();
                csspFile.FileName         = AutoRunMikeLogFileName;
                csspFile.FileOriginalPath = FilePath;
                csspFile.FileSize         = richTextBoxStatus.Text.Length;
                csspFile.FileDescription  = "";
                csspFile.FileCreatedDate  = DateTime.Now;
                csspFile.FileType         = ".log";
                csspFile.FileContent      = Encoding.ASCII.GetBytes(richTextBoxStatus.Text);
                csspFile.Purpose          = PurposeType.Other.ToString();

                try
                {
                    richTextBoxStatus.AppendText("Adding log file [" + AutoRunMikeLogFileName + "] of AutoRunMike to [" + mikeScenarioToChange.MikeScenarioID + "] ... \r\n");
                    vpse.AddToCSSPFiles(csspFile);
                    vpse.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
                    richTextBoxStatus.AppendText("Added log file ... \r\n");
                }
                catch (Exception ex)
                {
                    richTextBoxStatus.AppendText("Error while adding log file ... \r\n");
                    richTextBoxStatus.AppendText("Error message [" + ex.Message + "] ... \r\n");
                    lblStatusWorking.Text = "Error ...";
                    lblStatusUpdate.Text  = ex.Message;
                    return;
                }

                // linking the file to the scenario
                MikeScenarioFile mikeScenarioFile = new MikeScenarioFile();
                mikeScenarioFile.MikeScenario   = mikeScenarioToChange;
                mikeScenarioFile.CSSPFile       = csspFile;
                mikeScenarioFile.CSSPParentFile = csspFile;

                try
                {
                    richTextBoxStatus.AppendText("Linking log file [" + AutoRunMikeLogFileName + "] of AutoRunMike to [" + mikeScenarioToChange.MikeScenarioID + "] ... \r\n");
                    vpse.AddToMikeScenarioFiles(mikeScenarioFile);
                    vpse.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
                    richTextBoxStatus.AppendText("Linked log file ... \r\n");
                }
                catch (Exception ex)
                {
                    richTextBoxStatus.AppendText("Error while linking file to scenario ... \r\n");
                    richTextBoxStatus.AppendText("Error message [" + ex.Message + "] ... \r\n");
                    lblStatusWorking.Text = "Error ...";
                    lblStatusUpdate.Text  = ex.Message;
                    return;
                }
            }
            else
            {
                richTextBoxStatus.AppendText("Adding log file [" + AutoRunMikeLogFileName + "] of AutoRunMike to [" + mikeScenarioToChange.MikeScenarioID + "] ... \r\n");

                csspFileExist.FileSize        = richTextBoxStatus.Text.Length;
                csspFileExist.FileCreatedDate = DateTime.Now;
                csspFileExist.FileContent     = Encoding.ASCII.GetBytes(richTextBoxStatus.Text);

                try
                {
                    vpse.SaveChanges();
                    richTextBoxStatus.AppendText("Added log file ... \r\n"); // this will not be shown in the log file if successful
                }
                catch (Exception ex)
                {
                    richTextBoxStatus.AppendText("Error while adding log file ... \r\n");
                    richTextBoxStatus.AppendText("Error message [" + ex.Message + "] ... \r\n");
                    lblStatusWorking.Text = "Error ...";
                    lblStatusUpdate.Text  = ex.Message;
                    return;
                }
            }

            richTextBoxStatus.Clear();

            timerAutoRunMike.Enabled = true;
            CheckForMoreReadyToRun();
        }