コード例 #1
0
        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();
        }
コード例 #2
0
 /// <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);
コード例 #3
0
        /// <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"));
                }
            }
        }