コード例 #1
0
        private void OnProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            FixtureAttachFileProgress prog = e.UserState as FixtureAttachFileProgress;

            if (prog.Type == FixtureAttachFileProgressType.BeginAttachFile)
            {
                currentFileLabel.Text = prog.FileName;
            }
            else
            {
                progress.PerformStep();

                int.TryParse(endFilesCount.Text, out int count);
                count++;

                endFilesCount.Text = count.ToString();

                bool isSuccess = false;

                foreach (var obj in prog.Objects)
                {
                    if (obj.State == FixtureAttachFileState.Success)
                    {
                        isSuccess = true;
                    }

                    ListViewItem item = new ListViewItem(obj.IdDoc.ToString());
                    item.SubItems.Add(prog.FileName);
                    item.SubItems.Add(obj.Sign);
                    item.SubItems.Add(obj.ObjectType);
                    item.SubItems.Add(obj.ObjectRevision.ToString());
                    item.SubItems.Add(obj.State.ToString());

                    logView.Items.Add(item);
                }

                if (prog.Objects.Count == 0)
                {
                    ListViewItem item = new ListViewItem(String.Empty);
                    item.SubItems.Add(prog.FileName);
                    item.SubItems.Add(String.Empty);
                    item.SubItems.Add(String.Empty);
                    item.SubItems.Add(String.Empty);
                    item.SubItems.Add("Error file");

                    logView.Items.Add(item);
                }

                if (isSuccess)
                {
                    int.TryParse(addFilesCount.Text, out int addCount);
                    addCount++;

                    addFilesCount.Text = addCount.ToString();
                }
            }
        }
コード例 #2
0
        private void OnRun(object sender, DoWorkEventArgs e)
        {
            //attachManager.Run();

            int counter = 0;

            DirectoryInfo directory = new DirectoryInfo(directoryBox.TextValue);

            foreach (var file in directory.GetFiles())
            {
                if (backWorker.CancellationPending)
                {
                    e.Cancel = true;
                    return;
                }

                counter++;

                List <FixtureAttachFileObject> objects = new List <FixtureAttachFileObject>();

                FixtureAttachFileProgress beginProgress = new FixtureAttachFileProgress();
                beginProgress.Type     = FixtureAttachFileProgressType.BeginAttachFile;
                beginProgress.FileName = file.Name;

                backWorker.ReportProgress(counter, beginProgress);

                if (Regex.IsMatch(file.Name, @"^\d+"))
                {
                    int idDoc = Convert.ToInt32(Regex.Match(file.Name, @"^\d+").Value);

                    // файл
                    FileStream stream = File.OpenRead(file.FullName);

                    byte[] bytes = new byte[file.Length];
                    stream.Read(bytes, 0, (int)file.Length);

                    stream.Close();

                    // контрольная сумма
                    SHA1   s    = new SHA1CryptoServiceProvider();
                    byte[] hash = s.ComputeHash(bytes);

                    string hashStr = (System.BitConverter.ToString(hash)).Replace("-", "").ToLower();

                    // транзакция
                    OracleConnection connection = obj_lib.Module.OpenSession().Connection as OracleConnection;

                    OracleCommand command = new OracleCommand("pkg_sepo_import_global.attach_fixture_file");
                    command.Connection  = connection;
                    command.CommandType = System.Data.CommandType.StoredProcedure;

                    OracleParameter p_result = new OracleParameter(
                        "p_result", OracleDbType.RefCursor, System.Data.ParameterDirection.Output);

                    OracleParameter p_iddoc   = new OracleParameter("p_iddoc", idDoc);
                    OracleParameter p_docname = new OracleParameter("p_docname", file.Name);
                    OracleParameter p_hash    = new OracleParameter("p_hash", hashStr);
                    OracleParameter p_data    = new OracleParameter("p_data", OracleDbType.Blob);

                    command.Parameters.AddRange(new OracleParameter[] { p_result, p_iddoc, p_docname, p_hash, p_data });

                    p_data.Value = bytes;
                    command.ExecuteNonQuery();

                    OracleRefCursor result = (OracleRefCursor)p_result.Value;

                    using (OracleDataReader rd = result.GetDataReader())
                    {
                        while (rd.Read())
                        {
                            FixtureAttachFileObject obj = new FixtureAttachFileObject();
                            obj.IdDoc          = rd.GetInt32(1);
                            obj.Sign           = rd.GetString(3);
                            obj.ObjectType     = rd.GetString(4);
                            obj.ObjectRevision = rd.GetInt32(5);
                            obj.State          = (rd.GetInt16(6) == 1) ? FixtureAttachFileState.Success : FixtureAttachFileState.None;

                            objects.Add(obj);
                        }
                    }
                }

                FixtureAttachFileProgress endProgress = new FixtureAttachFileProgress();

                endProgress.Type     = FixtureAttachFileProgressType.EndAttachFile;
                endProgress.FileName = file.Name;
                endProgress.Objects  = objects;

                backWorker.ReportProgress(counter, endProgress);
            }
        }