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.CmsRuntimeException; 37 import org.opencms.main.OpenCms; 38 import org.opencms.module.CmsModule; 39 import org.opencms.module.CmsModuleDependency; 40 import org.opencms.security.CmsRoleViolationException; 41 import org.opencms.workplace.list.A_CmsListDialog; 42 import org.opencms.workplace.list.CmsListColumnAlignEnum; 43 import org.opencms.workplace.list.CmsListColumnDefinition; 44 import org.opencms.workplace.list.CmsListDefaultAction; 45 import org.opencms.workplace.list.CmsListDirectAction; 46 import org.opencms.workplace.list.CmsListItem; 47 import org.opencms.workplace.list.CmsListMetadata; 48 import org.opencms.workplace.list.CmsListMultiAction; 49 import org.opencms.workplace.list.CmsListOrderEnum; 50 51 import java.io.IOException ; 52 import java.util.ArrayList ; 53 import java.util.HashMap ; 54 import java.util.Iterator ; 55 import java.util.List ; 56 import java.util.Map ; 57 58 import javax.servlet.ServletException ; 59 import javax.servlet.http.HttpServletRequest ; 60 import javax.servlet.http.HttpServletResponse ; 61 import javax.servlet.jsp.PageContext ; 62 63 72 public class CmsModulesDependenciesList extends A_CmsListDialog { 73 74 75 public static final String LIST_ACTION_DELETE = "ad"; 76 77 78 public static final String LIST_ACTION_EDIT = "ae"; 79 80 81 public static final String LIST_COLUMN_DELETE = "cd"; 82 83 84 public static final String LIST_COLUMN_EDIT = "ce"; 85 86 87 public static final String LIST_COLUMN_NAME = "cn"; 88 89 90 public static final String LIST_COLUMN_VERSION = "cv"; 91 92 93 public static final String LIST_DEFACTION_EDIT = "de"; 94 95 96 public static final String LIST_ID = "lmd"; 97 98 99 public static final String LIST_MACTION_DELETE = "md"; 100 101 102 public static final String PARAM_DEPENDENCY = "dependency"; 103 104 105 public static final String PARAM_MODULE = "module"; 106 107 108 public static final String PATH_BUTTONS = "tools/modules/buttons/"; 109 110 111 private String m_paramModule; 112 113 118 public CmsModulesDependenciesList(CmsJspActionElement jsp) { 119 120 super( 121 jsp, 122 LIST_ID, 123 Messages.get().container(Messages.GUI_DEPENDENCIES_LIST_NAME_0), 124 LIST_COLUMN_NAME, 125 CmsListOrderEnum.ORDER_ASCENDING, 126 null); 127 } 128 129 136 public CmsModulesDependenciesList(PageContext context, HttpServletRequest req, HttpServletResponse res) { 137 138 this(new CmsJspActionElement(context, req, res)); 139 } 140 141 146 public void executeListMultiActions() { 147 148 if (getParamListAction().equals(LIST_MACTION_DELETE)) { 149 String moduleName = getParamModule(); 150 Iterator itItems = getSelectedItems().iterator(); 152 153 while (itItems.hasNext()) { 154 CmsModule module = (CmsModule)OpenCms.getModuleManager().getModule(moduleName).clone(); 155 CmsListItem listItem = (CmsListItem)itItems.next(); 156 String dependencyName = listItem.getId(); 157 deleteDependency(module, dependencyName); 158 } 159 } 160 Map objects = (Map )getSettings().getListObject(); 162 if (objects != null) { 163 objects.remove(CmsModulesList.class.getName()); 164 } 165 listSave(); 166 167 } 168 169 172 public void executeListSingleActions() throws IOException , ServletException { 173 174 String moduleName = getParamModule(); 175 String dependencyName = getSelectedItem().getId(); 176 177 Map params = new HashMap (); 178 params.put(PARAM_MODULE, moduleName); 179 params.put(PARAM_DEPENDENCY, dependencyName); 180 181 if (getParamListAction().equals(LIST_ACTION_DELETE)) { 182 CmsModule module = (CmsModule)OpenCms.getModuleManager().getModule(moduleName).clone(); 184 deleteDependency(module, dependencyName); 185 } else if (getParamListAction().equals(LIST_ACTION_EDIT) || getParamListAction().equals(LIST_DEFACTION_EDIT)) { 186 params.put(PARAM_ACTION, DIALOG_INITIAL); 188 getToolManager().jspForwardTool(this, "/modules/edit/dependencies/edit", params); 189 } 190 Map objects = (Map )getSettings().getListObject(); 192 if (objects != null) { 193 objects.remove(CmsModulesList.class.getName()); 194 } 195 listSave(); 196 } 197 198 203 public String getParamModule() { 204 205 return m_paramModule; 206 } 207 208 212 public void setParamModule(String paramModule) { 213 214 m_paramModule = paramModule; 215 } 216 217 220 protected void fillDetails(String detailId) { 221 222 } 224 225 228 protected List getListItems() { 229 230 List ret = new ArrayList (); 231 232 String moduleName = getParamModule(); 233 CmsModule module = OpenCms.getModuleManager().getModule(moduleName); 234 List dependencies = module.getDependencies(); 236 Iterator i = dependencies.iterator(); 237 while (i.hasNext()) { 238 CmsModuleDependency dependency = (CmsModuleDependency)i.next(); 239 CmsListItem item = getList().newItem(dependency.getName()); 240 item.set(LIST_COLUMN_NAME, dependency.getName()); 242 item.set(LIST_COLUMN_VERSION, dependency.getVersion()); 244 245 ret.add(item); 246 } 247 return ret; 248 } 249 250 253 protected void initMessages() { 254 255 addMessages(Messages.get().getBundleName()); 257 super.initMessages(); 259 } 260 261 264 protected void setColumns(CmsListMetadata metadata) { 265 266 CmsListColumnDefinition editCol = new CmsListColumnDefinition(LIST_COLUMN_EDIT); 268 editCol.setName(Messages.get().container(Messages.GUI_MODULES_LIST_COLS_EDIT_0)); 269 editCol.setWidth("20"); 270 editCol.setSorteable(false); 271 editCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER); 272 CmsListDirectAction editColAction = new CmsListDirectAction(LIST_ACTION_EDIT); 274 editColAction.setName(Messages.get().container(Messages.GUI_DEPENDENCIES_LIST_ACTION_EDIT_NAME_0)); 275 editColAction.setHelpText(Messages.get().container(Messages.GUI_DEPENDENCIES_LIST_ACTION_EDIT_HELP_0)); 276 editColAction.setIconPath(PATH_BUTTONS + "module_dependencies.png"); 277 editColAction.setEnabled(true); 278 editColAction.setConfirmationMessage(null); 279 editCol.addDirectAction(editColAction); 280 metadata.addColumn(editCol); 281 282 CmsListColumnDefinition delCol = new CmsListColumnDefinition(LIST_COLUMN_DELETE); 284 delCol.setName(Messages.get().container(Messages.GUI_MODULES_LIST_COLS_DELETE_0)); 285 delCol.setWidth("20"); 286 delCol.setSorteable(false); 287 delCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER); 288 CmsListDirectAction delDependency = new CmsListDirectAction(LIST_ACTION_DELETE); 290 delDependency.setName(Messages.get().container(Messages.GUI_DEPENDENCIES_LIST_ACTION_DELETE_NAME_0)); 291 delDependency.setConfirmationMessage(Messages.get().container( 292 Messages.GUI_DEPENDENCIES_LIST_ACTION_DELETE_CONF_0)); 293 delDependency.setIconPath(ICON_DELETE); 294 delDependency.setEnabled(true); 295 delDependency.setHelpText(Messages.get().container(Messages.GUI_DEPENDENCIES_LIST_ACTION_DELETE_HELP_0)); 296 delCol.addDirectAction(delDependency); 297 metadata.addColumn(delCol); 298 299 CmsListColumnDefinition nameCol = new CmsListColumnDefinition(LIST_COLUMN_NAME); 301 nameCol.setName(Messages.get().container(Messages.GUI_DEPENDENCIES_LIST_COLS_NAME_0)); 302 nameCol.setWidth("80%"); 303 nameCol.setAlign(CmsListColumnAlignEnum.ALIGN_LEFT); 304 CmsListDefaultAction nameColAction = new CmsListDefaultAction(LIST_DEFACTION_EDIT); 306 nameColAction.setName(Messages.get().container(Messages.GUI_DEPENDENCIES_LIST_ACTION_OVERVIEW_NAME_0)); 307 nameColAction.setIconPath(null); 308 nameColAction.setHelpText(Messages.get().container(Messages.GUI_DEPENDENCIES_LIST_ACTION_OVERVIEW_HELP_0)); 309 nameColAction.setEnabled(true); 310 nameColAction.setConfirmationMessage(null); 311 nameCol.addDefaultAction(nameColAction); 313 metadata.addColumn(nameCol); 314 315 CmsListColumnDefinition versionCol = new CmsListColumnDefinition(LIST_COLUMN_VERSION); 317 versionCol.setName(Messages.get().container(Messages.GUI_DEPENDENCIES_LIST_COLS_VERSION_0)); 318 versionCol.setWidth("20%"); 319 versionCol.setAlign(CmsListColumnAlignEnum.ALIGN_LEFT); 320 metadata.addColumn(versionCol); 321 } 322 323 326 protected void setIndependentActions(CmsListMetadata metadata) { 327 328 } 330 331 334 protected void setMultiActions(CmsListMetadata metadata) { 335 336 CmsListMultiAction deleteDependencies = new CmsListMultiAction(LIST_MACTION_DELETE); 338 deleteDependencies.setName(Messages.get().container(Messages.GUI_DEPENDENCIES_LIST_ACTION_MDELETE_NAME_0)); 339 deleteDependencies.setConfirmationMessage(Messages.get().container( 340 Messages.GUI_DEPENDENCIES_LIST_ACTION_MDELETE_CONF_0)); 341 deleteDependencies.setIconPath(ICON_MULTI_DELETE); 342 deleteDependencies.setEnabled(true); 343 deleteDependencies.setHelpText(Messages.get().container(Messages.GUI_DEPENDENCIES_LIST_ACTION_MDELETE_HELP_0)); 344 metadata.addMultiAction(deleteDependencies); 345 } 346 347 350 protected void validateParamaters() throws Exception { 351 352 if (OpenCms.getModuleManager().getModule(getParamModule()) == null) { 353 throw new Exception (); 356 } 357 } 358 359 365 private void deleteDependency(CmsModule module, String dependencyName) { 366 367 List oldDependencies = module.getDependencies(); 368 List newDependencies = new ArrayList (); 369 Iterator i = oldDependencies.iterator(); 370 while (i.hasNext()) { 371 CmsModuleDependency dep = (CmsModuleDependency)i.next(); 372 if (!dep.getName().equals(dependencyName)) { 373 newDependencies.add(dep); 374 } 375 } 376 module.setDependencies(newDependencies); 377 try { 379 OpenCms.getModuleManager().updateModule(getCms(), module); 380 } catch (CmsConfigurationException ce) { 381 throw new CmsRuntimeException(Messages.get().container( 383 Messages.ERR_ACTION_DEPENDENCIES_DELETE_2, 384 dependencyName, 385 module.getName()), ce); 386 387 } catch (CmsRoleViolationException re) { 388 throw new CmsRuntimeException(Messages.get().container( 389 Messages.ERR_ACTION_DEPENDENCIES_DELETE_2, 390 dependencyName, 391 module.getName()), re); 392 } 393 getList().removeItem(dependencyName, getLocale()); 394 } 395 } | Popular Tags |