/// <summary> /// Imports the data previously loaded into the database. /// </summary> /// <param name="importList">The IDs of the elements to import.</param> /// <param name="progress">Reports the progress of the operation. First report is the amount of files to process, then subsequent reports represent the quantity done.</param> public async Task ImportToDatabase(List <Guid> selection, IProgress <int> progress) { if (importList == null) { throw new InvalidOperationException("You must first call ImportPreview"); } int i = 0; Media item; await Task.Run(() => { using (Entities context = new Entities()) { DbContextTransaction Trans = context.Database.BeginTransaction(); foreach (Guid id in selection) { item = importList.Single(v => v.MediaId == id); item.IsPersonal = true; SyncAccess.InsertOrMerge(item, context); if (progress != null) { progress.Report(++i); } } Trans.Commit(); } }); }
/// <summary> /// Exports Media items matching the specified list of IDs into specified file in XML format. /// </summary> /// <param name="exportList">The list of Media IDs to export.</param> /// <param name="outputFile">The file to export to.</param> public void ExportToFile(List <Guid> exportList, string outputFile) { List <SyncMedia> ExportData = (from v in SyncAccess.GetMediaListById(exportList) select new SyncMedia(v)).ToList(); string ExportXml = SerializeXml(ExportData); File.WriteAllText(outputFile, ExportXml); }
/// <summary> /// Parses specified file and returns its raw data. /// </summary> /// <param name="inputFile">The file to parse.</param> /// <returns>A list of Media objects.</returns> private List <Media> ParseFile(string inputFile) { string ImportXml = File.ReadAllText(inputFile); List <SyncMedia> ImportList = DeserializeXml(ImportXml); List <MediaCategory> CacheCategories = SyncAccess.GetMediaCategories(); List <RatingCategory> CacheRatings = SyncAccess.GetRatingCategories(); List <Media> Result = (from i in ImportList select i.ConvertToMedia(CacheCategories, CacheRatings)).ToList(); return(Result); }