From a3dc69b23bad5b2e67d3200b7844131c77e791ff Mon Sep 17 00:00:00 2001 From: Faraphel Date: Fri, 17 May 2024 16:57:18 +0200 Subject: [PATCH] Replaced the database to match the new schema --- .../tasks_valider/database/TaskDatabase.kt | 40 ++++++-------- .../database/api/TaskDatabaseApi.kt | 14 +++-- .../api/entities/{GroupApi.kt => ClassApi.kt} | 4 +- .../database/api/entities/GroupStudentApi.kt | 7 --- .../entities/{TeacherApi.kt => PersonApi.kt} | 4 +- .../api/entities/RelationClassPersonApi.kt | 7 +++ .../entities/{StudentApi.kt => SessionApi.kt} | 4 +- .../{TaskGroupApi.kt => SubjectApi.kt} | 4 +- .../database/api/entities/TaskApi.kt | 4 +- .../database/api/entities/ValidationApi.kt | 7 +++ .../tasks_valider/database/dao/ClassDao.kt | 40 ++++++++++++++ .../tasks_valider/database/dao/GroupDao.kt | 28 ---------- .../database/dao/GroupStudentDao.kt | 16 ------ .../tasks_valider/database/dao/PersonDao.kt | 44 +++++++++++++++ .../database/dao/RelationClassPersonDao.kt | 23 ++++++++ .../tasks_valider/database/dao/SessionDao.kt | 18 ++++++ .../tasks_valider/database/dao/StudentDao.kt | 29 ---------- .../tasks_valider/database/dao/SubjectDao.kt | 27 +++++++++ .../tasks_valider/database/dao/TaskDao.kt | 24 ++++---- .../database/dao/TaskGroupDao.kt | 16 ------ .../tasks_valider/database/dao/TeacherDao.kt | 16 ------ .../database/dao/ValidationDao.kt | 24 ++++++++ .../database/entities/ClassEntity.kt | 9 ++- .../{StudentEntity.kt => PersonEntity.kt} | 10 +++- ...Entity.kt => RelationClassPersonEntity.kt} | 34 +++++++----- .../database/entities/SessionEntity.kt | 10 +++- .../database/entities/SubjectEntity.kt | 8 ++- .../database/entities/TaskEntity.kt | 10 +++- .../database/entities/TeacherEntity.kt | 15 ----- .../database/entities/ValidationEntity.kt | 31 ++++++----- .../database/entities/_old/GroupEntity.kt | 14 ----- .../database/entities/_old/PersonEntity.kt | 19 ------- .../database/entities/_old/StudentEntity.kt | 12 ---- .../database/entities/_old/TaskEntity.kt | 13 ----- .../database/entities/_old/TaskGroupEntity.kt | 44 --------------- .../database/entities/_old/TeacherEntity.kt | 12 ---- .../communication/internet/client/screen.kt | 4 +- .../communication/internet/server/screen.kt | 4 +- .../communication/wifiP2p/server/screen.kt | 4 +- .../tasks_valider/ui/screen/task/screen.kt | 25 ++++----- .../tasks_valider/ui/widgets/task/Group.kt | 18 ------ .../tasks_valider/ui/widgets/task/Task.kt | 15 ----- .../ui/widgets/task/TaskGroup.kt | 55 ------------------- 43 files changed, 323 insertions(+), 443 deletions(-) rename app/src/main/java/com/faraphel/tasks_valider/database/api/entities/{GroupApi.kt => ClassApi.kt} (60%) delete mode 100644 app/src/main/java/com/faraphel/tasks_valider/database/api/entities/GroupStudentApi.kt rename app/src/main/java/com/faraphel/tasks_valider/database/api/entities/{TeacherApi.kt => PersonApi.kt} (55%) create mode 100644 app/src/main/java/com/faraphel/tasks_valider/database/api/entities/RelationClassPersonApi.kt rename app/src/main/java/com/faraphel/tasks_valider/database/api/entities/{StudentApi.kt => SessionApi.kt} (55%) rename app/src/main/java/com/faraphel/tasks_valider/database/api/entities/{TaskGroupApi.kt => SubjectApi.kt} (54%) create mode 100644 app/src/main/java/com/faraphel/tasks_valider/database/api/entities/ValidationApi.kt create mode 100644 app/src/main/java/com/faraphel/tasks_valider/database/dao/ClassDao.kt delete mode 100644 app/src/main/java/com/faraphel/tasks_valider/database/dao/GroupDao.kt delete mode 100644 app/src/main/java/com/faraphel/tasks_valider/database/dao/GroupStudentDao.kt create mode 100644 app/src/main/java/com/faraphel/tasks_valider/database/dao/PersonDao.kt create mode 100644 app/src/main/java/com/faraphel/tasks_valider/database/dao/RelationClassPersonDao.kt create mode 100644 app/src/main/java/com/faraphel/tasks_valider/database/dao/SessionDao.kt delete mode 100644 app/src/main/java/com/faraphel/tasks_valider/database/dao/StudentDao.kt create mode 100644 app/src/main/java/com/faraphel/tasks_valider/database/dao/SubjectDao.kt delete mode 100644 app/src/main/java/com/faraphel/tasks_valider/database/dao/TaskGroupDao.kt delete mode 100644 app/src/main/java/com/faraphel/tasks_valider/database/dao/TeacherDao.kt create mode 100644 app/src/main/java/com/faraphel/tasks_valider/database/dao/ValidationDao.kt rename app/src/main/java/com/faraphel/tasks_valider/database/entities/{StudentEntity.kt => PersonEntity.kt} (73%) rename app/src/main/java/com/faraphel/tasks_valider/database/entities/{_old/GroupStudentEntity.kt => RelationClassPersonEntity.kt} (52%) delete mode 100644 app/src/main/java/com/faraphel/tasks_valider/database/entities/TeacherEntity.kt delete mode 100644 app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/GroupEntity.kt delete mode 100644 app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/PersonEntity.kt delete mode 100644 app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/StudentEntity.kt delete mode 100644 app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/TaskEntity.kt delete mode 100644 app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/TaskGroupEntity.kt delete mode 100644 app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/TeacherEntity.kt delete mode 100644 app/src/main/java/com/faraphel/tasks_valider/ui/widgets/task/Group.kt delete mode 100644 app/src/main/java/com/faraphel/tasks_valider/ui/widgets/task/Task.kt delete mode 100644 app/src/main/java/com/faraphel/tasks_valider/ui/widgets/task/TaskGroup.kt diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/TaskDatabase.kt b/app/src/main/java/com/faraphel/tasks_valider/database/TaskDatabase.kt index f439a9d..f2ff03e 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/database/TaskDatabase.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/database/TaskDatabase.kt @@ -4,45 +4,37 @@ import androidx.room.Database import androidx.room.RoomDatabase import androidx.room.TypeConverters import com.faraphel.tasks_valider.database.converters.InstantConverter -import com.faraphel.tasks_valider.database.dao.GroupDao -import com.faraphel.tasks_valider.database.dao.GroupStudentDao -import com.faraphel.tasks_valider.database.dao.StudentDao -import com.faraphel.tasks_valider.database.dao.TaskDao -import com.faraphel.tasks_valider.database.dao.TaskGroupDao -import com.faraphel.tasks_valider.database.dao.TeacherDao -import com.faraphel.tasks_valider.database.entities._old.GroupEntity -import com.faraphel.tasks_valider.database.entities._old.GroupStudentEntity -import com.faraphel.tasks_valider.database.entities._old.StudentEntity -import com.faraphel.tasks_valider.database.entities._old.TaskEntity -import com.faraphel.tasks_valider.database.entities._old.TaskGroupEntity -import com.faraphel.tasks_valider.database.entities._old.TeacherEntity +import com.faraphel.tasks_valider.database.dao.* +import com.faraphel.tasks_valider.database.entities.* /** - * The database for the tasks application. + * The database for the tasks' application. * Contains the entities and the relations between them. */ @Database( entities = [ - GroupEntity::class, - StudentEntity::class, - TeacherEntity::class, + ClassEntity::class, + PersonEntity::class, + SessionEntity::class, + SubjectEntity::class, TaskEntity::class, + ValidationEntity::class, - GroupStudentEntity::class, - TaskGroupEntity::class, + RelationClassPersonEntity::class, ], version = 1 ) @TypeConverters( InstantConverter::class ) -abstract class TaskDatabase : RoomDatabase() { - abstract fun groupDao(): GroupDao - abstract fun studentDao(): StudentDao - abstract fun teacherDao(): TeacherDao +abstract class TaskDatabase: RoomDatabase() { + abstract fun classDao(): ClassDao + abstract fun personDao(): PersonDao + abstract fun sessionDao(): SessionDao + abstract fun subjectDao(): SubjectDao abstract fun taskDao(): TaskDao + abstract fun validationDao(): ValidationDao - abstract fun groupStudentDao(): GroupStudentDao - abstract fun taskGroupDao(): TaskGroupDao + abstract fun relationClassPersonDao(): RelationClassPersonDao } diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/api/TaskDatabaseApi.kt b/app/src/main/java/com/faraphel/tasks_valider/database/api/TaskDatabaseApi.kt index d1e9133..2303a34 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/database/api/TaskDatabaseApi.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/database/api/TaskDatabaseApi.kt @@ -5,17 +5,19 @@ import com.faraphel.tasks_valider.connectivity.task.session.TaskSession import com.faraphel.tasks_valider.database.TaskDatabase import com.faraphel.tasks_valider.database.api.entities.* import com.faraphel.tasks_valider.database.api.entities.base.BaseApi +import com.faraphel.tasks_valider.database.entities.* import fi.iki.elonen.NanoHTTPD class TaskDatabaseApi(private val database: TaskDatabase) { private val api: Map = mapOf( - "group" to GroupApi(this.database.groupDao()), - "student" to StudentApi(this.database.studentDao()), - "teacher" to TeacherApi(this.database.teacherDao()), - "task" to TaskApi(this.database.taskDao()), + ClassEntity.TABLE_NAME to ClassApi(this.database.classDao()), + PersonEntity.TABLE_NAME to PersonApi(this.database.personDao()), + SessionEntity.TABLE_NAME to SessionApi(this.database.sessionDao()), + SubjectEntity.TABLE_NAME to SubjectApi(this.database.subjectDao()), + TaskEntity.TABLE_NAME to TaskApi(this.database.taskDao()), + ValidationEntity.TABLE_NAME to ValidationApi(this.database.validationDao()), - "group_student" to GroupStudentApi(this.database.groupStudentDao()), - "task_group" to TaskGroupApi(this.database.taskGroupDao()), + RelationClassPersonEntity.TABLE_NAME to RelationClassPersonApi(this.database.relationClassPersonDao()), ) /** diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/GroupApi.kt b/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/ClassApi.kt similarity index 60% rename from app/src/main/java/com/faraphel/tasks_valider/database/api/entities/GroupApi.kt rename to app/src/main/java/com/faraphel/tasks_valider/database/api/entities/ClassApi.kt index 0f780f6..a012aa2 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/GroupApi.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/ClassApi.kt @@ -2,6 +2,6 @@ package com.faraphel.tasks_valider.database.api.entities import com.faraphel.tasks_valider.database.api.entities.base.BaseJsonApi import com.faraphel.tasks_valider.database.dao.base.BaseDao -import com.faraphel.tasks_valider.database.entities._old.GroupEntity +import com.faraphel.tasks_valider.database.entities.ClassEntity -class GroupApi(dao: BaseDao) : BaseJsonApi(dao) +class ClassApi(dao: BaseDao) : BaseJsonApi(dao) diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/GroupStudentApi.kt b/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/GroupStudentApi.kt deleted file mode 100644 index 2427a35..0000000 --- a/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/GroupStudentApi.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.faraphel.tasks_valider.database.api.entities - -import com.faraphel.tasks_valider.database.api.entities.base.BaseJsonApi -import com.faraphel.tasks_valider.database.dao.base.BaseDao -import com.faraphel.tasks_valider.database.entities._old.GroupStudentEntity - -class GroupStudentApi(dao: BaseDao) : BaseJsonApi(dao) diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/TeacherApi.kt b/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/PersonApi.kt similarity index 55% rename from app/src/main/java/com/faraphel/tasks_valider/database/api/entities/TeacherApi.kt rename to app/src/main/java/com/faraphel/tasks_valider/database/api/entities/PersonApi.kt index 6c65cf4..d9edf18 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/TeacherApi.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/PersonApi.kt @@ -2,6 +2,6 @@ package com.faraphel.tasks_valider.database.api.entities import com.faraphel.tasks_valider.database.api.entities.base.BaseJsonApi import com.faraphel.tasks_valider.database.dao.base.BaseDao -import com.faraphel.tasks_valider.database.entities._old.TeacherEntity +import com.faraphel.tasks_valider.database.entities.PersonEntity -class TeacherApi(dao: BaseDao) : BaseJsonApi(dao) +class PersonApi(dao: BaseDao) : BaseJsonApi(dao) diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/RelationClassPersonApi.kt b/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/RelationClassPersonApi.kt new file mode 100644 index 0000000..3f437b5 --- /dev/null +++ b/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/RelationClassPersonApi.kt @@ -0,0 +1,7 @@ +package com.faraphel.tasks_valider.database.api.entities + +import com.faraphel.tasks_valider.database.api.entities.base.BaseJsonApi +import com.faraphel.tasks_valider.database.dao.base.BaseDao +import com.faraphel.tasks_valider.database.entities.RelationClassPersonEntity + +class RelationClassPersonApi(dao: BaseDao) : BaseJsonApi(dao) diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/StudentApi.kt b/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/SessionApi.kt similarity index 55% rename from app/src/main/java/com/faraphel/tasks_valider/database/api/entities/StudentApi.kt rename to app/src/main/java/com/faraphel/tasks_valider/database/api/entities/SessionApi.kt index 01f0cbd..2eb7dc2 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/StudentApi.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/SessionApi.kt @@ -2,6 +2,6 @@ package com.faraphel.tasks_valider.database.api.entities import com.faraphel.tasks_valider.database.api.entities.base.BaseJsonApi import com.faraphel.tasks_valider.database.dao.base.BaseDao -import com.faraphel.tasks_valider.database.entities._old.StudentEntity +import com.faraphel.tasks_valider.database.entities.SessionEntity -class StudentApi(dao: BaseDao) : BaseJsonApi(dao) +class SessionApi(dao: BaseDao) : BaseJsonApi(dao) diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/TaskGroupApi.kt b/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/SubjectApi.kt similarity index 54% rename from app/src/main/java/com/faraphel/tasks_valider/database/api/entities/TaskGroupApi.kt rename to app/src/main/java/com/faraphel/tasks_valider/database/api/entities/SubjectApi.kt index 02119cf..caca63a 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/TaskGroupApi.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/SubjectApi.kt @@ -2,6 +2,6 @@ package com.faraphel.tasks_valider.database.api.entities import com.faraphel.tasks_valider.database.api.entities.base.BaseJsonApi import com.faraphel.tasks_valider.database.dao.base.BaseDao -import com.faraphel.tasks_valider.database.entities._old.TaskGroupEntity +import com.faraphel.tasks_valider.database.entities.SubjectEntity -class TaskGroupApi(dao: BaseDao) : BaseJsonApi(dao) \ No newline at end of file +class SubjectApi(dao: BaseDao) : BaseJsonApi(dao) diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/TaskApi.kt b/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/TaskApi.kt index 42eee83..c331a98 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/TaskApi.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/TaskApi.kt @@ -2,6 +2,6 @@ package com.faraphel.tasks_valider.database.api.entities import com.faraphel.tasks_valider.database.api.entities.base.BaseJsonApi import com.faraphel.tasks_valider.database.dao.base.BaseDao -import com.faraphel.tasks_valider.database.entities._old.TaskEntity +import com.faraphel.tasks_valider.database.entities.TaskEntity -class TaskApi(dao: BaseDao) : BaseJsonApi(dao) \ No newline at end of file +class TaskApi(dao: BaseDao) : BaseJsonApi(dao) diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/ValidationApi.kt b/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/ValidationApi.kt new file mode 100644 index 0000000..60e3010 --- /dev/null +++ b/app/src/main/java/com/faraphel/tasks_valider/database/api/entities/ValidationApi.kt @@ -0,0 +1,7 @@ +package com.faraphel.tasks_valider.database.api.entities + +import com.faraphel.tasks_valider.database.api.entities.base.BaseJsonApi +import com.faraphel.tasks_valider.database.dao.base.BaseDao +import com.faraphel.tasks_valider.database.entities.ValidationEntity + +class ValidationApi(dao: BaseDao) : BaseJsonApi(dao) diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/dao/ClassDao.kt b/app/src/main/java/com/faraphel/tasks_valider/database/dao/ClassDao.kt new file mode 100644 index 0000000..baef405 --- /dev/null +++ b/app/src/main/java/com/faraphel/tasks_valider/database/dao/ClassDao.kt @@ -0,0 +1,40 @@ +package com.faraphel.tasks_valider.database.dao + +import androidx.room.Dao +import androidx.room.Query +import com.faraphel.tasks_valider.database.dao.base.BaseDao +import com.faraphel.tasks_valider.database.entities.ClassEntity +import com.faraphel.tasks_valider.database.entities.PersonEntity +import com.faraphel.tasks_valider.database.entities.RelationClassPersonEntity +import com.faraphel.tasks_valider.database.entities.SessionEntity + +@Dao +interface ClassDao : BaseDao { + @Query("SELECT * FROM ${ClassEntity.TABLE_NAME}") + override fun getAll(): List + + /** + * Get the object from its identifier + */ + @Query("SELECT * FROM ${ClassEntity.TABLE_NAME} WHERE id = :id") + fun getById(id: Long): ClassEntity + + /** + * Get all the sessions this class attended + * @param id the id of the class + */ + @Query("SELECT * FROM ${SessionEntity.TABLE_NAME} WHERE class_id = :id") + fun getSessions(id: Long): List + + /** + * Get all the students in a class + * @param id the id of the class + */ + @Query( + "SELECT * FROM ${PersonEntity.TABLE_NAME} " + + "JOIN ${RelationClassPersonEntity.TABLE_NAME} " + + "ON ${PersonEntity.TABLE_NAME}.id = ${RelationClassPersonEntity.TABLE_NAME}.student_id " + + "WHERE ${RelationClassPersonEntity.TABLE_NAME}.class_id = :id" + ) + fun getStudents(id: Long): List +} diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/dao/GroupDao.kt b/app/src/main/java/com/faraphel/tasks_valider/database/dao/GroupDao.kt deleted file mode 100644 index c482bb3..0000000 --- a/app/src/main/java/com/faraphel/tasks_valider/database/dao/GroupDao.kt +++ /dev/null @@ -1,28 +0,0 @@ -package com.faraphel.tasks_valider.database.dao - -import androidx.room.Dao -import androidx.room.Query -import androidx.room.RewriteQueriesToDropUnusedColumns -import com.faraphel.tasks_valider.database.dao.base.BaseDao -import com.faraphel.tasks_valider.database.entities._old.GroupEntity - - -@Dao -interface GroupDao : BaseDao { - @Query("SELECT * FROM `groups`") - override fun getAll(): List - - @Query("SELECT * FROM `groups` WHERE id = :id") - fun getById(id: Long): GroupEntity - - /** - Allow to get all groups with a specific student - */ - @Query( - "SELECT * FROM `groups` " + - "JOIN `group_student` ON `groups`.id = `group_student`.student_id " + - "WHERE `group_student`.student_id = :studentId" - ) - @RewriteQueriesToDropUnusedColumns - fun filterByStudentId(studentId: Long): List -} diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/dao/GroupStudentDao.kt b/app/src/main/java/com/faraphel/tasks_valider/database/dao/GroupStudentDao.kt deleted file mode 100644 index 85b558b..0000000 --- a/app/src/main/java/com/faraphel/tasks_valider/database/dao/GroupStudentDao.kt +++ /dev/null @@ -1,16 +0,0 @@ -package com.faraphel.tasks_valider.database.dao - -import androidx.room.Dao -import androidx.room.Query -import com.faraphel.tasks_valider.database.dao.base.BaseDao -import com.faraphel.tasks_valider.database.entities._old.GroupStudentEntity - - -@Dao -interface GroupStudentDao : BaseDao { - @Query("SELECT * FROM `group_student`") - override fun getAll(): List - - @Query("SELECT * FROM `group_student` WHERE group_id = :groupId AND student_id = :studentId") - fun getById(groupId: Long, studentId: Long): GroupStudentEntity -} diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/dao/PersonDao.kt b/app/src/main/java/com/faraphel/tasks_valider/database/dao/PersonDao.kt new file mode 100644 index 0000000..601a2f6 --- /dev/null +++ b/app/src/main/java/com/faraphel/tasks_valider/database/dao/PersonDao.kt @@ -0,0 +1,44 @@ +package com.faraphel.tasks_valider.database.dao + +import androidx.room.Dao +import androidx.room.Query +import com.faraphel.tasks_valider.database.dao.base.BaseDao +import com.faraphel.tasks_valider.database.entities.* + +@Dao +interface PersonDao : BaseDao { + @Query("SELECT * FROM ${PersonEntity.TABLE_NAME}") + override fun getAll(): List + + /** + * Get the object from its identifier + */ + @Query("SELECT * FROM ${PersonEntity.TABLE_NAME} WHERE id = :id") + fun getById(id: Long): PersonEntity + + /** + * Allow to get all the classes the person is attending as a student + */ + @Query( + "SELECT * FROM ${ClassEntity.TABLE_NAME} " + + "JOIN ${RelationClassPersonEntity.TABLE_NAME} " + + "ON ${ClassEntity.TABLE_NAME}.id = ${RelationClassPersonEntity.TABLE_NAME}.student_id " + + "WHERE ${RelationClassPersonEntity.TABLE_NAME}.student_id = :id" + ) + fun getClasses(id: Long): List + + + /** + * Get all the tasks this user approved as a teacher + * @param id the id of the person + */ + @Query("SELECT * FROM ${ValidationEntity.TABLE_NAME} WHERE teacher_id = :id") + fun getTasksApproved(id: Long): List + + /** + * Get all the tasks this user validated as a student + * @param id the id of the person + */ + @Query("SELECT * FROM ${ValidationEntity.TABLE_NAME} WHERE student_id = :id") + fun getTasksValidated(id: Long): List +} diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/dao/RelationClassPersonDao.kt b/app/src/main/java/com/faraphel/tasks_valider/database/dao/RelationClassPersonDao.kt new file mode 100644 index 0000000..b0296df --- /dev/null +++ b/app/src/main/java/com/faraphel/tasks_valider/database/dao/RelationClassPersonDao.kt @@ -0,0 +1,23 @@ +package com.faraphel.tasks_valider.database.dao + +import androidx.room.Dao +import androidx.room.Query +import com.faraphel.tasks_valider.database.dao.base.BaseDao +import com.faraphel.tasks_valider.database.entities.RelationClassPersonEntity + +@Dao +interface RelationClassPersonDao : BaseDao { + @Query("SELECT * FROM ${RelationClassPersonEntity.TABLE_NAME}") + override fun getAll(): List + + /** + * Get the object from its identifiers + */ + @Query( + "SELECT * FROM ${RelationClassPersonEntity.TABLE_NAME} " + + "WHERE " + + "class_id = :classId AND " + + "student_id = :studentId" + ) + fun getById(classId: Long, studentId: Long): RelationClassPersonEntity +} diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/dao/SessionDao.kt b/app/src/main/java/com/faraphel/tasks_valider/database/dao/SessionDao.kt new file mode 100644 index 0000000..8054915 --- /dev/null +++ b/app/src/main/java/com/faraphel/tasks_valider/database/dao/SessionDao.kt @@ -0,0 +1,18 @@ +package com.faraphel.tasks_valider.database.dao + +import androidx.room.Dao +import androidx.room.Query +import com.faraphel.tasks_valider.database.dao.base.BaseDao +import com.faraphel.tasks_valider.database.entities.SessionEntity + +@Dao +interface SessionDao : BaseDao { + @Query("SELECT * FROM ${SessionEntity.TABLE_NAME}") + override fun getAll(): List + + /** + * Get the object from its identifier + */ + @Query("SELECT * FROM ${SessionEntity.TABLE_NAME} WHERE id = :id") + fun getById(id: Long): SessionEntity +} diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/dao/StudentDao.kt b/app/src/main/java/com/faraphel/tasks_valider/database/dao/StudentDao.kt deleted file mode 100644 index 6ec9459..0000000 --- a/app/src/main/java/com/faraphel/tasks_valider/database/dao/StudentDao.kt +++ /dev/null @@ -1,29 +0,0 @@ -package com.faraphel.tasks_valider.database.dao - -import androidx.room.Dao -import androidx.room.Query -import androidx.room.RewriteQueriesToDropUnusedColumns -import com.faraphel.tasks_valider.database.dao.base.BaseDao -import com.faraphel.tasks_valider.database.entities._old.StudentEntity - - -@Dao -interface StudentDao : BaseDao { - @Query("SELECT * FROM `students`") - override fun getAll(): List - - @Query("SELECT * FROM `students` WHERE id = :id") - fun getById(id: Long): StudentEntity - - - /** - Allow to get all the students in a group - */ - @Query( - "SELECT * FROM `students` " + - "JOIN `group_student` ON `students`.id = `group_student`.student_id " + - "WHERE `group_student`.group_id = :groupId" - ) - @RewriteQueriesToDropUnusedColumns - fun filterByGroupId(groupId: Long): List -} diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/dao/SubjectDao.kt b/app/src/main/java/com/faraphel/tasks_valider/database/dao/SubjectDao.kt new file mode 100644 index 0000000..8dc676a --- /dev/null +++ b/app/src/main/java/com/faraphel/tasks_valider/database/dao/SubjectDao.kt @@ -0,0 +1,27 @@ +package com.faraphel.tasks_valider.database.dao + +import androidx.room.Dao +import androidx.room.Query +import com.faraphel.tasks_valider.database.dao.base.BaseDao +import com.faraphel.tasks_valider.database.entities.SessionEntity +import com.faraphel.tasks_valider.database.entities.SubjectEntity +import com.faraphel.tasks_valider.database.entities.TaskEntity + +@Dao +interface SubjectDao : BaseDao { + @Query("SELECT * FROM ${SubjectEntity.TABLE_NAME}") + override fun getAll(): List + + /** + * Get the object from its identifier + */ + @Query("SELECT * FROM ${SubjectEntity.TABLE_NAME} WHERE id = :id") + fun getById(id: Long): SubjectEntity + + /** + * Get all the tasks available in a subject + * @param id the id of the subject + */ + @Query("SELECT * FROM ${TaskEntity.TABLE_NAME} WHERE subject_id = :id") + fun getSessions(id: Long): List +} diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/dao/TaskDao.kt b/app/src/main/java/com/faraphel/tasks_valider/database/dao/TaskDao.kt index c0e327d..0053cd0 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/database/dao/TaskDao.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/database/dao/TaskDao.kt @@ -2,27 +2,25 @@ package com.faraphel.tasks_valider.database.dao import androidx.room.Dao import androidx.room.Query -import androidx.room.RewriteQueriesToDropUnusedColumns import com.faraphel.tasks_valider.database.dao.base.BaseDao -import com.faraphel.tasks_valider.database.entities._old.TaskEntity - +import com.faraphel.tasks_valider.database.entities.TaskEntity +import com.faraphel.tasks_valider.database.entities.ValidationEntity @Dao interface TaskDao : BaseDao { - @Query("SELECT * FROM `tasks`") + @Query("SELECT * FROM ${TaskEntity.TABLE_NAME}") override fun getAll(): List - @Query("SELECT * FROM `tasks` WHERE id = :id") + /** + * Get the object from its identifier + */ + @Query("SELECT * FROM ${TaskEntity.TABLE_NAME} WHERE id = :id") fun getById(id: Long): TaskEntity /** - Get all the tasks for a specific group + * Get all the validations have been approved for this tasks + * @param id the id of the task */ - @Query( - "SELECT * FROM `tasks` " + - "JOIN `task_group` ON `tasks`.id = `task_group`.task_id " + - "WHERE `task_group`.group_id = :groupId" - ) - @RewriteQueriesToDropUnusedColumns - fun filterByGroupId(groupId: Long): List + @Query("SELECT * FROM ${ValidationEntity.TABLE_NAME} WHERE task_id = :id") + fun getTasksValidated(id: Long): List } diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/dao/TaskGroupDao.kt b/app/src/main/java/com/faraphel/tasks_valider/database/dao/TaskGroupDao.kt deleted file mode 100644 index f29b27c..0000000 --- a/app/src/main/java/com/faraphel/tasks_valider/database/dao/TaskGroupDao.kt +++ /dev/null @@ -1,16 +0,0 @@ -package com.faraphel.tasks_valider.database.dao - -import androidx.room.Dao -import androidx.room.Query -import com.faraphel.tasks_valider.database.dao.base.BaseDao -import com.faraphel.tasks_valider.database.entities._old.TaskGroupEntity - - -@Dao -interface TaskGroupDao : BaseDao { - @Query("SELECT * FROM `task_group`") - override fun getAll(): List - - @Query("SELECT * FROM `task_group` WHERE task_id = :taskId AND group_id = :groupId") - fun getById(taskId: Long, groupId: Long): TaskGroupEntity -} diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/dao/TeacherDao.kt b/app/src/main/java/com/faraphel/tasks_valider/database/dao/TeacherDao.kt deleted file mode 100644 index 39cba2a..0000000 --- a/app/src/main/java/com/faraphel/tasks_valider/database/dao/TeacherDao.kt +++ /dev/null @@ -1,16 +0,0 @@ -package com.faraphel.tasks_valider.database.dao - -import androidx.room.Dao -import androidx.room.Query -import com.faraphel.tasks_valider.database.dao.base.BaseDao -import com.faraphel.tasks_valider.database.entities._old.TeacherEntity - - -@Dao -interface TeacherDao : BaseDao { - @Query("SELECT * FROM `teachers`") - override fun getAll(): List - - @Query("SELECT * FROM `teachers` WHERE id = :id") - fun getById(id: Long): TeacherEntity -} diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/dao/ValidationDao.kt b/app/src/main/java/com/faraphel/tasks_valider/database/dao/ValidationDao.kt new file mode 100644 index 0000000..544da65 --- /dev/null +++ b/app/src/main/java/com/faraphel/tasks_valider/database/dao/ValidationDao.kt @@ -0,0 +1,24 @@ +package com.faraphel.tasks_valider.database.dao + +import androidx.room.Dao +import androidx.room.Query +import com.faraphel.tasks_valider.database.dao.base.BaseDao +import com.faraphel.tasks_valider.database.entities.ValidationEntity + +@Dao +interface ValidationDao : BaseDao { + @Query("SELECT * FROM ${ValidationEntity.TABLE_NAME}") + override fun getAll(): List + + /** + * Get the object from its identifiers + */ + @Query( + "SELECT * FROM ${ValidationEntity.TABLE_NAME} " + + "WHERE " + + "teacher_id = :teacherId and " + + "student_id = :studentId and " + + "task_id = :taskId" + ) + fun getById(teacherId: Long, studentId: Long, taskId: Long): ValidationEntity +} diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/entities/ClassEntity.kt b/app/src/main/java/com/faraphel/tasks_valider/database/entities/ClassEntity.kt index 253262e..97eb47e 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/database/entities/ClassEntity.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/database/entities/ClassEntity.kt @@ -5,8 +5,13 @@ import androidx.room.Entity import androidx.room.PrimaryKey import com.faraphel.tasks_valider.database.entities.base.BaseEntity -@Entity(tableName = "classes") + +@Entity(tableName = ClassEntity.TABLE_NAME) data class ClassEntity ( @ColumnInfo("id") @PrimaryKey(autoGenerate = true) val id: Long = 0, @ColumnInfo("name") val name: String, -) : BaseEntity() +) : BaseEntity() { + companion object { + const val TABLE_NAME = "classes" + } +} diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/entities/StudentEntity.kt b/app/src/main/java/com/faraphel/tasks_valider/database/entities/PersonEntity.kt similarity index 73% rename from app/src/main/java/com/faraphel/tasks_valider/database/entities/StudentEntity.kt rename to app/src/main/java/com/faraphel/tasks_valider/database/entities/PersonEntity.kt index 45ed156..2ee3506 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/database/entities/StudentEntity.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/database/entities/PersonEntity.kt @@ -6,10 +6,14 @@ import androidx.room.PrimaryKey import com.faraphel.tasks_valider.database.entities.base.BaseEntity import java.util.* -@Entity(tableName = "students") -data class StudentEntity ( +@Entity(tableName = PersonEntity.TABLE_NAME) +data class PersonEntity ( @ColumnInfo("id") @PrimaryKey(autoGenerate = true) val id: Long = 0, @ColumnInfo("first_name") val firstName: String, @ColumnInfo("last_name") val lastName: String, @ColumnInfo("card_id") val cardId: UUID, -) : BaseEntity() +) : BaseEntity() { + companion object { + const val TABLE_NAME = "persons" + } +} diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/GroupStudentEntity.kt b/app/src/main/java/com/faraphel/tasks_valider/database/entities/RelationClassPersonEntity.kt similarity index 52% rename from app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/GroupStudentEntity.kt rename to app/src/main/java/com/faraphel/tasks_valider/database/entities/RelationClassPersonEntity.kt index 5cfcae3..06c024a 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/GroupStudentEntity.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/database/entities/RelationClassPersonEntity.kt @@ -1,4 +1,4 @@ -package com.faraphel.tasks_valider.database.entities._old +package com.faraphel.tasks_valider.database.entities import androidx.room.ColumnInfo import androidx.room.Entity @@ -6,27 +6,31 @@ import androidx.room.ForeignKey import com.faraphel.tasks_valider.database.entities.base.BaseEntity @Entity( - tableName = "group_student", + tableName = RelationClassPersonEntity.TABLE_NAME, primaryKeys = [ - "group_id", - "student_id" + "student_id", + "class_id", ], foreignKeys = [ ForeignKey( - entity = GroupEntity::class, - parentColumns = ["id"], - childColumns = ["group_id"], - onDelete = ForeignKey.CASCADE - ), - ForeignKey( - entity = StudentEntity::class, + entity = PersonEntity::class, parentColumns = ["id"], childColumns = ["student_id"], onDelete = ForeignKey.CASCADE - ) + ), + ForeignKey( + entity = ClassEntity::class, + parentColumns = ["id"], + childColumns = ["class_id"], + onDelete = ForeignKey.CASCADE + ), ] ) -data class GroupStudentEntity( - @ColumnInfo("group_id", index = true) val groupId: Long, +data class RelationClassPersonEntity ( @ColumnInfo("student_id", index = true) val studentId: Long, -) : BaseEntity() + @ColumnInfo("class_id", index = true) val classId: Long, +) : BaseEntity() { + companion object { + const val TABLE_NAME = "relation_class_person" + } +} diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/entities/SessionEntity.kt b/app/src/main/java/com/faraphel/tasks_valider/database/entities/SessionEntity.kt index 1e12419..0f2edf4 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/database/entities/SessionEntity.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/database/entities/SessionEntity.kt @@ -8,7 +8,7 @@ import com.faraphel.tasks_valider.database.entities.base.BaseEntity import java.time.Instant @Entity( - tableName = "sessions", + tableName = SessionEntity.TABLE_NAME, foreignKeys = [ ForeignKey( entity = ClassEntity::class, @@ -23,5 +23,9 @@ data class SessionEntity ( @ColumnInfo("name") val name: String? = null, @ColumnInfo("start") val start: Instant, - @ColumnInfo("class_id") val classId: Long? = null, -) : BaseEntity() + @ColumnInfo("class_id", index = true) val classId: Long? = null, +) : BaseEntity() { + companion object { + const val TABLE_NAME = "sessions" + } +} diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/entities/SubjectEntity.kt b/app/src/main/java/com/faraphel/tasks_valider/database/entities/SubjectEntity.kt index bd4122d..ee8aa83 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/database/entities/SubjectEntity.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/database/entities/SubjectEntity.kt @@ -5,8 +5,12 @@ import androidx.room.Entity import androidx.room.PrimaryKey import com.faraphel.tasks_valider.database.entities.base.BaseEntity -@Entity(tableName = "subjects") +@Entity(tableName = SubjectEntity.TABLE_NAME) data class SubjectEntity ( @ColumnInfo("id") @PrimaryKey(autoGenerate = true) val id: Long = 0, @ColumnInfo("name") val name: String, -) : BaseEntity() +) : BaseEntity() { + companion object { + const val TABLE_NAME = "subjects" + } +} diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/entities/TaskEntity.kt b/app/src/main/java/com/faraphel/tasks_valider/database/entities/TaskEntity.kt index 42b9bf6..4548c36 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/database/entities/TaskEntity.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/database/entities/TaskEntity.kt @@ -7,7 +7,7 @@ import androidx.room.PrimaryKey import com.faraphel.tasks_valider.database.entities.base.BaseEntity @Entity( - tableName = "tasks", + tableName = TaskEntity.TABLE_NAME, foreignKeys = [ ForeignKey( entity = SubjectEntity::class, @@ -22,5 +22,9 @@ data class TaskEntity ( @ColumnInfo("title") val title: String, @ColumnInfo("description") val description: String? = null, - @ColumnInfo("subject_id") val subjectId: Long, -) : BaseEntity() + @ColumnInfo("subject_id", index = true) val subjectId: Long, +) : BaseEntity() { + companion object { + const val TABLE_NAME = "tasks" + } +} diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/entities/TeacherEntity.kt b/app/src/main/java/com/faraphel/tasks_valider/database/entities/TeacherEntity.kt deleted file mode 100644 index cc3512d..0000000 --- a/app/src/main/java/com/faraphel/tasks_valider/database/entities/TeacherEntity.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.faraphel.tasks_valider.database.entities - -import androidx.room.ColumnInfo -import androidx.room.Entity -import androidx.room.PrimaryKey -import com.faraphel.tasks_valider.database.entities.base.BaseEntity - - -// TODO(Faraphel): is this class really required ? -@Entity(tableName = "teachers") -data class TeacherEntity ( - @ColumnInfo("id") @PrimaryKey(autoGenerate = true) val id: Long = 0, - @ColumnInfo("first_name") val firstName: String, - @ColumnInfo("last_name") val lastName: String, -) : BaseEntity() diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/entities/ValidationEntity.kt b/app/src/main/java/com/faraphel/tasks_valider/database/entities/ValidationEntity.kt index 8219ec8..467f5df 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/database/entities/ValidationEntity.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/database/entities/ValidationEntity.kt @@ -7,37 +7,42 @@ import com.faraphel.tasks_valider.database.entities.base.BaseEntity import java.time.Instant @Entity( - tableName = "validations", + tableName = ValidationEntity.TABLE_NAME, primaryKeys = [ "teacher_id", - "task_id", "student_id", + "task_id", ], foreignKeys = [ ForeignKey( - entity = TeacherEntity::class, + entity = PersonEntity::class, parentColumns = ["id"], childColumns = ["teacher_id"], onDelete = ForeignKey.CASCADE ), + ForeignKey( + entity = PersonEntity::class, + parentColumns = ["id"], + childColumns = ["student_id"], + onDelete = ForeignKey.CASCADE + ), ForeignKey( entity = TaskEntity::class, parentColumns = ["id"], childColumns = ["task_id"], onDelete = ForeignKey.CASCADE ), - ForeignKey( - entity = StudentEntity::class, - parentColumns = ["id"], - childColumns = ["student_id"], - onDelete = ForeignKey.CASCADE - ), ] ) data class ValidationEntity ( @ColumnInfo("date") val date: Instant, - @ColumnInfo("teacher_id") val teacherId: Long, - @ColumnInfo("task_id") val taskId: Long, - @ColumnInfo("student_id") val studentId: Long, -) : BaseEntity() + @ColumnInfo("teacher_id", index = true) val teacherId: Long, + @ColumnInfo("student_id", index = true) val studentId: Long, + @ColumnInfo("task_id", index = true) val taskId: Long, +) : BaseEntity() { + companion object { + const val TABLE_NAME = "validations" + } +} + diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/GroupEntity.kt b/app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/GroupEntity.kt deleted file mode 100644 index 1caf2b0..0000000 --- a/app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/GroupEntity.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.faraphel.tasks_valider.database.entities._old - -import androidx.room.ColumnInfo -import androidx.room.Entity -import androidx.room.PrimaryKey -import com.faraphel.tasks_valider.database.entities.base.BaseEntity - - -// TODO(Faraphel): should be renamed to TeamEntity -@Entity(tableName = "groups") -data class GroupEntity ( - @ColumnInfo("id") @PrimaryKey(autoGenerate = true) val id: Long = 0, - @ColumnInfo("name") val name: String? = null, -) : BaseEntity() diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/PersonEntity.kt b/app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/PersonEntity.kt deleted file mode 100644 index 29c523c..0000000 --- a/app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/PersonEntity.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.faraphel.tasks_valider.database.entities._old - -import java.util.Locale -import com.faraphel.tasks_valider.database.entities.base.BaseEntity - - -open class PersonEntity ( - open val id: Long = 0, - open val firstName: String, - open val lastName: String, -) : BaseEntity() { - /** - Get the full name of the person - */ - val fullName: String - get() { - return "${firstName.capitalize(Locale.ROOT)} ${lastName.uppercase()}" - } -} diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/StudentEntity.kt b/app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/StudentEntity.kt deleted file mode 100644 index bddac4c..0000000 --- a/app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/StudentEntity.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.faraphel.tasks_valider.database.entities._old - -import androidx.room.ColumnInfo -import androidx.room.Entity -import androidx.room.PrimaryKey - -@Entity(tableName = "students") -class StudentEntity( - @ColumnInfo("id") @PrimaryKey(autoGenerate = true) override val id: Long = 0, - @ColumnInfo("first_name") override val firstName: String, - @ColumnInfo("last_name") override val lastName: String -) : PersonEntity(id, firstName, lastName) diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/TaskEntity.kt b/app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/TaskEntity.kt deleted file mode 100644 index a64c3fa..0000000 --- a/app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/TaskEntity.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.faraphel.tasks_valider.database.entities._old - -import androidx.room.ColumnInfo -import androidx.room.Entity -import androidx.room.PrimaryKey -import com.faraphel.tasks_valider.database.entities.base.BaseEntity - -@Entity(tableName = "tasks") -data class TaskEntity ( - @ColumnInfo("id") @PrimaryKey(autoGenerate = true) val id: Long = 0, - @ColumnInfo("title") val title: String, - @ColumnInfo("description") val description: String, -) : BaseEntity() diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/TaskGroupEntity.kt b/app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/TaskGroupEntity.kt deleted file mode 100644 index fa56012..0000000 --- a/app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/TaskGroupEntity.kt +++ /dev/null @@ -1,44 +0,0 @@ -package com.faraphel.tasks_valider.database.entities._old - -import androidx.room.ColumnInfo -import androidx.room.Entity -import androidx.room.ForeignKey -import com.faraphel.tasks_valider.database.entities.base.BaseEntity -import java.time.Instant - - -@Entity( - tableName = "task_group", - primaryKeys = [ - "task_id", - "group_id" - ], - foreignKeys = [ - ForeignKey( - entity = GroupEntity::class, - parentColumns = ["id"], - childColumns = ["group_id"], - onDelete = ForeignKey.CASCADE - ), - ForeignKey( - entity = TaskEntity::class, - parentColumns = ["id"], - childColumns = ["task_id"], - onDelete = ForeignKey.CASCADE - ), - ForeignKey( - entity = TeacherEntity::class, - parentColumns = ["id"], - childColumns = ["approval_teacher_id"], - onDelete = ForeignKey.CASCADE - ), - ] -) -data class TaskGroupEntity ( - @ColumnInfo("task_id") val taskId: Long, - @ColumnInfo("group_id") val groupId: Long, - @ColumnInfo("approval_status") var approvalStatus: Boolean = false, - @ColumnInfo("approval_teacher_id") val approvalTeacherId: Long? = null, - @ColumnInfo("approval_time") val approvalTime: Instant? = null -) : BaseEntity() - diff --git a/app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/TeacherEntity.kt b/app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/TeacherEntity.kt deleted file mode 100644 index e7e730f..0000000 --- a/app/src/main/java/com/faraphel/tasks_valider/database/entities/_old/TeacherEntity.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.faraphel.tasks_valider.database.entities._old - -import androidx.room.ColumnInfo -import androidx.room.Entity -import androidx.room.PrimaryKey - -@Entity(tableName = "teachers") -class TeacherEntity( - @ColumnInfo("id") @PrimaryKey(autoGenerate = true) override val id: Long = 0, - @ColumnInfo("first_name") override val firstName: String, - @ColumnInfo("last_name") override val lastName: String -) : PersonEntity(id, firstName, lastName) diff --git a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/internet/client/screen.kt b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/internet/client/screen.kt index 348c674..2cc75b7 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/internet/client/screen.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/internet/client/screen.kt @@ -16,7 +16,7 @@ import com.faraphel.tasks_valider.connectivity.task.TaskClient import com.faraphel.tasks_valider.ui.screen.communication.DEFAULT_SERVER_ADDRESS import com.faraphel.tasks_valider.ui.screen.communication.DEFAULT_SERVER_PORT import com.faraphel.tasks_valider.ui.screen.communication.RANGE_SERVER_PORT -import com.faraphel.tasks_valider.ui.screen.task.TaskGroupScreen +import com.faraphel.tasks_valider.ui.screen.task.TaskSessionScreen @Composable @@ -24,7 +24,7 @@ fun CommunicationInternetClientScreen(activity: Activity) { val client = remember { mutableStateOf(null) } if (client.value == null) CommunicationInternetClientContent(client) - else TaskGroupScreen(activity, client.value!!) + else TaskSessionScreen(activity, client.value!!) } diff --git a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/internet/server/screen.kt b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/internet/server/screen.kt index e0a7649..cdf8f13 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/internet/server/screen.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/internet/server/screen.kt @@ -21,7 +21,7 @@ import com.faraphel.tasks_valider.connectivity.task.TaskServer import com.faraphel.tasks_valider.database.TaskDatabase import com.faraphel.tasks_valider.ui.screen.communication.DEFAULT_SERVER_PORT import com.faraphel.tasks_valider.ui.screen.communication.RANGE_SERVER_PORT -import com.faraphel.tasks_valider.ui.screen.task.TaskGroupScreen +import com.faraphel.tasks_valider.ui.screen.task.TaskSessionScreen @Composable @@ -31,7 +31,7 @@ fun CommunicationInternetServerScreen(activity: Activity) { // if the server is not created, prompt the user for the server configuration if (client.value == null) CommunicationInternetServerContent(activity, client) // else, go to the base tasks screen - else TaskGroupScreen(activity, client.value!!) + else TaskSessionScreen(activity, client.value!!) } diff --git a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/wifiP2p/server/screen.kt b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/wifiP2p/server/screen.kt index bcb92d3..f608bc0 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/wifiP2p/server/screen.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/communication/wifiP2p/server/screen.kt @@ -22,7 +22,7 @@ import com.faraphel.tasks_valider.connectivity.task.TaskServer import com.faraphel.tasks_valider.database.TaskDatabase import com.faraphel.tasks_valider.ui.screen.communication.DEFAULT_SERVER_PORT import com.faraphel.tasks_valider.ui.screen.communication.RANGE_SERVER_PORT -import com.faraphel.tasks_valider.ui.screen.task.TaskGroupScreen +import com.faraphel.tasks_valider.ui.screen.task.TaskSessionScreen @Composable @@ -32,7 +32,7 @@ fun CommunicationWifiP2pServerScreen(activity: Activity, bwfManager: BwfManager) // if the server is not created, prompt the user for the server configuration if (client.value == null) CommunicationWifiP2pServerContent(activity, bwfManager, client) // else, go to the base tasks screen - else TaskGroupScreen(activity, client.value!!) + else TaskSessionScreen(activity, client.value!!) } diff --git a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/task/screen.kt b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/task/screen.kt index 47183b6..b14c204 100644 --- a/app/src/main/java/com/faraphel/tasks_valider/ui/screen/task/screen.kt +++ b/app/src/main/java/com/faraphel/tasks_valider/ui/screen/task/screen.kt @@ -1,28 +1,22 @@ package com.faraphel.tasks_valider.ui.screen.task import android.app.Activity -import android.widget.Toast import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.MutableState -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember import com.faraphel.tasks_valider.connectivity.task.TaskClient -import com.faraphel.tasks_valider.database.entities._old.TaskGroupEntity -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken - - -val jsonParser = Gson() /** - * This screen let the user decide which student team he wants to interact with + * This screen represent a session + * @param activity the android activity * @param client an HTTP client that can communicate with the server */ @Composable -fun TaskGroupScreen(activity: Activity, client: TaskClient) { - val groups = remember { mutableStateOf?>(null) } +fun TaskSessionScreen(activity: Activity, client: TaskClient) { + Text("WIP : Session Screen") + + /* + val students = remember { mutableStateOf?>(null) } // title Text(text = "Task Group") @@ -37,9 +31,11 @@ fun TaskGroupScreen(activity: Activity, client: TaskClient) { for (group in groups.value!!) { Text(text = group.toString()) } + */ } +/* fun refreshGroups(activity: Activity, client: TaskClient, groups: MutableState?>) { // try to obtain the list of groups val response = client.get("entities/group") @@ -55,4 +51,5 @@ fun refreshGroups(activity: Activity, client: TaskClient, groups: MutableState>(){} ) -} \ No newline at end of file +} +*/ \ No newline at end of file diff --git a/app/src/main/java/com/faraphel/tasks_valider/ui/widgets/task/Group.kt b/app/src/main/java/com/faraphel/tasks_valider/ui/widgets/task/Group.kt deleted file mode 100644 index 50c8e81..0000000 --- a/app/src/main/java/com/faraphel/tasks_valider/ui/widgets/task/Group.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.faraphel.tasks_valider.ui.widgets.task - -import androidx.compose.foundation.layout.Column -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import com.faraphel.tasks_valider.database.entities._old.GroupEntity - -@Composable -fun WidgetGroup(group: GroupEntity) { - // TODO - Column { - Text(text = group.name!!) - - // group.tasks.forEach { task -> - // WidgetTask(task) - // } - } -} diff --git a/app/src/main/java/com/faraphel/tasks_valider/ui/widgets/task/Task.kt b/app/src/main/java/com/faraphel/tasks_valider/ui/widgets/task/Task.kt deleted file mode 100644 index b0a85f6..0000000 --- a/app/src/main/java/com/faraphel/tasks_valider/ui/widgets/task/Task.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.faraphel.tasks_valider.ui.widgets.task - -import androidx.compose.foundation.layout.Column -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import com.faraphel.tasks_valider.database.entities._old.TaskEntity - -@Composable -fun WidgetTask(task: TaskEntity) { - // task information - Column { - Text(text = task.title) - Text(text = task.description) - } -} diff --git a/app/src/main/java/com/faraphel/tasks_valider/ui/widgets/task/TaskGroup.kt b/app/src/main/java/com/faraphel/tasks_valider/ui/widgets/task/TaskGroup.kt deleted file mode 100644 index bdd7439..0000000 --- a/app/src/main/java/com/faraphel/tasks_valider/ui/widgets/task/TaskGroup.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.faraphel.tasks_valider.ui.widgets.task - -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.width -import androidx.compose.material3.Checkbox -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp -import com.faraphel.tasks_valider.database.TaskDatabase -import com.faraphel.tasks_valider.database.entities._old.TaskGroupEntity - - -@Composable -fun WidgetTaskStudent(database: TaskDatabase, taskStudent: TaskGroupEntity) { - val teacherDao = database.teacherDao() - - Column { - // row for this task - Row { - // task information - // TODO: WidgetTask(task = taskStudent.task) - - // align the other columns to the right - Spacer(modifier = Modifier.weight(1f)) - - // task status - Checkbox( - checked = taskStudent.approvalStatus, - onCheckedChange = { status -> taskStudent.approvalStatus = status } - ) - } - - // if the task has been approved - if (taskStudent.approvalStatus) { - Row ( - modifier = Modifier.fillMaxSize(), - horizontalArrangement = Arrangement.Center - ) { - // teacher who approved the task - Text(text = teacherDao.getById(taskStudent.approvalTeacherId!!).fullName) - - // align the other columns to the right - Spacer(modifier = Modifier.width(16.dp)) - - // date of approval - Text(text = taskStudent.approvalTime.toString()) - } - } - } -}