[Castore-commits] BaseCastorePortlet.java 1.1 1.2
PortletConstants.java 1.1 1.2
Arnaud Thimel
thimel at adullact1.hosting.cri74.org
Ven 16 Juin 19:00:28 CEST 2006
Update of /cvsroot/castore/castore-portlets/src/java/fr/emn/castor/portlets
In directory adullact1:/tmp/cvs-serv4156/src/java/fr/emn/castor/portlets
Modified Files:
BaseCastorePortlet.java PortletConstants.java
Log Message:
- Portlets de recherche (partiellement)
- utilisation de renderURL a la pace de actionURL + portlet:param
- regroupement des messages dans BaseCastorePortlet
- ajout d'un include de pages JSP commun aux portlets dans BaseCastorePortlet
Index: PortletConstants.java
===================================================================
RCS file: /cvsroot/castore/castore-portlets/src/java/fr/emn/castor/portlets/PortletConstants.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** PortletConstants.java 14 Jun 2006 18:27:59 -0000 1.1
--- PortletConstants.java 16 Jun 2006 17:00:25 -0000 1.2
***************
*** 83,87 ****
* Espace de nommage pour les pages de soumission
*/
! public static final String NS_SOUMISSION = FOLDER_PREFIX + "soumission/";
/**
--- 83,87 ----
* Espace de nommage pour les pages de soumission
*/
! public static final String NS_SOUMISSION = FOLDER_PREFIX + "submit/";
/**
Index: BaseCastorePortlet.java
===================================================================
RCS file: /cvsroot/castore/castore-portlets/src/java/fr/emn/castor/portlets/BaseCastorePortlet.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** BaseCastorePortlet.java 14 Jun 2006 18:27:59 -0000 1.1
--- BaseCastorePortlet.java 16 Jun 2006 17:00:25 -0000 1.2
***************
*** 40,44 ****
--- 40,49 ----
package fr.emn.castor.portlets;
+ import static fr.emn.castor.portlets.PortletConstants.MIME_HTML;
+
import java.io.IOException;
+ import java.util.ArrayList;
+ import java.util.Arrays;
+ import java.util.List;
import javax.portlet.ActionRequest;
***************
*** 47,50 ****
--- 52,56 ----
import javax.portlet.PortletException;
import javax.portlet.PortletRequest;
+ import javax.portlet.PortletRequestDispatcher;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
***************
*** 66,69 ****
--- 72,77 ----
public abstract class BaseCastorePortlet extends GenericPortlet {
+ private static String contextName;
+
/**
* Renvoie l'instance de la facade de Documents
***************
*** 164,166 ****
--- 172,271 ----
}
+ /**
+ * Meme chose que
+ * {@link #include(RenderRequest, RenderResponse, String, String)} avec un
+ * type MIME en HTML
+ * @see #include(RenderRequest, RenderResponse, String, String)
+ */
+ protected void include(RenderRequest request, RenderResponse response,
+ String page) throws PortletException, IOException {
+ //Le type mime par defaut est HTML
+ include(request, response, page, MIME_HTML);
+ }
+
+ /**
+ * Cette methode inclut dans la reponse le contenu de la page JSP specifiee
+ * @param request la requete courante
+ * @param response la response en cours de construction
+ * @param page le chemin de la page jsp a inclure
+ * @param contentType le contenttype retourne
+ * @throws PortletException
+ * @throws IOException
+ */
+ protected void include(RenderRequest request, RenderResponse response,
+ String page, String contentType)
+ throws PortletException, IOException {
+ log("[" + contentType + "] include '" + page + "'");
+
+ request.setAttribute("context", getContextName());
+
+ List<String> messages = (List<String>)request.getAttribute("_messages");
+ if (messages == null) {
+ messages = getParameterMessages(request, "_messages");
+ }
+ if (!messages.isEmpty()) {
+ request.removeAttribute("_messages");
+ request.setAttribute("messages", messages);
+ }
+ List<String> errors = (List<String>)request.getAttribute("_errors");
+ if (errors == null) {
+ errors = getParameterMessages(request, "_errors");
+ }
+ if (!errors.isEmpty()) {
+ request.removeAttribute("_errors");
+ request.setAttribute("errormessages", errors);
+ }
+
+ response.setContentType(contentType);
+ PortletRequestDispatcher dispatcher;
+ dispatcher = getPortletContext().getRequestDispatcher(page);
+ dispatcher.include(request, response);
+ }
+
+ private List<String> getParameterMessages(RenderRequest request, String messageType) {
+ List<String> messages;
+ //premier ajout de message, on va chercher les messages dans les parameters
+ String messagesParam = request.getParameter(messageType);
+ if (messagesParam != null && !"".equals(messagesParam)) {
+ messages = Arrays.asList(messagesParam.split(","));
+ } else {
+ messages = new ArrayList<String>();
+ }
+ return messages;
+ }
+
+ /**
+ * Renvoie le contexte de la portlet
+ * @return contextName
+ */
+ protected String getContextName() {
+ if (contextName == null) {
+ contextName = "/" + getPortletContext().getPortletContextName();
+ }
+ return contextName;
+ }
+
+ protected void forwardToRender(ActionRequest request,
+ ActionResponse response, String parameterName) {
+ String param = request.getParameter(parameterName);
+ response.setRenderParameter(parameterName, param);
+ }
+
+ protected void addError(RenderRequest request, String errorId) {
+ addMessage(request, errorId, "_errors");
+ }
+
+ protected void addMessage(RenderRequest request, String messageId) {
+ addMessage(request, messageId, "_messages");
+ }
+
+ private void addMessage(RenderRequest request, String messageId, String messageType) {
+ List<String> messages = (List<String>)request.getAttribute(messageType);
+ if (messages == null) {
+ messages = getParameterMessages(request, messageType);
+ }
+ messages.add(messageId);
+ request.setAttribute(messageType, messages);
+ }
+
} //BaseCastorePortlet
Plus d'informations sur la liste de diffusion Castore-commits