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 + -
显示快捷键?