Пример #1
0
        /// <summary>
        ///     Exports or imports the version edits as XML files.
        /// </summary>
        /// <param name="args">The arguments.</param>
        internal void Run(ProgramArguments args)
        {
            using (EsriRuntimeAuthorization lic = new EsriRuntimeAuthorization(ProductCode.EngineOrDesktop))
            {
                if (lic.Initialize(esriLicenseProductCode.esriLicenseProductCodeStandard))
                {
                    var workspace          = WorkspaceFactories.Open(Path.GetFullPath(args.ConnectionFile));
                    var versionedWorkspace = (IVersionedWorkspace)workspace;

                    switch (args.Task)
                    {
                    case ProgramTask.Import:

                        var version       = versionedWorkspace.DefaultVersion.CreateVersion(args.VersionName);
                        var workspaceName = (IWorkspaceName)((IDataset)version).FullName;

                        string changesFileName = Path.GetFullPath(args.Path);

                        IDeltaDataChangesInit2 ddci = new DeltaDataChangesClass();
                        ddci.Init2(changesFileName, esriExportDataChangesOption.esriExportToXML, false);

                        IImportDataChanges idc = new DataChangesImporterClass();
                        idc.ImportDataChanges(workspaceName, (IDeltaDataChanges)ddci, true, true);

                        break;

                    case ProgramTask.Export:

                        var source = versionedWorkspace.FindVersion(args.VersionName);
                        var target = source.GetParent();

                        IWorkspaceName wsNameSource = (IWorkspaceName)((IDataset)source).FullName;
                        IWorkspaceName wsNameTarget = (IWorkspaceName)((IDataset)target).FullName;

                        var exportFileName = Path.Combine(Path.GetFullPath(args.Path), args.VersionName + ".xml");

                        IVersionDataChangesInit vdci = new VersionDataChangesClass();
                        vdci.Init(wsNameSource, wsNameTarget);

                        IExportDataChanges2 edc = new DataChangesExporterClass();
                        edc.ExportDataChanges(exportFileName, esriExportDataChangesOption.esriExportToXML, (IDataChanges)vdci, true);
                        break;
                    }
                }
            }
        }
Пример #2
0
        private void btnSelectDelta_Click(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog
            {
                Filter      = "*.mdb|*.mdb|*.xml|*.xml",
                Multiselect = false
            };

            if (dialog.ShowDialog() == DialogResult.OK)
            {
                this.bool_0 = false;
                this.lblCheckOutName.Text = "";
                this.txtDelta.Text        = "";
                string fileName = dialog.FileName;
                esriExportDataChangesOption esriExportToAccess = esriExportDataChangesOption.esriExportToAccess;
                if (dialog.FilterIndex == 2)
                {
                    esriExportToAccess = esriExportDataChangesOption.esriExportToXML;
                }
                IDeltaDataChangesInit init = new DeltaDataChangesClass();
                try
                {
                    init.Init(fileName, esriExportToAccess);
                    IDeltaDataChanges changes = init as IDeltaDataChanges;
                    this.txtDelta.Text = fileName;
                    this.txtDelta.Tag  = changes.Container;
                    IDataChanges changes2 = init as IDataChanges;
                    if (changes2.ParentWorkspaceName != null)
                    {
                        IWorkspace workspace = (changes2.ParentWorkspaceName as IName).Open() as IWorkspace;
                        IReplica   replica   = (workspace as IWorkspaceReplicas).get_ReplicaByID(changes2.ParentReplicaID);
                        if (replica != null)
                        {
                            this.lblCheckOutName.Text = replica.Name;
                            this.bool_0 = true;
                        }
                    }
                }
                catch (Exception)
                {
                    MessageBox.Show("检入空间中没有检出数据或检出数据无效!");
                }
            }
        }