1 19 20 package com.sslexplorer.policyframework.forms; 21 22 import java.util.Iterator ; 23 24 import javax.servlet.http.HttpServletRequest ; 25 26 import org.apache.struts.Globals; 27 import org.apache.struts.action.ActionErrors; 28 import org.apache.struts.action.ActionMapping; 29 30 import com.sslexplorer.boot.PropertyList; 31 import com.sslexplorer.core.BundleActionMessage; 32 import com.sslexplorer.input.MultiSelectDataSource; 33 import com.sslexplorer.input.MultiSelectSelectionModel; 34 import com.sslexplorer.security.LogonControllerFactory; 35 import com.sslexplorer.security.SessionInfo; 36 import com.sslexplorer.wizard.AbstractWizardSequence; 37 import com.sslexplorer.wizard.forms.DefaultWizardForm; 38 39 public abstract class AbstractWizardPolicySelectionForm extends DefaultWizardForm { 40 41 42 private MultiSelectSelectionModel policyModel; 43 private PropertyList selectedPolicies; 44 45 public final static String ATTR_SELECTED_POLICIES = "selectedPolicies"; 47 48 public AbstractWizardPolicySelectionForm(boolean nextAvailable, boolean previousAvailable, String page, String focussedField, boolean autoComplete, boolean finishAvailable, String pageName, String resourceBundle, String resourcePrefix, int stepIndex) { 49 super(nextAvailable, previousAvailable, page, focussedField, autoComplete, finishAvailable, pageName, resourceBundle, 50 resourcePrefix, stepIndex); 51 } 52 53 56 public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { 57 if(isCommiting()) { 58 if(selectedPolicies.size() == 0) { 59 ActionErrors errs = new ActionErrors(); 60 errs.add(Globals.ERROR_KEY, new BundleActionMessage(getResourceBundle(), getResourcePrefix() + ".error.noPoliciesSelected")); 61 return errs; 62 } 63 else { 64 67 for(Iterator i = selectedPolicies.iterator(); i.hasNext(); ) { 68 String pol = (String )i.next(); 69 if(!policyModel.contains(pol)) { 70 throw new Error ("User doesn't have permission to select the policy '" + pol + "', this shouldn't happen."); 71 } 72 } 73 } 74 } 75 return super.validate(mapping, request); 76 } 77 78 79 82 public String getSelectedPolicies() { 83 return selectedPolicies.getAsTextFieldText(); 84 } 85 86 89 public void setSelectedPolicies(String selectedPolicies) { 90 this.selectedPolicies.setAsTextFieldText(selectedPolicies); 91 } 92 93 96 public MultiSelectSelectionModel getPolicyModel() { 97 return policyModel; 98 } 99 100 103 public void apply(AbstractWizardSequence sequence) throws Exception { 104 super.apply(sequence); 105 sequence.putAttribute(getAttributeKey(), selectedPolicies); 106 } 107 108 111 public void setPolicyModel(MultiSelectSelectionModel policyModel) { 112 this.policyModel = policyModel; 113 } 114 115 118 public void reset(ActionMapping mapping, HttpServletRequest request) { 119 super.reset(mapping, request); 120 AbstractWizardSequence seq = getWizardSequence(request); 121 selectedPolicies = (PropertyList)seq.getAttribute(getAttributeKey(), new PropertyList()); 122 MultiSelectDataSource policies = createDatasource(mapping, request); 123 SessionInfo session = LogonControllerFactory.getInstance().getSessionInfo(request); 124 policyModel = new MultiSelectSelectionModel(session, policies, selectedPolicies); 125 } 126 127 public abstract MultiSelectDataSource createDatasource(ActionMapping mapping, HttpServletRequest request); 128 129 protected String getAttributeKey() { 130 return ATTR_SELECTED_POLICIES; 131 } 132 } 133 | Popular Tags |