001 package org.tynamo.blob;
002
003 import org.apache.tapestry5.Asset;
004 import org.apache.tapestry5.ioc.internal.util.ClasspathResource;
005 import org.apache.tapestry5.services.AssetFactory;
006
007 import java.util.HashMap;
008 import java.util.Map;
009
010 /**
011 * The Trails {@link org.trails.component.blob.IconResolver} default implementation.
012 */
013 public class DefaultIconResolver implements IconResolver
014 {
015
016 private AssetFactory classpathAssetFactory;
017
018 public DefaultIconResolver(AssetFactory classpathAssetFactory)
019 {
020 this.classpathAssetFactory = classpathAssetFactory;
021 }
022
023 private static Map<String, String> map = new HashMap<String, String>();
024 private Map<String, Asset> assetsMap = new HashMap<String, Asset>();
025
026 public static final String DEFAULT_CONTENT_TYPE = "application/octet-stream";
027
028 static
029 {
030 map.put("application/x-zip-compressed", "/org/trails/component/blob/image/asset/winzip.gif");
031 map.put("application/pdf", "/org/trails/component/blob/image/asset/icadobe.gif");
032 map.put("application/msword", "/org/trails/component/blob/image/asset/icdoc.gif");
033 map.put("application/vnd.visio", "/org/trails/component/blob/image/asset/icdoc.gif");
034 map.put("application/vnd.ms-powerpoint", "/org/trails/component/blob/image/asset/icppt.gif");
035 map.put("application/vnd.ms-excel", "/org/trails/component/blob/image/asset/icxls.gif");
036 map.put(DEFAULT_CONTENT_TYPE, "/org/trails/component/blob/image/asset/icgen.gif");
037 map.put("text/html", "/org/trails/component/blob/image/asset/ichtm.gif");
038 map.put("text/plain", "/org/trails/component/blob/image/asset/ictxt.gif");
039 map.put("text/css", "/org/trails/component/blob/image/asset/ictxt.gif");
040 map.put("text/xml", "/org/trails/component/blob/image/asset/icxml.gif");
041 map.put("image/tiff", "/org/trails/component/blob/image/asset/icgen.gif");
042 map.put("video/avi", "/org/trails/component/blob/image/asset/icwmp.gif");
043 map.put("video/mpeg", "/org/trails/component/blob/image/asset/icwmp.gif");
044 map.put("video/mp4", "/org/trails/component/blob/image/asset/icwmp.gif");
045 map.put("video/quicktime", "/org/trails/component/blob/image/asset/icwmp.gif");
046 map.put("video/x-ms-wmv", "/org/trails/component/blob/image/asset/icwmp.gif");
047 }
048
049 public Asset getAsset(String contentType)
050 {
051 if (!assetsMap.containsKey(contentType))
052 {
053 if (map.containsKey(contentType))
054 {
055 assetsMap.put(contentType,
056 classpathAssetFactory.createAsset(new ClasspathResource(map.get(contentType))));
057 } else
058 {
059 return getAsset(DEFAULT_CONTENT_TYPE);
060 }
061 }
062 return assetsMap.get(contentType);
063 }
064 }