Exemple #1
0
        /// <summary>
        ///     Imports the ArcFM Properties from the XML files specified by the arguments.
        /// </summary>
        /// <param name="args">The arguments.</param>
        private void Import(Dictionary <string, string> args)
        {
            foreach (var arg in args)
            {
                var workspace = WorkspaceFactories.Open(Path.GetFullPath(arg.Key));
                var dbi       = (IDataset)workspace;

                var    directory     = Path.GetFullPath(arg.Value);
                string name          = dbi.BrowseName;
                var    versionNumber = ArcFM.Version;

                Log.Info(this, "Importing ArcFM XML Properties");
                Log.Info(this, "- Database: \t{0}", name);
                Log.Info(this, "- Directory: \t{0}", directory);
                Log.Info(this, "- Version: \t{0}", versionNumber);

                var files   = Directory.GetFiles(directory, "*.xml", SearchOption.AllDirectories);
                var results = this.Import(workspace, files);

                var errors = results.Where(o => !o.Value).ToArray();
                if (errors.Any())
                {
                    Log.Warn(this, "- Errors: \t{0}", errors.Length);
                    foreach (var error in errors)
                    {
                        Log.Warn(this, "\t{0}", error.Key);
                    }
                }
            }
        }
Exemple #2
0
        /// <summary>
        ///     Connects to the geodatabase given the specified parameters.
        /// </summary>
        /// <param name="fileName">Name of the file.</param>
        /// <returns>
        ///     Returns the <see cref="IWorkspace" /> representing the connection to the geodatabase; otherwise <c>null</c>.
        /// </returns>
        protected IWorkspace Open(string fileName)
        {
            Log.Info("");
            Log.Info("Connecting to the geodatabase specified by the {0} file.", Path.GetFileName(fileName));

            IWorkspaceFactory factory = WorkspaceFactories.GetFactory(fileName);

            return(factory.OpenFromFile(fileName, 0));
        }
Exemple #3
0
        public virtual void Setup()
        {
            ComReleaser           = new ComReleaser();
            _RuntimeAuthorization = new EsriRuntimeAuthorization();

            Assert.IsTrue(_RuntimeAuthorization.Initialize(esriLicenseProductCode.esriLicenseProductCodeStandard));

            Workspace = WorkspaceFactories.Open(_PathName);
            ComReleaser.ManageLifetime(Workspace);
        }
Exemple #4
0
        /// <summary>
        ///     Exports the ArcFM XML Properties for the database connections specified in the arguments.
        /// </summary>
        /// <param name="args">The arguments.</param>
        private void Export(Dictionary <string, string> args)
        {
            foreach (var arg in args)
            {
                var workspace = WorkspaceFactories.Open(Path.GetFullPath(arg.Key));
                var dbi       = (IDataset)workspace;

                string name          = dbi.BrowseName;
                var    versionNumber = ArcFM.Version;

                var directory = Path.Combine(Path.GetFullPath(arg.Value), name);
                if (!Directory.Exists(directory))
                {
                    Directory.CreateDirectory(directory);
                }

                Log.Info(this, "Exporting ArcFM XML Properties");
                Log.Info(this, "- Database: \t{0}", name);
                Log.Info(this, "- Directory: \t{0}", directory);
                Log.Info(this, "- Version: \t{0}", versionNumber);

                string fileName = Path.Combine(Path.GetFullPath(arg.Value), name + ".xml");
                using (var table = this.CreateCsv(fileName))
                {
                    List <IXMLDOMElement> elements = new List <IXMLDOMElement>();
                    elements.AddRange(this.ExportFeatureClasses(workspace, directory, versionNumber, table));
                    elements.AddRange(this.ExportTables(workspace, directory, versionNumber, table));
                    elements.AddRange(this.ExportRelationships(workspace, directory, versionNumber, table));

                    if (elements.Any())
                    {
                        var doc = this.CreateDocument(versionNumber);

                        foreach (var element in elements)
                        {
                            doc.lastChild.appendChild(element);
                        }

                        XDocument xdoc = XDocument.Parse(doc.xml);
                        xdoc.Save(fileName, SaveOptions.None);

                        Log.Info(this, "{0}: \t{1}", name, fileName);
                    }

                    table.WriteCsv(Path.ChangeExtension(fileName, ".csv"));
                }
            }
        }
Exemple #5
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;
                    }
                }
            }
        }
 public void WorkspaceFactories_Open_FileNotFoundException()
 {
     Assert.IsNull(WorkspaceFactories.Open("@C:\\*.sde"));
 }
 public void WorkspaceFactories_Open_ArgumentNullException()
 {
     Assert.IsNull(WorkspaceFactories.Open(""));
 }
 public void WorkspaceFactories_GetFactory_FileNotFoundException()
 {
     Assert.IsNull(WorkspaceFactories.GetFactory("@C:\\kadhfakjfh.sde"));
 }
 public void WorkspaceFactories_GetFactory_Empty_FileNotFoundException()
 {
     Assert.IsNull(WorkspaceFactories.GetFactory(""));
 }
 public void WorkspaceFactories_GetFactory_DirectoryNotFoundException()
 {
     Assert.IsNull(WorkspaceFactories.GetFactory("@C:\\kadhfakjfh.gdb"));
 }