/// <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(); } }
/// <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; }
/// <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(); } }
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); }
/// <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(); }
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()); } } } }