@@ -15,9 +15,9 @@ public class Database
1515 private readonly List < WebFile > _dbFiles = new List < WebFile > ( ) ;
1616
1717 /// <summary>
18- /// Contains the users bookmarked files url
18+ /// Contains the users saved files url
1919 /// </summary>
20- private readonly List < string > _bookmarkedFiles = new List < string > ( ) ;
20+ private readonly List < string > _savedFiles = new List < string > ( ) ;
2121
2222 /// <summary>
2323 /// Contains the metadata of the database
@@ -32,26 +32,22 @@ public Database()
3232 if ( ! HttpExtensions . IsFileSizeEqual ( DataHelper . DatabaseFilePath , AppExtensions . DatabaseUrl ) )
3333 HttpExtensions . DownloadFile ( AppExtensions . DatabaseUrl , DataHelper . DatabaseFilePath ) ;
3434
35- var totalNoFiles = 0 ;
36- long totalFileSize = 0 ;
37-
38- if ( ! File . Exists ( DataHelper . BookmarkedFilePath ) )
39- File . Create ( DataHelper . BookmarkedFilePath ) ;
40-
41- if ( ! string . IsNullOrEmpty ( File . ReadAllText ( DataHelper . BookmarkedFilePath ) ) )
35+ if ( File . Exists ( DataHelper . SavedFilePath ) )
4236 {
43- using ( var fs = File . Open ( DataHelper . BookmarkedFilePath , FileMode . Open , FileAccess . Read , FileShare . Read ) )
37+ using ( var fs = File . Open ( DataHelper . SavedFilePath , FileMode . Open , FileAccess . Read , FileShare . Read ) )
4438 using ( var bs = new BufferedStream ( fs ) )
4539 using ( var sr = new StreamReader ( bs ) )
4640 {
4741 string s ;
4842 while ( ( s = sr . ReadLine ( ) ) != null )
4943 {
50- _bookmarkedFiles . Add ( s ) ;
44+ _savedFiles . Add ( s ) ;
5145 }
5246 }
5347 }
54-
48+
49+ var totalNoFiles = 0 ;
50+ long totalFileSize = 0 ;
5551 using ( var fs = File . Open ( DataHelper . DatabaseFilePath , FileMode . Open , FileAccess . Read , FileShare . Read ) )
5652 using ( var bs = new BufferedStream ( fs ) )
5753 using ( var sr = new StreamReader ( bs ) )
@@ -60,6 +56,7 @@ public Database()
6056 string s ;
6157 while ( ( s = sr . ReadLine ( ) ) != null )
6258 {
59+ // Messy way to split csv into a file object
6360 var lineParts = s . Split ( ',' ) ;
6461 var fileSize = long . Parse ( lineParts [ 0 ] ) ;
6562 var fileLastModified = DateTime . Parse ( lineParts [ 1 ] ) ;
@@ -117,16 +114,16 @@ where webFile.Url.Equals(fileUrl)
117114 private static readonly object SearchLock = new object ( ) ;
118115
119116 /// <summary>
120- /// Search files and Bookmarked from the database
117+ /// Search files from the database
121118 /// </summary>
122119 /// <param name="sort">Sort results by property</param>
123120 /// <param name="name">File name to match words/terms</param>
124121 /// <param name="type">File type to filter</param>
125- /// <param name="minimumSize ">More than or equal to file size in bytes</param>
126- /// <param name="lastModifiedMin ">Last modified minimum file date</param>
127- /// <param name="lastModifiedMax ">Last modified maximum file date</param>
122+ /// <param name="minSize ">More than or equal to file size in bytes</param>
123+ /// <param name="minDateModified ">Last modified minimum file date</param>
124+ /// <param name="maxDateModified ">Last modified maximum file date</param>
128125 /// <returns>Returns a list of matching files with the specified parameters</returns>
129- public List < WebFile > Search ( Sort sort , string name , string [ ] type , long minimumSize , DateTime lastModifiedMin , DateTime lastModifiedMax )
126+ public List < WebFile > Search ( Sort sort , string name , string [ ] type , long minSize , DateTime minDateModified , DateTime maxDateModified )
130127 {
131128 lock ( SearchLock )
132129 {
@@ -135,10 +132,10 @@ public List<WebFile> Search(Sort sort, string name, string[] type, long minimumS
135132 where StringExtensions . ContainsAll ( Uri . UnescapeDataString ( webFile . Url . ToLower ( ) ) ,
136133 StringExtensions . GetWords ( name . ToLower ( ) ) ) &&
137134 webFile . IsType ( type ) &&
138- webFile . Size >= minimumSize &&
139- webFile . LastModified > lastModifiedMin &&
140- webFile . LastModified < lastModifiedMax
141- select webFile ) . ToList ( ) ;
135+ webFile . Size >= minSize &&
136+ webFile . LastModified > minDateModified &&
137+ webFile . LastModified < maxDateModified
138+ select webFile ) . ToList ( ) ;
142139 }
143140 }
144141
@@ -184,5 +181,71 @@ private void Sort(Sort sortBy, bool sortReverse = false)
184181 } ) ;
185182 }
186183 }
184+
185+ /// <summary>
186+ /// Search files from the database
187+ /// </summary>
188+ /// <returns>Returns a list of matching files with the specified parameters</returns>
189+ public List < WebFile > SavedFiles ( )
190+ {
191+ lock ( SearchLock )
192+ {
193+ return ( from webFile in _savedFiles
194+ let file = GetFile ( webFile )
195+ select file ) . ToList ( ) ;
196+ }
197+ }
198+
199+ /// <summary>
200+ /// Save the specified file to users the saved list
201+ /// </summary>
202+ /// <param name="fileUrl">URL to add</param>
203+ public void AddToSaved ( string fileUrl )
204+ {
205+ _savedFiles . Add ( fileUrl ) ;
206+ }
207+
208+ /// <summary>
209+ /// Remove the specified file from the users saved list
210+ /// </summary>
211+ /// <param name="fileUrl">URL to remove</param>
212+ public void RemoveFromSaved ( string fileUrl )
213+ {
214+ _savedFiles . Remove ( fileUrl ) ;
215+ }
216+
217+ /// <summary>
218+ /// Check if user has saved the specified file
219+ /// </summary>
220+ /// <param name="fileUrl">URL of the File</param>
221+ /// <returns>True if exists</returns>
222+ public bool IsFileSaved ( string fileUrl )
223+ {
224+ foreach ( var file in _savedFiles )
225+ if ( file == fileUrl )
226+ return true ;
227+ return false ;
228+ }
229+
230+ /// <summary>
231+ /// Remove all saved file urls
232+ /// </summary>
233+ public void ClearSaved ( )
234+ {
235+ _savedFiles . Clear ( ) ;
236+ }
237+
238+ /// <summary>
239+ /// Save/update saved files to a local file
240+ /// </summary>
241+ public void UpdateSavedFile ( )
242+ {
243+ if ( _savedFiles . Count == 0 ) { DataHelper . RemoveSavedFile ( ) ; return ; }
244+ using ( var fs = File . OpenWrite ( DataHelper . SavedFilePath ) )
245+ using ( var bs = new BufferedStream ( fs ) )
246+ using ( var sw = new StreamWriter ( bs ) )
247+ foreach ( var fileUrl in _savedFiles )
248+ sw . WriteLine ( fileUrl ) ;
249+ }
187250 }
188251}
0 commit comments