KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > dotmarketing > portlets > product > action > RelateProductAction


1 /*
2  * Created on 19/10/2004
3  *
4  */

5 package com.dotmarketing.portlets.product.action;
6
7 import java.net.URLDecoder JavaDoc;
8 import java.util.List JavaDoc;
9
10 import javax.portlet.ActionRequest;
11 import javax.portlet.ActionResponse;
12 import javax.portlet.PortletConfig;
13 import javax.servlet.http.HttpServletRequest JavaDoc;
14
15 import org.apache.commons.beanutils.BeanUtils;
16 import org.apache.struts.action.ActionForm;
17 import org.apache.struts.action.ActionMapping;
18
19 import com.dotmarketing.db.DotHibernate;
20 import com.dotmarketing.factories.InodeFactory;
21 import com.dotmarketing.portal.struts.DotPortletAction;
22 import com.dotmarketing.util.Logger;
23 import com.dotmarketing.util.UtilMethods;
24 import com.dotmarketing.util.WebKeys;
25 import com.liferay.portal.model.User;
26 import com.liferay.portal.struts.ActionException;
27 import com.liferay.portal.util.Constants;
28 import com.liferay.portlet.ActionRequestImpl;
29 import com.liferay.util.servlet.SessionMessages;
30 import com.dotmarketing.portlets.product.factories.ProductFactory;
31 import com.dotmarketing.portlets.product.model.Product;
32 import com.dotmarketing.portlets.product.struts.ProductForm;
33
34
35 /**
36  * @author Salvador Di Nardo
37  *
38  */

39 public class RelateProductAction extends DotPortletAction {
40     
41     public static boolean debug = false;
42     
43     public void processAction(
44              ActionMapping mapping, ActionForm form, PortletConfig config,
45              ActionRequest req, ActionResponse res)
46          throws Exception JavaDoc {
47         Logger.debug(this,"START RELATED PRODUCT ACTION");
48         String JavaDoc cmd = ((req.getParameter(Constants.CMD)!=null)? req.getParameter(Constants.CMD) : "");
49         String JavaDoc referrer = req.getParameter("referrer");
50
51         if ((referrer!=null) && (referrer.length()!=0))
52         {
53             referrer = URLDecoder.decode(referrer,"UTF-8");
54         }
55
56         DotHibernate.startTransaction();
57         User user = _getUser(req);
58         
59         try {
60             _retrieveProduct(req, res, config, form, user);
61
62         } catch (ActionException ae) {
63             _handleException(ae, req);
64         }
65         /*
66          * Save the format occurrence
67          */

68         if ((cmd != null) && cmd.equals(Constants.SAVE)) {
69             try {
70                     _saveRelatedProducts(req, res, config, form, user);
71                     _sendToReferral(req,res,referrer);
72             } catch (ActionException ae) {
73                 _handleException(ae, req);
74             }
75         }
76         /*
77          * If we are deleting the event,
78          * run the delete action and return to the list
79          *
80          */

81         else if ((cmd != null) && cmd.equals(Constants.DELETE))
82         {
83             try {
84                 _deleteRelatedProduct(req, res, config, form, user);
85                 _sendToReferral(req,res,referrer);
86             } catch (ActionException ae) {
87                 _handleException(ae, req);
88             }
89         }
90         else if ((cmd != null) && cmd.equals(Constants.CANCEL))
91         {
92             _sendToReferral(req,res,referrer);
93         }
94         DotHibernate.commitTransaction();
95         _loadForm(req,res,config,form,user);
96         setForward(req, "portlet.ext.product.related_product");
97         Logger.debug(this,"END RELATED PRODUCT ACTION");
98     }
99
100
101     ///// ************** ALL METHODS HERE *************************** ////////
102
private void _retrieveProduct(ActionRequest req, ActionResponse res,PortletConfig config,ActionForm form, User user)
103     throws Exception JavaDoc {
104
105         String JavaDoc inode = (req.getParameter("inode") != null) ? req.getParameter("inode") : "0";
106         Product product = null;
107         product = ProductFactory.getProduct(inode);
108         req.setAttribute(WebKeys.PRODUCT_PRODUCT,product);
109     }
110
111     private void _saveRelatedProducts(ActionRequest req, ActionResponse res,PortletConfig config,ActionForm form, User user)
112     throws Exception JavaDoc {
113         ProductForm productForm = (ProductForm) form;
114         Product product = (Product) req.getAttribute(WebKeys.PRODUCT_PRODUCT);
115         
116         //Delete the old related entries;
117
List JavaDoc<Product> relatedProducts = InodeFactory.getChildrenOfClassByRelationType(product,Product.class,WebKeys.PRODUCT_RELATED);
118         for(Product relatedProduct:relatedProducts)
119         {
120             product.deleteChild(relatedProduct,WebKeys.PRODUCT_RELATED);
121         }
122                 
123         String JavaDoc[] relatedProductsInodes = productForm.getRelatedProducts();
124         if (relatedProductsInodes != null)
125         {
126             for(String JavaDoc relatedProductInode : relatedProductsInodes)
127             {
128                 if(UtilMethods.isLong(relatedProductInode))
129                 {
130                     Product relatedProduct = ProductFactory.getProduct(relatedProductInode);
131                     product.addChild(relatedProduct,WebKeys.PRODUCT_RELATED);
132                 }
133             }
134         }
135                             
136         //add message
137
//wraps request to get session object
138
ActionRequestImpl reqImpl = (ActionRequestImpl) req;
139         HttpServletRequest JavaDoc httpReq = reqImpl.getHttpServletRequest();
140         
141         SessionMessages.add(httpReq, "message", "message.product.product.related");
142     }
143     
144     private void _deleteRelatedProduct(ActionRequest req, ActionResponse res,PortletConfig config,ActionForm form, User user)
145     throws Exception JavaDoc
146     {
147         Product product = (Product) req.getAttribute(WebKeys.PRODUCT_PRODUCT);
148         String JavaDoc relatedProductInode = req.getParameter("relatedProductInode");
149         if(UtilMethods.isLong(relatedProductInode))
150         {
151             Product relatedProduct = ProductFactory.getProduct(relatedProductInode);
152             product.deleteChild(relatedProduct,WebKeys.PRODUCT_RELATED);
153         }
154
155         //add message
156
//wraps request to get session object
157
ActionRequestImpl reqImpl = (ActionRequestImpl) req;
158         HttpServletRequest JavaDoc httpReq = reqImpl.getHttpServletRequest();
159         
160         SessionMessages.add(httpReq, "message", "message.product.product.relationdeleted");
161     }
162     
163     private void _loadForm(ActionRequest req, ActionResponse res,PortletConfig config,ActionForm form, User user)
164     {
165         ProductForm productForm = (ProductForm) form;
166         Product product = (Product) req.getAttribute(WebKeys.PRODUCT_PRODUCT);
167         try
168         {
169             BeanUtils.copyProperties(productForm,product);
170         }
171         catch(Exception JavaDoc ex)
172         {
173             Logger.debug(this,ex.toString());
174         }
175         
176         //Load All Products
177
List JavaDoc<Product> listProducts = ProductFactory.getAllProducts();
178         productForm.setProducts(listProducts);
179         //Load the related products
180
List JavaDoc<Product> relatedProducts = InodeFactory.getChildrenClassByRelationType(product,Product.class,WebKeys.PRODUCT_RELATED);
181         String JavaDoc[] relatedProductsInodes = new String JavaDoc[relatedProducts.size()];
182         for(int i = 0; i < relatedProducts.size();i++)
183         {
184             relatedProductsInodes[i] = Long.toString(((Product) relatedProducts.get(i)).getInode());
185         }
186         productForm.setRelatedProducts(relatedProductsInodes);
187     }
188 }
189
190
Popular Tags