package com.kingschan.blog.dao.impl; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Repository; import com.kingschan.blog.dao.HibernateBaseDao; import com.kingschan.blog.dao.WebSiteDao; import com.kingschan.blog.po.BaseAgent; import com.kingschan.blog.po.WebSite; import com.kingschan.blog.util.TimeStampUtil; import eu.bitwalker.useragentutils.Browser; import eu.bitwalker.useragentutils.UserAgent; /** * * <pre> * 类名称:WebSiteDaoImpl * 类描述: * 创建人:陈国祥 (kingschan) * 创建时间:2016-2-22 上午11:06:24 * 修改人:Administrator * 修改时间:2016-2-22 上午11:06:24 * 修改备注: * @version V1.0 * </pre> */ @SuppressWarnings("unchecked") @Repository public class WebSiteDaoImpl extends HibernateBaseDao implements WebSiteDao { private static Logger log = LoggerFactory.getLogger(WebSiteDaoImpl.class); @Override public WebSite getWebSite(String keyword) throws Exception { if (keyword.matches("\\w{32}")) { return (WebSite) get(WebSite.class, keyword); } else { String hql = "from WebSite a where a.websiteName=?"; List<WebSite> lis = (List<WebSite>) queryForListByHql(hql,true,false, keyword); return null != lis && lis.size() > 0 ? lis.get(0) : null; } } @Override public void saveWebSite(WebSite ws) throws Exception { if (null==ws.getId()||ws.getId().isEmpty()) { ws.setWebsiteDatetime(TimeStampUtil.getCurrentDate()); save(ws); }else{ update(ws); } } @Override public List<WebSite> getWebSiteList() throws Exception { String hql="from WebSite"; return (List<WebSite>) queryForListByHql(hql,true,false); } @Override public void analysisRequestAgent() throws Exception { String insert_agent_sql="insert into base_agent(agent_key,agent_browser_name,agent_browser_version,agent_browser_engine,agent_os,agent_device) select req_agent,'','','','','' from blog_request_log a left join base_agent b on a.req_agent=b.agent_key where a.req_agent <> '' and b.id is null group by req_agent "; int insert_affected=executeSQL(insert_agent_sql); log.info("插入未存在的agent_key {} 条",insert_affected); String hql =" from BaseAgent where agentBrowserName='' or agentOs='' or agentDevice=''"; List<BaseAgent> agents = (List<BaseAgent>) queryForListByHql(hql, false, false); for (BaseAgent baseAgent : agents) { UserAgent userAgent = UserAgent.parseUserAgentString(baseAgent.getAgentKey()); Browser browser=userAgent.getBrowser(); String engine=null==browser?"":String.valueOf(browser.getRenderingEngine()); String browserName=null==browser?"":String.valueOf(browser.getGroup().getName()); String version=null==userAgent.getBrowserVersion()?"":String.valueOf(userAgent.getBrowserVersion()); String os=null==userAgent.getOperatingSystem()?"":String.valueOf(userAgent.getOperatingSystem().getDeviceType().getName()); String device=null==userAgent.getOperatingSystem()?"":String.valueOf(userAgent.getOperatingSystem().getName()); baseAgent.setAgentBrowserEngine(engine); baseAgent.setAgentBrowserName(browserName); baseAgent.setAgentBrowserVersion(version); baseAgent.setAgentDevice(os); baseAgent.setAgentOs(device); save(baseAgent); } } }