| 1 19 20 package com.sslexplorer.applications.wizards.forms; 21 22 import java.util.ArrayList ; 23 import java.util.Collections ; 24 import java.util.Iterator ; 25 import java.util.List ; 26 import java.util.Locale ; 27 import java.util.Map ; 28 29 import javax.servlet.http.HttpServletRequest ; 30 31 import org.apache.commons.logging.Log; 32 import org.apache.commons.logging.LogFactory; 33 import org.apache.struts.Globals; 34 import org.apache.struts.action.ActionErrors; 35 import org.apache.struts.action.ActionMapping; 36 import org.apache.struts.action.ActionMessage; 37 38 import com.sslexplorer.applications.ApplicationsPlugin; 39 import com.sslexplorer.boot.PropertyDefinition; 40 import com.sslexplorer.extensions.ApplicationParameterDefinition; 41 import com.sslexplorer.extensions.ExtensionDescriptor; 42 import com.sslexplorer.extensions.ShortcutParameterItem; 43 import com.sslexplorer.extensions.store.ExtensionStore; 44 import com.sslexplorer.tabs.TabModel; 45 import com.sslexplorer.wizard.AbstractWizardSequence; 46 import com.sslexplorer.wizard.forms.DefaultWizardForm; 47 48 58 public class ApplicationShortcutWizardAdditionalDetailsForm extends DefaultWizardForm implements TabModel { 59 60 final static Log log = LogFactory.getLog(ApplicationShortcutWizardAdditionalDetailsForm.class); 61 62 65 public final static String ATTR_PARAMETERS = "parameters"; 66 68 private List <ShortcutParameterItem> parameterItems; 69 private List <String > categories; 70 private List <String > categoryTitles; 71 private String selectedTab; 72 73 76 public ApplicationShortcutWizardAdditionalDetailsForm() { 77 super(true, 78 true, 79 "/WEB-INF/jsp/content/applications/applicationShortcutWizard/additionalDetails.jspf", 80 "resourceName", 81 true, 82 false, 83 "applicationShortcutAdditionalDetails", 84 ApplicationsPlugin.MESSAGE_RESOURCES_KEY, 85 "applicationShortcutWizard.applicationShortcutAdditionalDetails", 86 3); 87 } 88 89 95 public List getParameterItems() { 96 return parameterItems; 97 } 98 99 107 public ShortcutParameterItem getParameterItem(int idx) { 108 return (ShortcutParameterItem) parameterItems.get(idx); 109 } 110 111 116 public List getCategories() { 117 return categories; 118 } 119 120 126 @SuppressWarnings ("unchecked") 127 public void init(AbstractWizardSequence wizardSequence, HttpServletRequest request) throws Exception { 128 super.init(wizardSequence, request); 129 130 parameterItems = (List <ShortcutParameterItem>) wizardSequence.getAttribute(ATTR_PARAMETERS, null); 132 133 ExtensionDescriptor des = ExtensionStore.getInstance() 136 .getExtensionDescriptor((String ) wizardSequence.getAttribute(ApplicationShortcutWizardApplicationForm.ATTR_SELECTED_APPLICATION, 137 null)); 138 if (parameterItems == null) { 139 parameterItems = new ArrayList <ShortcutParameterItem>(); 140 for (Iterator i = des.getParametersAndDefaults().entrySet().iterator(); i.hasNext();) { 141 Map.Entry entry = (Map.Entry ) i.next(); 142 ApplicationParameterDefinition def = (ApplicationParameterDefinition) entry.getValue(); 143 if (!def.isHidden()) { 144 ShortcutParameterItem item = new ShortcutParameterItem(des, 145 def, 146 def.getDefaultValue().equals(PropertyDefinition.UNDEFINED_PARAMETER) ? "" 147 : def.getDefaultValue(), 148 (Locale ) request.getSession().getAttribute(Globals.LOCALE_KEY)); 149 if (log.isDebugEnabled()) 150 log.debug("Adding item " + item.getName()); 151 parameterItems.add(item); 152 } 153 } 154 Collections.sort(parameterItems); 155 156 categories = new ArrayList <String >(); 159 categoryTitles = new ArrayList <String >(); 160 for (Iterator i = parameterItems.iterator(); i.hasNext();) { 161 ShortcutParameterItem spi = (ShortcutParameterItem) i.next(); 162 String category = String.valueOf(spi.getCategory()); 163 if (!categories.contains(category)) { 164 categories.add(category); 165 categoryTitles.add(spi.getLocalisedCategory()); 166 } 167 168 } 169 } 170 } 171 172 178 public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { 179 ActionErrors errors = null; 180 if (isCommiting()) { 181 for (Iterator i = parameterItems.iterator(); i.hasNext();) { 182 ShortcutParameterItem item = (ShortcutParameterItem) i.next(); 183 try { 184 ActionMessage err = item.validateItem(); 185 if (err != null) { 186 if (errors == null) { 187 errors = new ActionErrors(); 188 } 189 errors.add(Globals.ERROR_KEY, err); 190 } 191 } catch (Exception e) { 192 log.error("Failed to validate.", e); 193 if (errors == null) { 194 errors = new ActionErrors(); 195 } 196 errors.add(Globals.ERROR_KEY, new ActionMessage("editApplicationShortcut.error.failedToValidate", e.getMessage())); 197 } 198 } 199 } 200 return errors; 201 } 202 203 209 public void reset(ActionMapping mapping, javax.servlet.http.HttpServletRequest request) { 210 if (parameterItems != null) { 211 for (Iterator i = parameterItems.iterator(); i.hasNext();) { 212 ShortcutParameterItem item = (ShortcutParameterItem) i.next(); 213 if (item.getDefinition().getType() == PropertyDefinition.TYPE_BOOLEAN) { 214 item.setValue(Boolean.FALSE.toString()); 215 } else if (item.getDefinition().getType() == PropertyDefinition.TYPE_LIST) { 216 item.setValue(item.getDefinition().getDefaultValue()); 217 } 218 } 219 } 220 } 221 222 227 public int getTabCount() { 228 return categories.size(); 229 } 230 231 236 public String getTabName(int idx) { 237 return (String ) categories.get(idx); 238 } 239 240 245 public String getTabTitle(int idx) { 246 String title = (String ) categoryTitles.get(idx); 247 return title.equals("") ? null : title; 248 } 249 250 255 public String getSelectedTab() { 256 return selectedTab; 257 } 258 259 264 public void setSelectedTab(String selectedTab) { 265 this.selectedTab = selectedTab; 266 } 267 268 public void apply(AbstractWizardSequence sequence) throws Exception { 269 super.apply(sequence); 270 sequence.putAttribute(ATTR_PARAMETERS, parameterItems); 271 } 272 273 278 public String getTabBundle(int idx) { 279 return null; 280 } 281 } 282 | Popular Tags |