1 19 20 package com.sslexplorer.setup.actions; 21 22 import java.util.Iterator ; 23 24 import javax.servlet.http.HttpServletRequest ; 25 import javax.servlet.http.HttpServletResponse ; 26 27 import org.apache.commons.logging.Log; 28 import org.apache.commons.logging.LogFactory; 29 import org.apache.struts.action.ActionForm; 30 import org.apache.struts.action.ActionForward; 31 import org.apache.struts.action.ActionMapping; 32 33 import com.sslexplorer.boot.PropertyList; 34 import com.sslexplorer.core.CoreServlet; 35 import com.sslexplorer.core.CoreUtil; 36 import com.sslexplorer.core.actions.AuthenticatedDispatchAction; 37 import com.sslexplorer.input.MultiSelectDataSource; 38 import com.sslexplorer.input.MultiSelectSelectionModel; 39 import com.sslexplorer.notification.Message; 40 import com.sslexplorer.notification.Recipient; 41 import com.sslexplorer.policyframework.Permission; 42 import com.sslexplorer.policyframework.PolicyConstants; 43 import com.sslexplorer.policyframework.PolicyDataSource; 44 import com.sslexplorer.policyframework.PolicyDatabaseFactory; 45 import com.sslexplorer.realms.Realm; 46 import com.sslexplorer.security.LogonControllerFactory; 47 import com.sslexplorer.security.SessionInfo; 48 import com.sslexplorer.setup.forms.MessageForm; 49 50 public class SendMessageDispatchAction extends AuthenticatedDispatchAction { 51 public SendMessageDispatchAction() { 52 super(PolicyConstants.MESSAGE_QUEUE_RESOURCE_TYPE, 53 new Permission[] { PolicyConstants.PERM_SEND }); 54 } 55 56 final static Log log = LogFactory.getLog(SendMessageDispatchAction.class); 57 58 public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) 59 throws Exception { 60 MessageForm mf = (MessageForm)form; 61 mf.setReferer(CoreUtil.getReferer(request)); 62 PropertyList selectedPolicies = new PropertyList(); 63 MultiSelectDataSource policies = new PolicyDataSource(); 64 SessionInfo session = LogonControllerFactory.getInstance().getSessionInfo(request); 65 MultiSelectSelectionModel policyModel = new MultiSelectSelectionModel(session, policies, selectedPolicies); 66 mf.initialise(policyModel, selectedPolicies, getSessionInfo(request)); 67 String users = request.getParameter("users"); 68 if(users != null) { 69 if(users.equals("*")) { 70 mf.setSelectedPolicies(String.valueOf(PolicyDatabaseFactory.getInstance().getEveryonePolicyIDForRealm( 71 getSessionInfo(request).getUser().getRealm()))); 72 policyModel.rebuild(session); 73 } 74 else { 75 mf.setSelectedAccounts(users); 76 } 77 } 78 return mapping.findForward("display"); 79 } 80 81 public ActionForward commit(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) 82 throws Exception { 83 MessageForm mf = (MessageForm)form; 84 Realm realm = getSessionInfo(request).getUser().getRealm(); 85 Message msg = new Message(mf.getSubject(), mf.getContent(), mf.getUrgent()); 86 for(Iterator i = mf.getSelectedAccountsList().iterator(); i.hasNext(); ) { 87 msg.getRecipients().add(new Recipient(Recipient.USER, (String )i.next(), realm.getResourceName())); 88 } 89 for(Iterator i = mf.getSelectedRolesList().iterator(); i.hasNext(); ) { 90 msg.getRecipients().add(new Recipient(Recipient.ROLE, (String )i.next(), realm.getResourceName())); 91 } 92 for(Iterator i = mf.getSelectedPoliciesList().iterator(); i.hasNext(); ) { 93 msg.getRecipients().add(new Recipient(Recipient.POLICY, (String )i.next(), realm.getResourceName())); 94 } 95 if(msg.getRecipients().size() == 0) { 96 throw new Exception ("No recipients in any of the accounts, roles or policies selected."); 97 } 98 if(mf.getSelectedSink().equals("*")) { 99 CoreServlet.getServlet().getNotifier().sendToAll(msg); 100 } 101 else if(mf.getSelectedSink().equals("^")) { 102 CoreServlet.getServlet().getNotifier().sendToFirst(msg); 103 } 104 else { 105 CoreServlet.getServlet().getNotifier().sendToSink(mf.getSelectedSink(), msg); 106 } 107 return cancel(mapping, form, request, response); 108 } 109 110 public int getNavigationContext(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { 111 return SessionInfo.MANAGEMENT_CONSOLE_CONTEXT; 112 } 113 } | Popular Tags |