⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 treemanagementbusinesslogic.java

📁 用JAVA实现的对动态树状信息的管理。操作员可以通过IE浏览器查看整个树形结构信息
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
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 ("SHOW_TREE".equalsIgnoreCase(job.trim()))
            return showTree(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:系统错误,  -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"));
        }
    	
    	//father_id不能为空
    	if(father_id==null){
    	
    		return new BusinessObject(errorMsg(-3, "not find bizlogic.requestparameter.father_id"));
        }
    	
    	//root节点在数据库中已经存在且不能修改、删除
    	if("0".equalsIgnoreCase(node_id.trim())){
    		

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -