Beispiel #1
0
        internal static string SerializeJobs(EncodeJobPersistGroup jobPersistGroup)
        {
            var xmlBuilder = new StringBuilder();

            using (XmlWriter writer = XmlWriter.Create(xmlBuilder))
            {
                xmlSerializer.Serialize(writer, jobPersistGroup);
            }

            return(xmlBuilder.ToString());
        }
Beispiel #2
0
		public EncodeJobPersistGroup GetQueuePersistGroup()
		{
			var jobPersistGroup = new EncodeJobPersistGroup();
			foreach (EncodeJobViewModel jobVM in this.EncodeQueue)
			{
				jobPersistGroup.EncodeJobs.Add(
					new EncodeJobWithMetadata
					{
						Job = jobVM.Job,
						SourceParentFolder = jobVM.SourceParentFolder,
						ManualOutputPath = jobVM.ManualOutputPath,
						NameFormatOverride = jobVM.NameFormatOverride,
						PresetName = jobVM.PresetName
					});
			}

			return jobPersistGroup;
		}
Beispiel #3
0
		internal static string SerializeJobs(EncodeJobPersistGroup jobPersistGroup)
		{
			var xmlBuilder = new StringBuilder();
			using (XmlWriter writer = XmlWriter.Create(xmlBuilder))
			{
				xmlSerializer.Serialize(writer, jobPersistGroup);
			}

			return xmlBuilder.ToString();
		}
Beispiel #4
0
        static Database()
        {
            mainThreadId = Thread.CurrentThread.ManagedThreadId;

            int databaseVersion = DatabaseConfig.Version;

            if (databaseVersion > Utilities.CurrentDatabaseVersion)
            {
                string messageLine1 = string.Format(
                    CultureInfo.CurrentCulture,
                    MainRes.RenameDatabaseFileLine1,
                    databaseVersion,
                    Utilities.CurrentVersion,
                    Utilities.CurrentDatabaseVersion);

                string messageLine2 = MainRes.RenameDatabaseFileLine2;

                string message = string.Format(
                    CultureInfo.CurrentCulture,
                    "{0}{1}{1}{2}",
                    messageLine1,
                    Environment.NewLine,
                    messageLine2);

                var messageService = Ioc.Container.GetInstance <IMessageBoxService>();
                messageService.Show(message, MainRes.IncompatibleDatabaseFileTitle, MessageBoxButton.YesNo);
                if (messageService.Show(
                        message,
                        MainRes.IncompatibleDatabaseFileTitle,
                        MessageBoxButton.YesNo) == MessageBoxResult.Yes)
                {
                    Connection.Close();

                    try
                    {
                        string newFileName = ConfigDatabaseFileWithoutExtension + "-v" + databaseVersion + ConfigDatabaseFileExtension;
                        string newFilePath = Utilities.CreateUniqueFileName(newFileName, Utilities.AppFolder, new HashSet <string>());

                        File.Move(DatabaseFile, newFilePath);
                        connection      = null;
                        databaseVersion = DatabaseConfig.Version;
                    }
                    catch (IOException)
                    {
                        HandleCriticalFileError();
                    }
                    catch (UnauthorizedAccessException)
                    {
                        HandleCriticalFileError();
                    }
                }
                else
                {
                    Environment.Exit(0);
                }
            }

            if (databaseVersion == Utilities.CurrentDatabaseVersion)
            {
                return;
            }

            using (SQLiteTransaction transaction = Connection.BeginTransaction())
            {
                // Update encoding profiles if we need to.
                if (databaseVersion < Utilities.LastUpdatedEncodingProfileDatabaseVersion)
                {
                    // Upgrade encoding profiles on presets (encoder/mixdown changes)
                    var presets = Presets.GetPresetListFromDb();

                    foreach (Preset preset in presets)
                    {
                        Presets.UpgradeEncodingProfile(preset.EncodingProfile, databaseVersion);
                    }

                    var presetXmlList = presets.Select(Presets.SerializePreset).ToList();

                    Presets.SavePresets(presetXmlList, Connection);

                    // Upgrade encoding profiles on old queue items.
                    string jobsXml = Config.EncodeJobs2;
                    if (!string.IsNullOrEmpty(jobsXml))
                    {
                        EncodeJobPersistGroup persistGroup = EncodeJobsPersist.LoadJobsXmlString(jobsXml);
                        foreach (EncodeJobWithMetadata job in persistGroup.EncodeJobs)
                        {
                            Presets.UpgradeEncodingProfile(job.Job.EncodingProfile, databaseVersion);
                        }

                        Config.EncodeJobs2 = EncodeJobsPersist.SerializeJobs(persistGroup);
                    }
                }

                // Update DB schema
                if (databaseVersion < 18)
                {
                    Database.ExecuteNonQuery(
                        "CREATE TABLE workerLogs (" +
                        "workerGuid TEXT, " +
                        "message TEXT, " +
                        "level INTEGER, " +
                        "time TEXT)", connection);
                }

                SetDatabaseVersionToLatest();
                transaction.Commit();
            }
        }