adserviceimpl.java
来自「社区文章采用的是平板、树形自由选择的两种展示方式」· Java 代码 · 共 161 行
JAVA
161 行
/*
* Created on 2007-8-4
* Last modified on 2008-1-1
* Powered by YeQiangWei.com
*/
package com.yeqiangwei.club.service.util.impl;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.yeqiangwei.cache.Cache;
import com.yeqiangwei.club.cache.CacheRegion;
import com.yeqiangwei.cache.singleton.CacheFactory;
import com.yeqiangwei.club.dao.AdDAO;
import com.yeqiangwei.club.dao.DAOLocator;
import com.yeqiangwei.club.dao.DAOWrapper;
import com.yeqiangwei.club.model.Ad;
import com.yeqiangwei.club.exception.ClubException;
import com.yeqiangwei.club.param.AdParameter;
import com.yeqiangwei.club.service.user.UserLogin;
import com.yeqiangwei.club.service.util.AdService;
import com.yeqiangwei.club.util.BeanUtils;
import com.yeqiangwei.util.ParamUtils;
import com.yeqiangwei.util.TypeChange;
import com.yeqiangwei.util.Validator;
public class AdServiceImpl implements AdService{
public static final Cache<Ad> CACHE = CacheFactory.<Ad>creator(CacheRegion.AD);
public static final Cache<Boolean> CACHE_BOOLEAN = CacheFactory.<Boolean>creator("AD_"+CacheRegion.BOOLEAN);
public String getCacheKey(int forumId, byte area){
return "AD: forumId."+forumId+",area."+area;
}
public List<Ad> findAll(){
AdParameter param = new AdParameter();
param.setPage(1);
param.setRows(1000);
return this.getAdDAO().findAll(param);
}
public List<Ad> findByParameter(AdParameter param){
return this.getAdDAO().findByParameter(param);
}
public Ad findById(int id) {
if(id>0){
Ad model = CACHE.get(id);
if(Validator.isEmpty(model)){
model = this.getAdDAO().findById(id);
if(!Validator.isEmpty(model)){
CACHE.put(this.getCacheKey(model.getForumId(),model.getArea()),model);
return model;
}
}
}
return null;
}
public void createOrUpdate(Ad model, String[] forumIds) throws ClubException{
if(!Validator.isEmpty(forumIds)){
List<Integer> list = new ArrayList<Integer>();
for(int i=0; i<forumIds.length; i++){
list.add(TypeChange.stringToInt(forumIds[i]));
}
this.createOrUpdate(model,list);
CACHE.put(this.getCacheKey(model.getForumId(),model.getArea()),model);
}
}
public void createOrUpdate(Ad model, List<Integer> forumIds) throws ClubException {
for(Integer forumId : forumIds){
Ad item = this.getAdDAO().findByForumIdAndArea(forumId,model.getArea());
if(Validator.isEmpty(item)){
model.setAdId(0);
item = new Ad();
BeanUtils.copyProperties(item, model);
item.setForumId(forumId);
this.getAdDAO().create(item);
}else{
int adid = item.getAdId();
BeanUtils.copyProperties(item,model);
item.setAdId(adid);
item.setForumId(forumId);
this.getAdDAO().update(item);
}
model.setForumId(forumId);
if(!Validator.isEmpty(model)){
CACHE.put(this.getCacheKey(model.getForumId(),model.getArea()),model);
}
}
}
public int deleteById(int id) throws ClubException {
if(id>0){
Ad item = this.getAdDAO().findById(id);
if(!Validator.isEmpty(item)){
CACHE.remove(this.getCacheKey(item.getForumId(),item.getArea()));
return this.getAdDAO().delete(item);
}
}
return 0;
}
public Ad findByForumIdAndArea(HttpServletRequest request, byte area){
int forumId = ParamUtils.getIntParameter(request,"forumId");
Ad model = CACHE.get(this.getCacheKey(forumId,area));
Boolean isput = CACHE_BOOLEAN.get(this.getCacheKey(forumId,area)+"-isput");
if(Validator.isEmpty(model)&&Validator.isEmpty(isput)){
model = this.getAdDAO().findByForumIdAndArea(forumId, area);
if(!Validator.isEmpty(model)){
CACHE.put(this.getCacheKey(forumId,area),model);
}
CACHE_BOOLEAN.put(this.getCacheKey(forumId,area)+"-isput",new Boolean(true));
}
if(!Validator.isEmpty(model)){
byte isList = model.getIsList();
int userId = UserLogin.getUserId(request);
switch (isList){
case 0: //不显示
model = null;
break;
case 1: //仅显示给过客
if(userId>0){
model = null;
}
break;
case 2: //仅显示给登录用户
if(userId==0){
model = null;
}
break;
}
}
return model;
}
public String getAdContent(HttpServletRequest request, byte area){
Ad model = this.findByForumIdAndArea(request,area);
if(!Validator.isEmpty(model)){
return model.getContent();
}else{
return "";
}
}
public void clearCache() {
CACHE.clear();
}
public AdDAO getAdDAO() {
return DAOWrapper.<AdDAO>getSingletonInstance(DAOLocator.AD);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?