Exemple #1
0
            /// <summary>
            /// todoComment
            /// </summary>
            /// <param name="AKey"></param>
            /// <param name="AValue"></param>
            public static void SetUserDefault(String AKey, String AValue)
            {
                Int32       FoundInRow;
                DataRowView Tmp;

                FoundInRow = UUserDefaults.Find(AKey);

                if (FoundInRow != -1)
                {
                    // User default found
                    if (AValue != UUserDefaults[FoundInRow][SUserDefaultsTable.GetDefaultValueDBName()].ToString())
                    {
                        // Update only if the value is actually different
                        UUserDefaults[FoundInRow][SUserDefaultsTable.GetDefaultValueDBName()] = AValue;
                    }
                }
                else
                {
                    // User default not found, add it to the user defaults table
                    Tmp = UUserDefaults.AddNew();
                    Tmp[SUserDefaultsTable.GetUserIdDBName()]       = Ict.Petra.Shared.UserInfo.GUserInfo.UserID;
                    Tmp[SUserDefaultsTable.GetDefaultCodeDBName()]  = AKey;
                    Tmp[SUserDefaultsTable.GetDefaultValueDBName()] = AValue;
                    Tmp.EndEdit();
                }
            }
Exemple #2
0
        /// <summary>
        /// Refreshes a UserDefault in the local Cache that has been updated on the
        /// Server side or in the DB.
        ///
        /// @comment This is needed for the case where several PetraClient instances of
        /// the same Petra User are running and they are updating the same UserDefault.
        /// On detecting such a 'collision', the PetraServer queues a ClientTask to
        /// refresh the specific UserDefault in the local Cache, and the
        /// TClientTaskInstance.Execute background thread then invokes this function.
        ///
        /// </summary>
        /// <param name="AChangedUserDefaultCode">UserDefault Code to update</param>
        /// <param name="AChangedUserDefaultValue">Changed UserDefault Value</param>
        /// <param name="AChangedUserDefaultModId">ModificationID of the changed UserDefault
        /// DataRow
        /// </param>
        /// <returns>void</returns>
        public static void RefreshCachedUserDefault(String AChangedUserDefaultCode, String AChangedUserDefaultValue, String AChangedUserDefaultModId)
        {
            // TLogging.Log('Refreshing DefaultCode ''' + AChangedUserDefaultCode + ''' with Value: ''' + AChangedUserDefaultValue + '''');
            // Split String into String Array
            String[] ChangedUserDefaultCodes  = AChangedUserDefaultCode.Split(new Char[] { RemotingConstants.GCLIENTTASKPARAMETER_SEPARATOR[0] });
            String[] ChangedUserDefaultValues = AChangedUserDefaultValue.Split(new Char[] { RemotingConstants.GCLIENTTASKPARAMETER_SEPARATOR[0] });
            String[] ChangedUserDefaultModIds = AChangedUserDefaultModId.Split(new Char[] { RemotingConstants.GCLIENTTASKPARAMETER_SEPARATOR[0] });

            for (Int16 Counter = 0; Counter <= ChangedUserDefaultCodes.Length - 1; Counter += 1)
            {
                // TLogging.Log('Refreshing UserDefault ''' + ChangedUserDefaultCodes[Counter] + ''' with value ''' + ChangedUserDefaultValues[Counter] + ''' (ModificationID: ''' + ChangedUserDefaultModIds[Counter] + '''');
                Int32 FoundInRow = UUserDefaults.Find(ChangedUserDefaultCodes[Counter]);

                if (FoundInRow != -1)
                {
                    // User default found
                    // TLogging.Log('Existing UserDefault ''' +
                    // UUserDefaults.Item[FoundInRow].Item[SUserDefaultsTable.GetDefaultCodeDBName].ToString + ''' with value ''' +
                    // UUserDefaults.Item[FoundInRow].Item[SUserDefaultsTable.GetDefaultValueDBName].ToString + ''' (ModificationID: ''' +
                    // UUserDefaults.Item[FoundInRow].Item[SUserDefaultsTable.GetModificationIDDBName].ToString + '''');
                    if (ChangedUserDefaultValues[Counter] != UUserDefaults[FoundInRow][SUserDefaultsTable.GetDefaultValueDBName()].ToString())
                    {
                        // Update only if the value is actually different
                        UUserDefaults[FoundInRow][SUserDefaultsTable.GetDefaultValueDBName()] = ChangedUserDefaultValues[Counter];
                    }

                    UUserDefaults[FoundInRow][SUserDefaultsTable.GetModificationIdDBName()] = Convert.ToDateTime(ChangedUserDefaultModIds[Counter]);

                    // Mark this refreshed UserDefault as unchanged
                    UUserDefaults[FoundInRow].Row.AcceptChanges();
                }
                else
                {
                    // User default not found, add it to the user defaults table
                    // TLogging.Log('UserDefault doesn''t exist yet > creating new one');
                    DataRowView Tmp = UUserDefaults.AddNew();
                    Tmp[SUserDefaultsTable.GetUserIdDBName()]         = Ict.Petra.Shared.UserInfo.GUserInfo.UserID;
                    Tmp[SUserDefaultsTable.GetDefaultCodeDBName()]    = ChangedUserDefaultCodes[Counter];
                    Tmp[SUserDefaultsTable.GetDefaultValueDBName()]   = ChangedUserDefaultValues[Counter];
                    Tmp[SUserDefaultsTable.GetModificationIdDBName()] = ChangedUserDefaultModIds[Counter];
                    Tmp.EndEdit();

                    // Mark this refreshed UserDefault as unchanged
                    Tmp.Row.AcceptChanges();

                    // TLogging.Log('UserDefault: new Row added, RowState: ' + Enum(Tmp.Row.RowState).ToString("G"));
                }
            }
        }
Exemple #3
0
        /// <summary>
        /// Refreshes a UserDefault in the local Cache that has been updated on the
        /// Server side or in the DB.
        ///
        /// @comment This is needed for the case where several PetraClient instances of
        /// the same Petra User are running and they are updating the same UserDefault.
        /// On detecting such a 'collision', the PetraServer queues a ClientTask to
        /// refresh the specific UserDefault in the local Cache, and the
        /// TClientTaskInstance.Execute background thread then invokes this function.
        ///
        /// </summary>
        /// <param name="AChangedUserDefaultCode">UserDefault Code to update</param>
        /// <param name="AChangedUserDefaultValue">Changed UserDefault Value</param>
        /// <param name="AChangedUserDefaultModId">ModificationID of the changed UserDefault
        /// DataRow
        /// </param>
        /// <param name="AClientID">The Client ID that requested the refreshing (-1 if none was specified).</param>
        /// <returns>void</returns>
        public static void RefreshCachedUserDefault(String AChangedUserDefaultCode, String AChangedUserDefaultValue,
                                                    String AChangedUserDefaultModId, int AClientID)
        {
            // Split String into String Array
            String[] ChangedUserDefaultCodes  = AChangedUserDefaultCode.Split(new Char[] { RemotingConstants.GCLIENTTASKPARAMETER_SEPARATOR[0] });
            String[] ChangedUserDefaultValues = AChangedUserDefaultValue.Split(new Char[] { RemotingConstants.GCLIENTTASKPARAMETER_SEPARATOR[0] });
            String[] ChangedUserDefaultModIds = AChangedUserDefaultModId.Split(new Char[] { RemotingConstants.GCLIENTTASKPARAMETER_SEPARATOR[0] });

//            TLogging.Log("Refreshing User Default with DefaultCode '" + AChangedUserDefaultCode + "' with Value: '" +
//                AChangedUserDefaultValue + "'");

            if ((AClientID == -1) ||
                (AClientID == UserInfo.GUserInfo.ProcessID))
            {
                for (Int16 Counter = 0; Counter <= ChangedUserDefaultCodes.Length - 1; Counter += 1)
                {
//                    TLogging.Log("Refreshing single UserDefault '" + ChangedUserDefaultCodes[Counter].ToString() + "' with value '" +
//                         ChangedUserDefaultValues[Counter] + "' (ModificationID: '" +
//                         ChangedUserDefaultModIds[Counter].ToString() + "'  (was sent from the same user session of this user on server)");
                    Int32 FoundInRow = UUserDefaults.Find(ChangedUserDefaultCodes[Counter]);

                    if (FoundInRow != -1)
                    {
                        // User default found
                        // TLogging.Log('Existing UserDefault ''' +
                        // UUserDefaults.Item[FoundInRow].Item[SUserDefaultsTable.GetDefaultCodeDBName].ToString + ''' with value ''' +
                        // UUserDefaults.Item[FoundInRow].Item[SUserDefaultsTable.GetDefaultValueDBName].ToString + ''' (ModificationID: ''' +
                        // UUserDefaults.Item[FoundInRow].Item[SUserDefaultsTable.GetModificationIDDBName].ToString + '''');
                        if (ChangedUserDefaultValues[Counter] != UUserDefaults[FoundInRow][SUserDefaultsTable.GetDefaultValueDBName()].ToString())
                        {
                            // Update only if the value is actually different
                            UUserDefaults[FoundInRow][SUserDefaultsTable.GetDefaultValueDBName()] = ChangedUserDefaultValues[Counter];
                        }

                        UUserDefaults[FoundInRow][SUserDefaultsTable.GetModificationIdDBName()] = Convert.ToDateTime(
                            ChangedUserDefaultModIds[Counter]);

                        // Mark this refreshed UserDefault as unchanged
                        UUserDefaults[FoundInRow].Row.AcceptChanges();
                    }
                    else
                    {
                        // User default not found, add it to the user defaults table
                        // TLogging.Log('UserDefault doesn''t exist yet > creating new one');
                        DataRowView Tmp = UUserDefaults.AddNew();
                        Tmp[SUserDefaultsTable.GetUserIdDBName()]         = Ict.Petra.Shared.UserInfo.GUserInfo.UserID;
                        Tmp[SUserDefaultsTable.GetDefaultCodeDBName()]    = ChangedUserDefaultCodes[Counter];
                        Tmp[SUserDefaultsTable.GetDefaultValueDBName()]   = ChangedUserDefaultValues[Counter];
                        Tmp[SUserDefaultsTable.GetModificationIdDBName()] = ChangedUserDefaultModIds[Counter];
                        Tmp.EndEdit();

                        // Mark this refreshed UserDefault as unchanged
                        Tmp.Row.AcceptChanges();

                        // TLogging.Log('UserDefault: new Row added, RowState: ' + Enum(Tmp.Row.RowState).ToString("G"));
                    }
                }
            }
            else
            {
//                TLogging.Log("Refreshing ALL UserDefaults because the request for the refreshing of SINGLE user default was sent " +
//                    "from a DIFFERENT user session of THIS user on the server [hence we need to first update the server-side-held " +
//                    "UserDefaults for THIS session of the same user, and then the client-side-held UserDefaults, too])");
                ReloadCachedUserDefaultsOnServerAndClient();
            }
        }