1 28 29 package com.opencms.workplace; 30 31 import org.opencms.file.CmsObject; 32 import org.opencms.main.CmsException; 33 import org.opencms.main.CmsLog; 34 import org.opencms.main.CmsSystemInfo; 35 import org.opencms.main.OpenCms; 36 import org.opencms.module.CmsModuleImportExportHandler; 37 import org.opencms.report.A_CmsReportThread; 38 import org.opencms.workplace.threads.CmsExportThread; 39 40 import com.opencms.core.I_CmsSession; 41 import com.opencms.legacy.CmsXmlTemplateLoader; 42 43 import java.util.ArrayList ; 44 import java.util.Hashtable ; 45 import java.util.Iterator ; 46 import java.util.List ; 47 48 57 public class CmsAdminModuleExport extends CmsWorkplaceDefault { 58 59 private final String C_MODULE = "module"; 60 private final String C_MODULENAME = "modulename"; 61 private final String C_ACTION = "action"; 62 private final String C_MODULE_THREAD = "modulethread"; 63 64 private static final int C_MINIMUM_MODULE_RESOURCE_COUNT = 1; 65 66 private static final int DEBUG = 0; 67 68 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 I_CmsSession session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true); 89 90 String step = (String ) parameters.get(C_ACTION); 91 String moduleName = (String ) parameters.get(C_MODULENAME); 92 93 if (step == null) { 94 xmlTemplateDocument.setData("modulename", (String )parameters.get(C_MODULE)); 96 97 } else if("showResult".equals(step)){ 98 if (DEBUG > 1) System.out.println("showResult for export"); 99 100 A_CmsReportThread doTheWork = (A_CmsReportThread)session.getValue(C_MODULE_THREAD); 102 if(doTheWork.isAlive()){ 103 if (DEBUG > 1) System.out.println("showResult: thread is still running"); 104 xmlTemplateDocument.setData("endMethod", ""); 106 xmlTemplateDocument.setData("text", ""); 107 }else{ 108 if (DEBUG > 1) System.out.println("showResult: thread is finished"); 109 xmlTemplateDocument.setData("endMethod", xmlTemplateDocument.getDataValue("endMethod")); 111 xmlTemplateDocument.setData("autoUpdate",""); 112 xmlTemplateDocument.setData("text", xmlTemplateDocument.getLanguageFile().getLanguageValue("module.lable.exportend")); 113 session.removeValue(C_MODULE_THREAD); 114 } 115 xmlTemplateDocument.setData("data", doTheWork.getReportUpdate()); 116 return startProcessing(cms, xmlTemplateDocument, elementName, parameters, "updateReport"); 117 118 } else if ("ok".equals(step)) { 119 String [] resourcen = null; 121 122 List resList = OpenCms.getModuleManager().getModule(moduleName).getResources(); 124 ArrayList resListCopy = new ArrayList (); 125 for (Iterator it = resList.iterator(); it.hasNext(); ) { 126 String res = (String )it.next(); 127 try { 128 if (res != null) { 129 if (DEBUG > 0) { 130 System.err.println("reading file header of: " + res); 131 } 132 cms.readResource(res); 133 resListCopy.add(res); 134 } 135 } 136 catch (CmsException e) { 137 if (CmsLog.getLog(this).isErrorEnabled()) { 139 CmsLog.getLog(this).error("Error exporting module: couldn't add " + res + " to Module", e); 140 } 141 if (DEBUG > 0) { 142 System.err.println("couldn't add " + res); 143 } 144 } 145 } 146 resourcen = new String [resListCopy.size()]; 147 for (int count=0; count < resListCopy.size(); count++ ) { 148 resourcen[count] = (String )resListCopy.get(count); 149 if (DEBUG > 0) { 150 System.err.println("exporting " + resourcen[count]); 151 } 152 } 153 154 String filename = 155 OpenCms.getSystemInfo().getAbsoluteRfsPathRelativeToWebInf( 156 OpenCms.getSystemInfo().getPackagesRfsPath() + CmsSystemInfo.FOLDER_MODULES + moduleName + "_" 157 + OpenCms.getModuleManager().getModule(moduleName).getVersion().toString()); 158 159 CmsModuleImportExportHandler moduleExportHandler = new CmsModuleImportExportHandler(); 160 moduleExportHandler.setFileName(filename); 161 moduleExportHandler.setModuleName(moduleName.replace('\\', '/')); 162 moduleExportHandler.setAdditionalResources(resourcen); 163 moduleExportHandler.setDescription("Module export of " + moduleExportHandler.getModuleName()); 164 165 A_CmsReportThread doExport = new CmsExportThread(cms, moduleExportHandler, true); 166 doExport.start(); 167 session.putValue(C_MODULE_THREAD, doExport); 168 xmlTemplateDocument.setData("time", "5"); 169 templateSelector = "showresult"; 170 } 171 172 return startProcessing(cms, xmlTemplateDocument, elementName, parameters, templateSelector); 174 } 175 176 186 public boolean isCacheable(CmsObject cms, String templateFile, String elementName, Hashtable parameters, String templateSelector) { 187 return false; 188 } 189 } 190
| Popular Tags
|