From 9dbca87429d9879e7989c9dfd722eb47ae6bc9e4 Mon Sep 17 00:00:00 2001 From: Milan Hanajik Date: Thu, 30 Aug 2018 12:57:12 +0200 Subject: [PATCH] Copying users from a remote database fixed (UI) and done as a database transaction, ver. 2.18.982 --- Config/Properties/AssemblyInfo.cs | 4 +-- TBF/Properties/AssemblyInfo.cs | 4 +-- Users/DB.cs | 31 ----------------- Users/Forms/UserManagementDlg.cs | 56 ++++++++++++++++++------------- Users/Properties/AssemblyInfo.cs | 4 +-- 5 files changed, 38 insertions(+), 61 deletions(-) diff --git a/Config/Properties/AssemblyInfo.cs b/Config/Properties/AssemblyInfo.cs index 9a8e0d1f2..288d2bd35 100644 --- a/Config/Properties/AssemblyInfo.cs +++ b/Config/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.18.928.0")] -[assembly: AssemblyFileVersion("2.18.928.0")] +[assembly: AssemblyVersion("2.18.982.0")] +[assembly: AssemblyFileVersion("2.18.982.0")] diff --git a/TBF/Properties/AssemblyInfo.cs b/TBF/Properties/AssemblyInfo.cs index bdf859f1f..85408eb58 100644 --- a/TBF/Properties/AssemblyInfo.cs +++ b/TBF/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; // Build Number // Revision // -[assembly: AssemblyVersion("2.18.981.0")] -[assembly: AssemblyFileVersion("2.18.981.0")] +[assembly: AssemblyVersion("2.18.982.0")] +[assembly: AssemblyFileVersion("2.18.982.0")] diff --git a/Users/DB.cs b/Users/DB.cs index 04069fb02..c855ce384 100644 --- a/Users/DB.cs +++ b/Users/DB.cs @@ -105,37 +105,6 @@ namespace Users } - public static void SaveObject(object obj) - { - SaveObject(CreateSession(), obj); - } - /// - public static void SaveObject(ISession session, object obj) - { - using (var transaction = session.BeginTransaction()) - { - session.SaveOrUpdate(obj); - try { transaction.Commit(); } - catch { } - } - } - - - public static void DeleteObject(object obj) - { - DeleteObject(CreateSession(), obj); - } - /// - public static void DeleteObject(ISession session, object obj) - { - using (var transaction = session.BeginTransaction()) - { - session.Delete(obj); - transaction.Commit(); - } - } - - /// /// Create an empty users database. /// Database contains only the user 'admin' and the control board component 'CB'. diff --git a/Users/Forms/UserManagementDlg.cs b/Users/Forms/UserManagementDlg.cs index 10db4b107..3909befd0 100644 --- a/Users/Forms/UserManagementDlg.cs +++ b/Users/Forms/UserManagementDlg.cs @@ -70,6 +70,7 @@ namespace Users.Forms { string msg = exc.Message; } + ListUsers(); } @@ -217,7 +218,8 @@ namespace Users.Forms if (listViewUsers.SelectedItems.Count == 1 && listViewUsers.SelectedItems[0].Tag is User) { User Selecteduser = listViewUsers.SelectedItems[0].Tag as User; - Users.DB.DeleteObject(session, Selecteduser); + session.Delete(Selecteduser); + session.Flush(); listOfUsers.Remove(Selecteduser); ListUsers(); } @@ -228,52 +230,51 @@ namespace Users.Forms if (GlobalData.RemoteUsersDB == null || string.IsNullOrEmpty(GlobalData.RemoteUsersDB.ConnectionString) || GlobalData.LocalUsersDB == null || string.IsNullOrEmpty(GlobalData.LocalUsersDB.ConnectionString)) { - MessageBox.Show(Strings.No_remote_database_of_users, - Strings.Error, - MessageBoxButtons.OK, - MessageBoxIcon.Exclamation); + MessageBox.Show(Strings.No_remote_database_of_users, Strings.Error, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } - if (MessageBox.Show(Strings.Are_you_sure, - Strings.Warning, - MessageBoxButtons.YesNo, - MessageBoxIcon.Exclamation) != DialogResult.Yes) + if (MessageBox.Show(Strings.Are_you_sure, Strings.Warning, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) != DialogResult.Yes) { return; } + IList remoteUsers; + IList remoteGroups; + ITransaction transaction = null; + try { /// - /// Remote DB session, read remote users + /// Create remote DB session and read remote users /// DB.DbType = GlobalData.RemoteUsersDB.DbType; DB.ConnectionString = GlobalData.RemoteUsersDB.ConnectionString; - ISession session = DB.CreateSession(); - IList remoteUsers = session.QueryOver().List(); - IList remoteGroups = session.QueryOver().List(); + ISession remoteSession = DB.CreateSession(); + remoteUsers = remoteSession.QueryOver().List(); + remoteGroups = remoteSession.QueryOver().List(); /// - /// Local DB session + /// Prepare local DB session /// DB.DbType = GlobalData.LocalUsersDB.DbType; DB.ConnectionString = GlobalData.LocalUsersDB.ConnectionString; - session = DB.CreateSession(); + ISession localSession = DB.CreateSession(); + transaction = localSession.BeginTransaction(); /// /// Delete all local users /// - IList users = session.QueryOver().List(); - foreach (var user in users) session.Delete(user); - IList groups = session.QueryOver().List(); - foreach (var group in groups) session.Delete(group); + IList users = localSession.QueryOver().List(); + foreach (var user in users) localSession.Delete(user); + IList groups = localSession.QueryOver().List(); + foreach (var group in groups) localSession.Delete(group); /// /// Save all remote users to the local DB /// - IList newUsers = session.QueryOver().List(); - IList newGroups = session.QueryOver().List(); + IList newUsers = new List(); + IList newGroups = new List(); foreach (var user in remoteUsers) { User newUser = (User)user.Clone(); @@ -283,9 +284,14 @@ namespace Users.Forms Group newGroup = new Group(group.Gid, group.Name); newUser.AddGroup(newGroup); } - DB.SaveObject(session, newUser); + + localSession.SaveOrUpdate(newUser); } - session.Flush(); + transaction.Commit(); + localSession.Flush(); + + listOfUsers = newUsers; + ListUsers(); MessageBox.Show(string.Format(Strings.N_users_copied, remoteUsers.Count), Strings.Confirmation, @@ -294,11 +300,13 @@ namespace Users.Forms } catch (Exception) { + if (transaction != null) transaction.Rollback(); + MessageBox.Show(Strings.Copying_remote_users_failed, Strings.Confirmation, MessageBoxButtons.OK, MessageBoxIcon.Information); } - } + } } } diff --git a/Users/Properties/AssemblyInfo.cs b/Users/Properties/AssemblyInfo.cs index b4f193416..518c3f8ba 100644 --- a/Users/Properties/AssemblyInfo.cs +++ b/Users/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.18.981.0")] -[assembly: AssemblyFileVersion("2.18.981.0")] +[assembly: AssemblyVersion("2.18.982.0")] +[assembly: AssemblyFileVersion("2.18.982.0")]