1 28 29 package com.opencms.workplace; 30 31 import org.opencms.file.CmsObject; 32 import org.opencms.i18n.CmsEncoder; 33 import org.opencms.main.CmsException; 34 import org.opencms.main.CmsLog; 35 import org.opencms.main.OpenCms; 36 import org.opencms.report.A_CmsReportThread; 37 import org.opencms.workplace.tools.database.CmsStaticExportThread; 38 39 import com.opencms.core.I_CmsSession; 40 import com.opencms.legacy.CmsXmlTemplateLoader; 41 42 import java.util.Hashtable ; 43 import java.util.Vector ; 44 45 import org.apache.oro.text.perl.Perl5Util; 46 47 57 58 public class CmsAdminStaticExport extends CmsWorkplaceDefault { 59 60 private static String C_STATICEXPORT_THREAD = "static_export_thread"; 61 62 73 74 public byte[] getContent(CmsObject cms, String templateFile, String elementName, 75 Hashtable parameters, String templateSelector) throws CmsException { 76 if(CmsLog.getLog(this).isDebugEnabled() && C_DEBUG) { 77 CmsLog.getLog(this).debug("Getting content of element " + ((elementName==null)?"<root>":elementName)); 78 CmsLog.getLog(this).debug("Template file is: " + templateFile); 79 CmsLog.getLog(this).debug("Selected template section is: " + ((templateSelector==null)?"<default>":templateSelector)); 80 } 81 82 CmsXmlWpTemplateFile xmlTemplateDocument = new CmsXmlWpTemplateFile(cms, templateFile); 83 I_CmsSession session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true); 84 CmsXmlLanguageFile lang = xmlTemplateDocument.getLanguageFile(); 85 86 String action = (String )parameters.get("action"); 88 89 if("showResult".equals(action)){ 91 A_CmsReportThread doTheWork = (A_CmsReportThread)session.getValue(C_STATICEXPORT_THREAD); 93 if(doTheWork.isAlive()){ 95 xmlTemplateDocument.setData("endMethod", ""); 96 xmlTemplateDocument.setData("text", ""); 97 }else{ 98 xmlTemplateDocument.setData("endMethod", xmlTemplateDocument.getDataValue("endMethod")); 99 xmlTemplateDocument.setData("autoUpdate",""); 100 xmlTemplateDocument.setData("text", lang.getLanguageValue("staticexport.label.exportend")); 101 } 102 xmlTemplateDocument.setData("data", doTheWork.getReportUpdate()); 103 return startProcessing(cms, xmlTemplateDocument, elementName, parameters, "updateReport"); 104 } 105 if(action == null || "dynPrint".equals(action)) { 106 Vector exportStartPoints = null; 108 String allStartPoints = ""; 109 if(exportStartPoints != null){ 110 for(int i=0; i<exportStartPoints.size(); i++){ 111 xmlTemplateDocument.setData("entry", (String )exportStartPoints.elementAt(i)); 112 allStartPoints += xmlTemplateDocument.getProcessedDataValue("exportpoint"); 113 } 114 } 115 xmlTemplateDocument.setData("exportpoints", allStartPoints); 116 xmlTemplateDocument.setData("path", OpenCms.getStaticExportManager().getExportPath(null)); 117 } 118 119 if((action != null) && ("regTest".equals(action))) { 121 String sub = (String )parameters.get("sub"); 122 String link = ""; 123 String regExpr = ""; 124 String result = ""; 125 if(sub != null && "true".equals(sub)){ 126 link = (String )parameters.get("link"); 127 regExpr = (String )parameters.get("regExpr"); 128 try{ 129 Perl5Util subClass = new Perl5Util(); 130 result = subClass.substitute(regExpr, link); 131 }catch(Exception e){ 132 result = "error: "+ e.getMessage(); 133 } 134 } 135 xmlTemplateDocument.setData("link", CmsEncoder.escape(link, 136 cms.getRequestContext().getEncoding())); 137 xmlTemplateDocument.setData("regExpr", CmsEncoder.escape(regExpr, 138 cms.getRequestContext().getEncoding())); 139 xmlTemplateDocument.setData("result", CmsEncoder.escape(result, 140 cms.getRequestContext().getEncoding())); 141 return startProcessing(cms, xmlTemplateDocument, elementName, parameters, "regTest"); 142 } 143 144 if((action != null) && ("working".equals(action))) { 146 A_CmsReportThread doTheWork = (A_CmsReportThread)session.getValue(C_STATICEXPORT_THREAD); 148 if(doTheWork.isAlive()) { 149 String time = (String )parameters.get("time"); 150 int wert = Integer.parseInt(time); 151 wert += 20; 152 xmlTemplateDocument.setData("time", "" + wert); 153 return startProcessing(cms, xmlTemplateDocument, elementName, parameters, "wait"); 154 }else { 155 String errordetails = (String )session.getValue(com.opencms.core.I_CmsConstants.C_SESSION_THREAD_ERROR); 157 session.removeValue(com.opencms.core.I_CmsConstants.C_SESSION_THREAD_ERROR); 158 if(errordetails == null) { 159 return startProcessing(cms, xmlTemplateDocument, elementName, parameters, "done"); 161 }else { 162 xmlTemplateDocument.setData("details", errordetails); 164 return startProcessing(cms, xmlTemplateDocument, elementName, parameters, "error"); 165 } 166 } 167 } 168 if("export".equals(action)) { 169 170 if(session.getValue(com.opencms.core.I_CmsConstants.C_SESSION_THREAD_ERROR) != null) { 173 session.removeValue(com.opencms.core.I_CmsConstants.C_SESSION_THREAD_ERROR); 174 } 175 A_CmsReportThread doExport = new CmsStaticExportThread(cms); 176 doExport.start(); 177 session.putValue(C_STATICEXPORT_THREAD , doExport); 178 xmlTemplateDocument.setData("time", "10"); 179 templateSelector = "showresult"; 180 } 181 182 return startProcessing(cms, xmlTemplateDocument, elementName, parameters, templateSelector); 184 } 185 186 187 197 public boolean isCacheable(CmsObject cms, String templateFile, String elementName, 198 Hashtable parameters, String templateSelector) { 199 return false; 200 } 201 202 217 public Boolean isExportActive(CmsObject cms, CmsXmlLanguageFile lang, Hashtable parameters) throws CmsException { 218 boolean isProMan = isProjectManager(cms, lang, parameters).booleanValue(); 219 return new Boolean (OpenCms.getStaticExportManager().isStaticExportEnabled() && isProMan); 220 } 221 222 237 public Boolean isExportActiveAdmin(CmsObject cms, CmsXmlLanguageFile lang, Hashtable parameters) throws CmsException { 238 boolean isAdmin = isAdmin(cms, lang, parameters).booleanValue(); 239 return new Boolean (OpenCms.getStaticExportManager().isStaticExportEnabled() && isAdmin); 240 } 241 }
| Popular Tags
|