1 package com.sslexplorer.setup.forms; 2 3 import javax.servlet.http.HttpServletRequest ; 4 5 import org.apache.commons.logging.Log; 6 import org.apache.commons.logging.LogFactory; 7 import org.apache.struts.Globals; 8 import org.apache.struts.action.ActionErrors; 9 import org.apache.struts.action.ActionMapping; 10 import org.apache.struts.action.ActionMessage; 11 12 import com.sslexplorer.boot.PropertyList; 13 import com.sslexplorer.core.UserDatabaseManager; 14 import com.sslexplorer.core.forms.CoreForm; 15 import com.sslexplorer.input.MultiSelectDataSource; 16 import com.sslexplorer.input.MultiSelectSelectionModel; 17 import com.sslexplorer.policyframework.PolicyDataSource; 18 import com.sslexplorer.policyframework.PolicyDatabaseFactory; 19 import com.sslexplorer.security.LogonControllerFactory; 20 import com.sslexplorer.security.SessionInfo; 21 import com.sslexplorer.security.User; 22 import com.sslexplorer.security.UserNotFoundException; 23 import com.sslexplorer.tabs.TabModel; 24 25 public class MessageForm extends CoreForm implements TabModel { 26 final static Log log = LogFactory.getLog(MessageForm.class); 27 private PropertyList selectedAccounts; 28 private PropertyList selectedRoles; 29 private PropertyList selectedPolicies; 30 private MultiSelectDataSource selectedPolicyDataSource; 31 private MultiSelectSelectionModel selectedPolicySelection; 32 private String subject; 33 private String content; 34 private boolean urgent; 35 private User sender; 36 private String selectedTab = "message"; 37 private String selectedSink; 38 39 public MessageForm() { 40 super(); 41 selectedAccounts = new PropertyList(); 42 selectedRoles = new PropertyList(); 43 selectedPolicies = new PropertyList(); 44 selectedPolicyDataSource = new PolicyDataSource(); 45 } 46 47 public String getSelectedSink() { 48 return selectedSink; 49 } 50 51 public void setSelectedSink(String selectedSink) { 52 this.selectedSink = selectedSink; 53 } 54 55 public String getContent() { 56 return content; 57 } 58 59 public void setContent(String content) { 60 this.content = content; 61 } 62 63 public String getSubject() { 64 return subject; 65 } 66 67 public void setSubject(String subject) { 68 this.subject = subject == null ? subject : subject.trim(); 69 } 70 71 public boolean getUrgent() { 72 return urgent; 73 } 74 75 public void setUrgent(boolean urgent) { 76 this.urgent = urgent; 77 } 78 79 public String getSelectedPolicies() { 80 return selectedPolicies.getAsTextFieldText(); 81 } 82 83 public String getSelectedAccounts() { 84 return selectedAccounts.getAsTextFieldText(); 85 } 86 87 public void setSelectedAccounts(String selectedAccounts) { 88 this.selectedAccounts.setAsTextFieldText(selectedAccounts); 89 } 90 91 public String getSelectedRoles() { 92 return selectedRoles.getAsTextFieldText(); 93 } 94 95 public void setSelectedRoles(String selectedRoles) { 96 this.selectedRoles.setAsTextFieldText(selectedRoles); 97 } 98 99 public void setSelectedPolicies(String selectedPolicies) { 100 this.selectedPolicies.setAsTextFieldText(selectedPolicies); 101 } 102 103 public MultiSelectSelectionModel getSelectedPolicySelectionModel() { 104 return selectedPolicySelection; 105 } 106 107 public void setSelectedAccounts(PropertyList selectedAccounts) { 108 this.selectedAccounts = selectedAccounts; 109 } 110 111 public void setSelectedRoles(PropertyList selectedRoles) { 112 this.selectedRoles = selectedRoles; 113 } 114 115 public PropertyList getSelectedPoliciesList() { 116 return selectedPolicies; 117 } 118 119 public PropertyList getSelectedAccountsList() { 120 return selectedAccounts; 121 } 122 123 public PropertyList getSelectedRolesList() { 124 return selectedRoles; 125 } 126 127 public User getSender() { 128 return sender; 129 } 130 131 public void initialise(MultiSelectSelectionModel selectedPolicySelection, PropertyList selectedPolicies, SessionInfo session) 132 throws Exception { 133 this.selectedPolicySelection = selectedPolicySelection; 134 this.selectedPolicies = selectedPolicies; 135 selectedAccounts = new PropertyList(); 136 selectedRoles = new PropertyList(); 137 if (selectedPolicySelection == null) 138 selectedPolicySelection = new MultiSelectSelectionModel(session, selectedPolicyDataSource, selectedPolicies); 139 selectedPolicySelection.rebuild(session); 140 this.sender = session.getUser(); 141 } 142 143 public void reset(ActionMapping mapping, HttpServletRequest request) { 144 super.reset(mapping, request); 145 urgent = false; 146 } 147 148 public int getTabCount() { 149 return 2; 150 } 151 152 public String getTabName(int idx) { 153 switch (idx) { 154 case 0: 155 return "message"; 156 default: 157 return "recipients"; 158 } 159 } 160 161 public String getTabTitle(int idx) { 162 163 return null; 165 } 166 167 public String getSelectedTab() { 168 return selectedTab; 169 } 170 171 public void setSelectedTab(String selectedTab) { 172 this.selectedTab = selectedTab; 173 } 174 175 public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { 176 ActionErrors errs = new ActionErrors(); 177 if (isCommiting()) { 178 if (isEmpty(getSubject())) { 179 errs.add(Globals.ERROR_KEY, new ActionMessage("sendMessage.error.noSubject")); 180 } 181 if (getSelectedAccountsList().size() == 0 && getSelectedRolesList().size() == 0 182 && getSelectedPoliciesList().size() == 0) { 183 errs.add(Globals.ERROR_KEY, new ActionMessage("sendMessage.error.noRecipients")); 184 } 185 186 try { 188 for (String account : getSelectedAccountsList()) { 189 try { 190 UserDatabaseManager.getInstance().getDefaultUserDatabase().getAccount(account); 191 } catch (UserNotFoundException unfe) { 192 errs.add(Globals.ERROR_KEY, new ActionMessage("sendMessage.error.invalidAccount", account)); 193 } 194 } 195 196 for (String role : getSelectedRolesList()) { 198 try { 199 UserDatabaseManager.getInstance().getDefaultUserDatabase().getRole(role); 200 } catch (Exception e) { 201 errs.add(Globals.ERROR_KEY, new ActionMessage("sendMessage.error.invalidRole", role)); 202 } 203 } 204 205 for (String policy : getSelectedPoliciesList()) { 207 if (PolicyDatabaseFactory.getInstance().getPolicyByName(policy, 208 LogonControllerFactory.getInstance().getSessionInfo(request).getUser().getRealm().getResourceId()) == null) { 209 errs.add(Globals.ERROR_KEY, new ActionMessage("sendMessage.error.invalidPolicy", policy)); 210 } 211 } 212 } catch (Exception e) { 213 errs.add(Globals.ERROR_KEY, new ActionMessage("sendMessage.error.failedToValidate", e.getMessage())); 214 log.error("Failed to validate.", e); 215 } 216 } 217 return errs; 218 219 } 220 221 226 public String getTabBundle(int idx) { 227 return null; 228 } 229 } 230 | Popular Tags |