diff --git a/src/main/java/org/olat/_spring/mainContext.xml b/src/main/java/org/olat/_spring/mainContext.xml index 62cccc495477d24455848f3fea66bb86e2685c5f..e71e39ebe58b973b95791ffb135aa3f1416940fb 100644 --- a/src/main/java/org/olat/_spring/mainContext.xml +++ b/src/main/java/org/olat/_spring/mainContext.xml @@ -1,9 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" - http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans.xsd"> + http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans.xsd + http://www.springframework.org/schema/context + http://www.springframework.org/schema/context/spring-context.xsd"> + + <context:component-scan base-package="org.olat.note" /> <import resource="classpath:/org/olat/core/util/threadlog/_spring/threadlogCorecontext.xml"/> <import resource="classpath:/org/olat/core/_spring/mainCorecontext.xml"/> @@ -33,7 +38,6 @@ <import resource="classpath:/org/olat/instantMessaging/_spring/instantMessagingContext.xml"/> <import resource="classpath:/org/olat/ldap/_spring/ldapContext.xml"/> <import resource="classpath:/org/olat/login/_spring/loginContext.xml"/> - <import resource="classpath:/org/olat/note/_spring/noteContext.xml"/> <import resource="classpath:/org/olat/portfolio/_spring/portfolioContext.xml"/> <import resource="classpath:/org/olat/properties/_spring/propertiesContext.xml"/> <import resource="classpath:/org/olat/registration/_spring/registrationContext.xml"/> diff --git a/src/main/java/org/olat/note/NoteController.java b/src/main/java/org/olat/note/NoteController.java index fca8416f5d44424e91f11ecbc7eba6a8216ee628..8c21bdbbb927770c59f2ffa2895209dea9a09b9b 100644 --- a/src/main/java/org/olat/note/NoteController.java +++ b/src/main/java/org/olat/note/NoteController.java @@ -45,6 +45,7 @@ import org.olat.core.util.event.EventBus; import org.olat.core.util.event.GenericEventListener; import org.olat.core.util.resource.OLATResourceableJustBeforeDeletedEvent; import org.olat.core.util.resource.OresHelper; +import org.springframework.beans.factory.annotation.Autowired; /** * Initial Date: Dec 9, 2004 @@ -58,12 +59,14 @@ import org.olat.core.util.resource.OresHelper; */ public class NoteController extends FormBasicController implements GenericEventListener { - private NoteManager nm; private Note n; private EventBus sec; private RichTextElement noteField; private FormLink editButton; private FormSubmit submitButton; + + @Autowired + private NoteManager nm; /** * @param ureq @@ -98,8 +101,7 @@ public class NoteController extends FormBasicController implements GenericEventL private void init(UserRequest ureq, String resourceTypeName, Long resourceTypeId, String noteTitle) { Identity owner = ureq.getIdentity(); - this.nm = NoteManager.getInstance(); - this.n = nm.loadNoteOrCreateInRAM(owner, resourceTypeName, resourceTypeId); + n = nm.loadNoteOrCreateInRAM(owner, resourceTypeName, resourceTypeId); n.setNoteTitle(noteTitle); // register for local event (for the same user), is used to dispose diff --git a/src/main/java/org/olat/note/NoteImpl.java b/src/main/java/org/olat/note/NoteImpl.java index 76ee238203806d23b323e2ea2ea3a00935d04323..bde2dfbde8eb776385ecb3c9121f61d816f8e0c1 100644 --- a/src/main/java/org/olat/note/NoteImpl.java +++ b/src/main/java/org/olat/note/NoteImpl.java @@ -26,6 +26,7 @@ package org.olat.note; import java.util.Date; + import org.olat.core.commons.persistence.PersistentObject; import org.olat.core.id.Identity; import org.olat.core.logging.AssertException; @@ -37,6 +38,9 @@ import org.olat.core.logging.AssertException; * @author Alexander Schneider */ public class NoteImpl extends PersistentObject implements Note { + + private static final long serialVersionUID = -403450817851666464L; + private Identity owner; private String resourceTypeName; private Long resourceTypeId; @@ -157,4 +161,21 @@ public class NoteImpl extends PersistentObject implements Note { public void setLastModified(Date date) { this.lastModified = date; } + + @Override + public int hashCode() { + return getKey() == null ? 2609815 : getKey().hashCode(); + } + + @Override + public boolean equals(Object obj) { + if(this == obj) { + return true; + } + if(obj instanceof NoteImpl) { + NoteImpl note = (NoteImpl)obj; + return getKey() != null && getKey().equals(note.getKey()); + } + return false; + } } \ No newline at end of file diff --git a/src/main/java/org/olat/note/NoteListController.java b/src/main/java/org/olat/note/NoteListController.java index b5589f9ff88f485785a646ce78d1825d7cbbe16c..3ca0a86a42020aac3faef912e41fb49bc65e0793 100644 --- a/src/main/java/org/olat/note/NoteListController.java +++ b/src/main/java/org/olat/note/NoteListController.java @@ -49,6 +49,7 @@ import org.olat.core.util.event.EventBus; import org.olat.core.util.event.GenericEventListener; import org.olat.core.util.resource.OLATResourceableJustBeforeDeletedEvent; import org.olat.core.util.resource.OresHelper; +import org.springframework.beans.factory.annotation.Autowired; /** @@ -61,7 +62,6 @@ public class NoteListController extends BasicController implements GenericEventL private NoteListTableDataModel nLModel; private Note chosenN = null; - private NoteManager nm = NoteManager.getInstance(); private TableController tableC; private DialogBoxController deleteDialogCtr; @@ -70,6 +70,9 @@ public class NoteListController extends BasicController implements GenericEventL private Identity cOwner; private Locale locale; private CloseableModalController cmc; + + @Autowired + private NoteManager nm; /** * @param ureq diff --git a/src/main/java/org/olat/note/NoteManager.java b/src/main/java/org/olat/note/NoteManager.java index f0fcf6f866bfd842452260a9132479a042f7f144..d99169878375494026367a97b09baa85e263a3aa 100644 --- a/src/main/java/org/olat/note/NoteManager.java +++ b/src/main/java/org/olat/note/NoteManager.java @@ -29,39 +29,26 @@ import java.util.Date; import java.util.Iterator; import java.util.List; -import org.hibernate.type.StandardBasicTypes; -import org.hibernate.type.Type; -import org.olat.core.commons.persistence.DBFactory; -import org.olat.core.commons.persistence.DBQuery; +import org.olat.basesecurity.IdentityRef; +import org.olat.core.commons.persistence.DB; import org.olat.core.id.Identity; import org.olat.core.id.OLATResourceable; -import org.olat.core.manager.BasicManager; import org.olat.core.util.coordinate.CoordinatorManager; import org.olat.core.util.resource.OresHelper; import org.olat.user.UserDataDeletable; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; /** * Description: * * @author Alexander Schneider */ -public class NoteManager extends BasicManager implements UserDataDeletable { - private static NoteManager instance; +@Service +public class NoteManager implements UserDataDeletable { - /** - * [spring] - * @param userDeletionManager - */ - private NoteManager() { - instance = this; - } - - /** - * @return the singleton - */ - public static NoteManager getInstance() { - return instance; - } + @Autowired + private DB dbInstance; /** * @param owner @@ -98,29 +85,30 @@ public class NoteManager extends BasicManager implements UserDataDeletable { * @param resourceTypeId * @return the note */ - private Note findNote(Identity owner, String resourceTypeName, Long resourceTypeId) { - - String query = "from org.olat.note.NoteImpl as n where n.owner = ? and n.resourceTypeName = ? and n.resourceTypeId = ?"; - List notes = DBFactory.getInstance().find(query, new Object[] { owner.getKey(), resourceTypeName, resourceTypeId }, - new Type[] { StandardBasicTypes.LONG, StandardBasicTypes.STRING, StandardBasicTypes.LONG }); - + private Note findNote(IdentityRef owner, String resourceTypeName, Long resourceTypeId) { + + String query = "select n from org.olat.note.NoteImpl as n where n.owner.key=:ownerKey and n.resourceTypeName=:resName and n.resourceTypeId=:resId"; + List<Note> notes = dbInstance.getCurrentEntityManager().createQuery(query, Note.class) + .setParameter("ownerKey", owner.getKey()) + .setParameter("resName", resourceTypeName) + .setParameter("resId", resourceTypeId) + .getResultList(); if (notes == null || notes.size() != 1) { return null; - } else { - return (Note) notes.get(0); } + return notes.get(0); } /** * @param owner * @return a list of notes belonging to the owner */ - public List<Note> listUserNotes(Identity owner) { - String query = "from org.olat.note.NoteImpl as n inner join fetch n.owner as noteowner where noteowner = :noteowner"; - DBQuery dbQuery = DBFactory.getInstance().createQuery(query.toString()); - dbQuery.setEntity("noteowner", owner); - List<Note> notes = dbQuery.list(); - return notes; + public List<Note> listUserNotes(IdentityRef owner) { + String query = "select n from org.olat.note.NoteImpl as n inner join fetch n.owner as noteowner where noteowner.key=:noteowner"; + return dbInstance.getCurrentEntityManager() + .createQuery(query.toString(), Note.class). + setParameter("noteowner", owner.getKey()) + .getResultList(); } /** @@ -129,8 +117,8 @@ public class NoteManager extends BasicManager implements UserDataDeletable { * @param n the note */ public void deleteNote(Note n) { - n = (Note)DBFactory.getInstance().loadObject(n); - DBFactory.getInstance().deleteObject(n); + Note reloadedNote = dbInstance.getCurrentEntityManager().find(NoteImpl.class, n.getKey()); + dbInstance.getCurrentEntityManager().remove(reloadedNote); fireBookmarkEvent(n.getOwner()); } @@ -141,7 +129,7 @@ public class NoteManager extends BasicManager implements UserDataDeletable { */ public void saveNote(Note n) { n.setLastModified(new Date()); - DBFactory.getInstance().saveObject(n); + dbInstance.getCurrentEntityManager().persist(n); fireBookmarkEvent(n.getOwner()); } @@ -150,10 +138,11 @@ public class NoteManager extends BasicManager implements UserDataDeletable { * * @param n */ - public void updateNote(Note n) { + public Note updateNote(Note n) { n.setLastModified(new Date()); - DBFactory.getInstance().updateObject(n); + Note mergedNote = dbInstance.getCurrentEntityManager().merge(n); fireBookmarkEvent(n.getOwner()); + return mergedNote; } /** @@ -162,12 +151,9 @@ public class NoteManager extends BasicManager implements UserDataDeletable { */ @Override public void deleteUserData(Identity identity, String newDeletedUserName) { - List<Note> userNotes = this.listUserNotes(identity); + List<Note> userNotes = listUserNotes(identity); for (Iterator<Note> iter = userNotes.iterator(); iter.hasNext();) { - this.deleteNote( iter.next() ); - } - if (isLogDebugEnabled()) { - logDebug("All notes deleted for identity=" + identity, null ); + deleteNote( iter.next() ); } } diff --git a/src/main/java/org/olat/note/NotesPortletRunController.java b/src/main/java/org/olat/note/NotesPortletRunController.java index 122c8dc7718e85ebf2c31401e7959f9cede24985..07efc0564de2649a16413bf441585fb2e960c4af 100644 --- a/src/main/java/org/olat/note/NotesPortletRunController.java +++ b/src/main/java/org/olat/note/NotesPortletRunController.java @@ -65,6 +65,7 @@ import org.olat.core.id.context.BusinessControlFactory; import org.olat.core.util.coordinate.CoordinatorManager; import org.olat.core.util.event.GenericEventListener; import org.olat.core.util.resource.OresHelper; +import org.springframework.beans.factory.annotation.Autowired; /** * Description:<br> @@ -84,6 +85,9 @@ public class NotesPortletRunController extends AbstractPortletRunController<Note private Link showAllLink; private final OLATResourceable eventBusThisIdentityOres; + @Autowired + private NoteManager nm; + /** * Constructor * @param ureq @@ -136,7 +140,6 @@ public class NotesPortletRunController extends AbstractPortletRunController<Note * @return */ private List<PortletEntry<Note>> getAllPortletEntries() { - NoteManager nm = NoteManager.getInstance(); List<Note> noteList = nm.listUserNotes(cOwner); return convertNoteToPortletEntryList(noteList); } @@ -159,13 +162,10 @@ public class NotesPortletRunController extends AbstractPortletRunController<Note * * @see org.olat.core.gui.control.generic.portal.AbstractPortletRunController#reloadModel(org.olat.core.gui.UserRequest, org.olat.core.gui.control.generic.portal.SortingCriteria) */ - protected void reloadModel(SortingCriteria sortingCriteria) { - if (sortingCriteria.getSortingType() == SortingCriteria.AUTO_SORTING) { - NoteManager nm = NoteManager.getInstance(); + protected void reloadModel(SortingCriteria sortCriteria) { + if (sortCriteria.getSortingType() == SortingCriteria.AUTO_SORTING) { List<Note> noteList = nm.listUserNotes(cOwner); - - noteList = getSortedList(noteList, sortingCriteria ); - + noteList = getSortedList(noteList, sortCriteria ); List<PortletEntry<Note>> entries = convertNoteToPortletEntryList(noteList); notesListModel = new NoteSortingTableDataModel(entries, getLocale()); tableCtr.setTableDataModel(notesListModel); @@ -287,16 +287,16 @@ public class NotesPortletRunController extends AbstractPortletRunController<Note * * @see org.olat.core.gui.control.generic.portal.AbstractPortletRunController#getComparator(org.olat.core.gui.control.generic.portal.SortingCriteria) */ - protected Comparator<Note> getComparator(final SortingCriteria sortingCriteria) { + protected Comparator<Note> getComparator(final SortingCriteria criteria) { return new Comparator<Note>(){ public int compare(final Note note1, final Note note2) { int comparisonResult = 0; - if(sortingCriteria.getSortingTerm()==SortingCriteria.ALPHABETICAL_SORTING) { + if(criteria.getSortingTerm()==SortingCriteria.ALPHABETICAL_SORTING) { comparisonResult = collator.compare(StringEscapeUtils.escapeHtml(note1.getNoteTitle()).toString(), StringEscapeUtils.escapeHtml(note2.getNoteTitle()).toString()); - } else if(sortingCriteria.getSortingTerm()==SortingCriteria.DATE_SORTING) { + } else if(criteria.getSortingTerm()==SortingCriteria.DATE_SORTING) { comparisonResult = note1.getLastModified().compareTo(note2.getLastModified()); } - if(!sortingCriteria.isAscending()) { + if(!criteria.isAscending()) { //if not isAscending return (-comparisonResult) return -comparisonResult; } diff --git a/src/test/java/org/olat/basesecurity/manager/GroupDAOTest.java b/src/test/java/org/olat/basesecurity/manager/GroupDAOTest.java index 05e638fcd0d837b6c340982ca28d0651f2f76ac0..e53470acc27fcc32d857f685bd7569322752aee6 100644 --- a/src/test/java/org/olat/basesecurity/manager/GroupDAOTest.java +++ b/src/test/java/org/olat/basesecurity/manager/GroupDAOTest.java @@ -19,17 +19,20 @@ */ package org.olat.basesecurity.manager; +import java.util.Collections; import java.util.List; import java.util.Set; import junit.framework.Assert; import org.junit.Test; +import org.olat.basesecurity.Grant; import org.olat.basesecurity.Group; import org.olat.basesecurity.GroupMembership; import org.olat.basesecurity.model.GroupImpl; import org.olat.core.commons.persistence.DB; import org.olat.core.id.Identity; +import org.olat.resource.OLATResource; import org.olat.test.JunitTestHelper; import org.olat.test.OlatTestCase; import org.springframework.beans.factory.annotation.Autowired; @@ -242,5 +245,166 @@ public class GroupDAOTest extends OlatTestCase { List<GroupMembership> deletedMemberships = groupDao.getMemberships(group, "pilot"); Assert.assertTrue(deletedMemberships.isEmpty()); } - -} + + @Test + public void addGrant() { + Group group = groupDao.createGroup(); + OLATResource resource = JunitTestHelper.createRandomResource(); + groupDao.addGrant(group, "grant-role", "read-only", resource); + dbInstance.commitAndCloseSession(); + } + + @Test + public void getGrants_withResource() { + Group group = groupDao.createGroup(); + OLATResource resource = JunitTestHelper.createRandomResource(); + groupDao.addGrant(group, "getGrants-res", "getGrants-res-perm", resource); + dbInstance.commitAndCloseSession(); + + List<Group> groups = Collections.singletonList(group); + List<Grant> grants = groupDao.getGrants(groups, resource); + Assert.assertNotNull(grants); + Assert.assertEquals(1, grants.size()); + Grant grant = grants.get(0); + Assert.assertNotNull(grant); + Assert.assertEquals(group, grant.getGroup()); + Assert.assertEquals(resource, grant.getResource()); + Assert.assertEquals("getGrants-res", grant.getRole()); + Assert.assertEquals("getGrants-res-perm", grant.getPermission()); + } + + @Test + public void getGrants_withResource_withRole() { + Group group = groupDao.createGroup(); + OLATResource resource = JunitTestHelper.createRandomResource(); + groupDao.addGrant(group, "getGrants-role-1", "getGrants-role-1-perm", resource); + groupDao.addGrant(group, "getGrants-role-2", "getGrants-role-2-perm", resource); + dbInstance.commitAndCloseSession(); + + List<Grant> grants = groupDao.getGrants(group, "getGrants-role-2", resource); + Assert.assertNotNull(grants); + Assert.assertEquals(1, grants.size()); + Grant grant = grants.get(0); + Assert.assertNotNull(grant); + Assert.assertEquals(group, grant.getGroup()); + Assert.assertEquals(resource, grant.getResource()); + Assert.assertEquals("getGrants-role-2", grant.getRole()); + Assert.assertEquals("getGrants-role-2-perm", grant.getPermission()); + } + + @Test + public void hasGrant() { + Identity id = JunitTestHelper.createAndPersistIdentityAsRndUser("grant-1-"); + Group group = groupDao.createGroup(); + String role = "hasGrant-role"; + groupDao.addMembership(group, id, role); + OLATResource resource = JunitTestHelper.createRandomResource(); + groupDao.addGrant(group, role, "hasGrant-perm", resource); + dbInstance.commitAndCloseSession(); + + boolean hasGrant = groupDao.hasGrant(id, "hasGrant-perm", resource); + Assert.assertTrue(hasGrant); + } + + @Test + public void getPermissions() { + Identity id = JunitTestHelper.createAndPersistIdentityAsRndUser("grant-1-"); + Group group = groupDao.createGroup(); + String role = "getPermissions-role"; + groupDao.addMembership(group, id, role); + OLATResource resource = JunitTestHelper.createRandomResource(); + groupDao.addGrant(group, role, "getPermissions-perm", resource); + dbInstance.commitAndCloseSession(); + + List<String> permissions = groupDao.getPermissions(id, resource); + Assert.assertNotNull(permissions); + Assert.assertEquals(1, permissions.size()); + Assert.assertEquals("getPermissions-perm", permissions.get(0)); + } + + @Test + public void getPermissions_complex() { + Identity id = JunitTestHelper.createAndPersistIdentityAsRndUser("grant-1-"); + Group group = groupDao.createGroup(); + String role1 = "getPermissions-role-1"; + groupDao.addMembership(group, id, role1); + String role2 = "getPermissions-role-2"; + groupDao.addMembership(group, id, role2); + OLATResource resource = JunitTestHelper.createRandomResource(); + groupDao.addGrant(group, role1, "getPermissions-perm-1", resource); + groupDao.addGrant(group, role2, "getPermissions-perm-2", resource); + dbInstance.commitAndCloseSession(); + + List<String> permissions = groupDao.getPermissions(id, resource); + Assert.assertNotNull(permissions); + Assert.assertEquals(2, permissions.size()); + Assert.assertTrue(permissions.contains("getPermissions-perm-1")); + Assert.assertTrue(permissions.contains("getPermissions-perm-2")); + } + + @Test + public void addRemoveGrant() { + Identity id = JunitTestHelper.createAndPersistIdentityAsRndUser("addremove-1-"); + Group group = groupDao.createGroup(); + groupDao.addMembership(group, id, "addremove-1"); + groupDao.addMembership(group, id, "addremove-2"); + OLATResource resource = JunitTestHelper.createRandomResource(); + groupDao.addGrant(group, "addremove-1", "addremove-1-perm", resource); + groupDao.addGrant(group, "addremove-2", "addremove-2-perm", resource); + dbInstance.commitAndCloseSession(); + + //setup check + boolean hasPerm1 = groupDao.hasGrant(id, "addremove-1-perm", resource); + Assert.assertTrue(hasPerm1); + boolean hasPerm2 = groupDao.hasGrant(id, "addremove-2-perm", resource); + Assert.assertTrue(hasPerm2); + + //remove perm 1 + groupDao.removeGrant(group, "addremove-1", "addremove-1-perm", resource); + dbInstance.commitAndCloseSession(); + + //check + boolean hasStillPerm1 = groupDao.hasGrant(id, "addremove-1-perm", resource); + Assert.assertFalse(hasStillPerm1); + boolean hasStillPerm2 = groupDao.hasGrant(id, "addremove-2-perm", resource); + Assert.assertTrue(hasStillPerm2); + } + + @Test + public void addRemoveGrants() { + Identity id = JunitTestHelper.createAndPersistIdentityAsRndUser("addremove-1-"); + Group group = groupDao.createGroup(); + groupDao.addMembership(group, id, "addremove-1"); + groupDao.addMembership(group, id, "addremove-2"); + OLATResource resource = JunitTestHelper.createRandomResource(); + groupDao.addGrant(group, "addremove-1", "addremove-1-perm", resource); + groupDao.addGrant(group, "addremove-1", "addremove-11-perm", resource); + groupDao.addGrant(group, "addremove-2", "addremove-2-perm", resource); + groupDao.addGrant(group, "addremove-2", "addremove-22-perm", resource); + dbInstance.commitAndCloseSession(); + + //setup check + boolean hasPerm1 = groupDao.hasGrant(id, "addremove-1-perm", resource); + Assert.assertTrue(hasPerm1); + boolean hasPerm11 = groupDao.hasGrant(id, "addremove-11-perm", resource); + Assert.assertTrue(hasPerm11); + boolean hasPerm2 = groupDao.hasGrant(id, "addremove-2-perm", resource); + Assert.assertTrue(hasPerm2); + boolean hasPerm22 = groupDao.hasGrant(id, "addremove-22-perm", resource); + Assert.assertTrue(hasPerm22); + + //remove perm 1 + groupDao.removeGrants(group, "addremove-1", resource); + dbInstance.commitAndCloseSession(); + + //check + boolean hasStillPerm1 = groupDao.hasGrant(id, "addremove-1-perm", resource); + Assert.assertFalse(hasStillPerm1); + boolean hasStillPerm11 = groupDao.hasGrant(id, "addremove-11-perm", resource); + Assert.assertFalse(hasStillPerm11); + boolean hasStillPerm2 = groupDao.hasGrant(id, "addremove-2-perm", resource); + Assert.assertTrue(hasStillPerm2); + boolean hasStillPerm22 = groupDao.hasGrant(id, "addremove-22-perm", resource); + Assert.assertTrue(hasStillPerm22); + } +} \ No newline at end of file diff --git a/src/test/java/org/olat/note/NoteTest.java b/src/test/java/org/olat/note/NoteTest.java index 3bea20ac3744241bd5f7886d175fe460e3c0c713..d670fb2a30cc121a14c4fdf087f549e8c5108e0c 100644 --- a/src/test/java/org/olat/note/NoteTest.java +++ b/src/test/java/org/olat/note/NoteTest.java @@ -26,22 +26,16 @@ package org.olat.note; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - import java.util.List; -import java.util.UUID; -import org.junit.Before; +import org.junit.Assert; import org.junit.Test; -import org.olat.core.commons.persistence.DBFactory; +import org.olat.core.commons.persistence.DB; import org.olat.core.id.Identity; -import org.olat.core.id.OLATResourceable; -import org.olat.core.logging.OLog; -import org.olat.core.logging.Tracing; -import org.olat.resource.OLATResourceManager; +import org.olat.resource.OLATResource; import org.olat.test.JunitTestHelper; import org.olat.test.OlatTestCase; +import org.springframework.beans.factory.annotation.Autowired; /** * Initial Date: Dec 9, 2004 @@ -51,73 +45,56 @@ import org.olat.test.OlatTestCase; * Comment: * */ -public class NoteTest extends OlatTestCase implements OLATResourceable { - - private long RESOURCE_ID = 42; - private String RESOURCE_TYPE = "org.olat.note.NoteTest"; - private static OLog log = Tracing.createLoggerFor(NoteTest.class); - private static boolean isInitialized = false; - private static Identity identity = null; - private static org.olat.resource.OLATResource res = null; - private static NoteManager nm; - +public class NoteTest extends OlatTestCase { - /** - * @see junit.framework.TestCase#setUp() - */ - @Before - public void setup() { - if (NoteTest.isInitialized == false) { - try { - nm = NoteManager.getInstance(); - // identity with null User should be ok for test case - String name = UUID.randomUUID().toString().replace("-", ""); - identity = JunitTestHelper.createAndPersistIdentityAsUser(name); - res = OLATResourceManager.getInstance().createOLATResourceInstance(this); - OLATResourceManager.getInstance().saveOLATResource(res); - - NoteTest.isInitialized = true; - } catch (Exception e) { - log.error( - "Error while generating database tables or opening hibernate session: " + - e); - } - } - } + @Autowired + private DB dbInstance; + @Autowired + private NoteManager noteManager; @Test public void testGenericLoadDeleteNote() { - Long resourceTypeId = res.getResourceableId(); - String resourceTypeName = res.getResourceableTypeName(); - Note n = nm.loadNoteOrCreateInRAM(identity, resourceTypeName, resourceTypeId); + Identity identity = JunitTestHelper.createAndPersistIdentityAsRndUser("note-1-"); + OLATResource resource = JunitTestHelper.createRandomResource(); + + Note n = noteManager.loadNoteOrCreateInRAM(identity, resource.getResourceableTypeName(), resource.getResourceableId()); n.setNoteTitle("Notiz Titel"); n.setNoteText("Notiz Text"); - nm.saveNote(n); + noteManager.saveNote(n); - DBFactory.getInstance().closeSession(); + dbInstance.commitAndCloseSession(); - Note note = nm.loadNoteOrCreateInRAM(identity, resourceTypeName, resourceTypeId); - assertNotNull(note); + Note note = noteManager.loadNoteOrCreateInRAM(identity, resource.getResourceableTypeName(), resource.getResourceableId()); + Assert.assertNotNull(note); - nm.deleteNote(note); + noteManager.deleteNote(note); - List<Note> notes = nm.listUserNotes(identity); - assertTrue(notes.size()==0); - + List<Note> notes = noteManager.listUserNotes(identity); + Assert.assertTrue(notes.isEmpty()); } - - /** - * @see org.olat.core.id.OLATResourceablegetResourceableTypeName() - */ - public String getResourceableTypeName() { - return RESOURCE_TYPE; - } - - /** - * @see org.olat.core.id.OLATResourceablegetResourceableId() - */ - public Long getResourceableId() { - return new Long(RESOURCE_ID); + @Test + public void saveUpdateNote() { + Identity identity = JunitTestHelper.createAndPersistIdentityAsRndUser("note-2-"); + OLATResource resource = JunitTestHelper.createRandomResource(); + Note note = noteManager.loadNoteOrCreateInRAM(identity, resource.getResourceableTypeName(), resource.getResourceableId()); + note.setNoteTitle("Very important"); + note.setNoteText("Critical update with new features"); + noteManager.saveNote(note); + dbInstance.commitAndCloseSession(); + + Note updateNote = noteManager.loadNoteOrCreateInRAM(identity, resource.getResourceableTypeName(), resource.getResourceableId()); + updateNote.setNoteTitle("Important"); + updateNote.setNoteText("Cool update with new features"); + noteManager.saveNote(updateNote); + dbInstance.commitAndCloseSession(); + + List<Note> notes = noteManager.listUserNotes(identity); + Assert.assertNotNull(notes); + Assert.assertEquals(1, notes.size()); + Assert.assertEquals(updateNote, notes.get(0)); + Note reloadedNote = notes.get(0); + Assert.assertEquals("Important", reloadedNote.getNoteTitle()); + Assert.assertEquals("Cool update with new features", reloadedNote.getNoteText()); } }