Update of /var/cvs/contributions/didactor2/src/assessment/java/nl/didactor/component/assessment/education_menu/utils In directory james.mmbase.org:/tmp/cvs-serv15461/education_menu/utils
Modified Files: LessonChecker.java Log Message: impelmentation was overly complicated and incorrect. Let's hope this is better See also: http://cvs.mmbase.org/viewcvs/contributions/didactor2/src/assessment/java/nl/didactor/component/assessment/education_menu/utils Index: LessonChecker.java =================================================================== RCS file: /var/cvs/contributions/didactor2/src/assessment/java/nl/didactor/component/assessment/education_menu/utils/LessonChecker.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -b -r1.6 -r1.7 --- LessonChecker.java 17 Oct 2008 14:28:18 -0000 1.6 +++ LessonChecker.java 23 Oct 2008 16:00:38 -0000 1.7 @@ -13,7 +13,7 @@ /** * @javadoc - * @version $Id: LessonChecker.java,v 1.6 2008/10/17 14:28:18 michiel Exp $ + * @version $Id: LessonChecker.java,v 1.7 2008/10/23 16:00:38 michiel Exp $ */ public class LessonChecker { @@ -25,6 +25,10 @@ return Component.getComponent("assessment"); } + + /** + * Wether, or not, for given neducation the 'relate_learnblocks' setting is set. + */ protected static boolean checkRelated(Cloud cloud, Node education) { Map wtf = new HashMap(); wtf.put("education", education); @@ -49,6 +53,7 @@ Node assessment = cloud.getNode(getComponent().getNumber()); if (! education.getRelatedNodes("components", "settingrel", "destination").contains(assessment)) { + log.debug("Nothing blocked because education not related to " + assessment); return resultSet; } @@ -57,6 +62,7 @@ roles.contains("courseeditor") || roles.contains("systemadministrator")) { // nothing blocked + log.debug("Nothing blocked because high role"); return resultSet; } @@ -69,9 +75,7 @@ boolean checkRelated = checkRelated(cloud, education); - int counter = 0; boolean statusBlocked = false; - boolean firstHasFeedback = false; for (NodeIterator it = relatedLearnBlocks.nodeIterator(); it.hasNext(); ) { Node clusterNode = it.nextNode(); @@ -83,36 +87,27 @@ log.debug("Learnblock=" + learnBlock.getNumber() + " is blocked because the previous one is blocked."); resultSet.add(learnBlock); } else { + log.debug("Checking relation " + learnBlock.getNumber() + " -> " + user.getNumber()); + + if (checkRelated) { + boolean related = Queries.count(AssessmentField.getRelationsQuery(learnBlock)) > 0; + if (! related) continue; + } NodeList classRels = cloud.getList("" + learnBlock.getNumber(), "learnblocks,classrel,people", "classrel.number", "people.number='" + user.getNumber() + "'", null, null, null, true); + boolean assessed = classRels.size() > 0; - - if (classRels.size() == 0) { - if (checkRelated) { - if (Queries.count(AssessmentField.getRelationsQuery(learnBlock)) != 0) { - statusBlocked = noFeedbackRelated(learnBlock, resultSet, counter, statusBlocked, firstHasFeedback); - } - } else { - //blocked - statusBlocked = noFeedbackRelated(learnBlock, resultSet, counter, statusBlocked, firstHasFeedback); - } + if (assessed) { + boolean hasFeedBack = cloud.getNode(classRels.getNode(0).getIntValue("classrel.number")).countRelatedNodes("popfeedback") > 0; + if (! hasFeedBack) statusBlocked = true; } else { - if (cloud.getNode(classRels.getNode(0).getIntValue("classrel.number")).countRelatedNodes("popfeedback") > 0) { - if (counter == 0) { - firstHasFeedback = true; - } - } else { - //blocked - statusBlocked = noFeedbackRelated(learnBlock, resultSet, counter, statusBlocked, firstHasFeedback); - } + statusBlocked = true; } } - - counter++; } return resultSet; @@ -121,28 +116,6 @@ - - private static boolean noFeedbackRelated(Node nodeLearnBlock, Set<Node> resultSet, int counter, boolean statusBlocked, boolean firstHasFeedback){ - if(counter == 0) { - log.debug("Learnblock=" + nodeLearnBlock.getNumber() + " is open because it is the first one in the list"); - } else { - statusBlocked = true; - } - - if (counter == 1) { - if (!firstHasFeedback) { - //The first learnblock has got no feedback - log.debug("Learnblock=" + nodeLearnBlock.getNumber() + " is blocked because the previous one has got no feedback."); - resultSet.add(nodeLearnBlock); - } - } - - log.debug("Learnblock=" + nodeLearnBlock.getNumber() + " has got no feedback related."); - - return statusBlocked; - } - - } _______________________________________________ Cvs mailing list Cvs@lists.mmbase.org http://lists.mmbase.org/mailman/listinfo/cvs