コード例 #1
0
        /// <summary>
        /// Initiates the synchronization of source and target databases by cycling
        /// through a DataSyncActionsCollection and executing the script member
        /// of each DataSyncAction object.
        /// </summary>
        /// <returns>
        /// True  - synchronized
        /// True  - SyncActionsCollection.Count == 0, because CompareForSync() not called.
        /// False - exceptions encountered
        /// </returns>
        public bool Sync()
        {
            throw new NotImplementedException();
            try
            {
                var ticks = DateTime.Now.Ticks;
                TotalDataEventWaitTime = new TimeSpan(ticks);
                TotalDataEventWaitTime = TotalDataEventWaitTime.Subtract(TotalDataEventWaitTime);
                var start = new TimeSpan(ticks);
                DataTimer.RaiseTimerStatusEvent("Starting synchronization of source and target databases.");

                Exceptions.Clear();

                // For server specific stuff
                SyncInternal();

                var finish   = new TimeSpan(DateTime.Now.Ticks);
                var interval = finish.Subtract(start);
                interval = interval.Subtract(TotalDataEventWaitTime);
                DataTimer.RaiseTimerStatusEvent(interval, "Finished synchronization.");
            }
            catch (Exception exception)
            {
                Exceptions.Add(exception);
            }

            return(Exceptions.Count == 0);
        }
コード例 #2
0
        /// <summary>
        /// Constructor initializes the instance specific DataSyncManager and sets up all
        /// objects needed to perform CompareForSync() and Sync() methods from the
        /// source server and target connection. The source server may be a custom server
        /// model pulled from a Json file or created on the fly and passed to this DataSyncManager object.
        /// </summary>
        /// <param name="sourceServer">The source Server object.</param>
        /// <param name="targetDataConnectionInfo">target data connection info</param>
        /// <param name="dataProperties">data properties</param>
        protected DataSyncManager(Server sourceServer, DataConnectionInfo targetDataConnectionInfo, DataProperties dataProperties)
        {
            throw new NotImplementedException();
            Exceptions = new List <Exception>();
            DataTimer  = new DataTimer();
            DataSyncActionsCollection = new DataSyncActionsCollection();
            DataProperties            = dataProperties ?? new DataProperties();
            TotalDataEventWaitTime    = new TimeSpan(DateTime.Now.Ticks);
            TotalDataEventWaitTime    = TotalDataEventWaitTime.Subtract(TotalDataEventWaitTime);

            SourceDataConnectionInfo    = null;
            SourceDataConnectionManager = null;
            SourceServer = sourceServer; // Could be null...
            TargetServer = null;

            try
            {
                TargetDataConnectionInfo = targetDataConnectionInfo;
            }
            catch (Exception ex)
            {
                TargetDataConnectionInfo    = null;
                TargetDataConnectionManager = null;
                Exceptions.Add(ex);
            }
        }
コード例 #3
0
 /// <summary>
 /// Start or stop the timer depending upon the current state.
 /// </summary>
 private void btnStartStopTimer_Click(object sender, RoutedEventArgs e)
 {
     if (DataTimer.IsEnabled)
     {
         DataTimer.Stop();
         btnStartStopTimer.Content = "Start";
     }
     else
     {
         DataTimer.Start();
         btnStartStopTimer.Content = "Stop";
     }
 }
コード例 #4
0
        protected DataSyncManager()
        {
            throw new NotImplementedException();
            Exceptions = new List <Exception>();
            DataTimer  = new DataTimer();

            DataSyncActionsCollection = new DataSyncActionsCollection();
            DataProperties            = new DataProperties();
            TotalDataEventWaitTime    = new TimeSpan(DateTime.Now.Ticks);
            TotalDataEventWaitTime    = TotalDataEventWaitTime.Subtract(TotalDataEventWaitTime);

            SourceDataConnectionInfo    = null;
            SourceDataConnectionManager = null;
            SourceServer = null;

            TargetDataConnectionInfo    = null;
            TargetDataConnectionManager = null;
            TargetServer = null;
        }
コード例 #5
0
ファイル: frmMonitor.cs プロジェクト: msuksan/piyawin
        private void LoadData()
        {
            try
            {
                DataRow row = dataManager.RetriveNowData("01");
                if (row != null)
                {
                    //AlertPowerAC = (ObjFloat(row["power"]) < al.MinPowerAC || ObjFloat(row["power"]) > al.MaxPowerAC) ? true : false;
                    //lbPowerAC.BackColor = (AlertPowerAC) ? BackColorAlarm : BackColorNormal;
                    //lbPowerAC.ForeColor = (AlertPowerAC) ? ForeColorAlarm : ForeColorNormal;
                    //lbPowerAC.Text = ObjString(row["power"]);

                    //AlertCurrentAC = (ObjFloat(row["current"]) < al.MinCurrentAC || ObjFloat(row["current"]) > al.MaxCurrentAC) ? true : false;
                    //lbCurrentAC.BackColor = (AlertCurrentAC) ? BackColorAlarm : BackColorNormal;
                    //lbCurrentAC.ForeColor = (AlertCurrentAC) ? ForeColorAlarm : ForeColorNormal;
                    //lbCurrentAC.Text = ObjString(row["current"]);

                    AlertVoltAC    = (ObjFloat(row["VG"]) < al.MinVoltAC || ObjFloat(row["VG"]) > al.MaxVoltAC) ? true : false;
                    lbVG.BackColor = (AlertVoltAC) ? BackColorAlarm : BackColorNormal;
                    lbVG.ForeColor = (AlertVoltAC) ? ForeColorAlarm : ForeColorNormal;
                    lbVG.Text      = ObjString(row["VG"]);

                    AlertCurrentAC = (ObjFloat(row["IG"]) < al.MinCurrentAC || ObjFloat(row["IG"]) > al.MaxCurrentAC) ? true : false;
                    lbIG.BackColor = (AlertCurrentAC) ? BackColorAlarm : BackColorNormal;
                    lbIG.ForeColor = (AlertCurrentAC) ? ForeColorAlarm : ForeColorNormal;
                    lbIG.Text      = ObjString(row["IG"]);

                    lbPG.Text  = ObjString(row["PG"]);
                    lbFG.Text  = ObjString(row["FG"]);
                    lbDWH.Text = ObjString(row["DWH"]);
                    lbTWH.Text = ObjString(row["TWH"]);

                    lbVIN1.Text = ObjString(row["VIN1"]);
                    lbIIN1.Text = ObjString(row["IIN1"]);
                    lbPIN1.Text = ObjString(row["PIN1"]);

                    lbVIN2.Text = ObjString(row["VIN2"]);
                    lbIIN2.Text = ObjString(row["IIN2"]);
                    lbPIN2.Text = ObjString(row["PIN2"]);

                    lbDate.Text = ObjString(row["Rectime"]);
                }

/*
 *              row = dataManager.RetriveNowData("90");
 *              if (row != null)
 *              {
 *                  lbTemp1.BackColor = (AlertVoltPoly1) ? BackColorAlarm : BackColorNormal;
 *                  lbTemp1.ForeColor = (AlertVoltPoly1) ? ForeColorAlarm : ForeColorNormal;
 *                  lbTemp1.Text = ObjString(row["temperature1"]);
 *
 *                  AlertVoltPoly1 = (ObjFloat(row["temperature2"]) < al.MinVoltPoly1 || ObjFloat(row["temperature2"]) > al.MaxVoltPoly1) ? true : false;
 *                  lbTemp2.BackColor = (AlertVoltPoly1) ? BackColorAlarm : BackColorNormal;
 *                  lbTemp2.ForeColor = (AlertVoltPoly1) ? ForeColorAlarm : ForeColorNormal;
 *                  lbTemp2.Text = ObjString(row["temperature2"]);
 *
 *                  AlertCurrentPoly1 = (ObjFloat(row["humid1"]) < al.MinCurrentPoly1 || ObjFloat(row["humid1"]) > al.MaxCurrentPoly1) ? true : false;
 *                  lbHumid1.BackColor = (AlertCurrentPoly1) ? BackColorAlarm : BackColorNormal;
 *                  lbHumid1.ForeColor = (AlertCurrentPoly1) ? ForeColorAlarm : ForeColorNormal;
 *                  lbHumid1.Text = ObjString(row["humid1"]);
 *
 *                  lbIrr1.Text = ObjString(row["irr1"]);
 *                  if (ObjString(row["control_code"]) != "0") errorPvd.SetError(lbTemp2, "Error: " + ObjString(row["remark"]));
 *                  else errorPvd.SetError(lbTemp2, "");
 *              }
 *
 *              row = dataManager.RetriveNowData("10");
 *              if (row != null)
 *              {
 *
 *                  AlertPowerAC = (ObjFloat(row["power"]) < al.MinPowerAC || ObjFloat(row["power"]) > al.MaxPowerAC) ? true : false;
 *                  lbPowerAC.BackColor = (AlertPowerAC) ? BackColorAlarm : BackColorNormal;
 *                  lbPowerAC.ForeColor = (AlertPowerAC) ? ForeColorAlarm : ForeColorNormal;
 *                  lbPowerAC.Text = ObjString(row["power"]);
 *
 *                  AlertVoltAC = (ObjFloat(row["voltage"]) < al.MinVoltAC || ObjFloat(row["voltage"]) > al.MaxVoltAC) ? true : false;
 *                  lbVoltAC.BackColor = (AlertVoltAC) ? BackColorAlarm : BackColorNormal;
 *                  lbVoltAC.ForeColor = (AlertVoltAC) ? ForeColorAlarm : ForeColorNormal;
 *                  lbVoltAC.Text = ObjString(row["voltage"]);
 *
 *                  AlertCurrentAC = (ObjFloat(row["current"]) < al.MinCurrentAC || ObjFloat(row["current"]) > al.MaxCurrentAC) ? true : false;
 *                  lbCurrentAC.BackColor = (AlertCurrentAC) ? BackColorAlarm : BackColorNormal;
 *                  lbCurrentAC.ForeColor = (AlertCurrentAC) ? ForeColorAlarm : ForeColorNormal;
 *                  lbCurrentAC.Text = ObjString(row["current"]);
 *
 *                  lbPF.Text = ObjString(row["pf"]);
 *                  lbFrequency.Text = ObjString(row["frequency"]);
 *
 *
 *                  if (ObjString(row["control_code"]) != "0") errorPvd.SetError(lbVoltAC, "Error: " + ObjString(row["remark"]));
 *                  else errorPvd.SetError(lbVoltAC, "");
 *
 *                  lbDate.Text = "data update: " + ObjDateTime(row["create_date"]).ToString("d/MM/yyyy H:mm");
 *
 *              }
 *              row = dataManager.RetriveNowData("11");
 *              if (row != null)
 *              {
 *
 *                  AlertPowerAC = (ObjFloat(row["power"]) < al.MinPowerAC || ObjFloat(row["power"]) > al.MaxPowerAC) ? true : false;
 *                  lbPower2.BackColor = (AlertPowerAC) ? BackColorAlarm : BackColorNormal;
 *                  lbPower2.ForeColor = (AlertPowerAC) ? ForeColorAlarm : ForeColorNormal;
 *                  lbPower2.Text = ObjString(row["power"]);
 *
 *                  AlertVoltAC = (ObjFloat(row["voltage"]) < al.MinVoltAC || ObjFloat(row["voltage"]) > al.MaxVoltAC) ? true : false;
 *                  lbVolt2.BackColor = (AlertVoltAC) ? BackColorAlarm : BackColorNormal;
 *                  lbVolt2.ForeColor = (AlertVoltAC) ? ForeColorAlarm : ForeColorNormal;
 *                  lbVolt2.Text = ObjString(row["voltage"]);
 *
 *                  AlertCurrentAC = (ObjFloat(row["current"]) < al.MinCurrentAC || ObjFloat(row["current"]) > al.MaxCurrentAC) ? true : false;
 *                  lbAmp2.BackColor = (AlertCurrentAC) ? BackColorAlarm : BackColorNormal;
 *                  lbAmp2.ForeColor = (AlertCurrentAC) ? ForeColorAlarm : ForeColorNormal;
 *                  lbAmp2.Text = ObjString(row["current"]);
 *
 *                  lbPF2.Text = ObjString(row["pf"]);
 *                  lbFreq2.Text = ObjString(row["frequency"]);
 *
 *                  if (ObjString(row["control_code"]) != "0") errorPvd.SetError(lbVolt2, "Error: " + ObjString(row["remark"]));
 *                  else errorPvd.SetError(lbVoltAC, "");
 *
 *              }
 *
 *
 *              row = dataManager.RetriveNowData("12");
 *              if (row != null)
 *              {
 *
 *                  AlertPowerAC = (ObjFloat(row["power"]) < al.MinPowerAC || ObjFloat(row["power"]) > al.MaxPowerAC) ? true : false;
 *                  lbPower3.BackColor = (AlertPowerAC) ? BackColorAlarm : BackColorNormal;
 *                  lbPower3.ForeColor = (AlertPowerAC) ? ForeColorAlarm : ForeColorNormal;
 *                  lbPower3.Text = ObjString(row["power"]);
 *
 *                  AlertVoltAC = (ObjFloat(row["voltage"]) < al.MinVoltAC || ObjFloat(row["voltage"]) > al.MaxVoltAC) ? true : false;
 *                  lbVolt3.BackColor = (AlertVoltAC) ? BackColorAlarm : BackColorNormal;
 *                  lbVolt3.ForeColor = (AlertVoltAC) ? ForeColorAlarm : ForeColorNormal;
 *                  lbVolt3.Text = ObjString(row["voltage"]);
 *
 *                  AlertCurrentAC = (ObjFloat(row["current"]) < al.MinCurrentAC || ObjFloat(row["current"]) > al.MaxCurrentAC) ? true : false;
 *                  lbAmp3.BackColor = (AlertCurrentAC) ? BackColorAlarm : BackColorNormal;
 *                  lbAmp3.ForeColor = (AlertCurrentAC) ? ForeColorAlarm : ForeColorNormal;
 *                  lbAmp3.Text = ObjString(row["current"]);
 *
 *                  lbPF3.Text = ObjString(row["pf"]);
 *                  lbFreq3.Text = ObjString(row["frequency"]);
 *
 *                  if (ObjString(row["control_code"]) != "0") errorPvd.SetError(lbVolt3, "Error: " + ObjString(row["remark"]));
 *                  else errorPvd.SetError(lbVoltAC, "");
 *
 *              }
 */
            }
            catch (Exception ex)
            {
                DataTimer.Stop();
                MessageBox.Show("Error Loading!!" + ex.Message, "มีข้อผิดพลาด", MessageBoxButtons.OK, MessageBoxIcon.Error);
                DataTimer.Start();
                //throw (ex);
            }
        }
コード例 #6
0
        /// <summary>
        /// Initiates the synchronization of source and target databases by cycling
        /// through a DataSyncActionsCollection and executing the script member
        /// of each DataSyncAction object.
        /// </summary>
        /// <returns>
        /// True  - synchronized
        /// True  - SyncActionsCollection.Count == 0, because CompareForSync() not called.
        /// False - exceptions encountered
        /// </returns>
        protected override bool SyncInternal()
        {
            Exceptions.Clear();
            if (DataSyncActionsCollection.Count == 0)
            {
                return(true);
            }

            var scripts = Script();

            if (scripts.Count == 0)
            {
                return(true);
            }

            var start = new TimeSpan(DateTime.Now.Ticks);

            DataTimer.RaiseTimerStatusEvent(
                string.Format("Connecting to database with connection name [{0}]",
                              TargetDataConnectionInfo.Name));

            var random            = new Random();
            var transactionNumber = random.Next();
            var transactionName   = string.Format("IdioSyncracy{0}", transactionNumber);

            using (var sqlConnection = new SqlConnection(TargetDataConnectionInfo.ConnectionString))
            {
                sqlConnection.Open();

                var finish   = new TimeSpan(DateTime.Now.Ticks);
                var interval = finish.Subtract(start);
                DataTimer.RaiseTimerStatusEvent(interval, "Database connection established.");

                if (!TargetDataConnectionInfo.IsAcceptableVersion(sqlConnection))
                {
                    TargetDataConnectionInfo.ThrowVersionException();
                }

                var sqlCommand     = sqlConnection.CreateCommand();
                var sqlTransaction = sqlConnection.BeginTransaction(transactionName);
                sqlCommand.Connection  = sqlConnection;
                sqlCommand.Transaction = sqlTransaction;
                sqlCommand.Parameters.Add("@ReturnValue", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;

                try
                {
                    foreach (var script in scripts)
                    {
                        sqlCommand.CommandText = script;
                        var rowsAffected = sqlCommand.ExecuteNonQuery();

                        if (rowsAffected == -1)
                        {
                            continue;
                        }

                        var exception = new Exception("The following query failed to execute: " + sqlCommand.CommandText);
                        Exceptions.Add(exception);
                        sqlTransaction.Rollback(transactionName);

                        return(false);
                    }

                    sqlTransaction.Commit();

                    finish   = new TimeSpan(DateTime.Now.Ticks);
                    interval = finish.Subtract(start);
                    DataTimer.RaiseTimerStatusEvent(interval, "SQL Transaction commited successfully.");

                    sqlConnection.Close();

                    return(true);
                }
                catch (Exception ex1)
                {
                    Exceptions.Add(ex1);

                    try
                    {
                        sqlTransaction.Rollback(transactionName);
                        sqlConnection.Close();
                    }
                    catch (Exception ex2)
                    {
                        // This catch block will handle any errors that may have occurred
                        // on the server that would cause the rollback to fail, such as
                        // a closed connection.

                        Exceptions.Add(ex2);
                    }

                    return(false);
                }
            }
        }
コード例 #7
0
        //public bool FetchTargetDataModelFromJson(string json)
        //{

        //    var ticks = DateTime.Now.Ticks;
        //    TotalDataEventWaitTime = new TimeSpan(ticks);
        //    TotalDataEventWaitTime = TotalDataEventWaitTime.Subtract(TotalDataEventWaitTime);
        //    var start = new TimeSpan(ticks);
        //    DataTimer.RaiseTimerStatusEvent("Fetching target database JSon metadata.");

        //    Clear();

        //    try
        //    {
        //        if (string.IsNullOrEmpty(json) || string.IsNullOrWhiteSpace(json))
        //        {
        //            Exceptions.Add(new Exception(
        //                "Target metadeta could not be pulled from JSon."));
        //            return false;
        //        }

        //        var server = Server.FromJson(json);
        //        if (server == null)
        //        {
        //            Exceptions.Add(new Exception(
        //                "Target metadeta could not be pulled from JSon."));
        //            return false;
        //        }

        //        TargetServer = server;

        //        if (DataProperties.CatalogsToCompare.Count > 0)
        //            foreach (var catalogValue in
        //                DataProperties.CatalogsToCompare.Values.Where(
        //                    catalogValue => !TargetServer.Catalogs.ContainsKey(catalogValue)
        //                ))
        //                Server.RemoveCatalog(TargetServer, catalogValue);
        //    }
        //    catch (Exception ex)
        //    {
        //        Exceptions.Add(ex);
        //        return false;
        //    }

        //    var finish = new TimeSpan(DateTime.Now.Ticks);
        //    var interval = finish.Subtract(start);
        //    interval = interval.Subtract(TotalDataEventWaitTime);
        //    DataTimer.RaiseTimerStatusEvent(interval, "Finished fetching target database JSon metadata.");
        //    if (TotalDataEventWaitTime.Ticks > 0)
        //        DataTimer.RaiseTimerStatusEvent(TotalDataEventWaitTime, "Total user response time in dialog windows.");

        //    return true;
        //}

        public bool FetchTargetDataModelFromServer(bool closeDataConnectionAfterUse = true)
        {
            if (TargetDataConnectionInfo == null)
            {
                Exceptions.Add(new Exception("Target connection info has not been provided."));
                return(false);
            }

            var ticks = DateTime.Now.Ticks;

            TotalDataEventWaitTime = new TimeSpan(ticks);
            TotalDataEventWaitTime = TotalDataEventWaitTime.Subtract(TotalDataEventWaitTime);
            var start = new TimeSpan(ticks);

            DataTimer.RaiseTimerStatusEvent("Fetching target database metadata.");

            Clear();

            // Open target data connection if it does not already exist and should exist.
            if (TargetDataConnectionManager == null)
            {
                var targetStart = new TimeSpan(DateTime.Now.Ticks);
                DataTimer.RaiseTimerStatusEvent(string.Format("Creating and opening connection for target server: [{0}]", TargetDataConnectionInfo.Name));
                TargetDataConnectionManager = new DataConnectionManager(TargetDataConnectionInfo);
                TargetDataConnectionManager.Open();
                var targetFinish   = new TimeSpan(DateTime.Now.Ticks);
                var targetInterval = targetFinish.Subtract(targetStart);
                DataTimer.RaiseTimerStatusEvent(
                    targetInterval,
                    string.Format("Finished creating and opening connection for target server: [{0}]",
                                  TargetDataConnectionInfo.Name));
            }
            else if (!TargetDataConnectionManager.IsOpen())
            {
                if (TargetDataConnectionManager.IsBusy())
                {
                    Exceptions.Add(new Exception(
                                       string.Format("Target connection for server: [{0}]... is busy! Please try again in a few moments.",
                                                     TargetDataConnectionInfo.Name)
                                       ));
                    return(false);
                }

                var targetStart = new TimeSpan(DateTime.Now.Ticks);
                DataTimer.RaiseTimerStatusEvent(
                    string.Format("Opening connection for target connection: [{0}]",
                                  TargetDataConnectionInfo.Name));
                TargetDataConnectionManager.Open();
                var targetFinish   = new TimeSpan(DateTime.Now.Ticks);
                var targetInterval = targetFinish.Subtract(targetStart);
                DataTimer.RaiseTimerStatusEvent(
                    targetInterval,
                    string.Format("Finished opening connection for target server: [{0}]",
                                  TargetDataConnectionInfo.Name));
            }

            TargetServer     = null;
            DataSyncComparer = null;

            if (!TargetDataConnectionManager.IsOpen())
            {
                Exceptions.Add(new Exception(
                                   string.Format("Connection for target server: [{0}]... could not be opened.",
                                                 TargetDataConnectionInfo.Name)));
                return(false);
            }

            var targetServerStart = new TimeSpan(DateTime.Now.Ticks);

            DataTimer.RaiseTimerStatusEvent(
                string.Format("Creating and pulling data objects for target connection [{0}]",
                              TargetDataConnectionInfo.Name));
            TargetServer = new Server
            {
                ObjectName  = TargetDataConnectionInfo.Name,
                DataContext = TargetDataConnectionInfo.DataContext
            };

            Server.BuildCatalogs(TargetServer, TargetDataConnectionManager, closeDataConnectionAfterUse);

            var targetServerFinish   = new TimeSpan(DateTime.Now.Ticks);
            var targetServerInterval = targetServerFinish.Subtract(targetServerStart);

            DataTimer.RaiseTimerStatusEvent(
                targetServerInterval,
                string.Format(
                    "Finished creating data objects for target connection [{0}]",
                    TargetDataConnectionInfo.Name));

            var finish   = new TimeSpan(DateTime.Now.Ticks);
            var interval = finish.Subtract(start);

            interval = interval.Subtract(TotalDataEventWaitTime);
            DataTimer.RaiseTimerStatusEvent(interval, "Finished fetching target database metadata.");
            if (TotalDataEventWaitTime.Ticks > 0)
            {
                DataTimer.RaiseTimerStatusEvent(TotalDataEventWaitTime, "Total user response time in dialog windows.");
            }

            return(true);
        }