Beispiel #1
0
        /// <summary>
        ///     Imports the specified files into the workspace.
        /// </summary>
        /// <param name="workspace">The workspace.</param>
        /// <param name="fileNames">The file names.</param>
        private Dictionary <string, bool> Import(IWorkspace workspace, string[] fileNames)
        {
            Log.Info(this, "- Import File(s): \t{0}", fileNames.Length);

            var ies = new Dictionary <string, IMMXMLImportExport4>()
            {
                { "MMFieldInfoIE", new MMFieldInfoIEClass() },
                { "MMObjClassIE", new MMObjClassIEClass() },
                { "MMRelClassIE", new MMRelClassIEClass() }
            };

            var utils   = new mmFrameworkUtilitiesClass();
            var results = new Dictionary <string, bool>();

            foreach (var fileName in fileNames)
            {
                var fileName1 = fileName;

                workspace.PerformOperation(true, () =>
                {
                    IXMLDOMDocument doc = new DOMDocumentClass();
                    if (doc.load(fileName1))
                    {
                        var dtd = utils.AddDTD(mmTopLevelType.GXXMLTOPLEVEL, ref doc);
                        if (dtd != 0)
                        {
                            return(false);
                        }

                        var nodes = doc.getElementsByTagName("IEPROGID");
                        nodes.reset();

                        IXMLDOMElement element;
                        while ((element = nodes.nextNode() as IXMLDOMElement) != null)
                        {
                            var parentNode = (IXMLDOMElement)element.parentNode;
                            var node       = parentNode.selectSingleNode("FEATURENAME") ?? element.selectSingleNode("NAME");

                            Log.Info(this, "{0}:", node.text);

                            var ie = ies.Select(o => o.Value).FirstOrDefault(kvp => element.text.EndsWith(kvp.ProgID, StringComparison.InvariantCultureIgnoreCase));
                            if (ie != null)
                            {
                                bool success;

                                try
                                {
                                    success = ie.Import(workspace, element, mmGxXMLOptions.mmGXOOverwrite, mmGxXMLSubtypeOptions.mmGXOReplace);
                                    Log.Info(this, "\t{0} => {1}", ie.DisplayName, success ? "SUCCESS" : "FAILED");
                                }
                                catch (Exception e)
                                {
                                    success = false;
                                    Log.Error(this, string.Format("\t{0} => {1}", ie.DisplayName, e.Message));
                                }

                                results.Add(node.text, success);
                            }
                        }

                        return(results.Last().Value);
                    }

                    return(false);
                });
            }

            return(results);
        }