@@ -12,58 +12,70 @@ namespace VidCoder.Model
1212{
1313 public static class EncodeJobsPersist
1414 {
15- private static readonly string DataFolder = Path . Combine ( Environment . GetFolderPath ( Environment . SpecialFolder . ApplicationData ) , @"VidCoder" ) ;
16- private static readonly string EncodeJobsPath = Path . Combine ( DataFolder , @"EncodeJobs.xml" ) ;
15+ private static readonly string EncodeJobsPath = Path . Combine ( Utilities . AppFolder , "EncodeJobs.xml" ) ;
1716 private static XmlSerializer xmlSerializer = new XmlSerializer ( typeof ( List < EncodeJob > ) ) ;
1817
1918 public static List < EncodeJob > EncodeJobs
2019 {
2120 get
2221 {
23- EnsureFolderCreated ( ) ;
24-
25- try
22+ if ( File . Exists ( EncodeJobsPath ) )
2623 {
2724 XDocument doc = XDocument . Load ( EncodeJobsPath ) ;
2825 XElement presetArray = doc . Element ( "EncodeJobs" ) . Element ( "ArrayOfEncodeJob" ) ;
2926
3027 using ( XmlReader reader = presetArray . CreateReader ( ) )
3128 {
3229 var presetList = xmlSerializer . Deserialize ( reader ) as List < EncodeJob > ;
30+ File . Delete ( EncodeJobsPath ) ;
31+
3332 return presetList ;
3433 }
3534 }
36- catch ( FileNotFoundException )
37- {
38- return new List < EncodeJob > ( ) ;
39- }
35+
36+ return LoadJobsXmlString ( DatabaseConfig . GetConfigString ( "EncodeJobs" , Database . Connection ) ) ;
4037 }
4138
4239 set
4340 {
44- EnsureFolderCreated ( ) ;
45- StringBuilder xmlBuilder = new StringBuilder ( ) ;
46- using ( XmlWriter writer = XmlWriter . Create ( xmlBuilder ) )
47- {
48- xmlSerializer . Serialize ( writer , value ) ;
49- }
50-
51- XElement element = XElement . Parse ( xmlBuilder . ToString ( ) ) ;
52- XDocument doc = new XDocument (
53- new XElement ( "EncodeJobs" ,
54- new XAttribute ( "Version" , "1" ) ,
55- element ) ) ;
41+ DatabaseConfig . SetConfigValue ( "EncodeJobs" , SerializeJobs ( value ) , Database . Connection ) ;
42+ }
43+ }
5644
57- doc . Save ( EncodeJobsPath ) ;
45+ private static string SerializeJobs ( List < EncodeJob > jobs )
46+ {
47+ var xmlBuilder = new StringBuilder ( ) ;
48+ using ( XmlWriter writer = XmlWriter . Create ( xmlBuilder ) )
49+ {
50+ xmlSerializer . Serialize ( writer , jobs ) ;
5851 }
52+
53+ return xmlBuilder . ToString ( ) ;
5954 }
6055
61- private static void EnsureFolderCreated ( )
56+ private static List < EncodeJob > LoadJobsXmlString ( string jobsXml )
6257 {
63- if ( ! Directory . Exists ( DataFolder ) )
58+ try
59+ {
60+ using ( var stringReader = new StringReader ( jobsXml ) )
61+ {
62+ using ( var xmlReader = new XmlTextReader ( stringReader ) )
63+ {
64+ return xmlSerializer . Deserialize ( xmlReader ) as List < EncodeJob > ;
65+ }
66+ }
67+ }
68+ catch ( XmlException exception )
6469 {
65- Directory . CreateDirectory ( DataFolder ) ;
70+ System . Windows . MessageBox . Show (
71+ "Could not load encode queue: " +
72+ exception +
73+ Environment . NewLine +
74+ Environment . NewLine +
75+ jobsXml ) ;
6676 }
77+
78+ return new List < EncodeJob > ( ) ;
6779 }
6880 }
6981}
0 commit comments