77
88namespace FileMasta . Data
99{
10- public class Database
10+ public class DataCache
1111 {
1212 /// <summary>
13- /// Contains the web file elements in the database
13+ /// Contains the array of files in the database
1414 /// </summary>
1515 private readonly List < WebFile > _dbFiles = new List < WebFile > ( ) ;
1616
1717 /// <summary>
18- /// Contains the users saved files url
18+ /// Contains the users saved files
1919 /// </summary>
2020 private readonly List < string > _savedFiles = new List < string > ( ) ;
2121
@@ -27,7 +27,7 @@ public class Database
2727 /// <summary>
2828 /// Initialize the database instance
2929 /// </summary>
30- public Database ( )
30+ public DataCache ( )
3131 {
3232 if ( ! HttpExtensions . IsFileSizeEqual ( DataHelper . DatabaseFilePath , AppExtensions . DatabaseUrl ) )
3333 HttpExtensions . DownloadFile ( AppExtensions . DatabaseUrl , DataHelper . DatabaseFilePath ) ;
@@ -96,22 +96,29 @@ public long GetTotalNoFiles()
9696 return _metadata . TotalNoFiles ;
9797 }
9898
99+ private static readonly object Searching = new object ( ) ;
100+
99101 /// <summary>
100- /// Get the first file object that equals to the specified url
102+ /// Find the first file object that matches the specified url
101103 /// </summary>
102104 /// <param name="fileUrl"></param>
103105 /// <returns></returns>
104106 public WebFile GetFile ( string fileUrl )
105107 {
106- lock ( SearchLock )
108+ lock ( Searching )
107109 {
108110 return ( from webFile in _dbFiles
109111 where webFile . Url . Equals ( fileUrl )
110112 select webFile ) . First ( ) ;
111113 }
112114 }
113115
114- private static readonly object SearchLock = new object ( ) ;
116+ public enum Sort
117+ {
118+ Name ,
119+ Size ,
120+ Date
121+ }
115122
116123 /// <summary>
117124 /// Search files from the database
@@ -125,9 +132,9 @@ where webFile.Url.Equals(fileUrl)
125132 /// <returns>Returns a list of matching files with the specified parameters</returns>
126133 public List < WebFile > Search ( Sort sort , string name , string [ ] type , long minSize , DateTime minDateModified , DateTime maxDateModified )
127134 {
128- lock ( SearchLock )
135+ lock ( Searching )
129136 {
130- Sort ( sort ) ;
137+ SortFiles ( sort ) ;
131138 return ( from webFile in _dbFiles
132139 where StringExtensions . ContainsAll ( Uri . UnescapeDataString ( webFile . Url . ToLower ( ) ) ,
133140 StringExtensions . GetWords ( name . ToLower ( ) ) ) &&
@@ -144,19 +151,19 @@ where StringExtensions.ContainsAll(Uri.UnescapeDataString(webFile.Url.ToLower())
144151 /// </summary>
145152 /// <param name="sortBy">Sort Name, Date or Size</param>
146153 /// <param name="sortReverse">Reverse the sort order</param>
147- private void Sort ( Sort sortBy , bool sortReverse = false )
154+ private void SortFiles ( Sort sortBy , bool sortReverse = false )
148155 {
149156 if ( ! sortReverse )
150157 {
151158 _dbFiles . Sort ( delegate ( WebFile x , WebFile y )
152159 {
153160 switch ( sortBy )
154161 {
155- case Data . Sort . Name :
162+ case Sort . Name :
156163 return string . Compare ( x . Name , y . Name , StringComparison . Ordinal ) ;
157- case Data . Sort . Date :
164+ case Sort . Date :
158165 return x . LastModified . CompareTo ( y . LastModified ) ;
159- case Data . Sort . Size :
166+ case Sort . Size :
160167 return x . Size . CompareTo ( y . Size ) ;
161168 default :
162169 return string . Compare ( x . Name , y . Name , StringComparison . Ordinal ) ;
@@ -169,11 +176,11 @@ private void Sort(Sort sortBy, bool sortReverse = false)
169176 {
170177 switch ( sortBy )
171178 {
172- case Data . Sort . Name :
179+ case Sort . Name :
173180 return string . Compare ( y . Name , x . Name , StringComparison . Ordinal ) ;
174- case Data . Sort . Date :
181+ case Sort . Date :
175182 return y . LastModified . CompareTo ( x . LastModified ) ;
176- case Data . Sort . Size :
183+ case Sort . Size :
177184 return y . Size . CompareTo ( x . Size ) ;
178185 default :
179186 return string . Compare ( y . Name , x . Name , StringComparison . Ordinal ) ;
@@ -188,7 +195,7 @@ private void Sort(Sort sortBy, bool sortReverse = false)
188195 /// <returns>Returns a list of matching files with the specified parameters</returns>
189196 public List < WebFile > SavedFiles ( )
190197 {
191- lock ( SearchLock )
198+ lock ( Searching )
192199 {
193200 return ( from webFile in _savedFiles
194201 let file = GetFile ( webFile )
@@ -199,53 +206,58 @@ public List<WebFile> SavedFiles()
199206 /// <summary>
200207 /// Save the specified file to users the saved list
201208 /// </summary>
202- /// <param name="fileUrl ">URL to add</param>
203- public void AddToSaved ( string fileUrl )
209+ /// <param name="url ">URL to add</param>
210+ public void SaveFile ( string url )
204211 {
205- _savedFiles . Add ( fileUrl ) ;
212+ _savedFiles . Add ( url ) ;
206213 }
207214
208215 /// <summary>
209216 /// Remove the specified file from the users saved list
210217 /// </summary>
211- /// <param name="fileUrl ">URL to remove</param>
212- public void RemoveFromSaved ( string fileUrl )
218+ /// <param name="url ">URL to remove</param>
219+ public void UnsaveFile ( string url )
213220 {
214- _savedFiles . Remove ( fileUrl ) ;
221+ _savedFiles . Remove ( url ) ;
215222 }
216223
217224 /// <summary>
218225 /// Check if user has saved the specified file
219226 /// </summary>
220- /// <param name="fileUrl ">URL of the File</param>
227+ /// <param name="url ">URL of the File</param>
221228 /// <returns>True if exists</returns>
222- public bool IsFileSaved ( string fileUrl )
229+ public bool IsFileSaved ( string url )
223230 {
224231 foreach ( var file in _savedFiles )
225- if ( file == fileUrl )
232+ if ( file == url )
226233 return true ;
227234 return false ;
228235 }
229236
230237 /// <summary>
231238 /// Remove all saved file urls
232239 /// </summary>
233- public void ClearSaved ( )
240+ public void WipeSaved ( )
234241 {
235242 _savedFiles . Clear ( ) ;
236243 }
237244
238245 /// <summary>
239- /// Save/update saved files to a local file
246+ /// Save/update users saved files to a local file
240247 /// </summary>
241- public void UpdateSavedFile ( )
248+ public void CreateSavedFile ( )
242249 {
243- if ( _savedFiles . Count == 0 ) { DataHelper . RemoveSavedFile ( ) ; return ; }
250+ if ( _savedFiles . Count == 0 ) { DeleteSavedFile ( ) ; return ; }
244251 using ( var fs = File . OpenWrite ( DataHelper . SavedFilePath ) )
245252 using ( var bs = new BufferedStream ( fs ) )
246253 using ( var sw = new StreamWriter ( bs ) )
247254 foreach ( var fileUrl in _savedFiles )
248255 sw . WriteLine ( fileUrl ) ;
249256 }
257+
258+ public void DeleteSavedFile ( )
259+ {
260+ if ( File . Exists ( DataHelper . SavedFilePath ) ) File . Delete ( DataHelper . SavedFilePath ) ;
261+ }
250262 }
251263}
0 commit comments