Index: lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java =================================================================== RCS file: /usr/local/cvsroot/lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java,v diff -u -r1.41.2.13 -r1.41.2.14 --- lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java 2 Apr 2007 07:50:39 -0000 1.41.2.13 +++ lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java 3 Apr 2007 05:22:39 -0000 1.41.2.14 @@ -471,137 +471,140 @@ activityType = new Integer(Activity.SYSTEM_GATE_ACTIVITY_TYPE); systemTool = systemToolDAO.getSystemToolByID(SystemTool.SYSTEM_GATE); title = "System Gate"; // messageService.getMessage(MSG_KEY_SYNC_GATE); - - // create new System Gate Activity - if ( syncType != null ) { - gate = (GateActivity) Activity.getActivityInstance(syncType.intValue()); - gate.setActivityTypeId(activityType.intValue()); - gate.setActivityCategoryID(Activity.CATEGORY_SYSTEM); - gate.setSystemTool(systemTool); - gate.setActivityUIID(++maxId); - gate.setTitle(title!=null?title:"Gate"); - gate.setGateOpen(false); - gate.setWaitingLearners(null); - gate.setGateActivityLevelId(GateActivity.LEARNER_GATE_LEVEL); - gate.setApplyGrouping(false); // not nullable so default to false - gate.setGroupingSupportType(Activity.GROUPING_SUPPORT_OPTIONAL); - gate.setOrderId(null); - gate.setDefineLater(Boolean.FALSE); - gate.setCreateDateTime(new Date()); - gate.setRunOffline(Boolean.FALSE); - gate.setReadOnly(Boolean.TRUE); - gate.setLearningDesign(design); + try { + // create new System Gate Activity + if ( syncType != null ) { + gate = (GateActivity) Activity.getActivityInstance(syncType.intValue()); + gate.setActivityTypeId(activityType.intValue()); + gate.setActivityCategoryID(Activity.CATEGORY_SYSTEM); + gate.setSystemTool(systemTool); + gate.setActivityUIID(++maxId); + gate.setTitle(title!=null?title:"Gate"); + gate.setGateOpen(false); + gate.setWaitingLearners(null); + gate.setGateActivityLevelId(GateActivity.LEARNER_GATE_LEVEL); + gate.setApplyGrouping(false); // not nullable so default to false + gate.setGroupingSupportType(Activity.GROUPING_SUPPORT_OPTIONAL); + gate.setOrderId(null); + gate.setDefineLater(Boolean.FALSE); + gate.setCreateDateTime(new Date()); + gate.setRunOffline(Boolean.FALSE); + gate.setReadOnly(Boolean.TRUE); + gate.setLearningDesign(design); + + design.getActivities().add(gate); + baseDAO.insert(gate); + } - design.getActivities().add(gate); - baseDAO.insert(gate); - } - - Transition fromTransition; - Transition newTransition = new Transition(); - Activity toActivity = null; - - if(activity != null) { + Transition fromTransition; + Transition newTransition = new Transition(); + Activity toActivity = null; - // update transitions - fromTransition = activity.getTransitionFrom(); - - if(fromTransition != null) { - toActivity = fromTransition.getToActivity(); + if(activity != null) { - fromTransition.setToActivity(gate); - fromTransition.setToUIID(gate.getActivityUIID()); - - newTransition.setTransitionUIID(++maxId); - newTransition.setFromActivity(gate); - newTransition.setFromUIID(gate.getActivityUIID()); - newTransition.setToActivity(toActivity); - newTransition.setToUIID(toActivity.getActivityUIID()); - newTransition.setLearningDesign(design); + // update transitions + fromTransition = activity.getTransitionFrom(); - gate.setTransitionFrom(newTransition); + if(fromTransition != null) { + toActivity = fromTransition.getToActivity(); + + fromTransition.setToActivity(gate); + fromTransition.setToUIID(gate.getActivityUIID()); - toActivity.setTransitionTo(newTransition); - - // set x/y position for Gate - Integer x1 = (activity.getXcoord() != null) ? activity.getXcoord() : 0; - Integer x2 = (toActivity.getXcoord() != null) ? toActivity.getXcoord() : 0; - - gate.setXcoord(new Integer(((x1.intValue() + 123 + x2.intValue()) / 2) - 13)); - - Integer y1 = (activity.getYcoord() != null) ? activity.getYcoord() : 0; - Integer y2 = (toActivity.getYcoord() != null) ? toActivity.getYcoord() : 0; - - gate.setYcoord(new Integer((y1.intValue() + 50 + y2.intValue()) / 2)); + newTransition.setTransitionUIID(++maxId); + newTransition.setFromActivity(gate); + newTransition.setFromUIID(gate.getActivityUIID()); + newTransition.setToActivity(toActivity); + newTransition.setToUIID(toActivity.getActivityUIID()); + newTransition.setLearningDesign(design); + + gate.setTransitionFrom(newTransition); + + toActivity.setTransitionTo(newTransition); + + // set x/y position for Gate + Integer x1 = (activity.getXcoord() != null) ? activity.getXcoord() : 0; + Integer x2 = (toActivity.getXcoord() != null) ? toActivity.getXcoord() : 0; + + gate.setXcoord(new Integer(((x1.intValue() + 123 + x2.intValue()) / 2) - 13)); + + Integer y1 = (activity.getYcoord() != null) ? activity.getYcoord() : 0; + Integer y2 = (toActivity.getYcoord() != null) ? toActivity.getYcoord() : 0; + + gate.setYcoord(new Integer((y1.intValue() + 50 + y2.intValue()) / 2)); + + } else { + fromTransition = newTransition; + + newTransition.setTransitionUIID(++maxId); + newTransition.setFromActivity(activity); + newTransition.setFromUIID(activity.getActivityUIID()); + newTransition.setToActivity(gate); + newTransition.setToUIID(gate.getActivityUIID()); + newTransition.setLearningDesign(design); + + activity.setTransitionFrom(fromTransition); + gate.setTransitionTo(fromTransition); + + // set x/y position for Gate + Integer x1 = (activity.getTransitionTo() != null) ? activity.getTransitionTo().getFromActivity().getXcoord() : null; + Integer x2 = (activity.getXcoord() != null) ? activity.getXcoord() : 0; + + if(x2 != null) gate.setXcoord(x2>=x1 ? new Integer(x2.intValue()+123+13+20) : new Integer(x2.intValue()-13-20)); + else gate.setXcoord(new Integer(x2.intValue()+123+13+20)); + + gate.setYcoord(activity.getYcoord() + 25); + } } else { + // no read-only activities insert gate at start of sequence fromTransition = newTransition; + toActivity = design.getFirstActivity(); newTransition.setTransitionUIID(++maxId); - newTransition.setFromActivity(activity); - newTransition.setFromUIID(activity.getActivityUIID()); - newTransition.setToActivity(gate); - newTransition.setToUIID(gate.getActivityUIID()); + newTransition.setToActivity(toActivity); + newTransition.setToUIID(toActivity.getActivityUIID()); + newTransition.setFromActivity(gate); + newTransition.setFromUIID(gate.getActivityUIID()); newTransition.setLearningDesign(design); - activity.setTransitionFrom(fromTransition); - gate.setTransitionTo(fromTransition); + gate.setTransitionFrom(fromTransition); + toActivity.setTransitionTo(fromTransition); + // keep gate door closed to stop learner's from going past this point + gate.setGateOpen(false); + + // set gate as first activity in sequence + design.setFirstActivity(gate); + // set x/y position for Gate - Integer x1 = (activity.getTransitionTo() != null) ? activity.getTransitionTo().getFromActivity().getXcoord() : null; - Integer x2 = (activity.getXcoord() != null) ? activity.getXcoord() : 0; - - if(x2 != null) gate.setXcoord(x2>=x1 ? new Integer(x2.intValue()+123+13+20) : new Integer(x2.intValue()-13-20)); - else gate.setXcoord(new Integer(x2.intValue()+123+13+20)); + Integer x1 = (toActivity.getXcoord() != null) ? toActivity.getXcoord() : 0; + Integer x2 = (toActivity.getTransitionFrom() != null) ? toActivity.getTransitionFrom().getToActivity().getXcoord() : null; - gate.setYcoord(activity.getYcoord() + 25); + if(x2 != null) gate.setXcoord(x2>=x1 ? new Integer(x1.intValue()-13-20) : new Integer(x1.intValue()+123+13+20)); + else gate.setXcoord(new Integer(x1.intValue()-13-20)); + + gate.setYcoord(toActivity.getYcoord() + 25); } - } else { - // no read-only activities insert gate at start of sequence - fromTransition = newTransition; - toActivity = design.getFirstActivity(); + design.getTransitions().add(newTransition); + design.setMaxID(maxId); - newTransition.setTransitionUIID(++maxId); - newTransition.setToActivity(toActivity); - newTransition.setToUIID(toActivity.getActivityUIID()); - newTransition.setFromActivity(gate); - newTransition.setFromUIID(gate.getActivityUIID()); - newTransition.setLearningDesign(design); + // increment design version field + design.setDesignVersion(design.getDesignVersion() + 1); - gate.setTransitionFrom(fromTransition); - toActivity.setTransitionTo(fromTransition); + if(gate != null) activityDAO.update(gate); + if(activity != null) activityDAO.update(activity); + if(toActivity != null) activityDAO.update(toActivity); - // keep gate door closed to stop learner's from going past this point - gate.setGateOpen(false); + if(fromTransition != null && !fromTransition.equals(newTransition)) baseDAO.update(fromTransition); + if(newTransition != null) baseDAO.insert(newTransition); + if(design != null) learningDesignDAO.insertOrUpdate(design); - // set gate as first activity in sequence - design.setFirstActivity(gate); - - // set x/y position for Gate - Integer x1 = (toActivity.getXcoord() != null) ? toActivity.getXcoord() : 0; - Integer x2 = (toActivity.getTransitionFrom() != null) ? toActivity.getTransitionFrom().getToActivity().getXcoord() : null; - - if(x2 != null) gate.setXcoord(x2>=x1 ? new Integer(x1.intValue()-13-20) : new Integer(x1.intValue()+123+13+20)); - else gate.setXcoord(new Integer(x1.intValue()-13-20)); - - gate.setYcoord(toActivity.getYcoord() + 25); + } catch(NullPointerException npe) { + log.error(npe.getMessage(), npe); } - design.getTransitions().add(newTransition); - design.setMaxID(maxId); - - // increment design version field - design.setDesignVersion(design.getDesignVersion() + 1); - - if(gate != null) activityDAO.update(gate); - if(activity != null) activityDAO.update(activity); - if(toActivity != null) activityDAO.update(toActivity); - - if(fromTransition != null && !fromTransition.equals(newTransition)) baseDAO.update(fromTransition); - if(newTransition != null) baseDAO.insert(newTransition); - if(design != null) learningDesignDAO.insertOrUpdate(design); - - } /**