1 31 32 package org.opencms.workplace.tools.modules; 33 34 import org.opencms.configuration.CmsConfigurationException; 35 import org.opencms.jsp.CmsJspActionElement; 36 import org.opencms.main.OpenCms; 37 import org.opencms.module.CmsModule; 38 import org.opencms.module.CmsModuleDependency; 39 import org.opencms.security.CmsSecurityException; 40 import org.opencms.util.CmsStringUtil; 41 import org.opencms.widgets.CmsInputWidget; 42 import org.opencms.widgets.CmsSelectWidget; 43 import org.opencms.widgets.CmsSelectWidgetOption; 44 import org.opencms.workplace.CmsDialog; 45 import org.opencms.workplace.CmsWidgetDialog; 46 import org.opencms.workplace.CmsWidgetDialogParameter; 47 import org.opencms.workplace.CmsWorkplaceSettings; 48 49 import java.util.ArrayList ; 50 import java.util.Iterator ; 51 import java.util.List ; 52 import java.util.Map ; 53 54 import javax.servlet.http.HttpServletRequest ; 55 import javax.servlet.http.HttpServletResponse ; 56 import javax.servlet.jsp.PageContext ; 57 58 67 public class CmsDependenciesEdit extends CmsWidgetDialog { 68 69 70 public static final String DIALOG_TYPE = "DependenciesEdit"; 71 72 73 public static final String [] PAGES = {"page1"}; 74 75 76 private CmsModuleDependency m_dependency; 77 78 79 private String m_paramDependency; 80 81 82 private String m_paramModule; 83 84 89 public CmsDependenciesEdit(CmsJspActionElement jsp) { 90 91 super(jsp); 92 } 93 94 101 public CmsDependenciesEdit(PageContext context, HttpServletRequest req, HttpServletResponse res) { 102 103 this(new CmsJspActionElement(context, req, res)); 104 } 105 106 109 public void actionCommit() { 110 111 List errors = new ArrayList (); 112 113 try { 114 String moduleName = getParamModule(); 116 CmsModule module = (CmsModule)OpenCms.getModuleManager().getModule(moduleName).clone(); 117 List oldDependencies = module.getDependencies(); 119 List newDependencies = new ArrayList (); 121 Iterator i = oldDependencies.iterator(); 122 while (i.hasNext()) { 123 CmsModuleDependency dep = (CmsModuleDependency)i.next(); 124 if (!dep.getName().equals(m_dependency.getName())) { 125 newDependencies.add(dep); 126 } 127 } 128 newDependencies.add(m_dependency); 130 module.setDependencies(newDependencies); 131 OpenCms.getModuleManager().updateModule(getCms(), module); 133 Map objects = (Map )getSettings().getListObject(); 135 if (objects != null) { 136 objects.remove(CmsModulesList.class.getName()); 137 objects.remove(CmsModulesDependenciesList.class.getName()); 138 } 139 } catch (CmsConfigurationException ce) { 140 errors.add(ce); 141 } catch (CmsSecurityException se) { 142 errors.add(se); 143 } 144 145 setCommitErrors(errors); 147 } 148 149 154 public String buildDialogForm() { 155 156 StringBuffer result = new StringBuffer (1024); 157 158 try { 159 160 result.append(createDialogHtml(getParamPage())); 162 163 } catch (Throwable t) { 164 } 166 return result.toString(); 167 } 168 169 172 public String getCancelAction() { 173 174 setParamPage((String )getPages().get(0)); 176 177 return DIALOG_SET; 178 } 179 180 185 public String getParamDependency() { 186 187 return m_paramDependency; 188 } 189 190 195 public String getParamModule() { 196 197 return m_paramModule; 198 } 199 200 204 public void setParamDependency(String paramDependency) { 205 206 m_paramDependency = paramDependency; 207 } 208 209 213 public void setParamModule(String paramModule) { 214 215 m_paramModule = paramModule; 216 } 217 218 224 protected String createDialogHtml(String dialog) { 225 226 StringBuffer result = new StringBuffer (1024); 227 228 result.append(createWidgetTableStart()); 230 231 result.append(createWidgetErrorHeader()); 233 234 if (dialog.equals(PAGES[0])) { 235 result.append(dialogBlockStart(key("label.dependencyinformation"))); 236 result.append(createWidgetTableStart()); 237 result.append(createDialogRowsHtml(0, 1)); 238 result.append(createWidgetTableEnd()); 239 result.append(dialogBlockEnd()); 240 } 241 242 result.append(createWidgetTableEnd()); 244 245 return result.toString(); 246 } 247 248 251 protected void defineWidgets() { 252 253 initModule(); 254 255 addWidget(new CmsWidgetDialogParameter(m_dependency, "name", PAGES[0], new CmsSelectWidget(getModules()))); 256 addWidget(new CmsWidgetDialogParameter(m_dependency, "version.version", PAGES[0], new CmsInputWidget())); 257 258 } 259 260 263 protected String [] getPageArray() { 264 265 return PAGES; 266 } 267 268 271 protected void initMessages() { 272 273 addMessages(Messages.get().getBundleName()); 275 super.initMessages(); 277 } 278 279 282 protected void initModule() { 283 284 Object o; 285 CmsModule module; 286 287 if (CmsStringUtil.isNotEmpty(m_paramModule)) { 289 module = (CmsModule)OpenCms.getModuleManager().getModule(m_paramModule).clone(); 290 } else { 291 module = new CmsModule(); 293 } 294 295 if (CmsStringUtil.isEmpty(getParamAction()) || CmsDialog.DIALOG_INITIAL.equals(getParamAction())) { 297 o = null; 298 } else { 299 o = getDialogObject(); 301 } 302 303 if (!(o instanceof CmsModuleDependency)) { 304 if (m_paramDependency == null) { 305 m_dependency = new CmsModuleDependency(); 307 } else { 308 List dependencies = module.getDependencies(); 310 m_dependency = new CmsModuleDependency(); 311 if (dependencies != null && dependencies.size() > 0) { 312 Iterator i = dependencies.iterator(); 313 while (i.hasNext()) { 314 CmsModuleDependency dependency = (CmsModuleDependency)i.next(); 315 if (dependency.getName().equals(m_paramDependency)) { 316 m_dependency = dependency; 317 } 318 } 319 } 320 } 321 322 } else { 323 m_dependency = (CmsModuleDependency)o; 325 } 326 327 } 328 329 332 protected void initWorkplaceRequestValues(CmsWorkplaceSettings settings, HttpServletRequest request) { 333 334 setParamDialogtype(DIALOG_TYPE); 336 337 super.initWorkplaceRequestValues(settings, request); 338 339 setDialogObject(m_dependency); 341 } 342 343 346 protected void validateParamaters() throws Exception { 347 348 String moduleName = getParamModule(); 349 CmsModule module = OpenCms.getModuleManager().getModule(moduleName); 351 if (module == null) { 352 throw new Exception (); 353 } 354 if (!isNewDependency()) { 356 Iterator it = module.getDependencies().iterator(); 357 while (it.hasNext()) { 358 CmsModuleDependency dep = (CmsModuleDependency)it.next(); 359 if (dep.getName().equals(getParamDependency())) { 360 return; 362 } 363 } 364 throw new Exception (); 365 } 366 } 367 368 373 private List getModules() { 374 375 List retVal = new ArrayList (); 376 Iterator i = OpenCms.getModuleManager().getModuleNames().iterator(); 378 while (i.hasNext()) { 380 String moduleName = (String )i.next(); 381 if (moduleName.equals(getParamDependency())) { 382 retVal.add(new CmsSelectWidgetOption(moduleName, true)); 384 } else { 385 retVal.add(new CmsSelectWidgetOption(moduleName, false)); 386 } 387 } 388 return retVal; 389 } 390 391 396 private boolean isNewDependency() { 397 398 return getCurrentToolPath().equals("/modules/edit/dependencies/new"); 399 } 400 } 401 | Popular Tags |