View Javadoc

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