Ejemplo n.º 1
0
        internal static ArchivingLanguage GetOneLanguage(string languageKey)
        {
            ArchivingLanguage returnValue = null;
            var language = LanguageList.FindByEnglishName(languageKey);

            if (language == null || language.Iso3Code == "und")
            {
                if (!string.IsNullOrEmpty(languageKey) && languageKey.Length == 3)
                {
                    language = LanguageList.FindByISO3Code(languageKey);
                }
            }
            if (language != null && language.Iso3Code != "und" && !string.IsNullOrEmpty(language.EnglishName))
            {
                returnValue = new ArchivingLanguage(ForceIso639ThreeChar(language.Iso3Code), language.Definition)
                {
                    EnglishName = language.EnglishName
                }
            }
            ;
            else if (Project != null)
            {
                var archivingLanguage = ParseLanguage(ForceIso639ThreeChar(Project.VernacularISO3CodeAndName), null);
                returnValue = new ArchivingLanguage(ForceIso639ThreeChar(archivingLanguage.Iso3Code), archivingLanguage.LanguageName)
                {
                    EnglishName = archivingLanguage.EnglishName
                };
            }
            return(returnValue);
        }
Ejemplo n.º 2
0
        public void FindByEnglishName_NameNotFoundTest()
        {
            var result = LanguageList.FindByEnglishName("Turoyo");

            Assert.AreEqual("Turoyo", result.EnglishName);
            Assert.AreEqual("und", result.Iso3Code);
            Assert.AreEqual("Turoyo", result.OtherName);
            Assert.AreEqual("ISO639-3:und", result.Id);
        }
Ejemplo n.º 3
0
        public void FindByEnglishNameTest()
        {
            var result = LanguageList.FindByEnglishName("French");

            Assert.AreEqual("French", result.EnglishName);
            Assert.AreEqual("fra", result.Iso3Code);
            Assert.IsNullOrEmpty(result.OtherName);
            Assert.AreEqual("ISO639-3:fra", result.Id);
        }
Ejemplo n.º 4
0
        internal static ArchivingLanguage GetOneLanguage(string languageKey)
        {
            ArchivingLanguage returnValue = null;
            var language = LanguageList.FindByEnglishName(languageKey);

            if (language == null || language.Iso3Code == "und")
            {
                if (!string.IsNullOrEmpty(languageKey) && languageKey.Length == 3)
                {
                    language = LanguageList.FindByISO3Code(languageKey);
                }
            }
            if (language != null && language.Iso3Code != "und" && !string.IsNullOrEmpty(language.EnglishName))
            {
                returnValue = new ArchivingLanguage(ForceIso639ThreeChar(language.Iso3Code), language.Definition)
                {
                    EnglishName = language.EnglishName
                }
            }
            ;
            return(returnValue);
        }
Ejemplo n.º 5
0
        private static void AddIMDISession(Session saymoreSession, ArchivingDlgViewModel model)
        {
            var sessionFile = saymoreSession.MetaDataFile;

            // create IMDI session
            var imdiSession = model.AddSession(saymoreSession.Id);

            imdiSession.Title = saymoreSession.Title;

            // session location
            var address   = saymoreSession.MetaDataFile.GetStringValue("additional_Location_Address", null);
            var region    = saymoreSession.MetaDataFile.GetStringValue("additional_Location_Region", null);
            var country   = saymoreSession.MetaDataFile.GetStringValue("additional_Location_Country", null);
            var continent = saymoreSession.MetaDataFile.GetStringValue("additional_Location_Continent", null);

            if (string.IsNullOrEmpty(address))
            {
                address = saymoreSession.MetaDataFile.GetStringValue("location", null);
            }

            imdiSession.Location = new ArchivingLocation {
                Address = address, Region = region, Country = country, Continent = continent
            };

            // session description (synopsis)
            var stringVal = saymoreSession.MetaDataFile.GetStringValue("synopsis", null);

            if (!string.IsNullOrEmpty(stringVal))
            {
                imdiSession.AddDescription(new LanguageString {
                    Value = stringVal
                });
            }

            // session date
            stringVal = saymoreSession.MetaDataFile.GetStringValue("date", null);
            if (!string.IsNullOrEmpty(stringVal))
            {
                imdiSession.SetDate(DateTime.Parse(stringVal).ToISO8601TimeFormatDateOnlyString());
            }

            // session situation
            stringVal = saymoreSession.MetaDataFile.GetStringValue("situation", null);
            if (!string.IsNullOrEmpty(stringVal))
            {
                imdiSession.AddKeyValuePair("Situation", stringVal);
            }

            imdiSession.Genre         = GetFieldValue(sessionFile, "genre");
            imdiSession.SubGenre      = GetFieldValue(sessionFile, "additional_Sub-Genre");
            imdiSession.AccessCode    = GetFieldValue(sessionFile, "access");
            imdiSession.Interactivity = GetFieldValue(sessionFile, "additional_Interactivity");
            imdiSession.Involvement   = GetFieldValue(sessionFile, "additional_Involvement");
            imdiSession.PlanningType  = GetFieldValue(sessionFile, "additional_Planning_Type");
            imdiSession.SocialContext = GetFieldValue(sessionFile, "additional_Social_Context");
            imdiSession.Task          = GetFieldValue(sessionFile, "additional_Task");

            // custom session fields
            foreach (var item in saymoreSession.MetaDataFile.GetCustomFields())
            {
                imdiSession.AddKeyValuePair(item.FieldId, item.ValueAsString);
            }

            // actors
            var actors  = new ArchivingActorCollection();
            var persons = saymoreSession.GetAllPersonsInSession();

            foreach (var person in persons)
            {
                // is this person protected
                var protect = bool.Parse(person.MetaDataFile.GetStringValue("privacyProtection", "false"));

                // display message if the birth year is not valid
                var birthYear = person.MetaDataFile.GetStringValue("birthYear", string.Empty).Trim();
                if (!birthYear.IsValidBirthYear())
                {
                    var msg = LocalizationManager.GetString("DialogBoxes.ArchivingDlg.InvalidBirthYearMsg",
                                                            "The Birth Year for {0} should be either blank or a 4 digit number.");
                    model.AdditionalMessages[string.Format(msg, person.Id)] = ArchivingDlgViewModel.MessageType.Warning;
                }

                ArchivingActor actor = new ArchivingActor
                {
                    FullName   = person.Id,
                    Name       = person.MetaDataFile.GetStringValue(PersonFileType.kCode, person.Id),
                    BirthDate  = birthYear,
                    Gender     = person.MetaDataFile.GetStringValue(PersonFileType.kGender, null),
                    Education  = person.MetaDataFile.GetStringValue(PersonFileType.kEducation, null),
                    Occupation = person.MetaDataFile.GetStringValue(PersonFileType.kPrimaryOccupation, null),
                    Anonymize  = protect,
                    Role       = "Participant"
                };

                // do this to get the ISO3 codes for the languages because they are not in saymore
                var language = LanguageList.FindByEnglishName(person.MetaDataFile.GetStringValue("primaryLanguage", null));
                if (language != null)
                {
                    actor.PrimaryLanguage = new ArchivingLanguage(language.Iso3Code, language.EnglishName);
                }

                language = LanguageList.FindByEnglishName(person.MetaDataFile.GetStringValue("mothersLanguage", null));
                if (language != null)
                {
                    actor.MotherTongueLanguage = new ArchivingLanguage(language.Iso3Code, language.EnglishName);
                }

                // otherLanguage0 - otherLanguage3
                for (var i = 0; i < 4; i++)
                {
                    language = LanguageList.FindByEnglishName(person.MetaDataFile.GetStringValue("otherLanguage" + i, null));
                    if (language != null)
                    {
                        actor.Iso3Languages.Add(new ArchivingLanguage(language.Iso3Code, language.EnglishName));
                    }
                }

                // custom person fields
                foreach (var item in person.MetaDataFile.GetCustomFields())
                {
                    actor.AddKeyValuePair(item.FieldId, item.ValueAsString);
                }

                // actor files
                var actorFiles = Directory.GetFiles(person.FolderPath)
                                 .Where(f => IncludeFileInArchive(f, typeof(IMDIArchivingDlgViewModel), Settings.Default.PersonFileExtension));
                foreach (var file in actorFiles)
                {
                    actor.Files.Add(CreateArchivingFile(file));
                }

                // add actor to imdi session
                actors.Add(actor);
            }

            // get contributors
            foreach (var contributor in saymoreSession.GetAllContributorsInSession())
            {
                var actr = actors.FirstOrDefault(a => a.Name == contributor.Name);
                if (actr == null)
                {
                    actors.Add(contributor);
                }
                else
                {
                    if (actr.Role == "Participant")
                    {
                        actr.Role = contributor.Role;
                    }
                    else
                    {
                        if (!actr.Role.Contains(contributor.Role))
                        {
                            actr.Role += ", " + contributor.Role;
                        }
                    }
                }
            }

            // add actors to imdi session
            foreach (var actr in actors)
            {
                imdiSession.AddActor(actr);
            }

            // session files
            var files = saymoreSession.GetSessionFilesToArchive(model.GetType());

            foreach (var file in files)
            {
                imdiSession.AddFile(CreateArchivingFile(file));
            }
        }