use of org.olat.course.nodes.projectbroker.datamodel.ProjectBroker in project openolat by klemens.
the class ProjectBrokerGroupDeleteManager method deleteGroupDataFor.
@Override
public boolean deleteGroupDataFor(BusinessGroup group) {
log.debug("deleteAllProjectGroupEntiresFor started.. group=" + group);
List<Project> projectList = projectBrokerManager.getProjectsWith(group);
for (Project project : projectList) {
// no course-env, no course-node
projectBrokerManager.deleteProject(project, false, null, null);
ProjectBroker projectBroker = project.getProjectBroker();
OLATResourceableDeletedEvent delEv = new OLATResourceableDeletedEvent(projectBroker);
CoordinatorManager.getInstance().getCoordinator().getEventBus().fireEventToListenersOf(delEv, projectBroker);
log.debug("deleteProjectWith: group=" + group + " , project=" + project);
}
return true;
}
use of org.olat.course.nodes.projectbroker.datamodel.ProjectBroker in project openolat by klemens.
the class ProjectBrokerManagerTest method testPerformanceTableModel.
@Test
public void testPerformanceTableModel() throws Exception {
int ITERATION = 300;
int START_PAGE_INDEX = 100;
int PAGE_SIZE = 20;
Translator translator = Util.createPackageTranslator(this.getClass(), Locale.GERMAN);
ProjectBroker projectBrokerD = projectBrokerManager.createAndSaveProjectBroker();
Long idProjectBrokerD = projectBrokerD.getKey();
ProjectBrokerModuleConfiguration moduleConfig = new ProjectBrokerModuleConfiguration(new ModuleConfiguration());
for (int i = 0; i < ITERATION; i++) {
createProject("thema D1_" + i, id1, idProjectBrokerD, resourceableId);
}
List<Project> projectListD = projectBrokerManager.getProjectListBy(idProjectBrokerD);
ProjectListTableModel tableModel = new ProjectListTableModel(projectListD, id1, translator, moduleConfig, 0, 0, 0, false);
// loop over table like rendering loop
long startTime = System.currentTimeMillis();
for (int row = START_PAGE_INDEX; row < START_PAGE_INDEX + PAGE_SIZE; row++) {
for (int col = 0; col < tableModel.getColumnCount(); col++) {
Object element = tableModel.getValueAt(row, col);
Assert.assertNotNull(element);
}
}
long endTime = System.currentTimeMillis();
long duration = endTime - startTime;
log.info("tableModel.getValueAt(row, col) for " + PAGE_SIZE + "elements (of " + ITERATION + ") takes " + duration + "ms with " + ITERATION + " projects");
}
use of org.olat.course.nodes.projectbroker.datamodel.ProjectBroker in project openolat by klemens.
the class ProjectBrokerManagerTest method testPerformanceGetProjectList.
@Test
public void testPerformanceGetProjectList() throws Exception {
int FIRST_ITERATION = 10;
int SECOND_ITERATION = 90;
int THIRD_ITERATION = 400;
// create ProjectBroker C
ProjectBroker projectBrokerC = projectBrokerManager.createAndSaveProjectBroker();
Long idProjectBrokerC = projectBrokerC.getKey();
dbInstance.closeSession();
for (int i = 0; i < FIRST_ITERATION; i++) {
createProject("thema C1_" + i, id1, idProjectBrokerC, resourceableId);
}
dbInstance.closeSession();
long startTime = System.currentTimeMillis();
List<Project> projectListC = projectBrokerManager.getProjectListBy(idProjectBrokerC);
long endTime = System.currentTimeMillis();
assertEquals("Wrong projectList.size for project-broker C after first iteration", FIRST_ITERATION, projectListC.size());
long duration = endTime - startTime;
log.info("getProjectListBy takes " + duration + "ms with " + FIRST_ITERATION + " projects");
for (int i = 0; i < SECOND_ITERATION; i++) {
createProject("thema C1_" + i, id1, idProjectBrokerC, resourceableId);
}
dbInstance.closeSession();
startTime = System.currentTimeMillis();
projectListC = projectBrokerManager.getProjectListBy(idProjectBrokerC);
endTime = System.currentTimeMillis();
int numberOfProjects = FIRST_ITERATION + SECOND_ITERATION;
assertEquals("Wrong projectList.size for project-broker C", numberOfProjects, projectListC.size());
duration = endTime - startTime;
log.info("getProjectListBy takes " + duration + "ms with " + numberOfProjects + " projects");
for (int i = 0; i < THIRD_ITERATION; i++) {
createProject("thema C1_" + i, id1, idProjectBrokerC, resourceableId);
}
dbInstance.closeSession();
startTime = System.currentTimeMillis();
projectListC = projectBrokerManager.getProjectListBy(idProjectBrokerC);
endTime = System.currentTimeMillis();
numberOfProjects = FIRST_ITERATION + SECOND_ITERATION + THIRD_ITERATION;
assertEquals("Wrong projectList.size for project-broker C", numberOfProjects, projectListC.size());
duration = endTime - startTime;
log.info("getProjectListBy takes " + duration + "ms with " + numberOfProjects + " projects");
}
use of org.olat.course.nodes.projectbroker.datamodel.ProjectBroker in project openolat by klemens.
the class ProjectBrokerCourseNode method exportNode.
@Override
public void exportNode(File exportDirectory, ICourse course) {
// initialize managers
CoursePropertyManager cpm = course.getCourseEnvironment().getCoursePropertyManager();
ProjectBrokerManager projectBrokerManager = CoreSpringFactory.getImpl(ProjectBrokerManager.class);
ProjectBroker pb = projectBrokerManager.getProjectBroker(projectBrokerManager.getProjectBrokerId(cpm, this));
ProjectGroupManager projectGroupManager = CoreSpringFactory.getImpl(ProjectGroupManager.class);
XStream xstream = XStreamHelper.createXStreamInstance();
// folder for the pb node
File pbNodeFolder = new File(exportDirectory, getIdent());
pbNodeFolder.mkdirs();
// for the broker prefs
ProjectBrokerConfig brokerConfig = new ProjectBrokerConfig();
brokerConfig.setAccountGroupKey(projectGroupManager.getAccountManagerGroupKey(cpm, this));
File projectBrokerFile = new File(pbNodeFolder, "projectbroker.xml");
XStreamHelper.writeObject(xstream, projectBrokerFile, brokerConfig);
// get all the projects available in the pb
List<Project> projects = projectBrokerManager.getProjectListBy(pb.getKey());
for (Project project : projects) {
File projectFolder = new File(pbNodeFolder, project.getKey().toString());
projectFolder.mkdirs();
// create a hashmap with the project configuration and insert the
// project data
File projectFile = new File(projectFolder, project.getKey() + ".xml");
HashMap<String, Object> projectData = new HashMap<String, Object>();
projectData.put("title", project.getTitle());
projectData.put("description", project.getDescription());
projectData.put("customFieldSize", project.getCustomFieldSize());
projectData.put("maxMembers", project.getMaxMembers());
projectData.put("mailNotificationEnabled", project.isMailNotificationEnabled());
projectData.put("attachmentFileName", project.getAttachmentFileName());
projectData.put("allowDeselection", projectGroupManager.isDeselectionAllowed(project));
projectData.put("customeFieldSize", project.getCustomFieldSize());
projectData.put("businessGroupKey", project.getProjectGroup().getKey());
// iterate through the customFields
for (int i = 0; i < project.getCustomFieldSize(); i++) {
projectData.put("customFieldValue" + i, project.getCustomFieldValue(i));
}
// writeout the project data
XStreamHelper.writeObject(xstream, projectFile, projectData);
// add attachment file
OlatRootFolderImpl rootFolder = new OlatRootFolderImpl(projectBrokerManager.getAttamchmentRelativeRootPath(project, course.getCourseEnvironment(), this), null);
VFSItem item = rootFolder.resolve(project.getAttachmentFileName());
if (item instanceof VFSLeaf) {
VFSLeaf itemLeaf = (VFSLeaf) item;
File attachmentFolder = new File(projectFolder, "attachment");
File attachment = new File(attachmentFolder, Base64.encodeBase64String(project.getAttachmentFileName().getBytes()));
try {
attachmentFolder.mkdirs();
attachment.createNewFile();
FileOutputStream attachmentOutputStream = new FileOutputStream(attachment);
InputStream leafInputStream = itemLeaf.getInputStream();
FileUtils.copy(leafInputStream, attachmentOutputStream);
attachmentOutputStream.close();
leafInputStream.close();
} catch (IOException e) {
log.error("Error while exporting attachments for projectbroker " + project.getTitle(), e);
}
}
}
}
use of org.olat.course.nodes.projectbroker.datamodel.ProjectBroker in project openolat by klemens.
the class ProjectBrokerCourseNode method postImport.
@Override
public void postImport(File importDirectory, ICourse course, CourseEnvironmentMapper envMapper, Processing processType) {
// initialize managers
if (processType == Processing.editor && importDirectory != null) {
ProjectBrokerManager projectBrokerManager = CoreSpringFactory.getImpl(ProjectBrokerManager.class);
CoursePropertyManager cpm = course.getCourseEnvironment().getCoursePropertyManager();
// create a new projectBroker
ProjectBroker projectBroker = projectBrokerManager.createAndSaveProjectBroker();
projectBrokerManager.saveProjectBrokerId(projectBroker.getKey(), cpm, this);
// get the node folder inside of the importDirectory
File folderNodeData = new File(importDirectory, getIdent());
// for the broker prefs
File projectBrokerFile = new File(folderNodeData, "projectbroker.xml");
if (projectBrokerFile.exists()) {
XStream xstream = XStreamHelper.createXStreamInstance();
ProjectGroupManager projectGroupManager = CoreSpringFactory.getImpl(ProjectGroupManager.class);
ProjectBrokerConfig brokerConfig = (ProjectBrokerConfig) XStreamHelper.readObject(xstream, projectBrokerFile);
if (brokerConfig != null && brokerConfig.getAccountGroupKey() != null) {
Long accountGroupKey = envMapper.toGroupKeyFromOriginalKey(brokerConfig.getAccountGroupKey());
if (accountGroupKey != null) {
projectGroupManager.saveAccountManagerGroupKey(accountGroupKey, cpm, this);
}
}
}
// loop through the project directories
if (folderNodeData.exists()) {
for (File projectDir : folderNodeData.listFiles(DirectoryFilter.DIRECTORY_FILTER)) {
for (File projectFile : projectDir.listFiles(new FileNameSuffixFilter("xml"))) {
importProject(projectDir, projectFile, projectBroker, course, envMapper);
}
}
}
}
super.postImport(importDirectory, course, envMapper, processType);
}
Aggregations