1 | using System; |
---|
2 | using System.Collections.Generic; |
---|
3 | using System.Linq; |
---|
4 | using System.Text; |
---|
5 | using System.IO; |
---|
6 | using Com.Piwigo.Uploader.DTO; |
---|
7 | using Com.Piwigo.Lib.DTO; |
---|
8 | |
---|
9 | namespace Com.Piwigo.Uploader.Service |
---|
10 | { |
---|
11 | |
---|
12 | public class LoadFromDirectory : IService |
---|
13 | { |
---|
14 | string[] extensions = { ".jpeg", ".jpg", ".JPEG", ".JPG" }; |
---|
15 | |
---|
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 | |
---|
32 | private LocalAlbum loadDirectory(String dirName, Int32? rootAlbumId) |
---|
33 | { |
---|
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 | |
---|
39 | album.MessageInfo = ""; |
---|
40 | album.UpperCatId = parentAlbumId; |
---|
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 | { |
---|
47 | album.LocalImages.Add(loadFile(strfile)); |
---|
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 | |
---|
59 | public void runService() |
---|
60 | { |
---|
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 | } |
---|
123 | } |
---|
124 | } |
---|
125 | } |
---|