Example #1
0
		static public List<RecordToken> GetLexicalFormToEntryIdPairs(Db4oDataSource db4oData, string writingSystemId)
		{
			IExtObjectContainer database = db4oData.Data.Ext();

			List<Type> OriginalList = Db4oLexModelHelper.Singleton.DoNotActivateTypes;
			Db4oLexModelHelper.Singleton.DoNotActivateTypes = new List<Type>();
			Db4oLexModelHelper.Singleton.DoNotActivateTypes.Add(typeof(LexEntry));

			IQuery query = database.Query();
			query.Constrain(typeof(LexicalFormMultiText));
			IObjectSet lexicalForms = query.Execute();

			List<RecordToken> result = new List<RecordToken>();

			foreach (LexicalFormMultiText lexicalForm in lexicalForms)
			{
				query = database.Query();
				query.Constrain(typeof(LexEntry));
				query.Descend("_lexicalForm").Constrain(lexicalForm).Identity();
				long[] ids = query.Execute().Ext().GetIDs();

				//// If LexEntry does not cascade delete its lexicalForm then we could have a case where we
				//// don't have a entry associated with this lexicalForm.
				if (ids.Length == 0)
				{
					continue;
				}

				string displayString = lexicalForm.GetBestAlternative(writingSystemId, "*");
				if (displayString == "*")
				{
					displayString = "(" +
						  StringCatalog.Get("~Empty",
											"This is what shows for a word in a list when the user hasn't yet typed anything in for the word.  Like if you click the 'New Word' button repeatedly.") +
						  ")";
				}
				result.Add(new RecordToken(displayString, new Db4oRepositoryId(ids[0])));
			}

			Db4oLexModelHelper.Singleton.DoNotActivateTypes = OriginalList;

			return result;
		}
Example #2
0
		static public List<KeyValuePair<string, long>> GetGlossToEntryIdPairs(Db4oDataSource db4oData, string writingSystemId)
		{
			IExtObjectContainer database = db4oData.Data.Ext();

			List<Type> OriginalList = Db4oLexModelHelper.Singleton.DoNotActivateTypes;
			Db4oLexModelHelper.Singleton.DoNotActivateTypes = new List<Type>();
			Db4oLexModelHelper.Singleton.DoNotActivateTypes.Add(typeof(LexEntry));
			Db4oLexModelHelper.Singleton.DoNotActivateTypes.Add(typeof(LexSense));

			IQuery query = database.Query();
			query.Constrain(typeof(SenseGlossMultiText));
			IObjectSet glosses = query.Execute();

			List<KeyValuePair<string, long>> result = new List<KeyValuePair<string, long>>();
#if BROKEN
			foreach (SenseGlossMultiText gloss in glosses)
			{
				IQuery senseQuery = database.Query();
				senseQuery.Constrain(typeof (LexSense));
				senseQuery.Descend("_gloss").Constrain(gloss).Identity();

				query = senseQuery.Descend("_parent");

				long[] ids = query.Execute().Ext().GetIDs();

				if (ids.Length == 0)
				{
					continue;
				}


				foreach (string s in SplitGlossAtSemicolon(gloss, writingSystemId))
				{
					result.Add(new KeyValuePair<string, long>(s, ids[0]));
				}
			}
#endif
			Db4oLexModelHelper.Singleton.DoNotActivateTypes = OriginalList;

			return result;
		}
Example #3
0
		public static List<RecordToken> GetKeyToEntryIdPairs(Db4oDataSource db4oData, GetKeys getKeys)
		{
			IExtObjectContainer database = db4oData.Data.Ext();

			IQuery query = database.Query();
			query.Constrain(typeof(LexEntry));
			IObjectSet entries = query.Execute();

			List<RecordToken> result = new List<RecordToken>();

			foreach (LexEntry entry in entries)
			{
				foreach (string key in getKeys(entry))
				{
					result.Add(new RecordToken(key, new Db4oRepositoryId(database.GetID(entry))));
				}
			}

			return result;
		}