package scrum.client.wiki;
public class Link extends AWikiElement {
private String href;
private String label;
public Link(String href, String label) {
super();
this.href = enhance(href);
this.label = label;
}
public Link(String href) {
this(href, shorten(href));
}
@Override
String toHtml(HtmlContext context) {
StringBuilder sb = new StringBuilder();
sb.append("<a href=\"");
sb.append(enhance(href));
sb.append("\" target=\"_blank\">");
sb.append(escapeHtml(label));
sb.append("</a>");
return sb.toString();
}
private String enhance(String s) {
if (s.startsWith("http://")) return s;
if (s.startsWith("https://")) return s;
if (s.startsWith("ftp://")) return s;
if (s.startsWith("mailto://")) return s;
if (s.startsWith("apt://")) return s;
return "http://" + s;
}
private static String shorten(String s) {
if (s.startsWith("http://")) {
s = s.substring(7);
} else if (s.startsWith("https://")) {
s = s.substring(7);
} else if (s.startsWith("ftp://")) {
s = s.substring(6);
}
if (s.startsWith("www.")) {
s = s.substring(4);
}
if (s.length() > 20) {
s = s.substring(0, 20) + "...";
}
return s;
}
public String getHref() {
return href;
}
public String getLabel() {
return label;
}
@Override
public String toString() {
return "EntityReference(" + href + ")";
}
}