X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Ftemplates%2FTemplateDetailsViewModel.java;h=6090d12138cd94a85f0b4fe0e5320466da9474aa;hb=467a7741917c1e4c4ba0d167f1e018080786711f;hp=088b1b77c9100b6f5203a27e8a6bed2caa728208;hpb=d95839304defead7c7d605cab2e612f1227cbfed;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplateDetailsViewModel.java b/app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplateDetailsViewModel.java index 088b1b77..6090d121 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplateDetailsViewModel.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplateDetailsViewModel.java @@ -24,12 +24,12 @@ import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModel; -import net.ktnx.mobileledger.dao.PatternAccountDAO; -import net.ktnx.mobileledger.dao.PatternHeaderDAO; +import net.ktnx.mobileledger.dao.TemplateAccountDAO; +import net.ktnx.mobileledger.dao.TemplateHeaderDAO; import net.ktnx.mobileledger.db.DB; -import net.ktnx.mobileledger.db.PatternWithAccounts; import net.ktnx.mobileledger.db.TemplateAccount; import net.ktnx.mobileledger.db.TemplateHeader; +import net.ktnx.mobileledger.db.TemplateWithAccounts; import net.ktnx.mobileledger.model.TemplateDetailsItem; import net.ktnx.mobileledger.utils.Logger; @@ -44,6 +44,8 @@ public class TemplateDetailsViewModel extends ViewModel { new MutableLiveData<>(Collections.emptyList()); private Long mPatternId; private String mDefaultPatternName; + private boolean itemsLoaded = false; + public String getDefaultPatternName() { return mDefaultPatternName; } @@ -85,6 +87,9 @@ public class TemplateDetailsViewModel extends ViewModel { items.setValue(newList); } public LiveData> getItems(Long patternId) { + if (itemsLoaded && Objects.equals(patternId, this.mPatternId)) + return items; + if (patternId != null && patternId <= 0) throw new IllegalArgumentException("Pattern ID " + patternId + " is invalid"); @@ -92,15 +97,16 @@ public class TemplateDetailsViewModel extends ViewModel { if (mPatternId == null) { resetItems(); + itemsLoaded = true; return items; } DB db = DB.get(); - LiveData dbList = db.getPatternDAO() - .getPatternWithAccounts(mPatternId); - Observer observer = new Observer() { + LiveData dbList = db.getTemplateDAO() + .getTemplateWithAccounts(mPatternId); + Observer observer = new Observer() { @Override - public void onChanged(PatternWithAccounts src) { + public void onChanged(TemplateWithAccounts src) { ArrayList l = new ArrayList<>(); TemplateDetailsItem header = TemplateDetailsItem.fromRoomObject(src.header); @@ -113,6 +119,7 @@ public class TemplateDetailsViewModel extends ViewModel { Logger.debug("patterns-db", "Loaded pattern item " + i); } items.postValue(l); + itemsLoaded = true; dbList.removeObserver(this); } @@ -139,41 +146,43 @@ public class TemplateDetailsViewModel extends ViewModel { TemplateDetailsItem.Header modelHeader = list.get(0) .asHeaderItem(); - PatternHeaderDAO headerDAO = DB.get() - .getPatternDAO(); + TemplateHeaderDAO headerDAO = DB.get() + .getTemplateDAO(); TemplateHeader dbHeader = modelHeader.toDBO(); if (newPattern) { dbHeader.setId(null); - dbHeader.setId(mPatternId = headerDAO.insert(dbHeader)); + dbHeader.setId(mPatternId = headerDAO.insertSync(dbHeader)); } else - headerDAO.update(dbHeader); + headerDAO.updateSync(dbHeader); Logger.debug("pattern-db", String.format(Locale.US, "Stored pattern header %d, item=%s", dbHeader.getId(), modelHeader)); - PatternAccountDAO paDAO = DB.get() - .getPatternAccountDAO(); + TemplateAccountDAO taDAO = DB.get() + .getTemplateAccountDAO(); + taDAO.prepareForSave(mPatternId); for (int i = 1; i < list.size(); i++) { final TemplateDetailsItem.AccountRow accRowItem = list.get(i) .asAccountRowItem(); TemplateAccount dbAccount = accRowItem.toDBO(dbHeader.getId()); - dbAccount.setPatternId(mPatternId); + dbAccount.setTemplateId(mPatternId); dbAccount.setPosition(i); if (newPattern) { dbAccount.setId(null); - dbAccount.setId(paDAO.insert(dbAccount)); + dbAccount.setId(taDAO.insertSync(dbAccount)); } else - paDAO.update(dbAccount); + taDAO.updateSync(dbAccount); Logger.debug("pattern-db", String.format(Locale.US, "Stored pattern account %d, account=%s, comment=%s, neg=%s, item=%s", dbAccount.getId(), dbAccount.getAccountName(), dbAccount.getAccountComment(), dbAccount.getNegateAmount(), accRowItem)); } + taDAO.finishSave(mPatternId); }); } } \ No newline at end of file