[12256] | 1 | using System; |
---|
| 2 | using System.Collections.Generic; |
---|
| 3 | using System.Linq; |
---|
| 4 | using System.Text; |
---|
[12262] | 5 | using System.IO; |
---|
| 6 | using Com.Piwigo.Uploader.DTO; |
---|
[13520] | 7 | using Com.Piwigo.Lib.DTO; |
---|
[12256] | 8 | |
---|
| 9 | namespace Com.Piwigo.Uploader.Service |
---|
| 10 | { |
---|
[13520] | 11 | |
---|
[12256] | 12 | public class LoadFromDirectory : IService |
---|
| 13 | { |
---|
[13520] | 14 | string[] extensions = { ".jpeg", ".jpg", ".JPEG", ".JPG" }; |
---|
[12262] | 15 | |
---|
[13520] | 16 | private LocalImage loadFile(String fileName) |
---|
| 17 | { |
---|
| 18 | LocalImage img = new LocalImage(); |
---|
| 19 | // loading image data in album |
---|
| 20 | if (extensions.Contains<String>(Path.GetExtension(fileName))) |
---|
| 21 | { |
---|
| 22 | FileInfo fi = new FileInfo(fileName); |
---|
| 23 | img.LocalFile = fi.FullName; |
---|
| 24 | img.Name = fi.Name; |
---|
| 25 | img.ConfidentialLevel = ModelManager.Instance.UploadOption.ConfidentialLevel; |
---|
| 26 | img.Author = ModelManager.Instance.UploadOption.Author; |
---|
| 27 | img.AuthorComment = ""; |
---|
| 28 | } |
---|
| 29 | return img; |
---|
| 30 | } |
---|
| 31 | |
---|
[12262] | 32 | private LocalAlbum loadDirectory(String dirName, Int32? rootAlbumId) |
---|
| 33 | { |
---|
[13520] | 34 | DirectoryInfo dir = new DirectoryInfo(dirName); |
---|
| 35 | LocalAlbum album = new LocalAlbum() { LocalDir = dir.FullName, Name = dir.Name }; |
---|
| 36 | |
---|
| 37 | Int32 parentAlbumId = (rootAlbumId.HasValue ? rootAlbumId.Value : PwgAlbum.RootAlbumId); |
---|
| 38 | |
---|
[12262] | 39 | album.MessageInfo = ""; |
---|
[13520] | 40 | album.UpperCatId = parentAlbumId; |
---|
[12262] | 41 | |
---|
| 42 | // loading image data in album |
---|
| 43 | album.LocalImages = new LocalImageList(); |
---|
| 44 | foreach (string strfile in Directory.EnumerateFiles(dir.FullName, "*.*", SearchOption.TopDirectoryOnly) |
---|
| 45 | .Where(s => extensions.Any(ext => ext == Path.GetExtension(s)))) |
---|
| 46 | { |
---|
[13520] | 47 | album.LocalImages.Add(loadFile(strfile)); |
---|
[12262] | 48 | } |
---|
| 49 | |
---|
| 50 | album.SubAlbums = new LocalAlbumList(); |
---|
| 51 | foreach (string strdir in Directory.EnumerateDirectories(dir.FullName)) |
---|
| 52 | { |
---|
| 53 | album.SubAlbums.Add(loadDirectory(strdir, null)); |
---|
| 54 | } |
---|
| 55 | |
---|
| 56 | return album; |
---|
| 57 | } |
---|
| 58 | |
---|
[12256] | 59 | public void runService() |
---|
| 60 | { |
---|
[13520] | 61 | if (File.Exists(ModelManager.Instance.directoryName)) |
---|
| 62 | { |
---|
| 63 | if (extensions.Contains<String>(Path.GetExtension(ModelManager.Instance.directoryName))) |
---|
| 64 | { |
---|
| 65 | FileInfo file = new FileInfo(ModelManager.Instance.directoryName); |
---|
| 66 | LocalAlbum album; |
---|
| 67 | album = ModelManager.Instance.lstAlbumLocaux.SingleOrDefault(a => a.Name == file.Directory.Name); |
---|
| 68 | |
---|
| 69 | if (album == null) |
---|
| 70 | { |
---|
| 71 | album = new LocalAlbum() { LocalDir = file.Directory.FullName, Name = file.Directory.Name }; |
---|
| 72 | album.MessageInfo = "auto created for photo input."; |
---|
| 73 | album.UpperCatId = 0; |
---|
| 74 | album.LocalImages = new LocalImageList(); |
---|
| 75 | album.SubAlbums = new LocalAlbumList(); |
---|
| 76 | |
---|
| 77 | ModelManager.Instance.lstAlbumLocaux.Add(album); |
---|
| 78 | } |
---|
| 79 | |
---|
| 80 | if (album.LocalImages.Count(a => a.Name == file.Name) < 1) |
---|
| 81 | { |
---|
| 82 | album.LocalImages.Add(loadFile(file.FullName)); |
---|
| 83 | } |
---|
| 84 | } |
---|
| 85 | } |
---|
| 86 | else if (Directory.Exists(ModelManager.Instance.directoryName)) |
---|
| 87 | { |
---|
| 88 | Int32 RootAlbumId = PwgAlbum.RootAlbumId; |
---|
| 89 | LocalAlbum rootAlbum = null; |
---|
| 90 | |
---|
| 91 | if (ModelManager.Instance.SelectedNode != null) |
---|
| 92 | { |
---|
| 93 | if (ModelManager.Instance.SelectedNode.Tag != null) |
---|
| 94 | { |
---|
| 95 | if (ModelManager.Instance.SelectedNode.Tag is LocalAlbum) |
---|
| 96 | { |
---|
| 97 | rootAlbum = (LocalAlbum)ModelManager.Instance.SelectedNode.Tag; |
---|
| 98 | RootAlbumId = (rootAlbum.Id.HasValue ? rootAlbum.Id.Value : PwgAlbum.RootAlbumId); |
---|
| 99 | } |
---|
| 100 | else if (ModelManager.Instance.SelectedNode.Tag is PwgImage) |
---|
| 101 | { |
---|
| 102 | rootAlbum = (LocalAlbum)ModelManager.Instance.SelectedNode.Parent.Tag; |
---|
| 103 | RootAlbumId = (rootAlbum.Id.HasValue ? rootAlbum.Id.Value : PwgAlbum.RootAlbumId); |
---|
| 104 | } |
---|
| 105 | } |
---|
| 106 | } |
---|
| 107 | |
---|
| 108 | if (rootAlbum != null) |
---|
| 109 | { |
---|
| 110 | rootAlbum.SubAlbums.Add( |
---|
| 111 | loadDirectory(ModelManager.Instance.directoryName, |
---|
| 112 | RootAlbumId) |
---|
| 113 | ); |
---|
| 114 | } |
---|
| 115 | else |
---|
| 116 | { |
---|
| 117 | ModelManager.Instance.lstAlbumLocaux.Add( |
---|
| 118 | loadDirectory(ModelManager.Instance.directoryName, |
---|
| 119 | PwgAlbum.RootAlbumId) |
---|
| 120 | ); |
---|
| 121 | } |
---|
| 122 | } |
---|
[12256] | 123 | } |
---|
| 124 | } |
---|
| 125 | } |
---|