Package org.olat.course

Examples of org.olat.course.ICourse


    String q = " from org.olat.group.context.BGContext2Resource as bgcr where bgcr.groupContext = ? and bgcr.resource = ?";
    DBFactory.getInstance().delete(q, new Object[] { bgContext.getKey(), resource.getKey() },
        new Type[] { Hibernate.LONG, Hibernate.LONG });
    // 2) update course context list in this course resource
    if (resource.getResourceableTypeName().equals(CourseModule.getCourseTypeName())) {
      ICourse course = CourseFactory.loadCourse(resource);
      course.getCourseEnvironment().getCourseGroupManager().initGroupContextsList();
    } else if (resource.getResourceableTypeName().equals("junitcourse")) {
      // do nothing when in junit test mode
    } else {
      throw new AssertException("Currently only course resources allowed in resource to context relations.");
    }
View Full Code Here


   */
  protected void updateUserEfficiencyStatement(UserCourseEnvironment userCourseEnv) {
    Long courseResId = userCourseEnv.getCourseEnvironment().getCourseResourceableId();
    RepositoryEntry re = RepositoryManager.getInstance().lookupRepositoryEntry(
        OresHelper.createOLATResourceableInstance(CourseModule.class, courseResId), false);
    ICourse course = CourseFactory.loadCourse(userCourseEnv.getCourseEnvironment().getCourseResourceableId());
    updateUserEfficiencyStatement(userCourseEnv, re.getKey(), course, true);
  }
View Full Code Here

   * @param checkForExistingRecord true: check if efficiency statement for this user exist;
   * false: always create new one (be careful with this one!)
   */ 
  public void updateEfficiencyStatements(OLATResourceable ores, List<Identity> identities, final boolean checkForExistingProperty) {
    if (identities.size() > 0) {
      final ICourse course = CourseFactory.loadCourse(ores);
      log.audit("Updating efficiency statements for course::" + course.getResourceableId() + ", this might produce temporary heavy load on the CPU");
      Long courseResId = course.getCourseEnvironment().getCourseResourceableId();
      final RepositoryEntry re = RepositoryManager.getInstance().lookupRepositoryEntry(
          OresHelper.createOLATResourceableInstance(CourseModule.class, courseResId), false);

      // preload cache to speed up things
      AssessmentManager am = course.getCourseEnvironment().getAssessmentManager();
      long start = System.currentTimeMillis();
      am.preloadCache();
      long between = System.currentTimeMillis();

      Iterator<Identity> iter = identities.iterator();     
      while (iter.hasNext()) {
        final Identity identity = iter.next();         
        //o_clusterOK: by ld
        OLATResourceable efficiencyStatementResourceable = am.createOLATResourceableForLocking(identity);
        CoordinatorManager.getCoordinator().getSyncer().doInSync(efficiencyStatementResourceable, new SyncerExecutor() {
          public void execute() {         
            // create temporary user course env
            UserCourseEnvironment uce = AssessmentHelper.createAndInitUserCourseEnvironment(identity, course);
            updateUserEfficiencyStatement(uce, re.getKey(), course, checkForExistingProperty);
            }
          });
        if (Thread.interrupted()) break;
      }
      //}
      long end = System.currentTimeMillis();
      if (log.isDebug())
        log.debug("Updated efficiency statements for course::" + course.getResourceableId()
            + ". Prepare cache: " + (between-start) + "ms; Updating statements: " + (end-between) + "ms; Users: " + identities.size());
    }
  }
View Full Code Here

    // set main vc to userchoose
    setContent(userChoose);
  }

  private void doNodeChoose(UserRequest ureq) {
    ICourse course = CourseFactory.loadCourse(ores);
    removeAsListenerAndDispose(nodeListCtr);
    // table configuraton
    TableGuiConfiguration tableConfig = new TableGuiConfiguration();
    tableConfig.setTableEmptyMessage(translate("nodesoverview.nonodes"));
    tableConfig.setDownloadOffered(false);
    tableConfig.setColumnMovingOffered(false);
    tableConfig.setSortingEnabled(false);
    tableConfig.setDisplayTableHeader(true);
    tableConfig.setDisplayRowCount(false);
    tableConfig.setPageingEnabled(false);
   
    nodeListCtr = new TableController(tableConfig, ureq, getWindowControl(), getTranslator(), null);
    listenTo(nodeListCtr);
    // table columns   
    nodeListCtr.addColumnDescriptor(new CustomRenderColumnDescriptor("table.header.node", 0,
        null, ureq.getLocale(), ColumnDescriptor.ALIGNMENT_LEFT, new IndentedNodeRenderer()));
    nodeListCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.action.select", 1,
        CMD_SELECT_NODE, ureq.getLocale()));
   
    // get list of course node data and populate table data model
    CourseNode rootNode = course.getRunStructure().getRootNode();   
    List<Map<String, Object>> nodesTableObjectArrayList = addAssessableNodesAndParentsToList(0, rootNode);
   
    // only populate data model if data available
    if (nodesTableObjectArrayList == null) {
      String text = translate("nodesoverview.nonodes");
View Full Code Here

    // set main content to nodechoose, do not use wrapper
    main.setContent(nodeChoose);
  }
 
  private void doBulkChoose(UserRequest ureq) {
    ICourse course = CourseFactory.loadCourse(ores);
    List<Identity> allowedIdentities = getAllIdentitisFromGroupmanagement();
    removeAsListenerAndDispose(bamc);
    bamc = new BulkAssessmentMainController(ureq, getWindowControl(), course, allowedIdentities);
    listenTo(bamc);
    main.setContent(bamc.getInitialComponent());
View Full Code Here

    }
    if (getGroupIdentitiesFromGroupmanagement(group).size()==0) {
      // group has no participant, can not evalute 
      return false;
    }
    ICourse course = CourseFactory.loadCourse(ores);
    // check if course node is visible for group
    // get first identity to use this identity for condition interpreter
    Identity identity = getGroupIdentitiesFromGroupmanagement(group).get(0);
    IdentityEnvironment identityEnvironment = new IdentityEnvironment();
    identityEnvironment.setIdentity(identity);
    UserCourseEnvironment uce = new UserCourseEnvironmentImpl(identityEnvironment, course.getCourseEnvironment());
    OnlyGroupConditionInterpreter ci = new OnlyGroupConditionInterpreter(uce);
    List listOfConditionExpressions = courseNode.getConditionExpressions();
    boolean allConditionAreValid = true;
    // loop over all conditions, all must be true
    for (Iterator iter = listOfConditionExpressions.iterator(); iter.hasNext();) {
View Full Code Here

      csc = null;
    assessmentEditController = null;
    identityAssessmentController = null;
   
    // deregister from assessment changed events
    ICourse course = CourseFactory.loadCourse(ores);
    course.getCourseEnvironment().getAssessmentManager().deregisterFromAssessmentChangeEvents(this);

    // stop assessment cache preloader thread if still running
    if (assessmentCachPreloaderThread != null && assessmentCachPreloaderThread.isAlive()) {
      assessmentCachPreloaderThread.interrupt();
      if (log.isDebug()) {
        log.debug("Interrupting assessment cache preload in course::" + course.getResourceableId() + " while in doDispose()");
      }
    }
  }
View Full Code Here

     * @see java.lang.Runnable#run()
     */
    public void run() {
      boolean success = false;
      try{
        ICourse course = CourseFactory.loadCourse(ores);
        // 1) preload assessment cache with database properties
        long start = 0;
        boolean logDebug = log.isDebug();
        if(logDebug) start = System.currentTimeMillis();
        course.getCourseEnvironment().getAssessmentManager().preloadCache();
        // 2) preload controller local user environment cache
        start = System.currentTimeMillis();
        List<Identity> identities = getAllIdentitisFromGroupmanagement();
        for (Iterator<Identity> iter = identities.iterator(); iter.hasNext();) {
          Identity identity = iter.next();
          AssessmentHelper.wrapIdentity(identity, localUserCourseEnvironmentCache, course, null);
          if (Thread.interrupted()) break;
        }
        if (logDebug) {
          log.debug("Preloading of user course environment cache for course::" + course.getResourceableId() + " for "
              + localUserCourseEnvironmentCache.size() + " user course environments. Loading time::" + (System.currentTimeMillis() - start)
              + "ms");
        }
        // TODO: cg(04.09.2008): replace 'commit/closeSession' with doInManagedBlock
        // finished in this thread, close database session of this thread!
View Full Code Here

    tabbedPane.addListener(this);
    try {
    if (repositoryEntry.getOlatResource().getResourceableTypeName().equals(CourseModule.getCourseTypeName())) {
      // FIXME: This is duplicate code!!!! See CourseConfigMainController.
      // it is a course
      ICourse course = CourseFactory.loadCourse(repositoryEntry.getOlatResource());
      this.changedCourseConfig = course.getCourseEnvironment().getCourseConfig().clone();
      this.initialCourseConfig = course.getCourseEnvironment().getCourseConfig().clone();
           
      boolean isAlreadyLocked = CoordinatorManager.getCoordinator().getLocker().isLocked(repositoryEntry.getOlatResource(), CourseFactory.COURSE_EDITOR_LOCK);
       //try to acquire edit lock for this course and show dialog box on failure..
      courseLockEntry = CoordinatorManager.getCoordinator().getLocker().acquireLock(repositoryEntry.getOlatResource(), ureq.getIdentity(), CourseFactory.COURSE_EDITOR_LOCK);
      if (!courseLockEntry.isSuccess()){       
        this.showWarning("error.course.alreadylocked", courseLockEntry.getOwner().getName());
        //beware: the controller is not properly initialized - the initial component is null
        return;
      } else if(courseLockEntry.isSuccess() && isAlreadyLocked) {
        this.showWarning("warning.course.alreadylocked.bySameUser");
        //beware: the controller is not properly initialized - the initial component is null
        courseLockEntry = null; //invalid lock
        return;
      } else {     
        // editproptabinfVC.put(CourseFactory.getDetailsComponent(repositoryEntry.getOlatResource(),ureq));
        // enable course chat settings, if instant messenger module is available
        // and course chat is enabled.
        if (InstantMessagingModule.isEnabled()&& CourseModule.isCourseChatEnabled()) {
          ccc = new CourseChatSettingController(ureq, getWindowControl(), changedCourseConfig);
          this.listenTo(ccc);
          // push on controller stack and register <this> as controllerlistener
          tabbedPane.addTab(translate("tab.chat"), ccc.getInitialComponent());
        }
        VFSContainer namedContainerImpl = new NamedContainerImpltranslate("coursefolder", course.getCourseTitle()),
            course.getCourseFolderContainer());
        clayoutC = new CourseLayoutController(ureq, getWindowControl(), changedCourseConfig, namedContainerImpl);
        this.listenTo(clayoutC);
        tabbedPane.addTab(translate("tab.layout"), clayoutC.getInitialComponent());

        csfC = new CourseSharedFolderController(ureq, getWindowControl(), changedCourseConfig);
        this.listenTo(csfC);
        tabbedPane.addTab(translate("tab.sharedfolder"), csfC.getInitialComponent());

        ceffC = new CourseEfficencyStatementController(ureq, getWindowControl(), changedCourseConfig);
        this.listenTo(ceffC);
        tabbedPane.addTab(translate("tab.efficencystatement"), ceffC.getInitialComponent());
     
        calCfgCtr = new CourseCalendarConfigController(ureq, getWindowControl(), changedCourseConfig);
        this.listenTo(calCfgCtr);
        tabbedPane.addTab(translate("tab.calendar"), calCfgCtr.getInitialComponent());

        cglosCtr = new CourseConfigGlossaryController(ureq, getWindowControl(), changedCourseConfig, course.getResourceableId());
        this.listenTo(cglosCtr);
        tabbedPane.addTab(translate("tab.glossary"), cglosCtr.getInitialComponent());       
      }    
    } else if (repositoryEntry.getOlatResource().getResourceableTypeName().equals(GlossaryResource.TYPE_NAME)){
      //TODO:RH:gloss: change to use rep.handler to get config tabs
View Full Code Here

          repositoryEntryChanged = false;
        }
      }
      if(courseConfigChanged && !initialCourseConfig.equals(changedCourseConfig) && DialogBoxUIFactory.isYesEvent(event)) {       
        //ICourse course = CourseFactory.loadCourse(repositoryEntry.getOlatResource());
        ICourse course = CourseFactory.openCourseEditSession(repositoryEntry.getOlatResource().getResourceableId());
        //change course config 
        CourseConfig courseConfig = course.getCourseEnvironment().getCourseConfig();
        courseConfig.setCalendarEnabled(changedCourseConfig.isCalendarEnabled());
        courseConfig.setChatIsEnabled(changedCourseConfig.isChatEnabled());
        courseConfig.setCssLayoutRef(changedCourseConfig.getCssLayoutRef());
        courseConfig.setEfficencyStatementIsEnabled(changedCourseConfig.isEfficencyStatementEnabled());
        courseConfig.setGlossarySoftKey(changedCourseConfig.getGlossarySoftKey());
        courseConfig.setSharedFolderSoftkey(changedCourseConfig.getSharedFolderSoftkey());
        CourseFactory.setCourseConfig(course.getResourceableId(), courseConfig);
        CourseFactory.closeCourseEditSession(course.getResourceableId(),true);
       
        //CourseChatSettingController
        if(ccc!=null) {
          if(changedCourseConfig.isChatEnabled() != initialCourseConfig.isChatEnabled()) {
                //log instant messaging enabled disabled settings
            if (changedCourseConfig.isChatEnabled()) {
              ThreadLocalUserActivityLogger.log(LearningResourceLoggingAction.REPOSITORY_ENTRY_PROPERTIES_IM_ENABLED, getClass());
            } else {
              ThreadLocalUserActivityLogger.log(LearningResourceLoggingAction.REPOSITORY_ENTRY_PROPERTIES_IM_DISABLED, getClass());
            }
          }
        }
       
            // CourseLayoutController
        if(!changedCourseConfig.getCssLayoutRef().equals(initialCourseConfig.getCssLayoutRef()) && clayoutC.getLoggingAction()!=null) {         
          // log removing custom course layout
          ThreadLocalUserActivityLogger.log(clayoutC.getLoggingAction(), getClass());         
        }
            // CourseSharedFolderController
        if(!changedCourseConfig.getSharedFolderSoftkey().equals(initialCourseConfig.getSharedFolderSoftkey()) && csfC.getLoggingAction()!=null) {
          String logDetail = csfC.getSharedFolderRepositoryEntry()!=null ? csfC.getSharedFolderRepositoryEntry().getDisplayname() : null;
          ThreadLocalUserActivityLogger.log(csfC.getLoggingAction(), getClass(), LoggingResourceable.wrapBCFile(logDetail));
          if(!changedCourseConfig.getSharedFolderSoftkey().equals(CourseConfig.VALUE_EMPTY_SHAREDFOLDER_SOFTKEY)) {
            CourseSharedFolderController.updateRefTo(csfC.getSharedFolderRepositoryEntry(), course);
          } else {
            CourseSharedFolderController.deleteRefTo(course);
          }
        }
        // CourseEfficencyStatementController
        if((changedCourseConfig.isEfficencyStatementEnabled() != initialCourseConfig.isEfficencyStatementEnabled() && ceffC.getLoggingAction()!=null)) {
          if(changedCourseConfig.isEfficencyStatementEnabled()) {
            // first create the efficiencies, send event to agency (all courses add link)
            List identitiesWithData = course.getCourseEnvironment().getCoursePropertyManager().getAllIdentitiesWithCourseAssessmentData();
            EfficiencyStatementManager.getInstance().updateEfficiencyStatements(course, identitiesWithData, false);             
          } else {
            // delete really the efficiencies of the users.
            RepositoryEntry courseRepoEntry = RepositoryManager.getInstance().lookupRepositoryEntry(course, true);
            EfficiencyStatementManager.getInstance().deleteEfficiencyStatementsFromCourse(courseRepoEntry.getKey());           
          }
          //inform everybody else   
          EventBus eventBus = CoordinatorManager.getCoordinator().getEventBus();
          CourseConfigEvent courseConfigEvent = new CourseConfigEvent(CourseConfigEvent.EFFICIENCY_STATEMENT_TYPE, course.getResourceableId());
          eventBus.fireEventToListenersOf(courseConfigEvent, course);
          ThreadLocalUserActivityLogger.log(ceffC.getLoggingAction(), getClass());
        }
        // CourseCalendarConfigController
        if(changedCourseConfig.isCalendarEnabled()!= initialCourseConfig.isCalendarEnabled() && calCfgCtr.getLoggingAction()!=null) {
          ThreadLocalUserActivityLogger.log(calCfgCtr.getLoggingAction(), getClass());
          // notify calendar components to refresh their calendars
          CoordinatorManager.getCoordinator().getEventBus().fireEventToListenersOf(new KalendarModifiedEvent(), OresHelper.lookupType(CalendarManager.class));
        }
        // CourseConfigGlossaryController
        if((changedCourseConfig.getGlossarySoftKey()==null && initialCourseConfig.getGlossarySoftKey()!=null)
            || (changedCourseConfig.getGlossarySoftKey()!=null && initialCourseConfig.getGlossarySoftKey()==null)
            && cglosCtr.getLoggingAction()!=null) {
         
          final String glossarySoftKey = changedCourseConfig.getGlossarySoftKey();
          LoggingResourceable lri = null;
          if (glossarySoftKey!=null) {
            lri = LoggingResourceable.wrapNonOlatResource(StringResourceableType.glossarySoftKey, glossarySoftKey, glossarySoftKey);
          }
          ThreadLocalUserActivityLogger.log(cglosCtr.getLoggingAction(), getClass(), lri);
          if(changedCourseConfig.getGlossarySoftKey()==null) {
            // update references
            ReferenceManager refM = ReferenceManager.getInstance();
            List repoRefs = refM.getReferences(course);
            for (Iterator iter = repoRefs.iterator(); iter.hasNext();) {
              ReferenceImpl ref = (ReferenceImpl) iter.next();
              if (ref.getUserdata().equals(GlossaryManager.GLOSSARY_REPO_REF_IDENTIFYER)) {
                refM.delete(ref);
                continue;
              }
            }
          } else if(changedCourseConfig.getGlossarySoftKey()!=null) {
            // update references
            RepositoryManager rm = RepositoryManager.getInstance();
            RepositoryEntry repoEntry = rm.lookupRepositoryEntryBySoftkey(changedCourseConfig.getGlossarySoftKey(), false);
            ReferenceManager.getInstance().addReference(course, repoEntry.getOlatResource(), GlossaryManager.GLOSSARY_REPO_REF_IDENTIFYER);
          }
        }
        //course config transaction fihished
        initialCourseConfig = course.getCourseEnvironment().getCourseConfig().clone();       
       
        //fire CourseConfigEvent for this course channel
        EventBus eventBus = CoordinatorManager.getCoordinator().getEventBus();
        CourseConfigEvent courseConfigEvent = new CourseConfigEvent(CourseConfigEvent.CALENDAR_TYPE, course.getResourceableId());
        eventBus.fireEventToListenersOf(courseConfigEvent, course);
       
        this.fireEvent(ureq, Event.DONE_EVENT);
      } else if(!DialogBoxUIFactory.isYesEvent(event) || DialogBoxUIFactory.isYesEvent(event)) {       
        this.fireEvent(ureq, Event.DONE_EVENT);
View Full Code Here

TOP

Related Classes of org.olat.course.ICourse

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.