package com.aggrepoint.winlet.site.domain;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*
* @author Jiangming Yang (yangjm@gmail.com)
*/
public class Area extends Base {
private boolean cascade;
private String content;
/** 页面里引用的Winlet的URL */
private List<String> winlets = new ArrayList<String>();
public boolean isCascade() {
return cascade;
}
public void setCascade(boolean cascade) {
this.cascade = cascade;
}
public String getContent() {
return content;
}
Pattern P_WINLET = Pattern
.compile("<div\\s+data-winlet\\s*=\\s*\"([^\\?\"\\s]+)([^\"]*)\"");
public void setContent(String content, String contextRoot) {
this.content = content;
Matcher m = P_WINLET.matcher(content);
StringBuffer sb = new StringBuffer();
while (m.find()) {
String url = m.group(1);
if (!url.startsWith("/"))
url = "/" + url;
if (!url.startsWith(contextRoot + "/")) // winlet路径不是以context
// root开始,加上context root
url = contextRoot + url;
winlets.add(url.substring(contextRoot.length() + 1));
m.appendReplacement(sb,
("<div data-winlet=\"" + url + m.group(2) + "\"")
.replaceAll("\\$", "\\\\\\$"));
}
m.appendTail(sb);
this.content = sb.toString();
}
public List<String> getWinletUrls() {
return winlets;
}
}