internal static VolumeItem CreateInstance(VolumeItemType type, VolumeDatabase database) { VolumeItem item = null; switch (type) { case VolumeItemType.DirectoryVolumeItem: item = new DirectoryVolumeItem(database); break; case VolumeItemType.FileVolumeItem: item = new FileVolumeItem(database); break; case VolumeItemType.AudioCdRootVolumeItem: item = new AudioCdRootVolumeItem(database); break; case VolumeItemType.AudioTrackVolumeItem: item = new AudioTrackVolumeItem(database); break; default: throw new NotImplementedException(string.Format("Instantiation of type {0} is not implemented", type.ToString())); } return(item); }
internal static VolumeItem CreateInstance(VolumeItemType type, VolumeDatabase database) { VolumeItem item = null; switch (type) { case VolumeItemType.DirectoryVolumeItem: item = new DirectoryVolumeItem(database); break; case VolumeItemType.FileVolumeItem: item = new FileVolumeItem(database); break; case VolumeItemType.AudioCdRootVolumeItem: item = new AudioCdRootVolumeItem(database); break; case VolumeItemType.AudioTrackVolumeItem: item = new AudioTrackVolumeItem(database); break; default: throw new NotImplementedException(string.Format("Instantiation of type {0} is not implemented", type.ToString())); } return item; }
private void ImportFile(XmlNode node, string comment, long volumeID, long parentID, long itemID, Stack<string> path, MetadataStore metaData) { FileSystemVolumeItem item; string location = "/" + string.Join("/", path.Reverse()); string name = node.Attributes["name"].Value; string mimeType; DateTime lastWriteTime; if (node.Name == "directory") { item = new DirectoryVolumeItem(targetDb); mimeType = VolumeScanner.FilesystemVolumeScanner.MIME_TYPE_DIRECTORY; counters[TOTAL_DIRS]++; } else { item = new FileVolumeItem(targetDb); // prepend a non-existing path to ensure the file doesn't actually exist // in the current environment directory mimeType = MimeType.GetMimeTypeForFile(mimePathPrefix + name); long size = ConvertSize(node.Attributes["size"].Value); ((FileVolumeItem)item).SetFileVolumeItemFields(size, null); counters[TOTAL_FILES]++; counters[TOTAL_SIZE] += size; } if (!DateTime.TryParseExact(node.Attributes["time"].Value, DATETIME_FORMAT, ci.DateTimeFormat, DateTimeStyles.None, out lastWriteTime)) lastWriteTime = DateTime.MinValue; item.SetFileSystemVolumeItemFields(location, lastWriteTime, VolumeDatabase.ID_NONE); item.SetVolumeItemFields(volumeID, itemID, parentID, name, mimeType, metaData, comment, null); writer.Write(item); }