/* * GNU Lesser General Public License (GNU LGPL). * For details see: http://www.openclinica.org/license * * OpenClinica is distributed under the * Copyright 2003-2008 Akaza Research */ package org.akaza.openclinica.service.managestudy; import java.util.Date; import org.akaza.openclinica.bean.login.UserAccountBean; import org.akaza.openclinica.bean.managestudy.DiscrepancyNoteBean; import org.akaza.openclinica.bean.managestudy.EventDefinitionCRFBean; import org.akaza.openclinica.bean.managestudy.StudyBean; import org.akaza.openclinica.bean.managestudy.StudyEventDefinitionBean; import org.akaza.openclinica.dao.hibernate.EventDefinitionCrfTagDao; import org.akaza.openclinica.dao.hibernate.UserAccountDao; import org.akaza.openclinica.dao.managestudy.DiscrepancyNoteDAO; import org.akaza.openclinica.domain.datamap.EventDefinitionCrfTag; import org.akaza.openclinica.domain.user.UserAccount; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import javax.sql.DataSource; public class EventDefinitionCrfTagService { @Autowired EventDefinitionCrfTagDao eventDefinitionCrfTagDao = null; @Autowired UserAccountDao userDaoDomain = null; protected final Logger logger = LoggerFactory.getLogger(getClass().getName()); public EventDefinitionCrfTagService() { } public boolean getEventDefnCrfOfflineStatus(int tagId, String crfPath, boolean active) { EventDefinitionCrfTag eventDefinitionCrfTag = getEventDefinitionCrfTagDao().findByCrfPath(tagId, crfPath, active); if (eventDefinitionCrfTag == null) return false; else return true; } public void saveEventDefnCrfOfflineTag(int tagId, String crfPath, EventDefinitionCRFBean edc, StudyEventDefinitionBean sed) { boolean active = edc.isOffline(); EventDefinitionCrfTag eventDefinitionCrfTagActive = getEventDefinitionCrfTagDao().findByCrfPath(tagId, crfPath, true); EventDefinitionCrfTag eventDefinitionCrfTagNonActive = getEventDefinitionCrfTagDao().findByCrfPath(tagId, crfPath, false); if (active) { if (eventDefinitionCrfTagActive != null && sed.isRepeating()) { } else if (eventDefinitionCrfTagActive != null && !sed.isRepeating()) { updateEventDefnCrfTagObject(eventDefinitionCrfTagActive, false, edc); } else if (eventDefinitionCrfTagNonActive != null && sed.isRepeating()) { updateEventDefnCrfTagObject(eventDefinitionCrfTagNonActive, true, edc); } else if (eventDefinitionCrfTagNonActive != null && !sed.isRepeating()) { } else { buildAndSaveEventDefnCrfTagObject(tagId, crfPath, active, edc); } } else { if (eventDefinitionCrfTagNonActive != null) { } else if (eventDefinitionCrfTagActive != null) { updateEventDefnCrfTagObject(eventDefinitionCrfTagActive, false, edc); } } } public void updateEventDefnCrfTagObject(EventDefinitionCrfTag eventDefinitionCrfTag, boolean active, EventDefinitionCRFBean edc) { int userId = (edc.getUpdaterId() != 0) ? edc.getUpdaterId() : edc.getOwnerId(); eventDefinitionCrfTag.setActive(active); eventDefinitionCrfTag.setDateUpdated(new Date()); eventDefinitionCrfTag.setUpdateId(userId); getEventDefinitionCrfTagDao().saveOrUpdate(eventDefinitionCrfTag); } public void buildAndSaveEventDefnCrfTagObject(int tagId, String crfPath, boolean active, EventDefinitionCRFBean edc) { int userId = (edc.getUpdaterId() != 0) ? edc.getUpdaterId() : edc.getOwnerId(); UserAccount userAccount = getUserDaoDomain().findById(userId); EventDefinitionCrfTag eventDefinitionCrfTag = new EventDefinitionCrfTag(); eventDefinitionCrfTag.setTagId(tagId); eventDefinitionCrfTag.setPath(crfPath); eventDefinitionCrfTag.setActive(active); eventDefinitionCrfTag.setDateCreated(new Date()); eventDefinitionCrfTag.setUserAccount(userAccount); getEventDefinitionCrfTagDao().saveOrUpdate(eventDefinitionCrfTag); } public UserAccountDao getUserDaoDomain() { return userDaoDomain; } public void setUserDaoDomain(UserAccountDao userDaoDomain) { this.userDaoDomain = userDaoDomain; } public void setEventDefinitionCrfTagDao(EventDefinitionCrfTagDao eventDefinitionCrfTagDao) { this.eventDefinitionCrfTagDao = eventDefinitionCrfTagDao; } public EventDefinitionCrfTagDao getEventDefinitionCrfTagDao() { return eventDefinitionCrfTagDao; } }