From c560cbc71df49ef27e1e746ba8bc197b734dee74 Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 18 Jan 2019 16:00:11 +0000 Subject: [PATCH] Added rule export/import --- .../java/eu/faircode/email/ActivitySetup.java | 19 ++++++++++++++-- .../main/java/eu/faircode/email/DaoRule.java | 5 +++++ .../java/eu/faircode/email/EntityRule.java | 22 +++++++++++++++++++ 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ActivitySetup.java b/app/src/main/java/eu/faircode/email/ActivitySetup.java index 51d240cbe7..1b24afd401 100644 --- a/app/src/main/java/eu/faircode/email/ActivitySetup.java +++ b/app/src/main/java/eu/faircode/email/ActivitySetup.java @@ -473,8 +473,14 @@ public class ActivitySetup extends ActivityBilling implements FragmentManager.On // Folders JSONArray jfolders = new JSONArray(); - for (EntityFolder folder : db.folder().getFolders(account.id)) - jfolders.put(folder.toJSON()); + for (EntityFolder folder : db.folder().getFolders(account.id)) { + JSONObject jfolder = folder.toJSON(); + JSONArray jrules = new JSONArray(); + for (EntityRule rule : db.rule().getRules(folder.id)) + jrules.put(rule.toJSON()); + jfolder.put("rules", jrules); + jfolders.put(jfolder); + } jaccount.put("folders", jfolders); jaccounts.put(jaccount); @@ -606,6 +612,15 @@ public class ActivitySetup extends ActivityBilling implements FragmentManager.On EntityFolder folder = EntityFolder.fromJSON(jfolder); folder.account = account.id; folder.id = db.folder().insertFolder(folder); + if (jfolder.has("rules")) { + JSONArray jrules = jfolder.getJSONArray("rules"); + for (int r = 0; r < jrules.length(); r++) { + JSONObject jrule = (JSONObject) jrules.get(r); + EntityRule rule = EntityRule.fromJSON(jrule); + rule.folder = folder.id; + db.rule().insertRule(rule); + } + } Log.i("Imported folder=" + folder.name); } } diff --git a/app/src/main/java/eu/faircode/email/DaoRule.java b/app/src/main/java/eu/faircode/email/DaoRule.java index 3e794fa2d0..8bbf5885ce 100644 --- a/app/src/main/java/eu/faircode/email/DaoRule.java +++ b/app/src/main/java/eu/faircode/email/DaoRule.java @@ -29,6 +29,11 @@ import androidx.room.Update; @Dao public interface DaoRule { + @Query("SELECT * FROM rule" + + " WHERE folder = :folder" + + " ORDER BY `order`") + List getRules(long folder); + @Query("SELECT * FROM rule" + " WHERE folder = :folder" + " AND enabled" + diff --git a/app/src/main/java/eu/faircode/email/EntityRule.java b/app/src/main/java/eu/faircode/email/EntityRule.java index adde2b3d52..b8654db2e6 100644 --- a/app/src/main/java/eu/faircode/email/EntityRule.java +++ b/app/src/main/java/eu/faircode/email/EntityRule.java @@ -198,4 +198,26 @@ public class EntityRule { } else return false; } + + public JSONObject toJSON() throws JSONException { + JSONObject json = new JSONObject(); + json.put("name", name); + json.put("order", order); + json.put("enabled", enabled); + json.put("stop", stop); + json.put("condition", condition); + json.put("action", action); + return json; + } + + public static EntityRule fromJSON(JSONObject json) throws JSONException { + EntityRule rule = new EntityRule(); + rule.name = json.getString("name"); + rule.order = json.getInt("order"); + rule.enabled = json.getBoolean("enabled"); + rule.stop = json.getBoolean("stop"); + rule.condition = json.getString("condition"); + rule.action = json.getString("action"); + return rule; + } }