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