Exemple #1
0
 /// <summary>
 /// Recursive function used to find if a view is a descendant of a given parent
 /// </summary>
 /// <param name="view">The view to check</param>
 /// <param name="parentView">The parent view</param>
 /// <returns>bool</returns>
 public static bool IsFormDescendant(View view, View parentView)
 {
     if (view.ParentView == null)
     {
         if (view.Name == parentView.Name)
         {
             return(true);
         }
         else
         {
             return(false);
         }
     }
     else if (view.ParentView.Name == parentView.Name)
     {
         return(true);
     }
     else
     {
         return(ImportExportHelper.IsFormDescendant(view.ParentView, parentView));
     }
 }
        /// <summary>
        /// Unpackages a project
        /// </summary>
        /// <returns></returns>
        //public bool UnpackageProject()
        //{
        //    bool success = false;

        //    success = DeryptPackage();
        //    success = DecompressProject();

        //    string mdbFilePath = compressedPackagePath.Substring(0, compressedPackagePath.Length - 3) + ".mdb";
        //    string prjFilePath = compressedPackagePath.Substring(0, compressedPackagePath.Length - 3) + ".prj";
        //    sourceProject = Util.CreateProjectFileFromDatabase(mdbFilePath, true);
        //    sourceProject = new Project(prjFilePath);

        //    View parentSourceView = sourceProject.Views[destinationView.Name];

        //    List<View> viewsToProcess = new List<View>();

        //    foreach (View view in sourceProject.Views)
        //    {
        //        if (view.Name == parentSourceView.Name)
        //        {
        //            continue;
        //        }

        //        if (ImportExportHelper.IsFormDescendant(view, parentSourceView))
        //        {
        //            viewsToProcess.Add(view);
        //        }
        //    }

        //    FormDataImporter fdi = new FormDataImporter(sourceProject, destinationProject, destinationView, viewsToProcess);
        //    fdi.SetProgressBar += new SetProgressBarDelegate(OnSetProgress);
        //    fdi.SetStatus += new UpdateStatusEventHandler(OnSetStatusMessage);
        //    fdi.AddStatusMessage += new UpdateStatusEventHandler(OnAddStatusMessage);
        //    fdi.SetMaxProgressBarValue += new SetMaxProgressBarValueDelegate(OnSetMaxProgressBarValue);
        //    fdi.Update = this.Update;
        //    fdi.Append = this.Append;
        //    fdi.ImportFormData();
        //    fdi.Dispose();

        //    return success;
        //}

        /// <summary>
        /// Unpackages a series of projects
        /// </summary>
        /// <returns></returns>
        public bool UnpackageProjects()
        {
            bool success = false;

            runningCount = 1;

            foreach (string filePath in PackagePaths)
            {
                string compressedPackagePath = DeryptPackage(filePath);
                success = DecompressProject(compressedPackagePath);

                string mdbFilePath = compressedPackagePath.Substring(0, compressedPackagePath.Length - 3) + ".mdb";
                string prjFilePath = compressedPackagePath.Substring(0, compressedPackagePath.Length - 3) + ".prj";
                sourceProject = Util.CreateProjectFileFromDatabase(mdbFilePath, true);
                sourceProject = new Project(prjFilePath);

                View parentSourceView = sourceProject.Views[destinationView.Name];

                List <View> viewsToProcess = new List <View>();

                foreach (View view in sourceProject.Views)
                {
                    if (view.Name == parentSourceView.Name)
                    {
                        continue;
                    }

                    if (ImportExportHelper.IsFormDescendant(view, parentSourceView))
                    {
                        viewsToProcess.Add(view);
                    }
                }

                FormDataImporter fdi = new FormDataImporter(sourceProject, destinationProject, destinationView, viewsToProcess);
                fdi.SetProgressBar         += new SetProgressBarDelegate(OnSetProgress);
                fdi.SetStatus              += new UpdateStatusEventHandler(OnSetStatusMessage);
                fdi.AddStatusMessage       += new UpdateStatusEventHandler(OnAddStatusMessage);
                fdi.SetMaxProgressBarValue += new SetMaxProgressBarValueDelegate(OnSetMaxProgressBarValue);
                fdi.Update = this.Update;
                fdi.Append = this.Append;
                fdi.ImportFormData();
                fdi.Dispose();

                if (FinishUnpackage != null)
                {
                    FinishUnpackage();
                }

                try
                {
                    File.Delete(compressedPackagePath);
                    File.Delete(mdbFilePath);
                }
                catch (IOException ex)
                {
                    OnAddStatusMessage("There was a problem deleting the unencrypted (plaintext) data from disk. Exception: " + ex);
                }
                runningCount++;
            }

            return(success);
        }