1 28 29 package com.opencms.workplace; 30 31 import org.opencms.db.CmsUserSettings; 32 import org.opencms.file.CmsObject; 33 import org.opencms.file.CmsRequestContext; 34 import org.opencms.main.CmsException; 35 import org.opencms.main.CmsLog; 36 import org.opencms.synchronize.CmsSynchronizeSettings; 37 38 import com.opencms.core.I_CmsSession; 39 import com.opencms.legacy.CmsXmlTemplateLoader; 40 import com.opencms.template.CmsXmlTemplateFile; 41 42 import java.util.ArrayList ; 43 import java.util.Hashtable ; 44 import java.util.Iterator ; 45 import java.util.StringTokenizer ; 46 import java.util.Vector ; 47 48 56 public class CmsAdminSyncProperties extends CmsWorkplaceDefault { 57 58 private final String C_STEP = "step"; 59 private final String C_SYNCPROJECT = "syncproject"; 60 private final String C_SYNCPATH = "syncpath"; 61 private final String C_SYNCRESOURCES = "syncresources"; 62 private final String C_ADDFOLDER = "addfolder"; 63 64 75 public byte[] getContent(CmsObject cms, String templateFile, String elementName, 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 CmsXmlTemplateFile templateDocument = getOwnTemplateFile(cms, templateFile, elementName, parameters, templateSelector); 83 CmsRequestContext reqCont = cms.getRequestContext(); 84 I_CmsSession session = CmsXmlTemplateLoader.getSession(reqCont, true); 85 CmsXmlLanguageFile lang = new CmsXmlLanguageFile(cms); 86 87 String syncPath = new String (); 88 String allResources = new String (); 89 90 String step = (String )parameters.get(C_STEP); 92 syncPath = (String )parameters.get(C_SYNCPATH); 93 allResources = (String )parameters.get(C_SYNCRESOURCES); 94 95 if(step == null) { 96 if(session.getValue(C_STEP) == null){ 99 session.removeValue(C_SYNCPATH); 101 session.removeValue(C_SYNCRESOURCES); 102 session.removeValue(C_ADDFOLDER); 103 session.removeValue("lasturl"); 104 session.putValue(C_STEP, "nextstep"); 105 } 106 } else { 107 if("OK".equalsIgnoreCase(step)) { 108 syncPath = (String )parameters.get(C_SYNCPATH); 109 allResources = (String )parameters.get(C_SYNCRESOURCES); 110 Vector folders = null; 111 if(((syncPath == null) || syncPath.equals("")) || 113 ((allResources == null) || allResources.equals(""))) { 114 templateSelector = "datamissing"; 115 } else { 116 session.putValue(C_SYNCPATH, syncPath); 118 session.putValue(C_SYNCRESOURCES, allResources); 119 folders = parseResources(allResources); 122 123 Vector notWriteable = new Vector (); 124 Iterator it = folders.iterator(); 125 while (it.hasNext()) { 126 127 String source = (String )it.next(); 128 129 if (lang.getLanguageValue("title.rootfolder").equals(source)) { 132 source = "/"; 133 } 134 } 135 136 if("errorsyncproperties".equals(templateSelector)){ 137 templateDocument.setData("details", "The following folders were not readable:" 139 + notWriteable.toString()); 140 } 141 } 142 if(templateSelector == null || "".equals(templateSelector)){ 143 144 CmsSynchronizeSettings settings = new CmsSynchronizeSettings(); 146 settings.setEnabled(! "-".equals(syncPath)); 147 settings.setDestinationPathInRfs(settings.isEnabled() ? syncPath : null); 148 if (folders != null) { 149 settings.setSourceListInVfs(new ArrayList (folders)); 150 } 151 152 settings.checkValues(cms); 154 155 CmsUserSettings userSettings = new CmsUserSettings(cms); 156 userSettings.setSynchronizeSettings(settings); 157 userSettings.save(cms); 158 159 templateSelector = "done"; 160 161 session.removeValue(C_STEP); 163 } 164 } else if("fromerrorpage".equals(step)) { 165 templateDocument.setData(C_SYNCPROJECT, "" + cms.getRequestContext().currentProject().getId()); 167 templateDocument.setData(C_SYNCPATH, (String )session.getValue(C_SYNCPATH)); 168 templateDocument.setData(C_ADDFOLDER, ""); 169 templateDocument.setData(C_SYNCRESOURCES, (String )session.getValue(C_SYNCRESOURCES)); 170 templateSelector = ""; 171 } else if("cancel".equals(step)){ 172 session.removeValue(C_STEP); 174 templateSelector = "done"; 175 } 176 } 177 if((syncPath == null) || ("".equals(syncPath))) { 179 syncPath = (String )session.getValue(C_SYNCPATH); 180 } 181 if((allResources == null) || ("".equals(allResources))) { 182 allResources = (String )session.getValue(C_SYNCRESOURCES); 183 } 184 185 CmsUserSettings userSettings = new CmsUserSettings(cms); 186 CmsSynchronizeSettings settings = userSettings.getSynchronizeSettings(); 187 if (settings == null) { 188 settings = new CmsSynchronizeSettings(); 189 } 190 191 if((syncPath == null) || ("".equals(syncPath))) { 192 syncPath = settings.getDestinationPathInRfs(); 193 if(syncPath == null){ 194 syncPath = ""; 195 } 196 } 197 if((allResources == null) || ("".equals(allResources))) { 198 if (settings.getSourceListInVfs().size() > 0) { 199 StringBuffer result = new StringBuffer (); 200 Iterator it = settings.getSourceListInVfs().iterator(); 201 while (it.hasNext()) { 202 result.append(it.next()); 203 if (it.hasNext()) { 204 result.append(';'); 205 } 206 } 207 allResources = result.toString(); 208 } 209 if (allResources == null) { 210 allResources = ""; 211 } 212 if (allResources.endsWith(";")){ 214 allResources = allResources.substring(0,allResources.lastIndexOf(";")); 215 } 216 } 217 218 templateDocument.setData(C_SYNCPROJECT, "" + cms.getRequestContext().currentProject().getId()); 219 templateDocument.setData(C_SYNCRESOURCES, allResources); 220 templateDocument.setData(C_SYNCPATH, syncPath); 221 session.putValue(C_SYNCPATH, syncPath); 222 session.putValue(C_SYNCRESOURCES, allResources); 223 224 return startProcessing(cms, templateDocument, elementName, parameters, templateSelector); 226 } 227 228 238 public boolean isCacheable(CmsObject cms, String templateFile, String elementName, Hashtable parameters, String templateSelector) { 239 return false; 240 } 241 242 256 257 public Integer getResources(CmsObject cms, CmsXmlLanguageFile lang, Vector names, 258 Vector values, Hashtable parameters) throws CmsException { 259 260 I_CmsSession session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true); 261 String enteredResources = (String )session.getValue(C_SYNCRESOURCES); 262 Vector resources = parseResources(enteredResources); 263 for(int z = 0;z < resources.size();z++) { 265 String resourceName = (String )resources.elementAt(z); 266 names.addElement(resourceName); 267 values.addElement(resourceName); 268 } 269 return new Integer (-1); 270 } 271 272 277 private Vector parseResources(String resources) { 278 Vector ret = new Vector (); 279 if(resources != null) { 280 StringTokenizer resTokenizer = new StringTokenizer (resources, ";"); 281 while(resTokenizer.hasMoreElements()) { 282 String path = (String )resTokenizer.nextElement(); 283 ret.addElement(path); 284 } 285 } 286 return ret; 287 } 288 }
| Popular Tags
|