SystemDirectoryManager.java
上传用户:mingda
上传日期:2017-06-20
资源大小:27691k
文件大小:12k
源码类别:

OA系统

开发平台:

Java

  1. package com.gforce.gfoa;
  2. /**
  3.  * <p>Title: 吉力科技办公自动化系统</p>
  4.  * <p>Description: 吉力科技办公自动化系统</p>
  5.  * <p>Copyright: 版权所有 2003 (c) 西安吉力科技发展有限公司  Copyright (c) 2003 GForce Sceince & Technology</p>
  6.  * <p>Company: 西安吉力科技发展有限公司 (GForce Sceince & Technology)</p>
  7.  * @author 马登军
  8.  * @version 1.0
  9.  */
  10. import com.gforce.currency.*;
  11. import com.gforce.currency.database.*;
  12. import java.sql.*;
  13. import java.util.*;
  14. public class SystemDirectoryManager
  15.     extends RecordManager {
  16.     public SystemDirectoryManager() {
  17.     }
  18.     protected final static String TableName = "SystemDirectory"; //定义声明本类操作表名称为“UserInfo”
  19.     protected final static String IDFieldName = "ID"; //定义声明主键或者可以确定唯一记录的字段名称为“ID”,必须为自增整型
  20.     protected final static String[] NumericFieldsName = {"LevelNumber","ChildrenAcount","OrderNumber","IsLink","IsShow"}; //声明数值型字段名称
  21.     protected final static String[] StringFieldsName = {
  22.         "Name", "Station","OpenedICO","CloseedICO","LinkUrl","Target","Content"}; //声明字符型字段名称
  23.     protected final static String[] DatetimeFieldsName = {}; //声明日期时间型字段名称
  24.     protected final static String[] TextFieldsName =        {}; //声明大字符串型字段名称
  25.     /**
  26.      * 根据字段名称获取插入数据时表单元素名称
  27.      * @param strFieldName  字段名称
  28.      * @return  表单素名称
  29.      */
  30.     protected String InsertParament(String strFieldName) {
  31.         return "" + strFieldName + ""; //可以根据需要加前缀、后缀
  32.     }
  33.     /**
  34.      * 根据字段名称获取修改数据时表单元素名称
  35.      * @param strFieldName  字段名称
  36.      * @return  表单素名称
  37.      */
  38.     protected String UpdateParament(String strFieldName) {
  39.         return "" + strFieldName + ""; //可以根据需要加前缀、后缀
  40.     }
  41.     /**
  42.      * 获取本类操作表名称
  43.      * @return  表名称
  44.      */
  45.     public String getTableName() { //获取本类操作表名称
  46.         return TableName;
  47.     }
  48.     protected String getIDFieldName() { //获取主键或者可以确定唯一记录的字段名称
  49.         return IDFieldName;
  50.     }
  51.     protected String[] getNumericFieldsName() { //获取数值型字段名称
  52.         return NumericFieldsName;
  53.     }
  54.     protected String[] getStringFieldsName() { //获取字符型字段名称
  55.         return StringFieldsName;
  56.     }
  57.     protected String[] getDatetimeFieldsName() { //获取日期时间型字段名称
  58.         return DatetimeFieldsName;
  59.     }
  60.     protected String[] getTextFieldsName() { //获取大字符串型字段名称
  61.         return TextFieldsName;
  62.     }
  63.     /**
  64.      * 获取所有记录的向量集
  65.      * @return 所有记录的向量集
  66.      */
  67.     public Vector getSysDirData(String strHasRightPages)
  68.     {
  69.         Vector vc = new Vector();
  70.         strHasRightPages = "'" + strHasRightPages.replaceAll(",","','") + "'";
  71.         vc  = SQLManager.GetResultSet("select ID,Name,Station,LevelNumber,ChildrenAcount,OrderNumber,OpenedICO,CloseedICO,LinkUrl,Target,IsLink,Content,IsShow from " + getTableName() + "  where LinkUrl='' or LinkUrl is null or LinkUrl in (" + strHasRightPages + ") order by OrderNumber");
  72.         return vc;
  73.     }
  74.     /**
  75.      * 获取所有记录的向量集
  76.      * @return 所有记录的向量集
  77.      */
  78.     public static Vector getSystemDirectoryData()
  79.     {
  80.         Vector vc = new Vector();
  81.         vc = SQLManager.GetResultSet("select * from " + TableName + " ORDER BY OrderNumber ");
  82.         return vc;
  83.     }
  84.     /**
  85.      * 获取指定ID的数据集
  86.      * @param intID 要检索的ID
  87.      * @return 指定ID的数据集
  88.      */
  89.     public static Vector getRecordByID(int intID)
  90.     {
  91.         Vector vc = new Vector();
  92.         vc = SQLManager.GetResultSet("select * from " + TableName + " WHERE ID = " + intID);
  93.         return vc;
  94.     }
  95.     /**
  96.      * 获取指定ID目录下子目录个数
  97.      * @param iSystemDirectoryID  目录ID
  98.      * @return 指定ID目录下子目录个数
  99.      */
  100.     public static int getSubSystemDirectoryCount(int iSystemDirectoryID)
  101.     {
  102.         int iReturnValue = 0;
  103.         String strSQL;
  104.         Vector vc = new Vector();
  105.         if (iSystemDirectoryID == 0)
  106.         {
  107.             strSQL = "select count(*) from " + TableName + " Where Station = '_0_'";
  108.         }
  109.         else
  110.         {
  111.             strSQL = "select Count(*) from " + TableName + " where Station=((select Station from " + TableName +
  112.                      " where ID=" + iSystemDirectoryID + ")+'" + iSystemDirectoryID + "_')";
  113.         }
  114.         vc = SQLManager.GetResultSet(strSQL);
  115.         iReturnValue = Integer.parseInt( ( (Vector) vc.get(0)).get(0).toString());
  116.         return iReturnValue;
  117.     }
  118.     /**
  119.      * 获取所有子目录ID组成的字符串
  120.      * @param iSystemDirectoryID  系统目录ID
  121.      * @return  子目录ID组成的字符串
  122.      */
  123.     public static String getSubSystemDirectoryIDs(int iSystemDirectoryID)
  124.     {
  125.         String strReturnValue = "";
  126.         String strSQL;
  127.         Vector vc = new Vector();
  128.         if (iSystemDirectoryID == 0)
  129.         {
  130.             strSQL = "select ID from " + TableName + "";
  131.         }
  132.         else
  133.         {
  134.             strSQL = "select ID from " + TableName + " where Station like ((select Station from " + TableName +
  135.                      " where ID=" + iSystemDirectoryID + ")+'" + iSystemDirectoryID + "_%')";
  136.         }
  137.         vc = SQLManager.GetResultSet(strSQL);
  138.         for(int i=0;i<vc.size();i++)
  139.         {
  140.           strReturnValue += ","+ ((Vector) vc.get(i)).get(0).toString();
  141.         }
  142.         if(strReturnValue.length()>1)
  143.         {
  144.           return strReturnValue.substring(1);
  145.         }
  146.         else
  147.         {
  148.           return "";
  149.         }
  150.     }
  151.     /**
  152.      * 更新指定ID目录的子目录个数
  153.      * @param iSystemDirectoryID  目录ID
  154.      */
  155.     public void updateSubSystemDirectoryCount(int iSystemDirectoryID)
  156.     {
  157.         SQLManager.ExcuteSQL("Update " + TableName + " set ChildrenAcount=" + getSubSystemDirectoryCount(iSystemDirectoryID) +
  158.                              " where ID=" + iSystemDirectoryID);
  159.     }
  160.     public void updateSubSystemDirectoryData(int iSystemDirectoryID,String strNewStation,String strOldStation,int iLevelChange)
  161.     {
  162.         String strUpdateSQL = "Update " + TableName + " set LevelNumber=LevelNumber + " + iLevelChange + ",Station = Replace(Station,'" + strOldStation + "','" + strNewStation+ "') where Station like '" + strOldStation + iSystemDirectoryID + "_"+"%'";
  163.         SQLManager.ExcuteSQL(strUpdateSQL);
  164.     }
  165.     /**
  166.      * 新增目录记录
  167.      * @param m_request 包含新目录记录的Request请求
  168.      * @return  新目录的ID(大于等于1)或者错误代码(小于1)
  169.      */
  170.     public int InsertRecord(Request m_request)
  171.     {
  172.         int iReturnValue = super.InsertRecord(m_request);
  173.         int iSystemDirectoryID = m_request.GetInt("SystemDirectoryID");
  174.         updateSubSystemDirectoryCount(iSystemDirectoryID);
  175.         return iReturnValue;
  176.     }
  177.     /**
  178.      * 修改目录记录
  179.      * @param m_request 包含目录记录的Request请求
  180.      * @return  目录的ID(大于等于1)或者错误代码(小于1)
  181.      */
  182.     public int UpdateRecord(Request m_request)
  183.     {
  184.         int iID = m_request.GetInt("ID");
  185.         int iNewLevelNumber = m_request.GetInt("LevelNumber");
  186.         String strNewStation = m_request.GetString("Station");
  187.         Vector vc = SQLManager.GetResultSet("select Station,LevelNumber from " + TableName + " where ID=" + iID);
  188.         String strOldStation = ( (Vector) vc.get(0)).get(0).toString();
  189.         int iOldLevelNumber = Integer.parseInt(( (Vector) vc.get(0)).get(1).toString());
  190.         String strStation = strOldStation.substring(0, strOldStation.length() - 1);
  191.         int iOldSystemDirectoryID = Integer.parseInt(strStation.substring(strStation.lastIndexOf("_")+1));
  192.         int iNewSystemDirectoryID = m_request.GetInt("SystemDirectoryID");
  193.         int iReturnValue = 0;
  194.         if (iOldSystemDirectoryID != iNewSystemDirectoryID)
  195.         {
  196.           SQLManager.ExcuteSQL("Update " + TableName + " set OrderNumber=OrderNumber-1 where OrderNumber>(select OrderNumber from " + TableName + " where ID=" + iID +") and Station=((select Station  from " + TableName + " where ID=" + iID +")+'')");
  197.           iReturnValue = super.UpdateRecord(m_request);
  198.           updateSubSystemDirectoryCount(iNewSystemDirectoryID);
  199.           updateSubSystemDirectoryCount(iOldSystemDirectoryID);
  200.           updateSubSystemDirectoryData(iID,strNewStation,strOldStation,iNewLevelNumber-iOldLevelNumber);
  201.           setSysDirOrderNumber(iID,10000);
  202.           reOrderSysDir(strOldStation);
  203.           reOrderSysDir(strNewStation);
  204.         }
  205.         else
  206.         {
  207.             iReturnValue = super.UpdateRecord(m_request);
  208.           reOrderSysDir(strNewStation);
  209.         }
  210.         return iReturnValue;
  211.     }
  212.     /**
  213.      * 删除指定ID目录
  214.      * @param iID  目录ID
  215.      * @return  错误代码(小于1)
  216.      */
  217.     public int DeleteByID(int iID)
  218.     {
  219.         SQLManager.ExcuteSQL("Update " + TableName + " set OrderNumber=OrderNumber-1 where OrderNumber>(select OrderNumber from " + TableName + " where ID=" + iID +") and Station=((select Station  from " + TableName + " where ID=" + iID +")+'')");
  220.         int iReturnValue = super.DeleteByID(iID);
  221.         updateSubSystemDirectoryCount(iID);
  222.         return iReturnValue;
  223.     }
  224.     /**
  225.      * 按照指定方向移动指定系统目录
  226.      * @param iSysDirID int 指定系统目录的ID
  227.      * @param strDirect String 指定移动方向
  228.      * @return int 错误代码
  229.      */
  230.     public static int moveSysDir(int iSysDirID,String strDirect)
  231.     {
  232.       int iErrCode=1;
  233.       Vector vt=getRecordByID(iSysDirID);
  234.       if(vt.size()==1)
  235.       {
  236.         if(strDirect.equalsIgnoreCase("Top"))
  237.         {
  238.           setSysDirOrderNumber(iSysDirID,-10000);
  239.         }
  240.         else if(strDirect.equalsIgnoreCase("Bottom"))
  241.         {
  242.           setSysDirOrderNumber(iSysDirID,10000);
  243.         }
  244.         else if(strDirect.equalsIgnoreCase("Up"))
  245.         {
  246.           SQLManager.ExcuteSQL("Update " + TableName + " set OrderNumber=OrderNumber-1 where ID=" + iSysDirID +"");
  247.           SQLManager.ExcuteSQL("Update " + TableName + " set OrderNumber=OrderNumber+1 where ID in (Select ID from " + TableName + " where Station=(Select Station from " + TableName + " where ID=" + iSysDirID +") and OrderNumber=(Select OrderNumber from " + TableName + " where ID=" + iSysDirID +") and ID<>" + iSysDirID + ")");
  248.         }
  249.         else if(strDirect.equalsIgnoreCase("Down"))
  250.         {
  251.           SQLManager.ExcuteSQL("Update " + TableName + " set OrderNumber=OrderNumber+1 where ID=" + iSysDirID +"");
  252.           SQLManager.ExcuteSQL("Update " + TableName + " set OrderNumber=OrderNumber-1 where ID in (Select ID from " + TableName + " where Station=(Select Station from " + TableName + " where ID=" + iSysDirID +") and OrderNumber=(Select OrderNumber from " + TableName + " where ID=" + iSysDirID +") and ID<>" + iSysDirID + ")");
  253.         }
  254.         reOrderSysDir(( (Vector) vt.get(0)).get(2).toString());
  255.       }
  256.       else
  257.       {
  258.           iErrCode=-3;
  259.       }
  260.       return iErrCode;
  261.     }
  262.     /**
  263.      * 修改指定系统目录的排序编号
  264.      * @param iSysDirID int 指定系统目录ID
  265.      * @param iOrderNumber int 新的排序编号
  266.      */
  267.     private static void setSysDirOrderNumber(int iSysDirID,int iOrderNumber)
  268.     {
  269.       SQLManager.ExcuteSQL("Update " + TableName + " set OrderNumber=" + iOrderNumber + " where ID=" + iSysDirID + "");
  270.     }
  271.     /**
  272.      * 重新排序指定位置的系统目录
  273.      * @param strStation String
  274.      */
  275.     private static void reOrderSysDir(String strStation)
  276.     {
  277.       if(strStation==null || strStation.trim().length()==0)
  278.       {
  279.         strStation="_0_";
  280.       }
  281.       Vector vt=SQLManager.GetResultSet("Select * from " + TableName + " where Station='" + strStation + "' order by OrderNumber");
  282.       for(int i=0;i<vt.size();i++)
  283.       {
  284.         try
  285.         {
  286.           int iID = 0;
  287.           iID=Integer.parseInt(( (Vector) vt.get(i)).get(0).toString());
  288.           setSysDirOrderNumber(iID,i+1);
  289.         }
  290.         catch(Exception err)
  291.         {
  292.         }
  293.       }
  294.     }
  295. }