Index: lams_central/src/java/org/lamsfoundation/lams/util/CentralConstants.java =================================================================== diff -u -r7beab62eb3d24d2fccac7abf3c22c29f0ba4132b -r878e6947f0f2e48ca892db589719d73064dcf034 --- lams_central/src/java/org/lamsfoundation/lams/util/CentralConstants.java (.../CentralConstants.java) (revision 7beab62eb3d24d2fccac7abf3c22c29f0ba4132b) +++ lams_central/src/java/org/lamsfoundation/lams/util/CentralConstants.java (.../CentralConstants.java) (revision 878e6947f0f2e48ca892db589719d73064dcf034) @@ -54,6 +54,8 @@ public static final String PARAM_LANG = "lang"; public static final String PARAM_METHOD = "method"; + + public static final String PARAM_PROGRESS_USER = "progressUser"; public static final String METHOD_START = "start"; Index: lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonManagerServlet.java =================================================================== diff -u -r7beab62eb3d24d2fccac7abf3c22c29f0ba4132b -r878e6947f0f2e48ca892db589719d73064dcf034 --- lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonManagerServlet.java (.../LessonManagerServlet.java) (revision 7beab62eb3d24d2fccac7abf3c22c29f0ba4132b) +++ lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonManagerServlet.java (.../LessonManagerServlet.java) (revision 878e6947f0f2e48ca892db589719d73064dcf034) @@ -123,7 +123,9 @@ String lang = request.getParameter(CentralConstants.PARAM_LANG); String method = request.getParameter(CentralConstants.PARAM_METHOD); String filePath = request.getParameter(CentralConstants.PARAM_FILEPATH); + String progressUser = request.getParameter(CentralConstants.PARAM_PROGRESS_USER); + Long ldId = null; Long lsId = null; try { @@ -178,7 +180,7 @@ } else if (method.equals(CentralConstants.METHOD_SINGLE_STUDENT_PROGRESS)) { lsId = new Long(lsIdStr); element = getSingleStudentProgress(document, serverId, datetime, hashValue, - username, lsId, courseId); + username, lsId, courseId, progressUser); } else if (method.equals(CentralConstants.METHOD_IMPORT)) { @@ -398,7 +400,7 @@ } public Element getSingleStudentProgress(Document document, String serverId, String datetime, - String hashValue, String username, long lsId, String courseID) + String hashValue, String username, long lsId, String courseID, String progressUser) throws RemoteException { try { @@ -421,32 +423,38 @@ int activitiesTotal = lesson.getLearningDesign().getActivities().size(); Iterator iterator = lesson.getLearnerProgresses().iterator(); - while(iterator.hasNext()){ - LearnerProgress learnProg = (LearnerProgress)iterator.next(); - LearnerProgressDTO learnerProgress = learnProg.getLearnerProgressData(); - - if (learnerProgress.getUserName().equals(prefix + "_" + userMap.getExtUsername())) - { - Element learnerProgElem = document.createElement(CentralConstants.ELEM_LEARNER_PROGRESS); - - int completedActivities = learnerProgress.getCompletedActivities().length; - int attemptedActivities = learnerProgress.getAttemptedActivities().length; - - if(learnerProgElem.getNodeType()== Node.ELEMENT_NODE) + ExtUserUseridMap progressUserMap = integrationService.getExistingExtUserUseridMap( + serverMap, progressUser); + + if (progressUserMap!=null) + { + while(iterator.hasNext()){ + LearnerProgress learnProg = (LearnerProgress)iterator.next(); + LearnerProgressDTO learnerProgress = learnProg.getLearnerProgressData(); + + if (learnerProgress.getUserName().equals(prefix + "_" + progressUserMap.getExtUsername())) { - learnerProgElem.setAttribute(CentralConstants.ATTR_LESSON_COMPLETE , "" + learnerProgress.getLessonComplete()); - learnerProgElem.setAttribute(CentralConstants.ATTR_ACTIVITY_COUNT , "" + activitiesTotal); - learnerProgElem.setAttribute(CentralConstants.ATTR_ACTIVITIES_COMPLETED , "" + completedActivities); - learnerProgElem.setAttribute(CentralConstants.ATTR_ACTIVITIES_ATTEMPTED , "" + attemptedActivities); - //learnerProgElem.setAttribute(CentralConstants.ATTR_CURRENT_ACTIVITY , currActivity); - learnerProgElem.setAttribute(CentralConstants.ATTR_STUDENT_ID, "" + userMap.getSid()); - learnerProgElem.setAttribute(CentralConstants.ATTR_COURSE_ID, courseID); - learnerProgElem.setAttribute(CentralConstants.ATTR_USERNAME, username); - learnerProgElem.setAttribute(CentralConstants.ATTR_LESSON_ID, "" + lsId); + Element learnerProgElem = document.createElement(CentralConstants.ELEM_LEARNER_PROGRESS); + + int completedActivities = learnerProgress.getCompletedActivities().length; + int attemptedActivities = learnerProgress.getAttemptedActivities().length; + + if(learnerProgElem.getNodeType()== Node.ELEMENT_NODE) + { + learnerProgElem.setAttribute(CentralConstants.ATTR_LESSON_COMPLETE , "" + learnerProgress.getLessonComplete()); + learnerProgElem.setAttribute(CentralConstants.ATTR_ACTIVITY_COUNT , "" + activitiesTotal); + learnerProgElem.setAttribute(CentralConstants.ATTR_ACTIVITIES_COMPLETED , "" + completedActivities); + learnerProgElem.setAttribute(CentralConstants.ATTR_ACTIVITIES_ATTEMPTED , "" + attemptedActivities); + //learnerProgElem.setAttribute(CentralConstants.ATTR_CURRENT_ACTIVITY , currActivity); + learnerProgElem.setAttribute(CentralConstants.ATTR_STUDENT_ID, "" + progressUserMap.getSid()); + learnerProgElem.setAttribute(CentralConstants.ATTR_COURSE_ID, courseID); + learnerProgElem.setAttribute(CentralConstants.ATTR_USERNAME, progressUser); + learnerProgElem.setAttribute(CentralConstants.ATTR_LESSON_ID, "" + lsId); + } + + element.appendChild(learnerProgElem); } - - element.appendChild(learnerProgElem); - } + } } } else{ @@ -460,6 +468,7 @@ } } + public boolean deleteLesson(String serverId, String datetime, Index: lams_common/src/java/org/lamsfoundation/lams/integration/service/IIntegrationService.java =================================================================== diff -u -rc9dfe17885b6f3dd3de0d780bd52c1a556d6cd0b -r878e6947f0f2e48ca892db589719d73064dcf034 --- lams_common/src/java/org/lamsfoundation/lams/integration/service/IIntegrationService.java (.../IIntegrationService.java) (revision c9dfe17885b6f3dd3de0d780bd52c1a556d6cd0b) +++ lams_common/src/java/org/lamsfoundation/lams/integration/service/IIntegrationService.java (.../IIntegrationService.java) (revision 878e6947f0f2e48ca892db589719d73064dcf034) @@ -48,6 +48,8 @@ ExtUserUseridMap getExtUserUseridMap(ExtServerOrgMap serverMap, String extUsername) throws UserInfoFetchException; + ExtUserUseridMap getExistingExtUserUseridMap(ExtServerOrgMap serverMap, String extUsername) throws UserInfoFetchException; + ExtServerOrgMap getExtServerOrgMap(Integer sid); ExtServerOrgMap getExtServerOrgMap(String serverId); Index: lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java =================================================================== diff -u -rc9dfe17885b6f3dd3de0d780bd52c1a556d6cd0b -r878e6947f0f2e48ca892db589719d73064dcf034 --- lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java (.../IntegrationService.java) (revision c9dfe17885b6f3dd3de0d780bd52c1a556d6cd0b) +++ lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java (.../IntegrationService.java) (revision 878e6947f0f2e48ca892db589719d73064dcf034) @@ -152,6 +152,22 @@ } } + public ExtUserUseridMap getExistingExtUserUseridMap( + ExtServerOrgMap serverMap, + String extUsername) + throws UserInfoFetchException + { + Map properties = new HashMap(); + properties.put("extServerOrgMap.sid", serverMap.getSid()); + properties.put("extUsername", extUsername); + List list = service.findByProperties(ExtUserUseridMap.class, properties); + if(list==null || list.size()==0){ + return null; + }else{ + return (ExtUserUseridMap)list.get(0); + } + } + public ExtUserUseridMap getImplicitExtUserUseridMap( ExtServerOrgMap serverMap, String extUsername,