1 19 20 package com.sslexplorer.applications.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.ApplicationShortcut; 39 import com.sslexplorer.boot.PropertyDefinition; 40 import com.sslexplorer.boot.PropertyList; 41 import com.sslexplorer.extensions.ApplicationParameterDefinition; 42 import com.sslexplorer.extensions.ExtensionDescriptor; 43 import com.sslexplorer.extensions.ShortcutParameterItem; 44 import com.sslexplorer.extensions.store.ExtensionStore; 45 import com.sslexplorer.input.MultiSelectSelectionModel; 46 import com.sslexplorer.policyframework.Resource; 47 import com.sslexplorer.policyframework.forms.AbstractFavoriteResourceForm; 48 import com.sslexplorer.security.User; 49 50 57 public class ApplicationShortcutForm extends AbstractFavoriteResourceForm { 58 static Log log = LogFactory.getLog(ApplicationShortcutForm.class); 59 60 62 private String selectedTab = "details"; 63 private List <ShortcutParameterItem> parameterItems; 64 private List <String > categories; 65 private List <String > categoryTitles; 66 private Locale locale; 67 68 74 public List getParameterItems() { 75 return parameterItems; 76 } 77 78 86 public ShortcutParameterItem getParameterItem(int idx) { 87 return (ShortcutParameterItem) parameterItems.get(idx); 88 } 89 90 95 public List getCategories() { 96 return categories; 97 } 98 99 105 public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { 106 ActionErrors errors = super.validate(mapping, request); 107 if (isCommiting()) { 108 for (Iterator i = parameterItems.iterator(); i.hasNext();) { 109 ShortcutParameterItem item = (ShortcutParameterItem) i.next(); 110 try { 111 ActionMessage err = item.validateItem(); 112 if (err != null) { 113 if (errors == null) { 114 errors = new ActionErrors(); 115 } 116 errors.add(Globals.ERROR_KEY, err); 117 } 118 } catch (Exception e) { 119 log.error("Failed to validate.", e); 120 if (errors == null) { 121 errors = new ActionErrors(); 122 } 123 errors.add(Globals.ERROR_KEY, new ActionMessage("editApplicationShortcut.error.failedToValidate", e.getMessage())); 124 } 125 } 126 } 127 return errors; 128 } 129 130 136 public void reset(ActionMapping mapping, HttpServletRequest request) { 137 super.reset(mapping, request); 138 if (parameterItems != null) { 139 for (Iterator i = parameterItems.iterator(); i.hasNext();) { 140 ShortcutParameterItem item = (ShortcutParameterItem) i.next(); 141 if (item.getDefinition().getType() == PropertyDefinition.TYPE_BOOLEAN) { 142 item.setValue(Boolean.FALSE.toString()); 143 } else if (item.getDefinition().getType() == PropertyDefinition.TYPE_LIST) { 144 item.setValue(item.getDefinition().getDefaultValue()); 145 } 146 } 147 } 148 } 149 150 155 public int getTabCount() { 156 return 2 + (categories == null ? 0 : categories.size()); 157 } 158 159 164 public String getTabName(int idx) { 165 switch (idx) { 166 case 0: 167 return "details"; 168 case 1: 169 return "policies"; 170 default: 171 return (String ) categories.get(idx - 2); 172 } 173 } 174 175 180 public String getTabTitle(int idx) { 181 return idx < 2 || ((String ) categoryTitles.get(idx - 2)).equals("") ? null : (String ) categoryTitles.get(idx - 2); 182 } 183 184 192 public void initialise(User user, Resource resource, boolean editing, MultiSelectSelectionModel policyModel, 193 PropertyList selectedPolicies, User owner, boolean assignOnly) throws Exception { 194 super.initialise(user, resource, editing, policyModel, selectedPolicies, owner, assignOnly); 195 196 parameterItems = new ArrayList <ShortcutParameterItem>(); 198 199 ExtensionDescriptor des = ExtensionStore.getInstance() 202 .getExtensionDescriptor(((ApplicationShortcut) resource).getApplication()); 203 if (des == null) { 204 throw new Exception ("No descriptor named " + ((ApplicationShortcut) resource).getApplication()); 205 } 206 207 for (Iterator i = des.getParametersAndDefaults().entrySet().iterator(); i.hasNext();) { 208 Map.Entry entry = (Map.Entry ) i.next(); 209 ApplicationParameterDefinition def = (ApplicationParameterDefinition) entry.getValue(); 210 if (!def.isHidden()) { 211 try { 212 String value = (String ) ((ApplicationShortcut) resource).getParameters().get(def.getName()); 213 if (value == null) { 214 value = def.getDefaultValue(); 215 } 216 ShortcutParameterItem item = new ShortcutParameterItem(des, def, value, locale); 217 if (log.isDebugEnabled()) 218 log.debug("Adding item " + item.getName()); 219 parameterItems.add(item); 220 } catch (Exception e) { 221 log.warn("Failed to create shortcut parameter for " + def.getName() 222 + ". Probably a problem with the extension descriptor.", e); 223 } 224 } 225 } 226 Collections.sort(parameterItems); 227 228 categories = new ArrayList <String >(); 231 categoryTitles = new ArrayList <String >(); 232 for (Iterator i = parameterItems.iterator(); i.hasNext();) { 233 ShortcutParameterItem spi = (ShortcutParameterItem) i.next(); 234 String category = String.valueOf(spi.getCategory()); 235 if (!categories.contains(category)) { 236 categories.add(category); 237 categoryTitles.add(spi.getLocalisedCategory()); 238 } 239 240 } 241 } 242 243 248 public String getSelectedTab() { 249 return selectedTab; 250 } 251 252 257 public void setSelectedTab(String selectedTab) { 258 this.selectedTab = selectedTab; 259 } 260 261 266 @SuppressWarnings ("unchecked") 267 public void applyToResource() throws Exception { 268 ApplicationShortcut as = (ApplicationShortcut) getResource(); 269 Map <String , String > parameterMap = as.getParameters(); 270 parameterMap.clear(); 271 for (Iterator i = getParameterItems().iterator(); i.hasNext();) { 272 ShortcutParameterItem pi = (ShortcutParameterItem) i.next(); 273 parameterMap.put(pi.getName(), pi.getPropertyValue().toString()); 274 } 275 } 276 277 282 public String getTabBundle(int idx) { 283 return null; 284 } 285 286 293 public void setLocale(Locale locale) { 294 this.locale = locale; 295 } 296 } | Popular Tags |