1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.gwe.utils.web;
18
19 import java.io.UnsupportedEncodingException;
20 import java.net.URLEncoder;
21 import java.util.HashMap;
22 import java.util.Map;
23
24 import org.gwe.app.client.web.request.PageModel;
25 import org.gwe.app.client.web.request.Param;
26
27
28
29
30
31 public class HtmlLink extends HashMap<Object, Object> {
32
33 private String context;
34 private boolean external = false;
35
36 public HtmlLink(boolean external, String context, PageModel model) {
37 this(external, context);
38 for (Param param : Param.values())
39 put(param, model.getParam(param));
40 }
41
42 public HtmlLink(boolean external, String context) {
43 this.external = external;
44 this.context = context;
45 }
46
47 public HtmlLink addParam(Object key, Object value) {
48 put(key, value);
49 return this;
50 }
51
52 public String render() {
53 StringBuffer result = new StringBuffer();
54 if (context.contains("#")) return context;
55 result.append(context + "?");
56 for (Map.Entry<Object, Object> entry : entrySet())
57 result.append(encode(entry.getKey()) + "=" + encode(entry.getValue()) + "&");
58
59 return result.toString();
60 }
61
62 public StringBuffer getHTML(StringBuffer content) {
63 StringBuffer result = new StringBuffer();
64 result.append("<a href=\"").append(render()).append("\" ").append(getAttributes()).append(">");
65 result.append(content);
66 result.append("</a>");
67 return result;
68 }
69
70 private String encode(Object value) {
71 String valueStr = (value == null) ? "" : value.toString();
72 try {
73 return URLEncoder.encode(valueStr, "UTF-8");
74 } catch (UnsupportedEncodingException e) {
75 return valueStr;
76 }
77 }
78
79 public String getAttributes() {
80 return external ? " class=\"externalLink\" " : "";
81 }
82 }