KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > dotmarketing > portlets > browser > ajax > BrowserAjax


1 package com.dotmarketing.portlets.browser.ajax;
2
3 import java.util.ArrayList JavaDoc;
4 import java.util.Collections JavaDoc;
5 import java.util.HashMap JavaDoc;
6 import java.util.List JavaDoc;
7 import java.util.Map JavaDoc;
8
9 import javax.servlet.http.HttpServletRequest JavaDoc;
10
11 import uk.ltd.getahead.dwr.WebContext;
12 import uk.ltd.getahead.dwr.WebContextFactory;
13
14 import com.dotmarketing.beans.Host;
15 import com.dotmarketing.beans.Inode;
16 import com.dotmarketing.beans.WebAsset;
17 import com.dotmarketing.cache.PermissionCache;
18 import com.dotmarketing.comparators.WebAssetMapComparator;
19 import com.dotmarketing.db.DbConnectionFactory;
20 import com.dotmarketing.exception.DotRuntimeException;
21 import com.dotmarketing.factories.HostFactory;
22 import com.dotmarketing.factories.InodeFactory;
23 import com.dotmarketing.factories.PermissionFactory;
24 import com.dotmarketing.factories.PublishFactory;
25 import com.dotmarketing.factories.RoleFactory;
26 import com.dotmarketing.factories.WebAssetFactory;
27 import com.dotmarketing.portlets.files.factories.FileFactory;
28 import com.dotmarketing.portlets.files.model.File;
29 import com.dotmarketing.portlets.folders.factories.FolderFactory;
30 import com.dotmarketing.portlets.folders.model.Folder;
31 import com.dotmarketing.portlets.htmlpages.factories.HTMLPageFactory;
32 import com.dotmarketing.portlets.htmlpages.model.HTMLPage;
33 import com.dotmarketing.portlets.links.factories.LinkFactory;
34 import com.dotmarketing.portlets.links.model.Link;
35 import com.dotmarketing.util.Config;
36 import com.dotmarketing.util.Logger;
37 import com.dotmarketing.util.UtilMethods;
38 import com.liferay.portal.model.Role;
39 import com.liferay.portal.model.User;
40 import com.liferay.portal.struts.ActionException;
41
42 /**
43  *
44  * @author david
45  *
46  */

47 public class BrowserAjax {
48
49     long activeHostInode = 0;
50     long activeFolderInode = 0;
51     List JavaDoc<Long JavaDoc> openFolders = new ArrayList JavaDoc<Long JavaDoc> ();
52
53     String JavaDoc lastSortBy = "name";
54     boolean lastSortDirectionDesc = false;
55     
56     /**
57      * This methods is used to load the entire tree by first time.
58      * @return The whole folders tree structure.
59      */

60     public List JavaDoc<Map JavaDoc> getTree () {
61         WebContext ctx = WebContextFactory.get();
62         User usr = getUser(ctx.getHttpServletRequest());
63         Role[] roles = RoleFactory.getAllRolesForUser(usr.getUserId()).toArray(new Role[0]);
64         
65         List JavaDoc<Host> hosts = HostFactory.getAllHosts();
66         List JavaDoc<Map JavaDoc> retList = new ArrayList JavaDoc<Map JavaDoc>();
67         for (Host host : hosts) {
68             Map JavaDoc<String JavaDoc,Object JavaDoc> hostMap = (Map JavaDoc<String JavaDoc,Object JavaDoc>)host.getMap();
69             if (activeHostInode == host.getInode() || hosts.size() == 1) {
70                 hostMap.put("open", true);
71                 List JavaDoc<Map JavaDoc> children = getFoldersTree (host);
72                 hostMap.put("childrenFolders", children);
73                 hostMap.put("childrenFoldersCount", children.size());
74             } else {
75                 hostMap.put("open", false);
76                 hostMap.put("childrenFoldersCount", getSubFoldersCount(host));
77             }
78             List JavaDoc<String JavaDoc> permissions = PermissionCache.getPermissionIdsByRolesFromCache(host, roles);
79             hostMap.put("permissions", permissions);
80             retList.add(hostMap);
81         }
82         return retList;
83     }
84     
85     /**
86      * Action called everytime a user opens a folder using the + (left hand side)
87      * @param parentInode Parent folder to be opened
88      * @return The subtree structure of folders
89      */

90     public List JavaDoc<Map JavaDoc> openHostTree (long hostInode) {
91         Host host = (Host) InodeFactory.getInode(hostInode, Host.class);
92         activeHostInode = hostInode;
93         return getFoldersTree (host);
94     }
95
96     /**
97      * Action called everytime a user opens a folder using the + (left hand side)
98      * @param parentInode Parent folder to be opened
99      * @return The subtree structure of folders
100      */

101     public List JavaDoc<Map JavaDoc> openFolderTree (long parentInode) {
102         Folder f = (Folder) InodeFactory.getInode(parentInode, Folder.class);
103         openFolders.add(parentInode);
104         return getFoldersTree (f);
105     }
106
107     /**
108      * Action called everytime a user closes a folder using the - (left hand side)
109      * @param parentInode Parent folder to be opened
110      * @return The subtree structure of folders
111      */

112     public void closeFolderTree (long parentInode) {
113         openFolders.remove(parentInode);
114     }
115
116
117     @SuppressWarnings JavaDoc("unchecked")
118     public List JavaDoc<Map JavaDoc<String JavaDoc, Object JavaDoc>> openFolderContent (long parentInode, String JavaDoc sortBy, boolean showArchived) {
119         
120         String JavaDoc condition = "(working = " + DbConnectionFactory.getDBTrue();
121         if (showArchived) {
122             condition += ")";
123         } else {
124             condition += " and deleted = " + DbConnectionFactory.getDBFalse() + ")";
125         }
126         
127         List JavaDoc<Map JavaDoc<String JavaDoc, Object JavaDoc>> returnList = new ArrayList JavaDoc<Map JavaDoc<String JavaDoc, Object JavaDoc>> ();
128         
129         WebContext ctx = WebContextFactory.get();
130         User usr = getUser(ctx.getHttpServletRequest());
131         Role[] roles = RoleFactory.getAllRolesForUser(usr.getUserId()).toArray(new Role[0]);
132
133         Folder f = (Folder) InodeFactory.getInode(parentInode, Folder.class);
134         activeFolderInode = parentInode;
135         
136         List JavaDoc<Folder> folders = InodeFactory.getChildrenClass(f, Folder.class);
137         for (Folder folder : folders) {
138             Map JavaDoc<String JavaDoc, Object JavaDoc> folderMap = folder.getMap();
139             List JavaDoc<String JavaDoc> permissions = PermissionCache.getPermissionIdsByRolesFromCache(folder, roles);
140             folderMap.put("permissions", permissions);
141             appendFolderProperties(folder, folderMap);
142             returnList.add(folderMap);
143         }
144         List JavaDoc<HTMLPage> pages = InodeFactory.getChildrenClassByCondition(f, HTMLPage.class, condition);
145         for (HTMLPage page : pages) {
146             Map JavaDoc<String JavaDoc, Object JavaDoc> pageMap = page.getMap();
147             List JavaDoc<String JavaDoc> permissions = PermissionCache.getPermissionIdsByRolesFromCache(page, roles);
148             pageMap.put("permissions", permissions);
149             returnList.add(pageMap);
150         }
151         List JavaDoc<File> files = InodeFactory.getChildrenClassByCondition(f, File.class, condition);
152         for (File file : files) {
153             Map JavaDoc<String JavaDoc, Object JavaDoc> fileMap = file.getMap();
154             List JavaDoc<String JavaDoc> permissions = PermissionCache.getPermissionIdsByRolesFromCache(file, roles);
155             fileMap.put("permissions", permissions);
156             returnList.add(fileMap);
157         }
158         List JavaDoc<Link> links = InodeFactory.getChildrenClassByCondition(f, Link.class, condition);
159         for (Link link : links) {
160             Map JavaDoc<String JavaDoc, Object JavaDoc> linkMap = link.getMap();
161             List JavaDoc<String JavaDoc> permissions = PermissionCache.getPermissionIdsByRolesFromCache(link, roles);
162             linkMap.put("permissions", permissions);
163             returnList.add(linkMap);
164         }
165         
166         if (sortBy != null && UtilMethods.isSet(sortBy)) {
167             if (sortBy.equals(lastSortBy)) {
168                 lastSortDirectionDesc = !lastSortDirectionDesc;
169             }
170             this.lastSortBy = sortBy;
171         }
172         
173         WebAssetMapComparator comparator = new WebAssetMapComparator (lastSortBy, lastSortDirectionDesc);
174         Collections.sort(returnList, comparator);
175         
176         return returnList;
177     }
178     
179     @SuppressWarnings JavaDoc("unchecked")
180     private List JavaDoc<Map JavaDoc> getFoldersTree (Inode parent) {
181         WebContext ctx = WebContextFactory.get();
182         User usr = getUser(ctx.getHttpServletRequest());
183         Role[] roles = RoleFactory.getAllRolesForUser(usr.getUserId()).toArray(new Role[0]);
184
185         ArrayList JavaDoc<Map JavaDoc> folders = new ArrayList JavaDoc<Map JavaDoc> ();
186         List JavaDoc<Folder> children = InodeFactory.getChildrenClass(parent, Folder.class, "name");
187         for (Folder f : children) {
188             Map JavaDoc<String JavaDoc, Object JavaDoc> folderMap = f.getMap();
189             if (openFolders.contains(f.getInode())) {
190                 List JavaDoc<Map JavaDoc> childrenMaps = getFoldersTree (f);
191                 folderMap.put("open", true);
192                 folderMap.put("childrenFolders", childrenMaps);
193             } else {
194                 folderMap.put("open", false);
195             }
196             if(f.getInode() == activeFolderInode)
197                 folderMap.put("selected", true);
198             else
199                 folderMap.put("selected", false);
200             appendFolderProperties(f, folderMap);
201             
202             List JavaDoc<String JavaDoc> permissions = PermissionCache.getPermissionIdsByRolesFromCache(f, roles);
203             folderMap.put("permissions", permissions);
204             
205             folders.add(folderMap);
206         }
207         return folders;
208     }
209     
210     public Map JavaDoc<String JavaDoc, Object JavaDoc> renameFolder (long inode, String JavaDoc newName) {
211         HashMap JavaDoc<String JavaDoc, Object JavaDoc> result = new HashMap JavaDoc<String JavaDoc, Object JavaDoc> ();
212         Folder folder = (Folder) InodeFactory.getInode(inode, Folder.class);
213         result.put("lastName", folder.getName());
214         result.put("extension", "");
215         result.put("newName", newName);
216         result.put("inode", folder.getInode());
217         if (FolderFactory.renameFolder(folder, newName)) {
218             result.put("result", 0);
219         } else {
220             result.put("result", 1);
221             result.put("errorReason", "There is another folder that has the same name");
222         }
223         return result;
224     }
225     
226     // Copy action
227
public boolean copyFolder(long inode, long newFolder) throws Exception JavaDoc {
228         HttpServletRequest JavaDoc req = WebContextFactory.get().getHttpServletRequest();
229         User user = getUser(req);
230
231         Folder folder = (Folder) InodeFactory.getInode(inode, Folder.class);
232
233         // Checking permissions
234

235         if (!FolderFactory.existsFolder(newFolder)) {
236             Host parentHost = (Host) InodeFactory.getInode(newFolder,
237                     Host.class);
238
239             if (!PermissionFactory.doesUserHavePermission(folder, Config.getIntProperty("PERMISSION_WRITE"), user) ||
240                     !PermissionFactory.doesUserHavePermission(parentHost, Config.getIntProperty("PERMISSION_WRITE"), user))
241                 throw new DotRuntimeException("The user doesn't have the required permissions.");
242
243             FolderFactory.copyFolder(folder, parentHost);
244         } else {
245             Folder parentFolder = (Folder) InodeFactory.getInode(newFolder,
246                     Folder.class);
247             
248             if (!PermissionFactory.doesUserHavePermission(folder, Config.getIntProperty("PERMISSION_WRITE"), user) ||
249                     !PermissionFactory.doesUserHavePermission(parentFolder, Config.getIntProperty("PERMISSION_WRITE"), user))
250                 throw new DotRuntimeException("The user doesn't have the required permissions.");
251
252             if (parentFolder.getInode() == folder.getInode()) {
253                 //Trying to move a folder over itself
254
return false;
255             }
256             if (FolderFactory.isChildFolder(parentFolder, folder)) {
257                 //Trying to move a folder over one of its children
258
return false;
259             }
260
261             FolderFactory.copyFolder(folder, parentFolder);
262         }
263         return true;
264     }
265
266     // Move action
267
public boolean moveFolder(long inode, long newFolder) throws Exception JavaDoc {
268
269         HttpServletRequest JavaDoc req = WebContextFactory.get().getHttpServletRequest();
270         User user = getUser(req);
271
272         Folder folder = (Folder) InodeFactory.getInode(inode, Folder.class);
273
274         if (!FolderFactory.existsFolder(newFolder)) {
275             Host parentHost = (Host) InodeFactory.getInode(newFolder,
276                     Host.class);
277             
278             if (!PermissionFactory.doesUserHavePermission(folder, Config.getIntProperty("PERMISSION_WRITE"), user) ||
279                     !PermissionFactory.doesUserHavePermission(parentHost, Config.getIntProperty("PERMISSION_WRITE"), user))
280                 throw new DotRuntimeException("The user doesn't have the required permissions.");
281             
282             if (!FolderFactory.moveFolder(folder, parentHost)) {
283                 //A folder with the same name already exists on the destination
284
return false;
285             }
286         } else {
287             Folder parentFolder = (Folder) InodeFactory.getInode(newFolder,
288                     Folder.class);
289
290             if (!PermissionFactory.doesUserHavePermission(folder, Config.getIntProperty("PERMISSION_WRITE"), user) ||
291                     !PermissionFactory.doesUserHavePermission(parentFolder, Config.getIntProperty("PERMISSION_WRITE"), user))
292                 throw new DotRuntimeException("The user doesn't have the required permissions.");
293             
294             if (parentFolder.getInode() == folder.getInode()) {
295                 //Trying to move a folder over itself
296
return false;
297             }
298             if (FolderFactory.isChildFolder(parentFolder, folder)) {
299                 //Trying to move a folder over one of its children
300
return false;
301             }
302             if (!FolderFactory.moveFolder(folder, parentFolder)) {
303                 //A folder with the same name already exists on the destination
304
return false;
305             }
306         }
307         return true;
308     }
309     
310     public Map JavaDoc<String JavaDoc, Object JavaDoc> renameFile (long inode, String JavaDoc newName) throws Exception JavaDoc {
311
312         HttpServletRequest JavaDoc req = WebContextFactory.get().getHttpServletRequest();
313         User user = null;
314         try {
315             user = com.liferay.portal.util.PortalUtil.getUser(req);
316         } catch (Exception JavaDoc e) {
317             Logger.error(this, "Error trying to obtain the current liferay user from the request.", e);
318             throw new DotRuntimeException ("Error trying to obtain the current liferay user from the request.");
319         }
320         
321         HashMap JavaDoc<String JavaDoc, Object JavaDoc> result = new HashMap JavaDoc<String JavaDoc, Object JavaDoc> ();
322         File file = (File) InodeFactory.getInode(inode, File.class);
323         result.put("lastName", file.getNameOnly());
324         result.put("extension", file.getExtension());
325         result.put("newName", newName);
326         result.put("inode", inode);
327         if (FileFactory.renameFile(file, newName, user)) {
328             result.put("result", 0);
329         } else {
330             result.put("result", 1);
331             if (file.isLocked())
332                 result.put("errorReason", "The file is locked");
333             else
334                 result.put("errorReason", "Another file with the same name already exists on this folder");
335         }
336         return result;
337     }
338     
339     public boolean copyFile (long inode, long newFolder) throws Exception JavaDoc {
340         
341         HttpServletRequest JavaDoc req = WebContextFactory.get().getHttpServletRequest();
342         User user = getUser(req);
343
344         File file = (File) InodeFactory.getInode(inode, File.class);
345
346         // gets folder parent
347
Folder parent = (Folder) InodeFactory.getInode(newFolder, Folder.class);
348
349         // Checking permissions
350
if (!PermissionFactory.doesUserHavePermission(file, Config.getIntProperty("PERMISSION_WRITE"), user) ||
351                 !PermissionFactory.doesUserHavePermission(parent, Config.getIntProperty("PERMISSION_WRITE"), user))
352             throw new DotRuntimeException("The user doesn't have the required permissions.");
353
354         FileFactory.copyFile(file, parent);
355         
356         return true;
357         
358     }
359
360     public boolean moveFile (long inode, long folder) throws Exception JavaDoc {
361         HttpServletRequest JavaDoc req = WebContextFactory.get().getHttpServletRequest();
362         User user = getUser(req);
363
364         File file = (File) InodeFactory.getInode(inode, File.class);
365
366         // gets folder parent
367
Folder parent = (Folder) InodeFactory.getInode(folder, Folder.class);
368
369         // Checking permissions
370
if (!PermissionFactory.doesUserHavePermission(file, Config.getIntProperty("PERMISSION_WRITE"), user) ||
371                 !PermissionFactory.doesUserHavePermission(parent, Config.getIntProperty("PERMISSION_WRITE"), user))
372             throw new DotRuntimeException("The user doesn't have the required permissions.");
373         
374         return FileFactory.moveFile(file, parent);
375         
376     }
377
378     
379     public Map JavaDoc<String JavaDoc, Object JavaDoc> renameHTMLPage (long inode, String JavaDoc newName) throws Exception JavaDoc {
380
381         HttpServletRequest JavaDoc req = WebContextFactory.get().getHttpServletRequest();
382         User user = getUser(req);
383         
384         HashMap JavaDoc<String JavaDoc, Object JavaDoc> result = new HashMap JavaDoc<String JavaDoc, Object JavaDoc> ();
385         HTMLPage page = (HTMLPage) InodeFactory.getInode(inode, HTMLPage.class);
386         String JavaDoc pageURL = page.getPageUrl();
387         result.put("lastName", pageURL.substring(0, pageURL.lastIndexOf(".")));
388         result.put("extension", "dot");
389         result.put("newName", newName);
390         result.put("inode", inode);
391         if (HTMLPageFactory.renameHTMLPage(page, newName, user)) {
392             result.put("result", 0);
393         } else {
394             result.put("result", 1);
395             if (page.isLocked())
396                 result.put("errorReason", "The page is locked");
397             else
398                 result.put("errorReason", "Another page with the same name already exists on this folder");
399         }
400         return result;
401     }
402     
403     public boolean copyHTMLPage (long inode, long newFolder) throws Exception JavaDoc {
404         
405         HttpServletRequest JavaDoc req = WebContextFactory.get().getHttpServletRequest();
406         User user = getUser(req);
407
408         HTMLPage page = (HTMLPage) InodeFactory.getInode(inode, HTMLPage.class);
409
410         // gets folder parent
411
Folder parent = (Folder) InodeFactory.getInode(newFolder, Folder.class);
412
413         // Checking permissions
414
if (!PermissionFactory.doesUserHavePermission(page, Config.getIntProperty("PERMISSION_WRITE"), user) ||
415                 !PermissionFactory.doesUserHavePermission(parent, Config.getIntProperty("PERMISSION_WRITE"), user))
416             throw new DotRuntimeException("The user doesn't have the required permissions.");
417
418         HTMLPageFactory.copyHTMLPage(page, parent);
419         
420         return true;
421         
422     }
423
424     public boolean moveHTMLPage (long inode, long folder) throws Exception JavaDoc {
425
426         HttpServletRequest JavaDoc req = WebContextFactory.get().getHttpServletRequest();
427         User user = getUser(req);
428
429         HTMLPage page = (HTMLPage) InodeFactory.getInode(inode, HTMLPage.class);
430
431         // gets folder parent
432
Folder parent = (Folder) InodeFactory.getInode(folder, Folder.class);
433
434         // Checking permissions
435
if (!PermissionFactory.doesUserHavePermission(page, Config.getIntProperty("PERMISSION_WRITE"), user) ||
436                 !PermissionFactory.doesUserHavePermission(parent, Config.getIntProperty("PERMISSION_WRITE"), user))
437             throw new DotRuntimeException("The user doesn't have the required permissions.");
438         
439         return HTMLPageFactory.moveHTMLPage(page, parent);
440         
441     }
442
443     public Map JavaDoc<String JavaDoc, Object JavaDoc> renameLink (long inode, String JavaDoc newName) throws Exception JavaDoc {
444
445         HttpServletRequest JavaDoc req = WebContextFactory.get().getHttpServletRequest();
446         User user = null;
447         try {
448             user = com.liferay.portal.util.PortalUtil.getUser(req);
449         } catch (Exception JavaDoc e) {
450             Logger.error(this, "Error trying to obtain the current liferay user from the request.", e);
451             throw new DotRuntimeException ("Error trying to obtain the current liferay user from the request.");
452         }
453         
454         HashMap JavaDoc<String JavaDoc, Object JavaDoc> result = new HashMap JavaDoc<String JavaDoc, Object JavaDoc> ();
455         Link link = (Link) InodeFactory.getInode(inode, Link.class);
456         String JavaDoc oldName = link.getTitle();
457         result.put("lastName", oldName);
458         result.put("extension", "");
459         result.put("newName", newName);
460         result.put("inode", inode);
461         if (LinkFactory.renameLink(link, newName, user)) {
462             result.put("result", 0);
463         } else {
464             result.put("result", 1);
465             if (link.isLocked())
466                 result.put("errorReason", "The link is locked");
467             else
468                 result.put("errorReason", "Another link with the same name already exists on this folder");
469         }
470         return result;
471     }
472     
473     public boolean copyLink (long inode, long newFolder) throws Exception JavaDoc {
474         
475         HttpServletRequest JavaDoc req = WebContextFactory.get().getHttpServletRequest();
476         User user = getUser(req);
477
478         Link link = (Link) InodeFactory.getInode(inode, Link.class);
479
480         // gets folder parent
481
Folder parent = (Folder) InodeFactory.getInode(newFolder, Folder.class);
482
483         // Checking permissions
484
if (!PermissionFactory.doesUserHavePermission(link, Config.getIntProperty("PERMISSION_WRITE"), user) ||
485                 !PermissionFactory.doesUserHavePermission(parent, Config.getIntProperty("PERMISSION_WRITE"), user))
486             throw new DotRuntimeException("The user doesn't have the required permissions.");
487
488         LinkFactory.copyLink(link, parent);
489         
490         return true;
491         
492     }
493
494     public boolean moveLink (long inode, long folder) throws Exception JavaDoc {
495         
496         HttpServletRequest JavaDoc req = WebContextFactory.get().getHttpServletRequest();
497         User user = getUser(req);
498
499         Link link = (Link) InodeFactory.getInode(inode, Link.class);
500
501         // gets folder parent
502
Folder parent = (Folder) InodeFactory.getInode(folder, Folder.class);
503
504         // Checking permissions
505
if (!PermissionFactory.doesUserHavePermission(link, Config.getIntProperty("PERMISSION_WRITE"), user) ||
506                 !PermissionFactory.doesUserHavePermission(parent, Config.getIntProperty("PERMISSION_WRITE"), user))
507             throw new DotRuntimeException("The user doesn't have the required permissions.");
508         
509         return LinkFactory.moveLink(link, parent);
510         
511     }
512
513     public boolean publishAsset (long inode) throws Exception JavaDoc {
514         HttpServletRequest JavaDoc req = WebContextFactory.get().getHttpServletRequest();
515         User user = getUser(req);
516
517         Inode asset = (Inode) InodeFactory.getInode(inode, Inode.class);
518
519         if (!PermissionFactory.doesUserHavePermission(asset, Config.getIntProperty("PERMISSION_PUBLISH"), user))
520             throw new DotRuntimeException("The user doesn't have the required permissions.");
521         
522         return PublishFactory.publishAsset(asset, req);
523     }
524     
525     public boolean unPublishAsset (long inode) throws Exception JavaDoc {
526         HttpServletRequest JavaDoc req = WebContextFactory.get().getHttpServletRequest();
527         User user = getUser(req);
528
529         WebAsset asset = (WebAsset) InodeFactory.getInode(inode, Inode.class);
530
531         Folder parent = (Folder)InodeFactory.getParentOfClass(asset, Folder.class);
532         
533         if (!PermissionFactory.doesUserHavePermission(asset, Config.getIntProperty("PERMISSION_PUBLISH"), user))
534             throw new DotRuntimeException("The user doesn't have the required permissions.");
535         
536         return WebAssetFactory.unPublishAsset(asset, user.getUserId(), parent);
537     }
538
539     public boolean archiveAsset (long inode) throws Exception JavaDoc {
540         HttpServletRequest JavaDoc req = WebContextFactory.get().getHttpServletRequest();
541         User user = getUser(req);
542
543         WebAsset asset = (WebAsset) InodeFactory.getInode(inode, Inode.class);
544
545         if (!PermissionFactory.doesUserHavePermission(asset, Config.getIntProperty("PERMISSION_WRITE"), user))
546             throw new DotRuntimeException("The user doesn't have the required permissions.");
547         
548         return WebAssetFactory.deleteAsset(asset, user.getUserId());
549     }
550     
551     public boolean unArchiveAsset (long inode) throws Exception JavaDoc {
552         HttpServletRequest JavaDoc req = WebContextFactory.get().getHttpServletRequest();
553         User user = getUser(req);
554
555         WebAsset asset = (WebAsset) InodeFactory.getInode(inode, Inode.class);
556
557         
558         if (!PermissionFactory.doesUserHavePermission(asset, Config.getIntProperty("PERMISSION_WRITE"), user))
559             throw new DotRuntimeException("The user doesn't have the required permissions.");
560         
561         WebAssetFactory.unDeleteAsset(asset);
562         
563         return true;
564     }
565
566     
567     public boolean unlockAsset (long inode) throws Exception JavaDoc {
568         HttpServletRequest JavaDoc req = WebContextFactory.get().getHttpServletRequest();
569         User user = getUser(req);
570
571         WebAsset asset = (WebAsset) InodeFactory.getInode(inode, Inode.class);
572
573         if (!PermissionFactory.doesUserHavePermission(asset, Config.getIntProperty("PERMISSION_WRITE"), user))
574             throw new DotRuntimeException("The user doesn't have the required permissions.");
575         
576         WebAssetFactory.unLockAsset(asset);
577         return true;
578     }
579
580     public Map JavaDoc<String JavaDoc, Object JavaDoc> changeAssetMenuOrder (long inode, int newValue) throws ActionException {
581
582         HttpServletRequest JavaDoc req = WebContextFactory.get().getHttpServletRequest();
583         User user = null;
584         try {
585             user = com.liferay.portal.util.PortalUtil.getUser(req);
586         } catch (Exception JavaDoc e) {
587             Logger.error(this, "Error trying to obtain the current liferay user from the request.", e);
588             throw new DotRuntimeException ("Error trying to obtain the current liferay user from the request.");
589         }
590         
591         HashMap JavaDoc<String JavaDoc, Object JavaDoc> result = new HashMap JavaDoc<String JavaDoc, Object JavaDoc> ();
592         WebAsset asset = (WebAsset) InodeFactory.getInode(inode, Inode.class);
593         result.put("lastValue", asset.getSortOrder());
594         WebAssetFactory.changeAssetMenuOrder (asset, newValue, user);
595         result.put("result", 0);
596         return result;
597     }
598
599
600     private int getSubFoldersCount (Host parent) {
601         return InodeFactory.countChildrenOfClass(parent, Folder.class);
602     }
603
604     private void appendFolderProperties (Folder parent, Map JavaDoc<String JavaDoc, Object JavaDoc> folderMap) {
605         int subFolders = InodeFactory.countChildrenOfClass(parent, Folder.class);
606         int htmlPages = InodeFactory.countChildrenOfClass(parent, HTMLPage.class);
607         int files = InodeFactory.countChildrenOfClass(parent, File.class);
608         int links = InodeFactory.countChildrenOfClass(parent, Link.class);
609         folderMap.put("childrenFoldersCount", subFolders);
610         folderMap.put("childrenPagesCount", htmlPages);
611         folderMap.put("childrenLinksCount", files);
612         folderMap.put("childrenFilesCount", links);
613         folderMap.put("childrenCount", subFolders + htmlPages + files + links);
614         Inode parentInode = (Inode) InodeFactory.getParentOfClass(parent, Folder.class);
615         if (parentInode.getInode() == 0)
616             parentInode = (Inode) InodeFactory.getParentOfClass(parent, Host.class);
617         folderMap.put("parent", parentInode.getInode());
618     }
619     
620     private User getUser(HttpServletRequest JavaDoc req) {
621
622         // get the user
623
User user = null;
624         try {
625             user = com.liferay.portal.util.PortalUtil.getUser(req);
626         } catch (Exception JavaDoc e) {
627             Logger.error(this, "Error trying to obtain the current liferay user from the request.", e);
628             throw new DotRuntimeException ("Error trying to obtain the current liferay user from the request.");
629         }
630         return user;
631
632     }
633     
634     
635     
636
637 }
638
Popular Tags