public override global::System.Data.DataSet Clone() { PhotoLibraryMap cln = ((PhotoLibraryMap)(base.Clone())); cln.InitVars(); cln.SchemaSerializationMode = this.SchemaSerializationMode; return(cln); }
public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedDataSetSchema(global::System.Xml.Schema.XmlSchemaSet xs) { PhotoLibraryMap ds = new PhotoLibraryMap(); global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); global::System.Xml.Schema.XmlSchemaAny any = new global::System.Xml.Schema.XmlSchemaAny(); any.Namespace = ds.Namespace; sequence.Items.Add(any); type.Particle = sequence; global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); if (xs.Contains(dsSchema.TargetNamespace)) { global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); try { global::System.Xml.Schema.XmlSchema schema = null; dsSchema.Write(s1); for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext();) { schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); s2.SetLength(0); schema.Write(s2); if ((s1.Length == s2.Length)) { s1.Position = 0; s2.Position = 0; for (; ((s1.Position != s1.Length) && (s1.ReadByte() == s2.ReadByte()));) { ; } if ((s1.Position == s1.Length)) { return(type); } } } } finally { if ((s1 != null)) { s1.Close(); } if ((s2 != null)) { s2.Close(); } } } xs.Add(dsSchema); return(type); }
public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); PhotoLibraryMap ds = new PhotoLibraryMap(); global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); any1.Namespace = "http://www.w3.org/2001/XMLSchema"; any1.MinOccurs = new decimal(0); any1.MaxOccurs = decimal.MaxValue; any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; sequence.Items.Add(any1); global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; any2.MinOccurs = new decimal(1); any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; sequence.Items.Add(any2); global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); attribute1.Name = "namespace"; attribute1.FixedValue = ds.Namespace; type.Attributes.Add(attribute1); global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); attribute2.Name = "tableTypeName"; attribute2.FixedValue = "RenamingQueueDataTable"; type.Attributes.Add(attribute2); type.Particle = sequence; global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); if (xs.Contains(dsSchema.TargetNamespace)) { global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); try { global::System.Xml.Schema.XmlSchema schema = null; dsSchema.Write(s1); for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext();) { schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); s2.SetLength(0); schema.Write(s2); if ((s1.Length == s2.Length)) { s1.Position = 0; s2.Position = 0; for (; ((s1.Position != s1.Length) && (s1.ReadByte() == s2.ReadByte()));) { ; } if ((s1.Position == s1.Length)) { return(type); } } } } finally { if ((s1 != null)) { s1.Close(); } if ((s2 != null)) { s2.Close(); } } } xs.Add(dsSchema); return(type); }
public bool PerformRenamingReview(PhotoLibraryMap dataSource) { return(new RenamePreview(dataSource).ShowDialog() == DialogResult.OK); }
public RenamePreview(PhotoLibraryMap dataSource) { InitializeComponent(); photoLibraryMapBindingSource.DataSource = dataSource; }
public bool PerformRenamingReview(PhotoLibraryMap dataSource) { return new RenamePreview(dataSource).ShowDialog() == DialogResult.OK; }
public void OrganizePhotoLibrary(string path, bool reviewBeforeApply, bool scanSubfolders, bool refreshDatesForAllFiles, Func<PhotoLibraryMap, bool> reviewFunction) { try { Dictionary<string, DateTime> minedPhotoData = new PhotoMiner(path, scanSubfolders, m_logger).GetMediaFilesList(); m_logger.LogFormat(Resources.Toolkit_OrganizePhotoLibrary_Loaded_info_for__0__photos, minedPhotoData.Count); Dictionary<string, DateTime> minedVideoData = new VideoMiner(path, scanSubfolders, m_logger).GetMediaFilesList(); m_logger.LogFormat(Resources.Toolkit_OrganizePhotoLibrary_Loaded_info_for__0__videos, minedVideoData.Count); var libraryDataSet = new PhotoLibraryMap(); foreach (var file in minedPhotoData.Concat(minedVideoData)) { var row = libraryDataSet.RenamingQueue.NewRenamingQueueRow(); row.CurrentFileName = Path.GetFileNameWithoutExtension(file.Key); row.NewFileName = string.Format("ML{0}", file.Value.ToString("yyyyMMdd_HHmmss")); row.Extension = Path.GetExtension(file.Key).ToLower(); row.FileLocation = file.Key; row.TakenDate = file.Value; row.RenameFlag = row.CurrentFileName != row.NewFileName; row.IsPhoto = minedPhotoData.ContainsKey(file.Key); libraryDataSet.RenamingQueue.AddRenamingQueueRow(row); } var duplicateNewFiles = libraryDataSet.RenamingQueue.GroupBy(p => new {p.TakenDate, p.Extension}).Where(x => x.Count() > 1).ToList(); if (duplicateNewFiles.Count > 0) { m_logger.LogFormat(Resources.Toolkit_OrganizePhotoLibrary_Creating_unique_file_names_for__0__duplicates, minedVideoData.Count); foreach (var duplicateNewFilesGroup in duplicateNewFiles) { int duplicateIndex = 1; foreach (var row in duplicateNewFilesGroup.OrderBy(p => p.CurrentFileName)) { row.DuplicateFlag = true; row.NewFileName = string.Format("{0}_{1}", row.NewFileName, duplicateIndex++); row.RenameFlag = row.CurrentFileName != row.NewFileName; } } } // Ensure linked files (same name, but different extension) get renamed as well var allLinkedFiles = Directory .GetFiles(path, "*", scanSubfolders ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly) .GroupBy(p => Path.Combine(Path.GetDirectoryName(p), Path.GetFileNameWithoutExtension(p))) .ToDictionary(g => g.Key, g => g.Select(p => new { FileName = Path.GetFileName(p), Path = p }).ToList()); foreach (var linkedFilesInQueue in libraryDataSet.RenamingQueue.GroupBy(p => Path.Combine(Path.GetDirectoryName(p.FileLocation), Path.GetFileNameWithoutExtension(p.FileLocation)))) { var otherLinkedFiles = allLinkedFiles[linkedFilesInQueue.Key] .Where(p => linkedFilesInQueue.All(lf => lf.FileLocation != p.Path)) .ToList(); var jointLinkedFiles = linkedFilesInQueue.ToList(); var fileNameProto = linkedFilesInQueue.OrderBy(p => p.IsPhoto).First(); if (otherLinkedFiles.Count > 0) { // Create renaming records for newly recognized linked files foreach (var otherLinkedFile in otherLinkedFiles) { var row = libraryDataSet.RenamingQueue.NewRenamingQueueRow(); row.CurrentFileName = Path.GetFileNameWithoutExtension(otherLinkedFile.Path); row.Extension = Path.GetExtension(otherLinkedFile.Path).ToLower(); row.FileLocation = otherLinkedFile.Path; row.TakenDate = new[] { File.GetCreationTime(otherLinkedFile.Path), File.GetLastWriteTime(otherLinkedFile.Path) }.Min(); row.IsPhoto = false; jointLinkedFiles.Add(row); libraryDataSet.RenamingQueue.AddRenamingQueueRow(row); } } // Align new file names foreach (var jointLinkedFile in jointLinkedFiles) { jointLinkedFile.NewFileName = fileNameProto.NewFileName; // Re-evaluate rename flag jointLinkedFile.RenameFlag = jointLinkedFile.CurrentFileName != jointLinkedFile.NewFileName; } } if (reviewBeforeApply) { bool proceed = reviewFunction.Invoke(libraryDataSet); if (!proceed) { m_logger.LogFormat(Resources.Toolkit_OrganizePhotoLibrary_Cancelled); return; } } int renameCounter = 0; foreach (var renamingQueueRow in libraryDataSet.RenamingQueue) { try { string newFileLocation = Path.Combine(Path.GetDirectoryName(renamingQueueRow.FileLocation), string.Format("{0}{1}", renamingQueueRow.NewFileName, renamingQueueRow.Extension)); if (renamingQueueRow.RenameFlag) { File.Move(renamingQueueRow.FileLocation, newFileLocation); File.SetCreationTime(newFileLocation, renamingQueueRow.TakenDate); File.SetLastWriteTime(newFileLocation, renamingQueueRow.TakenDate); renameCounter++; } else if (refreshDatesForAllFiles) { File.SetCreationTime(renamingQueueRow.FileLocation, renamingQueueRow.TakenDate); File.SetLastWriteTime(renamingQueueRow.FileLocation, renamingQueueRow.TakenDate); } } catch (Exception ex) { m_logger.LogFormat(Resources.Toolkit_OrganizePhotoLibrary_Error_renaming___0_, ex); } } m_logger.LogFormat(Resources.Toolkit_OrganizePhotoLibrary_Renamed__0__files__skipped__1_, renameCounter, libraryDataSet.RenamingQueue.Count - renameCounter); } catch (Exception ex) { m_logger.LogFormat(Resources.Toolkit_CloneModificationDates_Error___0_, ex); } }