| 1 19 20 package com.sslexplorer.networkplaces.wizards.forms; 21 22 import javax.servlet.http.HttpServletRequest ; 23 24 import org.apache.commons.logging.Log; 25 import org.apache.commons.logging.LogFactory; 26 import org.apache.struts.Globals; 27 import org.apache.struts.action.ActionErrors; 28 import org.apache.struts.action.ActionMapping; 29 import org.apache.struts.action.ActionMessage; 30 31 import com.sslexplorer.boot.Util; 32 import com.sslexplorer.core.forms.AbstractResourceDetailsWizardForm; 33 import com.sslexplorer.input.validators.HostnameOrIPAddressValidator; 34 import com.sslexplorer.input.validators.HostnameOrIPAddressWithReplacementsValidator; 35 import com.sslexplorer.networkplaces.NetworkPlace; 36 import com.sslexplorer.networkplaces.NetworkPlacePlugin; 37 import com.sslexplorer.networkplaces.NetworkPlaceUtil; 38 import com.sslexplorer.networkplaces.NetworkPlaceVFSProvider; 39 import com.sslexplorer.policyframework.ResourceType; 40 import com.sslexplorer.vfs.DefaultVFSProvider; 41 import com.sslexplorer.vfs.VFSProvider; 42 import com.sslexplorer.vfs.VFSProviderManager; 43 import com.sslexplorer.wizard.AbstractWizardSequence; 44 45 public class NetworkPlaceDetailsForm extends AbstractResourceDetailsWizardForm { 46 47 50 public final static VFSProvider DEFAULT_PROVIDER = new DefaultVFSProvider("automatic", null, NetworkPlacePlugin.MESSAGE_RESOURCES_KEY); 51 52 public final static String ATTR_PROVIDER = "provider"; 53 public final static String ATTR_HOST = "host"; 54 public final static String ATTR_PATH = "path"; 55 public final static String ATTR_PORT = "port"; 56 public final static String ATTR_USERNAME = "username"; 57 public final static String ATTR_PASSWORD = "password"; 58 public final static String ATTR_READ_ONLY = "readOnly"; 59 public final static String ATTR_SHOW_HIDDEN = "showHidden"; 60 public final static String ATTR_ALLOW_RECURSIVE = "allowRecursive"; 61 public final static String ATTR_NO_DELETE = "noDelete"; 62 public final static String ATTR_SCHEME = "scheme"; 63 64 private String host; 65 private String path; 66 private int port; 67 private String username; 68 private String password; 69 private String scheme; 70 private String queryString; 71 private VFSProvider provider; 72 private boolean readOnly; 73 private boolean showHidden; 74 private boolean allowRecursive; 75 private boolean noDelete; 76 private boolean autoDetected; 77 78 final static Log log = LogFactory.getLog(NetworkPlaceDetailsForm.class); 79 80 public NetworkPlaceDetailsForm(boolean nextAvailable, boolean previousAvailable, String page, String focussedField, 81 boolean autoComplete, boolean finishAvailable, String pageName, String resourceBundle, 82 String resourcePrefix, int stepIndex, ResourceType resourceTypeForAccessRights) { 83 super(nextAvailable, 84 previousAvailable, 85 page, 86 focussedField, 87 autoComplete, 88 finishAvailable, 89 pageName, 90 resourceBundle, 91 resourcePrefix, 92 stepIndex, 93 resourceTypeForAccessRights); 94 } 95 96 public NetworkPlaceDetailsForm() { 97 101 super(true, 102 true, 103 "/WEB-INF/jsp/content/vfs/networkingWizard/networkPlaceDetails.jspf", 104 "scheme", 105 false, 106 false, 107 "networkPlaceDetails", 108 NetworkPlacePlugin.MESSAGE_RESOURCES_KEY, 109 "networkPlaceWizard.networkPlaceDetails", 110 2, 111 NetworkPlacePlugin.NETWORK_PLACE_RESOURCE_TYPE); 112 } 113 114 public void init(AbstractWizardSequence sequence, HttpServletRequest request) throws Exception { 115 super.init(sequence, request); 116 117 if(provider == null) { 118 provider = DEFAULT_PROVIDER; 119 } 120 121 path = (String ) sequence.getAttribute(ATTR_PATH, ""); 123 host = (String ) sequence.getAttribute(ATTR_HOST, ""); 124 username = (String ) sequence.getAttribute(ATTR_USERNAME, ""); 125 password = (String ) sequence.getAttribute(ATTR_PASSWORD, ""); 126 scheme = (String ) sequence.getAttribute(ATTR_SCHEME, provider.getScheme()); 127 queryString = ""; 128 readOnly = ((Boolean ) sequence.getAttribute(ATTR_READ_ONLY, Boolean.FALSE)).booleanValue(); 129 showHidden = ((Boolean ) sequence.getAttribute(ATTR_SHOW_HIDDEN, Boolean.FALSE)).booleanValue(); 130 allowRecursive = ((Boolean ) sequence.getAttribute(ATTR_ALLOW_RECURSIVE, Boolean.TRUE)).booleanValue(); 131 noDelete = ((Boolean ) sequence.getAttribute(ATTR_NO_DELETE, Boolean.FALSE)).booleanValue(); 132 } 133 134 public void apply(AbstractWizardSequence sequence) throws Exception { 135 super.apply(sequence); 136 sequence.putAttribute(ATTR_PROVIDER, provider); 137 sequence.putAttribute(ATTR_HOST, getHost()); 138 sequence.putAttribute(ATTR_PATH, getPath()); 139 sequence.putAttribute(ATTR_PORT, Integer.valueOf(getPort())); 140 sequence.putAttribute(ATTR_USERNAME, getUsername()); 141 sequence.putAttribute(ATTR_PASSWORD, getPassword()); 142 sequence.putAttribute(ATTR_SCHEME, getScheme()); 143 sequence.putAttribute(ATTR_READ_ONLY, new Boolean (readOnly)); 144 sequence.putAttribute(ATTR_SHOW_HIDDEN, new Boolean (showHidden)); 145 sequence.putAttribute(ATTR_ALLOW_RECURSIVE, new Boolean (allowRecursive)); 146 sequence.putAttribute(ATTR_NO_DELETE, new Boolean (noDelete)); 147 } 148 149 public String getPath() { 150 return path; 151 } 152 153 public void setPath(String path) { 154 this.path = path; 155 } 156 157 public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { 158 if (isCommiting()) { 159 ActionErrors errs = super.validate(mapping, request); 160 if (errs == null) 161 errs = new ActionErrors(); 162 163 try { 164 165 166 if(provider == DEFAULT_PROVIDER) { 167 168 170 if(Util.isNullOrTrimmedBlank(path)) { 171 errs.add(Globals.ERROR_KEY, new ActionMessage("networkPlaceWizard.networkPlaceDetails.error.noPath")); 172 return errs; 173 } 174 175 try { 176 NetworkPlace np = NetworkPlaceUtil.createNetworkPlaceForPath(path); 177 provider = VFSProviderManager.getInstance().getProvider(np.getScheme()); 178 if(provider == null) { 179 throw new Exception ("No provider " + np.getScheme()); 180 } 181 scheme = np.getScheme(); 182 host = np.getHost(); 183 port = Math.max(np.getPort(), 0); 184 path = np.getPath(); 185 username = np.getUsername(); 186 password = np.getPassword(); 187 autoDetected = true; 188 } 189 catch(Exception e) { 190 errs.add(Globals.ERROR_KEY, new ActionMessage("networkPlaceWizard.networkPlaceDetails.error.invalidUri", path)); 191 return errs; 192 } 193 changeProvider(provider); 194 } 195 196 if(provider == null) { 197 throw new Exception ("No provider."); 198 } 199 200 if(!(provider instanceof NetworkPlaceVFSProvider)) { 201 throw new Exception ("Must be a Network Place VFS provider."); 202 } 203 204 205 206 if(provider.getHostRequirement() == VFSProvider.ELEMENT_REQUIRED) { 207 String name = Util.trimmedOrBlank(host); 208 if("".equals(name)) { 209 errs.add(Globals.ERROR_KEY, new ActionMessage("networkPlaceWizard.networkPlaceDetails.error.noHost")); 210 } 211 else { 212 217 if(!HostnameOrIPAddressWithReplacementsValidator.isValidAsHostOrIp(name)) { 218 errs.add(Globals.ERROR_KEY, new ActionMessage("networkPlaceWizard.networkPlaceDetails.error.invalidHost")); 219 } 220 } 221 } 222 223 if(provider.getPortRequirement() == VFSProvider.ELEMENT_REQUIRED && 224 port == 0) { 225 errs.add(Globals.ERROR_KEY, new ActionMessage("networkPlaceWizard.networkPlaceDetails.error.noPort")); 226 } 227 228 if(provider.getUserInfoRequirement() == VFSProvider.ELEMENT_REQUIRED && 229 Util.isNullOrTrimmedBlank(username)) { 230 errs.add(Globals.ERROR_KEY, new ActionMessage("networkPlaceWizard.networkPlaceDetails.error.noUserInfo")); 231 } 232 233 if(provider.getPathRequirement() == VFSProvider.ELEMENT_REQUIRED && 234 Util.isNullOrTrimmedBlank(path)) { 235 errs.add(Globals.ERROR_KEY, new ActionMessage("networkPlaceWizard.networkPlaceDetails.error.noPath")); 236 } 237 } catch (Exception ex) { 238 errs.add(Globals.ERROR_KEY, new ActionMessage("vfs.unexpected.error", ex.getMessage())); 239 } 240 return errs; 241 } 242 return null; 243 } 244 245 public VFSProvider getProvider() { 246 return provider; 247 } 248 249 public boolean isAllowRecursive() { 250 return allowRecursive; 251 } 252 253 public void setAllowRecursive(boolean allowRecursive) { 254 this.allowRecursive = allowRecursive; 255 } 256 257 public boolean isNoDelete() { 258 return noDelete; 259 } 260 261 public void setNoDelete(boolean noDelete) { 262 this.noDelete = noDelete; 263 } 264 265 public boolean isReadOnly() { 266 return readOnly; 267 } 268 269 public void setReadOnly(boolean readOnly) { 270 this.readOnly = readOnly; 271 } 272 273 public boolean isShowHidden() { 274 return showHidden; 275 } 276 277 public void setShowHidden(boolean showHidden) { 278 this.showHidden = showHidden; 279 } 280 281 public String getPassword() { 282 return password; 283 } 284 285 public void setPassword(String password) { 286 this.password = password; 287 } 288 289 public String getUsername() { 290 return username; 291 } 292 293 public void setUsername(String username) { 294 this.username = username; 295 } 296 297 public String getScheme() { 298 return scheme; 299 } 300 301 public void setScheme(String scheme) { 302 this.scheme = scheme; 303 } 304 305 public String getHost() { 306 return host; 307 } 308 309 public void setHost(String host) { 310 this.host = host; 311 } 312 313 public int getPort() { 314 return port; 315 } 316 317 public void setPort(int port) { 318 this.port = port; 319 } 320 321 public String getQueryString() { 322 return queryString; 323 } 324 325 public void setQueryString(String queryString) { 326 this.queryString = queryString; 327 } 328 329 public void reset(ActionMapping mapping, HttpServletRequest request) { 330 super.reset(mapping, request); 331 this.showHidden = false; 332 this.readOnly = false; 333 this.allowRecursive = false; 334 this.noDelete = false; 335 this.autoDetected = false; 336 } 337 338 public void setProvider(VFSProvider provider) { 339 this.provider = provider; 340 } 341 342 public void changeProvider(VFSProvider provider) { 343 setProvider(provider); 344 setScheme(provider.getScheme()); 345 } 346 347 public boolean isAutomaticallyDetected() { 348 return autoDetected; 349 } 350 } 351 | Popular Tags |