protected override void CreateApplicationEntryInDB(DBAppDrvInfo info, DateTime lastModified) { var adsAccountAppsInfo = Conn.CreateSingle("ADSAccountAppsInfo"); adsAccountAppsInfo.PutValue("CurrentlyActive", true); adsAccountAppsInfo.PutValue("InstallDate", lastModified); adsAccountAppsInfo.PutValue("DeInstallDate", null); adsAccountAppsInfo.PutValue("UID_InstallationType", info.UidInstallationType); adsAccountAppsInfo.PutValue("UID_OS", info.UidOperatingSystem); adsAccountAppsInfo.PutValue("Revision", Convert.ToInt32(info.AssociatedAppsDrvProfileInfo.Revision)); adsAccountAppsInfo.PutValue("UID_ADSAccount", info.UidAccount); adsAccountAppsInfo.PutValue("UID_Application", info.UidAppDrv); // removed #8136 // adsAccountAppsInfo.PutValue("DisplayName", info.AppDrvNameFull); adsAccountAppsInfo.Save(); }
/// <summary> /// Erzeuge den AppsInfo-Eintrag für die angegebene Applikation. /// </summary> /// <param name="info"></param> /// <param name="lastModified"></param> protected abstract void CreateApplicationEntryInDB(DBAppDrvInfo info, DateTime lastModified);
/// <summary> /// Sammle die Informationen aus Sectionname und Driver zu unseren Feedback-Einträgen ein. /// </summary> /// <param name="appInfos">Liste von Feedback-Einträgen</param> /// <param name="installationTypesById">Mapping from ID to UID</param> /// <param name="operatingSystemsById">Mapping from ID to UID</param> /// <param name="uid">UID des zugehörigen Namespace-Objektes.</param> /// <param name="destination">Dictionary, das Einträge aufnehmen soll.</param> /// <param name="ignoreDrivers">Sollen Einträge für Treiber ignoriert werden?</param> private void _CollectDBAppInfos( IList <AppsDrvProfileInfo> appInfos, IDictionary <string, string> installationTypesById, IDictionary <string, string> operatingSystemsById, string uid, IDictionary <string, DBAppDrvInfo> destination, bool ignoreDrivers) { var f = ConnectData.Connection.SqlFormatter; var exec = ConnectData.Connection.CreateSqlExecutor(ConnectData.PublicKey); var sectionNames = new Dictionary <string, bool>(StringComparer.OrdinalIgnoreCase); /* * Hole die Liste der Sectionnames. */ if (appInfos.Count > 0) { var sql = "select ident_sectionname, appsnotdriver from sectionname where " + f.InClause("ident_sectionname", ValType.String, appInfos.Select(a => a.SectionName)); using (var rd = exec.SqlExecute(sql)) { while (rd.Read()) { sectionNames[rd.GetString(0)] = rd.GetBoolean(1); } } } /* * Teile die Info-Objekte in Applikationen und * Treiber auf. */ var appsBySectionName = new Dictionary <string, AppsDrvProfileInfo>(sectionNames.Count, StringComparer.OrdinalIgnoreCase); var driversBySectionName = new Dictionary <string, AppsDrvProfileInfo>(sectionNames.Count, StringComparer.OrdinalIgnoreCase); foreach (AppsDrvProfileInfo info in appInfos) { if (!sectionNames.ContainsKey(info.SectionName)) { // Der SectionName existiert nicht Result.Messages.Add(string.Format(LanguageManager.Instance.GetString("SDL_WarnSectionNameNotFound"), info.SectionName)); } else { if (sectionNames[info.SectionName]) { appsBySectionName[info.SectionName] = info; } else { driversBySectionName[info.SectionName] = info; } } } /* * Erzeuge die zugehörige DBAppDrvInfo-Objekte, * das die Daten aus Application und den * Accout-Schlüssel enthält. */ if (appsBySectionName.Count > 0) { string sql = "select ident_sectionname, uid_application, namefull from application where " + f.InClause("ident_sectionname", ValType.String, appsBySectionName.Values.Select(i => i.SectionName)); using (IDataReader rd = exec.SqlExecute(sql)) { while (rd.Read()) { AppsDrvProfileInfo info; var sectionName = rd.GetString(0); if (appsBySectionName.TryGetValue(sectionName, out info)) { // Entferne den Eintrag, um auf fehlende Einträge zu testen. appsBySectionName.Remove(sectionName); string uidInstallationType; string uidOperatingSystem; if (!installationTypesById.TryGetValue(info.InstallType, out uidInstallationType)) { Result.Messages.Add(LanguageManager.Format("SDL_WarnInstallationTypeNotFound", info.InstallType)); continue; } if (!operatingSystemsById.TryGetValue(info.OS, out uidOperatingSystem)) { Result.Messages.Add(LanguageManager.Format("SDL_WarnOSNotFound", info.OS)); continue; } var dbinfo = new DBAppDrvInfo( info, rd.GetString(1), uid, rd.GetString(2), uidInstallationType, uidOperatingSystem, true); destination.Add(dbinfo.UidAppDrv, dbinfo); } } } } foreach (AppsDrvProfileInfo info in appsBySectionName.Values) { // Für die übrigen gibt es keinen Apps-Eintrag Result.Messages.Add( LanguageManager.Instance.FormatString( "SDL_WarnNoAppsEntry", info.SectionName, "Application")); } /* * Erzeuge die zugehörige DBAppDrvInfo-Objekte, * die die Daten aus Driver und den * Accout-Schlüssel enthalten. */ if (!ignoreDrivers) { if (driversBySectionName.Count > 0) { string sql = "select ident_sectionname, uid_driver, namefull from driver where " + f.InClause("ident_sectionname", ValType.String, driversBySectionName.Values.Select(i => i.SectionName)); using (IDataReader rd = exec.SqlExecute(sql)) { while (rd.Read()) { AppsDrvProfileInfo info; var sectionName = rd.GetString(0); if (driversBySectionName.TryGetValue(sectionName, out info)) { // Entferne den Eintrag, um auf fehlende Einträge zu testen. driversBySectionName.Remove(sectionName); string uidInstallationType; string uidOperatingSystem; if (!installationTypesById.TryGetValue(info.InstallType, out uidInstallationType)) { Result.Messages.Add(LanguageManager.Format("SDL_WarnInstallationTypeNotFound", info.InstallType)); continue; } if (!operatingSystemsById.TryGetValue(info.OS, out uidOperatingSystem)) { Result.Messages.Add(LanguageManager.Format("SDL_WarnOSNotFound", info.OS)); continue; } var dbinfo = new DBAppDrvInfo( info, rd.GetString(1), uid, rd.GetString(2), uidInstallationType, uidOperatingSystem, false); destination.Add(dbinfo.UidAppDrv, dbinfo); } } } } foreach (AppsDrvProfileInfo info in driversBySectionName.Values) { // Für die übrigen gibt es keinen Apps-Eintrag Result.Messages.Add( LanguageManager.Instance.FormatString( "SDL_WarnNoAppsEntry", info.SectionName, "Driver")); } } }