Fisheye: Tag 8c5a664ea597cbeacbafabf18d16e04a4d06a9a7 refers to a dead (removed) revision in file `lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/ContributeDTOFactory.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/ContributeActivitiesProcessor.java =================================================================== diff -u -r3399163940c61c9132223c758d274486e57ff9b7 -r8c5a664ea597cbeacbafabf18d16e04a4d06a9a7 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/ContributeActivitiesProcessor.java (.../ContributeActivitiesProcessor.java) (revision 3399163940c61c9132223c758d274486e57ff9b7) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/ContributeActivitiesProcessor.java (.../ContributeActivitiesProcessor.java) (revision 8c5a664ea597cbeacbafabf18d16e04a4d06a9a7) @@ -33,7 +33,6 @@ import org.lamsfoundation.lams.learningdesign.SimpleActivity; import org.lamsfoundation.lams.learningdesign.dao.IActivityDAO; import org.lamsfoundation.lams.learningdesign.exception.LearningDesignProcessorException; -import org.lamsfoundation.lams.monitoring.ContributeDTOFactory; import org.lamsfoundation.lams.monitoring.dto.ContributeActivityDTO; import org.lamsfoundation.lams.tool.exception.LamsToolServiceException; import org.lamsfoundation.lams.tool.service.ILamsCoreToolService; Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/ContributeDTOFactory.java =================================================================== diff -u --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/ContributeDTOFactory.java (revision 0) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/ContributeDTOFactory.java (revision 8c5a664ea597cbeacbafabf18d16e04a4d06a9a7) @@ -0,0 +1,170 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + + +package org.lamsfoundation.lams.monitoring.service; + +import java.util.Collections; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.Set; +import java.util.Vector; + +import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.ComplexActivity; +import org.lamsfoundation.lams.learningdesign.ContributionTypes; +import org.lamsfoundation.lams.learningdesign.GateActivity; +import org.lamsfoundation.lams.learningdesign.Group; +import org.lamsfoundation.lams.learningdesign.Grouping; +import org.lamsfoundation.lams.learningdesign.GroupingActivity; +import org.lamsfoundation.lams.learningdesign.SimpleActivity; +import org.lamsfoundation.lams.learningdesign.ToolActivity; +import org.lamsfoundation.lams.learningdesign.strategy.ComplexActivityStrategy; +import org.lamsfoundation.lams.learningdesign.strategy.IContributionTypeStrategy; +import org.lamsfoundation.lams.learningdesign.strategy.SimpleActivityStrategy; +import org.lamsfoundation.lams.lesson.Lesson; +import org.lamsfoundation.lams.monitoring.dto.ContributeActivityDTO; +import org.lamsfoundation.lams.monitoring.dto.ContributeActivityDTO.ContributeEntry; +import org.lamsfoundation.lams.tool.ToolAccessMode; +import org.lamsfoundation.lams.tool.exception.LamsToolServiceException; +import org.lamsfoundation.lams.tool.service.ILamsCoreToolService; +import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.util.WebUtil; + +public class ContributeDTOFactory { + + /** + * Get the Contribute DTO for this activity. As a SimpleActivity it only returns a contribute DTO if there is a + * contribution entry. + * + * @throws LamsToolServiceException + */ + public static ContributeActivityDTO getContributeActivityDTO(Long lessonID, SimpleActivity activity, + ILamsCoreToolService toolService) throws LamsToolServiceException { + ContributeActivityDTO dto = null; + SimpleActivityStrategy strategy = activity.getSimpleActivityStrategy(); + if (strategy != null) { + dto = ContributeDTOFactory.addContributionURLS(lessonID, activity, strategy, toolService); + } + return dto; + } + + @SuppressWarnings("unchecked") + private static ContributeActivityDTO addContributionURLS(Long lessonID, Activity activity, + IContributionTypeStrategy strategy, ILamsCoreToolService toolService) { + ContributeActivityDTO dto = null; + LinkedList contributionType = new LinkedList(); + Collections.addAll(contributionType, strategy.getContributionType()); + + // check for activities being edited by Monitor + if (toolService.isContentEdited(activity)) { + contributionType.add(ContributionTypes.CONTENT_EDITED); + } + + if (!contributionType.isEmpty()) { + dto = new ContributeActivityDTO(activity); + for (Integer contributionTypeEntry : contributionType) { + String url = ContributeDTOFactory.getURL(lessonID, activity, contributionTypeEntry, toolService); + ContributeEntry entry = dto.addContribution(contributionTypeEntry, url); + + // once a gate was opened, it does not require attention + if (ContributionTypes.PERMISSION_GATE.equals(contributionTypeEntry) + && Boolean.TRUE.equals(((GateActivity) activity).getGateOpen())) { + entry.setIsComplete(true); + + } else if (ContributionTypes.CHOSEN_GROUPING.equals(contributionTypeEntry)) { + Lesson lesson = null; + // find the lesson for this activity + for (Lesson candidateLesson : (Set) activity.getLearningDesign().getLessons()) { + if (candidateLesson.getLessonId().equals(lessonID)) { + lesson = candidateLesson; + break; + } + } + if (lesson != null) { + // all availables users + Set learners = new HashSet(lesson.getLessonClass().getLearners()); + if (!learners.isEmpty()) { + // check if all users were assigned to groups and can not move anymore + GroupingActivity groupingActivity = (GroupingActivity) activity; + Grouping grouping = groupingActivity.getCreateGrouping(); + if ((grouping != null) && (grouping.getGroups() != null)) { + for (Group group : (Set) grouping.getGroups()) { + if (!group.mayBeDeleted()) { + learners.removeAll(group.getUsers()); + } + } + } + } + if (learners.isEmpty()) { + entry.setIsComplete(true); + } + } + } + } + } + + return dto; + } + + private static String getURL(Long lessonID, Activity activity, Integer contributionTypeEntry, + ILamsCoreToolService toolService) throws LamsToolServiceException { + + String url = null; + if (activity.isToolActivity()) { + ToolActivity toolActivity = (ToolActivity) activity; + if (contributionTypeEntry.equals(ContributionTypes.CONTENT_EDITED)) { + url = toolService.getToolAuthorURL(lessonID, toolActivity, ToolAccessMode.TEACHER); + } + } + + if (url == null) { + /* + * PERMISSION_GATE || SYNC_GATE || SCHEDULE_GATE || CHOSEN_GROUPING || CONTRIBUTION || CHOSEN_BRANCHING || + * Unknown contribution type || (!ToolActivity && MODERATION) + */ + url = toolService.getToolContributionURL(lessonID, activity); + } + return url != null ? WebUtil.convertToFullURL(url) : null; + } + + /** + * Get the Contribute DTO for this activity. As a complex activity it always returns a DTO - as it may be needed to + * enclose a child activity. + */ + public static ContributeActivityDTO getContributeActivityDTO(Long lessonID, ComplexActivity activity, + ILamsCoreToolService toolService, Vector childActivities) { + ContributeActivityDTO dto = null; + ComplexActivityStrategy strategy = activity.getComplexActivityStrategy(); + if (strategy != null) { + dto = ContributeDTOFactory.addContributionURLS(lessonID, activity, strategy, toolService); + if ((childActivities != null) && (childActivities.size() > 0)) { + if (dto == null) { + dto = new ContributeActivityDTO(activity); + } + dto.setChildActivities(childActivities); + } + } + return dto; + } +} \ No newline at end of file