1 package com.atlassian.plugin.webresource;
2
3 import org.apache.commons.lang.StringUtils;
4 import org.apache.commons.lang.BooleanUtils;
5
6 import java.util.Map;
7 import java.util.List;
8 import java.util.Arrays;
9
10 public class CssWebResource extends AbstractWebResourceFormatter
11 {
12 static final WebResourceFormatter FORMATTER = new CssWebResource();
13
14 private static final String CSS_EXTENSION = ".css";
15 private static final String MEDIA_PARAM = "media";
16 private static final String IEONLY_PARAM = "ieonly";
17
18 private static final List<String> HANDLED_PARAMETERS = Arrays.asList("title", MEDIA_PARAM, "charset");
19
20 public boolean matches(String name)
21 {
22 return name != null && name.endsWith(CSS_EXTENSION);
23 }
24
25 public String formatResource(String url, Map<String, String> params)
26 {
27 StringBuffer buffer = new StringBuffer();
28 buffer.append("<link type=\"text/css\" rel=\"stylesheet\" href=\"").append(url).append("\"");
29 List attributes = getParametersAsAttributes(params);
30 if (attributes != null && attributes.size() > 0)
31 {
32 buffer.append(" ").append(StringUtils.join(attributes.iterator(), " "));
33 }
34
35
36 if (!params.containsKey(MEDIA_PARAM))
37 {
38 buffer.append(" media=\"all\"");
39 }
40 buffer.append(">\n");
41
42
43 if (BooleanUtils.toBoolean(params.get(IEONLY_PARAM)))
44 {
45 buffer.insert(0, "<!--[if IE]>\n");
46 buffer.append("<![endif]-->\n");
47 }
48
49 return buffer.toString();
50 }
51
52 protected List<String> getAttributeParameters()
53 {
54 return HANDLED_PARAMETERS;
55 }
56 }