📄 leaf.java
字号:
package com.redmoon.forum.plugin.witkey;import java.io.*;import java.sql.*;import java.util.*;import cn.js.fan.base.*;import cn.js.fan.cache.jcs.*;import cn.js.fan.db.*;import cn.js.fan.security.*;import cn.js.fan.util.*;import cn.js.fan.web.*;import org.apache.log4j.*;public class Leaf implements Serializable, ITagSupport { public static final String TYPE_NONE_OPTION_VALUE = "not"; public static String CODE_ROOT = "root"; final String tableName = "plugin_witkey_catalog"; String connname = ""; transient RMCache rmCache = RMCache.getInstance(); transient Logger logger = Logger.getLogger(Leaf.class.getName()); int docId; public static final int TYPE_LIST = 1; public static final int TYPE_NONE = 0; private String code = "", name = "", description = "", 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,description,parent_code,root_code,orders,layer,child_count,add_date,islocked,type,isHome,doc_id,template_id from " + tableName + " where code=?"; boolean isHome = false; final String dirCache = "WITKEY_CATALOG"; public String get(String field) { if (field.equals("code")) return getCode(); else if (field.equals("name")) return getName(); else if (field.equals("desc")) return getDescription(); 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); description = 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; docId = rs.getInt(13); templateId = rs.getInt(14); loaded = true; } } catch (SQLException e) { logger.error("loadFromDb: " + e.getMessage()); } finally { if (conn != null) { conn.close(); conn = null; } } } public int getDocID() { return docId; } public void setDocID(int d) { this.docId = d; } 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 setDescription(String desc) { this.description = desc; } 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 void setTemplateId(int templateId) { this.templateId = templateId; } public String getRootCode() { return root_code; } public int getLayer() { return layer; } public void setLayer(int layer) { this.layer = layer; } public String getDescription() { return description; } public int getType() { return type; } public int getTemplateId() { return templateId; } public boolean isLoaded() { return loaded; } 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) + ",description=" + StrUtil.sqlstr(description) + ",type=" + type + ",isHome=" + (isHome ? "1" : "0") + ",doc_id=" + docId + ",template_id=" + templateId + ",orders=" + orders + ",layer=" + layer + ",child_count=" + child_count + " 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("不能将本节点设为父节点!"); Leaf lfparent = getLeaf(newParentCode);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -