X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;ds=sidebyside;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fdao%2FTemplateHeaderDAO.java;fp=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fdao%2FTemplateHeaderDAO.java;h=2d3d7ee48884eb3012218dcb70f1322d3fb8d793;hb=3aef8f6c15117aa4ea9abd687ad2c69e0f1f25bb;hp=4ffd08b44f556b2e0376a4ba9cfd944f02c99f70;hpb=59ec619c8f3a34e90804067691854864d45d45e6;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/dao/TemplateHeaderDAO.java b/app/src/main/java/net/ktnx/mobileledger/dao/TemplateHeaderDAO.java index 4ffd08b4..2d3d7ee4 100644 --- a/app/src/main/java/net/ktnx/mobileledger/dao/TemplateHeaderDAO.java +++ b/app/src/main/java/net/ktnx/mobileledger/dao/TemplateHeaderDAO.java @@ -89,7 +89,11 @@ public abstract class TemplateHeaderDAO { @Transaction @Query("SELECT * FROM templates WHERE id = :id") - public abstract LiveData getTemplateWithAccounts(Long id); + public abstract LiveData getTemplateWithAccounts(@NonNull Long id); + + @Transaction + @Query("SELECT * FROM templates WHERE id = :id") + public abstract TemplateWithAccounts getTemplateWithAccountsSync(@NonNull Long id); @Transaction public void insertSync(TemplateWithAccounts templateWithAccounts) { @@ -124,5 +128,22 @@ public abstract class TemplateHeaderDAO { } }); } + public void duplicateTemplateWitAccounts(@NonNull Long id, @Nullable + AsyncResultCallback callback) { + AsyncTask.execute(() -> { + TemplateWithAccounts src = getTemplateWithAccountsSync(id); + TemplateWithAccounts dup = src.createDuplicate(); + dup.header.setName(dup.header.getName()); + dup.header.setId(insertSync(dup.header)); + TemplateAccountDAO accDao = DB.get() + .getTemplateAccountDAO(); + for (TemplateAccount dupAcc : dup.accounts) { + dupAcc.setTemplateId(dup.header.getId()); + dupAcc.setId(accDao.insertSync(dupAcc)); + } + if (callback != null) + new Handler(Looper.getMainLooper()).post(() -> callback.onResult(dup)); + }); + } }