Пример #1
0
        //private ConvertFdoToMongoOptionList _convertAnthroCodesOptionList;

        public ConvertFdoToMongoLexicon(ILfProject lfProject, ILogger logger, IMongoConnection connection, IProgress progress, MongoProjectRecordFactory projectRecordFactory)
        {
            LfProject            = lfProject;
            Logger               = logger;
            Connection           = connection;
            Progress             = progress;
            ProjectRecordFactory = projectRecordFactory;

            FwProject      = LfProject.FieldWorksProject;
            Cache          = FwProject.Cache;
            ServiceLocator = FwProject.ServiceLocator;
            _wsEn          = ServiceLocator.WritingSystemFactory.GetWsFromStr("en");

            // Reconcile writing systems from FDO and Mongo
            Dictionary <string, LfInputSystemRecord> lfWsList = FdoWsToLfWs();

                        #if FW8_COMPAT
            List <string> VernacularWss    = ServiceLocator.LanguageProject.CurrentVernacularWritingSystems.Select(ws => ws.Id).ToList();
            List <string> AnalysisWss      = ServiceLocator.LanguageProject.CurrentAnalysisWritingSystems.Select(ws => ws.Id).ToList();
            List <string> PronunciationWss = ServiceLocator.LanguageProject.CurrentPronunciationWritingSystems.Select(ws => ws.Id).ToList();
                        #else
            List <string> VernacularWss    = ServiceLocator.LanguageProject.CurrentVernacularWritingSystems.Select(ws => ws.LanguageTag).ToList();
            List <string> AnalysisWss      = ServiceLocator.LanguageProject.CurrentAnalysisWritingSystems.Select(ws => ws.LanguageTag).ToList();
            List <string> PronunciationWss = ServiceLocator.LanguageProject.CurrentPronunciationWritingSystems.Select(ws => ws.LanguageTag).ToList();
                        #endif
            Connection.SetInputSystems(LfProject, lfWsList, VernacularWss, AnalysisWss, PronunciationWss);

            ListConverters = new Dictionary <string, ConvertFdoToMongoOptionList>();
            ListConverters[GrammarListCode]        = ConvertOptionListFromFdo(LfProject, GrammarListCode, ServiceLocator.LanguageProject.PartsOfSpeechOA);
            ListConverters[SemDomListCode]         = ConvertOptionListFromFdo(LfProject, SemDomListCode, ServiceLocator.LanguageProject.SemanticDomainListOA, updateMongoList: false);
            ListConverters[AcademicDomainListCode] = ConvertOptionListFromFdo(LfProject, AcademicDomainListCode, ServiceLocator.LanguageProject.LexDbOA.DomainTypesOA);
            ListConverters[LocationListCode]       = ConvertOptionListFromFdo(LfProject, LocationListCode, ServiceLocator.LanguageProject.LocationsOA);
            ListConverters[UsageTypeListCode]      = ConvertOptionListFromFdo(LfProject, UsageTypeListCode, ServiceLocator.LanguageProject.LexDbOA.UsageTypesOA);
            ListConverters[SenseTypeListCode]      = ConvertOptionListFromFdo(LfProject, SenseTypeListCode, ServiceLocator.LanguageProject.LexDbOA.SenseTypesOA);
            ListConverters[AnthroCodeListCode]     = ConvertOptionListFromFdo(LfProject, AnthroCodeListCode, ServiceLocator.LanguageProject.AnthroListOA);
            ListConverters[StatusListCode]         = ConvertOptionListFromFdo(LfProject, StatusListCode, ServiceLocator.LanguageProject.StatusOA);

            _convertCustomField = new ConvertFdoToMongoCustomField(Cache, ServiceLocator, logger);
            foreach (KeyValuePair <string, ICmPossibilityList> pair in _convertCustomField.GetCustomFieldParentLists())
            {
                string             listCode   = pair.Key;
                ICmPossibilityList parentList = pair.Value;
                if (!ListConverters.ContainsKey(listCode))
                {
                    ListConverters[listCode] = ConvertOptionListFromFdo(LfProject, listCode, parentList);
                }
            }
        }