1 31 32 package org.opencms.db; 33 34 import org.opencms.main.CmsLog; 35 36 import java.io.File ; 37 import java.io.FileOutputStream ; 38 import java.io.OutputStream ; 39 import java.util.HashMap ; 40 import java.util.Iterator ; 41 import java.util.Set ; 42 43 import org.apache.commons.logging.Log; 44 45 54 public class CmsExportPointDriver { 55 56 57 private static final Log LOG = CmsLog.getLog(CmsExportPointDriver.class); 58 59 60 private HashMap m_exportpointLookupMap; 61 62 63 private Set m_exportpoints; 64 65 70 public CmsExportPointDriver(Set exportpoints) { 71 72 m_exportpoints = exportpoints; 73 m_exportpointLookupMap = new HashMap (); 74 Iterator i = m_exportpoints.iterator(); 75 while (i.hasNext()) { 76 CmsExportPoint point = (CmsExportPoint)i.next(); 77 if (point.getDestinationPath() != null) { 78 m_exportpointLookupMap.put(point.getUri(), point.getDestinationPath()); 80 } 81 } 82 } 83 84 90 public void createFolder(String resourceName, String exportpoint) { 91 92 writeResource(resourceName, exportpoint, null); 93 } 94 95 108 public void deleteResource(String resourceName, String exportpoint) { 109 110 File file = getExportPointFile(resourceName, exportpoint); 111 if (file.exists() && file.canWrite()) { 112 file.delete(); 114 File parent = file.getParentFile(); 116 if (parent.canWrite()) { 117 parent.delete(); 118 } 119 } 120 } 121 122 131 public String getExportPoint(String rootPath) { 132 133 Iterator i = getExportPointPaths().iterator(); 134 while (i.hasNext()) { 135 String point = (String )i.next(); 136 if (rootPath.startsWith(point)) { 137 return point; 138 } 139 } 140 return null; 141 } 142 143 148 public Set getExportPointPaths() { 149 150 return m_exportpointLookupMap.keySet(); 151 } 152 153 162 public void writeFile(String resourceName, String exportpoint, byte[] content) { 163 164 writeResource(resourceName, exportpoint, content); 165 } 166 167 174 private File getExportPointFile(String rootPath, String exportpoint) { 175 176 StringBuffer exportpath = new StringBuffer (128); 177 exportpath.append((String )m_exportpointLookupMap.get(exportpoint)); 178 exportpath.append(rootPath.substring(exportpoint.length())); 179 return new File (exportpath.toString()); 180 } 181 182 189 private void writeResource(String resourceName, String exportpoint, byte[] content) { 190 191 File file = getExportPointFile(resourceName, exportpoint); 192 try { 193 File folder; 194 if (content == null) { 195 folder = file; 197 } else { 198 folder = file.getParentFile(); 200 } 201 if (!folder.exists()) { 203 boolean success = folder.mkdirs(); 204 if (!success) { 205 LOG.error(Messages.get().getBundle().key(Messages.LOG_CREATE_FOLDER_FAILED_1, folder.getAbsolutePath())); 206 } 207 } 208 if (content != null) { 209 OutputStream s = new FileOutputStream (file); 211 s.write(content); 212 s.close(); 213 } 214 } catch (Exception e) { 215 LOG.error( 216 Messages.get().getBundle().key(Messages.LOG_WRITE_EXPORT_POINT_FAILED_1, file.getAbsolutePath()), 217 e); 218 } 219 } 220 } | Popular Tags |