Skip to content
Snippets Groups Projects
Commit e297eedd authored by srosse's avatar srosse
Browse files

Merge OpenOLAT defualt branch to OpenOLAT qti with 3807e905093bbe179992c6d7919350c446acf86f

parents e2113bbd fee1643a
No related branches found
No related tags found
No related merge requests found
...@@ -70,7 +70,6 @@ import org.olat.core.logging.AssertException; ...@@ -70,7 +70,6 @@ import org.olat.core.logging.AssertException;
import org.olat.core.logging.OLATRuntimeException; import org.olat.core.logging.OLATRuntimeException;
import org.olat.core.logging.OLog; import org.olat.core.logging.OLog;
import org.olat.core.logging.Tracing; import org.olat.core.logging.Tracing;
import org.olat.core.manager.BasicManager;
import org.olat.core.util.CodeHelper; import org.olat.core.util.CodeHelper;
import org.olat.core.util.ExportUtil; import org.olat.core.util.ExportUtil;
import org.olat.core.util.FileUtils; import org.olat.core.util.FileUtils;
...@@ -147,7 +146,7 @@ import org.olat.util.logging.activity.LoggingResourceable; ...@@ -147,7 +146,7 @@ import org.olat.util.logging.activity.LoggingResourceable;
* @author Felix Jost * @author Felix Jost
* @author guido * @author guido
*/ */
public class CourseFactory extends BasicManager { public class CourseFactory {
private static CacheWrapper<Long,PersistingCourseImpl> loadedCourses; private static CacheWrapper<Long,PersistingCourseImpl> loadedCourses;
private static ConcurrentMap<Long, ModifyCourseEvent> modifyCourseEvents = new ConcurrentHashMap<Long, ModifyCourseEvent>(); private static ConcurrentMap<Long, ModifyCourseEvent> modifyCourseEvents = new ConcurrentHashMap<Long, ModifyCourseEvent>();
......
...@@ -34,6 +34,7 @@ import org.olat.core.logging.OLog; ...@@ -34,6 +34,7 @@ import org.olat.core.logging.OLog;
import org.olat.core.logging.Tracing; import org.olat.core.logging.Tracing;
import org.olat.core.util.coordinate.CoordinatorManager; import org.olat.core.util.coordinate.CoordinatorManager;
import org.olat.core.util.event.GenericEventListener; import org.olat.core.util.event.GenericEventListener;
import org.olat.course.CourseFactory;
import org.olat.course.assessment.AssessmentMode; import org.olat.course.assessment.AssessmentMode;
import org.olat.course.assessment.AssessmentMode.Status; import org.olat.course.assessment.AssessmentMode.Status;
import org.olat.course.assessment.AssessmentModeCoordinationService; import org.olat.course.assessment.AssessmentModeCoordinationService;
...@@ -43,6 +44,8 @@ import org.olat.course.assessment.model.AssessmentModeImpl; ...@@ -43,6 +44,8 @@ import org.olat.course.assessment.model.AssessmentModeImpl;
import org.olat.course.assessment.model.CoordinatedAssessmentMode; import org.olat.course.assessment.model.CoordinatedAssessmentMode;
import org.olat.course.assessment.model.TransientAssessmentMode; import org.olat.course.assessment.model.TransientAssessmentMode;
import org.olat.group.ui.edit.BusinessGroupModifiedEvent; import org.olat.group.ui.edit.BusinessGroupModifiedEvent;
import org.olat.repository.RepositoryEntry;
import org.olat.repository.RepositoryService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -62,6 +65,8 @@ public class AssessmentModeCoordinationServiceImpl implements AssessmentModeCoor ...@@ -62,6 +65,8 @@ public class AssessmentModeCoordinationServiceImpl implements AssessmentModeCoor
@Autowired @Autowired
private AssessmentModule assessmentModule; private AssessmentModule assessmentModule;
@Autowired @Autowired
private RepositoryService repositoryService;
@Autowired
private CoordinatorManager coordinatorManager; private CoordinatorManager coordinatorManager;
@Autowired @Autowired
private AssessmentModeManagerImpl assessmentModeManager; private AssessmentModeManagerImpl assessmentModeManager;
...@@ -268,6 +273,9 @@ public class AssessmentModeCoordinationServiceImpl implements AssessmentModeCoor ...@@ -268,6 +273,9 @@ public class AssessmentModeCoordinationServiceImpl implements AssessmentModeCoor
if(currentStatus == null || currentStatus != status) { if(currentStatus == null || currentStatus != status) {
mode.setStatus(status); mode.setStatus(status);
mode = dbInstance.getCurrentEntityManager().merge(mode); mode = dbInstance.getCurrentEntityManager().merge(mode);
if(status == Status.leadtime || status == Status.assessment) {
warmUpAssessment(mode);
}
dbInstance.commit(); dbInstance.commit();
} }
return mode; return mode;
...@@ -330,4 +338,9 @@ public class AssessmentModeCoordinationServiceImpl implements AssessmentModeCoor ...@@ -330,4 +338,9 @@ public class AssessmentModeCoordinationServiceImpl implements AssessmentModeCoor
} }
return mode; return mode;
} }
private void warmUpAssessment(AssessmentMode mode) {
RepositoryEntry entry = repositoryService.loadByKey(mode.getRepositoryEntry().getKey());
CourseFactory.loadCourse(entry);
}
} }
\ No newline at end of file
/**
* <a href="http://www.openolat.org">
* OpenOLAT - Online Learning and Training</a><br>
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); <br>
* you may not use this file except in compliance with the License.<br>
* You may obtain a copy of the License at the
* <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
* <p>
* Unless required by applicable law or agreed to in writing,<br>
* software distributed under the License is distributed on an "AS IS" BASIS, <br>
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
* See the License for the specific language governing permissions and <br>
* limitations under the License.
* <p>
* Initial code contributed and copyrighted by<br>
* frentix GmbH, http://www.frentix.com
* <p>
*/
package org.olat.course.assessment.manager;
import java.util.List;
import org.olat.core.configuration.PreWarm;
import org.olat.core.logging.OLog;
import org.olat.core.logging.Tracing;
import org.olat.core.util.CodeHelper;
import org.olat.course.CourseFactory;
import org.olat.repository.RepositoryEntry;
import org.olat.repository.manager.RepositoryEntryDAO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
*
* Initial date: 18.02.2016<br>
* @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
*
*/
@Service
public class LastCoursesPreWarm implements PreWarm {
private static final OLog log = Tracing.createLoggerFor(LastCoursesPreWarm.class);
@Autowired
private RepositoryEntryDAO repositoryEntryDao;
@Override
public void run() {
long start = System.nanoTime();
List<RepositoryEntry> entries = repositoryEntryDao
.getLastUsedRepositoryEntries("CourseModule", 0, 100);
for(RepositoryEntry entry:entries) {
CourseFactory.loadCourse(entry);
}
log.info(entries.size() + " Courses preloaded in (ms): " + CodeHelper.nanoToMilliTime(start));
}
}
...@@ -22,8 +22,7 @@ package org.olat.ims.qti; ...@@ -22,8 +22,7 @@ package org.olat.ims.qti;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.olat.core.CoreSpringFactory; import org.olat.core.commons.persistence.DB;
import org.olat.core.commons.persistence.DBFactory;
import org.olat.core.configuration.PreWarm; import org.olat.core.configuration.PreWarm;
import org.olat.core.logging.OLog; import org.olat.core.logging.OLog;
import org.olat.core.logging.Tracing; import org.olat.core.logging.Tracing;
...@@ -32,6 +31,7 @@ import org.olat.ims.qti.fileresource.SurveyFileResource; ...@@ -32,6 +31,7 @@ import org.olat.ims.qti.fileresource.SurveyFileResource;
import org.olat.ims.qti.fileresource.TestFileResource; import org.olat.ims.qti.fileresource.TestFileResource;
import org.olat.resource.OLATResource; import org.olat.resource.OLATResource;
import org.olat.resource.OLATResourceManager; import org.olat.resource.OLATResourceManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import de.bps.onyx.plugin.OnyxModule; import de.bps.onyx.plugin.OnyxModule;
...@@ -48,6 +48,11 @@ import de.bps.onyx.plugin.OnyxModule; ...@@ -48,6 +48,11 @@ import de.bps.onyx.plugin.OnyxModule;
public class QTIPreWarm implements PreWarm { public class QTIPreWarm implements PreWarm {
private static final OLog log = Tracing.createLoggerFor(QTIPreWarm.class); private static final OLog log = Tracing.createLoggerFor(QTIPreWarm.class);
@Autowired
private DB dbInstance;
@Autowired
private OLATResourceManager olatResourceManager;
@Override @Override
public void run() { public void run() {
...@@ -57,8 +62,8 @@ public class QTIPreWarm implements PreWarm { ...@@ -57,8 +62,8 @@ public class QTIPreWarm implements PreWarm {
List<String> types = new ArrayList<>(2); List<String> types = new ArrayList<>(2);
types.add(TestFileResource.TYPE_NAME); types.add(TestFileResource.TYPE_NAME);
types.add(SurveyFileResource.TYPE_NAME); types.add(SurveyFileResource.TYPE_NAME);
List<OLATResource> qtiResources = CoreSpringFactory.getImpl(OLATResourceManager.class).findResourceByTypes(types); List<OLATResource> qtiResources = olatResourceManager.findResourceByTypes(types);
DBFactory.getInstance().commitAndCloseSession(); dbInstance.commitAndCloseSession();
for(OLATResource qtiResource:qtiResources) { for(OLATResource qtiResource:qtiResources) {
OnyxModule.isOnyxTest(qtiResource); OnyxModule.isOnyxTest(qtiResource);
} }
......
...@@ -155,4 +155,21 @@ public class RepositoryEntryDAO { ...@@ -155,4 +155,21 @@ public class RepositoryEntryDAO {
} }
return entries.get(0); return entries.get(0);
} }
public List<RepositoryEntry> getLastUsedRepositoryEntries(String resourceTypeName, int firstResult, int maxResults) {
StringBuilder sb = new StringBuilder();
sb.append("select v from ").append(RepositoryEntry.class.getName()).append(" as v ")
.append(" inner join fetch v.olatResource as ores")
.append(" inner join fetch v.statistics as statistics")
.append(" left join fetch v.lifecycle as lifecycle")
.append(" where ores.resName=:resourceTypeName")
.append(" order by statistics.lastUsage desc");
return dbInstance.getCurrentEntityManager()
.createQuery(sb.toString(), RepositoryEntry.class)
.setFirstResult(firstResult)
.setMaxResults(maxResults)
.setParameter("resourceTypeName", resourceTypeName)
.getResultList();
}
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment