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

Reply via email to