package net.simpleframework.content.component;
import java.util.Date;
import java.util.regex.MatchResult;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.http.HttpServletRequest;
import net.simpleframework.ado.db.ITableEntityManager;
import net.simpleframework.organization.account.AccountSession;
import net.simpleframework.organization.account.IAccount;
import net.simpleframework.organization.user.IUser;
import net.simpleframework.util.StringUtils;
import net.simpleframework.web.page.component.ui.htmleditor.HtmlEditorRegistry;
/**
* LGPLv3
*
* @author (cknet@126.com, 13910090885)
* http://code.google.com/p/simpleframework/
* http://www.simpleframework.net
*/
public abstract class ContentComponentUtils {
public static final String DOCUMENT_ID = "__document_Id";
public static void initContentBean(final HttpServletRequest request,
final ITableEntityManager manager, final AbstractContentBase bean) {
bean.setId(manager.nextId("id"));
bean.setCreateDate(new Date());
final IAccount account = AccountSession.getLogin(request.getSession());
if (account != null) {
final IUser user = account.getUser();
bean.setUserId(user.getId());
}
}
public static void updateLastUpdate(final HttpServletRequest request,
final AbstractContentBase bean) {
bean.setLastUpdate(new Date());
final IAccount account = AccountSession.getLogin(request.getSession());
if (account != null) {
final IUser user = account.getUser();
bean.setLastUserId(user.getId());
}
}
private static final Pattern EXPR_PATTERN = Pattern
.compile("<script[^>]*>([\\S\\s]*?)</script>");
public static String stripScripts(final String content) {
if (StringUtils.hasText(content)) {
return EXPR_PATTERN.matcher(content).replaceAll("");
} else {
return content;
}
}
private static final Pattern smileyPattern = Pattern
.compile("[\\s\\S]*\\[:em(\\d+)\\][\\s\\S]*");
public static String doContent(final String content) {
final StringBuilder sb = new StringBuilder();
sb.append(content);
while (true) {
final Matcher matcher = smileyPattern.matcher(sb.toString());
if (matcher.matches()) {
final MatchResult result = matcher.toMatchResult();
final String group = result.group(1);
final String tmp = sb.toString();
sb.setLength(0);
sb.append(tmp.substring(0, result.start(1) - 4));
sb.append("<img src=\"").append(
HtmlEditorRegistry.getHtmlEditorRegistry().getResourceHomePath());
sb.append("/smiley/").append(group).append(".gif\">");
sb.append(tmp.substring(result.end(1) + 1));
} else {
break;
}
}
return stripScripts(sb.toString());
}
}
|