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

📄 datatypemanager.java

📁 我的文件是一个数据添加页面
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package kmd.gxml;
import kmd.Debug;
import kmd.commo.PageList;
import kmd.commo.SQLTools;
import kmd.commo.SequenceProducer;
import kmd.jdbc.DBConnection;

import java.util.ArrayList;
import java.sql.Connection;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Types;


/**
 * 针对对象类型信息进行管理的类,此类包括新增、删除、修改和查询对象类型信息的基本方法
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2007</p>
 * <p>Company: 重庆科美达电脑有限公司</p>
 * @author not attributable
 * @version 1.0
 */
public class DataTypeManager {
  /**
   * 构造符
   */
  public DataTypeManager() {}


  /**
   * 新增对象类型基本信息以及属性信息。名称、父编号以及属性信息必须填写,如果此类型处于最顶级父编号传0
   * @param info DataTypeInfo 对象类型信息
   * @throws Exception 保存信息失败时抛出此异常。
   */
  public void addDataType(DataTypeInfo info) throws Exception {
    Connection cn = null;
    PreparedStatement ps = null;
    ResultSet rs = null;
    try {
      cn = DBConnection.getConnection();
      //cn.setAutoCommit(false);
      info.setTid(SequenceProducer.getId());
      ps = cn.prepareStatement(
          "INSERT INTO DataType(TId, PId, Name, Digest) VALUES(?,?,?,?)");
      ps.setLong(1, info.getTid());
      ps.setLong(2, info.getPid());
      ps.setString(3, info.getName());
      if (info.getDigest() == null) {
        ps.setNull(4, Types.VARCHAR);
      } else {
        ps.setString(4, info.getDigest());
      }
      ps.executeUpdate();
      ps.close();
      ps = null;
      ArrayList attributeList = info.getAttributeList();
      AttributeManager aMan = new AttributeManager();
      for (int i = 0; i < attributeList.size(); i++) {
        AttributeInfo aInfo = (AttributeInfo) attributeList.get(i);
        aInfo.setTid(info.getTid());
        aMan.addAttribute(aInfo, cn);
      }
      //cn.commit();
      //cn.setAutoCommit(true);
    } catch (Exception ex) {
      if (Debug.isJavaBeanDebug) {
        ex.printStackTrace();
      }
      /**
      try {
        if (cn != null && !cn.getAutoCommit()) {
          cn.rollback();
          cn.setAutoCommit(true);
        }
      } catch (Exception e) {}
      */
      throw ex;
    } finally {
      if (rs != null) {try {rs.close();
      rs = null;
      } catch (Exception e) {}
      }
      if (ps != null) {try {ps.close();
      ps = null;
      } catch (Exception e) {}
      }
      if (cn != null) {try {cn.close();
      cn = null;
      } catch (Exception e) {}
      }
    }
  }


  /**
   * 修改对象类型信息,包括修改其基本信息以及属性信息
   * 名称、编号、父编号以及属性信息必须填写
   * @param info DataTypeInfo 对象类型信息
   * @throws Exception 修改信息失败时抛出此异常
   */
  public void modifyDataType(DataTypeInfo info) throws Exception {
    Connection cn = null;
    PreparedStatement ps = null;
    ResultSet rs = null;
    try {
      cn = DBConnection.getConnection();
      cn.setAutoCommit(false);
      ps = cn.prepareStatement("UPDATE DataType SET Name = ? WHERE TId = ?");
      ps.setString(1, info.getName());
      ps.setLong(2, info.getTid());
      ps.executeUpdate();
      ps.close();
      ps = null;
      AttributeManager aMan = new AttributeManager();
      ArrayList aids = aMan.getAids(info.getTid());
      ArrayList newAttributeList = info.getAttributeList();
      for (int i = 0; i < aids.size(); i++) {
        AttributeInfo aInfo = (AttributeInfo) newAttributeList.get(i);
        boolean exist = false;
        for (int j = 0; j < aids.size(); j++) {
          if (String.valueOf(aInfo.getAid()).equals((String) aids.get(j))) {
            exist = true;
            aids.remove(j);
            break;
          } else {
            continue;
          }
        }
        if (exist) {
          aMan.modifyAttribute(aInfo, cn);
        } else {
          aMan.addAttribute(aInfo, cn);
        }
      }
      for (int i = 0; i < aids.size(); i++) {
        aMan.deleteAttribute(Long.parseLong((String) aids.get(i)), cn);
      }
      cn.commit();
      cn.setAutoCommit(true);
    } catch (Exception ex) {
      if (Debug.isJavaBeanDebug) {
        ex.printStackTrace();
      }
      try {
        if (cn != null && !cn.getAutoCommit()) {
          cn.rollback();
          cn.setAutoCommit(true);
        }
      } catch (Exception e) {}
    } finally {
      if (rs != null) {try {rs.close();
      rs = null;
      } catch (Exception e) {}
      }
      if (ps != null) {try {ps.close();
      ps = null;
      } catch (Exception e) {}
      }
      if (cn != null) {try {cn.close();
      cn = null;
      } catch (Exception e) {}
      }
    }
  }


  /**
   * 删除指定编号的对象类型信息,并且关联在此对象类型下的具体数据对象也将会被删除
   * @param tid long 对象类型编号
   * @param isChild boolean 是否删除此对象类型的所有子对象类型
   * @throws Exception 删除信息失败时抛出此异常
   */
  public int deleteDataType(long tid, boolean isChild) throws Exception {
    Connection cn = null;
    PreparedStatement ps = null;
    ResultSet rs = null;
    int deleteNum = 0;
    try {
      cn = DBConnection.getConnection();
      cn.setAutoCommit(false);
      deleteNum = deleteNum + deleteDataType(tid, isChild, cn);
      cn.commit();
      cn.setAutoCommit(true);
    } catch (Exception ex) {
      if (Debug.isJavaBeanDebug) {
        ex.printStackTrace();
      }
      try {
        if (cn != null && !cn.getAutoCommit()) {
          cn.rollback();
          cn.setAutoCommit(true);
        }
      } catch (Exception e) {}
    } finally {
      if (rs != null) {try {rs.close();
      rs = null;
      } catch (Exception e) {}
      }
      if (ps != null) {try {ps.close();
      ps = null;
      } catch (Exception e) {}
      }
      if (cn != null) {try {cn.close();
      cn = null;
      } catch (Exception e) {}
      }
    }
    return deleteNum;
  }


  /**
   * 删除指定编号的一组对象类型信息,并且关联在这些对象类型下的具体数据对象也将会被删除
   * @param tid long[] 对象类型编号
   * @param isChild boolean 是否删除所指定对象类型的所有子对象类型
   * @return int 成功删除的对象类型数量
   * @throws Exception
   */
  public int deleteDataType(long[] tid, boolean isChild) throws Exception {
    Connection cn = null;
    PreparedStatement ps = null;
    ResultSet rs = null;
    int deleteNum = 0;
    try {
      cn = DBConnection.getConnection();
      cn.setAutoCommit(false);
      for (int i = 0; i < tid.length; i++) {
        deleteNum = deleteNum + deleteDataType(tid[i], isChild, cn);
      }
      cn.commit();
      cn.setAutoCommit(true);
    } catch (Exception ex) {
      if (Debug.isJavaBeanDebug) {
        ex.printStackTrace();
      }
      try {
        if (cn != null && !cn.getAutoCommit()) {
          cn.rollback();
          cn.setAutoCommit(true);
        }
      } catch (Exception e) {}
    } finally {
      if (rs != null) {try {rs.close();
      rs = null;
      } catch (Exception e) {}
      }
      if (ps != null) {try {ps.close();
      ps = null;
      } catch (Exception e) {}
      }
      if (cn != null) {try {cn.close();
      cn = null;
      } catch (Exception e) {}
      }
    }
    return deleteNum;
  }


  /**
   * 删除指定编号的对象类型信息,并且关联在此对象类型下的具体数据对象也将会被删除
   * @param tid long 对象类型编号
   * @param isChild boolean  是否删除所指定对象类型的所有子对象类型
   * @param conn Connection 数据库连接
   * @return int 成功删除的对象类型数量
   * @throws Exception
   */
  public int deleteDataType(long tid, boolean isChild, Connection conn) throws
      Exception {
    Connection cn = null;
    PreparedStatement ps = null;
    int deleteNum = 0;
    try {
      cn = conn;
      ArrayList childIds = getChileId(tid);
      ps = cn.prepareStatement("DELETE FROM CharAttribute a WHERE EXISTS ("
                               +
                               "SELECT b.* FROM CharAttribute b WHERE a.AId = b.AId AND a.Oid IN("
                               +
                               "SELECT c.Oid FROM DataInfo c WHERE c.TId = ?))");
      ps.setLong(1, tid);
      ps.executeUpdate();
      ps.close();
      ps = null;
      ps = cn.prepareStatement("DELETE FROM DoubleAttribute a WHERE EXISTS ("
                               +
                               "SELECT b.* FROM CharAttribute b WHERE a.AId = b.AId AND a.Oid IN("
                               +
                               "SELECT c.Oid FROM DataInfo c WHERE c.TId = ?))");
      ps.setLong(1, tid);
      ps.executeUpdate();
      ps.close();
      ps = null;
      ps = cn.prepareStatement("DELETE FROM IntegerAttribute a WHERE EXISTS ("
                               +
                               "SELECT b.* FROM CharAttribute b WHERE a.AId = b.AId AND a.Oid IN("
                               +
                               "SELECT c.Oid FROM DataInfo c WHERE c.TId = ?))");
      ps.setLong(1, tid);
      ps.executeUpdate();
      ps.close();
      ps = null;
      ps = cn.prepareStatement("DELETE FROM BooleanAttribute a WHERE EXISTS ("

⌨️ 快捷键说明

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