Package org.uengine.ui.tree.dao

Source Code of org.uengine.ui.tree.dao.ProcessDefinitionListDAO

package org.uengine.ui.tree.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.sql.DataSource;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.uengine.security.AclManager;
import org.uengine.ui.tree.model.Form;
import org.uengine.ui.tree.model.Item;
import org.uengine.util.ForLoop;

public class ProcessDefinitionListDAO {
 
  protected JdbcTemplate jdbcTemplate = null;
 
  public ProcessDefinitionListDAO(DataSource dataSource) {
    this.jdbcTemplate = new JdbcTemplate(dataSource);
  }
 
  // Only Folder
  @SuppressWarnings("unchecked")
  public List<Item> findAllFolder(final String endpoint) {
   
    String sql = new StringBuffer(
    "SELECT defid, parentfolder, name, objtype, prodver FROM bpm_procdef ").append(
    "WHERE (isdeleted='0') AND (objtype = 'folder') ").toString();
   
    final AclManager aclManager = AclManager.getInstance();
   
    return this.jdbcTemplate.query(sql, new RowMapper() {
      public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
        Item item = null;
       
        int defid = rs.getInt("defid");
       
        Map<Character, Boolean> permission = aclManager.getPermission(defid, endpoint);
       
        if (permission.containsKey(AclManager.PERMISSION_VIEW) ||
            permission.containsKey(AclManager.PERMISSION_INITIATE) ) {
          String parentFolder = rs.getString("parentfolder");
          String name = rs.getString("name");
          String objtype = rs.getString("objtype");
         
          item = new Item();
          item.setId(String.valueOf(defid));
          item.setName(name);
          item.setParent(parentFolder);
          item.setObj(objtype);
        }
        return item;
      }
    });
  }
 
  // ForParticipant
 
  @SuppressWarnings("unchecked")
  public List<Item> findAllProcessDefinitionsForParticipant(final String endpoint) {
   
    String sql = new StringBuffer(
    "SELECT defid, parentfolder, name, objtype, prodver FROM bpm_procdef ").append(
    "WHERE (isdeleted='0') AND ((objtype = 'process' AND prodver <> 0) OR (objtype = 'folder') )").toString();
   
    final AclManager aclManager = AclManager.getInstance();
   
    return this.jdbcTemplate.query(sql, new RowMapper() {
      public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
        Item item = null;
       
        int defid = rs.getInt("defid");
       
        Map<Character, Boolean> permission = aclManager.getPermission(defid, endpoint);
       
        if (permission.containsKey(AclManager.PERMISSION_VIEW) ||
            permission.containsKey(AclManager.PERMISSION_INITIATE) ) {
          String parentFolder = rs.getString("parentfolder");
          String name = rs.getString("name");
          String objtype = rs.getString("objtype");
         
          item = new Item();
          item.setId(String.valueOf(defid));
          item.setName(name);
          item.setParent(parentFolder);
          item.setObj(objtype);
        }
        return item;
      }
    });
  }
 
  // Process Definition
 
  @SuppressWarnings("unchecked")
  public List<Item> findAllProcessDefinitions(final String endpoint) {
   
    String sql = "SELECT defid, parentfolder, name, objtype, prodver FROM bpm_procdef WHERE isdeleted='0'";
   
    return this.jdbcTemplate.query(sql, new RowMapper() {

      public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
        Item item = null;
       
        int defid = rs.getInt("defid");
        String name = rs.getString("name");
        String objtype = rs.getString("objtype");
        String parentFolder = rs.getString("parentfolder");
       
        item = new Item();
        item.setId(String.valueOf(defid));
        item.setName(name);
        item.setParent(parentFolder);
        item.setObj(objtype);
       
        return item;
      }
     
    });
  }
 
  @SuppressWarnings("unchecked")
  public List<Item> findAllAuthorityProcessDefinitions(final String endpoint, final String comCode, final char cPermission) {
   
    String sql = "SELECT defid, parentfolder, name, objtype, prodver FROM bpm_procdef WHERE isdeleted='0' AND comcode = '" + comCode + "'";
   
    final AclManager aclManager = AclManager.getInstance();
   
    return this.jdbcTemplate.query(sql, new RowMapper() {
      public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
        Item item = null;
       
        int defid = rs.getInt("defid");
        Map<Character, Boolean> permission = aclManager.getPermission(defid, endpoint, true);
       
        if (permission.containsKey(AclManager.PERMISSION_MANAGEMENT) || permission.containsKey(cPermission)) {
          String name = rs.getString("name");
          String objtype = rs.getString("objtype");
          String parentFolder = rs.getString("parentfolder");
         
          item = new Item();
          item.setId(String.valueOf(defid));
          item.setName(name);
          item.setParent(parentFolder);
          item.setObj(objtype);

          Character[] permissions = null;
          if (permission.size() > 0)
            permissions = (Character[]) permission.keySet().toArray(new Character[permission.size()]);
          item.setAuthority(permissions);
        }
        return item;
      }
    });
  }
 
  /**
   * <pre>
   *  Definition List에서 type = folder 인것만 검색한다.
   * </pre>
   *
   * @param endpoint
   * @param comCode
   * @param cPermission
   * @return
   */
  @SuppressWarnings("unchecked")
  public List<Item> findFolderAuthorityProcessDefinitions(final String endpoint, final String comCode, final char cPermission) {
    StringBuffer sql = new StringBuffer();
   
    sql.append("SELECT  defid             ").append("\n")
       .append("       ,parentfolder      ").append("\n")
       .append("       ,name              ").append("\n")
       .append("       ,objtype           ").append("\n")
       .append("       ,prodver           ").append("\n")
       .append("  FROM  bpm_procdef       ").append("\n")
       .append(" WHERE  isdeleted = 0     ").append("\n")
       .append("   AND  objtype = 'folder'").append("\n")
       .append("   AND  comcode = '").append(comCode).append("'").append("\n");
   
   
    final AclManager aclManager = AclManager.getInstance();
   
    return this.jdbcTemplate.query(sql.toString(), new RowMapper() {
      public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
        Item item = null;
       
        int defid = rs.getInt("defid");
        //Map<Character, Boolean> permission = aclManager.getPermission(defid, endpoint);
        Map<Character, Boolean> permission = aclManager.getPermission(defid, endpoint, comCode, rs.getString("parentfolder"));
       
        if (permission.containsKey(AclManager.PERMISSION_MANAGEMENT) || permission.containsKey(cPermission)) {
          String name = rs.getString("name");
          String objtype = rs.getString("objtype");
          String parentFolder = rs.getString("parentfolder");
         
          item = new Item();
          item.setId(String.valueOf(defid));
          item.setName(name);
          item.setParent(parentFolder);
          item.setObj(objtype);

          Character[] permissions = null;
          if (permission.size() > 0)
            permissions = (Character[]) permission.keySet().toArray(new Character[permission.size()]);
          item.setAuthority(permissions);
        }
        return item;
      }
    });
  }
 
  // Form Definition
 
  public int findFormProductionVersionId(int defId) {
    String sql = "SELECT prodverid FROM bpm_procdef WHERE defid=?";
    return this.jdbcTemplate.queryForInt(sql, new Object[] { defId });
  }
 
  @SuppressWarnings("unchecked")
  public List<Form> findAllFormVersions(int defId) {
    String sql = "SELECT defverid, ver FROM bpm_procdefver WHERE defid=? AND isdeleted=0";
    return this.jdbcTemplate.query(sql, new Object[] { defId },
        new RowMapper() {
          public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
            Form form = new Form();
            form.setDefVerId(rs.getInt("defVerId"));
            form.setVer(rs.getString("ver"));
            return form;
          }
        });
  }
 
  @SuppressWarnings("unchecked")
  public List<Item> findAllFormListForParticipant(final String endpoint) {
    String sql = new StringBuffer(
        "SELECT defid, name, objtype, parentFolder FROM bpm_procdef").append(
        " WHERE (isdeleted='0') AND (objtype = 'form' AND prodver <> 0) OR (objtype = 'folder')").toString();
   
    final AclManager aclManager = AclManager.getInstance();
   
    return this.jdbcTemplate.query(sql,
        new RowMapper() {
          public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
            Item item = null;
           
            int defid = rs.getInt("defid");
           
            Map<Character, Boolean> permission = aclManager.getPermission(defid, endpoint);
           
            if (permission.containsKey(AclManager.PERMISSION_INITIATE) ||
                permission.containsKey(AclManager.PERMISSION_VIEW) ||
                permission.containsKey(AclManager.PERMISSION_EDIT)) {
              String name = rs.getString("name");
              String objtype = rs.getString("objtype");
              String parentFolder = rs.getString("parentfolder");
             
              item = new Item();
              item.setId(String.valueOf(defid));
              item.setName(name);
              item.setParent(parentFolder);
              item.setObj(objtype);
            }
           
            return item;
          }
        });
  }
 
  @SuppressWarnings("unchecked")
  public List<Item> findParentFolder(final String comCode, final String defid) {
    StringBuffer sql = new StringBuffer();
   
    sql.append("SELECT  defid             ").append("\n")
       .append("       ,parentfolder      ").append("\n")
       .append("       ,name              ").append("\n")
       .append("       ,objtype           ").append("\n")
       .append("       ,prodver           ").append("\n")
       .append("  FROM  bpm_procdef       ").append("\n")
       .append(" WHERE  isdeleted = 0     ").append("\n")
       .append("   AND  objtype = 'folder'").append("\n")
       .append("   AND  comcode = '").append(comCode).append("'").append("\n");
   
    final List<Item> itemList = this.jdbcTemplate.query(sql.toString(), new RowMapper() {
      public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
        Item item = null;
       
        int defid = rs.getInt("defid");
        String name = rs.getString("name");
        String objtype = rs.getString("objtype");
        String parentFolder = rs.getString("parentfolder");
       
        item = new Item();
        item.setId(String.valueOf(defid));
        item.setName(name);
        item.setParent(parentFolder);
        item.setObj(objtype);

        return item;
      }
    });
   
    FindParent.find(itemList, defid);
   
    return FindParent.getResultItemList();
  }
 
  static class FindParent {
    private static List<Item> _RESULT_ITEM_LIST;
      public static List<Item> getResultItemList() {
        return _RESULT_ITEM_LIST;
      }

    public static void find(List<Item> folderItem, String id) {
      String parent = "";
      Item item = null;
     
      for(int i=0; i < folderItem.size(); i++) {
        item = folderItem.get(i);
        if (item.getId().equals(id)) {
          parent = (String)item.getParent();
          break;
        }
      }
     
      for(int i=0; i < folderItem.size(); i++) {
        item = folderItem.get(i);
        if (item.getId().equals(parent)) {
          _RESULT_ITEM_LIST.add(item);
         
          if (item.getParent() != null && !item.getParent().equals("")) {
            find(folderItem, item.getId());
          }
          break;
        }
      }
    }
  }

}
TOP

Related Classes of org.uengine.ui.tree.dao.ProcessDefinitionListDAO

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.