Ejemplo n.º 1
0
        private void BckGrWork_DoWork(object sender, DoWorkEventArgs e)
        {
            ProgressStruc ToSend = new ProgressStruc();

            BckGrWork.ReportProgress(0, SetProgressStruc(ToSend, "Total", "I will Create the link", 1));
            Branch.PostBranch(CmBxSubPrjText, CmBxSubPkgText, CmbxCurSubPrjText, TxtPkgDestText);
            BckGrWork.ReportProgress(1, SetProgressStruc(ToSend, "Total", "Link created", 1));

            if (MessageBox.Show(string.Format("Done! Do you want to imediatly branch also all files of {0} in {1}",
                                              CmBxSubPrjText + ":" + CmBxSubPkgText, CmbxCurSubPrjText + ":" +
                                              TxtPkgDestText), "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question) ==
                DialogResult.Yes)
            {
                BckGrWork.ReportProgress(1, SetProgressStruc(ToSend, "Total", "Get the list of file(s)", 3));
                string PkgSourceDir = VarGlobal.MonoOBSFrameworkTmpDir + CmBxSubPkgText +
                                      Path.DirectorySeparatorChar.ToString();
                if (!Directory.Exists(PkgSourceDir))
                {
                    Directory.CreateDirectory(PkgSourceDir);
                }
                StringBuilder Result = GetSourceProjectPackage.GetFileList(CmBxSubPrjText,
                                                                           CmBxSubPkgText);
                List <string> FsLs = ReadXml.GetAllFirstAttrValue(Result.ToString(),
                                                                  "directory", "name");
                BckGrWork.ReportProgress(2, SetProgressStruc(ToSend, "Total", "Find " + FsLs.Count +
                                                             " file(s)", 3));

                int Cnt = 1;
                if (FsLs.Count > 0)
                {
                    List <string> CurItem = new List <string>();
                    foreach (string item in FsLs)
                    {
                        BckGrWork.ReportProgress(Cnt, SetProgressStruc(ToSend, "Cur"
                                                                       , string.Format("Download file {0} {1}/{2}", item, Cnt, FsLs.Count), FsLs.Count));
                        Cnt += 1;
                        CurItem.Clear();
                        CurItem.Add(item);
                        SourceProjectPackageFile.GetSourceProjectPackageFiles(
                            CmBxSubPrjText, CmBxSubPkgText, CurItem, PkgSourceDir, 4096);
                        BckGrWork.ReportProgress(Cnt, SetProgressStruc(ToSend, "Cur"
                                                                       , "File downloaded", FsLs.Count));
                    }

                    Cnt = 1;
                    foreach (string FsPathName in Directory.GetFiles(PkgSourceDir))
                    {
                        BckGrWork.ReportProgress(Cnt, SetProgressStruc(ToSend, "Cur"
                                                                       , string.Format("Upload file {0} {1}/{2}", FsLs[Cnt], Cnt, FsLs.Count), FsLs.Count));
                        Cnt += 1;
                        PutSourceProjectPackageFile.PutFile(CmbxCurSubPrjText, TxtPkgDestText, FsPathName);
                        BckGrWork.ReportProgress(Cnt, SetProgressStruc(ToSend, "Cur"
                                                                       , "Uploaded !", FsLs.Count));
                    }
                }
                BckGrWork.ReportProgress(3, SetProgressStruc(ToSend, "Total", "Done !", 3));
            }
        }
        private void SetFsList(StringBuilder XmlFsList)
        {
            try
            {
                // InvokeRequired required compares the thread ID of the
                // calling thread to the thread ID of the creating thread.
                // If these threads are different, it returns true.
                if (listViewPckg.InvokeRequired)
                {
                    SetFsListCallback d = new SetFsListCallback(SetFsList);
                    listViewPckg.Invoke(d, XmlFsList);
                }
                else
                {
                    //if(!VarGlobal.LessVerbose)Console.WriteLine(XmlFsList.ToString());
                    List <string> Result = ReadXml.GetAllFirstAttrValue(XmlFsList.ToString(), "binarylist", "filename");
                    listViewPckg.Items.Clear();
                    if (Result.Count > 0)
                    {
                        foreach (string item in Result)
                        {
                            if (backgroundWorkerBuildStatus.CancellationPending == true)
                            {
                                break;
                            }
                            Dictionary <string, string> SubResult = ReadXml.GetAllAttrValue(XmlFsList.ToString(), "binarylist", "filename", item);
                            string name      = string.Empty;
                            int    Size      = 0;
                            string FinalSize = string.Empty;
                            string Time      = string.Empty;

                            foreach (string KeyName in SubResult.Keys)
                            {
                                switch (KeyName)
                                {
                                case "filename":
                                    name = SubResult[KeyName];
                                    break;

                                case "size":
                                    Size       = Convert.ToInt32(SubResult[KeyName]);
                                    FsByteSize = Size;
                                    FinalSize  = Size.ToString() + " Byte";
                                    if (Size >= 1024)
                                    {
                                        FinalSize = (Size / 1024).ToString() + " Kb";
                                    }
                                    if (Size >= (1024 * 1024))
                                    {
                                        FinalSize = (Size / 1024 / 1024).ToString() + " Mo";
                                    }
                                    break;

                                case "mtime":
                                    try
                                    {
                                        DateTime Dt2 = Convert.ToDateTime("1970-01-01T01:00:00+01:00");
                                        Time = Dt2.AddSeconds(Convert.ToInt64(SubResult[KeyName])).ToString();
                                    }
                                    catch (ArgumentOutOfRangeException)
                                    {
                                        // fileCreationTime is not valid, so re-throw the exception.
                                        throw;
                                    }
                                    break;

                                default:
                                    break;
                                }
                            }
                            ListViewItem ToAdd = new ListViewItem(name);
                            ToAdd.SubItems.AddRange(new string[] { FinalSize, Time });
                            ToAdd.Tag = FsByteSize;
                            listViewPckg.Items.Add(ToAdd);
                        }
                    }
                    _OperationStatusEnd = true;
                    //FIXME : Yet another mono bug, it don't show the last item when there is an scrollbar
                    listViewPckg.Items.Add(string.Empty);
                }
            }
            catch (Exception Ex)
            {
                if (!VarGlobal.LessVerbose)
                {
                    Console.WriteLine(Ex.Message + Environment.NewLine + Ex.StackTrace);
                }
            }
        }
        private void SetListFsPkg(StringBuilder XmlListFsPkg)
        {
            // InvokeRequired required compares the thread ID of the
            // calling thread to the thread ID of the creating thread.
            // If these threads are different, it returns true.
            if (TbCtrlFsList.InvokeRequired)
            {
                SetListFsPkgCallback d = new SetListFsPkgCallback(SetListFsPkg);
                TbCtrlFsList.Invoke(d, XmlListFsPkg);
            }
            else
            {
                //if(!VarGlobal.LessVerbose)Console.WriteLine(XmlListFsPkg.ToString());
                List <string> Result = ReadXml.GetAllFirstAttrValue(XmlListFsPkg.ToString(), "directory", "name");
                if (Result.Count > 0)
                {
                    PanelFsList.Controls.Clear();

                    foreach (string item in Result)
                    {
                        if (backgroundWorkerAddFs.CancellationPending == true)
                        {
                            break;
                        }
                        Dictionary <string, string> SubResult = ReadXml.GetAllAttrValue(XmlListFsPkg.ToString(), "directory", "name", item);
                        string name = string.Empty;
                        int    Size = 0;
                        long   Time = 0;
                        foreach (string KeyName in SubResult.Keys)
                        {
                            switch (KeyName)
                            {
                            case "name":
                                name = SubResult[KeyName];
                                break;

                            case "size":
                                Size = Convert.ToInt32(SubResult[KeyName]);
                                break;

                            case "mtime":
                                Time = Convert.ToInt64(SubResult[KeyName]);
                                break;

                            default:
                                break;
                            }
                        }
                        PkgFiles TheCtrl = new PkgFiles(Package, name, Size, Time);
                        TheCtrl.Dock = DockStyle.Top;
                        PanelFsList.Controls.Add(TheCtrl);
                    }

                    //Mono have a damed bug who don't show ToolStrip2 since we rezise the control
                    this.Height = this.Height + 1;
                    this.Height = this.Height - 1;
                }

                VarGlobal.NetEvManager.DoSomething("List of files Done");
                if (FromBtn == false && backgroundWorkerBuildStatus.IsBusy == false)
                {
                    backgroundWorkerBuildStatus.RunWorkerAsync();
                }
            }
        }