Skip to content
Snippets Groups Projects
Commit fa130f7b authored by uhensler's avatar uhensler
Browse files

OO-4521: Delete repository entries of portfolio V1

parent c633c14e
No related branches found
No related tags found
No related merge requests found
Showing
with 56 additions and 54 deletions
......@@ -140,7 +140,7 @@ public class RepositoryEntryDocumentFactory {
icon = "o_iqsurv_icon";
else if(docType.equals("type.repository.entry.FileResource.IMSQTI21"))
icon = "o_qtiassessment_icon";
else if (docType.equals("type.repository.entry.EPStructuredMapTemplate") || docType.equals("type.repository.entry.ep"))
else if (docType.equals("type.repository.entry.ep"))
icon = "o_ep_icon";
else {
icon = "o_sp_icon";
......
......@@ -512,7 +512,7 @@ public class RepositoryServiceImpl implements RepositoryService, OrganisationDat
RepositoryHandler handler = repositoryHandlerFactory.getRepositoryHandler(entry);
OLATResource resource = entry.getOlatResource();
//delete old context
if (!handler.readyToDelete(entry, identity, roles, locale, errors)) {
if (handler != null && !handler.readyToDelete(entry, identity, roles, locale, errors)) {
return errors;
}
......@@ -548,8 +548,10 @@ public class RepositoryServiceImpl implements RepositoryService, OrganisationDat
dbInstance.commit();
// inform handler to do any cleanup work... handler must delete the
// referenced resourceable a swell.
handler.cleanupOnDelete(entry, resource);
// referenced resourceable as well.
if (handler != null) {
handler.cleanupOnDelete(entry, resource);
}
dbInstance.commit();
//delete all test sessions
......
......@@ -100,7 +100,6 @@ type.course.node.podcast=Kursbaustein, Podcast
type.course.node.scorm=Kursbaustein, SCORM
HomeSite=Home
Portfolio=Portfolio
EPSite=Portfolio
LibrarySite=Bibliothek
Taxonomy=Taxonomy
DocumentPool=Dokumentenpool
......@@ -114,15 +113,11 @@ type.file.table=Excel-Datei
type.file.presentation=Power-Point-Datei
type.file.pdf=PDF-Datei
type.file.others=Andere...
type.db.EPDefaultMap = Portfolio Mappe
type.db.EPStructuredMap = Portfolioaufgabe
type.db.EPStructuredMapTemplate = Portfoliovorlage
type.group=Gruppe
type.group.folder=Gruppen, Ordner
type.group.forum.message=Gruppen, Forum
type.group.wiki=Gruppen, Wiki
type.group.portfolio=Gruppe, Portfoliomappe
type.group.EPDefaultMap=Gruppe, Portfoliomappe
type.identity=Benutzer
type.identity.publicfolder = \u00d6ffentlicher Ordner
type.identity.AbstractArtefact = Meine Artefakte
......@@ -156,5 +151,4 @@ type.repository.entry.sharedfolder=Lernressourcen, Ressourcenordner
type.repository.entry.wiki=Lernressourcen, Wiki
type.repository.entry.scorm=Lernressourcen, SCORM
type.repository.entry.ep=Lernressourcen, Portfolio
type.repository.entry.EPStructuredMapTemplate=Lernressourcen, Portfolio
wiki=Wiki
#Mon Jul 17 21:16:44 CEST 2017
EPSite=Portfolio
HomeSite=Home
LibrarySite=Library
Portfolio=Portfolio
......@@ -107,9 +106,6 @@ type.course.node.vc=Course element, virtual classroom
type.course.node.video=Course element, video
type.course.node.vitero=Course element, vitero
type.course.node.wiki=Course element, Wiki
type.db.EPDefaultMap=Portfolio folder
type.db.EPStructuredMap=Portfolio task
type.db.EPStructuredMapTemplate=Portfolio template
type.file=File
type.file.html=HTML file
type.file.others=Others...
......@@ -118,7 +114,6 @@ type.file.presentation=Powerpoint file
type.file.table=Excel file
type.file.word=Word file
type.group=Group
type.group.EPDefaultMap=Group, portfolio folder
type.group.folder=Groups, folder
type.group.forum.message=Groups, forum
type.group.portfolio=Group, portfolio folder
......@@ -129,7 +124,6 @@ type.identity.publicfolder=Public folder
type.question.item=Question
type.repository.entry.BinderTemplate=Learning resources, portfolio 2.0 template
type.repository.entry.CourseModule=Learning resources, course
type.repository.entry.EPStructuredMapTemplate=Learning resource, portfolio
type.repository.entry.FileResource.ANIM=Learning resources, Animation
type.repository.entry.FileResource.BLOG=Learning resources, Blog
type.repository.entry.FileResource.DOC=Learning resources, Word file
......
#Mon Apr 16 21:25:19 CEST 2018
DocumentPool=Banque de documents
DocumentPoolSite=Banque de documents
EPSite=Portfolio
HomeSite=Home
LibrarySite=Biblioth\u00E8que
Portfolio=Portfolio
......@@ -107,9 +106,6 @@ type.course.node.vc=El\u00E9ment de cours, classes virtuelles
type.course.node.video=El\u00E9ment de cours, vid\u00E9o
type.course.node.vitero=El\u00E9ment de cours, vitero
type.course.node.wiki=El\u00E9ment de cours, wiki
type.db.EPDefaultMap=Dossier de portfolio
type.db.EPStructuredMap=Devoir portfolio
type.db.EPStructuredMapTemplate=Mod\u00E8le de portfolio
type.file=Fichier
type.file.html=Fichier HTML
type.file.others=Autres...
......@@ -118,7 +114,6 @@ type.file.presentation=Fichier Powerpoint
type.file.table=Fichier Excel
type.file.word=Fichier Word
type.group=Groupe
type.group.EPDefaultMap=Groupe, classeur portfolio
type.group.folder=Groupes dossier
type.group.forum.message=Groupes, forums
type.group.portfolio=Groupe, dossier de portfolio
......@@ -129,7 +124,6 @@ type.identity.publicfolder=Dossier personnel
type.question.item=Question
type.repository.entry.BinderTemplate=Ressources didactiques, mod\u00E8les portfolio 2.0
type.repository.entry.CourseModule=Ressources didactiques, cours
type.repository.entry.EPStructuredMapTemplate=Ressources didactiques, portfolio
type.repository.entry.FileResource.ANIM=Ressources didactiques, animation
type.repository.entry.FileResource.BLOG=Ressources didactiques, blogue
type.repository.entry.FileResource.DOC=Ressources didactiques, Fichier Worf
......
#Tue Mar 28 12:05:09 CEST 2017
EPSite=Portfolio
HomeSite=Home
LibrarySite=Biblioteca
Portfolio=Portfolio
......@@ -99,9 +98,6 @@ type.course.node.vc=Elemento di corso, aula virtuale
type.course.node.video=Elemento di corso, video
type.course.node.vitero=Elemento di corso, vitero
type.course.node.wiki=Elemento di corso, wiki
type.db.EPDefaultMap=Raccoglitore per portfolio
type.db.EPStructuredMap=Compito portfolio
type.db.EPStructuredMapTemplate=Modello di portfolio
type.file=File
type.file.html=File HTML
type.file.others=Altri...
......@@ -110,7 +106,6 @@ type.file.presentation=File Powerpoint
type.file.table=File Excel
type.file.word=File Word
type.group=Gruppo
type.group.EPDefaultMap=Gruppo, raccoglitore portfolio
type.group.folder=Gruppi cartella
type.group.forum.message=Gruppi, forum
type.group.portfolio=Gruppo, raccoglitore per portfolio
......@@ -120,7 +115,6 @@ type.identity.AbstractArtefact=I miei artefatti
type.identity.publicfolder=Cartella pubblica
type.question.item=Domanda
type.repository.entry.CourseModule=Risorse didattiche, corso
type.repository.entry.EPStructuredMapTemplate=Risorse didattiche, portfolio
type.repository.entry.FileResource.BLOG=Risorse didattiche, blog
type.repository.entry.FileResource.DOC=Risorse didattiche, file Word
type.repository.entry.FileResource.FILE=Risorse didattiche, file
......
......@@ -134,9 +134,6 @@ type.course.node.ta.returnbox=Cursuselement, taak (return box)
type.course.node.ta.solutionbox=Cursuselement, taak (proefoplossing)
type.course.node.ta.task=Cursuselement, taak (takenmap)
type.course.node.wiki=Cursuselement, Wiki
type.db.EPDefaultMap=Portfoliomap
type.db.EPStructuredMap=Portfoliotaak
type.db.EPStructuredMapTemplate=Portfolio-sjabloon
type.file.html=HTML bestand
type.file.others=Andere...
type.file.pdf=PDF bestand
......@@ -144,7 +141,6 @@ type.file.presentation=Powerpoint bestand
type.file.table=Excel bestand
type.file.word=Word bestand
type.group=Groep
type.group.EPDefaultMap=Groep, portfolio, map
type.group.folder=Groep, map
type.group.forum.message=Groepen, forum
type.group.portfolio=Groep, portfoliomap
......@@ -153,7 +149,6 @@ type.identity=Gebruiker
type.identity.AbstractArtefact=Mijn artefacten
type.identity.publicfolder=Publieke map
type.repository.entry.CourseModule=Leermiddelen, cursus
type.repository.entry.EPStructuredMapTemplate=Leermiddelen, portfolio
type.repository.entry.FileResource.BLOG=Leermiddelen, blog
type.repository.entry.FileResource.DOC=Leermiddelen, Word bestand
type.repository.entry.FileResource.FILE=Leermiddelen, bestand
......
......@@ -101,8 +101,6 @@ type.course.node.ta.returnbox=Element kursu - Zadanie (folder zwrotny)
type.course.node.ta.solutionbox=Element kursu - Zadanie (przyk\u0142adowe rozwi\u0105zanie)
type.course.node.ta.task=Element kursu - Zadanie (folder zada\u0144)
type.course.node.wiki=Element kursu - Wiki
type.db.EPStructuredMap=Zadanie portfolio
type.db.EPStructuredMapTemplate=Szablon portfolio
type.file.html=Plik HTML
type.file.others=Pozosta\u0142e...
type.file.pdf=Plik PDF
......@@ -117,7 +115,6 @@ type.identity=U\u017Cytkownik
type.identity.AbstractArtefact=Moje artefakty
type.identity.publicfolder=Folder publiczny
type.repository.entry.CourseModule=Zasoby edukacyjne - Kurs
type.repository.entry.EPStructuredMapTemplate=Zas\u00F3b edukacyjny, portfolio
type.repository.entry.FileResource.BLOG=Zasoby edukacyjne, Blog
type.repository.entry.FileResource.DOC=Zasoby edukacyjne, plik Word
type.repository.entry.FileResource.FILE=Zasoby edukacyjne, plik
......
#Sat May 12 00:00:08 CEST 2018
DocumentPool=Reservat\u00F3rio de documentos
DocumentPoolSite=Reservat\u00F3rio de documentos
EPSite=Portf\u00F3lio
HomeSite=Home
LibrarySite=Biblioteca
Portfolio=Portfolio
......@@ -106,9 +105,6 @@ type.course.node.vc=Elemento de curso, sala de aula virtual
type.course.node.video=Elemento de curso, v\u00EDdeo
type.course.node.vitero=Elemento de curso, vitero
type.course.node.wiki=Elemento de curso Wiki
type.db.EPDefaultMap=Pasta Portfolio
type.db.EPStructuredMap=Tarefa Portfolio
type.db.EPStructuredMapTemplate=Modelo Portfolio
type.file=Arquivo
type.file.html=Arquivo HTML
type.file.others=Outros...
......@@ -117,7 +113,6 @@ type.file.presentation=Arquivo Powerpoint
type.file.table=Arquivo Excel
type.file.word=Arquivo Word
type.group=Grupo
type.group.EPDefaultMap=Grupo, pasta portfolio.
type.group.folder=Grupo de pasta
type.group.forum.message=Grupo de f\u00F3rum
type.group.portfolio=Grupo, pasta de portf\u00F3lio
......@@ -128,7 +123,6 @@ type.identity.publicfolder=Pasta p\u00FAblica
type.question.item=Pergunta
type.repository.entry.BinderTemplate=Recursos did\u00E1ticos, modelo de portf\u00F3lio 2.0
type.repository.entry.CourseModule=Curso reposit\u00F3rio
type.repository.entry.EPStructuredMapTemplate=Recurso Did\u00E1tico, portf\u00F3lio
type.repository.entry.FileResource.ANIM=Recursos did\u00E1ticos, anima\u00E7\u00E3o
type.repository.entry.FileResource.BLOG=Recursos did\u00E1ticos, blog
type.repository.entry.FileResource.DOC=Recursos did\u00E1ticos, arquivo Word
......
......@@ -21,12 +21,16 @@ package org.olat.upgrade;
import java.io.File;
import java.nio.file.Files;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.logging.log4j.Logger;
import org.olat.core.commons.persistence.DB;
import org.olat.core.logging.Tracing;
import org.olat.core.util.FileUtils;
import org.olat.core.util.vfs.VFSManager;
import org.olat.repository.RepositoryEntry;
import org.olat.repository.RepositoryService;
import org.springframework.beans.factory.annotation.Autowired;
/**
......@@ -44,6 +48,8 @@ public class OLATUpgrade_15_pre_8 extends OLATUpgrade {
@Autowired
private DB dbInstance;
@Autowired
private RepositoryService repositoryService;
public OLATUpgrade_15_pre_8() {
super();
......@@ -81,14 +87,9 @@ public class OLATUpgrade_15_pre_8 extends OLATUpgrade {
private boolean deletePortfolioV1(UpgradeManager upgradeManager, UpgradeHistoryData uhd) {
boolean allOk = true;
if (!uhd.getBooleanDataValue(DELETE_PORTFOLIO_V1)) {
try {
File portfolioRoot = VFSManager.olatRootContainer(File.separator + "portfolio", null).getBasefile();
if(Files.exists(portfolioRoot.toPath())) {
FileUtils.deleteDirsAndFiles(portfolioRoot, true, true);
dbInstance.commitAndCloseSession();
log.info("Delete portfolio v1 root directory.");
}
deletePortfolioRepositoryEntries();
deletePortfolioRootDirectory();
} catch (Exception e) {
log.error("", e);
allOk = false;
......@@ -100,4 +101,42 @@ public class OLATUpgrade_15_pre_8 extends OLATUpgrade {
return allOk;
}
private void deletePortfolioRepositoryEntries() {
List<RepositoryEntry> portfolioV1Entries = loadPortfolioV1Entries();
log.info("Deletion of {} portfolio V1 repository entries started.", portfolioV1Entries.size());
AtomicInteger migrationCounter = new AtomicInteger(0);
for (RepositoryEntry entry : portfolioV1Entries) {
try {
repositoryService.deletePermanently(entry, null, null, null);
dbInstance.commitAndCloseSession();
migrationCounter.incrementAndGet();
} catch (Exception e) {
log.error("Portfolio V1 repository entry not deleted. Id={}", entry.getKey());
}
}
log.info("{} Portfolio V1 repository entries deleted.", migrationCounter);
}
private List<RepositoryEntry> loadPortfolioV1Entries() {
StringBuilder sb = new StringBuilder();
sb.append("select v");
sb.append(" from repositoryentry v");
sb.append(" join fetch v.olatResource as ores");
sb.append(" where ores.resName='EPStructuredMapTemplate'");
return dbInstance.getCurrentEntityManager()
.createQuery(sb.toString(), RepositoryEntry.class)
.getResultList();
}
private void deletePortfolioRootDirectory() {
File portfolioRoot = VFSManager.olatRootContainer(File.separator + "portfolio", null).getBasefile();
if(Files.exists(portfolioRoot.toPath())) {
FileUtils.deleteDirsAndFiles(portfolioRoot, true, true);
dbInstance.commitAndCloseSession();
log.info("Delete portfolio v1 root directory.");
}
}
}
......@@ -370,7 +370,6 @@ $fa-css-prefix: "o_icon" !default;
/* repository type icons */
.o_BinderTemplate_icon:before { content: $fa-var-briefcase; }
.o_CourseModule_icon:before, .o_course_icon:before { content: $fa-var-cube; }
.o_EPStructuredMapTemplate_icon:before { content: $fa-var-puzzle-piece; }
.o_FileResource-BLOG_icon:before { content: $fa-var-bullhorn; }
.o_FileResource-IMSCP_icon:before { content: $fa-var-archive; }
.o_FileResource-FORM_icon:before { content: $fa-var-sliders; }
......
This diff is collapsed.
source diff could not be displayed: it is too large. Options to address this: view the blob.
This diff is collapsed.
source diff could not be displayed: it is too large. Options to address this: view the blob.
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