blob: d53c2588856f5eadcab36a0fa981dd6d20843d06 [file] [log] [blame]
package tracker;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import com.querydsl.jpa.impl.JPAUpdateClause;
import entity.TTorent;
import entity.TransRecord;
import entity.config;
import entity.QUserPT;
public class Tracker implements TrackerInterface {
private final EntityManagerFactory emf;
// 默认构造:产线数据库
public Tracker() {
config cfg = new config();
Map<String,Object> props = new HashMap<>();
props.put("javax.persistence.jdbc.url",
"jdbc:mysql://" + cfg.SqlURL + "/" + cfg.Database);
props.put("javax.persistence.jdbc.user", cfg.SqlUsername);
props.put("javax.persistence.jdbc.password", cfg.SqlPassword);
this.emf = Persistence.createEntityManagerFactory("myPersistenceUnit", props);
}
// 测试传入:测试库
public Tracker(EntityManagerFactory emf) {
this.emf = emf;
}
@Override
public boolean AddUpLoad(String userid, int upload) {
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
try {
tx.begin();
QUserPT q = QUserPT.userPT;
long updated = new JPAUpdateClause(em, q)
.where(q.userid.eq(userid))
.set(q.upload, q.upload.add(upload))
.execute();
tx.commit();
// 成功时 updated>0 返回 false,失败时返回 true
return updated <= 0;
} catch(Exception e) {
if (tx.isActive()) tx.rollback();
return true;
} finally {
em.close();
}
}
@Override
public boolean ReduceUpLoad(String userid, int upload){
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
try {
tx.begin();
QUserPT q = QUserPT.userPT;
long updated = new JPAUpdateClause(em, q)
.where(q.userid.eq(userid))
.set(q.upload, q.upload.subtract(upload))
.execute();
tx.commit();
// 成功时 updated>0 返回 false,失败时返回 true
return updated <= 0;
} catch(Exception e) {
if (tx.isActive()) tx.rollback();
return true;
} finally {
em.close();
}
}
@Override
public boolean AddDownload(String userid,int download){
return true;
};//给用户增加下载量,返回0成功,返回1失败;
@Override
public boolean ReduceDownload(String userid,int download){
return true;
};//给用户减少下载量,返回0成功,返回1失败;
@Override
public boolean AddMagic(String userid,int magic){
return true;
};//给用户增加魔力值,返回0成功,返回1失败;
@Override
public boolean ReduceMagic(String userid,int magic){
return true;
};//给用户减少魔力值,返回0成功,返回1失败;
@Override
public TTorent ReadTorrent(File torrent){
return new TTorent();
};//传入torrent文件,解析后返回TTorent类
@Override
public int SaveTorrent(TTorent seed,String seedid){
return 0;
};//保存seedid对应的ttorent信息
@Override
public File GetTTorent(String seedid,String userid){
return null;
};//根据种子id获得ttorent信息然后构建Ttorent文件并返回,同时记录用户的下载行为
@Override
public int AddRecord(String seedid,TransRecord rd){
return 0;
};//新增一个seedid对应的种子的传输任务记录
}