1 28 29 package com.opencms.workplace; 30 31 import org.opencms.file.CmsObject; 32 import org.opencms.file.CmsProject; 33 import org.opencms.file.CmsRequestContext; 34 import org.opencms.main.CmsException; 35 import org.opencms.main.CmsLog; 36 import org.opencms.main.OpenCms; 37 import org.opencms.module.CmsModule; 38 import org.opencms.module.CmsModuleDependency; 39 import org.opencms.module.CmsModuleManager; 40 import org.opencms.report.A_CmsReportThread; 41 import org.opencms.workplace.threads.CmsModuleDeleteThread; 42 43 import com.opencms.core.I_CmsSession; 44 import com.opencms.legacy.CmsXmlTemplateLoader; 45 46 import java.util.ArrayList ; 47 import java.util.Hashtable ; 48 import java.util.List ; 49 import java.util.Vector ; 50 51 59 public class CmsAdminModuleDelete extends CmsWorkplaceDefault { 60 61 private static final String C_MODULE = "module"; 62 private static final String C_STEP = "step"; 63 private static final String C_DELETE = "delete"; 64 private static final String C_WARNING = "warning"; 65 private static final String C_ERROR = "error"; 66 private static final String C_SESSION_MODULENAME = "deletemodulename"; 67 private static final String C_MODULE_THREAD = "moduledeletethread"; 68 69 80 public byte[] getContent(CmsObject cms, String templateFile, String elementName, Hashtable parameters, String templateSelector) throws CmsException { 81 if(CmsLog.getLog(this).isDebugEnabled() && C_DEBUG) { 82 CmsLog.getLog(this).debug("Getting content of element " + ((elementName==null)?"<root>":elementName)); 83 CmsLog.getLog(this).debug("Template file is: " + templateFile); 84 CmsLog.getLog(this).debug("Selected template section is: " + ((templateSelector==null)?"<default>":templateSelector)); 85 } 86 87 CmsXmlWpTemplateFile xmlTemplateDocument = (CmsXmlWpTemplateFile)getOwnTemplateFile(cms, templateFile, elementName, parameters, templateSelector); 88 CmsRequestContext reqCont = cms.getRequestContext(); 89 I_CmsSession session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true); 90 String step = (String )parameters.get(C_STEP); 91 String moduleName = (String )parameters.get(C_MODULE); 92 93 if(step == null) { 94 String moduleVersion = OpenCms.getModuleManager().getModule(moduleName).getVersion().toString(); 95 xmlTemplateDocument.setData("name", moduleName); 96 xmlTemplateDocument.setData("version", moduleVersion); 97 98 } else if("showResult".equals(step)){ 99 A_CmsReportThread doTheWork = (A_CmsReportThread)session.getValue(C_MODULE_THREAD); 101 if(doTheWork.isAlive()){ 102 xmlTemplateDocument.setData("endMethod", ""); 104 xmlTemplateDocument.setData("text", ""); 105 }else{ 106 xmlTemplateDocument.setData("endMethod", xmlTemplateDocument.getDataValue("endMethod")); 108 xmlTemplateDocument.setData("autoUpdate",""); 109 xmlTemplateDocument.setData("text", xmlTemplateDocument.getLanguageFile().getLanguageValue("module.lable.deleteend")); 110 session.removeValue(C_MODULE_THREAD); 111 } 112 xmlTemplateDocument.setData("data", doTheWork.getReportUpdate()); 113 return startProcessing(cms, xmlTemplateDocument, elementName, parameters, "updateReport"); 114 115 } else if(C_DELETE.equals(step)) { 116 CmsModule module = OpenCms.getModuleManager().getModule(moduleName); 117 List dependencies = OpenCms.getModuleManager().checkDependencies(module, CmsModuleManager.DEPENDENCY_MODE_DELETE); 118 if(!dependencies.isEmpty()) { 119 xmlTemplateDocument.setData("name", module.getName()); 121 xmlTemplateDocument.setData("version", module.getVersion().toString()); 122 String depModules = ""; 123 for(int i = 0;i < dependencies.size();i++) { 124 depModules += ((CmsModuleDependency)dependencies.get(i)).toString()+"\n"; 125 } 126 xmlTemplateDocument.setData("precondition", depModules); 127 templateSelector = C_ERROR; 128 } 129 else { 130 Vector filesWithProperty = new Vector (); 132 Vector missingFiles = new Vector (); 133 Vector wrongChecksum = new Vector (); 134 Vector filesInUse = new Vector (); 135 Vector resourcesForProject = new Vector (); 136 reqCont.setCurrentProject(cms.readProject(CmsProject.ONLINE_PROJECT_ID)); 137 session.putValue(C_SESSION_MODULENAME, moduleName); 138 session.putValue(CmsWorkplaceDefault.C_SESSION_MODULE_PROJECTFILES, resourcesForProject); 139 if(filesWithProperty.isEmpty() && missingFiles.isEmpty() && wrongChecksum.isEmpty() && filesInUse.isEmpty()) { 140 step = "fromerrorpage"; 141 } else { 142 session.putValue(CmsWorkplaceDefault.C_SESSION_MODULE_DELETE_STEP, "0"); 143 session.putValue(CmsWorkplaceDefault.C_SESSION_MODULE_CHECKSUM, wrongChecksum); 144 session.putValue(CmsWorkplaceDefault.C_SESSION_MODULE_PROPFILES, filesWithProperty); 145 session.putValue(CmsWorkplaceDefault.C_SESSION_MODULE_INUSE, filesInUse); 146 session.putValue(CmsWorkplaceDefault.C_SESSION_MODULE_MISSFILES, missingFiles); 147 templateSelector = C_WARNING; 148 } 149 } 150 151 } 152 if ("fromerrorpage".equals(step)) { 154 moduleName = (String )session.getValue(C_SESSION_MODULENAME); 155 List modules = new ArrayList (); 156 modules.add(moduleName); 157 A_CmsReportThread doDelete = new CmsModuleDeleteThread(cms, modules, false, true); 158 doDelete.start(); 159 session.putValue(C_MODULE_THREAD, doDelete); 160 xmlTemplateDocument.setData("time", "5"); 161 templateSelector = "showresult"; 162 } 163 164 return startProcessing(cms, xmlTemplateDocument, elementName, parameters, templateSelector); 166 } 167 168 178 public boolean isCacheable(CmsObject cms, String templateFile, String elementName, Hashtable parameters, String templateSelector) { 179 return false; 180 } 181 } 182
| Popular Tags
|