1 31 32 package org.opencms.file.types; 33 34 import org.opencms.db.CmsSecurityManager; 35 import org.opencms.file.CmsFile; 36 import org.opencms.file.CmsObject; 37 import org.opencms.file.CmsResource; 38 import org.opencms.file.CmsResourceFilter; 39 import org.opencms.loader.CmsXmlContentLoader; 40 import org.opencms.main.CmsException; 41 import org.opencms.main.OpenCms; 42 import org.opencms.security.CmsPermissionSet; 43 import org.opencms.xml.CmsXmlContentDefinition; 44 import org.opencms.xml.content.CmsXmlContent; 45 import org.opencms.xml.content.CmsXmlContentFactory; 46 47 import java.util.List ; 48 import java.util.Locale ; 49 import java.util.Map ; 50 import java.util.TreeMap ; 51 52 61 public class CmsResourceTypeXmlContent extends A_CmsResourceType { 62 63 64 public static final String CONFIGURATION_SCHEMA = "schema"; 65 66 67 private String m_schema; 68 69 72 public void addConfigurationParameter(String paramName, String paramValue) { 73 74 super.addConfigurationParameter(paramName, paramValue); 75 if (CONFIGURATION_SCHEMA.equalsIgnoreCase(paramName)) { 76 m_schema = paramValue.trim(); 77 } 78 } 79 80 83 public CmsResource createResource( 84 CmsObject cms, 85 CmsSecurityManager securityManager, 86 String resourcename, 87 byte[] content, 88 List properties) throws CmsException { 89 90 if ((m_schema != null) && ((content == null) || (content.length == 0))) { 91 CmsXmlContentDefinition contentDefinition = CmsXmlContentDefinition.unmarshal(cms, m_schema); 93 94 Locale locale = (Locale )OpenCms.getLocaleManager().getDefaultLocales( 96 cms, 97 CmsResource.getParentFolder(resourcename)).get(0); 98 99 CmsXmlContent newContent = CmsXmlContentFactory.createDocument( 101 cms, 102 locale, 103 OpenCms.getSystemInfo().getDefaultEncoding(), 104 contentDefinition); 105 content = newContent.marshal(); 107 } 108 109 return super.createResource(cms, securityManager, resourcename, content, properties); 111 } 112 113 116 public String getCachePropertyDefault() { 117 118 return "element;locale;"; 119 } 120 121 124 public Map getConfiguration() { 125 126 Map result = new TreeMap (); 127 if (m_schema != null) { 128 result.put(CONFIGURATION_SCHEMA, m_schema); 129 } 130 Map additional = super.getConfiguration(); 131 if (additional != null) { 132 result.putAll(additional); 133 } 134 return result; 135 } 136 137 140 public int getLoaderId() { 141 142 return CmsXmlContentLoader.RESOURCE_LOADER_ID; 143 } 144 145 148 public boolean isDirectEditable() { 149 150 return true; 151 } 152 153 156 public CmsFile writeFile(CmsObject cms, CmsSecurityManager securityManager, CmsFile resource) throws CmsException { 157 158 securityManager.checkPermissions( 161 cms.getRequestContext(), 162 resource, 163 CmsPermissionSet.ACCESS_WRITE, 164 true, 165 CmsResourceFilter.ALL); 166 CmsXmlContent xmlContent = CmsXmlContentFactory.unmarshal(cms, resource, false); 168 resource = xmlContent.getContentDefinition().getContentHandler().prepareForWrite(cms, xmlContent, resource); 170 return super.writeFile(cms, securityManager, resource); 172 } 173 174 } | Popular Tags |