📄 websitemngimpl.java
字号:
package com.jeecms.core.manager.impl;
import java.util.List;
import net.sf.ehcache.Cache;
import net.sf.ehcache.Element;
import org.springframework.orm.hibernate3.HibernateObjectRetrievalFailureException;
import com.jeecms.core.JeeCoreManagerImpl;
import com.jeecms.core.dao.WebsiteDao;
import com.jeecms.core.entity.Website;
import com.jeecms.core.manager.WebsiteMng;
import com.ponyjava.common.hibernate3.OrderBy;
import com.ponyjava.common.web.PaginationSupport;
/**
* 站点管理实现。
* <p>
* 系统启动时,加载所有站点信息。使用hibernate二级缓存,应用缓存保存域名domain到id的关系。
* </p>
* <ul>
* <li> 修改website是检查是否修改域名,否则清空缓存。 </li>
* <li>添加站点时,保存缓存</li>
* </ul>
*
* @author liufang
*
*/
public class WebsiteMngImpl extends JeeCoreManagerImpl<Website> implements
WebsiteMng {
@Override
@SuppressWarnings("unchecked")
public List<Website> getAllWebsite() {
return findAll();
}
@Override
public PaginationSupport getAllWebsite(int page, int countPerPage,
boolean order) {
return findAll(page, countPerPage, new OrderBy[] { OrderBy.desc("id") });
}
@Override
public boolean removeWebsite(Long id) {
Website website = getWebsiteDao().load(id);
getWebsiteDao().delete(website);
websiteDomainCache.remove(website.getDomain());
return true;
}
@Override
public Website getWebsite(Long id) {
Website w = null;
try {
w = getWebsiteDao().load(id);
} catch (HibernateObjectRetrievalFailureException e) {
log.warn("get website from cache, id not exist:" + id);
w = null;
}
return w;
}
@Override
public Website getWebsite(String domainName) {
Element e = websiteDomainCache.get(domainName);
if (e != null) {
Object websiteId = e.getObjectValue();
return getWebsite((Long) websiteId);
} else {
log.warn("get website from cache, domain not exist:" + domainName);
return null;
}
}
@Override
public List<Website> getListByUserUnited(Long unitedId) {
return getWebsiteDao().getListByUserUnited(unitedId);
}
@Override
public void loadAllWebsiteToCache() {
websiteDomainCache.removeAll();
List<Website> ws = getWebsiteDao().findAll();
for (Website w : ws) {
websiteDomainCache.put(new Element(w.getDomain(), w.getId()));
}
}
@Override
public void saveWebsite(Website w) {
w.setSuffix(Website.DEF_SUFFIX);
getWebsiteDao().save(w);
websiteDomainCache.put(new Element(w.getDomain(), w.getId()));
getWebsiteDao().refresh(w);
}
@Override
public boolean updateWebsite(Website website) {
Website before = getWebsite(website.getId());
String beforeDomain = before.getDomain();
Website after = (Website) getWebsiteDao().updateDefault(website);
if (!after.getDomain().equals(beforeDomain)) {
websiteDomainCache.remove(beforeDomain);
websiteDomainCache
.put(new Element(after.getDomain(), after.getId()));
}
return true;
}
private Cache websiteDomainCache;
public void setWebsiteDao(WebsiteDao dao) {
super.setDao(dao);
}
public WebsiteDao getWebsiteDao() {
return (WebsiteDao) super.getDao();
}
public Cache getWebsiteDomainCache() {
return websiteDomainCache;
}
public void setWebsiteDomainCache(Cache websiteDomainCache) {
this.websiteDomainCache = websiteDomainCache;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -