Added rule export/import

This commit is contained in:
M66B 2019-01-18 16:00:11 +00:00
parent 91ccd85c5b
commit c560cbc71d
3 changed files with 44 additions and 2 deletions

View File

@ -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);
}
}

View File

@ -29,6 +29,11 @@ import androidx.room.Update;
@Dao
public interface DaoRule {
@Query("SELECT * FROM rule" +
" WHERE folder = :folder" +
" ORDER BY `order`")
List<EntityRule> getRules(long folder);
@Query("SELECT * FROM rule" +
" WHERE folder = :folder" +
" AND enabled" +

View File

@ -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;
}
}