Search in sources :

Example 16 with Letter

use of ai.elimu.model.content.Letter in project webapp by elimu-ai.

the class LetterListController method handleRequest.

@RequestMapping(method = RequestMethod.GET)
public String handleRequest(Model model, HttpSession session) {
    logger.info("handleRequest");
    Contributor contributor = (Contributor) session.getAttribute("contributor");
    // To ease development/testing, auto-generate Letters
    List<Letter> lettersGenerated = generateLetters(contributor.getLocale());
    for (Letter letter : lettersGenerated) {
        logger.info("letter.getText(): " + letter.getText());
        Letter existingLetter = letterDao.readByText(letter.getLocale(), letter.getText());
        if (existingLetter == null) {
            letterDao.create(letter);
        }
    }
    List<Letter> letters = letterDao.readAllOrdered(contributor.getLocale());
    model.addAttribute("letters", letters);
    int maxUsageCount = 0;
    for (Letter letter : letters) {
        if (letter.getUsageCount() > maxUsageCount) {
            maxUsageCount = letter.getUsageCount();
        }
    }
    model.addAttribute("maxUsageCount", maxUsageCount);
    return "content/letter/list";
}
Also used : Letter(ai.elimu.model.content.Letter) Contributor(ai.elimu.model.Contributor) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 17 with Letter

use of ai.elimu.model.content.Letter in project webapp by elimu-ai.

the class AudioEditController 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);
    Audio audio = audioDao.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 = audio.getLetters();
        Iterator<Letter> iterator = letters.iterator();
        while (iterator.hasNext()) {
            Letter existingLetter = iterator.next();
            if (existingLetter.getId().equals(letter.getId())) {
                iterator.remove();
            }
        }
        audio.setRevisionNumber(audio.getRevisionNumber() + 1);
        audioDao.update(audio);
    }
    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 = audio.getNumbers();
        Iterator<Number> iterator = numbers.iterator();
        while (iterator.hasNext()) {
            Number existingNumber = iterator.next();
            if (existingNumber.getId().equals(number.getId())) {
                iterator.remove();
            }
        }
        audio.setRevisionNumber(audio.getRevisionNumber() + 1);
        audioDao.update(audio);
    }
    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 = audio.getWords();
        Iterator<Word> iterator = words.iterator();
        while (iterator.hasNext()) {
            Word existingWord = iterator.next();
            if (existingWord.getId().equals(word.getId())) {
                iterator.remove();
            }
        }
        audio.setRevisionNumber(audio.getRevisionNumber() + 1);
        audioDao.update(audio);
    }
    return "success";
}
Also used : Letter(ai.elimu.model.content.Letter) Word(ai.elimu.model.content.Word) Number(ai.elimu.model.content.Number) Audio(ai.elimu.model.content.multimedia.Audio) RequestMapping(org.springframework.web.bind.annotation.RequestMapping) ResponseBody(org.springframework.web.bind.annotation.ResponseBody)

Example 18 with Letter

use of ai.elimu.model.content.Letter in project webapp by elimu-ai.

the class LetterLearningEventDaoTest method testReadAllByDevice.

@Test
public void testReadAllByDevice() {
    Device device = new Device();
    device.setDeviceId("ddhe72a08347cd29bd3f43d");
    deviceDao.create(device);
    List<LetterLearningEvent> letterLearningEvents = letterLearningEventDao.readAll(device);
    assertThat(letterLearningEvents.size(), is(0));
    Letter letter = new Letter();
    letter.setText("a");
    letterDao.create(letter);
    LetterLearningEvent letterLearningEvent = new LetterLearningEvent();
    letterLearningEvent.setDevice(device);
    letterLearningEvent.setLetter(letter);
    letterLearningEventDao.create(letterLearningEvent);
    letterLearningEvents = letterLearningEventDao.readAll(device);
    assertThat(letterLearningEvents.size(), is(1));
    assertThat(letterLearningEvents.get(0).getLetter().getText(), is("a"));
}
Also used : Letter(ai.elimu.model.content.Letter) Device(ai.elimu.model.Device) LetterLearningEvent(ai.elimu.model.analytics.LetterLearningEvent) Test(org.junit.Test)

Aggregations

Letter (ai.elimu.model.content.Letter)18 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)12 Number (ai.elimu.model.content.Number)9 Word (ai.elimu.model.content.Word)9 ResponseBody (org.springframework.web.bind.annotation.ResponseBody)6 Contributor (ai.elimu.model.Contributor)5 Allophone (ai.elimu.model.content.Allophone)4 LetterGson (ai.elimu.model.gson.content.LetterGson)4 ArrayList (java.util.ArrayList)4 NumberGson (ai.elimu.model.gson.content.NumberGson)3 WordGson (ai.elimu.model.gson.content.WordGson)3 Audio (ai.elimu.model.content.multimedia.Audio)2 Image (ai.elimu.model.content.multimedia.Image)2 Video (ai.elimu.model.content.multimedia.Video)2 Device (ai.elimu.model.Device)1 LetterLearningEvent (ai.elimu.model.analytics.LetterLearningEvent)1 StoryBook (ai.elimu.model.content.StoryBook)1 Locale (ai.elimu.model.enums.Locale)1 AudioGson (ai.elimu.model.gson.content.multimedia.AudioGson)1 ImageGson (ai.elimu.model.gson.content.multimedia.ImageGson)1