Index: lams_central/conf/xdoclet/servlets.xml
===================================================================
RCS file: /usr/local/cvsroot/lams_central/conf/xdoclet/servlets.xml,v
diff -u -r1.14.2.2 -r1.14.2.3
--- lams_central/conf/xdoclet/servlets.xml 25 May 2007 05:49:06 -0000 1.14.2.2
+++ lams_central/conf/xdoclet/servlets.xml 1 Jun 2007 04:52:53 -0000 1.14.2.3
@@ -97,8 +97,8 @@
select distinct l.lesson_id, l.name from lams_fed_lesson fl, lams_lesson l, lams_fed_server s
where fl.lesson_id=l.lesson_id
- and fl.ext_org_id=${param.orgId java.lang.Integer}
- and s.name=${param.name}
+ and fl.ext_org_id=${param.oid java.lang.Integer}
+ and s.fed_id=${param.fid}
and fl.server_sid=s.sid
and sha1(s.privatekey)=${param.h}
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_common/src/java/org/lamsfoundation/lams/federation/FederationException.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_common/src/java/org/lamsfoundation/lams/federation/dto/ExtLessonDTO.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_common/src/java/org/lamsfoundation/lams/federation/dto/ExtOrgDTO.java'.
Fisheye: No comparison available. Pass `N' to diff?
Index: lams_common/src/java/org/lamsfoundation/lams/federation/service/FederationService.java
===================================================================
RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/federation/service/Attic/FederationService.java,v
diff -u -r1.1.2.1 -r1.1.2.2
--- lams_common/src/java/org/lamsfoundation/lams/federation/service/FederationService.java 25 May 2007 05:42:06 -0000 1.1.2.1
+++ lams_common/src/java/org/lamsfoundation/lams/federation/service/FederationService.java 1 Jun 2007 04:52:52 -0000 1.1.2.2
@@ -3,17 +3,32 @@
*/
package org.lamsfoundation.lams.federation.service;
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
import org.apache.log4j.Logger;
+import org.lamsfoundation.lams.federation.FederationException;
import org.lamsfoundation.lams.federation.FederationLesson;
import org.lamsfoundation.lams.federation.FederationServer;
+import org.lamsfoundation.lams.federation.dto.ExtLessonDTO;
+import org.lamsfoundation.lams.federation.dto.ExtOrgDTO;
import org.lamsfoundation.lams.lesson.Lesson;
import org.lamsfoundation.lams.usermanagement.Organisation;
import org.lamsfoundation.lams.usermanagement.OrganisationType;
import org.lamsfoundation.lams.usermanagement.service.IUserManagementService;
+import org.lamsfoundation.lams.util.HashUtil;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
/**
* @author jliew
@@ -42,7 +57,7 @@
}
public List getCoursesCanJoinSharedLessons() {
- List orgs = service.findByProperty(Organisation.class, "canJoinJointLessons", 1);
+ List orgs = service.findByProperty(Organisation.class, "canJoinJointLessons", true);
ArrayList courses = new ArrayList();
for (Organisation o : orgs) {
if (o.getOrganisationType().getOrganisationTypeId().equals(OrganisationType.COURSE_TYPE)) {
@@ -52,7 +67,7 @@
return courses;
}
- public List getSharedLessons(FederationServer fedServer, Integer extOrgId) {
+ public List getSharedLessons(FederationServer fedServer, Integer extOrgId) {
HashMap properties = new HashMap();
properties.put("sid", fedServer.getSid());
properties.put("orgId", extOrgId);
@@ -66,5 +81,119 @@
public void createFederationLesson(FederationServer fedServer, Integer extOrgId, Lesson lesson) {
service.save(new FederationLesson(fedServer, extOrgId, lesson.getLessonId()));
}
-
+
+ private FederationServer getFedServerByFedId(Integer fedId) throws FederationException {
+ List list = service.findByProperty(FederationServer.class, "fedId", fedId);
+ if (list == null || list.isEmpty()) {
+ throw new FederationException("Federation server with fed_id=" + fedId + " doesn't exist.");
+ } else {
+ return (FederationServer)list.get(0);
+ }
+ }
+
+ private Document getXmlDocumentFromUrl(URL url) throws FederationException {
+ try {
+ HttpURLConnection conn = (HttpURLConnection)url.openConnection();
+ if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
+ throw new FederationException("Response code when contacting "+url.getPath()+" is not OK: "+conn.getResponseCode());
+ }
+ DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
+ docBuilderFactory.setValidating(false);
+ return docBuilderFactory.newDocumentBuilder().parse(conn.getInputStream());
+ } catch (MalformedURLException e) {
+ log.error(e);
+ } catch (IOException e) {
+ // java.net.ConnectException: Connection refused: connect (server not running)
+ log.error(e);
+ } catch (SAXException e) {
+ log.error(e);
+ } catch (ParserConfigurationException e) {
+ log.error(e);
+ }
+ return null;
+ }
+
+ private ExtOrgDTO getExtOrgDTOFromNode(Node node) {
+ ExtOrgDTO dto = new ExtOrgDTO();
+
+ NodeList nodeList = node.getChildNodes();
+ for (int i=0; i getFedServerGroups(Integer fedId) throws FederationException {
+ FederationServer fedServer = getFedServerByFedId(fedId);
+ String fedKey = HashUtil.sha1(fedServer.getPrivateKey());
+ String urlText = fedServer.getUrl() + "/federation/groups?h=" + fedKey;
+ ArrayList list = new ArrayList();
+
+ try {
+ Document document = getXmlDocumentFromUrl(new URL(urlText));
+ NodeList nodeList = document.getElementsByTagName("row");
+ for (int i=0; i getFedServerLessons(Integer fedId, Integer orgId) throws FederationException {
+ FederationServer fedServer = getFedServerByFedId(fedId);
+ String fedKey = HashUtil.sha1(fedServer.getPrivateKey());
+ String urlText = fedServer.getUrl() + "/federation/lessons?h=" + fedKey + "&oid=" + orgId + "&fid=" + fedServer.getFedId();
+ ArrayList list = new ArrayList();
+
+ try {
+ Document document = getXmlDocumentFromUrl(new URL(urlText));
+ NodeList nodeList = document.getElementsByTagName("row");
+ for (int i=0; i getCoursesCanJoinSharedLessons();
- List getSharedLessons(FederationServer fedServer, Integer extOrgId);
+ List getSharedLessons(FederationServer fedServer, Integer extOrgId);
void insertFederationServer(FederationServer fedServer);
+ /**
+ * Used when local teacher has selected external group/s to share their lesson with.
+ * @param fedServer
+ * @param extOrgId
+ * @param lesson
+ */
void createFederationLesson(FederationServer fedServer, Integer extOrgId, Lesson lesson);
+
+ /**
+ * Used when local teacher is looking for external groups to share their lesson with.
+ * @return group ids and names from federation server with given fedId.
+ */
+ List getFedServerGroups(Integer fedId) throws FederationException;
+
+ /**
+ * Used to get list of lessons on remote server (fedId) available to org on this server (orgId).
+ * @param orgId
+ * @return lesson ids and names from federation server with given fed_id, available to org with given orgId.
+ */
+ List getFedServerLessons(Integer fedId, Integer orgId) throws FederationException;
}
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_common/test/java/org/lamsfoundation/lams/federation/TestFederationService.java'.
Fisheye: No comparison available. Pass `N' to diff?
Index: lams_common/test/java/org/lamsfoundation/lams/test/AbstractCommonTestCase.java
===================================================================
RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/test/Attic/AbstractCommonTestCase.java,v
diff -u -r1.7 -r1.7.2.1
--- lams_common/test/java/org/lamsfoundation/lams/test/AbstractCommonTestCase.java 17 Sep 2006 06:14:17 -0000 1.7
+++ lams_common/test/java/org/lamsfoundation/lams/test/AbstractCommonTestCase.java 1 Jun 2007 04:52:52 -0000 1.7.2.1
@@ -45,7 +45,8 @@
protected String[] getContextConfigLocation() {
return new String[] {"org/lamsfoundation/lams/localApplicationContext.xml",
"org/lamsfoundation/lams/lesson/lessonApplicationContext.xml",
- "org/lamsfoundation/lams/toolApplicationContext.xml"};
+ "org/lamsfoundation/lams/toolApplicationContext.xml",
+ "org/lamsfoundation/lams/federationContext.xml"};
}
/**