Ejemplo n.º 1
0
        private string GetLexReferenceName(ILexEntry lexEntry, ILexReference lexRef, out ILexEntry parentEntry)
        {
            parentEntry = null;
            ILexRefType lexRefType = lexRef.OwnerOfClass <ILexRefType>();
            string      name       = lexRefType.ShortName;

            if (string.IsNullOrEmpty(name))
            {
                name = lexRefType.Abbreviation.BestAnalysisAlternative.Text;
            }
            var mappingType = (LexRefTypeTags.MappingTypes)lexRefType.MappingType;

            switch (mappingType)
            {
            case LexRefTypeTags.MappingTypes.kmtSenseTree:
            case LexRefTypeTags.MappingTypes.kmtEntryTree:
            case LexRefTypeTags.MappingTypes.kmtEntryOrSenseTree:
            case LexRefTypeTags.MappingTypes.kmtSenseAsymmetricPair:                     // Sense Pair with different Forward/Reverse names
            case LexRefTypeTags.MappingTypes.kmtEntryAsymmetricPair:                     // Entry Pair with different Forward/Reverse names
            case LexRefTypeTags.MappingTypes.kmtEntryOrSenseAsymmetricPair:              // Entry or sense Pair with different Forward/Reverse names
                if (lexRef.TargetsRS.Count > 0)
                {
                    ICmObject firstObj   = lexRef.TargetsRS[0];
                    ILexEntry firstEntry = null;
                    switch (firstObj.ClassID)
                    {
                    case LexEntryTags.kClassId:
                        firstEntry = (ILexEntry)firstObj;
                        break;

                    case LexSenseTags.kClassId:
                        firstEntry = firstObj.OwnerOfClass <ILexEntry>();
                        break;
                    }

                    if (firstEntry != lexEntry)
                    {
                        name = lexRefType.ReverseName.BestAnalysisAlternative.Text;
                        if (string.IsNullOrEmpty(name))
                        {
                            name = lexRefType.ReverseAbbreviation.BestAnalysisAlternative.Text;
                        }
                    }

                    if (mappingType == LexRefTypeTags.MappingTypes.kmtSenseTree ||
                        mappingType == LexRefTypeTags.MappingTypes.kmtEntryTree ||
                        mappingType == LexRefTypeTags.MappingTypes.kmtEntryOrSenseTree)
                    {
                        parentEntry = firstEntry;
                    }
                }
                break;
            }
            return(name.Normalize());
        }
Ejemplo n.º 2
0
		private string GetLexReferenceName(ILexEntry lexEntry, ILexReference lexRef, out ILexEntry parentEntry)
		{
			parentEntry = null;
			ILexRefType lexRefType = lexRef.OwnerOfClass<ILexRefType>();
			string name = lexRefType.ShortName;
			if (string.IsNullOrEmpty(name))
				name = lexRefType.Abbreviation.BestAnalysisAlternative.Text;
			var mappingType = (LexRefTypeTags.MappingTypes) lexRefType.MappingType;
			switch (mappingType)
			{
				case LexRefTypeTags.MappingTypes.kmtSenseTree:
				case LexRefTypeTags.MappingTypes.kmtEntryTree:
				case LexRefTypeTags.MappingTypes.kmtEntryOrSenseTree:
				case LexRefTypeTags.MappingTypes.kmtSenseAsymmetricPair: // Sense Pair with different Forward/Reverse names
				case LexRefTypeTags.MappingTypes.kmtEntryAsymmetricPair: // Entry Pair with different Forward/Reverse names
				case LexRefTypeTags.MappingTypes.kmtEntryOrSenseAsymmetricPair: // Entry or sense Pair with different Forward/Reverse names
					if (lexRef.TargetsRS.Count > 0)
					{
						ICmObject firstObj = lexRef.TargetsRS[0];
						ILexEntry firstEntry = null;
						switch (firstObj.ClassID)
						{
							case LexEntryTags.kClassId:
								firstEntry = (ILexEntry) firstObj;
								break;
							case LexSenseTags.kClassId:
								firstEntry = firstObj.OwnerOfClass<ILexEntry>();
								break;
						}

						if (firstEntry != lexEntry)
						{
							name = lexRefType.ReverseName.BestAnalysisAlternative.Text;
							if (string.IsNullOrEmpty(name))
								name = lexRefType.ReverseAbbreviation.BestAnalysisAlternative.Text;
						}

						if (mappingType == LexRefTypeTags.MappingTypes.kmtSenseTree
							|| mappingType == LexRefTypeTags.MappingTypes.kmtEntryTree
							|| mappingType == LexRefTypeTags.MappingTypes.kmtEntryOrSenseTree)
						{
							parentEntry = firstEntry;
						}
					}
					break;
			}
			return name.Normalize();
		}