/* * (c) 2008- RANDI2 Core Development Team * * This file is part of RANDI2. * * RANDI2 is free software: you can redistribute it and/or modify it under the * terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. * * RANDI2 is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR * A PARTICULAR PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with * RANDI2. If not, see <http://www.gnu.org/licenses/>. */ package de.randi2.dao; import java.util.List; import org.springframework.stereotype.Service; import de.randi2.model.AbstractDomainObject; import de.randi2.model.Login; import de.randi2.model.Trial; import de.randi2.model.TrialSite; import de.randi2.model.TrialSubject; import de.randi2.model.randomization.Block; import de.randi2.model.randomization.BlockRandomizationConfig; import de.randi2.model.randomization.BlockRandomizationTempData; import de.randi2.model.randomization.ResponseAdaptiveRConfig; import de.randi2.model.randomization.ResponseAdaptiveRandomizationTempData; import de.randi2.model.randomization.ResponseAdaptiveUrn; import de.randi2.model.randomization.Urn; import de.randi2.model.randomization.UrnDesignConfig; import de.randi2.model.randomization.UrnDesignTempData; /** * The Class TrialDaoHibernate. */ @Service("trialDao") public class TrialDaoHibernate extends AbstractDaoHibernate<Trial> implements TrialDao { /* * (non-Javadoc) * * @see de.randi2.dao.AbstractDaoHibernate#getModelClass() */ @Override public Class<Trial> getModelClass() { return Trial.class; } /* * (non-Javadoc) * * @seede.randi2.dao.AbstractDaoHibernate#update(de.randi2.model. * AbstractDomainObject) */ @Override public Trial update(Trial object) { if (object.getRandomizationConfiguration() instanceof BlockRandomizationConfig) { for (String s : ((BlockRandomizationTempData) ((BlockRandomizationConfig) object .getRandomizationConfiguration()).getTempData()) .getBlocks().keySet()) { Block b = ((BlockRandomizationTempData) ((BlockRandomizationConfig) object .getRandomizationConfiguration()).getTempData()) .getBlocks().get(s); if (b != null && b.getId() == AbstractDomainObject.NOT_YET_SAVED_ID) { entityManager.persist(b); } } } else if (object.getRandomizationConfiguration() instanceof UrnDesignConfig) { for (String s : ((UrnDesignTempData) ((UrnDesignConfig) object .getRandomizationConfiguration()).getTempData()).getUrns() .keySet()) { Urn u = ((UrnDesignTempData) ((UrnDesignConfig) object .getRandomizationConfiguration()).getTempData()) .getUrns().get(s); if (u != null && u.getId() == AbstractDomainObject.NOT_YET_SAVED_ID) { entityManager.persist(u); } } }else if (object.getRandomizationConfiguration() instanceof ResponseAdaptiveRConfig) { for (String s : ((ResponseAdaptiveRandomizationTempData) ((ResponseAdaptiveRConfig) object .getRandomizationConfiguration()).getTempData()).getResponseAdaptiveUrns() .keySet()) { ResponseAdaptiveUrn u = ((ResponseAdaptiveRandomizationTempData) ((ResponseAdaptiveRConfig) object .getRandomizationConfiguration()).getTempData()) .getResponseAdaptiveUrns().get(s); if (u != null && u.getId() == AbstractDomainObject.NOT_YET_SAVED_ID) { entityManager.persist(u); } } } return super.update(object); } /* * (non-Javadoc) * * @see de.randi2.dao.TrialDao#getSubjects(de.randi2.model.Login) */ @SuppressWarnings("unchecked") @Override public List<TrialSubject> getSubjects(Trial trial, Login investigator) { return entityManager .createNamedQuery("trialSubject.specificInvestigator") .setParameter(1, trial).setParameter(2, investigator) .getResultList(); } @SuppressWarnings("unchecked") @Override public List<Trial> getAll(TrialSite trialSite) { return entityManager.createNamedQuery("trial.AllTrialsWithSpecificParticipatingTrialSite").setParameter(1, trialSite.getId()).getResultList(); } }