diff --git a/pom-dependency-tree.txt b/pom-dependency-tree.txt index b631b2962..1e06a295a 100644 --- a/pom-dependency-tree.txt +++ b/pom-dependency-tree.txt @@ -1,4 +1,4 @@ -ai.elimu:webapp:war:2.6.56-SNAPSHOT +ai.elimu:webapp:war:2.6.58-SNAPSHOT +- ai.elimu:model:jar:model-2.0.111:compile | \- com.google.code.gson:gson:jar:2.13.1:compile | \- com.google.errorprone:error_prone_annotations:jar:2.38.0:compile diff --git a/src/main/java/ai/elimu/dao/jpa/LetterSoundAssessmentEventDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/LetterSoundAssessmentEventDaoJpa.java index 3ca2748cb..299f67f84 100644 --- a/src/main/java/ai/elimu/dao/jpa/LetterSoundAssessmentEventDaoJpa.java +++ b/src/main/java/ai/elimu/dao/jpa/LetterSoundAssessmentEventDaoJpa.java @@ -25,7 +25,7 @@ public LetterSoundAssessmentEvent read(Calendar timestamp, String androidId, Str .setParameter("packageName", packageName) .getSingleResult(); } catch (NoResultException e) { - logger.info("LetterSoundAssessmentEvent (" + timestamp.getTimeInMillis() + ", " + androidId + ", \"" + packageName + "\") was not found"); + logger.info("LetterSoundAssessmentEvent (" + timestamp.getTime() + ", " + androidId + ", " + packageName + ") was not found"); return null; } } diff --git a/src/main/java/ai/elimu/dao/jpa/LetterSoundLearningEventDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/LetterSoundLearningEventDaoJpa.java index db44dba27..19885ad8d 100644 --- a/src/main/java/ai/elimu/dao/jpa/LetterSoundLearningEventDaoJpa.java +++ b/src/main/java/ai/elimu/dao/jpa/LetterSoundLearningEventDaoJpa.java @@ -25,7 +25,7 @@ public LetterSoundLearningEvent read(Calendar timestamp, String androidId, Strin .setParameter("packageName", packageName) .getSingleResult(); } catch (NoResultException e) { - logger.info("LetterSoundLearningEvent (" + timestamp.getTimeInMillis() + ", " + androidId + ", \"" + packageName + "\") was not found"); + logger.info("LetterSoundLearningEvent (" + timestamp.getTime() + ", " + androidId + ", " + packageName + ") was not found"); return null; } } diff --git a/src/main/java/ai/elimu/dao/jpa/NumberLearningEventDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/NumberLearningEventDaoJpa.java index b39d1bddc..fa1b49810 100644 --- a/src/main/java/ai/elimu/dao/jpa/NumberLearningEventDaoJpa.java +++ b/src/main/java/ai/elimu/dao/jpa/NumberLearningEventDaoJpa.java @@ -25,7 +25,7 @@ public NumberLearningEvent read(Calendar timestamp, String androidId, String pac .setParameter("packageName", packageName) .getSingleResult(); } catch (NoResultException e) { - logger.info("NumberLearningEvent (" + timestamp.getTimeInMillis() + ", \"" + androidId + "\", \"" + packageName + "\") was not found"); + logger.info("NumberLearningEvent (" + timestamp.getTime() + ", " + androidId + ", " + packageName + ") was not found"); return null; } } diff --git a/src/main/java/ai/elimu/dao/jpa/StoryBookLearningEventDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/StoryBookLearningEventDaoJpa.java index 173830cd2..3d2ea299a 100644 --- a/src/main/java/ai/elimu/dao/jpa/StoryBookLearningEventDaoJpa.java +++ b/src/main/java/ai/elimu/dao/jpa/StoryBookLearningEventDaoJpa.java @@ -33,7 +33,7 @@ public StoryBookLearningEvent read(Calendar timestamp, String androidId, String .setParameter("packageName", packageName) .getSingleResult(); } catch (NoResultException e) { - logger.info("StoryBookLearningEvent (" + timestamp.getTimeInMillis() + ", " + androidId + ", \"" + packageName + "\") was not found"); + logger.info("StoryBookLearningEvent (" + timestamp.getTime() + ", " + androidId + ", " + packageName + ") was not found"); return null; } } diff --git a/src/main/java/ai/elimu/dao/jpa/VideoLearningEventDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/VideoLearningEventDaoJpa.java index a9df2d654..b705b6624 100644 --- a/src/main/java/ai/elimu/dao/jpa/VideoLearningEventDaoJpa.java +++ b/src/main/java/ai/elimu/dao/jpa/VideoLearningEventDaoJpa.java @@ -26,7 +26,7 @@ public VideoLearningEvent read(Calendar timestamp, String androidId, String pack .setParameter("packageName", packageName) .getSingleResult(); } catch (NoResultException e) { - logger.info("VideoLearningEvent (" + timestamp.getTimeInMillis() + ", " + androidId + ", " + packageName + ") was not found"); + logger.info("VideoLearningEvent (" + timestamp.getTime() + ", " + androidId + ", " + packageName + ") was not found"); return null; } } diff --git a/src/main/java/ai/elimu/dao/jpa/WordAssessmentEventDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/WordAssessmentEventDaoJpa.java index 0be516f64..958cbbc79 100644 --- a/src/main/java/ai/elimu/dao/jpa/WordAssessmentEventDaoJpa.java +++ b/src/main/java/ai/elimu/dao/jpa/WordAssessmentEventDaoJpa.java @@ -25,7 +25,7 @@ public WordAssessmentEvent read(Calendar timestamp, String androidId, String pac .setParameter("packageName", packageName) .getSingleResult(); } catch (NoResultException e) { - logger.info("WordAssessmentEvent (" + timestamp.getTimeInMillis() + ", " + androidId + ", \"" + packageName + "\") was not found"); + logger.info("WordAssessmentEvent (" + timestamp.getTime() + ", " + androidId + ", " + packageName + ") was not found"); return null; } } diff --git a/src/main/java/ai/elimu/dao/jpa/WordLearningEventDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/WordLearningEventDaoJpa.java index 0b664867c..e5fbe046d 100644 --- a/src/main/java/ai/elimu/dao/jpa/WordLearningEventDaoJpa.java +++ b/src/main/java/ai/elimu/dao/jpa/WordLearningEventDaoJpa.java @@ -25,7 +25,7 @@ public WordLearningEvent read(Calendar timestamp, String androidId, String packa .setParameter("packageName", packageName) .getSingleResult(); } catch (NoResultException e) { - logger.info("WordLearningEvent (" + timestamp.getTimeInMillis() + ", " + androidId + ", \"" + packageName + "\") was not found"); + logger.info("WordLearningEvent (" + timestamp.getTime() + ", " + androidId + ", " + packageName + ") was not found"); return null; } } diff --git a/src/main/java/ai/elimu/util/csv/CsvAnalyticsExtractionHelper.java b/src/main/java/ai/elimu/util/csv/CsvAnalyticsExtractionHelper.java index a4c1bb5b6..65a93dd39 100644 --- a/src/main/java/ai/elimu/util/csv/CsvAnalyticsExtractionHelper.java +++ b/src/main/java/ai/elimu/util/csv/CsvAnalyticsExtractionHelper.java @@ -124,7 +124,7 @@ public static List extractLetterSoundLearningEvents(Fi // https://github.com/elimu-ai/analytics/releases/tag/3.4.0 timestampColumnName = "timestamp"; } - long timestampInMillis = Long.valueOf(csvRecord.get(timestampColumnName)); + long timestampInMillis = Long.valueOf(csvRecord.get(timestampColumnName).substring(0, 10)) * 1_000; Calendar timestamp = Calendar.getInstance(TimeZone.getTimeZone("UTC")); timestamp.setTimeInMillis(timestampInMillis); letterSoundLearningEvent.setTimestamp(timestamp); @@ -171,7 +171,7 @@ public static List extractNumberLearningEvents(File csvFile NumberLearningEvent numberLearningEvent = new NumberLearningEvent(); - long timestampInMillis = Long.valueOf(csvRecord.get("timestamp")); + long timestampInMillis = Long.valueOf(csvRecord.get("timestamp").substring(0, 10)) * 1_000; Calendar timestamp = Calendar.getInstance(TimeZone.getTimeZone("UTC")); timestamp.setTimeInMillis(timestampInMillis); numberLearningEvent.setTimestamp(timestamp); @@ -237,7 +237,7 @@ public static List extractWordAssessmentEvents(File csvFile // https://github.com/elimu-ai/analytics/releases/tag/3.4.0 timestampColumnName = "timestamp"; } - long timestampInMillis = Long.valueOf(csvRecord.get(timestampColumnName)); + long timestampInMillis = Long.valueOf(csvRecord.get(timestampColumnName).substring(0, 10)) * 1_000; Calendar timestamp = Calendar.getInstance(TimeZone.getTimeZone("UTC")); timestamp.setTimeInMillis(timestampInMillis); wordAssessmentEvent.setTimestamp(timestamp); @@ -303,7 +303,7 @@ public static List extractWordLearningEvents(File csvFile) { // https://github.com/elimu-ai/analytics/releases/tag/3.4.0 timestampColumnName = "timestamp"; } - long timestampInMillis = Long.valueOf(csvRecord.get(timestampColumnName)); + long timestampInMillis = Long.valueOf(csvRecord.get(timestampColumnName).substring(0, 10)) * 1_000; Calendar timestamp = Calendar.getInstance(TimeZone.getTimeZone("UTC")); timestamp.setTimeInMillis(timestampInMillis); wordLearningEvent.setTimestamp(timestamp); @@ -366,7 +366,7 @@ public static List extractStoryBookLearningEvents(File c // https://github.com/elimu-ai/analytics/releases/tag/3.4.0 timestampColumnName = "timestamp"; } - long timestampInMillis = Long.valueOf(csvRecord.get(timestampColumnName)); + long timestampInMillis = Long.valueOf(csvRecord.get(timestampColumnName).substring(0, 10)) * 1_000; Calendar timestamp = Calendar.getInstance(TimeZone.getTimeZone("UTC")); timestamp.setTimeInMillis(timestampInMillis); storyBookLearningEvent.setTimestamp(timestamp); @@ -427,7 +427,7 @@ public static List extractVideoLearningEvents(File csvFile) VideoLearningEvent videoLearningEvent = new VideoLearningEvent(); - long timestampInMillis = Long.valueOf(csvRecord.get("timestamp")); + long timestampInMillis = Long.valueOf(csvRecord.get("timestamp").substring(0, 10)) * 1_000; Calendar timestamp = Calendar.getInstance(TimeZone.getTimeZone("UTC")); timestamp.setTimeInMillis(timestampInMillis); videoLearningEvent.setTimestamp(timestamp); diff --git a/src/main/java/ai/elimu/web/analytics/students/LetterSoundAssessmentEventsCsvExportController.java b/src/main/java/ai/elimu/web/analytics/students/LetterSoundAssessmentEventsCsvExportController.java index a09237ce5..5de9688ca 100644 --- a/src/main/java/ai/elimu/web/analytics/students/LetterSoundAssessmentEventsCsvExportController.java +++ b/src/main/java/ai/elimu/web/analytics/students/LetterSoundAssessmentEventsCsvExportController.java @@ -64,7 +64,7 @@ public void handleRequest( csvPrinter.printRecord( letterSoundAssessmentEvent.getId(), - letterSoundAssessmentEvent.getTimestamp().getTimeInMillis(), + letterSoundAssessmentEvent.getTimestamp().getTimeInMillis() / 1_000, letterSoundAssessmentEvent.getPackageName(), letterSoundAssessmentEvent.getMasteryScore(), letterSoundAssessmentEvent.getTimeSpentMs(), diff --git a/src/main/java/ai/elimu/web/analytics/students/LetterSoundLearningEventsCsvExportController.java b/src/main/java/ai/elimu/web/analytics/students/LetterSoundLearningEventsCsvExportController.java index 3a0c12f1c..339a9d725 100644 --- a/src/main/java/ai/elimu/web/analytics/students/LetterSoundLearningEventsCsvExportController.java +++ b/src/main/java/ai/elimu/web/analytics/students/LetterSoundLearningEventsCsvExportController.java @@ -62,7 +62,7 @@ public void handleRequest( csvPrinter.printRecord( letterSoundLearningEvent.getId(), - letterSoundLearningEvent.getTimestamp().getTimeInMillis(), + letterSoundLearningEvent.getTimestamp().getTimeInMillis() / 1_000, letterSoundLearningEvent.getPackageName(), // letterSoundLearningEvent.getLetterSoundLetters(), // letterSoundLearningEvent.getLetterSoundSounds(), diff --git a/src/main/java/ai/elimu/web/analytics/students/NumberLearningEventsCsvExportController.java b/src/main/java/ai/elimu/web/analytics/students/NumberLearningEventsCsvExportController.java index ba80cd579..90b299d51 100644 --- a/src/main/java/ai/elimu/web/analytics/students/NumberLearningEventsCsvExportController.java +++ b/src/main/java/ai/elimu/web/analytics/students/NumberLearningEventsCsvExportController.java @@ -63,7 +63,7 @@ public void handleRequest( csvPrinter.printRecord( numberLearningEvent.getId(), - numberLearningEvent.getTimestamp().getTimeInMillis(), + numberLearningEvent.getTimestamp().getTimeInMillis() / 1_000, numberLearningEvent.getPackageName(), numberLearningEvent.getAdditionalData(), numberLearningEvent.getNumberValue(), diff --git a/src/main/java/ai/elimu/web/analytics/students/StoryBookLearningEventsCsvExportController.java b/src/main/java/ai/elimu/web/analytics/students/StoryBookLearningEventsCsvExportController.java index 0927e0d62..90401a232 100644 --- a/src/main/java/ai/elimu/web/analytics/students/StoryBookLearningEventsCsvExportController.java +++ b/src/main/java/ai/elimu/web/analytics/students/StoryBookLearningEventsCsvExportController.java @@ -66,7 +66,7 @@ public void handleRequest( csvPrinter.printRecord( storyBookLearningEvent.getId(), - storyBookLearningEvent.getTimestamp().getTimeInMillis(), + storyBookLearningEvent.getTimestamp().getTimeInMillis() / 1_000, storyBookLearningEvent.getPackageName(), storyBookLearningEvent.getStoryBookTitle(), storyBookLearningEvent.getStoryBookId(), diff --git a/src/main/java/ai/elimu/web/analytics/students/VideoLearningEventsCsvExportController.java b/src/main/java/ai/elimu/web/analytics/students/VideoLearningEventsCsvExportController.java index 5bd1030bb..147832bbd 100644 --- a/src/main/java/ai/elimu/web/analytics/students/VideoLearningEventsCsvExportController.java +++ b/src/main/java/ai/elimu/web/analytics/students/VideoLearningEventsCsvExportController.java @@ -67,7 +67,7 @@ public void handleRequest( csvPrinter.printRecord( videoLearningEvent.getId(), - videoLearningEvent.getTimestamp().getTimeInMillis(), + videoLearningEvent.getTimestamp().getTimeInMillis() / 1_000, videoLearningEvent.getPackageName(), videoLearningEvent.getVideoTitle(), videoLearningEvent.getVideoId(), diff --git a/src/main/java/ai/elimu/web/analytics/students/WordAssessmentEventsCsvExportController.java b/src/main/java/ai/elimu/web/analytics/students/WordAssessmentEventsCsvExportController.java index d68f34d80..9cf4cfe7c 100644 --- a/src/main/java/ai/elimu/web/analytics/students/WordAssessmentEventsCsvExportController.java +++ b/src/main/java/ai/elimu/web/analytics/students/WordAssessmentEventsCsvExportController.java @@ -63,7 +63,7 @@ public void handleRequest( csvPrinter.printRecord( wordAssessmentEvent.getId(), - wordAssessmentEvent.getTimestamp().getTimeInMillis(), + wordAssessmentEvent.getTimestamp().getTimeInMillis() / 1_000, wordAssessmentEvent.getPackageName(), wordAssessmentEvent.getMasteryScore(), wordAssessmentEvent.getTimeSpentMs(), diff --git a/src/main/java/ai/elimu/web/analytics/students/WordLearningEventsCsvExportController.java b/src/main/java/ai/elimu/web/analytics/students/WordLearningEventsCsvExportController.java index c48fe08de..b3c02a783 100644 --- a/src/main/java/ai/elimu/web/analytics/students/WordLearningEventsCsvExportController.java +++ b/src/main/java/ai/elimu/web/analytics/students/WordLearningEventsCsvExportController.java @@ -62,7 +62,7 @@ public void handleRequest( csvPrinter.printRecord( wordLearningEvent.getId(), - wordLearningEvent.getTimestamp().getTimeInMillis(), + wordLearningEvent.getTimestamp().getTimeInMillis() / 1_000, wordLearningEvent.getPackageName(), wordLearningEvent.getWordText(), (wordLearningEvent.getWord() == null) ? null : wordLearningEvent.getWord().getId(), diff --git a/src/test/java/ai/elimu/util/csv/CsvAnalyticsExtractionHelperTest.java b/src/test/java/ai/elimu/util/csv/CsvAnalyticsExtractionHelperTest.java index bb76f3538..b16e9f9ca 100644 --- a/src/test/java/ai/elimu/util/csv/CsvAnalyticsExtractionHelperTest.java +++ b/src/test/java/ai/elimu/util/csv/CsvAnalyticsExtractionHelperTest.java @@ -34,7 +34,7 @@ public void testExtractLetterSoundLearningEvents_v3002014() throws IOException { assertEquals(6, letterSoundLearningEvents.size()); LetterSoundLearningEvent letterSoundLearningEvent = letterSoundLearningEvents.get(0); - assertEquals(1746952025058L, letterSoundLearningEvent.getTimestamp().getTimeInMillis()); + assertEquals(1746952025000L, letterSoundLearningEvent.getTimestamp().getTimeInMillis()); assertEquals("5b7c682a12ecbe2e", letterSoundLearningEvent.getAndroidId()); assertEquals("ai.elimu.herufi.debug", letterSoundLearningEvent.getPackageName()); assertEquals(300, letterSoundLearningEvent.getLetterSoundId()); @@ -54,7 +54,7 @@ public void testExtractWordAssessmentEvents_v3001030() throws IOException { assertEquals(1, wordAssessmentEvents.size()); WordAssessmentEvent wordAssessmentEvent = wordAssessmentEvents.get(0); - assertEquals(1742402392907L, wordAssessmentEvent.getTimestamp().getTimeInMillis()); + assertEquals(1742402392000L, wordAssessmentEvent.getTimestamp().getTimeInMillis()); assertEquals("1bb5b718814899b5", wordAssessmentEvent.getAndroidId()); assertEquals("ai.elimu.kukariri.debug", wordAssessmentEvent.getPackageName()); assertEquals("aso", wordAssessmentEvent.getWordText()); @@ -77,7 +77,7 @@ public void testExtractVideoLearningEvents_v3001018() throws IOException { assertEquals(6, videoLearningEvents.size()); VideoLearningEvent videoLearningEvent = videoLearningEvents.get(0); - assertEquals(1728486312687L, videoLearningEvent.getTimestamp().getTimeInMillis()); + assertEquals(1728486312000L, videoLearningEvent.getTimestamp().getTimeInMillis()); assertEquals("e387e38700000001", videoLearningEvent.getAndroidId()); assertEquals("ai.elimu.filamu", videoLearningEvent.getPackageName()); assertEquals("akili and me - the rectangle song", videoLearningEvent.getVideoTitle()); @@ -99,7 +99,7 @@ public void testExtractWordLearningEvents_v3001030() throws IOException { assertEquals(143, wordLearningEvents.size()); WordLearningEvent wordLearningEvent = wordLearningEvents.get(0); - assertEquals(1742293958238L, wordLearningEvent.getTimestamp().getTimeInMillis()); + assertEquals(1742293958000L, wordLearningEvent.getTimestamp().getTimeInMillis()); assertEquals("5b7c682a12ecbe2e", wordLearningEvent.getAndroidId()); assertEquals("ai.elimu.vitabu.debug", wordLearningEvent.getPackageName()); assertEquals("ฉัน", wordLearningEvent.getWordText()); @@ -121,7 +121,7 @@ public void testExtractStoryBookLearningEvents_v3001030() throws IOException { assertEquals(8, storyBookLearningEvents.size()); StoryBookLearningEvent storyBookLearningEvent = storyBookLearningEvents.get(0); - assertEquals(1742293901485L, storyBookLearningEvent.getTimestamp().getTimeInMillis()); + assertEquals(1742293901000L, storyBookLearningEvent.getTimestamp().getTimeInMillis()); assertEquals("5b7c682a12ecbe2e", storyBookLearningEvent.getAndroidId()); assertEquals("ai.elimu.vitabu.debug", storyBookLearningEvent.getPackageName()); assertEquals("", storyBookLearningEvent.getStoryBookTitle()); @@ -143,7 +143,7 @@ public void testExtractStoryBookLearningEvents_v3002014() throws IOException { assertEquals(2, storyBookLearningEvents.size()); StoryBookLearningEvent storyBookLearningEvent = storyBookLearningEvents.get(0); - assertEquals(1748252197301L, storyBookLearningEvent.getTimestamp().getTimeInMillis()); + assertEquals(1748252197000L, storyBookLearningEvent.getTimestamp().getTimeInMillis()); assertEquals("5b7c682a12ecbe2e", storyBookLearningEvent.getAndroidId()); assertEquals("ai.elimu.vitabu.debug", storyBookLearningEvent.getPackageName()); assertEquals("", storyBookLearningEvent.getStoryBookTitle()); @@ -165,7 +165,7 @@ public void testExtractStoryBookLearningEvents_v3003000() throws IOException { assertEquals(2, storyBookLearningEvents.size()); StoryBookLearningEvent storyBookLearningEvent = storyBookLearningEvents.get(0); - assertEquals(1748252197301L, storyBookLearningEvent.getTimestamp().getTimeInMillis()); + assertEquals(1748252197000L, storyBookLearningEvent.getTimestamp().getTimeInMillis()); assertEquals("5b7c682a12ecbe2e", storyBookLearningEvent.getAndroidId()); assertEquals("ai.elimu.vitabu.debug", storyBookLearningEvent.getPackageName()); assertEquals("กลโกงเจ้าจิ้งจอก", storyBookLearningEvent.getStoryBookTitle());