// $HeadURL$
// $Id$
//
// Copyright © 2006, 2010, 2011, 2012 by the President and Fellows of Harvard College.
//
// Screensaver is an open-source project developed by the ICCB-L and NSRB labs
// at Harvard Medical School. This software is distributed under the terms of
// the GNU General Public License.
package edu.harvard.med.screensaver.service.screenresult;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import edu.harvard.med.screensaver.db.GenericEntityDAO;
import edu.harvard.med.screensaver.db.ScreenResultsDAO;
import edu.harvard.med.screensaver.model.activities.AdministrativeActivityType;
import edu.harvard.med.screensaver.model.screenresults.ScreenResult;
import edu.harvard.med.screensaver.model.screens.Screen;
import edu.harvard.med.screensaver.model.users.AdministratorUser;
import edu.harvard.med.screensaver.service.screens.ScreenDerivedPropertiesUpdater;
/**
* Deletes the {@link ScreenResult} from a {@link Screen}, and adds update
* activity.
*/
public class ScreenResultDeleter
{
private static final String COMMENTS = "screen result deleted";
private static Logger log = Logger.getLogger(ScreenResultDeleter.class);
private GenericEntityDAO _dao;
private ScreenResultsDAO _screenResultsDao;
private ScreenDerivedPropertiesUpdater _screenDerivedPropertiesUpdater;
/**
* @motivation for CGLIB2
*/
protected ScreenResultDeleter() {}
@Autowired
public ScreenResultDeleter(GenericEntityDAO dao,
ScreenResultsDAO screenResultsDao,
ScreenDerivedPropertiesUpdater screenDerivedPropertiesUpdater)
{
_dao = dao;
_screenResultsDao = screenResultsDao;
_screenDerivedPropertiesUpdater = screenDerivedPropertiesUpdater;
}
@Transactional
public Screen deleteScreenResult(ScreenResult screenResult, AdministratorUser admin)
{
Screen screen = _dao.reloadEntity(screenResult.getScreen());
admin = _dao.reloadEntity(admin);
_screenResultsDao.deleteScreenResult(screenResult);
screen.createUpdateActivity(AdministrativeActivityType.SCREEN_RESULT_DATA_DELETION, admin, COMMENTS);
_screenDerivedPropertiesUpdater.updateScreeningStatistics(screen);
return screen;
}
}