source: extensions/PiwigoLib/PiwigoUpload/Service/LoadFromDirectory.cs @ 18885

Last change on this file since 18885 was 13520, checked in by bayral, 12 years ago

new project for windows live publish plugin
Well advance single uploader

File size: 5.0 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.IO;
6using Com.Piwigo.Uploader.DTO;
7using Com.Piwigo.Lib.DTO;
8
9namespace 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}
Note: See TracBrowser for help on using the repository browser.