Java Code Examples for org.jdom2.xpath.XPath#selectNodes()

The following examples show how to use org.jdom2.xpath.XPath#selectNodes() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: XMLUtils.java    From yawl with GNU Lesser General Public License v3.0 6 votes vote down vote up
@SuppressWarnings("unchecked")
public static List getXMLObjects(Document doc, String xpath)
{
	List objects = new ArrayList();
	try
	{
		XPath xp = XPath.newInstance(xpath);
		objects = xp.selectNodes(doc);
	}
	catch (Exception e)
	{
		logger.error("cannot process xpath: " + xpath + " on document: "
				+ Utils.element2String(doc == null ? null : doc.getRootElement(), true));
	}
	return objects;
}
 
Example 2
Source File: NcmlParserUtil.java    From tds with BSD 3-Clause "New" or "Revised" License 5 votes vote down vote up
public static List getNcMLElements(String path, Document doc) {

    // XPath doesn't support default namespaces, so we add nc as a prefix for the tags within the namespace!!!
    if (!path.startsWith(NS_PREFIX_ON_TAG) && !path.startsWith("/"))
      path = NS_PREFIX_ON_TAG + path;

    Pattern pattern = Pattern.compile("/\\w");
    Matcher matcher = pattern.matcher(path);

    StringBuilder sb = new StringBuilder();
    int currentChar = 0;
    while (matcher.find()) {

      sb.append(path.substring(currentChar, matcher.start() - currentChar + 1));
      if (!sb.toString().endsWith("/"))
        sb.append("/");
      sb.append(NS_PREFIX_ON_TAG);
      currentChar = matcher.start() + 1;
    }

    sb.append(path.substring(currentChar, path.length()));

    XPath xpath;
    try {

      xpath = XPath.newInstance(sb.toString());
      xpath.addNamespace(NS_PREFIX, doc.getRootElement().getNamespaceURI());
      return xpath.selectNodes(doc);

    } catch (JDOMException e) {

      e.printStackTrace();
    }

    return null;

  }
 
Example 3
Source File: CmSynchronizer.java    From sakai with Educational Community License v2.0 5 votes vote down vote up
protected void reconcileAcademicSessions(Document doc) {
	long start = System.currentTimeMillis();
	if(log.isInfoEnabled()) log.info("Reconciling AcademicSessions");

	// Get a list of all existing academic sessions
	List existing = cmService.getAcademicSessions();
	
	// Create a map of existing AcademicSession EIDs to AcademicSessions
	Map academicSessionMap = new HashMap();
	for(Iterator iter = existing.iterator(); iter.hasNext();) {
		AcademicSession as = (AcademicSession)iter.next();
		academicSessionMap.put(as.getEid(), as);
	}

	// Find the academic sessions specified in the xml doc and reconcile them
	try {
		XPath docsPath = XPath.newInstance("/cm-data/academic-sessions/academic-session");
		List items = docsPath.selectNodes(doc);
		// Add or update each of the academic sessions specified in the xml
		for(Iterator iter = items.iterator(); iter.hasNext();) {
			Element element = (Element)iter.next();
			String eid = element.getChildText("eid");
			if(log.isDebugEnabled()) log.debug("Found academic section to reconcile: " + eid);
			if(academicSessionMap.containsKey(eid)) {
				updateAcademicSession((AcademicSession)academicSessionMap.get(eid), element);
			} else {
				addAcademicSession(element);
			}
		}
	} catch (JDOMException jde) {
		log.error(jde.getMessage());
	}
	
	if(log.isInfoEnabled()) log.info("Finished reconciling AcademicSessions in " + (System.currentTimeMillis()-start) + " ms");
}
 
Example 4
Source File: CmSynchronizer.java    From sakai with Educational Community License v2.0 5 votes vote down vote up
protected void reconcileCurrentAcademicSessions(Document doc) {
	try {
		List<String> academicSessionEids = new ArrayList<String>();
		XPath docsPath = XPath.newInstance("/cm-data/current-academic-sessions/academic-session-eid");
		List<Element> items = (List<Element>) docsPath.selectNodes(doc);
		for (Element element : items) {
			academicSessionEids.add(element.getText());
		}
		if(log.isDebugEnabled()) log.debug("Found current academic sessions to reconcile: " + academicSessionEids);
		cmAdmin.setCurrentAcademicSessions(academicSessionEids);
	} catch (JDOMException jde) {
		log.error(jde.getMessage());
	}
}
 
Example 5
Source File: CmSynchronizer.java    From sakai with Educational Community License v2.0 5 votes vote down vote up
protected void reconcileCanonicalCourses(Document doc) {
	long start = System.currentTimeMillis();
	if(log.isInfoEnabled()) log.info("Reconciling CanonicalCourses");
	
	try {
		XPath docsPath = XPath.newInstance("/cm-data/canonical-courses/canonical-course");
		List items = docsPath.selectNodes(doc);
		if(log.isDebugEnabled()) log.debug("Found " + items.size() + " canonical courses to reconcile");

		// Add or update each of the canonical courses specified in the xml
		for(Iterator iter = items.iterator(); iter.hasNext();) {
			Element element = (Element)iter.next();
			String eid = element.getChildText("eid");
			if(log.isDebugEnabled()) log.debug("Reconciling canonical course " + eid);
			
			if(cmService.isCanonicalCourseDefined(eid)) {
				updateCanonicalCourse(cmService.getCanonicalCourse(eid), element);
			} else {
				addCanonicalCourse(element);
			}
		}
	} catch (JDOMException jde) {
		log.error(jde.getMessage());
	}
	
	if(log.isInfoEnabled()) log.info("Finished reconciling CanonicalCourses in " + (System.currentTimeMillis()-start) + " ms");
}
 
Example 6
Source File: CmSynchronizer.java    From sakai with Educational Community License v2.0 5 votes vote down vote up
protected void reconcileCourseOfferings(Document doc) {
	long start = System.currentTimeMillis();
	if(log.isInfoEnabled()) log.info("Reconciling CourseOfferings");
	
	try {
		XPath docsPath = XPath.newInstance("/cm-data/course-offerings/course-offering");
		List items = docsPath.selectNodes(doc);
		if(log.isDebugEnabled()) log.debug("Found " + items.size() + " course offerings to reconcile");

		// Add or update each of the course offerings specified in the xml
		for(Iterator iter = items.iterator(); iter.hasNext();) {
			Element element = (Element)iter.next();
			String eid = element.getChildText("eid");
			if(log.isDebugEnabled()) log.debug("Reconciling course offering " + eid);
			
			CourseOffering courseOffering = null;
			if(cmService.isCourseOfferingDefined(eid)) {
				courseOffering = updateCourseOffering(cmService.getCourseOffering(eid), element);
			} else {
				courseOffering = addCourseOffering(element);
			}
			
			// Update the members
			Element members = element.getChild("members");
			if(members != null) {
				updateCourseOfferingMembers(members, courseOffering);
			}

		}
	} catch (JDOMException jde) {
		log.error(jde.getMessage());
	}
	if(log.isInfoEnabled()) log.info("Finished reconciling CourseOfferings in " + (System.currentTimeMillis()-start) + " ms");
}
 
Example 7
Source File: CmSynchronizer.java    From sakai with Educational Community License v2.0 5 votes vote down vote up
protected void reconcileEnrollmentSets(Document doc) {
	long start = System.currentTimeMillis();
	if(log.isInfoEnabled()) log.info("Reconciling EnrollmentSets");
	
	try {
		XPath docsPath = XPath.newInstance("/cm-data/enrollment-sets/enrollment-set");
		List items = docsPath.selectNodes(doc);
		if(log.isDebugEnabled()) log.debug("Found " + items.size() + " enrollment sets to reconcile");

		// Add or update each of the enrollment sets specified in the xml
		for(Iterator iter = items.iterator(); iter.hasNext();) {
			Element element = (Element)iter.next();
			String eid = element.getChildText("eid");
			if(log.isDebugEnabled()) log.debug("Reconciling enrollment set " + eid);
			
			EnrollmentSet enr = null;
			if(cmService.isEnrollmentSetDefined(eid)) {
				enr = updateEnrollmentSet(cmService.getEnrollmentSet(eid), element);
			} else {
				enr = addEnrollmentSet(element);
			}
			reconcileEnrollments(element.getChild("enrollments"), enr);
			reconcileOfficialInstructors(element, enr);
		}
	} catch (JDOMException jde) {
		log.error(jde.getMessage());
	}
	
	if(log.isInfoEnabled()) log.info("Finished reconciling EnrollmentSets in " + (System.currentTimeMillis()-start) + " ms");
}
 
Example 8
Source File: CmSynchronizer.java    From sakai with Educational Community License v2.0 5 votes vote down vote up
protected void reconcileCourseSets(Document doc) {
	long start = System.currentTimeMillis();
	if(log.isInfoEnabled()) log.info("Reconciling CourseSets");
	
	try {
		XPath docsPath = XPath.newInstance("/cm-data/course-sets/course-set");
		List items = docsPath.selectNodes(doc);
		if(log.isDebugEnabled()) log.debug("Found " + items.size() + " course sets to reconcile");

		// Add or update each of the course offerings specified in the xml
		for(Iterator iter = items.iterator(); iter.hasNext();) {
			Element element = (Element)iter.next();
			String eid = element.getChildText("eid");
			if(log.isDebugEnabled()) log.debug("Reconciling course set " + eid);

			CourseSet courseSet = null;
			if(cmService.isCourseSetDefined(eid)) {
				courseSet = updateCourseSet(cmService.getCourseSet(eid), element);
			} else {
				courseSet = addCourseSet(element);
			}
			
			// Update the members
			Element members = element.getChild("members");
			if(members != null) {
				updateCourseSetMembers(members, courseSet);
			}
		}
	} catch (JDOMException jde) {
		log.error(jde.getMessage());
	}
	if(log.isInfoEnabled()) log.info("Finished reconciling CourseSets in " + (System.currentTimeMillis()-start) + " ms");
}
 
Example 9
Source File: CmSynchronizer.java    From sakai with Educational Community License v2.0 5 votes vote down vote up
protected void reconcileAcademicSessions(Document doc) {
	long start = System.currentTimeMillis();
	if(log.isInfoEnabled()) log.info("Reconciling AcademicSessions");

	// Get a list of all existing academic sessions
	List existing = cmService.getAcademicSessions();
	
	// Create a map of existing AcademicSession EIDs to AcademicSessions
	Map academicSessionMap = new HashMap();
	for(Iterator iter = existing.iterator(); iter.hasNext();) {
		AcademicSession as = (AcademicSession)iter.next();
		academicSessionMap.put(as.getEid(), as);
	}

	// Find the academic sessions specified in the xml doc and reconcile them
	try {
		XPath docsPath = XPath.newInstance("/cm-data/academic-sessions/academic-session");
		List items = docsPath.selectNodes(doc);
		// Add or update each of the academic sessions specified in the xml
		for(Iterator iter = items.iterator(); iter.hasNext();) {
			Element element = (Element)iter.next();
			String eid = element.getChildText("eid");
			if(log.isDebugEnabled()) log.debug("Found academic section to reconcile: " + eid);
			if(academicSessionMap.containsKey(eid)) {
				updateAcademicSession((AcademicSession)academicSessionMap.get(eid), element);
			} else {
				addAcademicSession(element);
			}
		}
	} catch (JDOMException jde) {
		log.error(jde.getMessage());
	}
	
	if(log.isInfoEnabled()) log.info("Finished reconciling AcademicSessions in " + (System.currentTimeMillis()-start) + " ms");
}
 
Example 10
Source File: CmSynchronizer.java    From sakai with Educational Community License v2.0 5 votes vote down vote up
protected void reconcileCurrentAcademicSessions(Document doc) {
	try {
		List<String> academicSessionEids = new ArrayList<String>();
		XPath docsPath = XPath.newInstance("/cm-data/current-academic-sessions/academic-session-eid");
		List<Element> items = (List<Element>) docsPath.selectNodes(doc);
		for (Element element : items) {
			academicSessionEids.add(element.getText());
		}
		if(log.isDebugEnabled()) log.debug("Found current academic sessions to reconcile: " + academicSessionEids);
		cmAdmin.setCurrentAcademicSessions(academicSessionEids);
	} catch (JDOMException jde) {
		log.error(jde.getMessage());
	}
}
 
Example 11
Source File: CmSynchronizer.java    From sakai with Educational Community License v2.0 5 votes vote down vote up
protected void reconcileCanonicalCourses(Document doc) {
	long start = System.currentTimeMillis();
	if(log.isInfoEnabled()) log.info("Reconciling CanonicalCourses");
	
	try {
		XPath docsPath = XPath.newInstance("/cm-data/canonical-courses/canonical-course");
		List items = docsPath.selectNodes(doc);
		if(log.isDebugEnabled()) log.debug("Found " + items.size() + " canonical courses to reconcile");

		// Add or update each of the canonical courses specified in the xml
		for(Iterator iter = items.iterator(); iter.hasNext();) {
			Element element = (Element)iter.next();
			String eid = element.getChildText("eid");
			if(log.isDebugEnabled()) log.debug("Reconciling canonical course " + eid);
			
			if(cmService.isCanonicalCourseDefined(eid)) {
				updateCanonicalCourse(cmService.getCanonicalCourse(eid), element);
			} else {
				addCanonicalCourse(element);
			}
		}
	} catch (JDOMException jde) {
		log.error(jde.getMessage());
	}
	
	if(log.isInfoEnabled()) log.info("Finished reconciling CanonicalCourses in " + (System.currentTimeMillis()-start) + " ms");
}
 
Example 12
Source File: CmSynchronizer.java    From sakai with Educational Community License v2.0 5 votes vote down vote up
protected void reconcileCourseOfferings(Document doc) {
	long start = System.currentTimeMillis();
	if(log.isInfoEnabled()) log.info("Reconciling CourseOfferings");
	
	try {
		XPath docsPath = XPath.newInstance("/cm-data/course-offerings/course-offering");
		List items = docsPath.selectNodes(doc);
		if(log.isDebugEnabled()) log.debug("Found " + items.size() + " course offerings to reconcile");

		// Add or update each of the course offerings specified in the xml
		for(Iterator iter = items.iterator(); iter.hasNext();) {
			Element element = (Element)iter.next();
			String eid = element.getChildText("eid");
			if(log.isDebugEnabled()) log.debug("Reconciling course offering " + eid);
			
			CourseOffering courseOffering = null;
			if(cmService.isCourseOfferingDefined(eid)) {
				courseOffering = updateCourseOffering(cmService.getCourseOffering(eid), element);
			} else {
				courseOffering = addCourseOffering(element);
			}
			
			// Update the members
			Element members = element.getChild("members");
			if(members != null) {
				updateCourseOfferingMembers(members, courseOffering);
			}

		}
	} catch (JDOMException jde) {
		log.error(jde.getMessage());
	}
	if(log.isInfoEnabled()) log.info("Finished reconciling CourseOfferings in " + (System.currentTimeMillis()-start) + " ms");
}
 
Example 13
Source File: CmSynchronizer.java    From sakai with Educational Community License v2.0 5 votes vote down vote up
protected void reconcileEnrollmentSets(Document doc) {
	long start = System.currentTimeMillis();
	if(log.isInfoEnabled()) log.info("Reconciling EnrollmentSets");
	
	try {
		XPath docsPath = XPath.newInstance("/cm-data/enrollment-sets/enrollment-set");
		List items = docsPath.selectNodes(doc);
		if(log.isDebugEnabled()) log.debug("Found " + items.size() + " enrollment sets to reconcile");

		// Add or update each of the enrollment sets specified in the xml
		for(Iterator iter = items.iterator(); iter.hasNext();) {
			Element element = (Element)iter.next();
			String eid = element.getChildText("eid");
			if(log.isDebugEnabled()) log.debug("Reconciling enrollment set " + eid);
			
			EnrollmentSet enr = null;
			if(cmService.isEnrollmentSetDefined(eid)) {
				enr = updateEnrollmentSet(cmService.getEnrollmentSet(eid), element);
			} else {
				enr = addEnrollmentSet(element);
			}
			reconcileEnrollments(element.getChild("enrollments"), enr);
			reconcileOfficialInstructors(element, enr);
		}
	} catch (JDOMException jde) {
		log.error(jde.getMessage());
	}
	
	if(log.isInfoEnabled()) log.info("Finished reconciling EnrollmentSets in " + (System.currentTimeMillis()-start) + " ms");
}
 
Example 14
Source File: CmSynchronizer.java    From sakai with Educational Community License v2.0 5 votes vote down vote up
protected void reconcileCourseSets(Document doc) {
	long start = System.currentTimeMillis();
	if(log.isInfoEnabled()) log.info("Reconciling CourseSets");
	
	try {
		XPath docsPath = XPath.newInstance("/cm-data/course-sets/course-set");
		List items = docsPath.selectNodes(doc);
		if(log.isDebugEnabled()) log.debug("Found " + items.size() + " course sets to reconcile");

		// Add or update each of the course offerings specified in the xml
		for(Iterator iter = items.iterator(); iter.hasNext();) {
			Element element = (Element)iter.next();
			String eid = element.getChildText("eid");
			if(log.isDebugEnabled()) log.debug("Reconciling course set " + eid);

			CourseSet courseSet = null;
			if(cmService.isCourseSetDefined(eid)) {
				courseSet = updateCourseSet(cmService.getCourseSet(eid), element);
			} else {
				courseSet = addCourseSet(element);
			}
			
			// Update the members
			Element members = element.getChild("members");
			if(members != null) {
				updateCourseSetMembers(members, courseSet);
			}
		}
	} catch (JDOMException jde) {
		log.error(jde.getMessage());
	}
	if(log.isInfoEnabled()) log.info("Finished reconciling CourseSets in " + (System.currentTimeMillis()-start) + " ms");
}