Search in sources :

Example 1 with Video

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

the class VideoController method handleRequest.

@RequestMapping(value = "/{videoId}.{videoFormat}", method = RequestMethod.GET)
public void handleRequest(Model model, @PathVariable Long videoId, @PathVariable String videoFormat, HttpServletResponse response, OutputStream outputStream) {
    logger.info("handleRequest");
    logger.info("videoId: " + videoId);
    logger.info("videoFormat: " + videoFormat);
    Video video = videoDao.read(videoId);
    response.setContentType(video.getContentType());
    byte[] bytes = video.getBytes();
    response.setContentLength(bytes.length);
    try {
        outputStream.write(bytes);
    } catch (EOFException ex) {
        // org.eclipse.jetty.io.EofException (occurs when download is aborted before completion)
        logger.warn(ex);
    } catch (IOException ex) {
        logger.error(null, ex);
    } finally {
        try {
            try {
                outputStream.flush();
                outputStream.close();
            } catch (EOFException ex) {
                // org.eclipse.jetty.io.EofException (occurs when download is aborted before completion)
                logger.warn(ex);
            }
        } catch (IOException ex) {
            logger.error(null, ex);
        }
    }
}
Also used : Video(ai.elimu.model.content.multimedia.Video) EOFException(java.io.EOFException) IOException(java.io.IOException) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 2 with Video

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

the class VideoEditController method handleRequest.

@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public String handleRequest(HttpSession session, Model model, @PathVariable Long id) {
    logger.info("handleRequest");
    Contributor contributor = (Contributor) session.getAttribute("contributor");
    Video video = videoDao.read(id);
    model.addAttribute("video", video);
    model.addAttribute("contentLicenses", ContentLicense.values());
    model.addAttribute("literacySkills", LiteracySkill.values());
    model.addAttribute("numeracySkills", NumeracySkill.values());
    model.addAttribute("videoRevisionEvents", videoRevisionEventDao.readAll(video));
    model.addAttribute("letters", letterDao.readAllOrdered(contributor.getLocale()));
    model.addAttribute("numbers", numberDao.readAllOrdered(contributor.getLocale()));
    model.addAttribute("words", wordDao.readAllOrdered(contributor.getLocale()));
    return "content/multimedia/video/edit";
}
Also used : Video(ai.elimu.model.content.multimedia.Video) Contributor(ai.elimu.model.Contributor) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 3 with Video

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

the class VideoEditController 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);
    Video video = videoDao.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 = video.getLetters();
        if (!letters.contains(letter)) {
            letters.add(letter);
            video.setRevisionNumber(video.getRevisionNumber() + 1);
            videoDao.update(video);
        }
    }
    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 = video.getNumbers();
        if (!numbers.contains(number)) {
            numbers.add(number);
            video.setRevisionNumber(video.getRevisionNumber() + 1);
            videoDao.update(video);
        }
    }
    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 = video.getWords();
        if (!words.contains(word)) {
            words.add(word);
            video.setRevisionNumber(video.getRevisionNumber() + 1);
            videoDao.update(video);
        }
    }
    return "success";
}
Also used : Letter(ai.elimu.model.content.Letter) Word(ai.elimu.model.content.Word) Number(ai.elimu.model.content.Number) Video(ai.elimu.model.content.multimedia.Video) RequestMapping(org.springframework.web.bind.annotation.RequestMapping) ResponseBody(org.springframework.web.bind.annotation.ResponseBody)

Example 4 with Video

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

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

Example 5 with Video

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

the class VideoController method handleThumbnailRequest.

@RequestMapping(value = "/{videoId}/thumbnail.png", method = RequestMethod.GET)
public void handleThumbnailRequest(Model model, @PathVariable Long videoId, HttpServletResponse response, OutputStream outputStream) {
    logger.info("handleThumbnailRequest");
    logger.info("videoId: " + videoId);
    Video video = videoDao.read(videoId);
    response.setContentType("image/png");
    byte[] bytes = video.getThumbnail();
    response.setContentLength(bytes.length);
    try {
        outputStream.write(bytes);
    } catch (EOFException ex) {
        // org.eclipse.jetty.io.EofException (occurs when download is aborted before completion)
        logger.warn(ex);
    } catch (IOException ex) {
        logger.error(null, ex);
    } finally {
        try {
            try {
                outputStream.flush();
                outputStream.close();
            } catch (EOFException ex) {
                // org.eclipse.jetty.io.EofException (occurs when download is aborted before completion)
                logger.warn(ex);
            }
        } catch (IOException ex) {
            logger.error(null, ex);
        }
    }
}
Also used : Video(ai.elimu.model.content.multimedia.Video) EOFException(java.io.EOFException) IOException(java.io.IOException) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Aggregations

Video (ai.elimu.model.content.multimedia.Video)10 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)10 Contributor (ai.elimu.model.Contributor)4 IOException (java.io.IOException)4 Letter (ai.elimu.model.content.Letter)2 Number (ai.elimu.model.content.Number)2 Word (ai.elimu.model.content.Word)2 VideoRevisionEvent (ai.elimu.model.contributor.VideoRevisionEvent)2 EOFException (java.io.EOFException)2 ResponseBody (org.springframework.web.bind.annotation.ResponseBody)2 VideoGson (ai.elimu.model.gson.content.multimedia.VideoGson)1 Gson (com.google.gson.Gson)1 JSONArray (org.json.JSONArray)1 JSONObject (org.json.JSONObject)1