/** * The contents of this file are subject to the license and copyright * detailed in the LICENSE and NOTICE files at the root of the source * tree and available online at * * http://www.dspace.org/license/ */ package org.dspace.content; 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.services.ConfigurationService; import org.springframework.beans.factory.annotation.Autowired; import java.io.IOException; import java.sql.SQLException; import java.util.UUID; /** * Service implementation for the Site object. * This class is responsible for all business logic calls for the Site object and is autowired by spring. * This class should never be accessed directly. * * @author kevinvandevelde at atmire.com */ public class SiteServiceImpl extends DSpaceObjectServiceImpl<Site> implements SiteService { @Autowired(required = true) protected AuthorizeService authorizeService; @Autowired(required = true) protected ConfigurationService configurationService; @Autowired(required = true) protected SiteDAO siteDAO; protected SiteServiceImpl() { super(); } @Override public Site createSite(Context context) throws SQLException { Site site = findSite(context); if(site == null) { //Only one site can be created at any point in time site = siteDAO.create(context, new Site()); handleService.createHandle(context, site, configurationService.getProperty("handle.prefix") + "/0"); } return site; } @Override public Site findSite(Context context) throws SQLException { return siteDAO.findSite(context); } @Override public Site find(Context context, UUID id) throws SQLException { return siteDAO.findByID(context, Site.class, id); } @Override public void updateLastModified(Context context, Site dso) throws SQLException, AuthorizeException { //Not used at the moment } @Override public void update(Context context, Site site) throws SQLException, AuthorizeException { if(!authorizeService.isAdmin(context)){ throw new AuthorizeException(); } super.update(context, site); 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 public void delete(Context context, Site dso) throws SQLException, AuthorizeException, IOException { throw new AuthorizeException("Site object cannot be deleted"); } @Override public int getSupportsTypeConstant() { return Constants.SITE; } }