package cn.me.fdfs.service.impl;
import cn.me.fdfs.service.BaseService;
import cn.me.fdfs.service.TestModuleService;
import cn.me.fdfs.vo.DownloadFileRecord;
import cn.me.fdfs.vo.Fdfs_file;
import cn.me.fdfs.vo.Line;
import com.mysql.jdbc.StringUtils;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created with IntelliJ IDEA.
* User: Administrator
* Date: 12-9-4
* Time: 下午4:45
* To change this template use File | Settings | File Templates.
*/
@Service
public class TestModuleServiceImpl extends BaseService implements TestModuleService {
@Override
@Transactional(propagation = Propagation.REQUIRED)
public List<Fdfs_file> getAllFileList() {
Session session = getSession();
Query query = session.createQuery(" from Fdfs_file");
return query.list();
}
@Override
@Transactional(propagation = Propagation.REQUIRED)
public Fdfs_file getFileByFileId(String fileId) {
Session session = getSession();
Query query = session.createQuery(" from Fdfs_file f where f.file_id='"+fileId+"'");
List<Fdfs_file> fileList=query.list();
if(fileList.size()>0){
return fileList.get(0);
}else{
return null;
}
}
@Override
@Transactional(propagation = Propagation.REQUIRED)
public void saveFastFile(Fdfs_file f) {
Session session = getSession();
session.saveOrUpdate(f);
}
@Override
@Transactional(propagation = Propagation.REQUIRED)
public Map<String,Object[]> getAllFileListByTen(String ip) {
Map<String,Object[]> map=new HashMap<String,Object[]>();
Session session = getSession();
Query query = session.createQuery(" from DownloadFileRecord f where f.src_ip='"+ip+"' order by f.accessCount desc");
List<DownloadFileRecord> list=query.list();
Line sc = new Line(ip);
sc.setName(ip);
String[] listName=new String[10];
Line[] lines=new Line[1];
long sum=0;
for(int i=0;i<list.size();i++){
DownloadFileRecord downloadFileRecord=list.get(i) ;
if(i<10){
Fdfs_file f=getFileByFileId(downloadFileRecord.getFileId().substring(1));
sc.getData().add(new Object[]{f.getFile_name(),downloadFileRecord.getAccessCount()});
listName[i]=f.getFile_name();
sum=sum+ downloadFileRecord.getAccessCount();
}else{
sum=sum+downloadFileRecord.getAccessCount();
}
}
lines[0]=sc;
map.put("x", listName);
map.put("y", lines);
map.put("sum",new Object[]{sum});
return map;
}
@Override
@Transactional(propagation = Propagation.REQUIRED)
public Line getAllFileListForPie(String ip) {
Session session = getSession();
Query query = session.createQuery(" from DownloadFileRecord f where f.src_ip='"+ip+"' order by f.accessCount desc");
query.setMaxResults(10);
List<DownloadFileRecord> list=query.list();
Line sc = new Line(ip);
sc.setName(ip);
for(DownloadFileRecord downloadFileRecord:list){
Fdfs_file f=getFileByFileId(downloadFileRecord.getFileId().substring(1));
sc.getData().add(new Object[]{f.getFile_name(),downloadFileRecord.getAccessCount()});
}
return sc;
}
@Override
@Transactional(propagation = Propagation.REQUIRED)
public List<Fdfs_file> getAllFileListByPage(String pageNum, String pageSize,String keyForSearch) {
Session session = getSession();
StringBuilder sb=new StringBuilder(" from Fdfs_file f");
if(!StringUtils.isNullOrEmpty(keyForSearch)){
sb.append(" where f.file_id='"+keyForSearch+"'");
pageNum="1";
}
Query query = session.createQuery(sb.toString());
query.setMaxResults(Integer.parseInt(pageSize));
query.setFirstResult((Integer.parseInt(pageNum)-1)*Integer.parseInt(pageSize));
return query.list();
}
@Override
@Transactional(propagation = Propagation.REQUIRED)
public int getCountDownLoadFile(String keyForSearch) {
Session session = getSession();
StringBuilder sb=new StringBuilder(" from Fdfs_file f");
if(keyForSearch!=null&&keyForSearch!=""){
sb.append(" where f.file_id='"+keyForSearch+"'");
}
Query query = session.createQuery(sb.toString());
return query.list().size();
}
}