Пример #1
0
 public static void UpdateSave(PictureSaveData pictureSaveData)
 {
     try
     {
         SaveDb obj = DbTypeConvertor.FromPictureSaveData(pictureSaveData);
         DatabaseManager.db.UpdateTable(obj);
     }
     catch (Exception ex)
     {
         FMLogger.Log("upd saveData fail. " + ex.Message);
     }
 }
Пример #2
0
    public static PictureSaveData GetSave(PictureData pd)
    {
        PictureSaveData result;

        try
        {
            SaveDb          s = DatabaseManager.db.Get <SaveDb>(pd.Id);
            PictureSaveData pictureSaveData = DbTypeConvertor.ToPictureSaveData(s);
            result = pictureSaveData;
        }
        catch
        {
            result = null;
        }
        return(result);
    }
Пример #3
0
        public static bool TrySaveDatabase(IKp2aApp app)
        {
            bool   saveSuccesful = false;
            SaveDb save          = new SaveDb(Application.Context, app, new ActionOnFinish((success, message) =>
            {
                saveSuccesful = success;
                if (!success)
                {
                    Kp2aLog.Log("Error during TestBase.SaveDatabase: " + message);
                }
            }), false);

            save.Run();
            save.JoinWorkerThread();
            return(saveSuccesful);
        }
Пример #4
0
    public static SaveDb FromPictureSaveData(PictureSaveData save)
    {
        SaveDb saveDb = new SaveDb();

        saveDb.PicId     = save.Id;
        saveDb.PackId    = save.PackId;
        saveDb.IconPath  = save.iconMaskPath;
        saveDb.Progress  = save.progres;
        saveDb.TimeSpent = save.timeSpent;
        saveDb.TimeStamp = DateTime.UtcNow.Ticks;
        saveDb.HintsUsed = save.hintsUsed;
        StepsDb obj = new StepsDb
        {
            steps = save.steps
        };

        saveDb.StepsJsonStr = JsonUtility.ToJson(obj);
        return(saveDb);
    }
Пример #5
0
        public override void Run()
        {
            _app.GetDb().Dirty.Add(_elementToMove.ParentGroup);

            PwGroup pgParent = _elementToMove.ParentGroup;
            if (pgParent != _targetGroup)
            {
                if (pgParent != null) // Remove from parent
                {
                    PwEntry entry = _elementToMove as PwEntry;
                    if (entry != null)
                    {
                        pgParent.Entries.Remove(entry);
                        _targetGroup.AddEntry(entry, true, true);
                    }
                    else
                    {
                        PwGroup group = (PwGroup)_elementToMove;
                        if ((_targetGroup == group) || (_targetGroup.IsContainedIn(group)))
                        {
                            Finish(false, _app.GetResourceString(UiStringKey.CannotMoveGroupHere));
                            return;
                        }
                        pgParent.Groups.Remove(group);
                        _targetGroup.AddGroup(group, true, true);
                    }
                }
            }

            _onFinishToRun = new ActionOnFinish((success, message) =>
            {
                if (!success)
                {	// Let's not bother recovering from a failure.
                    _app.LockDatabase(false);
                }
            }, OnFinishToRun);

            // Save
            SaveDb save = new SaveDb(_ctx, _app, OnFinishToRun, false);
            save.SetStatusLogger(StatusLogger);
            save.Run();
        }
Пример #6
0
    public static PictureSaveData ToPictureSaveData(SaveDb s)
    {
        PictureSaveData pictureSaveData = new PictureSaveData();

        pictureSaveData.Id           = s.PicId;
        pictureSaveData.PackId       = s.PackId;
        pictureSaveData.iconMaskPath = s.IconPath;
        pictureSaveData.progres      = s.Progress;
        pictureSaveData.timeSpent    = s.TimeSpent;
        pictureSaveData.hintsUsed    = s.HintsUsed;
        StepsDb stepsDb = JsonUtility.FromJson <StepsDb>(s.StepsJsonStr);

        if (stepsDb != null && stepsDb.steps != null)
        {
            pictureSaveData.steps = stepsDb.steps;
        }
        else
        {
            pictureSaveData.steps = null;
        }
        return(pictureSaveData);
    }
Пример #7
0
 private static void InitialDbFill(PicturePack pack, List <PictureSaveData> saves)
 {
     for (int i = 0; i < pack.Pictures.Count; i++)
     {
         DatabaseManager.AddPicture(pack.Pictures[i]);
     }
     if (saves != null)
     {
         for (int j = 0; j < saves.Count; j++)
         {
             try
             {
                 SaveDb saveDb = DbTypeConvertor.FromPictureSaveData(saves[j]);
                 saveDb.TimeStamp -= (long)(j * 10000000);
                 DatabaseManager.db.Insert(saveDb);
             }
             catch (Exception ex)
             {
                 FMLogger.Log("error while inital save db fill. e:" + ex.Message);
             }
         }
     }
 }
Пример #8
0
        protected override void OnDialogClosed(bool positiveResult)
        {
            base.OnDialogClosed(positiveResult);

            if (positiveResult)
            {
                ulong paramValue;

                String strRounds = edittext.Text;
                if (!(ulong.TryParse(strRounds, out paramValue)))
                {
                    Toast.MakeText(Context, Resource.String.error_param_not_number, ToastLength.Long).Show();
                    return;
                }

                if (paramValue < 1)
                {
                    paramValue = 1;
                }

                Database db = App.Kp2a.GetDb();

                ulong oldValue = ParamValue;

                if (oldValue == paramValue)
                {
                    return;
                }

                ParamValue = paramValue;

                Handler      handler = new Handler();
                SaveDb       save    = new SaveDb(Context, App.Kp2a, new KdfNumberParamPreference.AfterSave(Context, handler, oldValue, this));
                ProgressTask pt      = new ProgressTask(App.Kp2a, Context, save);
                pt.Run();
            }
        }
Пример #9
0
 public static void AddSave(PictureSaveData pictureSaveData)
 {
     try
     {
         SaveDb obj = DbTypeConvertor.FromPictureSaveData(pictureSaveData);
         DatabaseManager.db.Insert(obj);
         string    query = "SELECT * FROM PictureDb WHERE PicId=?";
         bool      flag;
         PictureDb pictureDb = DatabaseManager.db.QueryFirstRecord <PictureDb>(out flag, query, new object[]
         {
             pictureSaveData.Id
         });
         if (flag && pictureDb.HasSave == 0)
         {
             pictureDb.HasSave = 1;
             DatabaseManager.db.UpdateTable(pictureDb);
         }
     }
     catch (Exception ex)
     {
         FMLogger.Log("failed to add save. " + ex.Message);
         AnalyticsManager.DbTransactionError("saveDb", "AddSave: " + ex.Message);
     }
 }
Пример #10
0
        public override void Run()
        {
            //check if we will run into problems. Then finish with error before we start doing anything.
            foreach (var _elementToMove in _elementsToMove)
            {
                PwGroup pgParent = _elementToMove.ParentGroup;
                if (pgParent != _targetGroup)
                {
                    if (pgParent != null)
                    {
                        PwGroup group = _elementToMove as PwGroup;
                        if (group != null)
                        {
                            if ((_targetGroup == group) || (_targetGroup.IsContainedIn(group)))
                            {
                                Finish(false, _app.GetResourceString(UiStringKey.CannotMoveGroupHere));
                                return;
                            }
                        }
                    }
                }
            }

            foreach (var elementToMove in _elementsToMove)
            {
                _app.GetDb().Dirty.Add(elementToMove.ParentGroup);

                PwGroup pgParent = elementToMove.ParentGroup;
                if (pgParent != _targetGroup)
                {
                    if (pgParent != null) // Remove from parent
                    {
                        PwEntry entry = elementToMove as PwEntry;
                        if (entry != null)
                        {
                            pgParent.Entries.Remove(entry);
                            _targetGroup.AddEntry(entry, true, true);
                        }
                        else
                        {
                            PwGroup group = (PwGroup)elementToMove;
                            if ((_targetGroup == group) || (_targetGroup.IsContainedIn(group)))
                            {
                                Finish(false, _app.GetResourceString(UiStringKey.CannotMoveGroupHere));
                                return;
                            }
                            pgParent.Groups.Remove(group);
                            _targetGroup.AddGroup(group, true, true);
                        }
                    }
                }
            }


            _onFinishToRun = new ActionOnFinish(ActiveActivity, (success, message, activity) =>
            {
                if (!success)
                {                       // Let's not bother recovering from a failure.
                    _app.LockDatabase(false);
                }
            }, OnFinishToRun);

            // Save
            SaveDb save = new SaveDb(_ctx, _app, OnFinishToRun, false);

            save.SetStatusLogger(StatusLogger);
            save.Run();
        }
Пример #11
0
        protected override void OnDialogClosed(bool positiveResult)
        {
            base.OnDialogClosed(positiveResult);

            if ( positiveResult ) {
                ulong rounds;

                String strRounds = RoundsView.Text;
                if (!(ulong.TryParse(strRounds,out rounds)))
                {
                    Toast.MakeText(Context, Resource.String.error_rounds_not_number, ToastLength.Long).Show();
                    return;
                }

                if ( rounds < 1 ) {
                    rounds = 1;
                }

                Database db = App.Kp2a.GetDb();

                ulong oldRounds = db.KpDatabase.KeyEncryptionRounds;

                if (oldRounds == rounds)
                {
                    return;
                }

                db.KpDatabase.KeyEncryptionRounds = rounds;

                Handler handler = new Handler();
                SaveDb save = new SaveDb(Context, App.Kp2a, new AfterSave(Context, handler, oldRounds, this));
                ProgressTask pt = new ProgressTask(App.Kp2a, Context, save);
                pt.Run();

            }
        }
Пример #12
0
        public override void Run()
        {
            //check if we will run into problems. Then finish with error before we start doing anything.
            foreach (var _elementToMove in _elementsToMove)
            {
                PwGroup pgParent = _elementToMove.ParentGroup;
                if (pgParent != _targetGroup)
                {
                    if (pgParent != null)
                    {
                        PwGroup group = _elementToMove as PwGroup;
                        if (group != null)
                        {
                            if ((_targetGroup == group) || (_targetGroup.IsContainedIn(group)))
                            {
                                Finish(false, _app.GetResourceString(UiStringKey.CannotMoveGroupHere));
                                return;
                            }
                        }
                    }
                }
            }

            HashSet <Database> removeDatabases = new HashSet <Database>();
            Database           addDatabase     = _app.FindDatabaseForElement(_targetGroup);

            if (addDatabase == null)
            {
                Finish(false, "Did not find target database. Did you lock it?");
                return;
            }

            foreach (var elementToMove in _elementsToMove)
            {
                _app.DirtyGroups.Add(elementToMove.ParentGroup);


                PwGroup pgParent = elementToMove.ParentGroup;
                if (pgParent != _targetGroup)
                {
                    if (pgParent != null) // Remove from parent
                    {
                        PwEntry entry = elementToMove as PwEntry;
                        if (entry != null)
                        {
                            var dbRem = _app.FindDatabaseForElement(entry);
                            removeDatabases.Add(dbRem);
                            dbRem.EntriesById.Remove(entry.Uuid);
                            dbRem.Elements.Remove(entry);
                            pgParent.Entries.Remove(entry);
                            _targetGroup.AddEntry(entry, true, true);
                            addDatabase.EntriesById.Add(entry.Uuid, entry);
                            addDatabase.Elements.Add(entry);
                        }
                        else
                        {
                            PwGroup group = (PwGroup)elementToMove;
                            if ((_targetGroup == group) || (_targetGroup.IsContainedIn(group)))
                            {
                                Finish(false, _app.GetResourceString(UiStringKey.CannotMoveGroupHere));
                                return;
                            }

                            var dbRem = _app.FindDatabaseForElement(@group);
                            if (dbRem == null)
                            {
                                Finish(false, "Did not find source database. Did you lock it?");
                                return;
                            }

                            dbRem.GroupsById.Remove(group.Uuid);
                            dbRem.Elements.Remove(group);
                            removeDatabases.Add(dbRem);
                            pgParent.Groups.Remove(group);
                            _targetGroup.AddGroup(group, true, true);
                            addDatabase.GroupsById.Add(group.Uuid, group);
                            addDatabase.Elements.Add(group);
                        }
                    }
                }
            }



            //first save the database where we added the elements
            var allDatabasesToSave = new List <Database> {
                addDatabase
            };

            //then all databases where we removed elements:
            removeDatabases.RemoveWhere(db => db == addDatabase);
            allDatabasesToSave.AddRange(removeDatabases);

            int  indexToSave     = 0;
            bool allSavesSuccess = true;

            void ContinueSave(bool success, string message, Activity activeActivity)
            {
                allSavesSuccess &= success;
                indexToSave++;
                if (indexToSave == allDatabasesToSave.Count)
                {
                    OnFinishToRun.SetResult(allSavesSuccess);
                    OnFinishToRun.Run();
                    return;
                }
                SaveDb saveDb = new SaveDb(_ctx, _app, allDatabasesToSave[indexToSave], new ActionOnFinish(activeActivity, ContinueSave), false);

                saveDb.SetStatusLogger(StatusLogger);
                saveDb.ShowDatabaseIocInStatus = allDatabasesToSave.Count > 1;
                saveDb.Run();
            }

            SaveDb save = new SaveDb(_ctx, _app, allDatabasesToSave[0], new ActionOnFinish(ActiveActivity, ContinueSave), false);

            save.SetStatusLogger(StatusLogger);
            save.ShowDatabaseIocInStatus = allDatabasesToSave.Count > 1;
            save.Run();
        }