1 16 package org.jmanage.webui.actions.config; 17 18 import org.jmanage.webui.actions.BaseAction; 19 import org.jmanage.webui.util.WebContext; 20 import org.jmanage.webui.util.Forwards; 21 import org.jmanage.webui.forms.ApplicationClusterForm; 22 import org.jmanage.core.config.ApplicationConfig; 23 import org.jmanage.core.config.ApplicationConfigManager; 24 import org.jmanage.core.config.ApplicationClusterConfig; 25 import org.jmanage.core.util.UserActivityLogger; 26 import org.jmanage.core.services.AccessController; 27 import org.jmanage.util.StringUtils; 28 import org.apache.struts.action.ActionForward; 29 import org.apache.struts.action.ActionMapping; 30 import org.apache.struts.action.ActionForm; 31 32 import javax.servlet.http.HttpServletRequest ; 33 import javax.servlet.http.HttpServletResponse ; 34 import java.util.List ; 35 import java.util.LinkedList ; 36 import java.util.Iterator ; 37 38 43 public class SaveApplicationClusterAction extends BaseAction { 44 45 47 public ActionForward execute(WebContext context, 48 ActionMapping mapping, 49 ActionForm actionForm, 50 HttpServletRequest request, 51 HttpServletResponse response) 52 throws Exception { 53 AccessController.checkAccess(context.getServiceContext(), ACL_ADD_APPLICATIONS); 54 ApplicationClusterForm clusterForm = (ApplicationClusterForm)actionForm; 55 String [] childAppIds = 56 StringUtils.csvToStringArray(clusterForm.getSelectedChildApplications()); 57 58 List newChildApplications = getNewChildApplications(childAppIds); 59 60 String applicationId = clusterForm.getApplicationId(); 61 if(applicationId != null){ 62 63 ApplicationClusterConfig clusterConfig = 64 (ApplicationClusterConfig) 65 ApplicationConfigManager.getApplicationConfig(applicationId); 66 assert clusterConfig != null; 67 clusterConfig.setName(clusterForm.getName()); 68 final List oldChildApplications = clusterConfig.getApplications(); 69 71 for(Iterator it=oldChildApplications.iterator();it.hasNext();){ 72 ApplicationConfig appConfig = (ApplicationConfig)it.next(); 73 if(!newChildApplications.contains(appConfig)){ 74 ApplicationConfigManager.addApplication(appConfig); 75 appConfig.setClusterConfig(null); 76 } 77 } 78 80 for(Iterator it=newChildApplications.iterator();it.hasNext();){ 81 ApplicationConfig appConfig = (ApplicationConfig)it.next(); 82 if(!oldChildApplications.contains(appConfig)){ 83 ApplicationConfigManager.deleteApplication(appConfig); 84 appConfig.setClusterConfig(clusterConfig); 85 } 86 } 87 clusterConfig.setApplications(newChildApplications); 88 ApplicationConfigManager.updateApplication(clusterConfig); 89 90 UserActivityLogger.getInstance().logActivity( 91 context.getUser().getUsername(), 92 "Updated application cluster "+ "\""+clusterConfig.getName()+"\""); 93 94 }else{ 95 96 ApplicationClusterConfig clusterConfig = 97 new ApplicationClusterConfig( 98 ApplicationConfig.getNextApplicationId(), 99 clusterForm.getName()); 100 for(Iterator it=newChildApplications.iterator();it.hasNext();){ 101 ApplicationConfig appConfig = (ApplicationConfig)it.next(); 102 appConfig.setClusterConfig(clusterConfig); 103 ApplicationConfigManager.deleteApplication(appConfig); 104 } 105 clusterConfig.setApplications(newChildApplications); 106 107 108 ApplicationConfigManager.addApplication(clusterConfig); 109 110 UserActivityLogger.getInstance().logActivity( 111 context.getUser().getUsername(), 112 "Added application cluster "+ "\""+clusterConfig.getName()+"\""); 113 } 114 115 return mapping.findForward(Forwards.SUCCESS); 116 } 117 118 private List getNewChildApplications(String [] childAppIds){ 119 120 List newChildApplications = new LinkedList (); 121 if(childAppIds != null){ 122 for(int i=0; i < childAppIds.length; i++){ 123 ApplicationConfig newChildApplication = 124 ApplicationConfigManager.getApplicationConfig(childAppIds[i]); 125 newChildApplications.add( 126 newChildApplication); 127 } 128 } 129 return newChildApplications; 130 } 131 } 132 | Popular Tags |