Search in sources :

Example 1 with IndexingContentSource

use of org.bigbluebutton.webminer.web.model.IndexingContentSource in project bigbluebutton by bigbluebutton.

the class CourseIndexingController method onSubmit.

/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.springframework.web.servlet.mvc.SimpleFormController#onSubmit(javax
	 * .servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse,
	 * java.lang.Object, org.springframework.validation.BindException)
	 */
@Override
protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) {
    // Get url of lecture.xml
    IndexingContentSource contentSourceCommand = (IndexingContentSource) command;
    String lectureXMLURL = contentSourceCommand.getLectureURL();
    System.out.println("in indexing");
    // location.
    try {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder parser = factory.newDocumentBuilder();
        org.w3c.dom.Document document = parser.parse(lectureXMLURL);
        String slideBaseURL = contentSourceCommand.getSlideBaseURL();
        List slideListResult = slideExpression.evaluateAsNodeList(document);
        List playTimeNodeList = slidePlayTimeExpression.evaluateAsNodeList(document);
        Map<String, String> slideTimeMap = new HashMap<String, String>();
        for (int i = 0; i < playTimeNodeList.size(); i++) {
            Node slideNode = (Node) playTimeNodeList.get(i);
            String slideTime = slideNode.getAttributes().getNamedItem("time").getNodeValue();
            String slideIndex = slideNode.getTextContent();
            if (slideTimeMap.get(slideIndex) != null) {
                // if a slide has been played multiple times, appending all
                // times or only record the first play time
                String value = slideTimeMap.get(slideIndex) + "||" + slideTime;
                slideTimeMap.put(slideIndex, value);
            } else {
                slideTimeMap.put(slideIndex, slideTime);
            }
            if (logger.isInfoEnabled()) {
                logger.info("slide index = " + slideIndex + " " + slideTime);
                logger.info("---Slide play time ---" + (String) slideTimeMap.get(slideIndex));
            }
        }
        // Map <String, String> slideTimeMap = new HashMap<String,
        // String>();
        ArrayList<String> fileURLs = new ArrayList();
        String fileLocation = null;
        synchronized (Index.getInstance()) {
            Index.getInstance().startIndex(lectureXMLURL);
            for (int i = 0; i < slideListResult.size(); i++) {
                Node node = (Node) slideListResult.get(i);
                String swfName = node.getNodeValue();
                fileLocation = slideBaseURL + swfName;
                fileURLs.add(i, fileLocation);
                Map attrs = new HashMap();
                // attrs.put("title", swfName);
                attrs.put("fileName", swfName);
                attrs.put("uid", lectureXMLURL);
                String idxToKey = (new Integer(i + 1)).toString();
                if (logger.isDebugEnabled()) {
                    logger.debug("idxToKey" + idxToKey + " resultsize=" + slideListResult.size() + "---Slide play time ---" + (String) slideTimeMap.get(idxToKey) + " summary = " + contentSourceCommand.getSummary());
                }
                // show the slide time
                if (slideTimeMap.get(idxToKey) != null) {
                    attrs.put("slideTime", "Slide " + idxToKey + ": played at " + (String) slideTimeMap.get(idxToKey));
                }
                attrs.put("summary", contentSourceCommand.getSummary());
                Index.getInstance().addIndex(fileLocation, attrs);
            }
            Index.getInstance().finishIndex();
        }
    } catch (Exception e) {
        System.out.println("-----------------exception -----------------------");
        Map<String, Object> model = new HashMap<String, Object>();
        model.put("generalError", "Please check the URL of files required by indexing");
        model.put("sourceContentURL", contentSourceCommand);
        return new ModelAndView(this.getFormView(), model);
    }
    return new ModelAndView(this.getSuccessView(), errors.getModel());
}
Also used : DocumentBuilderFactory(javax.xml.parsers.DocumentBuilderFactory) HashMap(java.util.HashMap) IndexingContentSource(org.bigbluebutton.webminer.web.model.IndexingContentSource) Node(org.w3c.dom.Node) ArrayList(java.util.ArrayList) ModelAndView(org.springframework.web.servlet.ModelAndView) BindException(org.springframework.validation.BindException) DocumentBuilder(javax.xml.parsers.DocumentBuilder) ArrayList(java.util.ArrayList) List(java.util.List) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Map (java.util.Map)1 DocumentBuilder (javax.xml.parsers.DocumentBuilder)1 DocumentBuilderFactory (javax.xml.parsers.DocumentBuilderFactory)1 IndexingContentSource (org.bigbluebutton.webminer.web.model.IndexingContentSource)1 BindException (org.springframework.validation.BindException)1 ModelAndView (org.springframework.web.servlet.ModelAndView)1 Node (org.w3c.dom.Node)1