diff --git a/dspace-api/src/main/java/org/dspace/content/Site.java b/dspace-api/src/main/java/org/dspace/content/Site.java index 59279ddafc..fdc2189b90 100644 --- a/dspace-api/src/main/java/org/dspace/content/Site.java +++ b/dspace-api/src/main/java/org/dspace/content/Site.java @@ -7,11 +7,14 @@ */ package org.dspace.content; +import org.dspace.content.factory.ContentServiceFactory; +import org.dspace.content.service.SiteService; import org.dspace.core.ConfigurationManager; import org.dspace.core.Constants; import javax.persistence.Entity; import javax.persistence.Table; +import javax.persistence.Transient; /** * Represents the root of the DSpace Archive. @@ -22,6 +25,9 @@ import javax.persistence.Table; public class Site extends DSpaceObject { + @Transient + private SiteService siteService; + /** * Get the type of this object, found in Constants * @@ -36,11 +42,20 @@ public class Site extends DSpaceObject @Override public String getName() { - return ConfigurationManager.getProperty("dspace.name"); + return getSiteService().getName(this); } public String getURL() { return ConfigurationManager.getProperty("dspace.url"); } + + private SiteService getSiteService() { + if(siteService == null) + { + siteService = ContentServiceFactory.getInstance().getSiteService(); + } + return siteService; + } + } diff --git a/dspace-api/src/main/java/org/dspace/content/SiteServiceImpl.java b/dspace-api/src/main/java/org/dspace/content/SiteServiceImpl.java index 310a5d30c3..1056519993 100644 --- a/dspace-api/src/main/java/org/dspace/content/SiteServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/SiteServiceImpl.java @@ -11,8 +11,10 @@ import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.service.AuthorizeService; import org.dspace.content.dao.SiteDAO; import org.dspace.content.service.SiteService; +import org.dspace.core.ConfigurationManager; import org.dspace.core.Constants; import org.dspace.core.Context; +import org.dspace.event.Event; import org.dspace.handle.service.HandleService; import org.dspace.services.ConfigurationService; import org.springframework.beans.factory.annotation.Autowired; @@ -70,12 +72,27 @@ public class SiteServiceImpl extends DSpaceObjectServiceImpl implements Si } @Override - public void update(Context context, Site dso) throws SQLException, AuthorizeException { + public void update(Context context, Site site) throws SQLException, AuthorizeException { if(!authorizeService.isAdmin(context)){ throw new AuthorizeException(); } - siteDAO.save(context, dso); + if(site.isMetadataModified()) + { + context.addEvent(new Event(Event.MODIFY_METADATA, site.getType(), site.getID(), site.getDetails(), getIdentifiers(context, site))); + } + if(site.isModified()) { + context.addEvent(new Event(Event.MODIFY, site.getType(), site.getID(), site.getDetails(), getIdentifiers(context, site))); + } + site.clearModified(); + site.clearDetails(); + siteDAO.save(context, site); + } + + @Override + public String getName(Site dso) + { + return ConfigurationManager.getProperty("dspace.name"); } @Override diff --git a/dspace-api/src/test/java/org/dspace/content/SiteTest.java b/dspace-api/src/test/java/org/dspace/content/SiteTest.java index be1d9b189c..36e79c5d8f 100644 --- a/dspace-api/src/test/java/org/dspace/content/SiteTest.java +++ b/dspace-api/src/test/java/org/dspace/content/SiteTest.java @@ -134,6 +134,7 @@ public class SiteTest extends AbstractUnitTest public void testGetName() { assertThat("testGetName 0",s.getName(), equalTo(ConfigurationManager.getProperty("dspace.name"))); + assertThat("testGetName 1",siteService.getName(s), equalTo(ConfigurationManager.getProperty("dspace.name"))); }