diff --git a/app/src/main/java/net/pokeranalytics/android/model/LiveData.kt b/app/src/main/java/net/pokeranalytics/android/model/LiveData.kt index f4cc0770..802726e4 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/LiveData.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/LiveData.kt @@ -6,6 +6,7 @@ import io.realm.RealmResults import io.realm.Sort import net.pokeranalytics.android.R import net.pokeranalytics.android.model.realm.* +import net.pokeranalytics.android.ui.adapter.components.LiveDataDataSource import net.pokeranalytics.android.ui.view.Localizable /** @@ -65,10 +66,14 @@ enum class LiveData : Localizable { return proxyItem } + fun deleteData(realm:Realm, data:LiveDataDataSource) { + realm.where(this.relatedEntity).equalTo("id", data.primaryKey).findAll().deleteAllFromRealm() + } + fun updateOrCreate(realm:Realm, primaryKey:String?): RealmObject { val proxyItem: RealmObject? = this.getData(realm, primaryKey) proxyItem?.let { - return realm.copyFromRealm(it) + return proxyItem } ?: run { return this.newEntity() /* realm.beginTransaction() diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt index d33a9174..240ce6de 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt @@ -81,4 +81,8 @@ open class Bankroll(name: String = "") : RealmObject(), RowRepresentableDataSour SimpleRow.NAME -> this.name = value as String? ?: "" } } + + override fun isValidForSave(): Boolean { + return this.name.isNotEmpty() + } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt index ed6a31a1..2171bfb4 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt @@ -59,9 +59,6 @@ open class Game : RealmObject(), RowRepresentableDataSource, LiveDataDataSource, } override fun isValidForSave(): Boolean { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + return this.name.isNotEmpty() } - - - } diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Location.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Location.kt index 528ec9a4..e5d24908 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Location.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Location.kt @@ -3,6 +3,7 @@ package net.pokeranalytics.android.model.realm import android.text.InputType import io.realm.RealmObject import io.realm.annotations.PrimaryKey +import net.pokeranalytics.android.model.ObjectSavable import net.pokeranalytics.android.ui.adapter.components.* import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetData import net.pokeranalytics.android.ui.view.RowEditable @@ -12,7 +13,7 @@ import net.pokeranalytics.android.ui.view.SimpleRow import java.util.* -open class Location : RealmObject(), RowRepresentableDataSource, LiveDataDataSource, RowEditable { +open class Location : RealmObject(), RowRepresentableDataSource, LiveDataDataSource, RowEditable, ObjectSavable { @PrimaryKey var id = UUID.randomUUID().toString() @@ -57,4 +58,7 @@ open class Location : RealmObject(), RowRepresentableDataSource, LiveDataDataSou } } + override fun isValidForSave(): Boolean { + return this.name.isNotEmpty() + } } diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt index a92a3e76..b90c304b 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt @@ -3,6 +3,7 @@ package net.pokeranalytics.android.model.realm import android.text.InputType import io.realm.RealmObject import io.realm.annotations.PrimaryKey +import net.pokeranalytics.android.model.ObjectSavable import net.pokeranalytics.android.ui.adapter.components.* import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetData import net.pokeranalytics.android.ui.view.RowEditable @@ -11,7 +12,7 @@ import net.pokeranalytics.android.ui.view.SimpleRow import net.pokeranalytics.android.ui.view.TournamentFeatureRow import java.util.* -open class TournamentFeature : RealmObject(), RowRepresentableDataSource, LiveDataDataSource, RowEditable { +open class TournamentFeature : RealmObject(), RowRepresentableDataSource, LiveDataDataSource, RowEditable, ObjectSavable { @PrimaryKey var id = UUID.randomUUID().toString() @@ -50,4 +51,8 @@ open class TournamentFeature : RealmObject(), RowRepresentableDataSource, LiveDa SimpleRow.NAME -> this.name = value as String? ?: "" } } + + override fun isValidForSave(): Boolean { + return this.name.isNotEmpty() + } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt index c38f3942..f569440e 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt @@ -3,6 +3,7 @@ package net.pokeranalytics.android.model.realm import android.text.InputType import io.realm.RealmObject import io.realm.annotations.PrimaryKey +import net.pokeranalytics.android.model.ObjectSavable import net.pokeranalytics.android.ui.adapter.components.* import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetData import net.pokeranalytics.android.ui.view.RowEditable @@ -12,7 +13,7 @@ import net.pokeranalytics.android.ui.view.TransactionTypeRow import java.util.* -open class TransactionType : RealmObject(), RowRepresentableDataSource, LiveDataDataSource, RowEditable { +open class TransactionType : RealmObject(), RowRepresentableDataSource, LiveDataDataSource, RowEditable, ObjectSavable { @PrimaryKey var id = UUID.randomUUID().toString() @@ -60,6 +61,9 @@ open class TransactionType : RealmObject(), RowRepresentableDataSource, LiveData } } + override fun isValidForSave(): Boolean { + return this.name.isNotEmpty() + } } enum class TransactionKind { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt index 97bc80e7..f684d2b8 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt @@ -21,6 +21,7 @@ import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheet import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetFragment import net.pokeranalytics.android.ui.view.RowEditable import net.pokeranalytics.android.ui.view.RowRepresentable +import timber.log.Timber class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, BottomSheetDelegate { @@ -93,7 +94,7 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, } } else { val builder = AlertDialog.Builder(it.context) - builder.setTitle(R.string.warning) + .setMessage(R.string.empty_name_for_br_error) .setNegativeButton(R.string.ok, null) builder.show() } @@ -106,8 +107,16 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, .setMessage(R.string.are_you_sure_you_want_to_do_that_) .setNeutralButton(R.string.no, null) .setNegativeButton(R.string.yes, DialogInterface.OnClickListener { dialog, id -> - this.getRealm().executeTransaction { - this.item.deleteFromRealm() + + if (this.item.isManaged) { + Toast.makeText(requireContext(), "isManaged", Toast.LENGTH_SHORT).show() + Timber.d("is managed") + this.getRealm().executeTransaction { + this.liveDataType.deleteData(it, (this.item as LiveDataDataSource)) + } + } else { + Toast.makeText(requireContext(), "isNotManaged", Toast.LENGTH_SHORT).show() + Timber.d("is not managed") } this.activity?.let { it.finish()