KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > dotmarketing > portlets > structure > action > EditRelationshipAction


1 package com.dotmarketing.portlets.structure.action;
2
3 import java.util.HashMap JavaDoc;
4 import java.util.List JavaDoc;
5 import java.util.Map JavaDoc;
6
7 import javax.portlet.ActionRequest;
8 import javax.portlet.ActionResponse;
9 import javax.portlet.PortletConfig;
10 import javax.portlet.WindowState;
11
12 import org.apache.commons.beanutils.BeanUtils;
13 import org.apache.struts.action.ActionForm;
14 import org.apache.struts.action.ActionMapping;
15
16 import com.dotmarketing.beans.Tree;
17 import com.dotmarketing.db.DotConnect;
18 import com.dotmarketing.db.DotHibernate;
19 import com.dotmarketing.factories.TreeFactory;
20 import com.dotmarketing.portal.struts.DotPortletAction;
21 import com.dotmarketing.portlets.structure.factories.RelationshipFactory;
22 import com.dotmarketing.portlets.structure.factories.StructureFactory;
23 import com.dotmarketing.portlets.structure.model.Relationship;
24 import com.dotmarketing.portlets.structure.struts.RelationshipForm;
25 import com.dotmarketing.util.Logger;
26 import com.dotmarketing.util.PortletURLUtil;
27 import com.dotmarketing.util.UtilMethods;
28 import com.dotmarketing.util.Validator;
29 import com.dotmarketing.util.WebKeys;
30 import com.liferay.portal.util.Constants;
31 import com.liferay.util.servlet.SessionMessages;
32
33 public class EditRelationshipAction extends DotPortletAction {
34     
35     public void processAction(
36             ActionMapping mapping, ActionForm form, PortletConfig config,
37             ActionRequest req, ActionResponse res)
38     throws Exception JavaDoc {
39         
40         String JavaDoc cmd = req.getParameter(Constants.CMD);
41         String JavaDoc referer = req.getParameter("referer");
42         if (!UtilMethods.isSet(referer)) {
43             Map JavaDoc<String JavaDoc, String JavaDoc[]> params = new HashMap JavaDoc<String JavaDoc, String JavaDoc[]> ();
44             params.put("struts_action", new String JavaDoc[] {"/ext/structure/view_relationships"});
45             referer = PortletURLUtil.getActionURL(req, WindowState.MAXIMIZED.toString(), params);
46         }
47         
48         //Retrive the field in the request
49
_retrieveRelationship(form,req,res);
50
51         DotHibernate.startTransaction();
52         
53         /*
54          * saving the field
55          */

56         if ((cmd != null) && cmd.equals(Constants.ADD)) {
57             try
58             {
59                 Logger.debug(this, "Calling Add/Edit Method");
60                 if (Validator.validate(req, form, mapping)) {
61                     if (_saveRelationship(form,req,res)) {
62                         _sendToReferral(req,res,referer);
63                         return;
64                     }
65                 }
66             }
67             catch (Exception JavaDoc ae)
68             {
69                 _handleException(ae, req);
70                 return;
71             }
72         }
73         /*
74          * If we are deleting the field,
75          * run the delete action and return to the list
76          *
77          */

78         else if ((cmd != null) && cmd.equals(Constants.DELETE))
79         {
80             try
81             {
82                 Logger.debug(this, "Calling Delete Method");
83                 _deleteRelationship(form,req,res);
84             }
85             catch (Exception JavaDoc ae)
86             {
87                 _handleException(ae, req);
88                 return;
89             }
90             if (UtilMethods.isSet(referer))
91                 _sendToReferral(req,res,referer);
92             else
93                 setForward(req, "portlet.ext.structure.view_relationships");
94             return;
95         }
96         DotHibernate.commitTransaction();
97         
98         //otherwise edit field
99
_loadForm(form, req, res);
100         setForward(req, "portlet.ext.structure.edit_relationship");
101     }
102     
103     private void _retrieveRelationship(ActionForm form,ActionRequest req, ActionResponse res)
104     {
105         Relationship relationship = new Relationship();
106         String JavaDoc inodeString = req.getParameter("inode");
107         if(UtilMethods.isSet(inodeString))
108         {
109             relationship = RelationshipFactory.getRelationshipByInode(inodeString);
110         }
111         else
112         {
113             relationship = new Relationship ();
114         }
115         
116         req.setAttribute(WebKeys.Relationship.RELATIONSHIP_EDIT,relationship);
117     }
118     
119     private void _loadForm(ActionForm form,ActionRequest req, ActionResponse res)
120     {
121         try
122         {
123             String JavaDoc cmd = req.getParameter(Constants.CMD);
124             if ((cmd == null) || !cmd.equals(Constants.ADD)) {
125                 RelationshipForm relationshipForm = (RelationshipForm) form;
126                 Relationship relationship = (Relationship) req.getAttribute(WebKeys.Relationship.RELATIONSHIP_EDIT);
127                         
128                 //Copy properties to the form
129
BeanUtils.copyProperties(relationshipForm, relationship);
130             }
131             
132             List JavaDoc structures = StructureFactory.getStructures();
133             req.setAttribute(WebKeys.Relationship.STRUCTURES_LIST, structures);
134         }
135         catch(Exception JavaDoc ex)
136         {
137             Logger.error(EditRelationshipAction.class,ex.toString(), ex);
138         }
139     }
140     
141     private boolean _saveRelationship(ActionForm form,ActionRequest req, ActionResponse res)
142     {
143         try
144         {
145             RelationshipForm relationshipForm = (RelationshipForm) form;
146             Relationship relationship = (Relationship) req.getAttribute(WebKeys.Relationship.RELATIONSHIP_EDIT);
147             
148             String JavaDoc relationshipTypeValue = relationshipForm.getParentRelationName().replaceAll("\\s", "_").replaceAll("[^a-zA-Z0-9\\_]", "") +
149                 "-" + relationshipForm.getChildRelationName().replaceAll("\\s", "_").replaceAll("[^a-zA-Z0-9\\_]", "");
150             
151             String JavaDoc lastRelationshipTypeValue = relationship.getRelationTypeValue();
152             
153             //Preserve old tree relationship if the relation name be changed
154
if (relationship.getInode() > 0 && !relationshipTypeValue.equals(lastRelationshipTypeValue)) {
155                 DotConnect dc = new DotConnect ();
156                 dc.setSQL("update tree set relation_type = '" + relationshipTypeValue +
157                         "' where relation_type = '" + lastRelationshipTypeValue + "'");
158                 dc.getResult();
159             }
160             
161             //Copy properties from the form
162
BeanUtils.copyProperties(relationship,relationshipForm);
163
164             if (!relationshipTypeValue.equals(relationship.getRelationTypeValue())) {
165                 Relationship oRel = RelationshipFactory.getRelationshipByRelationTypeValue(relationshipTypeValue);
166                 if (oRel.getInode() > 0 && oRel.getInode() != relationship.getInode()) {
167                     String JavaDoc message = "error.relationship.same.relation.exist";
168                     SessionMessages.add(req, "message",message);
169                     return false;
170                 }
171                     
172                 List JavaDoc<Tree> treesToUpdate = TreeFactory.getTreesByRelationType(relationshipForm.getRelationTypeValue());
173                 for (Tree theTree : treesToUpdate) {
174                     theTree.setRelationType(relationshipTypeValue);
175                 }
176                 relationship.setRelationTypeValue(relationshipTypeValue);
177             }
178
179             //saves this relationship
180
RelationshipFactory.saveRelationship(relationship);
181                     
182             String JavaDoc message = "message.relationship.saved";
183             SessionMessages.add(req, "message",message);
184             return true;
185         }
186         catch(Exception JavaDoc ex)
187         {
188             Logger.debug(EditRelationshipAction.class,ex.toString());
189         }
190         return false;
191     }
192     
193     private void _deleteRelationship(ActionForm form,ActionRequest req, ActionResponse res)
194     {
195         Relationship relationship = (Relationship) req.getAttribute(WebKeys.Relationship.RELATIONSHIP_EDIT);
196         
197         TreeFactory.deleteTreesByRelationType(relationship.getRelationTypeValue());
198         
199         RelationshipFactory.deleteRelationship(relationship);
200         
201         String JavaDoc message = "message.relationship.deleted";
202         SessionMessages.add(req, "message",message);
203     }
204     
205 }
206
Popular Tags