leaf.java

来自「cwbbs 云网论坛源码」· Java 代码 · 共 634 行 · 第 1/2 页

JAVA
634
字号
package com.redmoon.forum.ui.menu;import java.io.*;import java.sql.*;import java.util.*;import javax.servlet.http.*;import cn.js.fan.base.*;import cn.js.fan.cache.jcs.*;import cn.js.fan.db.*;import cn.js.fan.util.*;import cn.js.fan.web.*;import org.apache.log4j.*;public class Leaf implements Serializable, ITagSupport {    public static String CODE_ROOT = "root";    final String tableName = "sq_forum_menu";    String connname = "";    transient RMCache rmCache = RMCache.getInstance();    transient Logger logger = Logger.getLogger(Leaf.class.getName());    public static final int TYPE_PRESET = 1;    public static final int TYPE_LINK = 0;    private String target;    private String code = "", name = "", link = "", parent_code = "-1",            root_code = "";    java.util.Date add_date;    private int orders = 1, layer = 1, child_count = 0, islocked = 0;    final String LOAD = "select code,name,link,parent_code,root_code,orders,layer,child_count,add_date,islocked,type,isHome,pre_code,width,is_has_path,is_resource,target from " + tableName + " where code=?";    boolean isHome = false;    final String dirCache = "FORUM_MENU";    public String get(String field) {        if (field.equals("code"))            return getCode();        else if (field.equals("name"))            return getName();        else if (field.equals("desc"))            return getLink();        else if (field.equals("parent_code"))            return getParentCode();        else if (field.equals("root_code"))            return getRootCode();        else if (field.equals("layer"))            return "" + getLayer();        else            return "";    }    public Leaf() {        connname = Global.defaultDB;        if (connname.equals(""))            logger.info("Leaf:DB is empty!");    }    public Leaf(String code) {        connname = Global.defaultDB;        if (connname.equals(""))            logger.info("Leaf:DB is empty!");        this.code = code;        loadFromDb();    }    public void renew() {        if (logger == null) {            logger = Logger.getLogger(Leaf.class.getName());        }        if (rmCache == null) {            rmCache = RMCache.getInstance();        }    }    public void loadFromDb() {        ResultSet rs = null;        Conn conn = new Conn(connname);        try {            PreparedStatement ps = conn.prepareStatement(LOAD);            ps.setString(1, code);            rs = conn.executePreQuery();            if (rs != null && rs.next()) {                this.code = rs.getString(1);                name = rs.getString(2);                link = rs.getString(3);                parent_code = rs.getString(4);                root_code = rs.getString(5);                orders = rs.getInt(6);                layer = rs.getInt(7);                child_count = rs.getInt(8);                try {                    add_date = DateUtil.parse(rs.getString(9));                }                catch (Exception e) {                }                islocked = rs.getInt(10);                type = rs.getInt(11);                isHome = rs.getInt(12) > 0 ? true : false;                preCode = StrUtil.getNullStr(rs.getString(13));                width = rs.getInt(14);                hasPath = rs.getInt(15)==1;                resource = rs.getInt(16)==1;                target = StrUtil.getNullStr(rs.getString(17));                loaded = true;            }        } catch (SQLException e) {            logger.error("loadFromDb: " + e.getMessage());        } finally {            if (conn != null) {                conn.close();                conn = null;            }        }    }    public String getCode() {        return code;    }    public void setCode(String code) {        this.code = code;    }    public String getName() {        return name;    }    public void setRootCode(String c) {        this.root_code = c;    }    public void setType(int t) {        this.type = t;    }    public void setName(String n) {        this.name = n;    }    public void setLink(String link) {        this.link = link;    }    public int getOrders() {        return orders;    }    public boolean getIsHome() {        return isHome;    }    public void setParentCode(String p) {        this.parent_code = p;    }    public String getParentCode() {        return this.parent_code;    }    public void setIsHome(boolean b) {        this.isHome = b;    }    public String getRootCode() {        return root_code;    }    public int getLayer() {        return layer;    }    public void setLayer(int layer) {        this.layer = layer;    }    public String getLink() {        return link;    }    public int getType() {        return type;    }    public boolean isLoaded() {        return loaded;    }    public String getPreCode() {        return preCode;    }    public int getWidth() {        return width;    }    public boolean isHasPath() {        return hasPath;    }    public boolean isResource() {        return resource;    }    public String getTarget() {        return target;    }    public int getChildCount() {        return child_count;    }    public Vector getChildren() {        Vector v = new Vector();        String sql = "select code from " + tableName + " where parent_code=? order by orders asc";        Conn conn = new Conn(connname);        ResultSet rs = null;        try {            PreparedStatement pstmt = conn.prepareStatement(sql);            pstmt.setString(1, code);            rs = conn.executePreQuery();            if (rs != null) {                while (rs.next()) {                    String c = rs.getString(1);                                        v.addElement(getLeaf(c));                }            }        } catch (SQLException e) {            logger.error("getChildren: " + e.getMessage());        } finally {            if (conn != null) {                conn.close();                conn = null;            }        }        return v;    }        public Vector getAllChild(Vector vt, Leaf leaf) throws ErrMsgException {        Vector children = leaf.getChildren();        if (children.isEmpty())            return children;        vt.addAll(children);        Iterator ir = children.iterator();        while (ir.hasNext()) {            Leaf lf = (Leaf) ir.next();            getAllChild(vt, lf);        }                return vt;    }    public String toString() {        return "Leaf is " + name;    }    private int type;    public synchronized boolean update() {        String sql = "update " + tableName + " set name=" + StrUtil.sqlstr(name) +                     ",link=" + StrUtil.sqlstr(link) +                     ",type=" + type + ",isHome=" + (isHome ? "1" : "0") +                     ",orders=" + orders + ",layer=" + layer + ",child_count=" + child_count + ",pre_code=" + StrUtil.sqlstr(preCode) + ",width=" + width +                     ",is_has_path=" + (hasPath?1:0) + ",is_resource=" + (resource?1:0) + ",target=" + StrUtil.sqlstr(target) + " where code=" + StrUtil.sqlstr(code);                RMConn conn = new RMConn(connname);        int r = 0;        try {            r = conn.executeUpdate(sql);            try {                if (r == 1) {                    removeFromCache(code);                                                            LeafChildrenCacheMgr.remove(parent_code);                }            } catch (Exception e) {                logger.error("update: " + e.getMessage());            }        } catch (SQLException e) {            logger.error("update: " + e.getMessage());        }        boolean re = r == 1 ? true : false;        if (re) {            removeFromCache(code);        }        return re;    }        public synchronized boolean update(String newParentCode) throws ErrMsgException {        if (newParentCode.equals(parent_code))            return false;        if (newParentCode.equals(code))            throw new ErrMsgException("Node's parent can not be self!");                Leaf lfparent = getLeaf(newParentCode);        int oldorders = orders;        int neworders = lfparent.getChildCount() + 1;        int parentLayer = lfparent.getLayer();        String sql = "update " + tableName + " set name=" + StrUtil.sqlstr(name) +                     ",link=" + StrUtil.sqlstr(link) +                     ",type=" + type + ",isHome=" + (isHome ? "1" : "0") +                     ",parent_code=" + StrUtil.sqlstr(newParentCode) + ",orders=" + neworders +                     ",layer=" + (parentLayer+1) + ",pre_code=" + StrUtil.sqlstr(preCode) + ",width=" + width + ",target=" + StrUtil.sqlstr(target) +                     " where code=" + StrUtil.sqlstr(code);        String oldParentCode = parent_code;        parent_code = newParentCode;        RMConn conn = new RMConn(connname);        int r = 0;        try {

⌨️ 快捷键说明

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