コード例 #1
0
		/// ------------------------------------------------------------------------------------
		/// <summary>
		/// Sets the SIL Domains and/or sub-domains to which the resource being archived relates.
		/// </summary>
		/// <param name="domains">The domains(s) and/or sub-domains. If the resource relates to
		/// multiple domains, "OR" them together to set all the necessary flags. It is not
		/// necessary to OR the sub-domains with their corresponding domains, since the
		/// subdomains already have the correct domain bits set.</param>
		/// ------------------------------------------------------------------------------------
		public void SetDomains(SilDomain domains)
		{
			PreventDuplicateMetadataProperty(MetadataProperties.Domains);

			if (domains.HasFlag(SilDomain.AcademicTraining))
				AddDomain(kAcademicTrainingAbbrev, "Academic Training");

			if (domains.HasFlag(SilDomain.Anthropology))
			{
				AddDomain(kAnthropologyAbbrev, "Anthropology");

				// sub-domains
				if (domains.HasFlag(SilDomain.Anth_Ethnography))
					AddSubDomain(kAnthropologyAbbrev, "ethnography");
				if (domains.HasFlag(SilDomain.Anth_Interview))
					AddSubDomain(kAnthropologyAbbrev, "interview");
				if (domains.HasFlag(SilDomain.Anth_KinshipAnalysis))
					AddSubDomain(kAnthropologyAbbrev, "kinship analysis");
			}

			if (domains.HasFlag(SilDomain.ArtsandEthnomusicology))
			{
				AddDomain(kEthnomusicologyAbbrev, "Arts and Ethnomusicology");

				// sub-domains
				if (domains.HasFlag(SilDomain.Emus_ArtisticCommunicationProfile))
					AddSubDomain(kEthnomusicologyAbbrev, "artistic communication profile");
				if (domains.HasFlag(SilDomain.Emus_PerformanceCollection))
					AddSubDomain(kEthnomusicologyAbbrev, "aperformance collection");
				if (domains.HasFlag(SilDomain.Emus_SongCollection))
					AddSubDomain(kEthnomusicologyAbbrev, "song collection");
				if (domains.HasFlag(SilDomain.Emus_SummaryArtisticEventFormAnalysis))
					AddSubDomain(kEthnomusicologyAbbrev, "summary artistic event form analysis");
				if (domains.HasFlag(SilDomain.Emus_SummaryArtisticGenreAnalysis))
					AddSubDomain(kEthnomusicologyAbbrev, "summary artistic genre analysis");
			}

			if (domains.HasFlag(SilDomain.Communications))
				AddDomain(kCommunicationsAbbrev, "Communications");
			if (domains.HasFlag(SilDomain.CommunityDevelopment))
				AddDomain(kCommunityDevelopmentAbbrev, "Community Development");
			if (domains.HasFlag(SilDomain.Counseling))
				AddDomain(kCounselingAbbrev, "Counseling");
			if (domains.HasFlag(SilDomain.InternationalOrGovernmentRelations))
				AddDomain(kInternationalOrGovernmentRelationsAbbrev, "International/Government Relations");

			if (domains.HasFlag(SilDomain.LanguageAssessment))
			{
				AddDomain(kLanguageAssessmentAbbrev, "Language Assessment");

				// sub-domains
				if (domains.HasFlag(SilDomain.Lgas_SurveyArtifacts))
					AddSubDomain(kLanguageAssessmentAbbrev, "survey artifacts");
				if (domains.HasFlag(SilDomain.Lgas_SurveyInstrument))
					AddSubDomain(kLanguageAssessmentAbbrev, "survey instrument");
				if (domains.HasFlag(SilDomain.Lgas_SurveyReport))
					AddSubDomain(kLanguageAssessmentAbbrev, "survey report");
				if (domains.HasFlag(SilDomain.Lgas_Wordlist))
					AddSubDomain(kLanguageAssessmentAbbrev, "wordlist");
			}

			if (domains.HasFlag(SilDomain.LanguageProgramManagement))
				AddDomain(kLanguageProgramManagementAbbrev, "Language Program Management");

			if (domains.HasFlag(SilDomain.LanguageTechnology))
			{
				AddDomain(kLanguageTechnologyAbbrev, "Language Technology");

				// sub-domains
				if (domains.HasFlag(SilDomain.Ltec_ComputerTool))
					AddSubDomain(kLanguageTechnologyAbbrev, "computer tool");
			}

			if (domains.HasFlag(SilDomain.LanguageAndCultureLearning))
				AddDomain(kLanguageAndCultureLearningAbbrev, "Language and Culture Learning");
			if (domains.HasFlag(SilDomain.LearningAndDevelopment))
				AddDomain(kLearningAndDevelopmentAbbrev, "Learning and Development");
			if (domains.HasFlag(SilDomain.LibraryOrMuseumOrArchiving))
				AddDomain(kLibraryOrMuseumOrArchivingAbbrev, "Library/Museum/Archiving");

			if (domains.HasFlag(SilDomain.Linguistics))
			{
				AddDomain(kLinguisticsAbbrev, "Linguistics");

				// sub-domains
				if (domains.HasFlag(SilDomain.Ling_ComparativeDescription))
					AddSubDomain(kLinguisticsAbbrev, "comparative description");
				if (domains.HasFlag(SilDomain.Ling_DiscourseDescription))
					AddSubDomain(kLinguisticsAbbrev, "discourse description");
				if (domains.HasFlag(SilDomain.Ling_GrammaticalDescription))
					AddSubDomain(kLinguisticsAbbrev, "grammatical description");
				if (domains.HasFlag(SilDomain.Ling_InterlinearizedText))
					AddSubDomain(kLinguisticsAbbrev, "interlinearized text");
				if (domains.HasFlag(SilDomain.Ling_LanguageDocumentation))
					AddSubDomain(kLinguisticsAbbrev, "language documentation");
				if (domains.HasFlag(SilDomain.Ling_Lexicon))
					AddSubDomain(kLinguisticsAbbrev, "lexicon");
				if (domains.HasFlag(SilDomain.Ling_PhonologicalDescription))
					AddSubDomain(kLinguisticsAbbrev, "phonological description");
				if (domains.HasFlag(SilDomain.Ling_SemanticDescription))
					AddSubDomain(kLinguisticsAbbrev, "semantic description");
				if (domains.HasFlag(SilDomain.Ling_Text))
					AddSubDomain(kLinguisticsAbbrev, "text (primary language data)");
			}

			if (domains.HasFlag(SilDomain.LiteracyAndEducation))
			{
				AddDomain(kLiteracyAndEducationAbbrev, "Literacy and Education");

				// sub-domains
				if (domains.HasFlag(SilDomain.Ltcy_OrthographyDescription))
					AddSubDomain(kLiteracyAndEducationAbbrev, "orthography description");
			}

			if (domains.HasFlag(SilDomain.Management))
				AddDomain(kManagementAbbrev, "Management, General");
			if (domains.HasFlag(SilDomain.Publishing))
				AddDomain(kPublishingAbbrev, "Publishing");
			if (domains.HasFlag(SilDomain.ScriptureUse))
				AddDomain(kScriptureUseAbbrev, "Scripture Use");
			if (domains.HasFlag(SilDomain.SignLanguages))
				AddDomain(kSignLanguagesAbbrev, "Sign Languages");

			if (domains.HasFlag(SilDomain.Sociolinguistics))
			{
				AddDomain(kSociolinguisticsAbbrev, "Sociolinguistics");

				// sub-domains
				if (domains.HasFlag(SilDomain.Slng_SociolinguisticDescription))
					AddSubDomain(kSociolinguisticsAbbrev, "sociolinguistic description");
			}

			if (domains.HasFlag(SilDomain.Translation))
			{
				AddDomain(kTranslationAbbrev, "Translation");

				// sub-domains
				if (domains.HasFlag(SilDomain.Tran_BackTranslation))
					AddSubDomain(kTranslationAbbrev, "back translation");
				if (domains.HasFlag(SilDomain.Tran_BibleNames))
					AddSubDomain(kTranslationAbbrev, "Bible names");
				if (domains.HasFlag(SilDomain.Tran_ComprehensionCheckingQuestions))
					AddSubDomain(kTranslationAbbrev, "comprehension checking questions");
				if (domains.HasFlag(SilDomain.Tran_Exegesis))
					AddSubDomain(kTranslationAbbrev, "exegesis");
				if (domains.HasFlag(SilDomain.Tran_KeyBibleTerms))
					AddSubDomain(kTranslationAbbrev, "key Bible terms");
			}

			if (domains.HasFlag(SilDomain.VernacularMedia))
				AddDomain(kVernacularMediaAbbrev, "VernacularMedia");
		}
コード例 #2
0
ファイル: ReapRamp.cs プロジェクト: vkarthim/FieldWorks
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// Gets required and optional information that describes the files being submitted in
        /// the RAMP package. METS = Metadata Encoding & Transmission Standard
        /// (see http://www.loc.gov/METS/).
        /// </summary>
        /// <param name="model">Object provided by SIL.Archiving for setting application
        /// specific archiving information.</param>
        /// <param name="fieldWorksVersion">Fieldworks version to display.</param>
        /// <param name="cache"></param>
        /// <returns>A list of JSON encoded pairs that describe the information in the RAMP
        /// package.</returns>
        /// ------------------------------------------------------------------------------------
        private void AddMetsPairs(RampArchivingDlgViewModel model, string fieldWorksVersion, FdoCache cache)
        {
            IWritingSystemManager wsManager = cache.ServiceLocator.GetInstance <IWritingSystemManager>();
            var wsDefaultVern = wsManager.Get(cache.DefaultVernWs);
            var vernIso3Code  = wsDefaultVern.GetIso3Code();

            model.SetScholarlyWorkType(ScholarlyWorkType.PrimaryData);

            // use year range for CreationDate if possible
            GetCreateDateRange(cache);
            var yearStart = m_earliest.Year;
            var yearEnd   = m_latest.Year;

            if (yearEnd > yearStart)
            {
                model.SetCreationDate(yearStart, yearEnd);
            }
            else
            {
                model.SetCreationDate(m_earliest);
            }

            model.SetModifiedDate(cache.LangProject.DateModified);

            if (!string.IsNullOrEmpty(vernIso3Code))
            {
                model.SetSubjectLanguage(vernIso3Code, wsDefaultVern.LanguageName);
            }

            var  contentLanguages     = new List <ArchivingLanguage>();
            var  softwareRequirements = new HashSet <string>();
            bool fWsUsesKeyman        = false;

            softwareRequirements.Add(string.Format("FieldWorks Language Explorer, Version {0} or later", fieldWorksVersion));

            foreach (var ws in cache.ServiceLocator.WritingSystems.CurrentVernacularWritingSystems.Union(
                         cache.ServiceLocator.WritingSystems.CurrentAnalysisWritingSystems).Union(
                         cache.ServiceLocator.WritingSystems.CurrentPronunciationWritingSystems))
            {
                var iso3Code = ws.GetIso3Code();

                if (!string.IsNullOrEmpty(iso3Code))
                {
                    contentLanguages.Add(new ArchivingLanguage(iso3Code, ws.LanguageSubtag.Name));
                }

                if (!string.IsNullOrEmpty(ws.DefaultFontName))
                {
                    softwareRequirements.Add(ws.DefaultFontName);
                }
                fWsUsesKeyman |= DoesWritingSystemUseKeyman(ws);
            }

            if (fWsUsesKeyman)
            {
                softwareRequirements.Add("Keyman");
            }

            model.SetContentLanguages(contentLanguages);
            model.SetSoftwareRequirements(softwareRequirements);

            SilDomain domains          = SilDomain.Linguistics;
            var       cNotebookRecords = cache.LangProject.ResearchNotebookOA.AllRecords.Count();

            if (cNotebookRecords > 0)
            {
                domains |= SilDomain.Anthropology;
                domains |= SilDomain.Anth_Ethnography;                 // Data notebook data is considered a (partial) ethnography.
            }

            var cLexicalEntries = cache.LangProject.LexDbOA.Entries.Count();

            if (cLexicalEntries > 0)
            {
                domains |= SilDomain.Ling_Lexicon;
            }

            // Determine if there are any interlinearized texts
            if (cache.ServiceLocator.GetInstance <IWfiAnalysisRepository>().AllInstances().Any(a => a.OccurrencesInTexts.Any() &&
                                                                                               a.GetAgentOpinion(cache.LangProject.DefaultUserAgent) == Opinions.approves))
            {
                domains |= SilDomain.Ling_InterlinearizedText;
            }

            var cTexts = cache.LangProject.Texts.Count();

            if (cTexts > 0)
            {
                domains |= SilDomain.Ling_Text;
            }

            /* TODO: If files to include in archive includes a Lift file, set the correct schema */
            //if (filesToArchive.Contains( FwFileExtensions.ksLexiconInterchangeFormat )
            //	model.SetSchemaConformance("LIFT");

            /* TODO: If files to include in archive includes a grammar sketch, set the correct subdomain */
            //if (filesToArchive.Contains(...)
            //	domains |= SilDomain.Ling_GrammaticalDescription;

            model.SetDomains(domains);

            // get the information for DatasetExtent
            var          datasetExtent = new StringBuilder();
            const string delimiter     = "; ";

            if (cNotebookRecords > 0)
            {
                datasetExtent.AppendLineFormat("{0} Notebook record{1}", new object[] { cNotebookRecords, (cNotebookRecords == 1) ? "" : "s" }, delimiter);
            }

            if (cLexicalEntries > 0)
            {
                datasetExtent.AppendLineFormat("{0} Lexical entr{1}", new object[] { cLexicalEntries, (cLexicalEntries == 1) ? "y" : "ies" }, delimiter);
            }

            if (cTexts > 0)
            {
                datasetExtent.AppendLineFormat("{0} Text{1}", new object[] { cTexts, (cTexts == 1) ? "" : "s" }, delimiter);
            }

            if (datasetExtent.Length > 0)
            {
                model.SetDatasetExtent(datasetExtent + ".");
            }
        }