package com.fastaccess.data.dao; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import com.fastaccess.data.dao.events.FloatingEventModel; import com.fastaccess.data.dao.events.FolderEventModel; import com.fastaccess.data.dao.events.FragmentFolderEventModel; import com.fastaccess.data.dao.events.SelectedAppsEventModel; import com.fastaccess.data.dao.events.ThemePackEventModel; import com.fastaccess.helper.PrefHelper; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.auth.FirebaseUser; import org.greenrobot.eventbus.EventBus; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Locale; import java.util.Map; /** * Created by Kosh on 23 Oct 2016, 8:51 PM */ public class BackupRestoreModel { private String uid; private List<FolderModel> folders; private List<AppsModel> appsModels; private Map<String, Object> settings; private String backupDate; public String getUid() { return uid; } public void setUid(String uid) { this.uid = uid; } public List<FolderModel> getFolders() { return folders; } public void setFolders(List<FolderModel> folders) { this.folders = folders; } public List<AppsModel> getAppsModels() { return appsModels; } public void setAppsModels(List<AppsModel> appsModels) { this.appsModels = appsModels; } public Map<String, Object> getSettings() { return settings; } public void setSettings(Map<String, Object> settings) { this.settings = settings; } public String getBackupDate() { return backupDate; } public void setBackupDate(String backupDate) { this.backupDate = backupDate; } @Nullable public static BackupRestoreModel backup() { BackupRestoreModel model = new BackupRestoreModel(); FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser(); if (firebaseUser == null) return null; model.setUid(firebaseUser.getUid()); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy hh:mma", Locale.getDefault()); model.setBackupDate(simpleDateFormat.format(new Date().getTime())); model.setFolders(FolderModel.getFolders()); model.setSettings(PrefHelper.getAll()); model.setAppsModels(AppsModel.getApps()); return model; } public static void restore(@NonNull BackupRestoreModel model) { if (model.getFolders() != null) { FolderModel.saveInTx(model.getFolders()); EventBus.getDefault().post(new FolderEventModel()); // update Floating Folders if any. EventBus.getDefault().post(new FragmentFolderEventModel()); // update MyFolders fragment separately } if (model.getAppsModels() != null) { AppsModel.saveInTx(model.getAppsModels()); EventBus.getDefault().post(new FloatingEventModel());// update selected apps if any EventBus.getDefault().post(new SelectedAppsEventModel()); } if (model.getSettings() != null) { for (String key : model.getSettings().keySet()) { if (key != null && !key.equalsIgnoreCase("null")) { PrefHelper.set(key, model.getSettings().get(key)); } } EventBus.getDefault().post(new ThemePackEventModel());//update icon theme } } @Override public String toString() { return "BackupRestoreModel{" + "uid='" + uid + '\'' + ", settings='" + settings + '\'' + '}'; } }