jdon 解惑授道,企业信息化解决之道

 

eStore树形结构管理框架系统

按这里观看在线演示

本框架系统构架于EJB+Struts框架下,使用简单,只要分别实现一个无状态Session Bean和Web的EJB调用就可以。

以网上商店的商品目录为例,每个商品目录下可能有商品子目录。要实现商品目录的后台树形结构管理,将商品目录树形结构保存在数据库中,通过Struts应用程序显示以及实现管理。本框架系统可重用性极强,前台维护比javaScript简单得多。

使用本框架系统非常简单方便,只要创建一个EJB和两个Struts的Action就可以。

无状态Session Bean的接口如下:

 

public interface CategoryTreeManagerLocal extends javax.ejb.EJBLocalObject {
  //得到根节点
  public Node getRootNode();  
  //获得根节点的子节点集合
  public Collection getROOTChildern() throws Exception;
  public Collection getChildern(String Id) throws Exception;

  public Category getCategoryById(String Id);

  public void addCategory(EventModel em) throws Exception;
  public void moveCategory(EventModel em) throws Exception;
  public void updateCategory(EventModel em) throws Exception;
  public void removeCategory(EventModel em) throws DeleteNodeException,             Exception;
}

 

 

Bean实现部分代码如下:

/**
* 树形结构数据库实现
*
* 利用JdonTree EJB组件,将商品目录和树形结构捆绑在一起,
* 持久化保存在数据库中。
*
* <p>Copyright: Jdon.com Copyright (c) 2003</p>
* <p>Company: 上海解道计算机技术有限公司</p>
* @author banq
* @version 1.0
*/
public class CategoryTreeManagerBean implements SessionBean {
  private final static Logger logger =     
   Logger.getLogger(CategoryTreeManagerBean.class);

  SessionContext sessionContext;
  private NodeManagerLocalHome nmHome;
  private CatalogEJBLocalHome catalogEJBHome;
  private CategoryDetailsHome cdHome;

  public void ejbCreate() throws CreateException {
  try {
    ServiceLocator sl = new ServiceLocator();
    nmHome = (NodeManagerLocalHome) sl.getLocalHome(JNDINames.
        NODE_MANAGER_HOME);
    catalogEJBHome = (CatalogEJBLocalHome) sl.getLocalHome(JNDINames.
        CATALOG_EJBHOME);
    cdHome = (CategoryDetailsHome) sl.getLocalHome(JNDINames.
        CATEGORY_DETAILS_HOME);

  } catch (Exception ex) {
    logger.error("create error:" + ex);
    throw new CreateException();
  }
}

/**
* 1.输入参数如果没有ParentID,默认为parent是根节点
* 2.输入参数有paraentID,分两种情况,是否指定了兄弟的序号index
*
* @param em
* @throws java.lang.Exception
*/
public void addCategory(EventModel em) throws Exception {
  Category category = (Category) em.getModel();

  Integer parentID = null;
  if (category.getParentID() == 0) {
    parentID = fetchRootNode().getID();
    appendCategory(parentID, category);
  } else {
    parentID = new Integer(category.getParentID());
    int index = category.getIndex();
    if (index == 0) {
      appendCategory(parentID, category);
  } else {
      addCategory(parentID, index, category);
  }
}

......
}

 

 

其中NodeManagerLocal是J道提供的可重用EJB组件,通过该组件持久化保存树形结构数据,本类只是将商品目录Category和树形结构组件结合在一起,编码思路简单,非常容易实现。

本框架系统的Web的是由三个类实现:

/**
* 显示树形结构
*
* <p>Copyright: Jdon.com Copyright (c) 2003</p>
* <p>Company: 上海解道计算机技术有限公司</p>
* @author not attributable
* @version 1.0
*/
public class SetUpCategoryTreeAction extends SetUpTreeAction {
  private final static ServiceServerFactory sf = ServiceServerFactory.
    getInstance();

  public Collection getChildernNode(HttpServletRequest request,
    ViewNode node) throws Exception {
  CategoryTreeManagerLocal categoryTree = (CategoryTreeManagerLocal) sf.
    getService(FrameworkServices.CategoryTreeEJB, request);
  return categoryTree.getROOTChildern();
}

}


/**
* 更新显示树形结构
* <p>Copyright: Jdon.com Copyright (c) 2003</p>
* <p>Company: 上海解道计算机技术有限公司</p>
* @author not attributable
* @version 1.0
*/
public class UpdateCategoryTreeAction extends UpdateTreeAction {
  private final static ServiceServerFactory sf = ServiceServerFactory.
    getInstance();

  public Collection getChildernNode(HttpServletRequest request,
    ViewNode node) throws Exception {
    CategoryTreeManagerLocal categoryTree = (CategoryTreeManagerLocal) sf.
    getService(FrameworkServices.CategoryTreeEJB, request);
    return categoryTree.getChildern(node.getKey());
  }

}

 


/**
* 管理树形结构,节点的增、删、改
* <p>Copyright: Jdon.com Copyright (c) 2003</p>
* <p>Company: 上海解道计算机技术有限公司</p>
* @author not attributable
* @version 1.0
*/
public class CategoryTreeHandler implements ModelHandler {

  private final static ServiceServerFactory sf = ServiceServerFactory.
    getInstance();


  public ModelForm initForm(HttpServletRequest request) throws Exception{
    return new CategoryForm();
  }

  public Model findModelByKey(String keyValue, HttpServletRequest request) throws     Exception{

  CategoryTreeManagerLocal catalogManager = (CategoryTreeManagerLocal)   
   sf.getService(
    FrameworkServices.CategoryTreeEJB, request);
    return catalogManager.getCategoryById(keyValue);
}

public void serviceAction(EventModel em, HttpServletRequest request) throws
java.lang.
Exception {
  CategoryTreeManagerLocal catalogManager = (CategoryTreeManagerLocal)     
     sf.getService(FrameworkServices.CategoryTreeEJB, request);
  try {
    switch (em.getActionType()) {
      case Event.CREATE:
        catalogManager.addCategory(em);
        break;
      case Event.EDIT:
        catalogManager.updateCategory(em);
        break;
      case Event.DELETE:
        catalogManager.removeCategory(em);
        break;
    }
  } catch (Exception ex) {
    throw new Exception("System operation Error:" + ex);
  }
}

}

 

以上代码就是树形结构管理系统具体实现的全部代码,是不是非常简单?

 

 

 





JdonSD设计
JdonSD结构
JdonSD性能


 

 

 

 

标签总列表



Jdon框架演示

JiveJdon3.0
源码下载

GoF设计模式

在线教程

社区精彩讨论




google yahoo 新浪ViVi 365Key网摘 天极网摘 CSDN网摘 添加到百度搜藏 POCO网摘 博采网摘