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