Skip to content

Commit

Permalink
refactor(dao): Rename letterSoundCorrespondences (#1713)
Browse files Browse the repository at this point in the history
  • Loading branch information
jo-elimu authored Jul 13, 2024
2 parents b17dc6c + f98bd4e commit a3e9e8b
Show file tree
Hide file tree
Showing 21 changed files with 67 additions and 52 deletions.
10 changes: 5 additions & 5 deletions src/main/java/ai/elimu/model/content/Word.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public class Word extends Content {
@NotEmpty
@OrderColumn
@ManyToMany(fetch = FetchType.EAGER)
private List<LetterSoundCorrespondence> letterSoundCorrespondences;
private List<LetterSoundCorrespondence> letterSounds;

/**
* As an example, the verb "reading" will be linked to the root verb "read".
Expand All @@ -48,12 +48,12 @@ public void setText(String text) {
this.text = text;
}

public List<LetterSoundCorrespondence> getLetterSoundCorrespondences() {
return letterSoundCorrespondences;
public List<LetterSoundCorrespondence> getLetterSounds() {
return letterSounds;
}

public void setLetterSoundCorrespondences(List<LetterSoundCorrespondence> letterSoundCorrespondences) {
this.letterSoundCorrespondences = letterSoundCorrespondences;
public void setLetterSounds(List<LetterSoundCorrespondence> letterSounds) {
this.letterSounds = letterSounds;
}

public Word getRootWord() {
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/ai/elimu/rest/v2/JpaToGsonConverter.java
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ public static WordGson getWordGson(Word word) {
// Word
wordGson.setText(word.getText());
List<LetterSoundGson> letterSounds = new ArrayList<>();
for (LetterSoundCorrespondence letterSound : word.getLetterSoundCorrespondences()) {
for (LetterSoundCorrespondence letterSound : word.getLetterSounds()) {
LetterSoundGson letterSoundGson = getLetterSoundGson(letterSound);
letterSounds.add(letterSoundGson);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@ public synchronized void execute() {
logger.info("words.size(): " + words.size());
for (Word word : words) {
logger.info("word.getText(): " + word.getText());
for (LetterSoundCorrespondence letterSoundCorrespondence : word.getLetterSoundCorrespondences()) {
letterSoundCorrespondenceFrequencyMap.put(letterSoundCorrespondence.getId(),
letterSoundCorrespondenceFrequencyMap.getOrDefault(letterSoundCorrespondence.getId(), 0) + word.getUsageCount());
for (LetterSoundCorrespondence letterSound : word.getLetterSounds()) {
letterSoundCorrespondenceFrequencyMap.put(letterSound.getId(),
letterSoundCorrespondenceFrequencyMap.getOrDefault(letterSound.getId(), 0) + word.getUsageCount());
}
}

Expand Down
6 changes: 3 additions & 3 deletions src/main/java/ai/elimu/tasks/SoundUsageCountScheduler.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,9 @@ public synchronized void execute() {
List<Word> words = wordDao.readAllOrdered();
logger.info("words.size(): " + words.size());
for (Word word : words) {
for (LetterSoundCorrespondence letterSoundCorrespondence : word.getLetterSoundCorrespondences()) {
for (Sound sound : letterSoundCorrespondence.getSounds()) {
soundFrequencyMap.put(sound.getId(), soundFrequencyMap.getOrDefault(sound.getId(), 0) + letterSoundCorrespondence.getUsageCount());
for (LetterSoundCorrespondence letterSound : word.getLetterSounds()) {
for (Sound sound : letterSound.getSounds()) {
soundFrequencyMap.put(sound.getId(), soundFrequencyMap.getOrDefault(sound.getId(), 0) + letterSound.getUsageCount());
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/ai/elimu/tasks/WordUsageCountScheduler.java
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ public synchronized void execute() {
existingWord.setUsageCount(wordFrequencyMap.get(word));

// Temporary fix for "javax.validation.ConstraintViolationException"
if (existingWord.getLetterSoundCorrespondences().isEmpty()) {
if (existingWord.getLetterSounds().isEmpty()) {
logger.warn("Letter-sound correspondences not yet added. Skipping usage count update for word...");
continue;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ public static List<Word> getWordsFromCsvBackup(File csvFile, LetterDao letterDao

JSONArray letterSoundCorrespondencesJsonArray = new JSONArray(csvRecord.get("letter_sound_correspondences"));
logger.info("letterSoundCorrespondencesJsonArray: " + letterSoundCorrespondencesJsonArray);
List<LetterSoundCorrespondence> letterSoundCorrespondences = new ArrayList<>();
List<LetterSoundCorrespondence> letterSounds = new ArrayList<>();
for (int i = 0; i < letterSoundCorrespondencesJsonArray.length(); i++) {
JSONObject letterSoundCorrespondenceJsonObject = letterSoundCorrespondencesJsonArray.getJSONObject(i);
logger.info("letterSoundCorrespondenceJsonObject: " + letterSoundCorrespondenceJsonObject);
Expand All @@ -176,9 +176,9 @@ public static List<Word> getWordsFromCsvBackup(File csvFile, LetterDao letterDao
}
LetterSoundCorrespondence letterSoundCorrespondence = letterSoundDao.read(letters, sounds);
logger.info("letterSoundCorrespondence.getId(): " + letterSoundCorrespondence.getId());
letterSoundCorrespondences.add(letterSoundCorrespondence);
letterSounds.add(letterSoundCorrespondence);
}
word.setLetterSoundCorrespondences(letterSoundCorrespondences);
word.setLetterSounds(letterSounds);

Integer usageCount = Integer.valueOf(csvRecord.get("usage_count"));
word.setUsageCount(usageCount);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,6 @@ private void autoSelectLetterSoundCorrespondences(Word word) {
}
}

word.setLetterSoundCorrespondences(letterSoundCorrespondences);
word.setLetterSounds(letterSoundCorrespondences);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -59,20 +59,20 @@ public void handleRequest(

JSONArray letterSoundCorrespondencesJsonArray = new JSONArray();
int index = 0;
for (LetterSoundCorrespondence letterSoundCorrespondence : word.getLetterSoundCorrespondences()) {
for (LetterSoundCorrespondence letterSound : word.getLetterSounds()) {
JSONObject letterSoundCorrespondenceJsonObject = new JSONObject();
letterSoundCorrespondenceJsonObject.put("id", letterSoundCorrespondence.getId());
String[] lettersArray = new String[letterSoundCorrespondence.getLetters().size()];
letterSoundCorrespondenceJsonObject.put("id", letterSound.getId());
String[] lettersArray = new String[letterSound.getLetters().size()];
for (int i = 0; i < lettersArray.length; i++) {
lettersArray[i] = letterSoundCorrespondence.getLetters().get(i).getText();
lettersArray[i] = letterSound.getLetters().get(i).getText();
}
letterSoundCorrespondenceJsonObject.put("letters", lettersArray);
String[] soundsArray = new String[letterSoundCorrespondence.getSounds().size()];
String[] soundsArray = new String[letterSound.getSounds().size()];
for (int i = 0; i < soundsArray.length; i++) {
soundsArray[i] = letterSoundCorrespondence.getSounds().get(i).getValueIpa();
soundsArray[i] = letterSound.getSounds().get(i).getValueIpa();
}
letterSoundCorrespondenceJsonObject.put("sounds", soundsArray);
letterSoundCorrespondenceJsonObject.put("usageCount", letterSoundCorrespondence.getUsageCount());
letterSoundCorrespondenceJsonObject.put("usageCount", letterSound.getUsageCount());
letterSoundCorrespondencesJsonArray.put(index, letterSoundCorrespondenceJsonObject);
index++;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ public String handleRequest(

Word word = wordDao.read(id);

if (word.getLetterSoundCorrespondences().isEmpty()) {
if (word.getLetterSounds().isEmpty()) {
autoSelectLetterSoundCorrespondences(word);
// TODO: display information message to the Contributor that the letter-sound correspondences were auto-selected, and that they should be verified
}
Expand Down Expand Up @@ -232,7 +232,7 @@ private void autoSelectLetterSoundCorrespondences(Word word) {

String wordText = word.getText();

List<LetterSoundCorrespondence> letterSoundCorrespondences = new ArrayList<>();
List<LetterSoundCorrespondence> letterSounds = new ArrayList<>();

List<LetterSoundCorrespondence> allLetterSoundCorrespondencesOrderedByLettersLength = letterSoundDao.readAllOrderedByLettersLength();
while (StringUtils.isNotBlank(wordText)) {
Expand All @@ -246,7 +246,7 @@ private void autoSelectLetterSoundCorrespondences(Word word) {
if (wordText.startsWith(letterSoundCorrespondenceLetters)) {
isMatch = true;
logger.info("Found match at the beginning of \"" + wordText + "\"");
letterSoundCorrespondences.add(letterSoundCorrespondence);
letterSounds.add(letterSoundCorrespondence);

// Remove the match from the word
wordText = wordText.substring(letterSoundCorrespondenceLetters.length());
Expand All @@ -260,6 +260,6 @@ private void autoSelectLetterSoundCorrespondences(Word word) {
}
}

word.setLetterSoundCorrespondences(letterSoundCorrespondences);
word.setLetterSounds(letterSounds);
}
}
10 changes: 5 additions & 5 deletions src/main/resources/META-INF/jpa-schema-export.sql
Original file line number Diff line number Diff line change
Expand Up @@ -647,9 +647,9 @@

create table Word_LetterSoundCorrespondence (
Word_id bigint not null,
letterSoundCorrespondences_id bigint not null,
letterSoundCorrespondences_ORDER integer not null,
primary key (Word_id, letterSoundCorrespondences_ORDER)
letterSounds_id bigint not null,
letterSounds_ORDER integer not null,
primary key (Word_id, letterSounds_ORDER)
) engine=MyISAM;

create table WordContributionEvent (
Expand Down Expand Up @@ -1078,8 +1078,8 @@
references Word (id);

alter table Word_LetterSoundCorrespondence
add constraint FKf6r3yfdc6quwa0b13mln5uuc8
foreign key (letterSoundCorrespondences_id)
add constraint FK1ln49ylh4w15nddf9h41wjupt
foreign key (letterSounds_id)
references LetterSoundCorrespondence (id);

alter table Word_LetterSoundCorrespondence
Expand Down
15 changes: 15 additions & 0 deletions src/main/resources/db/migration/2004007.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# 2.4.7

# Word "letterSoundCorrespondences" → Word "letterSounds"

ALTER TABLE `Word_LetterSoundCorrespondence` DROP COLUMN `letterSounds_id`;
ALTER TABLE `Word_LetterSoundCorrespondence` CHANGE `letterSoundCorrespondences_id` `letterSounds_id` bigint(20) NOT NULL;

ALTER TABLE `Word_LetterSoundCorrespondence` DROP COLUMN `letterSounds_ORDER`;
ALTER TABLE `Word_LetterSoundCorrespondence` CHANGE `letterSoundCorrespondences_ORDER` `letterSounds_ORDER` int(11) NOT NULL;

# Reset primary key
ALTER TABLE `Word_LetterSoundCorrespondence` DROP PRIMARY KEY, ADD PRIMARY KEY(Word_id, letterSounds_ORDER);

# Delete obsolete foreign key constraint for "letterSoundCorrespondences_id"
ALTER TABLE `Word_LetterSoundCorrespondence` DROP FOREIGN KEY `FKf6r3yfdc6quwa0b13mln5uuc8`;
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
<tr>
<td>
<a href="<spring:url value='/content/word/edit/${word.id}#contribution-events' />" target="_blank">"<c:out value="${word.text}" />"</a><br />
/<c:forEach var="lsc" items="${word.letterSoundCorrespondences}">&nbsp;<a href="<spring:url value='/content/letter-sound/edit/${lsc.id}' />"><c:forEach var="sound" items="${lsc.sounds}">${sound.valueIpa}</c:forEach></a>&nbsp;</c:forEach>/
/<c:forEach var="lsc" items="${word.letterSounds}">&nbsp;<a href="<spring:url value='/content/letter-sound/edit/${lsc.id}' />"><c:forEach var="sound" items="${lsc.sounds}">${sound.valueIpa}</c:forEach></a>&nbsp;</c:forEach>/
</td>
<td>
#${wordContributionEvent.revisionNumber}<br />
Expand Down Expand Up @@ -157,7 +157,7 @@
</td>
<td>
<a href="<spring:url value='/content/word/edit/${word.id}#contribution-event_${wordPeerReviewEvent.wordContributionEvent.id}' />" target="_blank">"<c:out value="${word.text}" />"</a><br />
/<c:forEach var="lsc" items="${word.letterSoundCorrespondences}">&nbsp;<a href="<spring:url value='/content/letter-sound/edit/${lsc.id}' />"><c:forEach var="sound" items="${lsc.sounds}">${sound.valueIpa}</c:forEach></a>&nbsp;</c:forEach>/
/<c:forEach var="lsc" items="${word.letterSounds}">&nbsp;<a href="<spring:url value='/content/letter-sound/edit/${lsc.id}' />"><c:forEach var="sound" items="${lsc.sounds}">${sound.valueIpa}</c:forEach></a>&nbsp;</c:forEach>/
</td>
<td>
<a href="<spring:url value='/content/contributor/${wordPeerReviewEvent.wordContributionEvent.contributor.id}' />">
Expand Down
6 changes: 3 additions & 3 deletions src/main/webapp/WEB-INF/jsp/content/letter-sound/edit.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,7 @@
<c:forEach var="word" items="${words}">
<%-- Check if the current letter-sound correspondence is used by the word. --%>
<c:set var="isUsedByWord" value="false" />
<c:forEach var="lsc" items="${word.letterSoundCorrespondences}">
<c:forEach var="lsc" items="${word.letterSounds}">
<c:if test="${lsc.id == letterSound.id}">
<c:set var="isUsedByWord" value="true" />
</c:if>
Expand All @@ -350,9 +350,9 @@
<a href="<spring:url value='/content/word/edit/${word.id}' />">
"<c:out value="${word.text}" />"
</a><br />
"<c:forEach var="lsc" items="${word.letterSoundCorrespondences}">&nbsp;<a href="<spring:url value='/content/letter-sound/edit/${lsc.id}' />"><c:if test="${lsc.id == letterSound.id}"><span class='diff-highlight'></c:if><c:forEach var="letter" items="${lsc.letters}">${letter.text}<c:out value=" " /></c:forEach><c:if test="${lsc.id == letterSound.id}"></span></c:if></a>&nbsp;</c:forEach>"<br />
"<c:forEach var="lsc" items="${word.letterSounds}">&nbsp;<a href="<spring:url value='/content/letter-sound/edit/${lsc.id}' />"><c:if test="${lsc.id == letterSound.id}"><span class='diff-highlight'></c:if><c:forEach var="letter" items="${lsc.letters}">${letter.text}<c:out value=" " /></c:forEach><c:if test="${lsc.id == letterSound.id}"></span></c:if></a>&nbsp;</c:forEach>"<br />
<span class="grey-text">
/<c:forEach var="lsc" items="${word.letterSoundCorrespondences}">&nbsp;<a href="<spring:url value='/content/letter-sound/edit/${lsc.id}' />"><c:if test="${lsc.id == letterSound.id}"><span class='diff-highlight'></c:if><c:forEach var="sound" items="${lsc.sounds}">${sound.valueIpa}</c:forEach><c:if test="${lsc.id == letterSound.id}"></span></c:if></a>&nbsp;</c:forEach>/
/<c:forEach var="lsc" items="${word.letterSounds}">&nbsp;<a href="<spring:url value='/content/letter-sound/edit/${lsc.id}' />"><c:if test="${lsc.id == letterSound.id}"><span class='diff-highlight'></c:if><c:forEach var="sound" items="${lsc.sounds}">${sound.valueIpa}</c:forEach><c:if test="${lsc.id == letterSound.id}"></span></c:if></a>&nbsp;</c:forEach>/
</span>
</td>
<td>${word.usageCount}</td>
Expand Down
2 changes: 1 addition & 1 deletion src/main/webapp/WEB-INF/jsp/content/number/list.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@

<td style="font-size: 2em;">
<c:forEach var="word" items="${number.words}">
/<c:forEach var="lsc" items="${word.letterSoundCorrespondences}">&nbsp;<a href="<spring:url value='/content/letter-sound/edit/${lsc.id}' />"><c:forEach var="sound" items="${lsc.sounds}">${sound.valueIpa}</c:forEach></a>&nbsp;</c:forEach>/
/<c:forEach var="lsc" items="${word.letterSounds}">&nbsp;<a href="<spring:url value='/content/letter-sound/edit/${lsc.id}' />"><c:forEach var="sound" items="${lsc.sounds}">${sound.valueIpa}</c:forEach></a>&nbsp;</c:forEach>/
</c:forEach>
</td>
<td>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@

<td style="font-size: 2em;">
<c:forEach var="word" items="${number.words}">
/<c:forEach var="lsc" items="${word.letterSoundCorrespondences}">&nbsp;<a href="<spring:url value='/content/letter-sound/edit/${lsc.id}' />"><c:forEach var="sound" items="${lsc.sounds}">${sound.valueIpa}</c:forEach></a>&nbsp;</c:forEach>/
/<c:forEach var="lsc" items="${word.letterSounds}">&nbsp;<a href="<spring:url value='/content/letter-sound/edit/${lsc.id}' />"><c:forEach var="sound" items="${lsc.sounds}">${sound.valueIpa}</c:forEach></a>&nbsp;</c:forEach>/
</c:forEach>
</td>
<td>
Expand Down
2 changes: 1 addition & 1 deletion src/main/webapp/WEB-INF/jsp/content/storybook/edit.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@
<c:out value="${word.text}" />
</a><c:if test="${not empty word.wordType}"> (${word.wordType})</c:if><c:out value=" ${emojisByWordId[word.id]}" /><br />
<span class="grey-text">
/<c:forEach var="lsc" items="${word.letterSoundCorrespondences}">&nbsp;<a href="<spring:url value='/content/letter-sound/edit/${lsc.id}' />"><c:forEach var="sound" items="${lsc.sounds}">${sound.valueIpa}</c:forEach></a>&nbsp;</c:forEach>/
/<c:forEach var="lsc" items="${word.letterSounds}">&nbsp;<a href="<spring:url value='/content/letter-sound/edit/${lsc.id}' />"><c:forEach var="sound" items="${lsc.sounds}">${sound.valueIpa}</c:forEach></a>&nbsp;</c:forEach>/
</span>
</c:otherwise>
</c:choose>
Expand Down
Loading

0 comments on commit a3e9e8b

Please sign in to comment.