/* * Copyright [duowan.com] * Web Site: http://www.duowan.com * Since 2005 - 2013 */ package com.fpcms.service.impl; import static com.github.rapid.common.util.holder.BeanValidatorHolder.validateWithException; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import com.github.rapid.common.util.page.Page; import com.fpcms.common.util.IpUtil; import com.fpcms.common.util.RandomUtil; import com.fpcms.common.util.StringHelper; import com.fpcms.common.webcrawler.htmlparser.HtmlPage.Anchor; import com.fpcms.dao.CmsDomainDao; import com.fpcms.model.CmsDomain; import com.fpcms.query.CmsDomainQuery; import com.fpcms.service.CmsDomainService; /** * [CmsDomain] 的业务操作实现类 * * @author badqiu email:badqiu(a)gmail.com * @version 1.0 * @since 1.0 */ @Service("cmsDomainService") @Transactional public class CmsDomainServiceImpl implements CmsDomainService { protected static final Logger log = LoggerFactory.getLogger(CmsDomainServiceImpl.class); // // 请删除无用的方法,代码生成器只是为你生成一个架子 // private CmsDomainDao cmsDomainDao; /**增加setXXXX()方法,spring就可以通过autowire自动设置对象属性,请注意大小写*/ public void setCmsDomainDao(CmsDomainDao dao) { this.cmsDomainDao = dao; } /** * 创建CmsDomain **/ public CmsDomain create(CmsDomain cmsDomain) { Assert.notNull(cmsDomain,"'cmsDomain' must be not null"); initDefaultValuesForCreate(cmsDomain); new CmsDomainChecker().checkCreateCmsDomain(cmsDomain); cmsDomainDao.insert(cmsDomain); return cmsDomain; } /** * 更新CmsDomain **/ public CmsDomain update(CmsDomain cmsDomain) { Assert.notNull(cmsDomain,"'cmsDomain' must be not null"); new CmsDomainChecker().checkUpdateCmsDomain(cmsDomain); cmsDomain.setIp(IpUtil.getIp(cmsDomain.getDomain())); cmsDomainDao.update(cmsDomain); return cmsDomain; } /** * 删除CmsDomain **/ public void removeById(String domain) { cmsDomainDao.deleteById(domain); } /** * 根据ID得到CmsDomain **/ public CmsDomain getById(String domain) { return cmsDomainDao.getById(domain); } /** * 分页查询: CmsDomain **/ @Transactional(readOnly=true) public Page<CmsDomain> findPage(CmsDomainQuery query) { Assert.notNull(query,"'query' must be not null"); return cmsDomainDao.findPage(query); } @Transactional(readOnly=true) public CmsDomain getByRemarks(String remarks) { return cmsDomainDao.getByRemarks(remarks); } /** * 为创建时初始化相关默认值 **/ public void initDefaultValuesForCreate(CmsDomain cmsDomain) { cmsDomain.setIp(IpUtil.getIp(cmsDomain.getDomain())); } /** * CmsDomain的属性检查类,根据自己需要编写自定义检查 **/ public class CmsDomainChecker { /**可以在此检查只有更新才需要的特殊检查 */ public void checkUpdateCmsDomain(CmsDomain cmsDomain) { checkCmsDomain(cmsDomain); } /**可以在此检查只有创建才需要的特殊检查 */ public void checkCreateCmsDomain(CmsDomain cmsDomain) { checkCmsDomain(cmsDomain); } /** 检查到有错误请直接抛异常,不要使用 return errorCode的方式 */ public void checkCmsDomain(CmsDomain cmsDomain) { // Bean Validator检查,属性检查失败将抛异常 validateWithException(cmsDomain); //复杂的属性的检查一般需要分开写几个方法,如 checkProperty1(v),checkProperty2(v) } } @Override public List<CmsDomain> findAll() { return cmsDomainDao.findAll(); } public void updateCmsDomainStatus() { for(CmsDomain domain : findAll()) { domain.getHttpStatus(); update(domain); } } @Override public CmsDomain randomSelectDomain() { return RandomUtil.randomSelect(findAll()); } @Override public String insertRandomLinks(String article,int randomLinkCount) { StringBuilder result = new StringBuilder(article); int fromIndex = 0; for(int i = 0 ; i < randomLinkCount; i++) { int index = StringHelper.indexOf(result,fromIndex,"。","."); if(index >= 0) { String link = randomDomainLink(); fromIndex = index + 1 + link.length(); result.insert(index + 1, link); } } return result.toString(); } private String randomDomainLink() { CmsDomain domain = randomSelectDomain(); Assert.notNull(domain); return domain.getYesterdayOuterLinked(); } }