📦 Mise en place de toute la base de donnée, pas encore testé 🐛

DAO
Pierre FERREIRA 2 years ago
parent e69cf0ca8d
commit 625822766a

@ -1,6 +1,7 @@
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'kotlin-kapt'
}
android {
@ -42,6 +43,8 @@ android {
}
}
apply plugin: 'kotlin-kapt'
dependencies {
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9'
@ -50,9 +53,16 @@ dependencies {
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.8.0'
implementation 'androidx.gridlayout:gridlayout:1.0.0'
implementation 'androidx.room:room-common:2.5.1'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
//room
implementation "androidx.room:room-runtime:2.5.1"
kapt "androidx.room:room-compiler:2.5.1"
implementation "androidx.room:room-ktx:2.5.1"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2"
}
//viewBinding {

@ -1,16 +1,43 @@
package iut.android.pierrepierre.model.Activity
import android.content.Context
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import iut.android.pierrepierre.R
import android.content.Intent
import android.view.View
import android.widget.Button
import androidx.room.Room
import iut.android.pierrepierre.model.Class.User
import iut.android.pierrepierre.model.DB.DAO.UserDAO
import iut.android.pierrepierre.model.DB.Entity.UserEntity
import iut.android.pierrepierre.model.DB.RoomDB
import java.util.*
class MenuActivity : AppCompatActivity() {
private lateinit var db: RoomDB
private lateinit var userDao: UserDAO
private lateinit var user : User
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_menu)
//BDD
// Initialisation BDD
db = Room.databaseBuilder(applicationContext, RoomDB::class.java, "MyDataBase").build()
userDao = db.userDao()
// Générer un ID unique pour l'utilisateur
val uniqueID = getUniqueUserID()
// Charger le score de l'utilisateur s'il existe
val userE = userDao.getUserById(uniqueID)
if (userE != null) {
val userScore = userE.score
user = userE.toUser()
}
}
fun onClickJouer(view: View) {
@ -20,9 +47,36 @@ class MenuActivity : AppCompatActivity() {
fun onClickScores(view: View) {
//TODO Ajouter l'action correspondant à Scores
//FIXME tmp
var v = findViewById<Button>(R.id.btn_scores)
v.text = user.score.toString()
}
fun onClickQuitter(view: View) {
finishAffinity()
}
private fun getUniqueUserID(): String {
val prefs = getSharedPreferences("MyappPrefs", Context.MODE_PRIVATE)
var uniqueID = prefs.getString("unique-user-id", "")
if (uniqueID.isNullOrEmpty()) {
uniqueID = UUID.randomUUID().toString()
prefs.edit().putString("unique-user-id", uniqueID).apply()
}
return uniqueID
}
/// Convertisseur
// UserEntity en User
fun UserEntity.toUser(): User {
return User(score = this.score, nbMiss = this.nbMiss)
}
// User en UserEntity
fun User.toUserEntity(): UserEntity {
return UserEntity(score = this.score, nbMiss = this.nbMiss)
}
}

@ -0,0 +1,14 @@
package iut.android.pierrepierre.model.DB
import androidx.room.Database
import androidx.room.RoomDatabase
import iut.android.pierrepierre.model.Class.User
import iut.android.pierrepierre.model.DB.DAO.UserDAO
import iut.android.pierrepierre.model.DB.Entity.UserEntity
//@Database(entities = arrayOf(UserEntity::class), version = 1)
//abstract class BDD : RoomDatabase(){
// abstract fun daoUser() : UserDAO
//}
//FIXME useless car "abstract fun daoUser() : UserDAO" definis dans room

@ -0,0 +1,29 @@
package iut.android.pierrepierre.model.DB.DAO
import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
import androidx.room.Query
import iut.android.pierrepierre.model.DB.Entity.UserEntity
@Dao
interface UserDAO {
@Insert
fun insererUser(u : UserEntity)
@Delete
fun DeleteUser(u : UserEntity)
@Query("SELECT * FROM user WHERE user.id = :id")
fun getUserById(id: String): UserEntity?
@Query("SELECT score FROM user ")
fun getUserScore()//liste des scores
@Query("SELECT nbMiss FROM user ")
fun getUserMiss()//liste des scores
@Query("SELECT max(score) FROM user ")
fun getUserBestScore()//list des scores
}

@ -0,0 +1,14 @@
package iut.android.pierrepierre.model.DB.Entity
import androidx.room.Entity
import androidx.room.PrimaryKey
import iut.android.pierrepierre.model.Class.User
import java.util.*
@Entity(tableName = "user")
class UserEntity(
@PrimaryKey val id: String = UUID.randomUUID().toString(),
val score: Int,
val nbMiss: Int
)

@ -0,0 +1,30 @@
package iut.android.pierrepierre.model.DB
import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
import iut.android.pierrepierre.model.DB.DAO.UserDAO
import iut.android.pierrepierre.model.DB.Entity.UserEntity
@Database(entities = [UserEntity::class], version = 1)
abstract class RoomDB : RoomDatabase() {
abstract fun userDao(): UserDAO //remplace BDD.kt
companion object {
private var INSTANCE: RoomDB? = null
fun getDatabase(context: Context) {
INSTANCE ?: synchronized(this) {
val instance = Room.databaseBuilder(
context.applicationContext,
RoomDB::class.java,
"MyDataBase"
).build()
INSTANCE = instance
instance
}
}
}
}
Loading…
Cancel
Save