示例#1
0
        protected override void BeginProcessing()
        {
            //Validate all incoming catalogs once
            WriteDebug("Loading SpecializedCatalogFilePath[${SpecializedCatalogFilePath}]");
            XmlResolverUsingCatalog specializedXmlResolver = new XmlResolverUsingCatalog(SpecializedCatalogFilePath);

            WriteDebug("Loading GeneralizedCatalogFilePath[${GeneralizedCatalogFilePath}]");
            XmlResolverUsingCatalog generalizedXmlResolver = new XmlResolverUsingCatalog(GeneralizedCatalogFilePath);

            WriteDebug("Loading GeneralizationCatalogMappingFilePath[${GeneralizationCatalogMappingFilePath}]");
            DitaXmlGeneralizationCatalogMapping generalizationCatalogMapping = new DitaXmlGeneralizationCatalogMapping(GeneralizationCatalogMappingFilePath);

            _ditaXMLGeneralization = new HelperClasses.DitaXmlGeneralization(specializedXmlResolver, generalizedXmlResolver, generalizationCatalogMapping);
            if (AttributesToGeneralizeToProps != null)
            {
                WriteDebug("Loading AttributesToGeneralizeToProps[" + String.Join(",", AttributesToGeneralizeToProps) + "]");
                _ditaXMLGeneralization.AttributesToGeneralizeToProps = AttributesToGeneralizeToProps;
            }
            if (AttributesToGeneralizeToBase != null)
            {
                WriteDebug("Loading AttributesToGeneralizeToBase[" + String.Join(",", AttributesToGeneralizeToBase) + "]");
                _ditaXMLGeneralization.AttributesToGeneralizeToBase = AttributesToGeneralizeToBase;
            }

            if (!Directory.Exists(FolderPath))
            {
                WriteDebug("Creating FolderPath[${FolderPath}]");
                string tempLocation = Directory.CreateDirectory(FolderPath).FullName;
            }
            base.BeginProcessing();
        }
        protected override void ProcessRecord()
        {
            try
            {
                int current = 0;

                WriteDebug("Generalizing");

                if (!String.IsNullOrEmpty(FilePath))
                {
                    File = new FileInfo[] { new FileInfo(FilePath) };
                }

                XmlResolverUsingCatalog             specializedXmlResolver       = new XmlResolverUsingCatalog(SpecializedCatalogLocation);
                XmlResolverUsingCatalog             generalizedXmlResolver       = new XmlResolverUsingCatalog(GeneralizedCatalogLocation);
                DitaXmlGeneralizationCatalogMapping generalizationCatalogMapping = new DitaXmlGeneralizationCatalogMapping(GeneralizationCatalogMappingLocation);

                DitaXmlGeneralization ditaXMLGeneralization = new HelperClasses.DitaXmlGeneralization(specializedXmlResolver,
                                                                                                      generalizedXmlResolver, generalizationCatalogMapping);

                ditaXMLGeneralization.AttributesToGeneralizeToProps = AttributesToGeneralizeToProps;
                ditaXMLGeneralization.AttributesToGeneralizeToBase  = AttributesToGeneralizeToBase;


                List <FileInfo> outFiles = new List <FileInfo>();
                foreach (FileInfo inputFile in File)
                {
                    FileInfo outFile = null;
                    try
                    {
                        WriteParentProgress("Generalizing file[" + inputFile.FullName + "]", ++current, File.Length);

                        outFile = new FileInfo(Path.ChangeExtension(inputFile.FullName, ".gen"));
                        // file.MoveTo(file.FullName + ".bak");
                        ditaXMLGeneralization.Generalize(inputFile, outFile);
                        outFiles.Add(outFile);
                        System.IO.File.Delete(inputFile.FullName);
                    }
                    catch (Exception ex)
                    {
                        WriteWarning("Generalizing file " + inputFile.FullName + " failed: " + ex.Message);
                        if (System.IO.File.Exists(Path.ChangeExtension(inputFile.FullName, ".gen")))
                        {
                            System.IO.File.Move(Path.ChangeExtension(inputFile.FullName, ".gen"), Path.ChangeExtension(inputFile.FullName, ".errxml"));
                        }
                        System.IO.File.Move(inputFile.FullName, Path.ChangeExtension(inputFile.FullName, ".err"));
                        StreamWriter errFile = System.IO.File.CreateText(Path.ChangeExtension(inputFile.FullName, ".log"));
                        errFile.Write("Generalizing file " + outFile.FullName + " failed: " + ex.Message);
                        errFile.Close();
                    }
                }
                WriteDebug("outFiles.length[" + outFiles.Count + "]");
                WriteObject(outFiles, true);
            }
            catch (TrisoftAutomationException trisoftAutomationException)
            {
                ThrowTerminatingError(new ErrorRecord(trisoftAutomationException, base.GetType().Name, ErrorCategory.InvalidOperation, null));
            }
            catch (Exception exception)
            {
                ThrowTerminatingError(new ErrorRecord(exception, base.GetType().Name, ErrorCategory.NotSpecified, null));
            }
        }