Search in sources :

Example 11 with ProjectBroker

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;
}
Also used : Project(org.olat.course.nodes.projectbroker.datamodel.Project) ProjectBroker(org.olat.course.nodes.projectbroker.datamodel.ProjectBroker) OLATResourceableDeletedEvent(org.olat.core.util.resource.OLATResourceableDeletedEvent)

Example 12 with ProjectBroker

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");
}
Also used : Project(org.olat.course.nodes.projectbroker.datamodel.Project) ProjectBroker(org.olat.course.nodes.projectbroker.datamodel.ProjectBroker) ProjectBrokerModuleConfiguration(org.olat.course.nodes.projectbroker.service.ProjectBrokerModuleConfiguration) ProjectBrokerModuleConfiguration(org.olat.course.nodes.projectbroker.service.ProjectBrokerModuleConfiguration) ModuleConfiguration(org.olat.modules.ModuleConfiguration) Translator(org.olat.core.gui.translator.Translator) Test(org.junit.Test)

Example 13 with ProjectBroker

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");
}
Also used : Project(org.olat.course.nodes.projectbroker.datamodel.Project) ProjectBroker(org.olat.course.nodes.projectbroker.datamodel.ProjectBroker) Test(org.junit.Test)

Example 14 with ProjectBroker

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);
            }
        }
    }
}
Also used : VFSLeaf(org.olat.core.util.vfs.VFSLeaf) HashMap(java.util.HashMap) XStream(com.thoughtworks.xstream.XStream) InputStream(java.io.InputStream) VFSItem(org.olat.core.util.vfs.VFSItem) IOException(java.io.IOException) ProjectBrokerManager(org.olat.course.nodes.projectbroker.service.ProjectBrokerManager) ProjectGroupManager(org.olat.course.nodes.projectbroker.service.ProjectGroupManager) Project(org.olat.course.nodes.projectbroker.datamodel.Project) ProjectBroker(org.olat.course.nodes.projectbroker.datamodel.ProjectBroker) OlatRootFolderImpl(org.olat.core.commons.modules.bc.vfs.OlatRootFolderImpl) FileOutputStream(java.io.FileOutputStream) File(java.io.File) CoursePropertyManager(org.olat.course.properties.CoursePropertyManager) PersistingCoursePropertyManager(org.olat.course.properties.PersistingCoursePropertyManager)

Example 15 with ProjectBroker

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);
}
Also used : ProjectGroupManager(org.olat.course.nodes.projectbroker.service.ProjectGroupManager) FileNameSuffixFilter(org.olat.core.util.FileNameSuffixFilter) ProjectBroker(org.olat.course.nodes.projectbroker.datamodel.ProjectBroker) XStream(com.thoughtworks.xstream.XStream) ProjectBrokerManager(org.olat.course.nodes.projectbroker.service.ProjectBrokerManager) File(java.io.File) CoursePropertyManager(org.olat.course.properties.CoursePropertyManager) PersistingCoursePropertyManager(org.olat.course.properties.PersistingCoursePropertyManager)

Aggregations

ProjectBroker (org.olat.course.nodes.projectbroker.datamodel.ProjectBroker)36 Project (org.olat.course.nodes.projectbroker.datamodel.Project)30 Test (org.junit.Test)14 OLATResourceable (org.olat.core.id.OLATResourceable)8 ArrayList (java.util.ArrayList)6 ProjectBrokerManager (org.olat.course.nodes.projectbroker.service.ProjectBrokerManager)6 ProjectGroupManager (org.olat.course.nodes.projectbroker.service.ProjectGroupManager)6 CoursePropertyManager (org.olat.course.properties.CoursePropertyManager)6 PersistingCoursePropertyManager (org.olat.course.properties.PersistingCoursePropertyManager)6 XStream (com.thoughtworks.xstream.XStream)4 File (java.io.File)4 OlatRootFolderImpl (org.olat.core.commons.modules.bc.vfs.OlatRootFolderImpl)4 Identity (org.olat.core.id.Identity)4 SyncerExecutor (org.olat.core.util.coordinate.SyncerExecutor)4 OLATResourceableDeletedEvent (org.olat.core.util.resource.OLATResourceableDeletedEvent)4 VFSItem (org.olat.core.util.vfs.VFSItem)4 VFSLeaf (org.olat.core.util.vfs.VFSLeaf)4 ProjectImpl (org.olat.course.nodes.projectbroker.datamodel.ProjectImpl)4 BusinessGroup (org.olat.group.BusinessGroup)4 BusinessGroupService (org.olat.group.BusinessGroupService)4