KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > dotmarketing > portlets > htmlpages > factories > HTMLPageFactory


1 package com.dotmarketing.portlets.htmlpages.factories;
2
3
4 import java.util.List JavaDoc;
5
6 import com.dotmarketing.beans.Host;
7 import com.dotmarketing.beans.Identifier;
8 import com.dotmarketing.beans.Inode;
9 import com.dotmarketing.beans.PermissionAsset;
10 import com.dotmarketing.cache.IdentifierCache;
11 import com.dotmarketing.cache.LiveCache;
12 import com.dotmarketing.cache.PermissionCache;
13 import com.dotmarketing.cache.WorkingCache;
14 import com.dotmarketing.db.DotConnect;
15 import com.dotmarketing.db.DotHibernate;
16 import com.dotmarketing.factories.HostFactory;
17 import com.dotmarketing.factories.IdentifierFactory;
18 import com.dotmarketing.factories.InodeFactory;
19 import com.dotmarketing.factories.PermissionFactory;
20 import com.dotmarketing.factories.WebAssetFactory;
21 import com.dotmarketing.menubuilders.RefreshMenus;
22 import com.dotmarketing.portlets.contentlet.model.Contentlet;
23 import com.dotmarketing.portlets.folders.model.Folder;
24 import com.dotmarketing.portlets.htmlpages.model.HTMLPage;
25 import com.dotmarketing.portlets.templates.model.Template;
26 import com.dotmarketing.services.PageServices;
27 import com.dotmarketing.util.Config;
28 import com.dotmarketing.util.Logger;
29 import com.dotmarketing.util.WebKeys;
30 import com.liferay.portal.model.Role;
31 import com.liferay.portal.model.User;
32 import com.liferay.portal.struts.ActionException;
33
34 /**
35  *
36  * @author will
37  */

38 public class HTMLPageFactory {
39
40     public static java.util.List JavaDoc getChildrenHTMLPageByOrder(Inode i) {
41         
42         return InodeFactory.getChildrenClassByOrder(i, HTMLPage.class, "sort_order");
43
44     }
45
46     public static java.util.List JavaDoc getActiveHTMLPages() {
47         DotHibernate dh = new DotHibernate(HTMLPage.class);
48         dh.setQuery("from inode in class com.dotmarketing.portlets.htmlpages.model.HTMLPage");
49         return dh.list();
50     }
51
52     public static java.util.List JavaDoc getHTMLPagesByOrderAndParent(String JavaDoc orderby, Inode i) {
53
54         return InodeFactory.getChildrenClassByOrder(i, HTMLPage.class, orderby);
55
56     }
57
58     public static java.util.List JavaDoc getHTMLPagesByOrder(String JavaDoc orderby) {
59         
60         DotHibernate dh = new DotHibernate(HTMLPage.class);
61         dh.setQuery(
62             "from inode in class com.dotmarketing.portlets.htmlpages.model.HTMLPage where working = " + com.dotmarketing.db.DbConnectionFactory.getDBTrue() + " or live = " + com.dotmarketing.db.DbConnectionFactory.getDBTrue() + " order by "
63                 + orderby);
64
65         return dh.list();
66     }
67
68     public static java.util.List JavaDoc getHTMLPageChildrenByCondition(Inode i, String JavaDoc condition) {
69         return InodeFactory.getChildrenClassByConditionAndOrderBy(i, HTMLPage.class, condition, "page_url, sort_order");
70     }
71     
72     
73     public static java.util.List JavaDoc getHTMLPageByCondition(String JavaDoc condition) {
74         DotHibernate dh = new DotHibernate(HTMLPage.class);
75         dh.setQuery("from inode in class com.dotmarketing.portlets.htmlpages.model.HTMLPage where " + condition + " order by page_url, sort_order");
76         return dh.list();
77     }
78
79
80     public static HTMLPage getLiveHTMLPageByPath(String JavaDoc path, Host host){
81         return getLiveHTMLPageByPath (path, host.getInode());
82     }
83     
84     public static HTMLPage getLiveHTMLPageByPath(String JavaDoc path, long hostId){
85         Identifier id = IdentifierFactory.getIdentifierByURI(path, hostId);
86
87         Logger.debug(HTMLPageFactory.class, "Looking for page : " + path);
88         Logger.debug(HTMLPageFactory.class, "got id " + id.getInode());
89         
90         //if this page does not exist, create it, add it to the course folder, use the course template, etc...
91
if(id.getInode() == 0){
92             return new HTMLPage();
93         }
94         
95         return (HTMLPage) IdentifierFactory.getLiveChildOfClass(id, HTMLPage.class);
96         
97     }
98
99     public static java.util.List JavaDoc getLiveHTMLPages() {
100         DotHibernate dh = new DotHibernate(HTMLPage.class);
101         dh.setQuery(
102             "from inode in class com.dotmarketing.portlets.htmlpages.model.HTMLPage where live = " + com.dotmarketing.db.DbConnectionFactory.getDBTrue() + " and deleted = " + com.dotmarketing.db.DbConnectionFactory.getDBFalse());
103         return dh.list();
104     }
105
106     public static java.util.List JavaDoc getWorkingHTMLPages() {
107         DotHibernate dh = new DotHibernate(HTMLPage.class);
108         dh.setQuery(
109             "from inode in class com.dotmarketing.portlets.htmlpages.model.HTMLPage where working = " + com.dotmarketing.db.DbConnectionFactory.getDBTrue() + " and deleted = " + com.dotmarketing.db.DbConnectionFactory.getDBFalse());
110         return dh.list();
111     }
112
113     public static java.util.List JavaDoc getHTMLPageChildren(Inode i) {
114         
115         
116         return InodeFactory.getChildrenClassByOrder(i, HTMLPage.class, "inode, sort_order");
117         
118         
119
120     }
121
122     public static Template getHTMLPageTemplate(Inode i) {
123         
124         return (Template) InodeFactory.getParentOfClassByCondition(i, Template.class, "(live=" + com.dotmarketing.db.DbConnectionFactory.getDBTrue() + " or working=" + com.dotmarketing.db.DbConnectionFactory.getDBTrue() + ")");
125
126     }
127
128     public static Template getHTMLPageTemplate(Inode i, boolean previewMode) {
129
130         if (previewMode) {
131             return (Template) InodeFactory.getParentOfClassByCondition(i, Template.class, "working=" + com.dotmarketing.db.DbConnectionFactory.getDBTrue() + " and deleted = " + com.dotmarketing.db.DbConnectionFactory.getDBFalse() );
132
133         }
134         else {
135             return (Template) InodeFactory.getParentOfClassByCondition(i, Template.class, "live=" + com.dotmarketing.db.DbConnectionFactory.getDBTrue() + " and deleted = " + com.dotmarketing.db.DbConnectionFactory.getDBFalse() );
136         }
137
138     }
139
140     public static Template getWorkingNotLiveHTMLPageTemplate(Inode i) {
141         return (Template) InodeFactory.getParentOfClassByCondition(i, Template.class, "working=" + com.dotmarketing.db.DbConnectionFactory.getDBTrue() + " and live=" + com.dotmarketing.db.DbConnectionFactory.getDBFalse());
142
143     }
144
145     public static HTMLPage getHTMLPageByLiveAndFolderAndTitle(Inode parent, String JavaDoc title) {
146
147         return (HTMLPage) InodeFactory.getChildOfClassbyCondition(parent, HTMLPage.class, "title = '" + title + "' and live = " + com.dotmarketing.db.DbConnectionFactory.getDBTrue());
148
149
150     }
151
152     public static void deleteChildren(HTMLPage parent, Class JavaDoc c) {
153         InodeFactory.deleteChildrenOfClass(parent, c);
154     }
155
156     public static java.util.List JavaDoc getHTMLPagesPerRoleAndCondition(Host host, Role[] roles, String JavaDoc condition) {
157         return getHTMLPagesPerRoleAndCondition(host.getInode(), roles, condition);
158     }
159     
160     public static java.util.List JavaDoc getHTMLPagesPerRoleAndCondition(long hostId, Role[] roles, String JavaDoc condition) {
161
162         java.util.List JavaDoc entries = new java.util.ArrayList JavaDoc();
163         java.util.List JavaDoc folders =
164             com.dotmarketing.portlets.folders.factories.FolderFactory.getFoldersByParent(hostId);
165         return com.dotmarketing.portlets.folders.factories.FolderFactory.getFoldersAndEntriesByRoles(
166             folders,
167             entries,
168             roles,
169             HTMLPage.class,
170             condition);
171
172     }
173
174     public static java.util.List JavaDoc getHTMLPagesPerRole(Host host, Role[] roles) {
175         return getHTMLPagesPerRole (host.getInode(), roles);
176     }
177     
178     public static java.util.List JavaDoc getHTMLPagesPerRole(long hostId, Role[] roles) {
179         java.util.List JavaDoc entries = new java.util.ArrayList JavaDoc();
180         java.util.List JavaDoc folders =
181             com.dotmarketing.portlets.folders.factories.FolderFactory.getFoldersByParent(hostId);
182         return com.dotmarketing.portlets.folders.factories.FolderFactory.getFoldersAndEntriesByRoles(
183             folders,
184             entries,
185             roles,
186             HTMLPage.class);
187     }
188     
189     public static java.util.List JavaDoc getHTMLPagesAndPermissionsPerRoleAndCondition(Host host, Role[] roles, String JavaDoc condition, int limit, int offset, String JavaDoc orderby, long template) {
190         return getHTMLPagesAndPermissionsPerRoleAndCondition (host.getInode(), roles, condition, limit, offset, orderby, template);
191     }
192
193     public static java.util.List JavaDoc getHTMLPagesAndPermissionsPerRoleAndCondition(long hostId, Role[] roles, String JavaDoc condition, int limit, int offset, String JavaDoc orderby, long template) {
194     
195         java.util.List JavaDoc<PermissionAsset> entries = new java.util.ArrayList JavaDoc<PermissionAsset>();
196         orderby = "htmlpage." + orderby;
197         java.util.List JavaDoc elements = WebAssetFactory.getAssetsPerConditionWithPermission(hostId, condition, HTMLPage.class, roles, limit, offset, orderby, template);
198         java.util.Iterator JavaDoc elementsIter = elements.iterator();
199
200         while (elementsIter.hasNext()) {
201
202             HTMLPage htmlpage = (HTMLPage) elementsIter.next();
203             Folder folderParent = (Folder) InodeFactory.getParentOfClass(htmlpage,Folder.class);
204             
205             java.util.List JavaDoc permissions = PermissionCache.getPermissionIdsByRolesFromCache(htmlpage,roles);
206
207             PermissionAsset permAsset = new PermissionAsset();
208             permAsset.setPathToMe(folderParent.getPath());
209             permAsset.setPermissions(permissions);
210             permAsset.setAsset(htmlpage);
211             entries.add(permAsset);
212         }
213         
214         return entries;
215     }
216     
217     public static java.util.List JavaDoc getHTMLPagesAndPermissionsPerRoleAndCondition(Role[] roles, String JavaDoc condition, int limit, int offset, String JavaDoc orderby, long template) {
218
219         java.util.List JavaDoc<PermissionAsset> entries = new java.util.ArrayList JavaDoc<PermissionAsset>();
220         orderby = "htmlpage." + orderby;
221         java.util.List JavaDoc elements = WebAssetFactory.getAssetsPerConditionWithPermission(condition, HTMLPage.class, roles, limit, offset, orderby, template);
222         java.util.Iterator JavaDoc elementsIter = elements.iterator();
223
224         while (elementsIter.hasNext()) {
225
226             HTMLPage htmlpage = (HTMLPage) elementsIter.next();
227             Folder folderParent = (Folder) InodeFactory.getParentOfClass(htmlpage,Folder.class);
228
229             java.util.List JavaDoc permissions = PermissionCache.getPermissionIdsByRolesFromCache(htmlpage,roles);
230
231             PermissionAsset permAsset = new PermissionAsset();
232             permAsset.setPathToMe(folderParent.getPath());
233             permAsset.setPermissions(permissions);
234             permAsset.setAsset(htmlpage);
235             entries.add(permAsset);
236         }
237         
238         return entries;
239     }
240
241     public static boolean existsPageName(Inode parent, String JavaDoc pageName) {
242         HTMLPage page = (HTMLPage) InodeFactory.getChildOfClassbyCondition(parent, HTMLPage.class, "page_url like '" + pageName + "'");
243         Logger.debug(HTMLPageFactory.class, "existsFileName=" + page.getInode());
244         return (page.getInode() > 0);
245     }
246
247     
248     public static int getNumberOfContainersPerContenlet(HTMLPage htmlPage, Contentlet contentlet){
249         
250         DotConnect dc = new DotConnect();
251         StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
252         sb.append("select count(*) mycount ");
253         sb.append("from tree tree1, tree tree2, tree tree3, tree tree4, template template, identifier identifier, containers containers ");
254         sb.append("where tree1.child = ? ");
255         sb.append("and tree1.parent = template.inode ");
256         sb.append("and template.working = 't' ");
257         sb.append("and template.inode = tree2.parent ");
258         sb.append("and tree2.child = identifier.inode ");
259         sb.append("and identifier.inode = tree3.parent ");
260         sb.append("and tree3.child = containers.inode ");
261         sb.append("and containers.working = 't' ");
262         sb.append("and containers.inode = tree4.parent ");
263         sb.append("and tree4.child = ?");
264         
265         dc.setSQL(sb.toString());
266         dc.addParam(htmlPage.getInode());
267         dc.addParam(contentlet.getInode());
268         
269         int count = dc.getInt("mycount");
270         
271         return count;
272     }
273     
274     
275
276     
277     public static HTMLPage getWorkingHTMLPageByPath(String JavaDoc path, Host host){
278         return getWorkingHTMLPageByPath (path, host.getInode());
279     }
280     
281     public static HTMLPage getWorkingHTMLPageByPath(String JavaDoc path, long hostId){
282         Identifier id = IdentifierFactory.getIdentifierByURI(path, hostId);
283
284         Logger.debug(HTMLPageFactory.class, "Looking for page : " + path);
285         Logger.debug(HTMLPageFactory.class, "got id " + id.getInode());
286         
287         //if this page does not exist, create it, add it to the course folder, use the course template, etc...
288
if(id.getInode() == 0){
289             return new HTMLPage();
290         }
291         
292         return (HTMLPage) IdentifierFactory.getWorkingChildOfClass(id, HTMLPage.class);
293
294         
295         
296     }
297     
298     
299     public static Template getTemplate(HTMLPage htmlpage) {
300         // to get the pages template
301
Template template = (Template) InodeFactory.getParentOfClass(htmlpage, Template.class);
302         com.dotmarketing.beans.Identifier identifier = IdentifierFactory.getParentIdentifier(template);
303         // gets the current working asset
304
Template htmlTemplate = (Template) IdentifierFactory.getWorkingChildOfClass(identifier,Template.class);
305         return htmlTemplate;
306     }
307     
308     /**
309      * Method used to move an htmlpage to a different folder
310      * @param currentHTMLPage
311      * @param parent
312      * @return
313      */

314     public static boolean moveHTMLPage (HTMLPage currentHTMLPage, Folder parent) {
315     
316
317         Identifier identifier = com.dotmarketing.factories.IdentifierFactory
318                 .getParentIdentifier(currentHTMLPage);
319
320         //gets working container
321
HTMLPage workingWebAsset = (HTMLPage) IdentifierFactory
322                 .getWorkingChildOfClass(identifier, HTMLPage.class);
323         //gets live container
324
HTMLPage liveWebAsset = (HTMLPage) IdentifierFactory
325                 .getLiveChildOfClass(identifier, HTMLPage.class);
326
327
328         if (HTMLPageFactory.existsPageName(parent, workingWebAsset.getPageUrl())) {
329             return false;
330         }
331
332         //moving folders
333
Folder oldParent = (Folder) InodeFactory.getParentOfClass(workingWebAsset, Folder.class);
334         oldParent.deleteChild(workingWebAsset);
335         if ((liveWebAsset != null) && (liveWebAsset.getInode() > 0)) {
336             oldParent.deleteChild(liveWebAsset);
337         }
338
339         parent.addChild(workingWebAsset);
340         if ((liveWebAsset != null) && (liveWebAsset.getInode() > 0)) {
341             parent.addChild(liveWebAsset);
342         }
343
344         //updating caches
345
WorkingCache.removeAssetFromCache(workingWebAsset);
346         IdentifierCache.removeAssetFromIdCache(workingWebAsset);
347
348         if ((liveWebAsset!=null) && (liveWebAsset.getInode()>0)) {
349             LiveCache.removeAssetFromCache(liveWebAsset);
350         }
351
352         //gets identifier for this webasset and changes the uri and
353
// persists it
354
Host newHost = HostFactory.getParentHost(parent);
355         identifier.setHostInode(newHost.getInode());
356         identifier.setURI(workingWebAsset.getURI(parent));
357         InodeFactory.saveInode(identifier);
358
359         //Add to Preview and Live Cache
360
if ((liveWebAsset!=null) && (liveWebAsset.getInode()>0)) {
361             LiveCache.addToLiveAssetToCache(liveWebAsset);
362         }
363         WorkingCache.addToWorkingAssetToCache(workingWebAsset);
364         IdentifierCache.addAssetToIdentifierCache(workingWebAsset);
365
366         //republishes the page to reset the VTL_SERVLETURI variable
367
if ((liveWebAsset!=null) && (liveWebAsset.getInode()>0)) {
368             PageServices.publishPageToFile(liveWebAsset);
369         }
370
371         //Wipe out menues
372
RefreshMenus.deleteMenus();
373         
374         return true;
375     
376     }
377     
378     public static HTMLPage copyHTMLPage (HTMLPage currentHTMLPage, Folder parent) {
379         
380         if (!currentHTMLPage.isWorking()) {
381             Identifier id = IdentifierFactory.getIdentifierByInode(currentHTMLPage);
382             currentHTMLPage = (HTMLPage) IdentifierFactory.getWorkingChildOfClass(id, HTMLPage.class);
383         }
384         Folder currentParentFolder = (Folder) InodeFactory.getParentOfClass(currentHTMLPage, Folder.class);
385         
386         Logger.debug(HTMLPageFactory.class, "Copying HTMLPage: " + currentHTMLPage.getURI(currentParentFolder) + " to: " + parent.getPath());
387
388         //gets the new information for the template from the request object
389
HTMLPage newHTMLPage = new HTMLPage();
390
391         newHTMLPage.copy(currentHTMLPage);
392         newHTMLPage.setLocked(false);
393         newHTMLPage.setLive(false);
394
395         //gets page url before extension
396
String JavaDoc pageURL = com.dotmarketing.util.UtilMethods
397                 .getFileName(currentHTMLPage.getPageUrl());
398         //gets file extension
399
String JavaDoc fileExtension = com.dotmarketing.util.UtilMethods
400                 .getFileExtension(currentHTMLPage.getPageUrl());
401         if (HTMLPageFactory.existsPageName(parent, currentHTMLPage.getPageUrl())) {
402             //adds copy to the filename
403
newHTMLPage.setPageUrl(pageURL + "_copy." + fileExtension);
404             newHTMLPage.setFriendlyName(currentHTMLPage.getFriendlyName() + " (COPY) ");
405         } else {
406             newHTMLPage.setPageUrl(pageURL + "." + fileExtension);
407             newHTMLPage.setFriendlyName(currentHTMLPage.getFriendlyName());
408         }
409
410         //persists the webasset
411
InodeFactory.saveInode(newHTMLPage);
412
413         //Add the new page to the folder
414
parent.addChild(newHTMLPage);
415
416         //creates new identifier for this webasset and persists it
417
com.dotmarketing.factories.IdentifierFactory
418                 .createNewIdentifier(newHTMLPage, parent);
419
420         //gets current template from html page
421
java.util.List JavaDoc templateParents = InodeFactory.getParentsOfClass(
422                 currentHTMLPage, Template.class);
423         java.util.Iterator JavaDoc templateParentsIter = templateParents.iterator();
424         while (templateParentsIter.hasNext()) {
425             Template templateParent = (Template) templateParentsIter.next();
426             //saves the version html page as child of template
427
templateParent.addChild(newHTMLPage);
428         }
429
430         WorkingCache.addToWorkingAssetToCache(newHTMLPage);
431         LiveCache.addToLiveAssetToCache(newHTMLPage);
432
433         //Copy permissions
434
PermissionFactory.copyPermissions(currentHTMLPage, newHTMLPage);
435         
436         return newHTMLPage;
437     }
438     
439     
440     public static boolean renameHTMLPage (HTMLPage page, String JavaDoc newName, User user) throws Exception JavaDoc {
441
442         // Checking permissions
443
if (!PermissionFactory.doesUserHavePermission(page, Config.getIntProperty("PERMISSION_WRITE"), user))
444             throw new ActionException(WebKeys.USER_PERMISSIONS_EXCEPTION);
445
446         //getting old file properties
447
Folder folder = (Folder)InodeFactory.getParentOfClass(page, Folder.class);
448         Host host = HostFactory.getParentHost(folder);
449         
450         Identifier ident = IdentifierFactory.getIdentifierByInode(page);
451
452         HTMLPage tempPage = new HTMLPage();
453         tempPage.copy(page);
454         // sets filename for this new file
455
tempPage.setPageUrl(newName + ".dot");
456         tempPage.setFriendlyName(newName + ".dot");
457
458         Identifier testIdentifier = (Identifier) IdentifierFactory
459             .getIdentifierByURI(tempPage.getURI(folder), host);
460
461         if(testIdentifier.getInode() > 0 || page.isLocked())
462             return false;
463
464         List JavaDoc<HTMLPage> versions = IdentifierFactory.getVersionsandLiveandWorkingChildrenOfClass(ident, HTMLPage.class);
465         
466         for (HTMLPage version : versions) {
467
468             // sets filename for this new file
469
version.setPageUrl(newName + ".dot");
470             version.setFriendlyName(newName + ".dot");
471
472             if (version.isLive())
473                 LiveCache.addToLiveAssetToCache(version);
474             if (version.isWorking())
475                 WorkingCache.addToWorkingAssetToCache(version);
476                 
477             InodeFactory.saveInode(version);
478
479         }
480         
481         ident.setURI(page.getURI(folder));
482         InodeFactory.saveInode(ident);
483         
484         RefreshMenus.deleteMenus();
485
486         return true;
487
488     }
489     
490 }
491
Popular Tags