⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 attachment.java

📁 源码/软件简介: 云网论坛1.1RC国际版是采用JSP开发的集论坛、CMS(网站内容管理系统)、博客、聊天室、商城、交友、语音灌水等于一体的门户式社区。拥有CWBBS ( Cloud Web BBS
💻 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 + -