From 7d73179d5f442a16d4f87187d1b1bd51f0e48b6e Mon Sep 17 00:00:00 2001
From: "Jo G." <1451036+jo-elimu@users.noreply.github.com>
Date: Wed, 15 Jan 2025 23:50:40 +0700
Subject: [PATCH] refactor: javax.servlet --> jakarta.servlet
#1691
---
pom.xml | 54 +++--
.../ai/elimu/dao/jpa/ApplicationDaoJpa.java | 2 +-
.../dao/jpa/ApplicationVersionDaoJpa.java | 2 +-
.../java/ai/elimu/dao/jpa/AudioDaoJpa.java | 2 +-
.../dao/jpa/AudioPeerReviewEventDaoJpa.java | 2 +-
.../ai/elimu/dao/jpa/ContributorDaoJpa.java | 2 +-
.../ai/elimu/dao/jpa/DbMigrationDaoJpa.java | 2 +-
.../java/ai/elimu/dao/jpa/DeviceDaoJpa.java | 2 +-
.../java/ai/elimu/dao/jpa/EmojiDaoJpa.java | 2 +-
.../java/ai/elimu/dao/jpa/GenericDaoJpa.java | 4 +-
.../java/ai/elimu/dao/jpa/ImageDaoJpa.java | 2 +-
.../java/ai/elimu/dao/jpa/LetterDaoJpa.java | 2 +-
.../dao/jpa/LetterLearningEventDaoJpa.java | 2 +-
.../java/ai/elimu/dao/jpa/NumberDaoJpa.java | 2 +-
.../java/ai/elimu/dao/jpa/SoundDaoJpa.java | 2 +-
.../ai/elimu/dao/jpa/StoryBookDaoJpa.java | 2 +-
.../dao/jpa/StoryBookLearningEventDaoJpa.java | 2 +-
.../java/ai/elimu/dao/jpa/SyllableDaoJpa.java | 2 +-
.../java/ai/elimu/dao/jpa/VideoDaoJpa.java | 2 +-
.../dao/jpa/VideoLearningEventDaoJpa.java | 2 +-
.../java/ai/elimu/dao/jpa/WordDaoJpa.java | 4 +-
.../dao/jpa/WordLearningEventDaoJpa.java | 2 +-
src/main/java/ai/elimu/model/BaseEntity.java | 8 +-
src/main/java/ai/elimu/model/DbMigration.java | 8 +-
src/main/java/ai/elimu/model/Device.java | 8 +-
.../ai/elimu/model/admin/Application.java | 12 +-
.../elimu/model/admin/ApplicationVersion.java | 12 +-
.../elimu/model/analytics/LearningEvent.java | 14 +-
.../model/analytics/LetterLearningEvent.java | 4 +-
.../analytics/StoryBookLearningEvent.java | 4 +-
.../model/analytics/VideoLearningEvent.java | 4 +-
.../model/analytics/WordLearningEvent.java | 4 +-
.../java/ai/elimu/model/content/Content.java | 10 +-
.../java/ai/elimu/model/content/Emoji.java | 12 +-
.../java/ai/elimu/model/content/Letter.java | 4 +-
.../ai/elimu/model/content/LetterSound.java | 8 +-
.../java/ai/elimu/model/content/Number.java | 8 +-
.../java/ai/elimu/model/content/Sound.java | 10 +-
.../ai/elimu/model/content/StoryBook.java | 10 +-
.../elimu/model/content/StoryBookChapter.java | 4 +-
.../model/content/StoryBookParagraph.java | 12 +-
.../java/ai/elimu/model/content/Syllable.java | 8 +-
.../java/ai/elimu/model/content/Word.java | 14 +-
.../elimu/model/content/multimedia/Audio.java | 12 +-
.../elimu/model/content/multimedia/Image.java | 14 +-
.../model/content/multimedia/Multimedia.java | 18 +-
.../elimu/model/content/multimedia/Video.java | 10 +-
.../contributor/AudioContributionEvent.java | 2 +-
.../contributor/AudioPeerReviewEvent.java | 2 +-
.../model/contributor/ContributionEvent.java | 2 +-
.../elimu/model/contributor/Contributor.java | 16 +-
.../contributor/ImageContributionEvent.java | 2 +-
.../contributor/LetterContributionEvent.java | 4 +-
.../LetterSoundContributionEvent.java | 4 +-
.../LetterSoundPeerReviewEvent.java | 2 +-
.../contributor/NumberContributionEvent.java | 2 +-
.../contributor/NumberPeerReviewEvent.java | 2 +-
.../model/contributor/PeerReviewEvent.java | 10 +-
.../contributor/SoundContributionEvent.java | 4 +-
.../StoryBookContributionEvent.java | 6 +-
.../contributor/StoryBookPeerReviewEvent.java | 4 +-
.../contributor/WordContributionEvent.java | 4 +-
.../contributor/WordPeerReviewEvent.java | 2 +-
.../LetterAssessmentEventsRestController.java | 2 +-
.../LetterLearningEventsRestController.java | 2 +-
...tterSoundLearningEventsRestController.java | 2 +-
...StoryBookLearningEventsRestController.java | 2 +-
.../VideoLearningEventsRestController.java | 2 +-
.../WordAssessmentEventsRestController.java | 2 +-
.../WordLearningEventsRestController.java | 2 +-
.../ApplicationsRestController.java | 2 +-
.../rest/v2/content/AudiosRestController.java | 2 +-
.../rest/v2/content/EmojisRestController.java | 2 +-
.../rest/v2/content/ImagesRestController.java | 2 +-
.../rest/v2/content/VideosRestController.java | 2 +-
.../java/ai/elimu/web/SignOnController.java | 2 +-
.../ai/elimu/web/SignOnControllerDiscord.java | 2 +-
.../ai/elimu/web/SignOnControllerGitHub.java | 2 +-
.../elimu/web/SignOnControllerSelenium.java | 2 +-
.../ai/elimu/web/SignOnControllerWeb3.java | 4 +-
.../ApplicationCreateController.java | 2 +-
.../ApplicationEditController.java | 2 +-
.../ApplicationVersionCreateController.java | 6 +-
...yBookLearningEventCsvExportController.java | 2 +-
...VideoLearningEventCsvExportController.java | 2 +-
.../web/content/MainContentController.java | 4 +-
.../contributor/AddEmailController.java | 2 +-
.../contributor/EditMotivationController.java | 2 +-
.../contributor/EditNameController.java | 2 +-
.../emoji/EmojiCsvExportController.java | 2 +-
.../content/emoji/EmojiEditController.java | 2 +-
.../letter/LetterCreateController.java | 4 +-
.../letter/LetterCsvExportController.java | 2 +-
.../content/letter/LetterEditController.java | 4 +-
.../LetterSoundCreateController.java | 4 +-
.../LetterSoundCsvExportController.java | 2 +-
.../LetterSoundEditController.java | 4 +-
.../LetterSoundPeerReviewsController.java | 2 +-
.../audio/AudioCreateController.java | 6 +-
.../audio/AudioCsvExportController.java | 2 +-
.../multimedia/audio/AudioEditController.java | 6 +-
.../image/ImageCreateController.java | 6 +-
.../image/ImageCsvExportController.java | 2 +-
.../multimedia/image/ImageEditController.java | 6 +-
.../video/VideoCreateController.java | 4 +-
.../video/VideoCsvExportController.java | 2 +-
.../multimedia/video/VideoEditController.java | 4 +-
.../number/NumberCreateController.java | 4 +-
.../number/NumberCsvExportController.java | 2 +-
.../content/number/NumberEditController.java | 4 +-
.../number/NumberPeerReviewsController.java | 2 +-
.../AudioPeerReviewEventCreateController.java | 2 +-
...rSoundPeerReviewEventCreateController.java | 2 +-
...NumberPeerReviewEventCreateController.java | 2 +-
...ryBookPeerReviewEventCreateController.java | 2 +-
.../WordPeerReviewEventCreateController.java | 2 +-
.../content/sound/SoundCreateController.java | 4 +-
.../sound/SoundCsvExportController.java | 2 +-
.../content/sound/SoundEditController.java | 4 +-
.../storybook/StoryBookCreateController.java | 4 +-
.../StoryBookCreateFromEPubController.java | 6 +-
.../StoryBookCsvExportController.java | 2 +-
.../storybook/StoryBookEditController.java | 4 +-
.../StoryBookPeerReviewsController.java | 2 +-
.../StoryBookChapterCreateController.java | 2 +-
.../StoryBookChapterDeleteController.java | 2 +-
.../StoryBookParagraphCreateController.java | 4 +-
.../StoryBookParagraphDeleteController.java | 2 +-
.../StoryBookParagraphEditController.java | 4 +-
.../syllable/SyllableCsvExportController.java | 2 +-
.../content/word/WordCreateController.java | 4 +-
.../content/word/WordCsvExportController.java | 2 +-
.../web/content/word/WordEditController.java | 4 +-
.../word/WordPeerReviewsController.java | 2 +-
.../EnvironmentContextLoaderListener.java | 6 +-
.../ContributorCsvExportController.java | 2 +-
.../ai/elimu/web/download/ApkController.java | 4 +-
.../elimu/web/download/AudioController.java | 2 +-
.../elimu/web/download/ImageController.java | 2 +-
.../elimu/web/download/VideoController.java | 2 +-
.../web/servlet/CustomDispatcherServlet.java | 4 +-
.../CustomSimpleMappingExceptionResolver.java | 2 +-
src/main/java/ai/elimu/web/tags/AsideTag.java | 4 +-
.../java/ai/elimu/web/tags/BannerTag.java | 4 +-
.../java/ai/elimu/web/tags/GetAsideTag.java | 6 +-
.../java/ai/elimu/web/tags/GetBannerTag.java | 6 +-
.../java/ai/elimu/web/tags/GetSectionTag.java | 6 +-
.../java/ai/elimu/web/tags/GetTitleTag.java | 6 +-
.../java/ai/elimu/web/tags/SectionTag.java | 4 +-
src/main/java/ai/elimu/web/tags/TitleTag.java | 4 +-
.../resources/META-INF/jpa-persistence.xml | 1 +
.../resources/META-INF/jpa-schema-export.sql | 184 +++++++++---------
src/main/resources/jdbc_PROD.properties | 2 +-
src/main/resources/jdbc_TEST.properties | 2 +-
src/main/webapp/WEB-INF/jsp/taglibs.jsp | 6 +-
.../WEB-INF/spring/applicationContext.xml | 2 +-
src/main/webapp/WEB-INF/web.xml | 6 +-
...VideoLearningEventsRestControllerTest.java | 2 +-
158 files changed, 435 insertions(+), 436 deletions(-)
diff --git a/pom.xml b/pom.xml
index b6079d923..075b1fe59 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,10 +10,10 @@
17
UTF-8
2.0.74
- 5.6.15.Final
- 10.0.22
- 5.3.18
- 5.6.2
+ 6.1.7.Final
+ 11.0.24
+ 6.0.8
+ 6.0.5
3.1.2
@@ -370,11 +370,6 @@
-
- commons-fileupload
- commons-fileupload
- 1.4
-
commons-lang
commons-lang
@@ -480,28 +475,27 @@
- javax.servlet
- jstl
- 1.2
+ jakarta.servlet.jsp.jstl
+ jakarta.servlet.jsp.jstl-api
+ 3.0.0
+
+
+ org.glassfish.web
+ jakarta.servlet.jsp.jstl
+ 3.0.1
- org.hibernate
+ org.hibernate.orm
hibernate-core
${hibernate.version}
- org.hibernate
- hibernate-entitymanager
- ${hibernate.version}
-
-
- org.hibernate
- hibernate-tools
+ org.hibernate.orm
+ hibernate-ant
${hibernate.version}
-
org.hibernate.validator
hibernate-validator
@@ -515,9 +509,9 @@
- javax.persistence
- javax.persistence-api
- 2.2
+ jakarta.persistence
+ jakarta.persistence-api
+ 3.0.0
javax.transaction
@@ -542,15 +536,15 @@
- javax.servlet
- javax.servlet-api
- 4.0.1
+ jakarta.servlet
+ jakarta.servlet-api
+ 5.0.0
provided
- javax.servlet.jsp
- javax.servlet.jsp-api
- 2.3.3
+ jakarta.servlet.jsp
+ jakarta.servlet.jsp-api
+ 3.0.0
provided
diff --git a/src/main/java/ai/elimu/dao/jpa/ApplicationDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/ApplicationDaoJpa.java
index 2f42f5e80..a201539c0 100644
--- a/src/main/java/ai/elimu/dao/jpa/ApplicationDaoJpa.java
+++ b/src/main/java/ai/elimu/dao/jpa/ApplicationDaoJpa.java
@@ -1,7 +1,7 @@
package ai.elimu.dao.jpa;
import java.util.List;
-import javax.persistence.NoResultException;
+import jakarta.persistence.NoResultException;
import ai.elimu.dao.ApplicationDao;
import ai.elimu.model.admin.Application;
diff --git a/src/main/java/ai/elimu/dao/jpa/ApplicationVersionDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/ApplicationVersionDaoJpa.java
index 5e9a48b57..8b3820b25 100644
--- a/src/main/java/ai/elimu/dao/jpa/ApplicationVersionDaoJpa.java
+++ b/src/main/java/ai/elimu/dao/jpa/ApplicationVersionDaoJpa.java
@@ -1,7 +1,7 @@
package ai.elimu.dao.jpa;
import java.util.List;
-import javax.persistence.NoResultException;
+import jakarta.persistence.NoResultException;
import ai.elimu.dao.ApplicationVersionDao;
import ai.elimu.model.admin.Application;
import ai.elimu.model.admin.ApplicationVersion;
diff --git a/src/main/java/ai/elimu/dao/jpa/AudioDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/AudioDaoJpa.java
index 7cf3ef27f..3865056c3 100644
--- a/src/main/java/ai/elimu/dao/jpa/AudioDaoJpa.java
+++ b/src/main/java/ai/elimu/dao/jpa/AudioDaoJpa.java
@@ -2,7 +2,7 @@
import java.util.List;
-import javax.persistence.NoResultException;
+import jakarta.persistence.NoResultException;
import ai.elimu.dao.AudioDao;
import ai.elimu.model.content.StoryBookParagraph;
import ai.elimu.model.content.Word;
diff --git a/src/main/java/ai/elimu/dao/jpa/AudioPeerReviewEventDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/AudioPeerReviewEventDaoJpa.java
index de9208b4a..b69fcd033 100644
--- a/src/main/java/ai/elimu/dao/jpa/AudioPeerReviewEventDaoJpa.java
+++ b/src/main/java/ai/elimu/dao/jpa/AudioPeerReviewEventDaoJpa.java
@@ -6,7 +6,7 @@
import ai.elimu.model.contributor.AudioPeerReviewEvent;
import ai.elimu.model.contributor.Contributor;
import java.util.List;
-import javax.persistence.NoResultException;
+import jakarta.persistence.NoResultException;
import org.springframework.dao.DataAccessException;
public class AudioPeerReviewEventDaoJpa extends GenericDaoJpa implements AudioPeerReviewEventDao {
diff --git a/src/main/java/ai/elimu/dao/jpa/ContributorDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/ContributorDaoJpa.java
index 098249a03..0b43d5f69 100644
--- a/src/main/java/ai/elimu/dao/jpa/ContributorDaoJpa.java
+++ b/src/main/java/ai/elimu/dao/jpa/ContributorDaoJpa.java
@@ -2,7 +2,7 @@
import java.util.Calendar;
import java.util.List;
-import javax.persistence.NoResultException;
+import jakarta.persistence.NoResultException;
import ai.elimu.dao.ContributorDao;
import org.springframework.dao.DataAccessException;
diff --git a/src/main/java/ai/elimu/dao/jpa/DbMigrationDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/DbMigrationDaoJpa.java
index 26f28efb0..2d23b7c91 100644
--- a/src/main/java/ai/elimu/dao/jpa/DbMigrationDaoJpa.java
+++ b/src/main/java/ai/elimu/dao/jpa/DbMigrationDaoJpa.java
@@ -1,7 +1,7 @@
package ai.elimu.dao.jpa;
import java.util.List;
-import javax.persistence.NoResultException;
+import jakarta.persistence.NoResultException;
import ai.elimu.dao.DbMigrationDao;
import org.springframework.dao.DataAccessException;
diff --git a/src/main/java/ai/elimu/dao/jpa/DeviceDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/DeviceDaoJpa.java
index 24974ec5d..b8f7e28af 100644
--- a/src/main/java/ai/elimu/dao/jpa/DeviceDaoJpa.java
+++ b/src/main/java/ai/elimu/dao/jpa/DeviceDaoJpa.java
@@ -1,6 +1,6 @@
package ai.elimu.dao.jpa;
-import javax.persistence.NoResultException;
+import jakarta.persistence.NoResultException;
import ai.elimu.dao.DeviceDao;
import org.springframework.dao.DataAccessException;
diff --git a/src/main/java/ai/elimu/dao/jpa/EmojiDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/EmojiDaoJpa.java
index be58c4aca..57cf62acb 100644
--- a/src/main/java/ai/elimu/dao/jpa/EmojiDaoJpa.java
+++ b/src/main/java/ai/elimu/dao/jpa/EmojiDaoJpa.java
@@ -1,7 +1,7 @@
package ai.elimu.dao.jpa;
import java.util.List;
-import javax.persistence.NoResultException;
+import jakarta.persistence.NoResultException;
import ai.elimu.dao.EmojiDao;
import org.springframework.dao.DataAccessException;
diff --git a/src/main/java/ai/elimu/dao/jpa/GenericDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/GenericDaoJpa.java
index cdbb62538..ab3f20e7a 100644
--- a/src/main/java/ai/elimu/dao/jpa/GenericDaoJpa.java
+++ b/src/main/java/ai/elimu/dao/jpa/GenericDaoJpa.java
@@ -4,8 +4,8 @@
import java.lang.reflect.Type;
import java.util.List;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Repository;
diff --git a/src/main/java/ai/elimu/dao/jpa/ImageDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/ImageDaoJpa.java
index 8c3a5cba7..25a8eb811 100644
--- a/src/main/java/ai/elimu/dao/jpa/ImageDaoJpa.java
+++ b/src/main/java/ai/elimu/dao/jpa/ImageDaoJpa.java
@@ -2,7 +2,7 @@
import java.util.List;
-import javax.persistence.NoResultException;
+import jakarta.persistence.NoResultException;
import org.springframework.dao.DataAccessException;
diff --git a/src/main/java/ai/elimu/dao/jpa/LetterDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/LetterDaoJpa.java
index db391ef9e..c27f60ca6 100644
--- a/src/main/java/ai/elimu/dao/jpa/LetterDaoJpa.java
+++ b/src/main/java/ai/elimu/dao/jpa/LetterDaoJpa.java
@@ -1,7 +1,7 @@
package ai.elimu.dao.jpa;
import java.util.List;
-import javax.persistence.NoResultException;
+import jakarta.persistence.NoResultException;
import ai.elimu.dao.LetterDao;
import org.springframework.dao.DataAccessException;
diff --git a/src/main/java/ai/elimu/dao/jpa/LetterLearningEventDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/LetterLearningEventDaoJpa.java
index f26ff2b27..8b89e9edd 100644
--- a/src/main/java/ai/elimu/dao/jpa/LetterLearningEventDaoJpa.java
+++ b/src/main/java/ai/elimu/dao/jpa/LetterLearningEventDaoJpa.java
@@ -5,7 +5,7 @@
import ai.elimu.model.analytics.LetterLearningEvent;
import ai.elimu.model.content.Letter;
import java.util.Calendar;
-import javax.persistence.NoResultException;
+import jakarta.persistence.NoResultException;
import org.springframework.dao.DataAccessException;
public class LetterLearningEventDaoJpa extends GenericDaoJpa implements LetterLearningEventDao {
diff --git a/src/main/java/ai/elimu/dao/jpa/NumberDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/NumberDaoJpa.java
index efca11db8..7a401c9f3 100644
--- a/src/main/java/ai/elimu/dao/jpa/NumberDaoJpa.java
+++ b/src/main/java/ai/elimu/dao/jpa/NumberDaoJpa.java
@@ -1,7 +1,7 @@
package ai.elimu.dao.jpa;
import java.util.List;
-import javax.persistence.NoResultException;
+import jakarta.persistence.NoResultException;
import org.springframework.dao.DataAccessException;
diff --git a/src/main/java/ai/elimu/dao/jpa/SoundDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/SoundDaoJpa.java
index cbd7bb172..28abf04f2 100644
--- a/src/main/java/ai/elimu/dao/jpa/SoundDaoJpa.java
+++ b/src/main/java/ai/elimu/dao/jpa/SoundDaoJpa.java
@@ -1,7 +1,7 @@
package ai.elimu.dao.jpa;
import java.util.List;
-import javax.persistence.NoResultException;
+import jakarta.persistence.NoResultException;
import ai.elimu.model.content.Sound;
import org.springframework.dao.DataAccessException;
diff --git a/src/main/java/ai/elimu/dao/jpa/StoryBookDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/StoryBookDaoJpa.java
index 96fd8d67b..e832bc842 100644
--- a/src/main/java/ai/elimu/dao/jpa/StoryBookDaoJpa.java
+++ b/src/main/java/ai/elimu/dao/jpa/StoryBookDaoJpa.java
@@ -1,7 +1,7 @@
package ai.elimu.dao.jpa;
import java.util.List;
-import javax.persistence.NoResultException;
+import jakarta.persistence.NoResultException;
import ai.elimu.dao.StoryBookDao;
import org.springframework.dao.DataAccessException;
diff --git a/src/main/java/ai/elimu/dao/jpa/StoryBookLearningEventDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/StoryBookLearningEventDaoJpa.java
index 9729a2bcb..486e64783 100644
--- a/src/main/java/ai/elimu/dao/jpa/StoryBookLearningEventDaoJpa.java
+++ b/src/main/java/ai/elimu/dao/jpa/StoryBookLearningEventDaoJpa.java
@@ -6,7 +6,7 @@
import ai.elimu.model.content.StoryBook;
import java.util.Calendar;
import java.util.List;
-import javax.persistence.NoResultException;
+import jakarta.persistence.NoResultException;
import org.springframework.dao.DataAccessException;
public class StoryBookLearningEventDaoJpa extends GenericDaoJpa implements StoryBookLearningEventDao {
diff --git a/src/main/java/ai/elimu/dao/jpa/SyllableDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/SyllableDaoJpa.java
index c3a72e4db..1d243fec9 100644
--- a/src/main/java/ai/elimu/dao/jpa/SyllableDaoJpa.java
+++ b/src/main/java/ai/elimu/dao/jpa/SyllableDaoJpa.java
@@ -1,7 +1,7 @@
package ai.elimu.dao.jpa;
import java.util.List;
-import javax.persistence.NoResultException;
+import jakarta.persistence.NoResultException;
import ai.elimu.dao.SyllableDao;
import org.springframework.dao.DataAccessException;
diff --git a/src/main/java/ai/elimu/dao/jpa/VideoDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/VideoDaoJpa.java
index 1d0f7cf64..ac738fe50 100644
--- a/src/main/java/ai/elimu/dao/jpa/VideoDaoJpa.java
+++ b/src/main/java/ai/elimu/dao/jpa/VideoDaoJpa.java
@@ -2,7 +2,7 @@
import java.util.List;
-import javax.persistence.NoResultException;
+import jakarta.persistence.NoResultException;
import ai.elimu.dao.VideoDao;
import org.springframework.dao.DataAccessException;
diff --git a/src/main/java/ai/elimu/dao/jpa/VideoLearningEventDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/VideoLearningEventDaoJpa.java
index fa1edcc2b..c2d563fe0 100644
--- a/src/main/java/ai/elimu/dao/jpa/VideoLearningEventDaoJpa.java
+++ b/src/main/java/ai/elimu/dao/jpa/VideoLearningEventDaoJpa.java
@@ -6,7 +6,7 @@
import java.util.Calendar;
import java.util.List;
-import javax.persistence.NoResultException;
+import jakarta.persistence.NoResultException;
import org.springframework.dao.DataAccessException;
public class VideoLearningEventDaoJpa extends GenericDaoJpa implements VideoLearningEventDao {
diff --git a/src/main/java/ai/elimu/dao/jpa/WordDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/WordDaoJpa.java
index 23065df71..68eb036c2 100644
--- a/src/main/java/ai/elimu/dao/jpa/WordDaoJpa.java
+++ b/src/main/java/ai/elimu/dao/jpa/WordDaoJpa.java
@@ -1,8 +1,8 @@
package ai.elimu.dao.jpa;
import java.util.List;
-import javax.persistence.NoResultException;
-import javax.persistence.Query;
+import jakarta.persistence.NoResultException;
+import jakarta.persistence.Query;
import ai.elimu.model.v2.enums.content.WordType;
import org.springframework.dao.DataAccessException;
diff --git a/src/main/java/ai/elimu/dao/jpa/WordLearningEventDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/WordLearningEventDaoJpa.java
index 96f47db59..3ab64327f 100644
--- a/src/main/java/ai/elimu/dao/jpa/WordLearningEventDaoJpa.java
+++ b/src/main/java/ai/elimu/dao/jpa/WordLearningEventDaoJpa.java
@@ -5,7 +5,7 @@
import ai.elimu.model.analytics.WordLearningEvent;
import ai.elimu.model.content.Word;
import java.util.Calendar;
-import javax.persistence.NoResultException;
+import jakarta.persistence.NoResultException;
import org.springframework.dao.DataAccessException;
public class WordLearningEventDaoJpa extends GenericDaoJpa implements WordLearningEventDao {
diff --git a/src/main/java/ai/elimu/model/BaseEntity.java b/src/main/java/ai/elimu/model/BaseEntity.java
index 437a55a89..c7cb72105 100644
--- a/src/main/java/ai/elimu/model/BaseEntity.java
+++ b/src/main/java/ai/elimu/model/BaseEntity.java
@@ -1,10 +1,10 @@
package ai.elimu.model;
import java.io.Serializable;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.MappedSuperclass;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.MappedSuperclass;
@MappedSuperclass
public abstract class BaseEntity implements Serializable {
diff --git a/src/main/java/ai/elimu/model/DbMigration.java b/src/main/java/ai/elimu/model/DbMigration.java
index 69cdd7f55..da6200fa8 100644
--- a/src/main/java/ai/elimu/model/DbMigration.java
+++ b/src/main/java/ai/elimu/model/DbMigration.java
@@ -1,10 +1,10 @@
package ai.elimu.model;
import java.util.Calendar;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Temporal;
+import jakarta.persistence.TemporalType;
import javax.validation.constraints.NotNull;
@Entity
diff --git a/src/main/java/ai/elimu/model/Device.java b/src/main/java/ai/elimu/model/Device.java
index 30450cb38..4d1123c7f 100644
--- a/src/main/java/ai/elimu/model/Device.java
+++ b/src/main/java/ai/elimu/model/Device.java
@@ -1,10 +1,10 @@
package ai.elimu.model;
import java.util.Calendar;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Temporal;
+import jakarta.persistence.TemporalType;
import javax.validation.constraints.NotNull;
@Entity
diff --git a/src/main/java/ai/elimu/model/admin/Application.java b/src/main/java/ai/elimu/model/admin/Application.java
index 36b59002a..0d90754a3 100644
--- a/src/main/java/ai/elimu/model/admin/Application.java
+++ b/src/main/java/ai/elimu/model/admin/Application.java
@@ -1,12 +1,12 @@
package ai.elimu.model.admin;
import java.util.Set;
-import javax.persistence.ElementCollection;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.ElementCollection;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.ManyToOne;
import javax.validation.constraints.NotNull;
import ai.elimu.model.BaseEntity;
import ai.elimu.model.contributor.Contributor;
diff --git a/src/main/java/ai/elimu/model/admin/ApplicationVersion.java b/src/main/java/ai/elimu/model/admin/ApplicationVersion.java
index 51591c41a..83e7b0bc6 100644
--- a/src/main/java/ai/elimu/model/admin/ApplicationVersion.java
+++ b/src/main/java/ai/elimu/model/admin/ApplicationVersion.java
@@ -1,12 +1,12 @@
package ai.elimu.model.admin;
import java.util.Calendar;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Lob;
-import javax.persistence.ManyToOne;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Lob;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.Temporal;
+import jakarta.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import ai.elimu.model.BaseEntity;
import ai.elimu.model.contributor.Contributor;
diff --git a/src/main/java/ai/elimu/model/analytics/LearningEvent.java b/src/main/java/ai/elimu/model/analytics/LearningEvent.java
index a48e207dd..2a4f56125 100644
--- a/src/main/java/ai/elimu/model/analytics/LearningEvent.java
+++ b/src/main/java/ai/elimu/model/analytics/LearningEvent.java
@@ -5,13 +5,13 @@
import ai.elimu.model.v2.enums.analytics.LearningEventType;
import java.util.Calendar;
-import javax.persistence.Column;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.ManyToOne;
-import javax.persistence.MappedSuperclass;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
+import jakarta.persistence.Column;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.MappedSuperclass;
+import jakarta.persistence.Temporal;
+import jakarta.persistence.TemporalType;
import javax.validation.constraints.NotNull;
@MappedSuperclass
diff --git a/src/main/java/ai/elimu/model/analytics/LetterLearningEvent.java b/src/main/java/ai/elimu/model/analytics/LetterLearningEvent.java
index 7ce06e07f..59684fb0c 100644
--- a/src/main/java/ai/elimu/model/analytics/LetterLearningEvent.java
+++ b/src/main/java/ai/elimu/model/analytics/LetterLearningEvent.java
@@ -1,8 +1,8 @@
package ai.elimu.model.analytics;
import ai.elimu.model.content.Letter;
-import javax.persistence.Entity;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.Entity;
+import jakarta.persistence.ManyToOne;
import javax.validation.constraints.NotNull;
@Entity
diff --git a/src/main/java/ai/elimu/model/analytics/StoryBookLearningEvent.java b/src/main/java/ai/elimu/model/analytics/StoryBookLearningEvent.java
index c6a6d00ca..e6c181bc8 100644
--- a/src/main/java/ai/elimu/model/analytics/StoryBookLearningEvent.java
+++ b/src/main/java/ai/elimu/model/analytics/StoryBookLearningEvent.java
@@ -1,8 +1,8 @@
package ai.elimu.model.analytics;
import ai.elimu.model.content.StoryBook;
-import javax.persistence.Entity;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.Entity;
+import jakarta.persistence.ManyToOne;
import javax.validation.constraints.NotNull;
@Entity
diff --git a/src/main/java/ai/elimu/model/analytics/VideoLearningEvent.java b/src/main/java/ai/elimu/model/analytics/VideoLearningEvent.java
index 2ea5e1843..c09aab44e 100644
--- a/src/main/java/ai/elimu/model/analytics/VideoLearningEvent.java
+++ b/src/main/java/ai/elimu/model/analytics/VideoLearningEvent.java
@@ -1,7 +1,7 @@
package ai.elimu.model.analytics;
-import javax.persistence.Entity;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.Entity;
+import jakarta.persistence.ManyToOne;
import javax.validation.constraints.NotNull;
import ai.elimu.model.content.multimedia.Video;
diff --git a/src/main/java/ai/elimu/model/analytics/WordLearningEvent.java b/src/main/java/ai/elimu/model/analytics/WordLearningEvent.java
index 8757b3332..a09f45e83 100644
--- a/src/main/java/ai/elimu/model/analytics/WordLearningEvent.java
+++ b/src/main/java/ai/elimu/model/analytics/WordLearningEvent.java
@@ -1,8 +1,8 @@
package ai.elimu.model.analytics;
import ai.elimu.model.content.Word;
-import javax.persistence.Entity;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.Entity;
+import jakarta.persistence.ManyToOne;
@Entity
public class WordLearningEvent extends LearningEvent {
diff --git a/src/main/java/ai/elimu/model/content/Content.java b/src/main/java/ai/elimu/model/content/Content.java
index 0005d2b01..b31f62107 100644
--- a/src/main/java/ai/elimu/model/content/Content.java
+++ b/src/main/java/ai/elimu/model/content/Content.java
@@ -1,11 +1,11 @@
package ai.elimu.model.content;
import java.util.Calendar;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.MappedSuperclass;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.MappedSuperclass;
+import jakarta.persistence.Temporal;
+import jakarta.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import ai.elimu.model.BaseEntity;
import ai.elimu.model.v2.enums.content.ContentStatus;
diff --git a/src/main/java/ai/elimu/model/content/Emoji.java b/src/main/java/ai/elimu/model/content/Emoji.java
index dd826de45..c4ff06077 100644
--- a/src/main/java/ai/elimu/model/content/Emoji.java
+++ b/src/main/java/ai/elimu/model/content/Emoji.java
@@ -1,12 +1,12 @@
package ai.elimu.model.content;
import java.util.Set;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.JoinColumn;
-import javax.persistence.JoinTable;
-import javax.persistence.ManyToMany;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.JoinTable;
+import jakarta.persistence.ManyToMany;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;
diff --git a/src/main/java/ai/elimu/model/content/Letter.java b/src/main/java/ai/elimu/model/content/Letter.java
index e89a2f70b..fa4deaddf 100644
--- a/src/main/java/ai/elimu/model/content/Letter.java
+++ b/src/main/java/ai/elimu/model/content/Letter.java
@@ -1,7 +1,7 @@
package ai.elimu.model.content;
-import javax.persistence.Column;
-import javax.persistence.Entity;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;
diff --git a/src/main/java/ai/elimu/model/content/LetterSound.java b/src/main/java/ai/elimu/model/content/LetterSound.java
index 068dddf34..2fec563fb 100644
--- a/src/main/java/ai/elimu/model/content/LetterSound.java
+++ b/src/main/java/ai/elimu/model/content/LetterSound.java
@@ -1,10 +1,10 @@
package ai.elimu.model.content;
import java.util.List;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.ManyToMany;
-import javax.persistence.OrderColumn;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.ManyToMany;
+import jakarta.persistence.OrderColumn;
import org.hibernate.validator.constraints.NotEmpty;
/**
diff --git a/src/main/java/ai/elimu/model/content/Number.java b/src/main/java/ai/elimu/model/content/Number.java
index 9876f25e3..841aced40 100644
--- a/src/main/java/ai/elimu/model/content/Number.java
+++ b/src/main/java/ai/elimu/model/content/Number.java
@@ -1,10 +1,10 @@
package ai.elimu.model.content;
import java.util.List;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.ManyToMany;
-import javax.persistence.OrderColumn;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.ManyToMany;
+import jakarta.persistence.OrderColumn;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.NotEmpty;
diff --git a/src/main/java/ai/elimu/model/content/Sound.java b/src/main/java/ai/elimu/model/content/Sound.java
index e1165a120..32c206c68 100644
--- a/src/main/java/ai/elimu/model/content/Sound.java
+++ b/src/main/java/ai/elimu/model/content/Sound.java
@@ -1,10 +1,10 @@
package ai.elimu.model.content;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.OneToOne;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.OneToOne;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;
import ai.elimu.model.content.multimedia.Audio;
diff --git a/src/main/java/ai/elimu/model/content/StoryBook.java b/src/main/java/ai/elimu/model/content/StoryBook.java
index 8cbfc0cec..ba654c9c0 100644
--- a/src/main/java/ai/elimu/model/content/StoryBook.java
+++ b/src/main/java/ai/elimu/model/content/StoryBook.java
@@ -1,10 +1,10 @@
package ai.elimu.model.content;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.ManyToOne;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;
import ai.elimu.model.content.multimedia.Image;
diff --git a/src/main/java/ai/elimu/model/content/StoryBookChapter.java b/src/main/java/ai/elimu/model/content/StoryBookChapter.java
index 89d39ef88..d923d1a90 100644
--- a/src/main/java/ai/elimu/model/content/StoryBookChapter.java
+++ b/src/main/java/ai/elimu/model/content/StoryBookChapter.java
@@ -1,9 +1,9 @@
package ai.elimu.model.content;
-import javax.persistence.Entity;
+import jakarta.persistence.Entity;
import ai.elimu.model.BaseEntity;
import ai.elimu.model.content.multimedia.Image;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.ManyToOne;
import javax.validation.constraints.NotNull;
@Entity
diff --git a/src/main/java/ai/elimu/model/content/StoryBookParagraph.java b/src/main/java/ai/elimu/model/content/StoryBookParagraph.java
index d9faff128..57e0b250c 100644
--- a/src/main/java/ai/elimu/model/content/StoryBookParagraph.java
+++ b/src/main/java/ai/elimu/model/content/StoryBookParagraph.java
@@ -1,13 +1,13 @@
package ai.elimu.model.content;
-import javax.persistence.Entity;
+import jakarta.persistence.Entity;
import ai.elimu.model.BaseEntity;
import java.util.List;
-import javax.persistence.Column;
-import javax.persistence.FetchType;
-import javax.persistence.ManyToMany;
-import javax.persistence.ManyToOne;
-import javax.persistence.OrderColumn;
+import jakarta.persistence.Column;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.ManyToMany;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.OrderColumn;
import javax.validation.constraints.NotNull;
@Entity
diff --git a/src/main/java/ai/elimu/model/content/Syllable.java b/src/main/java/ai/elimu/model/content/Syllable.java
index b655ba1a6..5db626967 100644
--- a/src/main/java/ai/elimu/model/content/Syllable.java
+++ b/src/main/java/ai/elimu/model/content/Syllable.java
@@ -1,10 +1,10 @@
package ai.elimu.model.content;
import java.util.List;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.ManyToMany;
-import javax.persistence.OrderColumn;
+import jakarta.persistence.Entity;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.ManyToMany;
+import jakarta.persistence.OrderColumn;
import javax.validation.constraints.NotNull;
@Entity
diff --git a/src/main/java/ai/elimu/model/content/Word.java b/src/main/java/ai/elimu/model/content/Word.java
index 0667a2ac0..3d649bded 100644
--- a/src/main/java/ai/elimu/model/content/Word.java
+++ b/src/main/java/ai/elimu/model/content/Word.java
@@ -1,16 +1,16 @@
package ai.elimu.model.content;
import java.util.List;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.ManyToMany;
-import javax.persistence.OrderColumn;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.ManyToMany;
+import jakarta.persistence.OrderColumn;
import javax.validation.constraints.NotNull;
import ai.elimu.model.v2.enums.content.SpellingConsistency;
import ai.elimu.model.v2.enums.content.WordType;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.ManyToOne;
import org.hibernate.validator.constraints.NotEmpty;
@Entity
diff --git a/src/main/java/ai/elimu/model/content/multimedia/Audio.java b/src/main/java/ai/elimu/model/content/multimedia/Audio.java
index 283f6193e..eb344b10c 100644
--- a/src/main/java/ai/elimu/model/content/multimedia/Audio.java
+++ b/src/main/java/ai/elimu/model/content/multimedia/Audio.java
@@ -2,14 +2,14 @@
import ai.elimu.model.content.StoryBookParagraph;
import ai.elimu.model.content.Word;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.Lob;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.Lob;
import javax.validation.constraints.NotNull;
import ai.elimu.model.v2.enums.content.AudioFormat;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.ManyToOne;
@Entity
public class Audio extends Multimedia {
diff --git a/src/main/java/ai/elimu/model/content/multimedia/Image.java b/src/main/java/ai/elimu/model/content/multimedia/Image.java
index 63df886f6..dd0b18730 100644
--- a/src/main/java/ai/elimu/model/content/multimedia/Image.java
+++ b/src/main/java/ai/elimu/model/content/multimedia/Image.java
@@ -1,12 +1,12 @@
package ai.elimu.model.content.multimedia;
-import javax.persistence.Basic;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.Lob;
+import jakarta.persistence.Basic;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.Lob;
import javax.validation.constraints.NotNull;
import ai.elimu.model.v2.enums.content.ImageFormat;
diff --git a/src/main/java/ai/elimu/model/content/multimedia/Multimedia.java b/src/main/java/ai/elimu/model/content/multimedia/Multimedia.java
index 8adc2d17c..49b188a18 100644
--- a/src/main/java/ai/elimu/model/content/multimedia/Multimedia.java
+++ b/src/main/java/ai/elimu/model/content/multimedia/Multimedia.java
@@ -1,15 +1,15 @@
package ai.elimu.model.content.multimedia;
import java.util.Set;
-import javax.persistence.Column;
-import javax.persistence.ElementCollection;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.JoinColumn;
-import javax.persistence.JoinTable;
-import javax.persistence.ManyToMany;
-import javax.persistence.MappedSuperclass;
+import jakarta.persistence.Column;
+import jakarta.persistence.ElementCollection;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.JoinTable;
+import jakarta.persistence.ManyToMany;
+import jakarta.persistence.MappedSuperclass;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;
import ai.elimu.model.content.Content;
diff --git a/src/main/java/ai/elimu/model/content/multimedia/Video.java b/src/main/java/ai/elimu/model/content/multimedia/Video.java
index 3ed9c1517..ca75e9deb 100644
--- a/src/main/java/ai/elimu/model/content/multimedia/Video.java
+++ b/src/main/java/ai/elimu/model/content/multimedia/Video.java
@@ -1,10 +1,10 @@
package ai.elimu.model.content.multimedia;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.Lob;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.Lob;
import javax.validation.constraints.NotNull;
import ai.elimu.model.v2.enums.content.VideoFormat;
diff --git a/src/main/java/ai/elimu/model/contributor/AudioContributionEvent.java b/src/main/java/ai/elimu/model/contributor/AudioContributionEvent.java
index e60ea56b4..489c99337 100644
--- a/src/main/java/ai/elimu/model/contributor/AudioContributionEvent.java
+++ b/src/main/java/ai/elimu/model/contributor/AudioContributionEvent.java
@@ -1,7 +1,7 @@
package ai.elimu.model.contributor;
import ai.elimu.model.content.multimedia.Audio;
-import javax.persistence.*;
+import jakarta.persistence.*;
import javax.validation.constraints.NotNull;
@Entity
diff --git a/src/main/java/ai/elimu/model/contributor/AudioPeerReviewEvent.java b/src/main/java/ai/elimu/model/contributor/AudioPeerReviewEvent.java
index 1c633f7e7..47d717a70 100644
--- a/src/main/java/ai/elimu/model/contributor/AudioPeerReviewEvent.java
+++ b/src/main/java/ai/elimu/model/contributor/AudioPeerReviewEvent.java
@@ -1,6 +1,6 @@
package ai.elimu.model.contributor;
-import javax.persistence.*;
+import jakarta.persistence.*;
import javax.validation.constraints.NotNull;
/**
diff --git a/src/main/java/ai/elimu/model/contributor/ContributionEvent.java b/src/main/java/ai/elimu/model/contributor/ContributionEvent.java
index 51b9f0813..4bd7a0923 100644
--- a/src/main/java/ai/elimu/model/contributor/ContributionEvent.java
+++ b/src/main/java/ai/elimu/model/contributor/ContributionEvent.java
@@ -2,7 +2,7 @@
import ai.elimu.model.BaseEntity;
import java.util.Calendar;
-import javax.persistence.*;
+import jakarta.persistence.*;
import javax.validation.constraints.NotNull;
/**
diff --git a/src/main/java/ai/elimu/model/contributor/Contributor.java b/src/main/java/ai/elimu/model/contributor/Contributor.java
index 02adebf14..4a5d45881 100644
--- a/src/main/java/ai/elimu/model/contributor/Contributor.java
+++ b/src/main/java/ai/elimu/model/contributor/Contributor.java
@@ -3,14 +3,14 @@
import ai.elimu.model.BaseEntity;
import java.util.Calendar;
import java.util.Set;
-import javax.persistence.Column;
-import javax.persistence.ElementCollection;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
+import jakarta.persistence.Column;
+import jakarta.persistence.ElementCollection;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.FetchType;
+import jakarta.persistence.Temporal;
+import jakarta.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.NotEmpty;
import ai.elimu.model.enums.Role;
diff --git a/src/main/java/ai/elimu/model/contributor/ImageContributionEvent.java b/src/main/java/ai/elimu/model/contributor/ImageContributionEvent.java
index adaf5e383..72ef0fee5 100644
--- a/src/main/java/ai/elimu/model/contributor/ImageContributionEvent.java
+++ b/src/main/java/ai/elimu/model/contributor/ImageContributionEvent.java
@@ -1,7 +1,7 @@
package ai.elimu.model.contributor;
import ai.elimu.model.content.multimedia.Image;
-import javax.persistence.*;
+import jakarta.persistence.*;
import javax.validation.constraints.NotNull;
@Entity
diff --git a/src/main/java/ai/elimu/model/contributor/LetterContributionEvent.java b/src/main/java/ai/elimu/model/contributor/LetterContributionEvent.java
index 36c7300f5..812dda825 100644
--- a/src/main/java/ai/elimu/model/contributor/LetterContributionEvent.java
+++ b/src/main/java/ai/elimu/model/contributor/LetterContributionEvent.java
@@ -1,8 +1,8 @@
package ai.elimu.model.contributor;
import ai.elimu.model.content.Letter;
-import javax.persistence.Entity;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.Entity;
+import jakarta.persistence.ManyToOne;
import javax.validation.constraints.NotNull;
@Entity
diff --git a/src/main/java/ai/elimu/model/contributor/LetterSoundContributionEvent.java b/src/main/java/ai/elimu/model/contributor/LetterSoundContributionEvent.java
index 4a5e65ab3..42564e4cc 100644
--- a/src/main/java/ai/elimu/model/contributor/LetterSoundContributionEvent.java
+++ b/src/main/java/ai/elimu/model/contributor/LetterSoundContributionEvent.java
@@ -1,8 +1,8 @@
package ai.elimu.model.contributor;
import ai.elimu.model.content.LetterSound;
-import javax.persistence.Entity;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.Entity;
+import jakarta.persistence.ManyToOne;
import javax.validation.constraints.NotNull;
@Entity
diff --git a/src/main/java/ai/elimu/model/contributor/LetterSoundPeerReviewEvent.java b/src/main/java/ai/elimu/model/contributor/LetterSoundPeerReviewEvent.java
index da29fc2a6..316c26f07 100644
--- a/src/main/java/ai/elimu/model/contributor/LetterSoundPeerReviewEvent.java
+++ b/src/main/java/ai/elimu/model/contributor/LetterSoundPeerReviewEvent.java
@@ -1,6 +1,6 @@
package ai.elimu.model.contributor;
-import javax.persistence.*;
+import jakarta.persistence.*;
import javax.validation.constraints.NotNull;
/**
diff --git a/src/main/java/ai/elimu/model/contributor/NumberContributionEvent.java b/src/main/java/ai/elimu/model/contributor/NumberContributionEvent.java
index 1f39110c2..facbf9a20 100644
--- a/src/main/java/ai/elimu/model/contributor/NumberContributionEvent.java
+++ b/src/main/java/ai/elimu/model/contributor/NumberContributionEvent.java
@@ -1,7 +1,7 @@
package ai.elimu.model.contributor;
import ai.elimu.model.content.Number;
-import javax.persistence.*;
+import jakarta.persistence.*;
import javax.validation.constraints.NotNull;
@Entity
diff --git a/src/main/java/ai/elimu/model/contributor/NumberPeerReviewEvent.java b/src/main/java/ai/elimu/model/contributor/NumberPeerReviewEvent.java
index 324c9a266..faa55ef91 100644
--- a/src/main/java/ai/elimu/model/contributor/NumberPeerReviewEvent.java
+++ b/src/main/java/ai/elimu/model/contributor/NumberPeerReviewEvent.java
@@ -1,6 +1,6 @@
package ai.elimu.model.contributor;
-import javax.persistence.*;
+import jakarta.persistence.*;
import javax.validation.constraints.NotNull;
/**
diff --git a/src/main/java/ai/elimu/model/contributor/PeerReviewEvent.java b/src/main/java/ai/elimu/model/contributor/PeerReviewEvent.java
index eb518b8d0..0b3fd7a72 100644
--- a/src/main/java/ai/elimu/model/contributor/PeerReviewEvent.java
+++ b/src/main/java/ai/elimu/model/contributor/PeerReviewEvent.java
@@ -2,11 +2,11 @@
import ai.elimu.model.BaseEntity;
import java.util.Calendar;
-import javax.persistence.Column;
-import javax.persistence.ManyToOne;
-import javax.persistence.MappedSuperclass;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
+import jakarta.persistence.Column;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.MappedSuperclass;
+import jakarta.persistence.Temporal;
+import jakarta.persistence.TemporalType;
import javax.validation.constraints.NotNull;
/**
diff --git a/src/main/java/ai/elimu/model/contributor/SoundContributionEvent.java b/src/main/java/ai/elimu/model/contributor/SoundContributionEvent.java
index 83199795c..1d87abdb9 100644
--- a/src/main/java/ai/elimu/model/contributor/SoundContributionEvent.java
+++ b/src/main/java/ai/elimu/model/contributor/SoundContributionEvent.java
@@ -1,8 +1,8 @@
package ai.elimu.model.contributor;
import ai.elimu.model.content.Sound;
-import javax.persistence.Entity;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.Entity;
+import jakarta.persistence.ManyToOne;
import javax.validation.constraints.NotNull;
@Entity
diff --git a/src/main/java/ai/elimu/model/contributor/StoryBookContributionEvent.java b/src/main/java/ai/elimu/model/contributor/StoryBookContributionEvent.java
index bed606b62..23e3d44f7 100644
--- a/src/main/java/ai/elimu/model/contributor/StoryBookContributionEvent.java
+++ b/src/main/java/ai/elimu/model/contributor/StoryBookContributionEvent.java
@@ -2,9 +2,9 @@
import ai.elimu.model.content.StoryBook;
import ai.elimu.model.content.StoryBookParagraph;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.ManyToOne;
import javax.validation.constraints.NotNull;
@Entity
diff --git a/src/main/java/ai/elimu/model/contributor/StoryBookPeerReviewEvent.java b/src/main/java/ai/elimu/model/contributor/StoryBookPeerReviewEvent.java
index 776afc835..622f4cb60 100644
--- a/src/main/java/ai/elimu/model/contributor/StoryBookPeerReviewEvent.java
+++ b/src/main/java/ai/elimu/model/contributor/StoryBookPeerReviewEvent.java
@@ -1,7 +1,7 @@
package ai.elimu.model.contributor;
-import javax.persistence.Entity;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.Entity;
+import jakarta.persistence.ManyToOne;
import javax.validation.constraints.NotNull;
/**
diff --git a/src/main/java/ai/elimu/model/contributor/WordContributionEvent.java b/src/main/java/ai/elimu/model/contributor/WordContributionEvent.java
index 049fad573..2042c9f76 100644
--- a/src/main/java/ai/elimu/model/contributor/WordContributionEvent.java
+++ b/src/main/java/ai/elimu/model/contributor/WordContributionEvent.java
@@ -1,8 +1,8 @@
package ai.elimu.model.contributor;
import ai.elimu.model.content.Word;
-import javax.persistence.Entity;
-import javax.persistence.ManyToOne;
+import jakarta.persistence.Entity;
+import jakarta.persistence.ManyToOne;
import javax.validation.constraints.NotNull;
@Entity
diff --git a/src/main/java/ai/elimu/model/contributor/WordPeerReviewEvent.java b/src/main/java/ai/elimu/model/contributor/WordPeerReviewEvent.java
index 505adb7e0..651112e07 100644
--- a/src/main/java/ai/elimu/model/contributor/WordPeerReviewEvent.java
+++ b/src/main/java/ai/elimu/model/contributor/WordPeerReviewEvent.java
@@ -1,6 +1,6 @@
package ai.elimu.model.contributor;
-import javax.persistence.*;
+import jakarta.persistence.*;
import javax.validation.constraints.NotNull;
/**
diff --git a/src/main/java/ai/elimu/rest/v2/analytics/LetterAssessmentEventsRestController.java b/src/main/java/ai/elimu/rest/v2/analytics/LetterAssessmentEventsRestController.java
index 73f1f9957..f861ecb66 100644
--- a/src/main/java/ai/elimu/rest/v2/analytics/LetterAssessmentEventsRestController.java
+++ b/src/main/java/ai/elimu/rest/v2/analytics/LetterAssessmentEventsRestController.java
@@ -11,7 +11,7 @@
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
diff --git a/src/main/java/ai/elimu/rest/v2/analytics/LetterLearningEventsRestController.java b/src/main/java/ai/elimu/rest/v2/analytics/LetterLearningEventsRestController.java
index a0e786dee..578f88744 100644
--- a/src/main/java/ai/elimu/rest/v2/analytics/LetterLearningEventsRestController.java
+++ b/src/main/java/ai/elimu/rest/v2/analytics/LetterLearningEventsRestController.java
@@ -17,7 +17,7 @@
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Calendar;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
diff --git a/src/main/java/ai/elimu/rest/v2/analytics/LetterSoundLearningEventsRestController.java b/src/main/java/ai/elimu/rest/v2/analytics/LetterSoundLearningEventsRestController.java
index 3a47e89cd..6630c8204 100644
--- a/src/main/java/ai/elimu/rest/v2/analytics/LetterSoundLearningEventsRestController.java
+++ b/src/main/java/ai/elimu/rest/v2/analytics/LetterSoundLearningEventsRestController.java
@@ -3,7 +3,7 @@
import java.io.File;
import java.io.IOException;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/src/main/java/ai/elimu/rest/v2/analytics/StoryBookLearningEventsRestController.java b/src/main/java/ai/elimu/rest/v2/analytics/StoryBookLearningEventsRestController.java
index 12c569176..1829f7485 100644
--- a/src/main/java/ai/elimu/rest/v2/analytics/StoryBookLearningEventsRestController.java
+++ b/src/main/java/ai/elimu/rest/v2/analytics/StoryBookLearningEventsRestController.java
@@ -17,7 +17,7 @@
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Calendar;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
diff --git a/src/main/java/ai/elimu/rest/v2/analytics/VideoLearningEventsRestController.java b/src/main/java/ai/elimu/rest/v2/analytics/VideoLearningEventsRestController.java
index 553d58db8..12befc174 100644
--- a/src/main/java/ai/elimu/rest/v2/analytics/VideoLearningEventsRestController.java
+++ b/src/main/java/ai/elimu/rest/v2/analytics/VideoLearningEventsRestController.java
@@ -4,7 +4,7 @@
import ai.elimu.util.AnalyticsHelper;
import ai.elimu.util.ConfigHelper;
import java.io.File;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.json.JSONObject;
diff --git a/src/main/java/ai/elimu/rest/v2/analytics/WordAssessmentEventsRestController.java b/src/main/java/ai/elimu/rest/v2/analytics/WordAssessmentEventsRestController.java
index 4b2ee7968..580e2b1d2 100644
--- a/src/main/java/ai/elimu/rest/v2/analytics/WordAssessmentEventsRestController.java
+++ b/src/main/java/ai/elimu/rest/v2/analytics/WordAssessmentEventsRestController.java
@@ -11,7 +11,7 @@
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
diff --git a/src/main/java/ai/elimu/rest/v2/analytics/WordLearningEventsRestController.java b/src/main/java/ai/elimu/rest/v2/analytics/WordLearningEventsRestController.java
index ed80e7b1f..63c070c68 100644
--- a/src/main/java/ai/elimu/rest/v2/analytics/WordLearningEventsRestController.java
+++ b/src/main/java/ai/elimu/rest/v2/analytics/WordLearningEventsRestController.java
@@ -17,7 +17,7 @@
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Calendar;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
diff --git a/src/main/java/ai/elimu/rest/v2/applications/ApplicationsRestController.java b/src/main/java/ai/elimu/rest/v2/applications/ApplicationsRestController.java
index f17029e5c..4ab4d72e9 100644
--- a/src/main/java/ai/elimu/rest/v2/applications/ApplicationsRestController.java
+++ b/src/main/java/ai/elimu/rest/v2/applications/ApplicationsRestController.java
@@ -10,7 +10,7 @@
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.json.JSONArray;
diff --git a/src/main/java/ai/elimu/rest/v2/content/AudiosRestController.java b/src/main/java/ai/elimu/rest/v2/content/AudiosRestController.java
index 05f6e1e95..bf7d8bf97 100644
--- a/src/main/java/ai/elimu/rest/v2/content/AudiosRestController.java
+++ b/src/main/java/ai/elimu/rest/v2/content/AudiosRestController.java
@@ -5,7 +5,7 @@
import ai.elimu.model.v2.gson.content.AudioGson;
import ai.elimu.rest.v2.JpaToGsonConverter;
import com.google.gson.Gson;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.json.JSONArray;
diff --git a/src/main/java/ai/elimu/rest/v2/content/EmojisRestController.java b/src/main/java/ai/elimu/rest/v2/content/EmojisRestController.java
index 5525a8b2c..1be12c60a 100644
--- a/src/main/java/ai/elimu/rest/v2/content/EmojisRestController.java
+++ b/src/main/java/ai/elimu/rest/v2/content/EmojisRestController.java
@@ -5,7 +5,7 @@
import ai.elimu.model.v2.gson.content.EmojiGson;
import ai.elimu.rest.v2.JpaToGsonConverter;
import com.google.gson.Gson;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.json.JSONArray;
diff --git a/src/main/java/ai/elimu/rest/v2/content/ImagesRestController.java b/src/main/java/ai/elimu/rest/v2/content/ImagesRestController.java
index 5bc5b3221..ef2dc1b3c 100644
--- a/src/main/java/ai/elimu/rest/v2/content/ImagesRestController.java
+++ b/src/main/java/ai/elimu/rest/v2/content/ImagesRestController.java
@@ -5,7 +5,7 @@
import ai.elimu.model.v2.gson.content.ImageGson;
import ai.elimu.rest.v2.JpaToGsonConverter;
import com.google.gson.Gson;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.json.JSONArray;
diff --git a/src/main/java/ai/elimu/rest/v2/content/VideosRestController.java b/src/main/java/ai/elimu/rest/v2/content/VideosRestController.java
index e98e608a1..0f2c4f49d 100644
--- a/src/main/java/ai/elimu/rest/v2/content/VideosRestController.java
+++ b/src/main/java/ai/elimu/rest/v2/content/VideosRestController.java
@@ -5,7 +5,7 @@
import ai.elimu.model.v2.gson.content.VideoGson;
import ai.elimu.rest.v2.JpaToGsonConverter;
import com.google.gson.Gson;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.json.JSONArray;
diff --git a/src/main/java/ai/elimu/web/SignOnController.java b/src/main/java/ai/elimu/web/SignOnController.java
index 37d43a0d9..b42bca56c 100644
--- a/src/main/java/ai/elimu/web/SignOnController.java
+++ b/src/main/java/ai/elimu/web/SignOnController.java
@@ -3,7 +3,7 @@
import java.util.Arrays;
import java.util.Calendar;
import java.util.HashSet;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.logging.log4j.Logger;
import ai.elimu.dao.ContributorDao;
diff --git a/src/main/java/ai/elimu/web/SignOnControllerDiscord.java b/src/main/java/ai/elimu/web/SignOnControllerDiscord.java
index a5a3ca0dd..dc5d4ac19 100644
--- a/src/main/java/ai/elimu/web/SignOnControllerDiscord.java
+++ b/src/main/java/ai/elimu/web/SignOnControllerDiscord.java
@@ -2,7 +2,7 @@
import java.io.IOException;
import java.util.Calendar;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.logging.log4j.Logger;
import org.json.JSONObject;
import ai.elimu.dao.ContributorDao;
diff --git a/src/main/java/ai/elimu/web/SignOnControllerGitHub.java b/src/main/java/ai/elimu/web/SignOnControllerGitHub.java
index 00997bc88..28125da29 100644
--- a/src/main/java/ai/elimu/web/SignOnControllerGitHub.java
+++ b/src/main/java/ai/elimu/web/SignOnControllerGitHub.java
@@ -2,7 +2,7 @@
import java.io.IOException;
import java.util.Calendar;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.logging.log4j.Logger;
import org.json.JSONArray;
import org.json.JSONObject;
diff --git a/src/main/java/ai/elimu/web/SignOnControllerSelenium.java b/src/main/java/ai/elimu/web/SignOnControllerSelenium.java
index 645790abc..b7ffbf3a6 100644
--- a/src/main/java/ai/elimu/web/SignOnControllerSelenium.java
+++ b/src/main/java/ai/elimu/web/SignOnControllerSelenium.java
@@ -4,7 +4,7 @@
import java.util.Calendar;
import java.util.HashSet;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.logging.log4j.Logger;
import ai.elimu.dao.ContributorDao;
diff --git a/src/main/java/ai/elimu/web/SignOnControllerWeb3.java b/src/main/java/ai/elimu/web/SignOnControllerWeb3.java
index ffd50cbb0..fd84ad026 100644
--- a/src/main/java/ai/elimu/web/SignOnControllerWeb3.java
+++ b/src/main/java/ai/elimu/web/SignOnControllerWeb3.java
@@ -1,7 +1,7 @@
package ai.elimu.web;
import java.io.IOException;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.logging.log4j.Logger;
import ai.elimu.dao.ContributorDao;
import ai.elimu.model.contributor.Contributor;
@@ -10,7 +10,7 @@
import java.util.Arrays;
import java.util.Calendar;
import java.util.HashSet;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/ai/elimu/web/admin/application/ApplicationCreateController.java b/src/main/java/ai/elimu/web/admin/application/ApplicationCreateController.java
index c803dbc87..162883a06 100644
--- a/src/main/java/ai/elimu/web/admin/application/ApplicationCreateController.java
+++ b/src/main/java/ai/elimu/web/admin/application/ApplicationCreateController.java
@@ -1,6 +1,6 @@
package ai.elimu.web.admin.application;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import javax.validation.Valid;
import org.apache.logging.log4j.Logger;
diff --git a/src/main/java/ai/elimu/web/admin/application/ApplicationEditController.java b/src/main/java/ai/elimu/web/admin/application/ApplicationEditController.java
index c616738fa..1c364dc48 100644
--- a/src/main/java/ai/elimu/web/admin/application/ApplicationEditController.java
+++ b/src/main/java/ai/elimu/web/admin/application/ApplicationEditController.java
@@ -1,7 +1,7 @@
package ai.elimu.web.admin.application;
import java.util.List;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import javax.validation.Valid;
import org.apache.logging.log4j.Logger;
import ai.elimu.dao.ApplicationDao;
diff --git a/src/main/java/ai/elimu/web/admin/application_version/ApplicationVersionCreateController.java b/src/main/java/ai/elimu/web/admin/application_version/ApplicationVersionCreateController.java
index aeee12179..3836c76c9 100644
--- a/src/main/java/ai/elimu/web/admin/application_version/ApplicationVersionCreateController.java
+++ b/src/main/java/ai/elimu/web/admin/application_version/ApplicationVersionCreateController.java
@@ -3,9 +3,9 @@
import java.io.IOException;
import java.util.Calendar;
import java.util.List;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
import org.apache.logging.log4j.Logger;
import ai.elimu.dao.ApplicationDao;
diff --git a/src/main/java/ai/elimu/web/analytics/StoryBookLearningEventCsvExportController.java b/src/main/java/ai/elimu/web/analytics/StoryBookLearningEventCsvExportController.java
index c5c4c064b..3aadb297c 100644
--- a/src/main/java/ai/elimu/web/analytics/StoryBookLearningEventCsvExportController.java
+++ b/src/main/java/ai/elimu/web/analytics/StoryBookLearningEventCsvExportController.java
@@ -12,7 +12,7 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
import org.apache.logging.log4j.LogManager;
diff --git a/src/main/java/ai/elimu/web/analytics/VideoLearningEventCsvExportController.java b/src/main/java/ai/elimu/web/analytics/VideoLearningEventCsvExportController.java
index a020e7878..84f249761 100644
--- a/src/main/java/ai/elimu/web/analytics/VideoLearningEventCsvExportController.java
+++ b/src/main/java/ai/elimu/web/analytics/VideoLearningEventCsvExportController.java
@@ -15,7 +15,7 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
import org.apache.logging.log4j.LogManager;
diff --git a/src/main/java/ai/elimu/web/content/MainContentController.java b/src/main/java/ai/elimu/web/content/MainContentController.java
index b11377e63..9fb8c0f4c 100644
--- a/src/main/java/ai/elimu/web/content/MainContentController.java
+++ b/src/main/java/ai/elimu/web/content/MainContentController.java
@@ -3,8 +3,8 @@
import ai.elimu.dao.AudioContributionEventDao;
import java.security.Principal;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.Logger;
diff --git a/src/main/java/ai/elimu/web/content/contributor/AddEmailController.java b/src/main/java/ai/elimu/web/content/contributor/AddEmailController.java
index 17e978809..073f18adf 100644
--- a/src/main/java/ai/elimu/web/content/contributor/AddEmailController.java
+++ b/src/main/java/ai/elimu/web/content/contributor/AddEmailController.java
@@ -1,6 +1,6 @@
package ai.elimu.web.content.contributor;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import org.apache.commons.validator.EmailValidator;
import org.apache.logging.log4j.Logger;
diff --git a/src/main/java/ai/elimu/web/content/contributor/EditMotivationController.java b/src/main/java/ai/elimu/web/content/contributor/EditMotivationController.java
index 05a7e6d82..2503ec8b2 100644
--- a/src/main/java/ai/elimu/web/content/contributor/EditMotivationController.java
+++ b/src/main/java/ai/elimu/web/content/contributor/EditMotivationController.java
@@ -1,7 +1,7 @@
package ai.elimu.web.content.contributor;
import java.util.Calendar;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.Logger;
diff --git a/src/main/java/ai/elimu/web/content/contributor/EditNameController.java b/src/main/java/ai/elimu/web/content/contributor/EditNameController.java
index cd25dd918..0598d3e7a 100644
--- a/src/main/java/ai/elimu/web/content/contributor/EditNameController.java
+++ b/src/main/java/ai/elimu/web/content/contributor/EditNameController.java
@@ -1,6 +1,6 @@
package ai.elimu.web.content.contributor;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import org.apache.logging.log4j.Logger;
import ai.elimu.dao.ContributorDao;
diff --git a/src/main/java/ai/elimu/web/content/emoji/EmojiCsvExportController.java b/src/main/java/ai/elimu/web/content/emoji/EmojiCsvExportController.java
index 8acd1e4f1..92dc0fa00 100644
--- a/src/main/java/ai/elimu/web/content/emoji/EmojiCsvExportController.java
+++ b/src/main/java/ai/elimu/web/content/emoji/EmojiCsvExportController.java
@@ -13,7 +13,7 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
import org.apache.logging.log4j.LogManager;
diff --git a/src/main/java/ai/elimu/web/content/emoji/EmojiEditController.java b/src/main/java/ai/elimu/web/content/emoji/EmojiEditController.java
index f76053313..3d47304c7 100644
--- a/src/main/java/ai/elimu/web/content/emoji/EmojiEditController.java
+++ b/src/main/java/ai/elimu/web/content/emoji/EmojiEditController.java
@@ -13,7 +13,7 @@
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/ai/elimu/web/content/letter/LetterCreateController.java b/src/main/java/ai/elimu/web/content/letter/LetterCreateController.java
index 3b09bccbc..52d2810a9 100644
--- a/src/main/java/ai/elimu/web/content/letter/LetterCreateController.java
+++ b/src/main/java/ai/elimu/web/content/letter/LetterCreateController.java
@@ -11,8 +11,8 @@
import ai.elimu.model.contributor.LetterContributionEvent;
import ai.elimu.util.DiscordHelper;
import ai.elimu.web.context.EnvironmentContextLoaderListener;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/ai/elimu/web/content/letter/LetterCsvExportController.java b/src/main/java/ai/elimu/web/content/letter/LetterCsvExportController.java
index 76f5fead7..ead29c397 100644
--- a/src/main/java/ai/elimu/web/content/letter/LetterCsvExportController.java
+++ b/src/main/java/ai/elimu/web/content/letter/LetterCsvExportController.java
@@ -13,7 +13,7 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
import org.apache.logging.log4j.LogManager;
diff --git a/src/main/java/ai/elimu/web/content/letter/LetterEditController.java b/src/main/java/ai/elimu/web/content/letter/LetterEditController.java
index 9054d5ec8..3bce30115 100644
--- a/src/main/java/ai/elimu/web/content/letter/LetterEditController.java
+++ b/src/main/java/ai/elimu/web/content/letter/LetterEditController.java
@@ -11,8 +11,8 @@
import ai.elimu.model.contributor.LetterContributionEvent;
import ai.elimu.util.DiscordHelper;
import ai.elimu.web.context.EnvironmentContextLoaderListener;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/ai/elimu/web/content/letter_sound/LetterSoundCreateController.java b/src/main/java/ai/elimu/web/content/letter_sound/LetterSoundCreateController.java
index e720e49e0..1115f8562 100644
--- a/src/main/java/ai/elimu/web/content/letter_sound/LetterSoundCreateController.java
+++ b/src/main/java/ai/elimu/web/content/letter_sound/LetterSoundCreateController.java
@@ -23,8 +23,8 @@
import ai.elimu.web.context.EnvironmentContextLoaderListener;
import java.util.Calendar;
import java.util.stream.Collectors;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import ai.elimu.dao.SoundDao;
diff --git a/src/main/java/ai/elimu/web/content/letter_sound/LetterSoundCsvExportController.java b/src/main/java/ai/elimu/web/content/letter_sound/LetterSoundCsvExportController.java
index 14f5a0c30..47c8fc6e9 100644
--- a/src/main/java/ai/elimu/web/content/letter_sound/LetterSoundCsvExportController.java
+++ b/src/main/java/ai/elimu/web/content/letter_sound/LetterSoundCsvExportController.java
@@ -13,7 +13,7 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
import org.apache.logging.log4j.LogManager;
diff --git a/src/main/java/ai/elimu/web/content/letter_sound/LetterSoundEditController.java b/src/main/java/ai/elimu/web/content/letter_sound/LetterSoundEditController.java
index 1227866d5..5b04c0edb 100644
--- a/src/main/java/ai/elimu/web/content/letter_sound/LetterSoundEditController.java
+++ b/src/main/java/ai/elimu/web/content/letter_sound/LetterSoundEditController.java
@@ -25,8 +25,8 @@
import ai.elimu.model.contributor.Contributor;
import ai.elimu.util.DiscordHelper;
import java.util.Calendar;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import ai.elimu.web.context.EnvironmentContextLoaderListener;
import java.util.stream.Collectors;
diff --git a/src/main/java/ai/elimu/web/content/letter_sound/LetterSoundPeerReviewsController.java b/src/main/java/ai/elimu/web/content/letter_sound/LetterSoundPeerReviewsController.java
index b40428af7..1fb15672a 100644
--- a/src/main/java/ai/elimu/web/content/letter_sound/LetterSoundPeerReviewsController.java
+++ b/src/main/java/ai/elimu/web/content/letter_sound/LetterSoundPeerReviewsController.java
@@ -9,7 +9,7 @@
import ai.elimu.model.contributor.LetterSoundPeerReviewEvent;
import java.util.ArrayList;
import java.util.List;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/ai/elimu/web/content/multimedia/audio/AudioCreateController.java b/src/main/java/ai/elimu/web/content/multimedia/audio/AudioCreateController.java
index 93de39776..358b0ba94 100644
--- a/src/main/java/ai/elimu/web/content/multimedia/audio/AudioCreateController.java
+++ b/src/main/java/ai/elimu/web/content/multimedia/audio/AudioCreateController.java
@@ -3,8 +3,8 @@
import ai.elimu.dao.AudioContributionEventDao;
import java.io.IOException;
import java.util.Calendar;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.Logger;
@@ -29,7 +29,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
diff --git a/src/main/java/ai/elimu/web/content/multimedia/audio/AudioCsvExportController.java b/src/main/java/ai/elimu/web/content/multimedia/audio/AudioCsvExportController.java
index f05ab48d3..351e71f39 100644
--- a/src/main/java/ai/elimu/web/content/multimedia/audio/AudioCsvExportController.java
+++ b/src/main/java/ai/elimu/web/content/multimedia/audio/AudioCsvExportController.java
@@ -11,7 +11,7 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.logging.log4j.LogManager;
import org.springframework.web.bind.annotation.RequestMethod;
diff --git a/src/main/java/ai/elimu/web/content/multimedia/audio/AudioEditController.java b/src/main/java/ai/elimu/web/content/multimedia/audio/AudioEditController.java
index cc8888f45..820e57c05 100644
--- a/src/main/java/ai/elimu/web/content/multimedia/audio/AudioEditController.java
+++ b/src/main/java/ai/elimu/web/content/multimedia/audio/AudioEditController.java
@@ -5,8 +5,8 @@
import java.util.Calendar;
import java.util.Iterator;
import java.util.Set;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.Logger;
@@ -35,7 +35,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
diff --git a/src/main/java/ai/elimu/web/content/multimedia/image/ImageCreateController.java b/src/main/java/ai/elimu/web/content/multimedia/image/ImageCreateController.java
index e990a7793..0f3f55338 100644
--- a/src/main/java/ai/elimu/web/content/multimedia/image/ImageCreateController.java
+++ b/src/main/java/ai/elimu/web/content/multimedia/image/ImageCreateController.java
@@ -4,8 +4,8 @@
import java.io.IOException;
import java.util.Calendar;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.Logger;
@@ -22,7 +22,7 @@
import ai.elimu.util.IpfsHelper;
import ai.elimu.web.context.EnvironmentContextLoaderListener;
import java.util.Arrays;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
diff --git a/src/main/java/ai/elimu/web/content/multimedia/image/ImageCsvExportController.java b/src/main/java/ai/elimu/web/content/multimedia/image/ImageCsvExportController.java
index 29c7a574e..bc30e01dc 100644
--- a/src/main/java/ai/elimu/web/content/multimedia/image/ImageCsvExportController.java
+++ b/src/main/java/ai/elimu/web/content/multimedia/image/ImageCsvExportController.java
@@ -12,7 +12,7 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
diff --git a/src/main/java/ai/elimu/web/content/multimedia/image/ImageEditController.java b/src/main/java/ai/elimu/web/content/multimedia/image/ImageEditController.java
index f7c4caaef..1f2469019 100644
--- a/src/main/java/ai/elimu/web/content/multimedia/image/ImageEditController.java
+++ b/src/main/java/ai/elimu/web/content/multimedia/image/ImageEditController.java
@@ -4,8 +4,8 @@
import java.util.Calendar;
import java.util.Iterator;
import java.util.Set;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.Logger;
@@ -35,7 +35,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
diff --git a/src/main/java/ai/elimu/web/content/multimedia/video/VideoCreateController.java b/src/main/java/ai/elimu/web/content/multimedia/video/VideoCreateController.java
index f09ba2d96..758876cae 100644
--- a/src/main/java/ai/elimu/web/content/multimedia/video/VideoCreateController.java
+++ b/src/main/java/ai/elimu/web/content/multimedia/video/VideoCreateController.java
@@ -2,8 +2,8 @@
import java.io.IOException;
import java.util.Calendar;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.Logger;
diff --git a/src/main/java/ai/elimu/web/content/multimedia/video/VideoCsvExportController.java b/src/main/java/ai/elimu/web/content/multimedia/video/VideoCsvExportController.java
index e3f4ad2ee..9c91ac6f2 100644
--- a/src/main/java/ai/elimu/web/content/multimedia/video/VideoCsvExportController.java
+++ b/src/main/java/ai/elimu/web/content/multimedia/video/VideoCsvExportController.java
@@ -11,7 +11,7 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.logging.log4j.LogManager;
import org.springframework.web.bind.annotation.RequestMethod;
diff --git a/src/main/java/ai/elimu/web/content/multimedia/video/VideoEditController.java b/src/main/java/ai/elimu/web/content/multimedia/video/VideoEditController.java
index 1f61c5ce9..574c1abd5 100644
--- a/src/main/java/ai/elimu/web/content/multimedia/video/VideoEditController.java
+++ b/src/main/java/ai/elimu/web/content/multimedia/video/VideoEditController.java
@@ -5,8 +5,8 @@
import java.util.Calendar;
import java.util.Iterator;
import java.util.Set;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.Logger;
diff --git a/src/main/java/ai/elimu/web/content/number/NumberCreateController.java b/src/main/java/ai/elimu/web/content/number/NumberCreateController.java
index 9801ec292..7d8737f43 100644
--- a/src/main/java/ai/elimu/web/content/number/NumberCreateController.java
+++ b/src/main/java/ai/elimu/web/content/number/NumberCreateController.java
@@ -18,8 +18,8 @@
import ai.elimu.web.context.EnvironmentContextLoaderListener;
import java.util.HashMap;
import java.util.Map;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/ai/elimu/web/content/number/NumberCsvExportController.java b/src/main/java/ai/elimu/web/content/number/NumberCsvExportController.java
index 754e06cf1..b49d1d24c 100644
--- a/src/main/java/ai/elimu/web/content/number/NumberCsvExportController.java
+++ b/src/main/java/ai/elimu/web/content/number/NumberCsvExportController.java
@@ -13,7 +13,7 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
import org.apache.logging.log4j.LogManager;
diff --git a/src/main/java/ai/elimu/web/content/number/NumberEditController.java b/src/main/java/ai/elimu/web/content/number/NumberEditController.java
index 9efb6fe11..234ddcbaf 100644
--- a/src/main/java/ai/elimu/web/content/number/NumberEditController.java
+++ b/src/main/java/ai/elimu/web/content/number/NumberEditController.java
@@ -19,8 +19,8 @@
import ai.elimu.web.context.EnvironmentContextLoaderListener;
import java.util.HashMap;
import java.util.Map;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/ai/elimu/web/content/number/NumberPeerReviewsController.java b/src/main/java/ai/elimu/web/content/number/NumberPeerReviewsController.java
index eb84eb6d4..4b57ecb0f 100644
--- a/src/main/java/ai/elimu/web/content/number/NumberPeerReviewsController.java
+++ b/src/main/java/ai/elimu/web/content/number/NumberPeerReviewsController.java
@@ -9,7 +9,7 @@
import ai.elimu.model.contributor.NumberPeerReviewEvent;
import java.util.ArrayList;
import java.util.List;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/ai/elimu/web/content/peer_review/AudioPeerReviewEventCreateController.java b/src/main/java/ai/elimu/web/content/peer_review/AudioPeerReviewEventCreateController.java
index d99d0e33d..930adede3 100644
--- a/src/main/java/ai/elimu/web/content/peer_review/AudioPeerReviewEventCreateController.java
+++ b/src/main/java/ai/elimu/web/content/peer_review/AudioPeerReviewEventCreateController.java
@@ -12,7 +12,7 @@
import ai.elimu.util.DiscordHelper;
import ai.elimu.web.context.EnvironmentContextLoaderListener;
import java.util.Calendar;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/ai/elimu/web/content/peer_review/LetterSoundPeerReviewEventCreateController.java b/src/main/java/ai/elimu/web/content/peer_review/LetterSoundPeerReviewEventCreateController.java
index 96c14c690..1dc7f19a4 100644
--- a/src/main/java/ai/elimu/web/content/peer_review/LetterSoundPeerReviewEventCreateController.java
+++ b/src/main/java/ai/elimu/web/content/peer_review/LetterSoundPeerReviewEventCreateController.java
@@ -14,7 +14,7 @@
import ai.elimu.web.context.EnvironmentContextLoaderListener;
import java.util.Calendar;
import java.util.stream.Collectors;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/ai/elimu/web/content/peer_review/NumberPeerReviewEventCreateController.java b/src/main/java/ai/elimu/web/content/peer_review/NumberPeerReviewEventCreateController.java
index 883270c12..f025d9cca 100644
--- a/src/main/java/ai/elimu/web/content/peer_review/NumberPeerReviewEventCreateController.java
+++ b/src/main/java/ai/elimu/web/content/peer_review/NumberPeerReviewEventCreateController.java
@@ -12,7 +12,7 @@
import ai.elimu.util.DiscordHelper;
import ai.elimu.web.context.EnvironmentContextLoaderListener;
import java.util.Calendar;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/ai/elimu/web/content/peer_review/StoryBookPeerReviewEventCreateController.java b/src/main/java/ai/elimu/web/content/peer_review/StoryBookPeerReviewEventCreateController.java
index a6f5cb485..265783285 100644
--- a/src/main/java/ai/elimu/web/content/peer_review/StoryBookPeerReviewEventCreateController.java
+++ b/src/main/java/ai/elimu/web/content/peer_review/StoryBookPeerReviewEventCreateController.java
@@ -12,7 +12,7 @@
import ai.elimu.util.DiscordHelper;
import ai.elimu.web.context.EnvironmentContextLoaderListener;
import java.util.Calendar;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/ai/elimu/web/content/peer_review/WordPeerReviewEventCreateController.java b/src/main/java/ai/elimu/web/content/peer_review/WordPeerReviewEventCreateController.java
index 95e4c8bae..aab25fac6 100644
--- a/src/main/java/ai/elimu/web/content/peer_review/WordPeerReviewEventCreateController.java
+++ b/src/main/java/ai/elimu/web/content/peer_review/WordPeerReviewEventCreateController.java
@@ -12,7 +12,7 @@
import ai.elimu.util.DiscordHelper;
import ai.elimu.web.context.EnvironmentContextLoaderListener;
import java.util.Calendar;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/ai/elimu/web/content/sound/SoundCreateController.java b/src/main/java/ai/elimu/web/content/sound/SoundCreateController.java
index 0d33cc082..6b4ba1904 100644
--- a/src/main/java/ai/elimu/web/content/sound/SoundCreateController.java
+++ b/src/main/java/ai/elimu/web/content/sound/SoundCreateController.java
@@ -2,7 +2,7 @@
import ai.elimu.dao.SoundContributionEventDao;
import java.util.Calendar;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import javax.validation.Valid;
import org.apache.commons.lang.StringUtils;
@@ -21,7 +21,7 @@
import ai.elimu.model.contributor.SoundContributionEvent;
import ai.elimu.util.DiscordHelper;
import ai.elimu.web.context.EnvironmentContextLoaderListener;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
@Controller
@RequestMapping("/content/sound/create")
diff --git a/src/main/java/ai/elimu/web/content/sound/SoundCsvExportController.java b/src/main/java/ai/elimu/web/content/sound/SoundCsvExportController.java
index 9a67d2b1c..edb666809 100644
--- a/src/main/java/ai/elimu/web/content/sound/SoundCsvExportController.java
+++ b/src/main/java/ai/elimu/web/content/sound/SoundCsvExportController.java
@@ -11,7 +11,7 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
import org.apache.logging.log4j.LogManager;
diff --git a/src/main/java/ai/elimu/web/content/sound/SoundEditController.java b/src/main/java/ai/elimu/web/content/sound/SoundEditController.java
index dd6e20b82..0e8d0bd24 100644
--- a/src/main/java/ai/elimu/web/content/sound/SoundEditController.java
+++ b/src/main/java/ai/elimu/web/content/sound/SoundEditController.java
@@ -3,7 +3,7 @@
import ai.elimu.dao.LetterSoundDao;
import ai.elimu.dao.SoundContributionEventDao;
import java.util.Calendar;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import javax.validation.Valid;
import org.apache.commons.lang.StringUtils;
@@ -23,7 +23,7 @@
import ai.elimu.model.contributor.SoundContributionEvent;
import ai.elimu.util.DiscordHelper;
import ai.elimu.web.context.EnvironmentContextLoaderListener;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
@Controller
@RequestMapping("/content/sound/edit")
diff --git a/src/main/java/ai/elimu/web/content/storybook/StoryBookCreateController.java b/src/main/java/ai/elimu/web/content/storybook/StoryBookCreateController.java
index 92a46fbd8..1c939e7bd 100644
--- a/src/main/java/ai/elimu/web/content/storybook/StoryBookCreateController.java
+++ b/src/main/java/ai/elimu/web/content/storybook/StoryBookCreateController.java
@@ -16,8 +16,8 @@
import ai.elimu.model.v2.enums.ReadingLevel;
import ai.elimu.util.DiscordHelper;
import ai.elimu.web.context.EnvironmentContextLoaderListener;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/ai/elimu/web/content/storybook/StoryBookCreateFromEPubController.java b/src/main/java/ai/elimu/web/content/storybook/StoryBookCreateFromEPubController.java
index 52c128782..123a7fc30 100644
--- a/src/main/java/ai/elimu/web/content/storybook/StoryBookCreateFromEPubController.java
+++ b/src/main/java/ai/elimu/web/content/storybook/StoryBookCreateFromEPubController.java
@@ -42,9 +42,9 @@
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.support.ByteArrayMultipartFileEditor;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileNotFoundException;
diff --git a/src/main/java/ai/elimu/web/content/storybook/StoryBookCsvExportController.java b/src/main/java/ai/elimu/web/content/storybook/StoryBookCsvExportController.java
index ccf509e36..c40c677dd 100644
--- a/src/main/java/ai/elimu/web/content/storybook/StoryBookCsvExportController.java
+++ b/src/main/java/ai/elimu/web/content/storybook/StoryBookCsvExportController.java
@@ -22,7 +22,7 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
import org.apache.logging.log4j.LogManager;
diff --git a/src/main/java/ai/elimu/web/content/storybook/StoryBookEditController.java b/src/main/java/ai/elimu/web/content/storybook/StoryBookEditController.java
index a2ca52fcb..86b50b659 100644
--- a/src/main/java/ai/elimu/web/content/storybook/StoryBookEditController.java
+++ b/src/main/java/ai/elimu/web/content/storybook/StoryBookEditController.java
@@ -4,7 +4,7 @@
import java.util.Calendar;
import java.util.List;
import java.util.Map;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import org.apache.logging.log4j.Logger;
@@ -36,7 +36,7 @@
import ai.elimu.web.context.EnvironmentContextLoaderListener;
import java.util.ArrayList;
import java.util.HashMap;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/ai/elimu/web/content/storybook/StoryBookPeerReviewsController.java b/src/main/java/ai/elimu/web/content/storybook/StoryBookPeerReviewsController.java
index b3e7a70b5..538e80796 100644
--- a/src/main/java/ai/elimu/web/content/storybook/StoryBookPeerReviewsController.java
+++ b/src/main/java/ai/elimu/web/content/storybook/StoryBookPeerReviewsController.java
@@ -9,7 +9,7 @@
import ai.elimu.model.contributor.StoryBookPeerReviewEvent;
import java.util.ArrayList;
import java.util.List;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/ai/elimu/web/content/storybook/chapter/StoryBookChapterCreateController.java b/src/main/java/ai/elimu/web/content/storybook/chapter/StoryBookChapterCreateController.java
index c560d90b1..98667235e 100644
--- a/src/main/java/ai/elimu/web/content/storybook/chapter/StoryBookChapterCreateController.java
+++ b/src/main/java/ai/elimu/web/content/storybook/chapter/StoryBookChapterCreateController.java
@@ -14,7 +14,7 @@
import ai.elimu.web.context.EnvironmentContextLoaderListener;
import java.util.Calendar;
import java.util.List;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import javax.validation.Valid;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/src/main/java/ai/elimu/web/content/storybook/chapter/StoryBookChapterDeleteController.java b/src/main/java/ai/elimu/web/content/storybook/chapter/StoryBookChapterDeleteController.java
index 94deeb9ba..499a2a5d4 100644
--- a/src/main/java/ai/elimu/web/content/storybook/chapter/StoryBookChapterDeleteController.java
+++ b/src/main/java/ai/elimu/web/content/storybook/chapter/StoryBookChapterDeleteController.java
@@ -22,7 +22,7 @@
import ai.elimu.web.context.EnvironmentContextLoaderListener;
import java.util.Calendar;
import java.util.List;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/ai/elimu/web/content/storybook/paragraph/StoryBookParagraphCreateController.java b/src/main/java/ai/elimu/web/content/storybook/paragraph/StoryBookParagraphCreateController.java
index 62dc8725d..e08ec57f2 100644
--- a/src/main/java/ai/elimu/web/content/storybook/paragraph/StoryBookParagraphCreateController.java
+++ b/src/main/java/ai/elimu/web/content/storybook/paragraph/StoryBookParagraphCreateController.java
@@ -17,8 +17,8 @@
import ai.elimu.web.context.EnvironmentContextLoaderListener;
import java.util.Calendar;
import java.util.List;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
import javax.validation.Valid;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/ai/elimu/web/content/storybook/paragraph/StoryBookParagraphDeleteController.java b/src/main/java/ai/elimu/web/content/storybook/paragraph/StoryBookParagraphDeleteController.java
index 482fc621d..6b96061c1 100644
--- a/src/main/java/ai/elimu/web/content/storybook/paragraph/StoryBookParagraphDeleteController.java
+++ b/src/main/java/ai/elimu/web/content/storybook/paragraph/StoryBookParagraphDeleteController.java
@@ -17,7 +17,7 @@
import ai.elimu.web.context.EnvironmentContextLoaderListener;
import java.util.Calendar;
import java.util.List;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
diff --git a/src/main/java/ai/elimu/web/content/storybook/paragraph/StoryBookParagraphEditController.java b/src/main/java/ai/elimu/web/content/storybook/paragraph/StoryBookParagraphEditController.java
index 36baa145e..15c1c3979 100644
--- a/src/main/java/ai/elimu/web/content/storybook/paragraph/StoryBookParagraphEditController.java
+++ b/src/main/java/ai/elimu/web/content/storybook/paragraph/StoryBookParagraphEditController.java
@@ -13,8 +13,8 @@
import ai.elimu.util.DiscordHelper;
import ai.elimu.web.context.EnvironmentContextLoaderListener;
import java.util.Calendar;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
import javax.validation.Valid;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager;
diff --git a/src/main/java/ai/elimu/web/content/syllable/SyllableCsvExportController.java b/src/main/java/ai/elimu/web/content/syllable/SyllableCsvExportController.java
index d2922c4c9..67b883336 100644
--- a/src/main/java/ai/elimu/web/content/syllable/SyllableCsvExportController.java
+++ b/src/main/java/ai/elimu/web/content/syllable/SyllableCsvExportController.java
@@ -13,7 +13,7 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.logging.log4j.LogManager;
import org.springframework.web.bind.annotation.RequestMethod;
diff --git a/src/main/java/ai/elimu/web/content/word/WordCreateController.java b/src/main/java/ai/elimu/web/content/word/WordCreateController.java
index b89ac623d..b11087df6 100644
--- a/src/main/java/ai/elimu/web/content/word/WordCreateController.java
+++ b/src/main/java/ai/elimu/web/content/word/WordCreateController.java
@@ -25,8 +25,8 @@
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/ai/elimu/web/content/word/WordCsvExportController.java b/src/main/java/ai/elimu/web/content/word/WordCsvExportController.java
index 07ee8582c..7a1111e73 100644
--- a/src/main/java/ai/elimu/web/content/word/WordCsvExportController.java
+++ b/src/main/java/ai/elimu/web/content/word/WordCsvExportController.java
@@ -15,7 +15,7 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
import org.apache.logging.log4j.LogManager;
diff --git a/src/main/java/ai/elimu/web/content/word/WordEditController.java b/src/main/java/ai/elimu/web/content/word/WordEditController.java
index 21e3d9064..ee942cd4f 100644
--- a/src/main/java/ai/elimu/web/content/word/WordEditController.java
+++ b/src/main/java/ai/elimu/web/content/word/WordEditController.java
@@ -29,8 +29,8 @@
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/src/main/java/ai/elimu/web/content/word/WordPeerReviewsController.java b/src/main/java/ai/elimu/web/content/word/WordPeerReviewsController.java
index 1f3bff4f9..24319d631 100644
--- a/src/main/java/ai/elimu/web/content/word/WordPeerReviewsController.java
+++ b/src/main/java/ai/elimu/web/content/word/WordPeerReviewsController.java
@@ -13,7 +13,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/src/main/java/ai/elimu/web/context/EnvironmentContextLoaderListener.java b/src/main/java/ai/elimu/web/context/EnvironmentContextLoaderListener.java
index 2e6202fd7..5a0ce59f1 100644
--- a/src/main/java/ai/elimu/web/context/EnvironmentContextLoaderListener.java
+++ b/src/main/java/ai/elimu/web/context/EnvironmentContextLoaderListener.java
@@ -5,8 +5,8 @@
import java.io.InputStream;
import java.util.Properties;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletContextEvent;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletContextEvent;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.Logger;
@@ -26,7 +26,7 @@
import org.springframework.web.context.support.WebApplicationContextUtils;
/**
- * Use {@link WebApplicationContextUtils#getWebApplicationContext(javax.servlet.ServletContext)}
+ * Use {@link WebApplicationContextUtils#getWebApplicationContext(jakarta.servlet.ServletContext)}
* to access this listener anywhere in the web application, outside of the framework.
*/
public class EnvironmentContextLoaderListener extends ContextLoaderListener {
diff --git a/src/main/java/ai/elimu/web/contributor/ContributorCsvExportController.java b/src/main/java/ai/elimu/web/contributor/ContributorCsvExportController.java
index 4ea28dad0..5e01530ee 100644
--- a/src/main/java/ai/elimu/web/contributor/ContributorCsvExportController.java
+++ b/src/main/java/ai/elimu/web/contributor/ContributorCsvExportController.java
@@ -21,7 +21,7 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
import org.apache.logging.log4j.LogManager;
diff --git a/src/main/java/ai/elimu/web/download/ApkController.java b/src/main/java/ai/elimu/web/download/ApkController.java
index 712221d9c..4ba5d93d8 100644
--- a/src/main/java/ai/elimu/web/download/ApkController.java
+++ b/src/main/java/ai/elimu/web/download/ApkController.java
@@ -3,7 +3,7 @@
import java.io.EOFException;
import java.io.IOException;
import java.io.OutputStream;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -11,7 +11,7 @@
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import ai.elimu.dao.ApplicationDao;
import ai.elimu.dao.ApplicationVersionDao;
import ai.elimu.model.admin.Application;
diff --git a/src/main/java/ai/elimu/web/download/AudioController.java b/src/main/java/ai/elimu/web/download/AudioController.java
index 1a95e1c30..9db655d12 100644
--- a/src/main/java/ai/elimu/web/download/AudioController.java
+++ b/src/main/java/ai/elimu/web/download/AudioController.java
@@ -10,7 +10,7 @@
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import ai.elimu.dao.AudioDao;
import ai.elimu.model.content.multimedia.Audio;
import org.apache.logging.log4j.LogManager;
diff --git a/src/main/java/ai/elimu/web/download/ImageController.java b/src/main/java/ai/elimu/web/download/ImageController.java
index d35710a8c..6b7eafebe 100644
--- a/src/main/java/ai/elimu/web/download/ImageController.java
+++ b/src/main/java/ai/elimu/web/download/ImageController.java
@@ -10,7 +10,7 @@
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import ai.elimu.dao.ImageDao;
import ai.elimu.model.content.multimedia.Image;
import org.apache.logging.log4j.LogManager;
diff --git a/src/main/java/ai/elimu/web/download/VideoController.java b/src/main/java/ai/elimu/web/download/VideoController.java
index 50a0cdfe0..2a576b8f6 100644
--- a/src/main/java/ai/elimu/web/download/VideoController.java
+++ b/src/main/java/ai/elimu/web/download/VideoController.java
@@ -10,7 +10,7 @@
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import ai.elimu.dao.VideoDao;
import ai.elimu.model.content.multimedia.Video;
import org.apache.logging.log4j.LogManager;
diff --git a/src/main/java/ai/elimu/web/servlet/CustomDispatcherServlet.java b/src/main/java/ai/elimu/web/servlet/CustomDispatcherServlet.java
index cf5386908..b94ca6fa7 100644
--- a/src/main/java/ai/elimu/web/servlet/CustomDispatcherServlet.java
+++ b/src/main/java/ai/elimu/web/servlet/CustomDispatcherServlet.java
@@ -13,7 +13,7 @@
import ai.elimu.web.context.EnvironmentContextLoaderListener;
import java.io.File;
import java.util.EnumSet;
-import javax.persistence.Entity;
+import jakarta.persistence.Entity;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.hibernate.boot.Metadata;
@@ -71,7 +71,7 @@ private void createJpaSchemaExport() {
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
// .configure("META-INF/jpa-persistence.xml")
- .applySetting("hibernate.dialect", org.hibernate.dialect.MySQL5Dialect.class.getName())
+ .applySetting("hibernate.dialect", org.hibernate.dialect.MySQLDialect.class.getName())
.applySetting("hibernate.hbm2ddl.auto", "update")
.applySetting(AvailableSettings.CONNECTION_PROVIDER, connectionProviderWeb)
.build();
diff --git a/src/main/java/ai/elimu/web/servlet/CustomSimpleMappingExceptionResolver.java b/src/main/java/ai/elimu/web/servlet/CustomSimpleMappingExceptionResolver.java
index 3182aa84d..88702780a 100644
--- a/src/main/java/ai/elimu/web/servlet/CustomSimpleMappingExceptionResolver.java
+++ b/src/main/java/ai/elimu/web/servlet/CustomSimpleMappingExceptionResolver.java
@@ -1,6 +1,6 @@
package ai.elimu.web.servlet;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/src/main/java/ai/elimu/web/tags/AsideTag.java b/src/main/java/ai/elimu/web/tags/AsideTag.java
index 0e83749f6..ce11cdcb6 100644
--- a/src/main/java/ai/elimu/web/tags/AsideTag.java
+++ b/src/main/java/ai/elimu/web/tags/AsideTag.java
@@ -1,7 +1,7 @@
package ai.elimu.web.tags;
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.tagext.BodyTagSupport;
+import jakarta.servlet.jsp.JspException;
+import jakarta.servlet.jsp.tagext.BodyTagSupport;
/**
* Implementation of the {@code content:aside} tag.
diff --git a/src/main/java/ai/elimu/web/tags/BannerTag.java b/src/main/java/ai/elimu/web/tags/BannerTag.java
index e41466c33..28d7fccb6 100644
--- a/src/main/java/ai/elimu/web/tags/BannerTag.java
+++ b/src/main/java/ai/elimu/web/tags/BannerTag.java
@@ -1,7 +1,7 @@
package ai.elimu.web.tags;
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.tagext.BodyTagSupport;
+import jakarta.servlet.jsp.JspException;
+import jakarta.servlet.jsp.tagext.BodyTagSupport;
/**
* Implementation of the {@code content:banner} tag.
diff --git a/src/main/java/ai/elimu/web/tags/GetAsideTag.java b/src/main/java/ai/elimu/web/tags/GetAsideTag.java
index 860926c6e..a3b34df78 100644
--- a/src/main/java/ai/elimu/web/tags/GetAsideTag.java
+++ b/src/main/java/ai/elimu/web/tags/GetAsideTag.java
@@ -2,9 +2,9 @@
import java.io.IOException;
import java.io.Writer;
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.JspTagException;
-import javax.servlet.jsp.tagext.TagSupport;
+import jakarta.servlet.jsp.JspException;
+import jakarta.servlet.jsp.JspTagException;
+import jakarta.servlet.jsp.tagext.TagSupport;
/**
* Implementation of the {@code content:getaside} tag.
diff --git a/src/main/java/ai/elimu/web/tags/GetBannerTag.java b/src/main/java/ai/elimu/web/tags/GetBannerTag.java
index e3d688329..2b4c0a766 100644
--- a/src/main/java/ai/elimu/web/tags/GetBannerTag.java
+++ b/src/main/java/ai/elimu/web/tags/GetBannerTag.java
@@ -2,9 +2,9 @@
import java.io.IOException;
import java.io.Writer;
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.JspTagException;
-import javax.servlet.jsp.tagext.TagSupport;
+import jakarta.servlet.jsp.JspException;
+import jakarta.servlet.jsp.JspTagException;
+import jakarta.servlet.jsp.tagext.TagSupport;
/**
* Implementation of the {@code content:getbanner} tag.
diff --git a/src/main/java/ai/elimu/web/tags/GetSectionTag.java b/src/main/java/ai/elimu/web/tags/GetSectionTag.java
index 2e0c17f85..cc376d912 100644
--- a/src/main/java/ai/elimu/web/tags/GetSectionTag.java
+++ b/src/main/java/ai/elimu/web/tags/GetSectionTag.java
@@ -2,9 +2,9 @@
import java.io.IOException;
import java.io.Writer;
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.JspTagException;
-import javax.servlet.jsp.tagext.TagSupport;
+import jakarta.servlet.jsp.JspException;
+import jakarta.servlet.jsp.JspTagException;
+import jakarta.servlet.jsp.tagext.TagSupport;
/**
* Implementation of the {@code content:getsection} tag.
diff --git a/src/main/java/ai/elimu/web/tags/GetTitleTag.java b/src/main/java/ai/elimu/web/tags/GetTitleTag.java
index 737d9d576..7ad2eb02e 100644
--- a/src/main/java/ai/elimu/web/tags/GetTitleTag.java
+++ b/src/main/java/ai/elimu/web/tags/GetTitleTag.java
@@ -2,9 +2,9 @@
import java.io.IOException;
import java.io.Writer;
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.JspTagException;
-import javax.servlet.jsp.tagext.TagSupport;
+import jakarta.servlet.jsp.JspException;
+import jakarta.servlet.jsp.JspTagException;
+import jakarta.servlet.jsp.tagext.TagSupport;
/**
* Implementation of the {@code content:gettitle} tag.
diff --git a/src/main/java/ai/elimu/web/tags/SectionTag.java b/src/main/java/ai/elimu/web/tags/SectionTag.java
index ae8231a3e..d33c7aa90 100644
--- a/src/main/java/ai/elimu/web/tags/SectionTag.java
+++ b/src/main/java/ai/elimu/web/tags/SectionTag.java
@@ -1,7 +1,7 @@
package ai.elimu.web.tags;
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.tagext.BodyTagSupport;
+import jakarta.servlet.jsp.JspException;
+import jakarta.servlet.jsp.tagext.BodyTagSupport;
/**
* Implementation of the {@code content:section} tag.
diff --git a/src/main/java/ai/elimu/web/tags/TitleTag.java b/src/main/java/ai/elimu/web/tags/TitleTag.java
index d82fbb646..668ccb0e9 100644
--- a/src/main/java/ai/elimu/web/tags/TitleTag.java
+++ b/src/main/java/ai/elimu/web/tags/TitleTag.java
@@ -1,7 +1,7 @@
package ai.elimu.web.tags;
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.tagext.BodyTagSupport;
+import jakarta.servlet.jsp.JspException;
+import jakarta.servlet.jsp.tagext.BodyTagSupport;
/**
* Implementation of the {@code content:title} tag.
diff --git a/src/main/resources/META-INF/jpa-persistence.xml b/src/main/resources/META-INF/jpa-persistence.xml
index ce0663ae6..079193722 100644
--- a/src/main/resources/META-INF/jpa-persistence.xml
+++ b/src/main/resources/META-INF/jpa-persistence.xml
@@ -9,6 +9,7 @@
org.hibernate.ejb.HibernatePersistence
+
diff --git a/src/main/resources/META-INF/jpa-schema-export.sql b/src/main/resources/META-INF/jpa-schema-export.sql
index 24c4b1d18..f36c3d583 100644
--- a/src/main/resources/META-INF/jpa-schema-export.sql
+++ b/src/main/resources/META-INF/jpa-schema-export.sql
@@ -126,17 +126,17 @@
packageName varchar(255),
contributor_id bigint,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Application_literacySkills (
Application_id bigint not null,
literacySkills varchar(255)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Application_numeracySkills (
Application_id bigint not null,
numeracySkills varchar(255)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table ApplicationVersion (
id bigint not null auto_increment,
@@ -144,7 +144,7 @@
checksumMd5 varchar(255),
contentType varchar(255),
fileSizeInKb integer,
- icon longblob,
+ icon mediumblob,
label varchar(255),
minSdkVersion integer,
timeUploaded datetime,
@@ -153,7 +153,7 @@
application_id bigint,
contributor_id bigint,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Audio (
id bigint not null auto_increment,
@@ -162,7 +162,7 @@
revisionNumber integer,
timeLastUpdate datetime,
usageCount integer,
- attributionUrl varchar(1000),
+ attributionUrl text,
contentLicense varchar(255),
contentType varchar(255),
audioFormat varchar(255),
@@ -173,56 +173,56 @@
storyBookParagraph_id bigint,
word_id bigint,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Audio_Letter (
Audio_id bigint not null,
letters_id bigint not null,
primary key (Audio_id, letters_id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Audio_literacySkills (
Audio_id bigint not null,
literacySkills varchar(255)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Audio_Number (
Audio_id bigint not null,
numbers_id bigint not null,
primary key (Audio_id, numbers_id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Audio_numeracySkills (
Audio_id bigint not null,
numeracySkills varchar(255)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Audio_Word (
Audio_id bigint not null,
words_id bigint not null,
primary key (Audio_id, words_id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table AudioContributionEvent (
id bigint not null auto_increment,
- comment varchar(1000),
+ comment text,
revisionNumber integer,
timeSpentMs bigint,
timestamp datetime,
contributor_id bigint,
audio_id bigint,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table AudioPeerReviewEvent (
id bigint not null auto_increment,
approved bit,
- comment varchar(1000),
+ comment text,
timestamp datetime,
contributor_id bigint,
audioContributionEvent_id bigint,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Contributor (
id bigint not null auto_increment,
@@ -230,7 +230,7 @@
firstName varchar(255),
imageUrl varchar(255),
lastName varchar(255),
- motivation varchar(1000),
+ motivation text,
occupation varchar(255),
providerIdDiscord varchar(255),
providerIdGitHub varchar(255),
@@ -240,20 +240,20 @@
usernameDiscord varchar(255),
usernameGitHub varchar(255),
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Contributor_roles (
Contributor_id bigint not null,
roles varchar(255)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table DbMigration (
id bigint not null auto_increment,
calendar datetime,
- script varchar(10000),
+ script text,
version integer,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Device (
id bigint not null auto_increment,
@@ -265,7 +265,7 @@
remoteAddress varchar(255),
timeRegistered datetime,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Emoji (
id bigint not null auto_increment,
@@ -275,16 +275,16 @@
timeLastUpdate datetime,
usageCount integer,
glyph varchar(4),
- unicodeEmojiVersion double precision,
- unicodeVersion double precision,
+ unicodeEmojiVersion float(53),
+ unicodeVersion float(53),
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Emoji_Word (
Emoji_id bigint not null,
words_id bigint not null,
primary key (Emoji_id, words_id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Image (
id bigint not null auto_increment,
@@ -293,55 +293,55 @@
revisionNumber integer,
timeLastUpdate datetime,
usageCount integer,
- attributionUrl varchar(1000),
+ attributionUrl text,
contentLicense varchar(255),
contentType varchar(255),
- bytes longblob,
+ bytes mediumblob,
cid varchar(255),
dominantColor varchar(255),
imageFormat varchar(255),
title varchar(255),
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Image_Letter (
Image_id bigint not null,
letters_id bigint not null,
primary key (Image_id, letters_id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Image_literacySkills (
Image_id bigint not null,
literacySkills varchar(255)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Image_Number (
Image_id bigint not null,
numbers_id bigint not null,
primary key (Image_id, numbers_id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Image_numeracySkills (
Image_id bigint not null,
numeracySkills varchar(255)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Image_Word (
Image_id bigint not null,
words_id bigint not null,
primary key (Image_id, words_id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table ImageContributionEvent (
id bigint not null auto_increment,
- comment varchar(1000),
+ comment text,
revisionNumber integer,
timeSpentMs bigint,
timestamp datetime,
contributor_id bigint,
image_id bigint,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Letter (
id bigint not null auto_increment,
@@ -353,22 +353,22 @@
diacritic bit not null,
text varchar(2),
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table LetterContributionEvent (
id bigint not null auto_increment,
- comment varchar(1000),
+ comment text,
revisionNumber integer,
timeSpentMs bigint,
timestamp datetime,
contributor_id bigint,
letter_id bigint,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table LetterLearningEvent (
id bigint not null auto_increment,
- additionalData varchar(1024),
+ additionalData text,
androidId varchar(255),
learningEventType varchar(255),
packageName varchar(255),
@@ -377,7 +377,7 @@
application_id bigint,
letter_id bigint,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table LetterSound (
id bigint not null auto_increment,
@@ -387,42 +387,42 @@
timeLastUpdate datetime,
usageCount integer,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table LetterSound_Letter (
LetterSound_id bigint not null,
letters_id bigint not null,
letters_ORDER integer not null,
primary key (LetterSound_id, letters_ORDER)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table LetterSound_Sound (
LetterSound_id bigint not null,
sounds_id bigint not null,
sounds_ORDER integer not null,
primary key (LetterSound_id, sounds_ORDER)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table LetterSoundContributionEvent (
id bigint not null auto_increment,
- comment varchar(1000),
+ comment text,
revisionNumber integer,
timeSpentMs bigint,
timestamp datetime,
contributor_id bigint,
letterSound_id bigint,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table LetterSoundPeerReviewEvent (
id bigint not null auto_increment,
approved bit,
- comment varchar(1000),
+ comment text,
timestamp datetime,
contributor_id bigint,
letterSoundContributionEvent_id bigint,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Number (
id bigint not null auto_increment,
@@ -434,35 +434,35 @@
symbol varchar(255),
value integer,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Number_Word (
Number_id bigint not null,
words_id bigint not null,
words_ORDER integer not null,
primary key (Number_id, words_ORDER)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table NumberContributionEvent (
id bigint not null auto_increment,
- comment varchar(1000),
+ comment text,
revisionNumber integer,
timeSpentMs bigint,
timestamp datetime,
contributor_id bigint,
number_id bigint,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table NumberPeerReviewEvent (
id bigint not null auto_increment,
approved bit,
- comment varchar(1000),
+ comment text,
timestamp datetime,
contributor_id bigint,
numberContributionEvent_id bigint,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Sound (
id bigint not null auto_increment,
@@ -484,18 +484,18 @@
vowelLength varchar(255),
audio_id bigint,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table SoundContributionEvent (
id bigint not null auto_increment,
- comment varchar(1000),
+ comment text,
revisionNumber integer,
timeSpentMs bigint,
timestamp datetime,
contributor_id bigint,
sound_id bigint,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table StoryBook (
id bigint not null auto_increment,
@@ -504,14 +504,14 @@
revisionNumber integer,
timeLastUpdate datetime,
usageCount integer,
- attributionUrl varchar(1000),
+ attributionUrl text,
contentLicense varchar(255),
- description varchar(1024),
+ description text,
readingLevel varchar(255),
title varchar(255),
coverImage_id bigint,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table StoryBookChapter (
id bigint not null auto_increment,
@@ -519,24 +519,24 @@
image_id bigint,
storyBook_id bigint,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table StoryBookContributionEvent (
id bigint not null auto_increment,
- comment varchar(1000),
+ comment text,
revisionNumber integer,
timeSpentMs bigint,
timestamp datetime,
- paragraphTextAfter varchar(1000),
- paragraphTextBefore varchar(1000),
+ paragraphTextAfter text,
+ paragraphTextBefore text,
contributor_id bigint,
storyBook_id bigint,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table StoryBookLearningEvent (
id bigint not null auto_increment,
- additionalData varchar(1024),
+ additionalData text,
androidId varchar(255),
learningEventType varchar(255),
packageName varchar(255),
@@ -546,32 +546,32 @@
application_id bigint,
storyBook_id bigint,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table StoryBookParagraph (
id bigint not null auto_increment,
- originalText varchar(1024),
+ originalText text,
sortOrder integer,
storyBookChapter_id bigint,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table StoryBookParagraph_Word (
StoryBookParagraph_id bigint not null,
words_id bigint not null,
words_ORDER integer not null,
primary key (StoryBookParagraph_id, words_ORDER)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table StoryBookPeerReviewEvent (
id bigint not null auto_increment,
approved bit,
- comment varchar(1000),
+ comment text,
timestamp datetime,
contributor_id bigint,
storyBookContributionEvent_id bigint,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Syllable (
id bigint not null auto_increment,
@@ -582,14 +582,14 @@
usageCount integer,
text varchar(255),
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Syllable_Sound (
Syllable_id bigint not null,
sounds_id bigint not null,
sounds_ORDER integer not null,
primary key (Syllable_id, sounds_ORDER)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Video (
id bigint not null auto_increment,
@@ -598,47 +598,47 @@
revisionNumber integer,
timeLastUpdate datetime,
usageCount integer,
- attributionUrl varchar(1000),
+ attributionUrl text,
contentLicense varchar(255),
contentType varchar(255),
bytes longblob,
- thumbnail longblob,
+ thumbnail mediumblob,
title varchar(255),
videoFormat varchar(255),
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Video_Letter (
Video_id bigint not null,
letters_id bigint not null,
primary key (Video_id, letters_id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Video_literacySkills (
Video_id bigint not null,
literacySkills varchar(255)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Video_Number (
Video_id bigint not null,
numbers_id bigint not null,
primary key (Video_id, numbers_id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Video_numeracySkills (
Video_id bigint not null,
numeracySkills varchar(255)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Video_Word (
Video_id bigint not null,
words_id bigint not null,
primary key (Video_id, words_id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table VideoLearningEvent (
id bigint not null auto_increment,
- additionalData varchar(1024),
+ additionalData text,
androidId varchar(255),
learningEventType varchar(255),
packageName varchar(255),
@@ -648,7 +648,7 @@
application_id bigint,
video_id bigint,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Word (
id bigint not null auto_increment,
@@ -662,29 +662,29 @@
wordType varchar(255),
rootWord_id bigint,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table Word_LetterSound (
Word_id bigint not null,
letterSounds_id bigint not null,
letterSounds_ORDER integer not null,
primary key (Word_id, letterSounds_ORDER)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table WordContributionEvent (
id bigint not null auto_increment,
- comment varchar(1000),
+ comment text,
revisionNumber integer,
timeSpentMs bigint,
timestamp datetime,
contributor_id bigint,
word_id bigint,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table WordLearningEvent (
id bigint not null auto_increment,
- additionalData varchar(1024),
+ additionalData text,
androidId varchar(255),
learningEventType varchar(255),
packageName varchar(255),
@@ -693,17 +693,17 @@
application_id bigint,
word_id bigint,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
create table WordPeerReviewEvent (
id bigint not null auto_increment,
approved bit,
- comment varchar(1000),
+ comment text,
timestamp datetime,
contributor_id bigint,
wordContributionEvent_id bigint,
primary key (id)
- ) engine=MyISAM;
+ ) type=MyISAM;
alter table Contributor
add constraint UK_se15thb3bqtr3sw28rgf1v8ia unique (email);
diff --git a/src/main/resources/jdbc_PROD.properties b/src/main/resources/jdbc_PROD.properties
index 93971580f..4dd4d5b8c 100644
--- a/src/main/resources/jdbc_PROD.properties
+++ b/src/main/resources/jdbc_PROD.properties
@@ -1,6 +1,6 @@
# JPA Settings
jpa.database=MYSQL
-jpa.databasePlatform=org.hibernate.dialect.MySQL5Dialect
+jpa.databasePlatform=org.hibernate.dialect.MySQLDialect
jpa.generateDdl=false
jpa.showSql=false
diff --git a/src/main/resources/jdbc_TEST.properties b/src/main/resources/jdbc_TEST.properties
index 93971580f..4dd4d5b8c 100644
--- a/src/main/resources/jdbc_TEST.properties
+++ b/src/main/resources/jdbc_TEST.properties
@@ -1,6 +1,6 @@
# JPA Settings
jpa.database=MYSQL
-jpa.databasePlatform=org.hibernate.dialect.MySQL5Dialect
+jpa.databasePlatform=org.hibernate.dialect.MySQLDialect
jpa.generateDdl=false
jpa.showSql=false
diff --git a/src/main/webapp/WEB-INF/jsp/taglibs.jsp b/src/main/webapp/WEB-INF/jsp/taglibs.jsp
index 9a118da3b..729dcd36d 100644
--- a/src/main/webapp/WEB-INF/jsp/taglibs.jsp
+++ b/src/main/webapp/WEB-INF/jsp/taglibs.jsp
@@ -1,6 +1,6 @@
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
-<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+<%@ taglib prefix="c" uri="jakarta.tags.core" %>
+<%@ taglib prefix="fn" uri="jakarta.tags.functions" %>
+<%@ taglib prefix="fmt" uri="jakarta.tags.fmt" %>
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
diff --git a/src/main/webapp/WEB-INF/spring/applicationContext.xml b/src/main/webapp/WEB-INF/spring/applicationContext.xml
index 94885b7a1..d80479d06 100644
--- a/src/main/webapp/WEB-INF/spring/applicationContext.xml
+++ b/src/main/webapp/WEB-INF/spring/applicationContext.xml
@@ -62,7 +62,7 @@
-
+
diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml
index 0acf0d8a4..79b78d91d 100644
--- a/src/main/webapp/WEB-INF/web.xml
+++ b/src/main/webapp/WEB-INF/web.xml
@@ -1,5 +1,9 @@
-
+
contextConfigLocation
/WEB-INF/spring/applicationContext*.xml
diff --git a/src/test/java/ai/elimu/rest/v2/analytics/VideoLearningEventsRestControllerTest.java b/src/test/java/ai/elimu/rest/v2/analytics/VideoLearningEventsRestControllerTest.java
index 2285a7b03..a9ea001ba 100644
--- a/src/test/java/ai/elimu/rest/v2/analytics/VideoLearningEventsRestControllerTest.java
+++ b/src/test/java/ai/elimu/rest/v2/analytics/VideoLearningEventsRestControllerTest.java
@@ -9,7 +9,7 @@
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.web.multipart.MultipartFile;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.*;