📄 attachment.java
字号:
package com.redmoon.forum;
import java.io.File;
import java.io.Serializable;
import java.sql.*;
import cn.js.fan.db.Conn;
import cn.js.fan.web.Global;
import com.redmoon.forum.person.UserDb;
import org.apache.log4j.Logger;
import cn.js.fan.util.StrUtil;
import cn.js.fan.util.DateUtil;
public class Attachment implements Serializable {
long id;
long msgId;
String name;
String fullPath;
String diskName;
String visualPath;
String connname;
String LOAD = "SELECT msgId, name, fullpath, diskname, visualpath, orders, DOWNLOAD_COUNT, UPLOAD_DATE, FILE_SIZE FROM sq_message_attach WHERE id=?";
String SAVE = "update sq_message_attach set msgId=?, name=?, fullpath=?, diskname=?, visualpath=?, orders=?, DOWNLOAD_COUNT=? WHERE id=?";
Logger logger = Logger.getLogger(Attachment.class.getName());
public Attachment(long id) {
connname = Global.defaultDB;
if (connname.equals(""))
logger.info("Attachment:connname is empty.");
this.id = id;
loadFromDb();
}
public Attachment(int orders, long msgId) {
connname = Global.defaultDB;
if (connname.equals(""))
logger.info("Attachment:connname is empty.");
this.orders = orders;
this.msgId = msgId;
loadFromDbByOrders();
}
public Attachment getAttachment(int id) {
return new Attachment(id);
}
public long getMsgId() {
return msgId;
}
public boolean del() {
String sql = "delete from sq_message_attach where id=?";
Conn conn = new Conn(connname);
boolean re = false;
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setLong(1, id);
re = conn.executePreUpdate()==1?true:false;
// logger.info("del: re=" + re);
pstmt.close();
// 更新其后的附件的orders
sql = "update sq_message_attach set orders=orders-1 where msgId=? and orders>?";
pstmt = conn.prepareStatement(sql);
pstmt.setLong(1, msgId);
pstmt.setInt(2, orders);
conn.executePreUpdate();
}
catch (SQLException e) {
logger.error("del:" + e.getMessage());
}
finally {
if (conn!=null) {
conn.close(); conn = null;
}
}
if (re) {
// 删除文件
File fl = new File(this.fullPath);
long size = fl.length();
fl.delete();
// 更新用户已用的磁盘空间
MsgDb md = new MsgDb();
md = md.getMsgDb(msgId);
UserDb ud = new UserDb();
ud = ud.getUser(md.getName());
long u = ud.getDiskSpaceUsed() - size;
// logger.info("del:u=" + u);
if (u<0)
u = 0;
ud.setDiskSpaceUsed(u);
ud.save();
}
return re;
}
public boolean save() {
Conn conn = new Conn(connname);
boolean re = false;
try {
PreparedStatement pstmt = conn.prepareStatement(SAVE);
pstmt.setLong(1, msgId);
pstmt.setString(2, name);
pstmt.setString(3, fullPath);
pstmt.setString(4, diskName);
pstmt.setString(5, visualPath);
pstmt.setInt(6, orders);
pstmt.setInt(7, downloadCount);
pstmt.setLong(8, id);
re = conn.executePreUpdate()==1?true:false;
}
catch (SQLException e) {
logger.error("save:" + e.getMessage());
}
finally {
MsgCache mc = new MsgCache();
mc.refreshUpdate(msgId);
if (conn!=null) {
conn.close(); conn = null;
}
}
return re;
}
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getDiskName() {
return this.diskName;
}
public void setDiskName(String dn) {
this.diskName = dn;
}
public String getFullPath() {
return this.fullPath;
}
public void setFullPath(String f) {
this.fullPath = f;
}
public String getVisualPath() {
return this.visualPath;
}
public int getOrders() {
return orders;
}
public boolean isLoaded() {
return loaded;
}
public int getDownloadCount() {
return downloadCount;
}
public java.util.Date getUploadDate() {
return uploadDate;
}
public long getSize() {
return size;
}
public void setVisualPath(String vp) {
this.visualPath = vp;
}
public void setOrders(int orders) {
this.orders = orders;
}
public void setLoaded(boolean loaded) {
this.loaded = loaded;
}
public void setDownloadCount(int downloadCount) {
this.downloadCount = downloadCount;
}
public void setSize(long size) {
this.size = size;
}
public void setUploadDate(Date uploadDate) {
this.uploadDate = uploadDate;
}
public void loadFromDb() {
Conn conn = new Conn(connname);
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
pstmt = conn.prepareStatement(LOAD);
pstmt.setLong(1, id);
rs = conn.executePreQuery();
if (rs != null && rs.next()) {
msgId = rs.getInt(1);
name = rs.getString(2);
fullPath = rs.getString(3);
diskName = rs.getString(4);
visualPath = rs.getString(5);
orders = rs.getInt(6);
downloadCount = rs.getInt(7);
try {
uploadDate = DateUtil.parse(rs.getString(8));
}
catch (Exception e) {
}
size = rs.getLong(9);
loaded = true;
}
} catch (SQLException e) {
logger.error("loadFormDb:" + e.getMessage());
} finally {
if (rs != null) {
try {
rs.close();
} catch (Exception e) {}
rs = null;
}
if (pstmt!=null) {
try {
pstmt.close();
}
catch (Exception e) {}
pstmt = null;
}
if (conn != null) {
conn.close();
conn = null;
}
}
}
public String getIcon() {
String ext = StrUtil.getFileExt(diskName);
if (ext == null)
return "default.gif";
if (ext.equals("doc") || ext.equals("xls") || ext.equals("gif") ||
ext.equals("jpg"))
return ext + ".gif";
if (ext.equals("jpeg"))
return "jpg.gif";
if (ext.equals("exe"))
return "exe.gif";
if (ext.equals("rar"))
return "rar.gif";
return "default.gif";
}
public void loadFromDbByOrders() {
Conn conn = new Conn(connname);
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
String LOADBYORDERS = "SELECT id, name, fullpath, diskname, visualpath, msgId, DOWNLOAD_COUNT, UPLOAD_DATE, FILE_SIZE FROM sq_message_attach WHERE orders=? and msgId=?";
pstmt = conn.prepareStatement(LOADBYORDERS);
pstmt.setInt(1, orders);
pstmt.setLong(2, msgId);
rs = conn.executePreQuery();
if (rs != null && rs.next()) {
id = rs.getInt(1);
name = rs.getString(2);
fullPath = rs.getString(3);
diskName = rs.getString(4);
visualPath = rs.getString(5);
msgId = rs.getInt(6);
downloadCount = rs.getInt(7);
uploadDate = DateUtil.parse(rs.getString(8));
size = rs.getLong(9);
loaded = true;
}
} catch (SQLException e) {
logger.error(e.getMessage());
} finally {
if (rs != null) {
try {
rs.close();
} catch (Exception e) {}
rs = null;
}
if (conn != null) {
conn.close();
conn = null;
}
}
}
private int orders = 0;
private boolean loaded = false;
private int downloadCount = 0;
private java.util.Date uploadDate;
private long size = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -