Esempio n. 1
0
        }       //	checkTableSequences

        /// <summary>
        /// Check Table Sequence ID values
        /// </summary>
        /// <param name="ctx">context</param>
        /// <param name="sp">server process or null</param>
        private static void CheckTableID(Ctx ctx, SvrProcess sp)
        {
            if (MSysConfig.IsNativeSequence(false))
            {
                String sql = "SELECT * FROM AD_Sequence "
                             + "WHERE IsTableID='Y' "
                             + "ORDER BY Name";
                DataSet ds      = null;
                int     counter = 0;
                Trx     trxName = null;
                if (sp != null)
                {
                    trxName = sp.Get_Trx();
                }
                try
                {
                    ds = DataBase.DB.ExecuteDataset(sql, null, trxName);
                    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                    {
                        MSequence seq    = new MSequence(ctx, ds.Tables[0].Rows[i], trxName);
                        int       curVal = DB.GetSQLValue(trxName, "select " + ds.Tables[0].Rows[i]["Name"].ToString() + "_SEQ.currval+1 from DUAL");
                        seq.SetCurrentNext(curVal);
                        if (seq.Save())
                        {
                            sp.AddLog(0, null, null, "Sequence Updated For :" + ds.Tables[0].Rows[i]["Name"].ToString());
                            counter++;
                        }
                        else
                        {
                            _log.Severe("Sequence Not Updated For :" + ds.Tables[0].Rows[i]["Name"].ToString());
                        }
                    }
                }
                catch (Exception ex)
                {
                    _log.Log(Level.SEVERE, sql, ex);
                }
            }
            else
            {
                int IDRangeEnd = DataBase.DB.GetSQLValue(null,
                                                         "SELECT IDRangeEnd FROM AD_System");
                if (IDRangeEnd <= 0)
                {
                    IDRangeEnd = DataBase.DB.GetSQLValue(null,
                                                         "SELECT MIN(IDRangeStart)-1 FROM AD_Replication");
                }
                _log.Info("IDRangeEnd = " + IDRangeEnd);
                //
                String sql = "SELECT * FROM AD_Sequence "
                             + "WHERE IsTableID='Y' "
                             + "ORDER BY Name";
                int counter = 0;
                //IDataReader idr = null;
                DataSet ds      = null;
                Trx     trxName = null;
                if (sp != null)
                {
                    trxName = sp.Get_Trx();
                }
                try
                {
                    //pstmt = DataBase.prepareStatement(sql, trxName);
                    //idr = DataBase.DB.ExecuteReader(sql, null, trxName);
                    ds = DataBase.DB.ExecuteDataset(sql, null, trxName);

                    //while (idr.Read())
                    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                    {
                        MSequence seq    = new MSequence(ctx, ds.Tables[0].Rows[i], trxName);
                        int       old    = seq.GetCurrentNext();
                        int       oldSys = seq.GetCurrentNextSys();
                        if (seq.ValidateTableIDValue())
                        {
                            if (seq.GetCurrentNext() != old)
                            {
                                String msg = seq.GetName() + " ID  "
                                             + old + " -> " + seq.GetCurrentNext();
                                if (sp != null)
                                {
                                    sp.AddLog(0, null, null, msg);
                                }
                                else
                                {
                                    _log.Fine(msg);
                                }
                            }
                            if (seq.GetCurrentNextSys() != oldSys)
                            {
                                String msg = seq.GetName() + " Sys "
                                             + oldSys + " -> " + seq.GetCurrentNextSys();
                                if (sp != null)
                                {
                                    sp.AddLog(0, null, null, msg);
                                }
                                else
                                {
                                    _log.Fine(msg);
                                }
                            }
                            if (seq.Save())
                            {
                                counter++;
                            }
                            else
                            {
                                _log.Severe("Not updated: " + seq);
                            }
                        }
                        //	else if (CLogMgt.isLevel(6))
                        //		log.fine("OK - " + tableName);
                    }
                    // idr.Close();
                }
                catch (Exception e)
                {
                    //if (idr != null)
                    //{
                    //    idr.Close();
                    //}
                    _log.Log(Level.SEVERE, sql, e);
                }

                _log.Fine("#" + counter);
            }
        }       //	checkTableID
        }       //	checkTableSequences

        /// <summary>
        /// Check Table Sequence ID values
        /// </summary>
        /// <param name="ctx">context</param>
        /// <param name="sp">server process or null</param>
        private static void CheckTableID(Ctx ctx, SvrProcess sp)
        {
            if (MSysConfig.IsNativeSequence(false))
            {
                String sql = "SELECT * FROM AD_Sequence "
                             + "WHERE IsTableID='Y' "
                             + "ORDER BY Name";
                DataSet ds      = null;
                int     counter = 0;
                Trx     trxName = null;
                if (sp != null)
                {
                    trxName = sp.Get_Trx();
                }
                try
                {
                    ds = DataBase.DB.ExecuteDataset(sql, null, trxName);
                    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                    {
                        //Get Max value from Table_ID or AD_Sequence and update.
                        sql = @"Update AD_Sequence set updatedby=" + ctx.GetAD_User_ID() + ", updated=getdate(), CurrentNext=(SELECT max(maximum) FROM ( SELECT max(" + ds.Tables[0].Rows[i]["Name"].ToString() + @"_ID)+1 as maximum from " + ds.Tables[0].Rows[i]["Name"].ToString() +
                              @" Union
                         SELECT currentnext AS maximum FROM AD_Sequence WHERE Name = '" + ds.Tables[0].Rows[i]["Name"].ToString() + "') ";
                        if (DB.IsPostgreSQL())
                        {
                            sql += " foo ";
                        }

                        sql += ") WHERE Name = '" + ds.Tables[0].Rows[i]["Name"].ToString() + "'";

                        int curVal = DB.ExecuteQuery(sql, null, trxName);

                        if (curVal > 0)
                        {
                            sp.AddLog(0, null, null, "Sequence Updated For :" + ds.Tables[0].Rows[i]["Name"].ToString());

                            counter++;
                        }
                        else
                        {
                            _log.Severe("Sequence Not Updated For :" + ds.Tables[0].Rows[i]["Name"].ToString());
                        }
                    }
                }
                catch (Exception ex)
                {
                    _log.Log(Level.SEVERE, sql, ex);
                }
            }
            else
            {
                int IDRangeEnd = DataBase.DB.GetSQLValue(null,
                                                         "SELECT IDRangeEnd FROM AD_System");
                if (IDRangeEnd <= 0)

                {
                    IDRangeEnd = DataBase.DB.GetSQLValue(null,
                                                         "SELECT MIN(IDRangeStart)-1 FROM AD_Replication");
                }
                _log.Info("IDRangeEnd = " + IDRangeEnd);
                //
                String sql = "SELECT * FROM AD_Sequence "
                             + "WHERE IsTableID='Y' "
                             + "ORDER BY Name";
                int counter = 0;
                //IDataReader idr = null;
                DataSet ds      = null;
                Trx     trxName = null;
                if (sp != null)
                {
                    trxName = sp.Get_Trx();
                }
                try
                {
                    //pstmt = DataBase.prepareStatement(sql, trxName);
                    //idr = DataBase.DB.ExecuteReader(sql, null, trxName);
                    ds = DataBase.DB.ExecuteDataset(sql, null, trxName);

                    //while (idr.Read())
                    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                    {
                        MSequence seq    = new MSequence(ctx, ds.Tables[0].Rows[i], trxName);
                        int       old    = seq.GetCurrentNext();
                        int       oldSys = seq.GetCurrentNextSys();
                        if (seq.ValidateTableIDValue())
                        {
                            if (seq.GetCurrentNext() != old)
                            {
                                String msg = seq.GetName() + " ID  "
                                             + old + " -> " + seq.GetCurrentNext();
                                if (sp != null)
                                {
                                    sp.AddLog(0, null, null, msg);
                                }
                                else
                                {
                                    _log.Fine(msg);
                                }
                            }
                            if (seq.GetCurrentNextSys() != oldSys)
                            {
                                String msg = seq.GetName() + " Sys "
                                             + oldSys + " -> " + seq.GetCurrentNextSys();
                                if (sp != null)
                                {
                                    sp.AddLog(0, null, null, msg);
                                }
                                else
                                {
                                    _log.Fine(msg);
                                }
                            }
                            if (seq.Save())
                            {
                                counter++;
                            }
                            else
                            {
                                _log.Severe("Not updated: " + seq);
                            }
                        }
                        //	else if (CLogMgt.isLevel(6))
                        //		log.fine("OK - " + tableName);
                    }
                    // idr.Close();
                }
                catch (Exception e)
                {
                    //if (idr != null)
                    //{
                    //    idr.Close();
                    //}
                    _log.Log(Level.SEVERE, sql, e);
                }

                _log.Fine("#" + counter);
            }
        }       //	checkTableID
        }       //	checkTableSequences

        /// <summary>
        /// Check Table Sequence ID values
        /// </summary>
        /// <param name="ctx">context</param>
        /// <param name="sp">server process or null</param>
        private static void CheckTableID(Ctx ctx, SvrProcess sp)
        {
            int IDRangeEnd = DataBase.DB.GetSQLValue(null,
                                                     "SELECT IDRangeEnd FROM AD_System");

            if (IDRangeEnd <= 0)
            {
                IDRangeEnd = DataBase.DB.GetSQLValue(null,
                                                     "SELECT MIN(IDRangeStart)-1 FROM AD_Replication");
            }
            _log.Info("IDRangeEnd = " + IDRangeEnd);
            //
            String sql = "SELECT * FROM AD_Sequence "
                         + "WHERE IsTableID='Y' "
                         + "ORDER BY Name";
            int         counter = 0;
            IDataReader idr     = null;
            Trx         trxName = null;

            if (sp != null)
            {
                trxName = sp.Get_Trx();
            }
            try
            {
                //pstmt = DataBase.prepareStatement(sql, trxName);
                idr = DataBase.DB.ExecuteReader(sql, null, trxName);
                while (idr.Read())
                {
                    MSequence seq    = new MSequence(ctx, idr, trxName);
                    int       old    = seq.GetCurrentNext();
                    int       oldSys = seq.GetCurrentNextSys();
                    if (seq.ValidateTableIDValue())
                    {
                        if (seq.GetCurrentNext() != old)
                        {
                            String msg = seq.GetName() + " ID  "
                                         + old + " -> " + seq.GetCurrentNext();
                            if (sp != null)
                            {
                                sp.AddLog(0, null, null, msg);
                            }
                            else
                            {
                                _log.Fine(msg);
                            }
                        }
                        if (seq.GetCurrentNextSys() != oldSys)
                        {
                            String msg = seq.GetName() + " Sys "
                                         + oldSys + " -> " + seq.GetCurrentNextSys();
                            if (sp != null)
                            {
                                sp.AddLog(0, null, null, msg);
                            }
                            else
                            {
                                _log.Fine(msg);
                            }
                        }
                        if (seq.Save())
                        {
                            counter++;
                        }
                        else
                        {
                            _log.Severe("Not updated: " + seq);
                        }
                    }
                    //	else if (CLogMgt.isLevel(6))
                    //		log.fine("OK - " + tableName);
                }
                idr.Close();
            }
            catch (Exception e)
            {
                if (idr != null)
                {
                    idr.Close();
                }
                _log.Log(Level.SEVERE, sql, e);
            }

            _log.Fine("#" + counter);
        }       //	checkTableID