📄 treemanagementbusinesslogic.java
字号:
package com.socialite.bizlogic.businesslogic.treemanagementlogic;
import com.socialite.bizlogic.businesslogic.BusinessLogic;
import com.socialite.bizlogic.businesslogic.BusinessObject;
import com.socialite.bizlogic.internalservice.logservice.LogLevel;
import com.socialite.bizlogic.internalservice.logservice.LoggerEngine;
import com.socialite.bizlogic.publicservice.dscservice.BizLogicDSC;
import com.socialite.bizlogic.publicservice.dscservice.BizLogicDatabaseManager;
import com.socialite.bizlogic.publicservice.dscservice.connectionpool.PooledConnection;
import com.socialite.bizlogic.util.Char;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* 树型结构管理业务逻辑
*
* @author : sheng chunling
* @version : 1.0
* Date: 2004-11-18
*
* 数据库中节点的数据结构(TREE_NODE_T):
* NODE_ID NOT NULL ,NUMBER(8) 节点编号,自增变量,不能修改
* FATHER_ID NUMBER(8) 父亲节点编号
* NAME VARCHAR2(100) 节点名称
* URL VARCHAR2(200) 节点的连接URL(如果节点有连接页面的话)
*
*
* 注:father_id不能为空,root节点的记录在创建表之后立即添加且不能修改删除,
* 该节点为虚拟节点,没有name,url等信息,id=0
*/
public class TreeManagementBusinessLogic implements BusinessLogic {
String name = "UniOper Tree Management Logic Interface";
String version = "1.0";
String description = "tree management model";
//Logger message request holder.
private LoggerEngine lm = LoggerEngine.getInstance();
private String logXML;
//DB Manager
private BizLogicDatabaseManager dbManager = BizLogicDSC.getInstance().getDatabaseManager();;
private static boolean DEBUG = true;
/**
* 获取当前版本
*
* @return 当前版本号
*/
public String getVersion() {
return version;
}
/**
* 获取服务名称
*
* @return 服务名称
*/
public String getName() {
return name;
}
/**
* 获取服务描述
*
* @return 服务描述
*/
public String getDescription() {
return description;
}
/**
* Null Constructor
*/
public TreeManagementBusinessLogic() {
}
/**
* 核心业务逻辑处理函数
*
* @param inObject
* @return
*/
public BusinessObject processBusinessLogic(BusinessObject inObject) {
//获取操作类型
String job = inObject.getValue("bizlogic.requesttype");
if (job == null) {
logXML = "<bizlogic><sourceclass>" + this.getClass().getName() + "</sourceclass><errormessage>" +
" Unable to get ServiceManagementLogic.requesttype" + "</errormessage><requestsource>" +
inObject.toString() + "</requestsource></bizlogic>";
lm.Log(new BusinessObject(logXML), LogLevel.ERROR);
return new BusinessObject("<bizlogic><result_code>-1</result_code><result_message>BusinessLogic encounters error to get TreeManagementLogic.requesttype.</result_message>" +
"<xsl_name>errormessage.xsl</xsl_name></bizlogic>");
}
//////////////////////////////////////////////
// 新增节点信息
//////////////////////////////////////////////
if ("CREATE_TREE_NODE".equalsIgnoreCase(job.trim()))
return createTreeNode(inObject);
//////////////////////////////////////////////
// 查询整棵树型结构
//////////////////////////////////////////////
if ("LIST_ALL_TREE_NODE".equalsIgnoreCase(job.trim()))
return listAllTreeNode(inObject);
//////////////////////////////////////////////
// 修改节点信息
//////////////////////////////////////////////
if ("MODIFY_TREE_NODE".equalsIgnoreCase(job.trim()))
return modifyTreeNode(inObject);
//////////////////////////////////////////////
// 删除节点信息
//////////////////////////////////////////////
if ("DELETE_TREE_NODE".equalsIgnoreCase(job.trim()))
return deleteTreeNode(inObject);
return new BusinessObject(lm.errorMsg(-1, "Unsupported BusinessLogic Type."));
}
/**
* 错误信息规范
* 今后这一部分信息需要进行全面的修改
*
* @param error_code
* @param error_message
* @return
*/
protected String errorMsg(int error_code, String error_message) {
StringBuffer sb = new StringBuffer("");
sb.append("<bizlogic><resultcode>");
sb.append(error_code);
sb.append("</resultcode><resultmessage>");
sb.append(error_message);
sb.append("</resultmessage></bizlogic>");
return sb.toString();
}
private void debug(String msg) {
if (DEBUG)
System.out.println(this.getClass().getName()+":"+msg+Char.LINE_SEPARATOR);
}
/**
* 实际处理节点信息创建工作
* 目前只处理增加叶子节点
*
* @param inObject
*@return -1:系统错误, -1000:id已经存在, -1001:name已经存在
*/
protected BusinessObject createTreeNode(BusinessObject inObject) {
//新节点的father_id即操作员在页面选中节点的node_id
String father_id=inObject.getValue("bizlogic.requestparameter.node_id");
//新节点的name和url信息为操作员在页面输入的信息
String name=inObject.getValue("bizlogic.requestparameter.name");
String url=inObject.getValue("bizlogic.requestparameter.url");
//father_id不能为空,root节点在数据库中已经存在且不能创建、修改、删除
if(father_id==null){
return new BusinessObject(errorMsg(-2, "not find bizlogic.requestparameter.father_id"));
}
if(name==null) name="";
if(url==null) url="";
//
//DB操作
//
PooledConnection conn = null;
Statement statement =null;
ResultSet resultSet =null;
try{
conn = dbManager.getConnection();
conn.setAutoCommit(false);//设置自动提交属性为false
statement = conn.createStatement();
//检查father_id对应节点的第一级子节点中是否有与新节点重名的节点
String sql="select count(*) from tree_node_t where father_id="+father_id + " and name='"+name+"'";
debug(sql);
resultSet = statement.executeQuery(sql);
resultSet.next();
if (resultSet.getInt("count(*)") > 0) {
return new BusinessObject(errorMsg(-1001, "the name is already exist "));
}
resultSet.close();
//插入新节点的信息
sql="insert into tree_node_t (node_id,father_id,name,url) "+
"values (node_id_seq.nextval,"+
father_id+",'"+
name+"','"+
url+"')";
debug(sql);
statement.execute(sql);
conn.commit();
statement.close();
StringBuffer xml= new StringBuffer("<bizlogic><resultcode>0</resultcode><resultmessage>TreeManagementLogic request done.</resultmessage>");
xml.append("<resultparameter>");
xml.append("</resultparameter>" + Char.LINE_SEPARATOR);
xml.append("</bizlogic>");
return new BusinessObject(xml.toString());
} catch (SQLException e) {
debug(("[" + e.getErrorCode() + "]" + e.getSQLState()));
//e.printStackTrace();
logXML = "<bizlogic><sourceclass>" + this.getClass().getName() + "</sourceclass>" +
"<errormessage>" + e.getMessage() + "</errormessage>" +
"<errorsqlcode>" + e.getErrorCode() + "</errorsqlcode>" +
"<errorsqlstate>" + e.getSQLState() + "</errorsqlstate>" +
"<requestsource>" + inObject.toString() + "</requestsource></bizlogic>";
lm.Log(new BusinessObject(logXML), LogLevel.ERROR);
return new BusinessObject("<bizlogic><resultcode>-1</resultcode><resultmessage>TreeManagementLogic treeCreate method DB operate error.</resultmessage></bizlogic>");
} finally {
dbManager.freeConnection(conn);
}
}
/**
*
*实际处理修改节点信息
*@param inObject
*@return -1:系统错误, -1001:name已经存在
*/
protected BusinessObject modifyTreeNode(BusinessObject inObject) {
String node_id=inObject.getValue("bizlogic.requestparameter.node_id");
String father_id=inObject.getValue("bizlogic.requestparameter.father_id");
String name=inObject.getValue("bizlogic.requestparameter.name");
String url=inObject.getValue("bizlogic.requestparameter.url");
if(node_id==null){
return new BusinessObject(errorMsg(-2, "not find bizlogic.requestparameter.node_id"));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -