Author: ozeigermann Date: Thu Apr 12 15:26:09 2007 New Revision: 528261 URL: http://svn.apache.org/viewvc?view=rev&rev=528261 Log: Simple extension to let the store infer the content type of resources without properties
Modified: jakarta/slide/trunk/wck/src/org/apache/slide/simple/store/WebdavStoreAdapter.java Modified: jakarta/slide/trunk/wck/src/org/apache/slide/simple/store/WebdavStoreAdapter.java URL: http://svn.apache.org/viewvc/jakarta/slide/trunk/wck/src/org/apache/slide/simple/store/WebdavStoreAdapter.java?view=diff&rev=528261&r1=528260&r2=528261 ============================================================================== --- jakarta/slide/trunk/wck/src/org/apache/slide/simple/store/WebdavStoreAdapter.java (original) +++ jakarta/slide/trunk/wck/src/org/apache/slide/simple/store/WebdavStoreAdapter.java Thu Apr 12 15:26:09 2007 @@ -61,6 +61,59 @@ public class WebdavStoreAdapter extends AbstractXAServiceBase implements Service, ContentStore, NodeStore, LockStore, RevisionDescriptorStore, RevisionDescriptorsStore, SecurityStore { + private static final String[][] QND_EXTENSION_TO_DOCTYPE_MAPPING_STRINGS = new String[][] { + { "txt", "text/plain" }, { "html", "text/html" }, { "csv", "text/csv" }, + { "pdf", "application/pdf" }, { "doc", "application/msword" }, + { "ppt", "application/mspowerpoint" }, { "xls", "application/msexcel" }, + { "xml", "text/xml" }, }; + + protected static final Map QND_EXTENSION_TO_DOCTYPE_MAPPING = new HashMap(); + + static { + for (int i = 0; i < QND_EXTENSION_TO_DOCTYPE_MAPPING_STRINGS.length; i++) { + String[] entry = QND_EXTENSION_TO_DOCTYPE_MAPPING_STRINGS[i]; + String ext = entry[0]; + String type = entry[1]; + QND_EXTENSION_TO_DOCTYPE_MAPPING.put(ext, type); + } + } + + public static String getContentTypeForExtension(String extension) { + String type = (String)QND_EXTENSION_TO_DOCTYPE_MAPPING.get(extension); + return type; + } + + public static String getFileName(String uri) { + String name; + int lastSlash = uri.lastIndexOf('/'); + if (lastSlash != -1) { + name = uri.substring(lastSlash + 1); + } else { + name = uri; + } + return name; + } + + public static String getFileNameNoExtension(String uri) { + String name = getFileName(uri); + int lastDot = name.lastIndexOf('.'); + if (lastDot != -1) { + name = name.substring(0, lastDot + 1); + } + return name; + } + + public static String getExtension(String filename) { + String ext = ""; + int lastDot = filename.lastIndexOf('.'); + if (lastDot != -1) { + ext = filename.substring(lastDot + 1); + } + return ext; + } + + + protected static final String LOG_CHANNEL = WebdavStoreAdapter.class.getName(); protected static final String CALLBACK_PARAMETER = "callback-store"; @@ -769,6 +822,11 @@ descriptor.setResourceType(NodeRevisionDescriptor.COLLECTION_TYPE); descriptor.setContentLength(0); } else { + String extension = getExtension(getFileName(uri.toString())); + String type = getContentTypeForExtension(extension); + if (type != null) { + descriptor.setContentType(type); + } descriptor.removeProperty(NodeRevisionDescriptor.RESOURCE_TYPE); long length = store.getResourceLength(uri.toString()); if (length != -1) { --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]