package com.lee.util;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class ClientTreeReader {
private StringBuffer sbTree = new StringBuffer();
public String read() {
Connection conn = null;
try {
conn = DB.getConnection();
read(conn, 0, 0);
}catch(Exception e) {
e.printStackTrace();
}finally {
DB.closeConn(conn);
}
return sbTree.toString();
}
/**
* 递归读取(先读出来)---这是基础
* @param conn
* @param id
* @param level
* @throws SQLException
*/
// private void read(Connection conn, int id, int level) throws SQLException {
//
// String sql = "select * from t_client where pid=?";
// PreparedStatement pstmt = null;
// ResultSet rs = null;
// try {
// pstmt = conn.prepareStatement(sql);
// pstmt.setInt(1, id);
// rs = pstmt.executeQuery();
// while (rs.next()) {
// sbTree.append(rs.getString("name"))
// .append("<br>")
// .append("\n");
// if ("N".equals(rs.getString("is_leaf"))) {
// read(conn, rs.getInt("id"), level);
// }
// }
// }finally {
// DB.closeRs(rs);
// DB.closePstmt(pstmt);
// }
// }
// /**
// * 递归读取分销商树
// *
// * 第二步:加入层次感
// * @param conn
// * @param id
// * @param level 控制层次
// */
// private void read(Connection conn, int id, int level)
// throws SQLException {
// level++;
// String sql = "select * from t_client where pid=?";
// PreparedStatement pstmt = null;
// ResultSet rs = null;
// try {
// pstmt = conn.prepareStatement(sql);
// pstmt.setInt(1, id);
// rs = pstmt.executeQuery();
// while (rs.next()) {
// for (int i=0; i<level-1; i++) {
// sbTree.append(" ");
// }
// sbTree.append(rs.getString("name"))
// .append("<br>")
// .append("\n");
// if ("N".equals(rs.getString("is_leaf"))) {
// read(conn, rs.getInt("id"), level);
// }
// }
// }finally {
// DB.closeRs(rs);
// DB.closePstmt(pstmt);
// }
// }
/**
// * 递归读取分销商树
// *
// * 第三步:叶子节点前加入“-”号,非叶子节点前加入“+”
// * @param conn
// * @param id
// * @param level 控制层次
// */
// private void read(Connection conn, int id, int level)
// throws SQLException {
// level++;
// String sql = "select * from t_client where pid=?";
// PreparedStatement pstmt = null;
// ResultSet rs = null;
// try {
// pstmt = conn.prepareStatement(sql);
// pstmt.setInt(1, id);
// rs = pstmt.executeQuery();
// while (rs.next()) {
// for (int i=0; i<level-1; i++) {
// sbTree.append(" ");
// }
// if ("N".equals(rs.getString("is_leaf"))) {
// sbTree.append("+")
// .append(rs.getString("name"))
// .append("<br>")
// .append("\n");
// read(conn, rs.getInt("id"), level);
// }else {
// sbTree.append("-")
// .append(rs.getString("name"))
// .append("<br>")
// .append("\n");
// }
// }
// }finally {
// DB.close(rs);
// DB.close(pstmt);
// }
// }
/**
* 递归读取分销商树
*
* 第四步:采用div生成树
* @param conn
* @param id
* @param level 控制层次
*/
private void read(Connection conn, int id, int level)
throws SQLException {
level++;
String sql = "select * from t_client where pid=?";
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, id);
rs = pstmt.executeQuery();
while (rs.next()) {
sbTree.append("<div>");
for (int i=0; i<level-1; i++) {
sbTree.append("<img src=\"../images/white.gif\">");
}
if ("N".equals(rs.getString("is_leaf"))) {
sbTree.append("<img alt=\"展开\" style=\"cursor:hand;\" onClick=\"display('" + rs.getInt("id") + "');\" id=\"img" + rs.getInt("id") + "\" src=\"../images/plus.gif\">");
sbTree.append("\n");
sbTree.append("<img id=\"im" + rs.getInt("id") +"\" src=\"../images/closedfold.gif\">");
sbTree.append("\n");
sbTree.append("<a href=\"client_node_crud.jsp?id=" + rs.getInt("id") + "\" target=\"clientDispAreaFrame\">" + rs.getString("name") + "</a>");
sbTree.append("\n");
sbTree.append("<div style=\"display:none;\" id=\"div" + rs.getInt("id") + "\">");
sbTree.append("\n");
read(conn, rs.getInt("id"), level);
sbTree.append("</div>");
sbTree.append("\n");
}else {
sbTree.append("<img src=\"../images/minus.gif\">");
sbTree.append("<img src=\"../images/openfold.gif\">");
if ("Y".equals(rs.getString("is_client"))) {
sbTree.append("<a href=\"client_crud.jsp?id=" + rs.getInt("id") + "\" target=\"clientDispAreaFrame\">" + rs.getString("name") +"</a>");
}else {
sbTree.append("<a href=\"client_node_crud.jsp?id=" + rs.getInt("id") + "\" target=\"clientDispAreaFrame\">" + rs.getString("name") + "</a>");
}
sbTree.append("\n");
}
sbTree.append("</div>");
}
}finally {
DB.closeRs(rs);
DB.closePstmt(pstmt);
}
}
}