Exemplo n.º 1
0
        /// <summary>
        /// Reads the data from the tracked properties and saves it to the data store for the tracked object.
        /// </summary>
        public void Persist()
        {
            if (TargetReference.IsAlive)
            {
                if (TargetStore == null)
                {
                    TargetStore = InitStore();
                }

                foreach (string propertyName in TrackedProperties.Keys)
                {
                    var value = TrackedProperties[propertyName].Getter(TargetReference.Target);
                    try
                    {
                        var shouldPersist = OnPersistingState(propertyName, ref value);
                        if (shouldPersist)
                        {
                            TargetStore.Set(value, propertyName);
                        }
                        else
                        {
                            Trace.WriteLine(string.Format("Persisting cancelled, key='{0}', property='{1}'.", Key, propertyName));
                        }
                    }
                    catch (Exception ex)
                    {
                        Trace.WriteLine(string.Format("Persisting failed, property key = '{0}', message='{1}'.", propertyName, ex.Message));
                    }
                }

                TargetStore.CommitChanges();

                OnStatePersisted();
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Applies any previously stored data to the tracked properties of the target object.
        /// </summary>
        public void Apply()
        {
            if (TargetReference.IsAlive)
            {
                foreach (string propertyName in TrackedProperties.Keys)
                {
                    TrackedPropertyInfo descriptor = TrackedProperties[propertyName];

                    if (TargetStore.ContainsKey(propertyName))
                    {
                        try
                        {
                            object storedValue  = TargetStore.Get(propertyName);
                            object valueToApply = OnApplyingState(propertyName, storedValue);
                            descriptor.Setter(TargetReference.Target, valueToApply);
                        }
                        catch (Exception ex)
                        {
                            Trace.WriteLine(string.Format("TRACKING: Applying tracking to property with key='{0}' failed. ExceptionType:'{1}', message: '{2}'!", propertyName, ex.GetType().Name, ex.Message));
                            if (descriptor.IsDefaultSpecified)
                            {
                                descriptor.Setter(TargetReference.Target, descriptor.DefaultValue);
                            }
                        }
                    }
                    else if (descriptor.IsDefaultSpecified)
                    {
                        descriptor.Setter(TargetReference.Target, descriptor.DefaultValue);
                    }
                }

                OnStateApplied();
            }
            IsApplied = true;
        }
Exemplo n.º 3
0
        /// <summary>
        /// Reads the data from the tracked properties and saves it to the data store for the tracked object.
        /// </summary>
        public void Persist()
        {
            if (TargetReference.IsAlive)
            {
                foreach (string propertyName in TrackedProperties.Keys)
                {
                    var value = TrackedProperties[propertyName].Getter(TargetReference.Target);

                    try
                    {
                        value = OnPersistingState(propertyName, value);
                        TargetStore.Set(value, propertyName);
                    }
                    catch (OperationCanceledException ex)
                    {
                        Trace.WriteLine(string.Format("Persisting cancelled, property key = '{0}', message='{1}'.", propertyName, ex.Message));
                    }
                    catch (Exception ex)
                    {
                        Trace.WriteLine(string.Format("Persisting failed, property key = '{0}', message='{1}'.", propertyName, ex.Message));
                    }
                }

                TargetStore.CommitChanges();

                OnStatePersisted();
            }
        }
Exemplo n.º 4
0
        public static TargetStore AddNewTarget(string simulationID)
        {
            TargetStore target = new TargetStore();

            using (SqlConnection connection = new SqlConnection(DB.ConnectionString))
            {
                try
                {
                    connection.Open();
                    string     insert = "INSERT INTO " + DB.TablePrefix + "TARGETS (SIMULATIONID,TARGETNAME,ATTRIBUTE_,TARGETMEAN,IS_OMS_PRIORITY) VALUES ('" + simulationID + "','Untitled Priority','OverallConditionIndex','50','1')";
                    SqlCommand cmd    = new SqlCommand(insert, connection);
                    cmd.ExecuteNonQuery();


                    string selectIdentity = "SELECT IDENT_CURRENT ('" + DB.TablePrefix + "TARGETS') FROM " + DB.TablePrefix + "TARGETS";
                    cmd              = new SqlCommand(selectIdentity, connection);
                    target.ID        = cmd.ExecuteScalar().ToString();
                    target.TargetOCI = 50;
                    target.Name      = "Untitled Priority";
                }
                catch {
                    target = null;
                }
            }
            return(target);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Initialize is called by StateTracker after the configuration object has been prepared (properties added, triggers set etc...).
        /// </summary>
        internal void CompleteInitialization()
        {
            object target = TargetReference.Target;

            //use the object type plus the key to identify the object store
            string storeName = Key == null?target.GetType().Name : string.Format("{0}_{1}", target.GetType().Name, Key);

            TargetStore = StateTracker.StoreFactory.CreateStoreForObject(storeName);
            TargetStore.Initialize();
        }
Exemplo n.º 6
0
        private static void UpdateYearlyTargetStartYear(int startYear, string simulationID)
        {
            List <TargetStore> targets = SelectScenario.GetEditSimulationTargets(simulationID);
            int numberYears            = targets.Count;

            if (numberYears == 0)
            {
                return;
            }
            // If startYear earlier than current, add new years with 0 amounts, delete excess years.
            if (startYear < int.Parse(targets[0].Year))
            {
                for (int i = 0; i < numberYears; i++)
                {
                    int         year   = startYear + i;
                    TargetStore target = targets.Find(delegate(TargetStore ts) { return(ts.Year == year.ToString()); });
                    if (target == null)
                    {
                        CreateScenario.InsertSimulationOCITargets(simulationID, year.ToString());
                    }
                }
                for (int index = 0; index < targets.Count; index++)
                {
                    if (int.Parse(targets[index].Year) > startYear + numberYears)
                    {
                        DeleteScenario.DeleteTarget(targets[index].ID);
                    }
                }
            }
            else if (startYear > int.Parse(targets[0].Year)) // If startYear later than current, delete earlier.  Add later.
            {
                for (int index = 0; index < targets.Count; index++)
                {
                    if (int.Parse(targets[index].Year) < startYear)
                    {
                        DeleteScenario.DeleteTarget(targets[index].ID);
                    }
                }

                for (int i = 0; i < numberYears; i++)
                {
                    int         year   = i + startYear;
                    TargetStore target = targets.Find(delegate(TargetStore ts) { return(ts.Year == year.ToString()); });
                    if (target == null)
                    {
                        CreateScenario.InsertSimulationOCITargets(simulationID, year.ToString());
                    }
                }
            }
        }