KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > dotmarketing > viewtools > DotCMSMacroWebAPI


1 package com.dotmarketing.viewtools;
2
3 import java.io.FilenameFilter JavaDoc;
4 import java.util.ArrayList JavaDoc;
5 import java.util.Date JavaDoc;
6 import java.util.GregorianCalendar JavaDoc;
7 import java.util.HashMap JavaDoc;
8 import java.util.Hashtable JavaDoc;
9 import java.util.Iterator JavaDoc;
10 import java.util.List JavaDoc;
11 import java.util.Map JavaDoc;
12
13 import javax.servlet.http.HttpServletRequest JavaDoc;
14 import javax.servlet.http.HttpSession JavaDoc;
15
16 import org.apache.velocity.tools.view.tools.ViewTool;
17
18 import com.dotmarketing.beans.Host;
19 import com.dotmarketing.cache.FolderCache;
20 import com.dotmarketing.factories.HostFactory;
21 import com.dotmarketing.factories.RoleFactory;
22 import com.dotmarketing.portlets.events.factories.EventFactory;
23 import com.dotmarketing.portlets.files.factories.FileFactory;
24 import com.dotmarketing.portlets.files.model.File;
25 import com.dotmarketing.portlets.folders.factories.FolderFactory;
26 import com.dotmarketing.portlets.folders.model.Folder;
27 import com.dotmarketing.util.Config;
28 import com.dotmarketing.util.UtilMethods;
29 import com.dotmarketing.util.WebKeys;
30 import com.liferay.portal.model.Role;
31 import com.liferay.portal.model.User;
32
33 public class DotCMSMacroWebAPI implements ViewTool {
34
35     public void init(Object JavaDoc obj) {
36
37     }
38
39     // Pictures Gallery Methods
40
public List JavaDoc getPhotoGalleryIndexImages(String JavaDoc indexFolderPath, Host host) {
41         return getPhotoGalleryIndexImages(indexFolderPath, host.getInode());
42     }
43
44     public List JavaDoc getPhotoGalleryIndexImages(String JavaDoc indexFolderPath, long hostId) {
45         ArrayList JavaDoc indexImages = new ArrayList JavaDoc();
46         indexFolderPath = indexFolderPath.trim().endsWith("/")
47                 ? indexFolderPath.trim()
48                 : indexFolderPath.trim() + "/";
49         Folder folder = FolderFactory.getFolderByPath(indexFolderPath, hostId);
50         List JavaDoc subFolders = FolderFactory.getFoldersByParent(folder.getInode());
51         Iterator JavaDoc sFoldersIterator = subFolders.iterator();
52         while (sFoldersIterator.hasNext()) {
53             Folder subFolder = (Folder) sFoldersIterator.next();
54             List JavaDoc<File> imagesList = FileFactory.getFileChildrenByCondition(
55                     subFolder, "deleted="
56                             + com.dotmarketing.db.DbConnectionFactory
57                                     .getDBFalse()
58                             + " and live="
59                             + com.dotmarketing.db.DbConnectionFactory
60                                     .getDBTrue());
61             if (imagesList.size() > 0) {
62                 File indexImg = imagesList.get(0);
63                 for (File img : imagesList) {
64                     if (img.getFileName().toLowerCase().equals("index.jpg")) {
65                         indexImg = img;
66                         break;
67                     }
68                 }
69                 Hashtable JavaDoc folderProperties = new Hashtable JavaDoc();
70                 folderProperties.put("totalImages", imagesList.size());
71                 folderProperties.put("indexImageInode", Long.toString(indexImg
72                         .getInode()));
73                 folderProperties.put("indexImageExtension", indexImg
74                         .getExtension());
75                 folderProperties.put("galleryName", subFolder.getTitle());
76                 folderProperties.put("galleryDate", indexImg.getFriendlyName());
77                 folderProperties.put("galleryDescription", indexImg.getTitle());
78                 folderProperties.put("galleryPath", subFolder.getPath());
79                 indexImages.add(folderProperties);
80             }
81         }
82         return indexImages;
83     }
84
85     public List JavaDoc getPhotoGalleryFolderImages(String JavaDoc folderPath, Host host) {
86         return getPhotoGalleryFolderImages(folderPath, host.getInode());
87     }
88
89     public List JavaDoc getPhotoGalleryFolderImages(String JavaDoc folderPath, long hostId) {
90         folderPath = (folderPath == null) ? "" : folderPath;
91         folderPath = folderPath.trim().endsWith("/")
92                 ? folderPath.trim()
93                 : folderPath.trim() + "/";
94         Folder folder = FolderFactory.getFolderByPath(folderPath, hostId);
95         List JavaDoc imagesList = FileFactory.getFileChildrenByCondition(folder,
96                 "deleted="
97                         + com.dotmarketing.db.DbConnectionFactory.getDBFalse()
98                         + " and live= "
99                         + com.dotmarketing.db.DbConnectionFactory.getDBTrue());
100         return imagesList;
101     }
102
103     public List JavaDoc getfileRepository(String JavaDoc folderPath, String JavaDoc searchFolder,
104             HttpServletRequest JavaDoc request) {
105
106         Host host = HostFactory.getCurrentHost(request);
107         Role[] roles;
108         User user = (User) request.getSession().getAttribute("CMS_USER");
109         if (user != null) {
110             List JavaDoc rolesList = RoleFactory.getAllRolesForUser(user.getUserId());
111             roles = new Role[rolesList.size() + 1];
112             int i = 0;
113             for (i = 0; i < rolesList.size(); ++i) {
114                 roles[i] = (Role) rolesList.get(i);
115             }
116             roles[i] = RoleFactory.getRoleByName(Config
117                     .getStringProperty("CMS_ANONYMOUS_ROLE"));
118
119         } else {
120             roles = new Role[]{RoleFactory.getRoleByName(Config
121                     .getStringProperty("CMS_ANONYMOUS_ROLE"))};
122         }
123
124         Folder folder = FolderCache
125                 .getFolderByPath(folderPath, host.getInode());
126
127         if (Boolean.parseBoolean(searchFolder)) {
128             return FolderFactory.getFoldersByParentByRolesAndSortBy(folder,
129                     roles);
130         } else {
131             return FileFactory.getFilesByParentFolderPerRoleAndCondition(roles,
132                     folder, "deleted="
133                             + com.dotmarketing.db.DbConnectionFactory
134                                     .getDBFalse()
135                             + " and live= "
136                             + com.dotmarketing.db.DbConnectionFactory
137                                     .getDBTrue()
138                             + " order by file_asset.file_name asc");
139         }
140
141     }
142
143     public String JavaDoc getFolderPath(String JavaDoc rootFolder, HttpServletRequest JavaDoc request) {
144
145         String JavaDoc folderPath = request.getParameter("folderPath");
146
147         if (folderPath == null || folderPath.indexOf(rootFolder) != 0
148                 || folderPath.length() < rootFolder.length()) {
149             return rootFolder;
150         } else {
151             return folderPath;
152         }
153
154     }
155
156     //GET EVENTS
157
/**
158      * Get a list of x number of events, from a category inode list in a range of dates.
159      * if startDayOffset is null or 0, the start date begin from today at 00:00:00.
160      * if daysToShow is null or cero, en end date is today at 00:00:00, if not the
161      * end date if from the start date + daysToShow
162      * @param categories a string list of comma separated categories inodes
163      * @param limit max number of events to get
164      * @param startDayOffset
165      * @param daysToShow
166      * @return a list of events
167      */

168     public List JavaDoc getEvents(String JavaDoc categories, int limit, int startDayOffset,
169             String JavaDoc daysToShow) {
170
171         int daysToShowInt = 0;
172         if (UtilMethods.isSet(daysToShow)) {
173             daysToShowInt = Integer.parseInt(daysToShow);
174         }
175         return getEvents(categories, limit, startDayOffset, daysToShowInt);
176     }
177
178     /**
179      * Get a list of x number of events, from a category inode list in a range of dates.
180      * if startDayOffset is null or 0, the start date begin from today at 00:00:00.
181      * if daysToShow is null or cero, en end date is today at 00:00:00, if not the
182      * end date if from the start date + daysToShow
183      * @param categories a string list of comma separated categories inodes
184      * @param limit max number of events to get
185      * @param startDayOffset
186      * @param daysToShow
187      * @return a list of events
188      */

189     public List JavaDoc getEvents(String JavaDoc categories, int limit, String JavaDoc startDayOffset,
190             int daysToShow) {
191
192         int startDayOffsetInt = 0;
193         if (UtilMethods.isSet(startDayOffset)) {
194             startDayOffsetInt = Integer.parseInt(startDayOffset);
195         }
196
197         return getEvents(categories, limit, startDayOffsetInt, daysToShow);
198     }
199
200     /**
201      * Get a list of x number of events, from a category inode list in a range of dates.
202      * if startDayOffset is null or 0, the start date begin from today at 00:00:00.
203      * if daysToShow is null or cero, en end date is today at 00:00:00, if not the
204      * end date if from the start date + daysToShow
205      * @param categories a string list of comma separated categories inodes
206      * @param limit max number of events to get
207      * @param startDayOffset
208      * @param daysToShow
209      * @return a list of events
210      */

211     public List JavaDoc getEvents(String JavaDoc categories, int limit, String JavaDoc startDayOffset,
212             String JavaDoc daysToShow) {
213
214         int startDayOffsetInt = 0;
215         if (UtilMethods.isSet(startDayOffset)) {
216             startDayOffsetInt = Integer.parseInt(startDayOffset);
217         }
218         int daysToShowInt = 0;
219         if (UtilMethods.isSet(daysToShow)) {
220             daysToShowInt = Integer.parseInt(daysToShow);
221         }
222         return getEvents(categories, limit, startDayOffsetInt, daysToShowInt);
223     }
224
225     /**
226      * Get a list of x number of events, from a category inode list in a range of dates.
227      * if startDayOffset is null or 0, the start date begin from today at 00:00:00.
228      * if daysToShow is null or cero, en end date is today at 00:00:00, if not the
229      * end date if from the start date + daysToShow
230      * @param categories a string list of comma separated categories inodes
231      * @param limit max number of events to get
232      * @param startDayOffset
233      * @param daysToShow
234      * @return a list of events
235      */

236     public List JavaDoc getEvents(String JavaDoc categories, int limit, int startDayOffset,
237             int daysToShow) {
238
239         GregorianCalendar JavaDoc fromCal = new GregorianCalendar JavaDoc();
240         GregorianCalendar JavaDoc toCal = new GregorianCalendar JavaDoc();
241
242         if (startDayOffset != 0) {
243             fromCal.add(GregorianCalendar.DATE, startDayOffset);
244             toCal.add(GregorianCalendar.DATE, startDayOffset);
245         }
246
247         if (daysToShow != 0 && daysToShow > 1) {
248             toCal.add(GregorianCalendar.DATE, daysToShow - 1);
249         }
250
251         fromCal.set(GregorianCalendar.HOUR_OF_DAY, 0);
252         fromCal.set(GregorianCalendar.MINUTE, 0);
253         fromCal.set(GregorianCalendar.SECOND, 1);
254
255         toCal.set(GregorianCalendar.HOUR_OF_DAY, 23);
256         toCal.set(GregorianCalendar.MINUTE, 59);
257         toCal.set(GregorianCalendar.SECOND, 58);
258
259         return EventFactory.getPublicEvents(fromCal.getTime(), toCal.getTime(),
260                 "", categories.split(","), limit);
261
262     }
263
264     public List JavaDoc getFileSystemFolder(String JavaDoc folder) {
265         List JavaDoc list = new ArrayList JavaDoc();
266         /*
267         if(session.getAttribute(WebKeys.CMS_USER) == null){
268             return list;
269         }
270         */

271         folder = UtilMethods.cleanFileSystemPathURI(folder);
272         java.io.File JavaDoc file = new java.io.File JavaDoc(Config.CONTEXT.getRealPath(folder));
273         if (!file.exists() || !file.isDirectory()) {
274             return list;
275         }
276         String JavaDoc[] files = file.list(new SystemFileNameFilter());
277         for (int i = 0; i < files.length; i++) {
278             java.io.File JavaDoc myFile = new java.io.File JavaDoc(file.getAbsolutePath()
279                     + java.io.File.separatorChar + files[i]);
280             Map JavaDoc map = new HashMap JavaDoc();
281             map.put("name", files[i]);
282             long size = myFile.length() / 1024;
283             if (size < 1)
284                 size = 1;
285             long k = size % 1024;
286             long mb = size / 1024;
287             long percent = (k * 10) / 1024;
288             Date JavaDoc d = new Date JavaDoc();
289             d.setTime(myFile.lastModified());
290             String JavaDoc prettySize = (mb > 1) ? mb + "." + percent + " mb" : k + " kb";
291             map.put("size", String.valueOf(myFile.length() / 1024));
292             map.put("prettySize", prettySize);
293             map.put("link", folder + "/" + files[i]);
294             map.put("date", d);
295             map.put("prettyDate", UtilMethods.dateToPrettyHTMLDate(d));
296             list.add(map);
297         }
298
299         return list;
300
301     }
302
303     private class SystemFileNameFilter implements FilenameFilter JavaDoc {
304
305         public boolean accept(java.io.File JavaDoc directory, String JavaDoc fileName) {
306
307             if (fileName.startsWith(".") || UtilMethods.cleanFileSystemPathURI(fileName) == null) {
308                 return false;
309             }
310             
311             java.io.File JavaDoc file = new java.io.File JavaDoc(directory.getAbsolutePath()
312                     + java.io.File.separatorChar + fileName);
313             if (file.isDirectory()) {
314                 return false;
315             }
316
317             return true;
318
319         }
320
321     }
322 }
Popular Tags