use of ai.elimu.model.content.Letter in project webapp by elimu-ai.
the class JavaToGsonConverter method getAudioGson.
public static AudioGson getAudioGson(Audio audio) {
if (audio == null) {
return null;
} else {
AudioGson audioGson = new AudioGson();
audioGson.setId(audio.getId());
audioGson.setLocale(audio.getLocale());
audioGson.setTimeLastUpdate(audio.getTimeLastUpdate());
audioGson.setRevisionNumber(audio.getRevisionNumber());
audioGson.setContentStatus(audio.getContentStatus());
audioGson.setDownloadUrl("/audio/" + audio.getId() + "." + audio.getAudioFormat().toString().toLowerCase());
audioGson.setDownloadSize(audio.getBytes().length / 1024);
audioGson.setContentType(audio.getContentType());
audioGson.setLiteracySkills(audio.getLiteracySkills());
audioGson.setNumeracySkills(audio.getNumeracySkills());
List<LetterGson> letters = new ArrayList<>();
for (Letter letter : audio.getLetters()) {
LetterGson letterGson = getLetterGson(letter);
letters.add(letterGson);
}
audioGson.setLetters(letters);
List<NumberGson> numbers = new ArrayList<>();
for (Number number : audio.getNumbers()) {
NumberGson numberGson = getNumberGson(number);
numbers.add(numberGson);
}
audioGson.setNumbers(numbers);
List<WordGson> words = new ArrayList<>();
for (Word word : audio.getWords()) {
WordGson wordGson = getWordGson(word);
words.add(wordGson);
}
audioGson.setWords(words);
audioGson.setTranscription(audio.getTranscription());
audioGson.setAudioType(audio.getAudioFormat());
return audioGson;
}
}
use of ai.elimu.model.content.Letter in project webapp by elimu-ai.
the class LetterRestController method list.
@RequestMapping("/list")
public String list(HttpServletRequest request, @RequestParam String deviceId, // TODO: checksum,
@RequestParam Locale locale) {
logger.info("list");
logger.info("request.getQueryString(): " + request.getQueryString());
JSONArray numbers = new JSONArray();
for (Letter letter : letterDao.readAllOrdered(locale)) {
LetterGson letterGson = JavaToGsonConverter.getLetterGson(letter);
String json = new Gson().toJson(letterGson);
numbers.put(new JSONObject(json));
}
JSONObject jsonObject = new JSONObject();
jsonObject.put("result", "success");
jsonObject.put("letters", numbers);
logger.info("jsonObject: " + jsonObject);
return jsonObject.toString();
}
use of ai.elimu.model.content.Letter in project webapp by elimu-ai.
the class LetterUsageCountScheduler method execute.
// At 06:15 every day
@Scheduled(cron = "00 15 06 * * *")
public synchronized void execute() {
logger.info("execute");
for (Locale locale : Locale.values()) {
logger.info("Calculating usage count for Letters with locale " + locale);
Map<String, Integer> letterFrequencyMap = new HashMap<>();
List<StoryBook> storyBooks = storyBookDao.readAllOrdered(locale);
logger.info("storyBooks.size(): " + storyBooks.size());
for (StoryBook storyBook : storyBooks) {
logger.info("storyBook.getTitle(): " + storyBook.getTitle());
Map<String, Integer> letterFrequencyMapForBook = LetterFrequencyHelper.getLetterFrequency(storyBook);
for (String key : letterFrequencyMapForBook.keySet()) {
String letterText = key;
int letterFrequency = letterFrequencyMapForBook.get(key);
if (!letterFrequencyMap.containsKey(letterText)) {
letterFrequencyMap.put(letterText, letterFrequency);
} else {
letterFrequencyMap.put(letterText, letterFrequencyMap.get(letterText) + letterFrequency);
}
}
}
logger.info("letterFrequencyMap: " + letterFrequencyMap);
for (String key : letterFrequencyMap.keySet()) {
String letterText = key;
Letter existingLetter = letterDao.readByText(locale, letterText);
if (existingLetter != null) {
existingLetter.setUsageCount(letterFrequencyMap.get(letterText));
letterDao.update(existingLetter);
}
}
}
logger.info("execute complete");
}
use of ai.elimu.model.content.Letter in project webapp by elimu-ai.
the class ImageEditController method handleRemoveContentLabelRequest.
@RequestMapping(value = "/{id}/remove-content-label", method = RequestMethod.POST)
@ResponseBody
public String handleRemoveContentLabelRequest(HttpServletRequest request, @PathVariable Long id) {
logger.info("handleRemoveContentLabelRequest");
logger.info("id: " + id);
Image image = imageDao.read(id);
String letterIdParameter = request.getParameter("letterId");
logger.info("letterIdParameter: " + letterIdParameter);
if (StringUtils.isNotBlank(letterIdParameter)) {
Long letterId = Long.valueOf(letterIdParameter);
Letter letter = letterDao.read(letterId);
Set<Letter> letters = image.getLetters();
Iterator<Letter> iterator = letters.iterator();
while (iterator.hasNext()) {
Letter existingLetter = iterator.next();
if (existingLetter.getId().equals(letter.getId())) {
iterator.remove();
}
}
image.setRevisionNumber(image.getRevisionNumber() + 1);
imageDao.update(image);
}
String numberIdParameter = request.getParameter("numberId");
logger.info("numberIdParameter: " + numberIdParameter);
if (StringUtils.isNotBlank(numberIdParameter)) {
Long numberId = Long.valueOf(numberIdParameter);
Number number = numberDao.read(numberId);
Set<Number> numbers = image.getNumbers();
Iterator<Number> iterator = numbers.iterator();
while (iterator.hasNext()) {
Number existingNumber = iterator.next();
if (existingNumber.getId().equals(number.getId())) {
iterator.remove();
}
}
image.setRevisionNumber(image.getRevisionNumber() + 1);
imageDao.update(image);
}
String wordIdParameter = request.getParameter("wordId");
logger.info("wordIdParameter: " + wordIdParameter);
if (StringUtils.isNotBlank(wordIdParameter)) {
Long wordId = Long.valueOf(wordIdParameter);
Word word = wordDao.read(wordId);
Set<Word> words = image.getWords();
Iterator<Word> iterator = words.iterator();
while (iterator.hasNext()) {
Word existingWord = iterator.next();
if (existingWord.getId().equals(word.getId())) {
iterator.remove();
}
}
image.setRevisionNumber(image.getRevisionNumber() + 1);
imageDao.update(image);
}
return "success";
}
use of ai.elimu.model.content.Letter in project webapp by elimu-ai.
the class ImageEditController method handleAddContentLabelRequest.
@RequestMapping(value = "/{id}/add-content-label", method = RequestMethod.POST)
@ResponseBody
public String handleAddContentLabelRequest(HttpServletRequest request, @PathVariable Long id) {
logger.info("handleAddContentLabelRequest");
logger.info("id: " + id);
Image image = imageDao.read(id);
String letterIdParameter = request.getParameter("letterId");
logger.info("letterIdParameter: " + letterIdParameter);
if (StringUtils.isNotBlank(letterIdParameter)) {
Long letterId = Long.valueOf(letterIdParameter);
Letter letter = letterDao.read(letterId);
Set<Letter> letters = image.getLetters();
if (!letters.contains(letter)) {
letters.add(letter);
image.setRevisionNumber(image.getRevisionNumber() + 1);
imageDao.update(image);
}
}
String numberIdParameter = request.getParameter("numberId");
logger.info("numberIdParameter: " + numberIdParameter);
if (StringUtils.isNotBlank(numberIdParameter)) {
Long numberId = Long.valueOf(numberIdParameter);
Number number = numberDao.read(numberId);
Set<Number> numbers = image.getNumbers();
if (!numbers.contains(number)) {
numbers.add(number);
image.setRevisionNumber(image.getRevisionNumber() + 1);
imageDao.update(image);
}
}
String wordIdParameter = request.getParameter("wordId");
logger.info("wordIdParameter: " + wordIdParameter);
if (StringUtils.isNotBlank(wordIdParameter)) {
Long wordId = Long.valueOf(wordIdParameter);
Word word = wordDao.read(wordId);
Set<Word> words = image.getWords();
if (!words.contains(word)) {
words.add(word);
image.setRevisionNumber(image.getRevisionNumber() + 1);
imageDao.update(image);
}
}
return "success";
}
Aggregations