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

📄 post.java

📁 tbuy1.1.5是在netbeans环境下用JSF技术编写的一个论坛tbuy1.1.5是在netbeans环境下用JSF技术编写的一个论坛
💻 JAVA
字号:
/* * 作者: 胡李青 * qq: 31703299  * Copyright (c) 2007 huliqing * 主页 http://www.tbuy.biz/ * 你可以免费使用该软件,未经许可请勿作用于任何商业目的,如有技术问题请与本人联系! */package biz.tbuy.bbs.bean;import biz.tbuy.bbs.FileModel;import biz.tbuy.bbs.BBSGroups;import biz.tbuy.bbs.TopicModel;import biz.tbuy.common.Constants;import biz.tbuy.bbs.TopicBuilder;import biz.tbuy.bbs.TopicFactory;import biz.tbuy.bbs.UserinfoBuilder;import biz.tbuy.bbs.UserinfoFactory;import biz.tbuy.bbs.UserinfoModel;import biz.tbuy.bbs.ZoneFactory;import biz.tbuy.common.UploadedFileOper;import biz.tbuy.common.Utils;import java.util.List;import javax.faces.component.UISelectOne;import javax.faces.model.SelectItem;import javax.faces.model.SelectItemGroup;import org.apache.myfaces.custom.fileupload.UploadedFile;/** * @author huliqing * <p><b>qq:</b>31703299 * <p><b>E-mail:</b><a href="mailto:huliqing.cn@gmail.com">huliqing.cn@gmail.com</a> * <p><b>Homepage:</b><a href="http://www.tbuy.biz/">http://www.tbuy.biz/</a> */public class Post extends BaseBean{    private String _title;       // 所发表主题的:标题    private String _content;     // 内容    private String _from;        // 出处    private int _type;           // 主题类型    private UISelectOne _uiType; // 绑定于主题类型    private int _byForum;        // 所属讨论区的ID    private boolean _beUpload;   // 如果带有上传文件则设为true,否则为false    private int _music = -1;    // 选中的背景音乐的id        private List<SelectItem> _topicTypes;   // 所有可选的主题类型    private List<SelectItemGroup> _forums;  // 所有可选的讨论区列表    //private List<SelectItem> _musics;       // 所有可选的背景音乐        /** Creates a new instance of SendBean */    public Post() {        // 检查用户是否已经登录        if (!getVisitor().isLogin()) {            Utils.addErrorMessage(getBundle(),                     "你尚未登录系统,需要先登录系统后才可以发表文章 : )");        }                // 实始化可选的音乐信息        //_musics = getBBSApplication().getBgsounds();                // 可选的主题类型        _topicTypes = getBBSApplication().getTopicTypesForItems();                // 初始化可选的讨论区列表        _forums = ZoneFactory.getForumsGroup();    }        public void setTitle(String title) {        _title = title;    }        public String getTitle() {        return _title;    }        public void setContent(String content) {        _content = content;    }        public String getContent() {        return _content;    }    public void setFrom(String from) {        _from = from;    }    public String getFrom() {        return _from;    }        public void setType(int type) {        _type = type;    }        public int getType() {        return _type;    }        public void setUiType(UISelectOne uiType) {        _uiType = uiType;    }        /**     * 检查是否需要在post.jsp页面中显示“主题类型”选项,     * 以供用户选择所要发布的主题类型,如:版规,公告,置顶等     * 默认只有身份为:admin,master的用户才显示     * @return true, 表示可以显示,false则不应该显示     */    public UISelectOne getUiType() {        _uiType = new UISelectOne();        _uiType.setRendered(getVisitor().isAdmin() || getBBSApplication().isMaster(getVisitor().getUser().getId()));        return _uiType;    }        public void setByForum(int byForum) {        _byForum = byForum;    }        public int getByForum() {        return _byForum;    }        public void setBeUpload(boolean beUpload) {        _beUpload = beUpload;    }        public boolean getBeUpload() {        return _beUpload;    }        public void setMusic(int music) {        _music = music;    }        public int getMusic() {        return _music;    }        /**     * 获得全局是否允许上传图片     * @return true如果允许,false不允许     */     public boolean isUpload() {        return getComApplication().isUpload();    }        /**     * 获得是否开启了主题背景音乐功能     * @return     */    public boolean isBgsound() {        return getBBSApplication().isBgsound();    }        public List<SelectItem> getTopicTypes() {        return _topicTypes;    }        public List<SelectItem> getMusics() {        return getBBSApplication().getBgsounds();    }        public List<SelectItemGroup> getForums() {        return _forums;    }        /* 关于上传文件相关处理 ****************************************************/    private UploadedFileOper _fileOper;  // 用于处理上传文件的自定义类    private UploadedFile _myFile;        // 关于上传的文件    private String _myFileDes;           // 上传文件的简短描述    private List<String> _suffixAllow;   // 上传文件所允许的类型    private int _maxWidthAllow = 1024;   // 上传文件允许的最大宽度(如果是图片)    private int _maxHeightAllow = 768;   // 上传文件允许的最大高度(如果是图片)    private int _maxSizeAllow = 120;     // 上传文件允许的最大Size(以K为单位)        public void setMyFile(UploadedFile myFile) {        _myFile = myFile;    }        public UploadedFile getMyFile() {        return _myFile;    }        public void setMyFileDes(String myFileDes) {        _myFileDes = myFileDes;    }        public String getMyFileDes() {        return _myFileDes;    }        // typeAllow    public void setSuffixAllow(List<String> suffixAllow) {        _suffixAllow = suffixAllow;    }        public List<String> getSuffixAllow() {        return _suffixAllow;    }        public void setMaxWidthAllow(int maxWidthAllow) {        _maxWidthAllow = maxWidthAllow;    }        public int getMaxWidthAllow() {        return _maxWidthAllow;    }        public void setMaxHeightAllow(int maxHeightAllow) {        _maxHeightAllow = maxHeightAllow;    }        public int getMaxHeightAllow() {        return _maxHeightAllow;    }        public void setMaxSizeAllow(int maxSizeAllow) {        _maxSizeAllow = maxSizeAllow;    }        public int getMaxSizeAllow() {        return _maxSizeAllow;    }     /** method ****************************************************************     * 发表主题,该方法包括两部分,     * 1.检查用户是否已经登录     * 2.判断用户是否有权限发表相应主题类型     * 3.发表主题.     * 4.处理上传文件.如果处理不成功,则回收主题,因为关联的上传文件没有上传成功     * 5.后续处理更新.如:更新用户信息UserInfo,主题数、文章数等     * @return success 如果发表主题成功,否则返回failure     */    public String sendTopic() throws Exception {        // 1 先检查用户是否已经登录        if (!getVisitor().isLogin()) {            Utils.addErrorMessage(getBundle(), "对不起,你需要先登录!");            return Constants.OUT_FAILURE;        }        TopicModel topic = makeTopic();        TopicBuilder tBuilder = TopicFactory.newBuilder(topic);        int key = tBuilder.post();        // 如果key != -1, 即插入主题成功,key为该主题的主键值        if (key != -1) {            // 如果主题发表成功则处理上传文件(如果允许上传),如果处理失败则回收主题            if (_myFile != null) {                FileModel file = takeUploadedFile(key);                if (file == null || !tBuilder.uploadFile(file)) {                    tBuilder.revoke();                    Utils.addErrorMessage(getBundle(), "上传文件时遇到问题!");                    return Constants.OUT_FAILURE;                }            }            // 当一切完成之后就开始更新该作者信息.            String userId = getVisitor().getUser().getId();            UserinfoModel userinfo = UserinfoFactory.getInstance().getUserinfo(userId);            userinfo.setTotalTopic(userinfo.getTotalTopic() + 1);            userinfo.setTotalArticle(userinfo.getTotalArticle() + 1);            UserinfoBuilder uBuilder = UserinfoFactory.getInstance().newBuilder(userinfo);            uBuilder.resetGroup();            uBuilder.update();            // 更新文章BBS文章信息            getBBSApplication().getArticleInfo().addArticleAndRecount(topic);            Utils.addInfoMessage(getBundle(), "主题发表成功");            return Constants.OUT_SUCCESS;        }        return Constants.OUT_FAILURE;    }        /**     * 组合topic     */    private TopicModel makeTopic() {        // 如果有上传文件,则使主题的beUpload字段为真,表示该主题带有上传文件        TopicModel topic = new TopicModel();        if (_myFile != null) { _beUpload = true;}        if (_music != -1) { topic.setMusic(_music);}        if (!_from.equals("")) { topic.setFrom(_from);}        topic.setTitle(_title);        topic.setContent(_content);        topic.setByForum(_byForum);        topic.setType(_type);        topic.setBeLock(false);        topic.setBeRevoke(false);        topic.setBeUpload(_beUpload);        topic.setByUser(getVisitor().getUser().getId());        topic.setIp(getVisitor().getIp());        return topic;    }        /**     * 关于处理上传文件     * @param key, 相关主题的主键值,用于关联上传文件     */     private FileModel takeUploadedFile(int key) {        if (_myFile == null) return null;        _fileOper = new UploadedFileOper(_myFile);        _fileOper.setMaxHeightAllow(_maxHeightAllow);        _fileOper.setMaxWidthAllow(_maxWidthAllow);        _fileOper.setMaxSizeAllow(_maxSizeAllow);        _fileOper.setSuffixAllow(_suffixAllow);        int allowKey = _fileOper.checkAllow();        switch (allowKey) {            case 1:                Utils.addErrorMessage(getBundle(), "对不起,你的上传文件太大!");                return null;            case 2:                Utils.addErrorMessage(getBundle(), "对不起,文件类型不被允许!");                return null;            case 3:                Utils.addErrorMessage(getBundle(), "对不起,文件宽度超过限制");                return null;            case 4:                Utils.addErrorMessage(getBundle(), "对不起,文件高度超过限制!");                return null;            default:                break;        }        // 保存文件        if (!_fileOper.saveTo(getSavePath() + _fileOper.getNewName())) {            Utils.addErrorMessage(getBundle(), "对不起!保存文件时遇到问题!");            return null;        }        // 将文件信息插入数据库中        FileModel file = new FileModel();        file.setBeRevoke(false);        file.setTarget("t");        file.setByTarget(key);        file.setByUser(getVisitor().getUser().getId());        file.setDescription(_myFileDes);        file.setName(_fileOper.getNewName());        file.setSize(Math.round(_fileOper.getSize() / 1024));        file.setType(_fileOper.getType());        file.setSuffix(_fileOper.getSuffix());        return file;    }        /**     * 获取需要保存上传文件的文件夹路径     */    private String getSavePath() {        return getComApplication().getServletContextPath() + BBSGroups.PATH_UPLOAD_FILE;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -