View Javadoc

1   package com.germinus.merlin.util;
2   
3   import java.util.Iterator;
4   import java.util.Set;
5   
6   import javax.portlet.RenderRequest;
7   import javax.portlet.RenderResponse;
8   
9   import org.apache.commons.logging.Log;
10  import org.apache.commons.logging.LogFactory;
11  
12  import com.germinus.liferay.util.ILiferayUtil;
13  import com.germinus.merlin.manager.layout.ILayoutManager;
14  import com.germinus.merlin.manager.layout.ILayoutManagerFactory;
15  import com.germinus.merlin.model.Course;
16  import com.germinus.merlin.model.Page;
17  import com.germinus.merlin.page.PagePortletConfiguration;
18  import com.liferay.portal.security.auth.PrincipalException;
19  
20  public class PagesUtil implements IPagesUtil {
21  
22  	private ILiferayUtil liferayUtil;
23  
24  	private ILayoutManagerFactory layoutManagerFactory;
25  	
26  	private static final Log log = LogFactory.getLog(PagesUtil.class);
27  
28  	public PagesUtil() {
29  		
30  	}
31  
32  	/* (non-Javadoc)
33  	 * @see com.germinus.merlin.util.IPagesUtil#getBlogPage(com.germinus.merlin.model.Page, javax.portlet.RenderRequest, javax.portlet.RenderResponse)
34  	 */
35  	public String getBlogPage(Page page, RenderRequest request,
36  			RenderResponse response) {
37  		String pageUrl = page.getBlogPageUrl();
38  
39  		ILayoutManager layoutManager = layoutManagerFactory.
40  			getLayoutManager(ILayoutManagerFactory.BLOG);
41  		
42  		pageUrl  = getURLPage(pageUrl, request, response, layoutManager,
43  				layoutManager.getPageProperties());
44  		
45  		return pageUrl;
46  	}
47  
48  	/* (non-Javadoc)
49  	 * @see com.germinus.merlin.util.IPagesUtil#getDocumentPage(com.germinus.merlin.model.Page, javax.portlet.RenderRequest, javax.portlet.RenderResponse)
50  	 */
51  	public String getDocumentPage(Page page, RenderRequest request,
52  			RenderResponse response) {
53  		String pageUrl = page.getDocumentPageUrl();
54  
55  		ILayoutManager layoutManager =layoutManagerFactory
56  			.getLayoutManager(ILayoutManagerFactory.DOCUMENT);
57  	
58  		pageUrl = getURLPage(pageUrl, request, response,layoutManager,
59  				layoutManager.getPageProperties());
60  		
61  		return pageUrl;
62  	}
63  
64  	/* (non-Javadoc)
65  	 * @see com.germinus.merlin.util.IPagesUtil#getForumPage(com.germinus.merlin.model.Page, javax.portlet.RenderRequest, javax.portlet.RenderResponse)
66  	 */
67  	public String getForumPage(Page page, RenderRequest request,
68  			RenderResponse response) {
69  		String pageUrl = page.getForumPageUrl();
70  		
71  		ILayoutManager layoutManager =layoutManagerFactory
72  			.getLayoutManager(ILayoutManagerFactory.FORUM);
73  		
74  		pageUrl = getURLPage(pageUrl, request, response, layoutManager,
75  				layoutManager.getPageProperties());
76  		
77  		return pageUrl;
78  	}
79  
80  	public Page getPage(Course course, long plidAntecesor) {
81  		Set<Page> pages = course.getPages();
82  
83  		// search the page with the value plidAntecesor in the
84  		// ancestorLayoutPlid atribute
85  
86  		for (Iterator<Page> i = pages.iterator(); i.hasNext();) {
87  
88  			Page page = i.next();
89  
90  			if (page.getAncestorLayoutPlid() == plidAntecesor) {
91  				// blogPage found
92  				return page;
93  			}
94  		}
95  
96  		// page not found, create new page
97  		return new Page(0, course, plidAntecesor, "", "");
98  	}
99  
100 	/* (non-Javadoc)
101 	 * @see com.germinus.merlin.util.IPagesUtil#getURLPage(java.lang.String, javax.portlet.RenderRequest, javax.portlet.RenderResponse, com.germinus.merlin.manager.layout.ILayoutManager, com.germinus.merlin.page.PagePortletConfiguration)
102 	 */
103 	public String getURLPage(String url, RenderRequest request,
104 			RenderResponse response, ILayoutManager layoutManager,
105 			PagePortletConfiguration pageProperties) {
106 		
107 		String pageUrl = url;
108 
109 		if (url == null || url.equals("")) {
110 
111 			long pageId = 0;
112 
113 			try {
114 				pageId = layoutManager.addSubPage(request, response, 
115 						pageProperties);
116 
117 				// build the forum page url
118 				pageUrl = "/web/"
119 						+ liferayUtil.getComunityGroupId(request,
120 								response) + "/" + Long.toString(pageId);
121 				
122 			} catch (PrincipalException e){
123 				// no authentication
124 				log.error("Error adding new page: user not authentication");
125 				pageUrl = "";
126 			} catch (Exception e){
127 				log.error(e.getStackTrace());
128 			}
129 		}
130 		return pageUrl;
131 	}
132 
133 	/* (non-Javadoc)
134 	 * @see com.germinus.merlin.util.IPagesUtil#pageAdded(com.germinus.merlin.model.Course, long)
135 	 */
136 	public boolean pageAdded(Course course, long plidAntecesor) {
137 		Set<Page> pages = course.getPages();
138 
139 		// search the page with the value plidAntecesor in the
140 		// ancestorLayoutPlid atribute
141 		for (Iterator<Page> i = pages.iterator(); i.hasNext();) {
142 
143 			Page page = i.next();
144 
145 			if (page.getAncestorLayoutPlid() == plidAntecesor) {
146 				// page found
147 				return true;
148 			}
149 		}
150 		// page not found
151 		return false;
152 	}
153 
154 	/**
155 	 * @return the liferayUtil
156 	 */
157 	public ILiferayUtil getLiferayUtil() {
158 		return liferayUtil;
159 	}
160 
161 	/**
162 	 * @param liferayUtil the liferayUtil to set
163 	 */
164 	public void setLiferayUtil(ILiferayUtil liferayUtil) {
165 		this.liferayUtil = liferayUtil;
166 	}
167 
168 	/**
169 	 * @return the layoutManagerFactory
170 	 */
171 	public ILayoutManagerFactory getLayoutManagerFactory() {
172 		return layoutManagerFactory;
173 	}
174 
175 	/**
176 	 * @param layoutManagerFactory the layoutManagerFactory to set
177 	 */
178 	public void setLayoutManagerFactory(ILayoutManagerFactory layoutManagerFactory) {
179 		this.layoutManagerFactory = layoutManagerFactory;
180 	}
181 	
182 	public boolean urlPageEmpty(Page page)
183 	{
184 		if(page.getBlogPageUrl() != "" || page.getForumPageUrl() != "" || page.getDocumentPageUrl() != "")
185 		{
186 			return false;
187 		}else
188 		{
189 			return true;
190 		}
191 	}
192 }