/// <summary> /// Combines the given mod info and mod file info into one mod info. /// </summary> /// <param name="p_mifInfo">The mod info to combine.</param> /// <param name="p_mfiFileInfo">The mod file info to combine.</param> /// <returns>A mid info representing the information from both given info objects.</returns> public static IModInfo CombineInfo(IModInfo p_mifInfo, IModFileInfo p_mfiFileInfo) { var intLineTracker = 0; ModInfo mifUpdatedInfo; try { if (p_mifInfo == null) { intLineTracker = 1; if (p_mfiFileInfo == null) { return(null); } intLineTracker = 2; mifUpdatedInfo = new ModInfo(); intLineTracker = 3; } else { intLineTracker = 4; mifUpdatedInfo = new ModInfo(p_mifInfo); intLineTracker = 5; } intLineTracker = 6; if (p_mfiFileInfo != null) { intLineTracker = 7; if (!String.IsNullOrEmpty(p_mfiFileInfo.Id)) { mifUpdatedInfo.DownloadId = p_mfiFileInfo.Id; } if (!String.IsNullOrEmpty(p_mfiFileInfo.HumanReadableVersion)) { intLineTracker = 8; mifUpdatedInfo.HumanReadableVersion = p_mfiFileInfo.HumanReadableVersion; intLineTracker = 9; mifUpdatedInfo.MachineVersion = null; intLineTracker = 10; } intLineTracker = 11; if (!String.IsNullOrEmpty(p_mfiFileInfo.Name)) { intLineTracker = 12; mifUpdatedInfo.ModName = String.Format("{0} - {1}", mifUpdatedInfo.ModName, p_mfiFileInfo.Name); intLineTracker = 13; } intLineTracker = 14; } intLineTracker = 15; } catch (NullReferenceException) { Trace.TraceError("NullReferenceException in CombineInfo: LineTracker: {0}", intLineTracker); throw; } return(mifUpdatedInfo); }
/// <summary> /// Gets a list of possible mod info tags which match the given mod. /// </summary> /// <param name="p_modMod">The mod for which to retrieve a list of possible tags.</param> /// <returns>A list of possible mod info tags which match the given mod.</returns> public IEnumerable <IModInfo> GetTagInfoCandidates(IMod p_modMod) { //get mod info List <IModInfo> lstMods = new List <IModInfo>(); IModInfo mifInfo = null; try { if (!String.IsNullOrEmpty(p_modMod.Id)) { mifInfo = ModRepository.GetModInfo(p_modMod.Id); } if (mifInfo == null) { mifInfo = ModRepository.GetModInfoForFile(p_modMod.Filename); } if (mifInfo == null) { //use heuristics to find info lstMods.AddRange(ModRepository.FindMods(p_modMod.ModName, true)); if (lstMods.Count == 0) { lstMods.AddRange(ModRepository.FindMods(Regex.Replace(p_modMod.ModName, "[^a-zA-Z0-9_. ]+", "", RegexOptions.Compiled), true)); } if ((lstMods.Count == 0) && (!String.IsNullOrEmpty(p_modMod.Author))) { lstMods.AddRange(ModRepository.FindMods(p_modMod.ModName, p_modMod.Author)); } if (lstMods.Count == 0) { lstMods.AddRange(ModRepository.FindMods(p_modMod.ModName, false)); } } else { lstMods.Add(mifInfo); } //if we don't know the mod Id, then we have no way of getting // the file-specific info, so only look if we have one mod info // candidate. if (lstMods.Count == 1) { mifInfo = lstMods[0]; lstMods.Clear(); //get file specific info IModFileInfo mfiFileInfo = ModRepository.GetFileInfoForFile(p_modMod.Filename); if (mfiFileInfo == null) { foreach (IModFileInfo mfiModFileInfo in ModRepository.GetModFileInfo(mifInfo.Id)) { lstMods.Add(CombineInfo(mifInfo, mfiModFileInfo)); } } else { lstMods.Add(CombineInfo(mifInfo, mfiFileInfo)); } if (lstMods.Count == 0) { lstMods.Add(mifInfo); } } } catch (RepositoryUnavailableException e) { TraceUtil.TraceException(e); //the repository is not available, so add a dummy value indicating such lstMods.Add(new ModInfo(null, String.Format("{0} is unavailable", ModRepository.Name), null, null, false, null, null, 0, -1, null, null, null, null)); } catch (NullReferenceException e) { TraceUtil.TraceException(e); //couldn't find any match, so add a dummy value indicating such lstMods.Add(new ModInfo(null, String.Format("{0}", e.Message), null, null, false, null, null, 0, -1, null, null, null, null)); } return(lstMods); }
/// <summary> /// Combines the given mod info and mod file info into one mod info. /// </summary> /// <param name="p_mifInfo">The mod info to combine.</param> /// <param name="p_mfiFileInfo">The mod file info to combine.</param> /// <returns>A mid info representing the information from both given info objects.</returns> public static IModInfo CombineInfo(IModInfo p_mifInfo, IModFileInfo p_mfiFileInfo) { Int32 intLineTracker = 0; ModInfo mifUpdatedInfo = null; try { if (p_mifInfo == null) { intLineTracker = 1; if (p_mfiFileInfo == null) return null; intLineTracker = 2; mifUpdatedInfo = new ModInfo(); intLineTracker = 3; } else { intLineTracker = 4; mifUpdatedInfo = new ModInfo(p_mifInfo); intLineTracker = 5; } intLineTracker = 6; if (p_mfiFileInfo != null) { intLineTracker = 7; if (!String.IsNullOrEmpty(p_mfiFileInfo.HumanReadableVersion)) { intLineTracker = 8; mifUpdatedInfo.HumanReadableVersion = p_mfiFileInfo.HumanReadableVersion; intLineTracker = 9; mifUpdatedInfo.MachineVersion = null; intLineTracker = 10; } intLineTracker = 11; if (!String.IsNullOrEmpty(p_mfiFileInfo.Name)) { intLineTracker = 12; mifUpdatedInfo.ModName = String.Format("{0} - {1}", mifUpdatedInfo.ModName, p_mfiFileInfo.Name); intLineTracker = 13; } intLineTracker = 14; } intLineTracker = 15; } catch (NullReferenceException) { Trace.TraceError("NullReferenceException in CombineInfo: LineTracker: {0}", intLineTracker); throw; } return mifUpdatedInfo; }