📄 leaf.java
字号:
package com.redmoon.blog;
import java.io.Serializable;
import java.sql.*;
import java.util.Iterator;
import java.util.Vector;
import cn.js.fan.base.ITagSupport;
import cn.js.fan.cache.jcs.RMCache;
import cn.js.fan.db.*;
import cn.js.fan.security.SecurityUtil;
import cn.js.fan.util.ErrMsgException;
import cn.js.fan.util.StrUtil;
import cn.js.fan.web.Global;
import org.apache.log4j.Logger;
import cn.js.fan.util.DateUtil;
public class Leaf implements Serializable,ITagSupport {
transient RMCache rmCache = RMCache.getInstance();
String connname = "";
transient Logger logger = Logger.getLogger(Leaf.class.getName());
public static final String ROOTCODE = "root";
int docId;
public static final int TYPE_LIST = 2;
// public static final int TYPE_DOCUMENT = 1;
public static final int TYPE_NONE = 0;
private String code = "", name = "", description = "", parent_code = "-1",
root_code = "", 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,pluginCode from blog_directory where code=?";
boolean isHome = false;
final String dirCache = "BLOG_DIR";
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("Directory:默认数据库名不能为空");
}
public Leaf(String code) {
connname = Global.defaultDB;
if (connname.equals(""))
logger.info("Directory:默认数据库名不能为空");
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.format(DateUtil.parse(rs.getString(9)),
"yyyy-MM-dd HH:mm:ss");
}
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);
pluginCode = rs.getString(15);
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 String getPluginCode() {
return pluginCode;
}
public int getChildCount() {
return child_count;
}
public Vector getChildren() {
Vector v = new Vector();
String sql = "select code from blog_directory 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);
//logger.info("child=" + c);
v.addElement(getLeaf(c));
}
}
} catch (SQLException e) {
logger.error("getChildren: " + e.getMessage());
} finally {
if (conn != null) {
conn.close();
conn = null;
}
}
return v;
}
/**
* 取出code结点的所有孩子结点
* @param code String
* @return ResultIterator
* @throws ErrMsgException
*/
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 children;
return vt;
}
public String toString() {
return "Leaf is " + name;
}
private int type;
public synchronized boolean update() {
String sql = "update blog_directory 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 + ",pluginCode=" + StrUtil.sqlstr(pluginCode) +
" where code=" + StrUtil.sqlstr(code);
// logger.info(sql);
RMConn conn = new RMConn(connname);
int r = 0;
try {
r = conn.executeUpdate(sql);
try {
if (r == 1) {
removeFromCache(code);
//logger.info("cache is removed " + code);
//DirListCacheMgr更新
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;
}
/**
* 更改了分类
* @param newDirCode String
* @return boolean
*/
public synchronized boolean update(String newParentCode) throws ErrMsgException {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -