예제 #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);
        }