parent
48868992a4
commit
54b6457fc9
@ -0,0 +1,79 @@ |
|||||||
|
package net.pokeranalytics.android.model.realm |
||||||
|
|
||||||
|
import android.content.Context |
||||||
|
import androidx.fragment.app.Fragment |
||||||
|
import io.realm.Realm |
||||||
|
import io.realm.RealmObject |
||||||
|
import io.realm.annotations.Ignore |
||||||
|
import io.realm.annotations.PrimaryKey |
||||||
|
import net.pokeranalytics.android.R |
||||||
|
import net.pokeranalytics.android.exceptions.ModelException |
||||||
|
import net.pokeranalytics.android.model.interfaces.DeleteValidityStatus |
||||||
|
import net.pokeranalytics.android.model.interfaces.Identifiable |
||||||
|
import net.pokeranalytics.android.model.interfaces.Manageable |
||||||
|
import net.pokeranalytics.android.model.interfaces.SaveValidityStatus |
||||||
|
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate |
||||||
|
import net.pokeranalytics.android.ui.fragment.components.input.InputFragment |
||||||
|
import net.pokeranalytics.android.ui.fragment.components.input.InputFragmentType |
||||||
|
import net.pokeranalytics.android.ui.view.RowEditableDataSource |
||||||
|
import net.pokeranalytics.android.ui.view.RowRepresentable |
||||||
|
import net.pokeranalytics.android.ui.view.RowViewType |
||||||
|
import net.pokeranalytics.android.util.NULL_TEXT |
||||||
|
import java.util.* |
||||||
|
|
||||||
|
open class Comment : RealmObject(), Manageable, RowRepresentable { |
||||||
|
|
||||||
|
@PrimaryKey |
||||||
|
override var id = UUID.randomUUID().toString() |
||||||
|
var content: String = "" |
||||||
|
var date: Date = Date() |
||||||
|
|
||||||
|
@Ignore |
||||||
|
override val realmObjectClass: Class<out Identifiable> = Comment::class.java |
||||||
|
|
||||||
|
@Ignore |
||||||
|
override val viewType: Int = RowViewType.TITLE.ordinal |
||||||
|
|
||||||
|
@Ignore |
||||||
|
override val inputFragmentType: InputFragmentType = InputFragmentType.EDIT_TEXT_MULTI_LINES |
||||||
|
|
||||||
|
override fun localizedTitle(context: Context): String { |
||||||
|
return context.getString(R.string.comment) |
||||||
|
} |
||||||
|
|
||||||
|
override fun getDisplayName(context: Context): String { |
||||||
|
return if (content.isNotEmpty()) content else NULL_TEXT |
||||||
|
} |
||||||
|
|
||||||
|
override fun startEditing(dataSource: Any?, parent: Fragment?) { |
||||||
|
if (parent == null) return |
||||||
|
if (parent !is RowRepresentableDelegate) return |
||||||
|
val data = RowEditableDataSource() |
||||||
|
data.append(this.content, R.string.value) |
||||||
|
InputFragment.buildAndShow(this, parent, data, isDeletable = true) |
||||||
|
} |
||||||
|
|
||||||
|
override fun updateValue(value: Any?, row: RowRepresentable) { |
||||||
|
this.content = value as String? ?: "" |
||||||
|
} |
||||||
|
|
||||||
|
override fun isValidForSave(): Boolean { |
||||||
|
return true |
||||||
|
} |
||||||
|
|
||||||
|
override fun alreadyExists(realm: Realm): Boolean { |
||||||
|
return realm.where(this::class.java).notEqualTo("id", this.id).findAll().isNotEmpty() |
||||||
|
} |
||||||
|
|
||||||
|
override fun getFailedSaveMessage(status: SaveValidityStatus): Int { |
||||||
|
throw ModelException("${this::class.java} getFailedSaveMessage for $status not handled") |
||||||
|
} |
||||||
|
|
||||||
|
override fun isValidForDelete(realm: Realm): Boolean { |
||||||
|
return true |
||||||
|
} |
||||||
|
|
||||||
|
override fun getFailedDeleteMessage(status: DeleteValidityStatus): Int { |
||||||
|
return R.string.cf_entry_delete_popup_message |
||||||
|
} |
||||||
|
} |
||||||
Loading…
Reference in new issue