diff --git a/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java b/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java index 1c593e34cdbad8ce6f4720a437d19706f3175927..6cb68286719922c2d8c507d6eaeeb3649a3e4b97 100644 --- a/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java +++ b/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java @@ -595,14 +595,10 @@ public class MailManagerImpl extends BasicManager implements MailManager { File baseFolder = new File(WebappHelper.getUserDataRoot(), MAIL_TEMPLATE_FOLDER); File template = new File(baseFolder, "mail_template.html"); if(template.exists()) { - InputStream in = null; - try { - in = new FileInputStream(template); + try(InputStream in = new FileInputStream(template)) { return IOUtils.toString(in); } catch (IOException e) { logError("", e); - } finally { - IOUtils.closeQuietly(in); } } return getDefaultMailTemplate(); @@ -629,8 +625,7 @@ public class MailManagerImpl extends BasicManager implements MailManager { @Override public String getDefaultMailTemplate() { - try { - InputStream in = MailModule.class.getResourceAsStream("_content/mail_template.html"); + try(InputStream in = MailModule.class.getResourceAsStream("_content/mail_template.html")) { return IOUtils.toString(in); } catch (IOException e) { logError("Cannot read the default mail template", e); diff --git a/src/main/java/org/olat/core/util/openxml/OpenXMLDocument.java b/src/main/java/org/olat/core/util/openxml/OpenXMLDocument.java index acb83a73615297470926cee6593e48f0e7914781..6106efb167d0c96b94e29c0749e57b8522c868bf 100644 --- a/src/main/java/org/olat/core/util/openxml/OpenXMLDocument.java +++ b/src/main/java/org/olat/core/util/openxml/OpenXMLDocument.java @@ -228,8 +228,7 @@ public class OpenXMLDocument { margins.setAttribute("w:gutter", "0"); if(StringHelper.containsNonWhitespace(documentHeader)) { - try { - InputStream headerIn = OpenXMLDocument.class.getResourceAsStream("_resources/header.xml"); + try(InputStream headerIn = OpenXMLDocument.class.getResourceAsStream("_resources/header.xml")) { String headerTemplate = IOUtils.toString(headerIn); String header = headerTemplate.replace("[oodocumentitlte]", documentHeader); diff --git a/src/main/java/org/olat/core/util/openxml/OpenXMLDocumentWriter.java b/src/main/java/org/olat/core/util/openxml/OpenXMLDocumentWriter.java index 39edc71df59e05c8cfc52f45d6a5446ea013c2c8..89d0697d6574f8efa74efb3571e42f3680c2186b 100644 --- a/src/main/java/org/olat/core/util/openxml/OpenXMLDocumentWriter.java +++ b/src/main/java/org/olat/core/util/openxml/OpenXMLDocumentWriter.java @@ -124,20 +124,21 @@ public class OpenXMLDocumentWriter { protected void appendMedias(ZipOutputStream out, OpenXMLDocument document) throws IOException { for(DocReference img:document.getImages()) { - FileInputStream in = new FileInputStream(img.getFile()); - ZipEntry wordDocument = new ZipEntry("word/media/" + img.getFile().getName()); - out.putNextEntry(wordDocument); - - IOUtils.copy(in, out); - OpenXMLUtils.writeTo(document.getDocument(), out, false); - out.closeEntry(); + try(FileInputStream in = new FileInputStream(img.getFile())) { + ZipEntry wordDocument = new ZipEntry("word/media/" + img.getFile().getName()); + out.putNextEntry(wordDocument); + + IOUtils.copy(in, out); + OpenXMLUtils.writeTo(document.getDocument(), out, false); + out.closeEntry(); + } catch(Exception e) { + log.error("", e); + } } } private void appendPredefinedStyles(ZipOutputStream out, OpenXMLStyles styles) { - InputStream in = null; - try { - in = OpenXMLDocumentWriter.class.getResourceAsStream("_resources/styles.xml"); + try(InputStream in = OpenXMLDocumentWriter.class.getResourceAsStream("_resources/styles.xml")) { if(styles != null) { Document stylesDoc = OpenXMLUtils.createDocument(in); NodeList stylesElList = stylesDoc.getElementsByTagName("w:styles"); @@ -151,8 +152,6 @@ public class OpenXMLDocumentWriter { } } catch (IOException e) { log.error("", e); - } finally { - IOUtils.closeQuietly(in); } } diff --git a/src/main/java/org/olat/ims/qti/render/LocalizedXSLTransformer.java b/src/main/java/org/olat/ims/qti/render/LocalizedXSLTransformer.java index 0e2f8435d4d4b65ec45a5968703116d550d937e1..c2b8bf49b5f0abf2eaca13c8832977b579453e20 100644 --- a/src/main/java/org/olat/ims/qti/render/LocalizedXSLTransformer.java +++ b/src/main/java/org/olat/ims/qti/render/LocalizedXSLTransformer.java @@ -173,14 +173,12 @@ public class LocalizedXSLTransformer { * Helper to create XSLT transformer for this instance */ private void initTransformer() { - // build new transformer - InputStream xslin = getClass().getResourceAsStream("/org/olat/ims/resources/xsl/" + XSLFILENAME); // translate xsl with velocity Context vcContext = new VelocityContext(); vcContext.put("t", pT); vcContext.put("staticPath", StaticMediaDispatcher.createStaticURIFor("")); String xslAsString = ""; - try { + try(InputStream xslin = getClass().getResourceAsStream("/org/olat/ims/resources/xsl/" + XSLFILENAME)) { xslAsString = slurp(xslin); } catch (IOException e) { log.error("Could not convert xsl to string!", e); diff --git a/src/main/java/org/olat/portfolio/manager/EPStructureManager.java b/src/main/java/org/olat/portfolio/manager/EPStructureManager.java index 1c9d3ba8e1f344ef8a0ac132155cb95088d85f27..f4497c4fbaa439261c7dcd42160295abe10d0176 100755 --- a/src/main/java/org/olat/portfolio/manager/EPStructureManager.java +++ b/src/main/java/org/olat/portfolio/manager/EPStructureManager.java @@ -41,6 +41,7 @@ import org.olat.basesecurity.SecurityGroupMembershipImpl; import org.olat.basesecurity.manager.GroupDAO; import org.olat.core.CoreSpringFactory; import org.olat.core.commons.persistence.DB; +import org.olat.core.commons.persistence.DBFactory; import org.olat.core.commons.persistence.DBQuery; import org.olat.core.commons.persistence.PersistentObject; import org.olat.core.commons.services.commentAndRating.CommentAndRatingService; @@ -961,22 +962,17 @@ public class EPStructureManager extends BasicManager { return;//nothing to delete } - //already delete in removeStructureRecursively: deletePortfolioMapTemplateRecursively((EPStructureElement)map); + if(map instanceof EPAbstractMap) { + //owner group has its constraints shared beetwen the repository entry and the template + ((EPAbstractMap)map).getGroups().clear(); + map = DBFactory.getInstance().getCurrentEntityManager().merge(map); + } + removeStructureRecursively(map); - //already delete in removeStructureRecursively: dbInstance.deleteObject(map); + + dbInstance.commit(); } - /*private void deletePortfolioMapTemplateRecursively(EPStructureElement element) { - element.getInternalArtefacts().clear(); - element.setRoot(null); - element.setRootMap(null); - List<EPStructureToStructureLink> links = element.getInternalChildren(); - for(EPStructureToStructureLink subLink:links) { - deletePortfolioMapTemplateRecursively((EPStructureElement)subLink.getChild()); - } - links.clear(); - }*/ - public void removeStructureRecursively(PortfolioStructure struct){ List<PortfolioStructure> children = loadStructureChildren(struct); for (PortfolioStructure childstruct : children) { diff --git a/src/main/java/org/olat/repository/handlers/PortfolioHandler.java b/src/main/java/org/olat/repository/handlers/PortfolioHandler.java index 8e640d14c0d24ade4629e3f9013954aed99fd212..af811b7e78eb227ee91b2dc21e6f8533a1ac47cb 100644 --- a/src/main/java/org/olat/repository/handlers/PortfolioHandler.java +++ b/src/main/java/org/olat/repository/handlers/PortfolioHandler.java @@ -180,30 +180,28 @@ public class PortfolioHandler implements RepositoryHandler { @Override public boolean readyToDelete(OLATResourceable res, Identity identity, Roles roles, Locale locale, ErrorList errors) { - EPFrontendManager ePFMgr = (EPFrontendManager) CoreSpringFactory.getBean("epFrontendManager"); + EPFrontendManager ePFMgr = CoreSpringFactory.getImpl(EPFrontendManager.class); PortfolioStructure map = ePFMgr.loadPortfolioStructure(res); - if(map != null) { - //owner group has its constraints shared beetwen the repository entry and the template - ((EPAbstractMap)map).setGroups(null); - } if(map instanceof EPStructuredMapTemplate) { EPStructuredMapTemplate exercise = (EPStructuredMapTemplate)map; - if (ePFMgr.isTemplateInUse(exercise, null, null, null)) return false; + if (ePFMgr.isTemplateInUse(exercise, null, null, null)) { + return false; + } } + ReferenceManager refM = ReferenceManager.getInstance(); String referencesSummary = refM.getReferencesToSummary(res, locale); if (referencesSummary != null) { Translator translator = Util.createPackageTranslator(RepositoryManager.class, locale); errors.setError(translator.translate("details.delete.error.references", new String[] { referencesSummary })); return false; - } + } return true; } @Override public boolean cleanupOnDelete(OLATResourceable res) { - EPFrontendManager ePFMgr = (EPFrontendManager) CoreSpringFactory.getBean("epFrontendManager"); - ePFMgr.deletePortfolioMapTemplate(res); + CoreSpringFactory.getImpl(EPFrontendManager.class).deletePortfolioMapTemplate(res); return true; } @@ -215,7 +213,7 @@ public class PortfolioHandler implements RepositoryHandler { public MediaResource getAsMediaResource(OLATResourceable res, boolean backwardsCompatible) { MediaResource mr = null; - EPFrontendManager ePFMgr = (EPFrontendManager)CoreSpringFactory.getBean("epFrontendManager"); + EPFrontendManager ePFMgr = CoreSpringFactory.getImpl(EPFrontendManager.class); PortfolioStructure structure = ePFMgr.loadPortfolioStructure(res); try { InputStream inOut = EPXStreamHandler.toStream(structure); diff --git a/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java b/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java index c3e5a01e0bfbee050192eb45be830ef08ba9e284..32f943f4dc39f5d44b07e750138eff2e44939c83 100644 --- a/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java +++ b/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java @@ -308,7 +308,7 @@ public class RepositoryServiceImpl implements RepositoryService { public void deleteRepositoryEntryAndBaseGroups(RepositoryEntry entry) { RepositoryEntry reloadedEntry = dbInstance.getCurrentEntityManager() .getReference(RepositoryEntry.class, entry.getKey()); - OLATResource resource = reloadedEntry.getOlatResource(); + Long resourceKey = reloadedEntry.getOlatResource().getKey(); Group defaultGroup = reToGroupDao.getDefaultGroup(reloadedEntry); groupDao.removeMemberships(defaultGroup); @@ -317,8 +317,11 @@ public class RepositoryServiceImpl implements RepositoryService { dbInstance.getCurrentEntityManager().remove(reloadedEntry); groupDao.removeGroup(defaultGroup); dbInstance.commit(); - - dbInstance.getCurrentEntityManager().remove(resource); + + OLATResource reloadedResource = resourceManager.findResourceById(resourceKey); + if(reloadedResource != null) { + dbInstance.getCurrentEntityManager().remove(reloadedResource); + } dbInstance.commit(); } diff --git a/src/main/java/org/olat/resource/OLATResourceManager.java b/src/main/java/org/olat/resource/OLATResourceManager.java index d5d5f7c9af45e92a0ba4fbb2ded8701c59d3a88f..5ae7dd1e60da7f54128609aa3e4eade7b7917488 100644 --- a/src/main/java/org/olat/resource/OLATResourceManager.java +++ b/src/main/java/org/olat/resource/OLATResourceManager.java @@ -200,7 +200,7 @@ public class OLATResourceManager extends BasicManager { List<OLATResource> resources = dbInstance.getCurrentEntityManager() .createQuery(s, OLATResource.class) .setParameter("resname", type) - .setParameter("resid", resourceableId.longValue()) + .setParameter("resid", resourceableId) .setHint("org.hibernate.cacheable", Boolean.TRUE) .getResultList(); @@ -210,4 +210,15 @@ public class OLATResourceManager extends BasicManager { } return resources.get(0); } + + public OLATResource findResourceById(Long key) { + if (key == null) return null; + + String s = "select ori from org.olat.resource.OLATResourceImpl ori where ori.key=:resourceKey"; + List<OLATResource> resources = dbInstance.getCurrentEntityManager() + .createQuery(s, OLATResource.class) + .setParameter("resourceKey", key) + .getResultList(); + return resources.isEmpty() ? null : resources.get(0); + } } \ No newline at end of file