Add method to get message when save failed for Savable

feature/top10
Aurelien Hubert 7 years ago
parent 091184da51
commit 9a26ba2b3f
  1. 40
      app/src/main/java/net/pokeranalytics/android/model/interfaces/Savable.kt
  2. 5
      app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt
  3. 5
      app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt
  4. 5
      app/src/main/java/net/pokeranalytics/android/model/realm/Location.kt
  5. 4
      app/src/main/java/net/pokeranalytics/android/model/realm/TournamentType.kt
  6. 17
      app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt

@ -1,13 +1,14 @@
package net.pokeranalytics.android.model.interfaces package net.pokeranalytics.android.model.interfaces
import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
interface Identifiable { interface Identifiable {
/** /**
* A unique identifier getter * A unique identifier getter
*/ */
fun uniqueIdentifier(): String fun uniqueIdentifier(): String
} }
@ -15,17 +16,24 @@ interface Identifiable {
* An interface to easily handle the validity of any object we want to save * An interface to easily handle the validity of any object we want to save
*/ */
interface Savable : Identifiable { interface Savable : Identifiable {
/** /**
* A method to define if an object is safe for saving in database * A method to define if an object is safe for saving in database
*/ */
fun isValidForSave(): Boolean { fun isValidForSave(): Boolean {
//TODO should be by default to false //TODO should be by default to false
return true return true
} }
/** /**
* a method to handle the modification of the object. * A method to get the reason why the object can't be saved
* Through [RowRepresentable] the object is able to update the right variable with the new value. */
*/ fun getFailedSaveMessage(): Int {
fun updateValue(value: Any?, row: RowRepresentable) return R.string.none
}
/**
* a method to handle the modification of the object.
* Through [RowRepresentable] the object is able to update the right variable with the new value.
*/
fun updateValue(value: Any?, row: RowRepresentable)
} }

@ -3,6 +3,7 @@ package net.pokeranalytics.android.model.realm
import io.realm.RealmList import io.realm.RealmList
import io.realm.RealmObject import io.realm.RealmObject
import io.realm.annotations.PrimaryKey import io.realm.annotations.PrimaryKey
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.interfaces.Savable import net.pokeranalytics.android.model.interfaces.Savable
import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
@ -94,4 +95,8 @@ open class Bankroll(name: String = "") : RealmObject(), Savable,
return this.name.isNotEmpty() return this.name.isNotEmpty()
} }
override fun getFailedSaveMessage(): Int {
return R.string.empty_name_for_br_error
}
} }

@ -2,6 +2,7 @@ package net.pokeranalytics.android.model.realm
import io.realm.RealmObject import io.realm.RealmObject
import io.realm.annotations.PrimaryKey import io.realm.annotations.PrimaryKey
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.interfaces.Savable import net.pokeranalytics.android.model.interfaces.Savable
import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
@ -75,4 +76,8 @@ open class Game : RealmObject(), Savable, StaticRowRepresentableDataSource, RowR
return this.name.isNotEmpty() return this.name.isNotEmpty()
} }
override fun getFailedSaveMessage(): Int {
return R.string.variant_empty_name_error
}
} }

@ -4,6 +4,7 @@ import com.google.android.libraries.places.api.model.Place
import io.realm.RealmObject import io.realm.RealmObject
import io.realm.annotations.Ignore import io.realm.annotations.Ignore
import io.realm.annotations.PrimaryKey import io.realm.annotations.PrimaryKey
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.interfaces.Savable import net.pokeranalytics.android.model.interfaces.Savable
import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
@ -101,6 +102,10 @@ open class Location : RealmObject(), Savable, StaticRowRepresentableDataSource,
return this.name.isNotEmpty() return this.name.isNotEmpty()
} }
override fun getFailedSaveMessage(): Int {
return R.string.location_empty_field_error
}
/** /**
* Fill the location attributes with a place object * Fill the location attributes with a place object
*/ */

@ -2,6 +2,7 @@ package net.pokeranalytics.android.model.realm
import io.realm.RealmObject import io.realm.RealmObject
import io.realm.annotations.PrimaryKey import io.realm.annotations.PrimaryKey
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.interfaces.Savable import net.pokeranalytics.android.model.interfaces.Savable
import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
@ -64,5 +65,8 @@ open class TournamentType : RealmObject(), Savable, StaticRowRepresentableDataSo
return this.name.isNotEmpty() return this.name.isNotEmpty()
} }
override fun getFailedSaveMessage(): Int {
return R.string.tt_empty_field_error
}
} }

@ -14,10 +14,6 @@ import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.LiveData import net.pokeranalytics.android.model.LiveData
import net.pokeranalytics.android.model.interfaces.Identifiable import net.pokeranalytics.android.model.interfaces.Identifiable
import net.pokeranalytics.android.model.interfaces.Savable import net.pokeranalytics.android.model.interfaces.Savable
import net.pokeranalytics.android.model.realm.Bankroll
import net.pokeranalytics.android.model.realm.Game
import net.pokeranalytics.android.model.realm.Location
import net.pokeranalytics.android.model.realm.TournamentType
import net.pokeranalytics.android.ui.activity.EditableDataActivity import net.pokeranalytics.android.ui.activity.EditableDataActivity
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
@ -104,7 +100,7 @@ open class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDele
* Init data * Init data
*/ */
private fun initData() { private fun initData() {
if (this.dataType != null && this.primaryKey != null) { if (this.dataType != null) {
val proxyItem: RealmObject? = this.liveDataType.getData(this.getRealm(), primaryKey) val proxyItem: RealmObject? = this.liveDataType.getData(this.getRealm(), primaryKey)
proxyItem?.let { proxyItem?.let {
this.appBar.toolbar.title = "Update ${this.liveDataType.name.toLowerCase().capitalize()}" this.appBar.toolbar.title = "Update ${this.liveDataType.name.toLowerCase().capitalize()}"
@ -152,20 +148,11 @@ open class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDele
finishActivityWithResult(uniqueIdentifier) finishActivityWithResult(uniqueIdentifier)
} }
} else { } else {
val message = (this.item as Savable).getFailedSaveMessage()
val message = when (item) {
is Bankroll -> R.string.empty_name_for_br_error
is Location -> R.string.location_empty_field_error
is Game -> R.string.location_empty_field_error
is TournamentType -> R.string.tt_empty_field_error
else -> throw IllegalStateException("Need to manage ${item::class.java} error")
}
val builder = AlertDialog.Builder(requireContext()) val builder = AlertDialog.Builder(requireContext())
.setMessage(message) .setMessage(message)
.setNegativeButton(R.string.ok, null) .setNegativeButton(R.string.ok, null)
builder.show() builder.show()
} }
} }

Loading…
Cancel
Save