Example #1
0
        public IFileExtractor GetFileExtractor(string filePath)
        {
            var fileTypeManager = DefaultFileTypeManager.CreateInstance(true);
            var extensionPoint  =
                PluginManager.DefaultPluginRegistry.GetExtensionPoint <FileTypeComponentBuilderAttribute>();

            foreach (IExtension extension in extensionPoint.Extensions)
            {
                IFileTypeComponentBuilder extensionFileTypeComponentBuilder =
                    (IFileTypeComponentBuilder)extension.CreateInstance();
                extensionFileTypeComponentBuilder.FileTypeManager = fileTypeManager;
                IFileTypeInformation extensionFileTypeInformation =
                    extensionFileTypeComponentBuilder.BuildFileTypeInformation(string.Empty);
                string extensionFileTypeDefinitionId = extensionFileTypeInformation.FileTypeDefinitionId.Id;


                if (Equals(extensionFileTypeDefinitionId, "SDL XLIFF 1.0 v 1.0.0.0"))
                {
                    var extractor = extensionFileTypeComponentBuilder.BuildFileExtractor(filePath);

                    return(extractor);
                }
            }
            return(null);
        }
Example #2
0
        /// <summary>
        /// searches for matches in files and performs replace of found ones
        /// </summary>
        /// <param name="_settings"></param>
        public void ReplaceInFiles(SearchSettings _settings)
        {
            validateSetts(_settings, true);

            _fileResults = new List <FileData>();

            foreach (string filePath in _files)
            {
                validateFile(filePath);

                createBackupFile(filePath);


                var fileTypeManager = DefaultFileTypeManager.CreateInstance(true);
                var extensionPoint  = PluginManager.DefaultPluginRegistry.GetExtensionPoint <FileTypeComponentBuilderAttribute>();
                //IFileExtractor parser = null;
                IBilingualDocumentGenerator writer = null;
                foreach (IExtension extension in extensionPoint.Extensions)
                {
                    IFileTypeComponentBuilder extensionFileTypeComponentBuilder = (IFileTypeComponentBuilder)extension.CreateInstance();
                    extensionFileTypeComponentBuilder.FileTypeManager = fileTypeManager;
                    IFileTypeInformation extensionFileTypeInformation = extensionFileTypeComponentBuilder.BuildFileTypeInformation(string.Empty);
                    string extensionFileTypeDefinitionId   = extensionFileTypeInformation.FileTypeDefinitionId.Id;
                    FileTypeComponentBuilderAttribute attr = extension.ExtensionAttribute as FileTypeComponentBuilderAttribute;

                    if (Equals(extensionFileTypeDefinitionId, "SDL XLIFF 1.0 v 1.0.0.0"))
                    {
                        //parser = extensionFileTypeComponentBuilder.BuildFileExtractor(filePath);
                        writer = extensionFileTypeComponentBuilder.BuildBilingualGenerator(filePath);
                    }
                }
                //XliffFileReader parser = new XliffFileReader(filePath);
                // var parser = FileReaderHelper.FileReader(filePath);

                var extractor = GetFileExtractor(filePath);
                if (extractor != null)
                {
                    var converter = fileTypeManager.GetConverter(extractor.BilingualParser);

                    SetFileExtractorProperties(extractor, converter);

                    var parserProperties = extractor.BilingualParser as INativeContentCycleAware;

                    var fileProperties = GetFileProperties(converter, filePath);

                    parserProperties?.SetFileProperties(fileProperties);

                    // var extractor = fileTypeManager.BuildFileExtractor(parser.BilingualParser, null);

                    // var writer = FileWriterHelper.FileWriter(filePath);

                    // create object to update file to replace found text
                    FileReplaceProcessor replaceProcessor = new FileReplaceProcessor(filePath, _settings);

                    // set extractor and processors
                    //  extractor.BilingualParser = parser.BilingualParser;
                    // converter.AddExtractor(extractor);

                    converter.SynchronizeDocumentProperties();
                    converter.AddBilingualProcessor(replaceProcessor);

                    if (writer != null)
                    {
                        converter.AddBilingualProcessor(new BilingualContentHandlerAdapter(writer.Input));
                    }

                    // start parsing the file
                    converter.Parse();

                    // save replace results
                    FileData fData = new FileData(filePath, replaceProcessor.ResultSource, replaceProcessor.ResultTarget);
                    fData.ReplaceResults = replaceProcessor.ResultOfReplace;
                    fData.Warnings       = replaceProcessor.Warnings;
                    _fileResults.Add(fData);

                    if (fData.ReplaceResults.Count < 1)
                    {
                        removeCreatedFile(filePath);
                    }
                    else if (!_settings.MakeBackup)
                    {
                        removeBackupFile(filePath);
                    }
                }
            }
        }