예제 #1
0
 private void TryDelete(List <IFavorite> favorites)
 {
     using (Database database = DatabaseConnections.CreateInstance())
     {
         List <DbFavorite>       favoritesToDelete       = favorites.Cast <DbFavorite>().ToList();
         List <DbCredentialBase> redundantCredentialBase = SelectRedundantCredentialBase(favoritesToDelete);
         this.DeleteFavoritesFromDatabase(database, favoritesToDelete);
         database.SaveImmediatelyIfRequested();
         database.RemoveRedundantCredentialBase(redundantCredentialBase);
         database.SaveImmediatelyIfRequested();
         this.groups.RefreshCache();
         this.FinishRemove(favorites, favoritesToDelete);
     }
 }
예제 #2
0
        private void TryUpdateFavorite(IFavorite favorite, List <IGroup> newGroups)
        {
            using (Database database = DatabaseConnections.CreateInstance())
            {
                var toUpdate = favorite as DbFavorite;
                database.Cache.AttachFavorite(toUpdate);
                List <IGroup> addedGroups = database.AddToDatabase(newGroups);
                // commit newly created groups, otherwise we cant add into them
                database.SaveImmediatelyIfRequested();
                UpdateGroupsMembership(favorite, newGroups);
                database.SaveImmediatelyIfRequested();

                this.dispatcher.ReportGroupsAdded(addedGroups);
                this.TrySaveAndReportFavoriteUpdate(toUpdate, database);
            }
        }
예제 #3
0
 private void SaveAndReportFavoriteUpdated(Database database, DbFavorite favorite)
 {
     database.Cache.MarkFavoriteAsModified(favorite);
     database.SaveImmediatelyIfRequested();
     this.favoriteIcons.UpdateImageInDatabase(favorite, database);
     database.Cache.DetachFavorite(favorite);
     this.cache.Update(favorite);
     this.dispatcher.ReportFavoriteUpdated(favorite);
 }
예제 #4
0
 private static void AddToDatabase(DbCredentialSet credentialToAdd)
 {
     using (Database database = DatabaseConnections.CreateInstance())
     {
         database.CredentialBase.Add(credentialToAdd);
         database.SaveImmediatelyIfRequested();
         database.Cache.Detach(credentialToAdd);
     }
 }
예제 #5
0
 private static void DeleteFromDatabase(DbCredentialSet credentailToRemove)
 {
     using (Database database = DatabaseConnections.CreateInstance())
     {
         database.CredentialBase.Attach(credentailToRemove);
         database.CredentialBase.Remove(credentailToRemove);
         database.SaveImmediatelyIfRequested();
     }
 }
예제 #6
0
 private void SaveAndReportUpdated(Database database, DbGroup toUpdate)
 {
     database.Cache.MarkAsModified(toUpdate);
     database.SaveImmediatelyIfRequested();
     database.Cache.Detach(toUpdate);
     this.cache.Update(toUpdate);
     this.dispatcher.ReportGroupsUpdated(new List <IGroup> {
         toUpdate
     });
 }
예제 #7
0
 private void TryRebuild()
 {
     using (Database database = DatabaseConnections.CreateInstance())
     {
         List <DbGroup> emptyGroups = this.DeleteEmptyGroupsFromDatabase(database);
         database.SaveImmediatelyIfRequested();
         List <IGroup> toReport = this.DeleteFromCache(emptyGroups);
         this.dispatcher.ReportGroupsDeleted(toReport);
     }
 }
예제 #8
0
 private void TryUpdate(ICredentialSet toUpdate)
 {
     using (Database database = DatabaseConnections.CreateInstance())
     {
         var credentialToUpdate = toUpdate as DbCredentialSet;
         database.CredentialBase.Attach(credentialToUpdate);
         database.Cache.MarkAsModified(credentialToUpdate);
         database.SaveImmediatelyIfRequested();
         database.Cache.Detach(credentialToUpdate);
         this.cache.Update(credentialToUpdate);
     }
 }
예제 #9
0
 private void TryAdd(List <IFavorite> favorites)
 {
     using (Database database = DatabaseConnections.CreateInstance())
     {
         List <DbFavorite> toAdd = favorites.Cast <DbFavorite>().ToList();
         database.AddAll(toAdd);
         this.UpdateIconInDatabase(database, toAdd);
         database.SaveImmediatelyIfRequested();
         database.Cache.DetachAll(toAdd);
         this.cache.Add(toAdd);
         this.dispatcher.ReportFavoritesAdded(favorites);
     }
 }
예제 #10
0
 internal void SaveAndReportFavoritesUpdated(Database database, List <DbFavorite> dbFavorites,
                                             List <IFavorite> selectedFavorites)
 {
     try
     {
         database.SaveImmediatelyIfRequested();
         this.cache.Update(dbFavorites);
         this.dispatcher.ReportFavoritesUpdated(selectedFavorites);
     }
     catch (DbUpdateException)
     {
         this.favorites.RefreshCache();
     }
 }
예제 #11
0
 private void TryAdd(IGroup group)
 {
     using (Database database = DatabaseConnections.CreateInstance())
     {
         DbGroup toAdd = group as DbGroup;
         database.AddToGroups(toAdd);
         database.SaveImmediatelyIfRequested();
         database.Cache.DetachGoup(toAdd);
         this.cache.Add(toAdd);
         this.dispatcher.ReportGroupsAdded(new List <IGroup> {
             toAdd
         });
     }
 }
예제 #12
0
 private void TryDelete(IGroup group)
 {
     using (Database database = DatabaseConnections.CreateInstance())
     {
         var toDelete = group as DbGroup;
         List <IFavorite> changedFavorites = group.Favorites;
         this.SetChildsToRoot(database, toDelete);
         database.Groups.Attach(toDelete);
         database.Groups.Remove(toDelete);
         database.SaveImmediatelyIfRequested();
         this.FinishGroupRemove(group);
         this.dispatcher.ReportFavoritesUpdated(changedFavorites);
     }
 }
 internal void SaveAndReportFavoritesUpdated(Database database, List<DbFavorite> dbFavorites,
     List<IFavorite> selectedFavorites)
 {
     try
     {
         database.SaveImmediatelyIfRequested();
         this.cache.Update(dbFavorites);
         this.dispatcher.ReportFavoritesUpdated(selectedFavorites);
     }
     catch (DbUpdateException)
     {
         this.favorites.RefreshCache();
     }
 }
예제 #14
0
 private void SaveAndReportUpdated(Database database, DbGroup toUpdate)
 {
     database.Cache.MarkAsModified(toUpdate);
     database.SaveImmediatelyIfRequested();
     database.Cache.Detach(toUpdate);
     this.cache.Update(toUpdate);
     this.dispatcher.ReportGroupsUpdated(new List<IGroup>() { toUpdate });
 }