All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.greenpepper.server.domain.dao.hibernate.HibernateSystemUnderTestDao Maven / Gradle / Ivy

There is a newer version: 4.2.4
Show newest version
package com.greenpepper.server.domain.dao.hibernate;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Property;
import org.hibernate.criterion.Restrictions;

import com.greenpepper.server.GreenPepperServerErrorKey;
import com.greenpepper.server.GreenPepperServerException;
import com.greenpepper.server.database.SessionService;
import com.greenpepper.server.domain.EnvironmentType;
import com.greenpepper.server.domain.Execution;
import com.greenpepper.server.domain.Project;
import com.greenpepper.server.domain.Reference;
import com.greenpepper.server.domain.Runner;
import com.greenpepper.server.domain.Specification;
import com.greenpepper.server.domain.SystemUnderTest;
import com.greenpepper.server.domain.dao.ProjectDao;
import com.greenpepper.server.domain.dao.SystemUnderTestDao;

/**
 * 

HibernateSystemUnderTestDao class.

* * @author oaouattara * @version $Id: $Id */ public class HibernateSystemUnderTestDao implements SystemUnderTestDao { private SessionService sessionService; private ProjectDao projectDao; /** *

Constructor for HibernateSystemUnderTestDao.

* * @param sessionService a {@link com.greenpepper.server.database.SessionService} object. * @param projectDao a {@link com.greenpepper.server.domain.dao.ProjectDao} object. */ public HibernateSystemUnderTestDao(SessionService sessionService, ProjectDao projectDao) { this.sessionService = sessionService; this.projectDao = projectDao; } /** *

Constructor for HibernateSystemUnderTestDao.

* * @param sessionService a {@link com.greenpepper.server.database.SessionService} object. */ public HibernateSystemUnderTestDao(SessionService sessionService) { this(sessionService, new HibernateProjectDao(sessionService)); } /** *

getAllEnvironmentTypes.

* * @return a {@link java.util.List} object. */ @SuppressWarnings("unchecked") public List getAllEnvironmentTypes() { final Criteria crit = sessionService.getSession().createCriteria(EnvironmentType.class); crit.addOrder(Order.asc("name")); List list = crit.list(); HibernateLazyInitializer.initCollection(list); return list; } /** {@inheritDoc} */ public EnvironmentType getEnvironmentTypeByName(String name) { final Criteria crit = sessionService.getSession().createCriteria(EnvironmentType.class); crit.add(Property.forName("name").eq(name)); EnvironmentType environmentType = (EnvironmentType) crit.uniqueResult(); HibernateLazyInitializer.init(environmentType); return environmentType; } /** *

create.

* * @param environmentType a {@link com.greenpepper.server.domain.EnvironmentType} object. * @return a {@link com.greenpepper.server.domain.EnvironmentType} object. */ public EnvironmentType create(EnvironmentType environmentType) { sessionService.getSession().save(environmentType); return environmentType; } /** {@inheritDoc} */ public Runner getRunnerByName(String name) { final Criteria crit = sessionService.getSession().createCriteria(Runner.class); crit.add(Property.forName("name").eq(name)); Runner runner = (Runner) crit.uniqueResult(); HibernateLazyInitializer.init(runner); return runner; } /** *

getAllRunners.

* * @return a {@link java.util.List} object. */ @SuppressWarnings("unchecked") public List getAllRunners() { final Criteria crit = sessionService.getSession().createCriteria(Runner.class); crit.addOrder(Order.asc("name")); List list = crit.list(); HibernateLazyInitializer.initCollection(list); return list; } /** {@inheritDoc} */ public Runner create(Runner runner) throws GreenPepperServerException { if(getRunnerByName(runner.getName()) != null) throw new GreenPepperServerException( GreenPepperServerErrorKey.RUNNER_ALREADY_EXISTS, "Runner already exists"); EnvironmentType envType = getEnvironmentTypeByName(runner.getEnvironmentType().getName()); if(envType == null) throw new GreenPepperServerException( GreenPepperServerErrorKey.ENVTYPE_NOT_FOUND, "Environment not found"); runner.setEnvironmentType(envType); sessionService.getSession().save(runner); return runner; } /** {@inheritDoc} */ public Runner update(String oldRunnerName, Runner runner) throws GreenPepperServerException { if(!runner.getName().equals(oldRunnerName) && getRunnerByName(runner.getName()) != null) throw new GreenPepperServerException( GreenPepperServerErrorKey.RUNNER_ALREADY_EXISTS, "Runner already exists"); Runner runnerToUpdate = getRunnerByName(oldRunnerName); if(runnerToUpdate == null) throw new GreenPepperServerException(GreenPepperServerErrorKey.RUNNER_NOT_FOUND, "Runner not found"); EnvironmentType newEnvType = getEnvironmentTypeByName(runner.getEnvironmentType().getName()); if(newEnvType == null) throw new GreenPepperServerException( GreenPepperServerErrorKey.ENVTYPE_NOT_FOUND, "Environment not found"); runnerToUpdate.setName(runner.getName()); runnerToUpdate.setEnvironmentType(newEnvType); runnerToUpdate.setCmdLineTemplate(runner.getCmdLineTemplate()); runnerToUpdate.setMainClass(runner.getMainClass()); runnerToUpdate.setServerName(runner.getServerName()); runnerToUpdate.setServerPort(runner.getServerPort()); runnerToUpdate.setClasspaths(runner.getClasspaths()); runnerToUpdate.setSecured(runner.isSecured()); sessionService.getSession().update(runnerToUpdate); return runnerToUpdate; } /** {@inheritDoc} */ public void removeRunner(String runnerName) throws GreenPepperServerException { Runner runner = getRunnerByName(runnerName); if(runner == null) throw new GreenPepperServerException(GreenPepperServerErrorKey.RUNNER_NOT_FOUND, "Runner not found"); if(!getAllForRunner(runnerName).isEmpty()) throw new GreenPepperServerException(GreenPepperServerErrorKey.RUNNER_SUT_ASSOCIATED, "Runner is associated with suts"); sessionService.getSession().delete(runner); } /** {@inheritDoc} */ public SystemUnderTest getByName(String projectName, String sutName) { final Criteria crit = sessionService.getSession().createCriteria(SystemUnderTest.class); crit.add(Property.forName("name").eq(sutName)); crit.createAlias("project", "p"); crit.add(Restrictions.eq("p.name", projectName)); SystemUnderTest systemUnderTest = (SystemUnderTest) crit.uniqueResult(); HibernateLazyInitializer.init(systemUnderTest); return systemUnderTest; } /** {@inheritDoc} */ public List getAllForProject(String projectName) { final Criteria crit = sessionService.getSession().createCriteria(SystemUnderTest.class); crit.createAlias("project", "p"); crit.add(Restrictions.eq("p.name", projectName)); crit.addOrder(Order.asc("name")); @SuppressWarnings("unchecked") List systemUnderTests = crit.list(); HibernateLazyInitializer.initCollection(systemUnderTests); return systemUnderTests; } /** {@inheritDoc} */ public List getAllForRunner(String runnerName) { final Criteria crit = sessionService.getSession().createCriteria(SystemUnderTest.class); crit.createAlias("runner", "r"); crit.add(Restrictions.eq("r.name", runnerName)); crit.addOrder(Order.asc("name")); @SuppressWarnings("unchecked") List systemUnderTests = crit.list(); HibernateLazyInitializer.initCollection(systemUnderTests); return systemUnderTests; } /** {@inheritDoc} */ public List getAllReferences(SystemUnderTest sut) { final Criteria crit = sessionService.getSession().createCriteria(Reference.class); crit.createAlias("systemUnderTest", "sut"); crit.add(Restrictions.eq("sut.name", sut.getName())); crit.createAlias("sut.project", "sp"); crit.add(Restrictions.eq("sp.name", sut.getProject().getName())); crit.addOrder(Order.asc("sp.name")); @SuppressWarnings("unchecked") List references = crit.list(); HibernateLazyInitializer.initCollection(references); return references; } /** {@inheritDoc} */ public List getAllSpecifications(SystemUnderTest sut) { final Criteria crit = sessionService.getSession().createCriteria(Specification.class); crit.createAlias("targetedSystemUnderTests", "sut"); crit.add(Restrictions.eq("sut.name", sut.getName())); crit.createAlias("sut.project", "sp"); crit.add(Restrictions.eq("sp.name", sut.getProject().getName())); crit.addOrder(Order.asc("sp.name")); @SuppressWarnings("unchecked") List specifications = crit.list(); HibernateLazyInitializer.initCollection(specifications); return specifications; } /** *

create.

* * @param newSut a {@link com.greenpepper.server.domain.SystemUnderTest} object. * @return a {@link com.greenpepper.server.domain.SystemUnderTest} object. * @throws com.greenpepper.server.GreenPepperServerException if any. */ public SystemUnderTest create(SystemUnderTest newSut) throws GreenPepperServerException { Runner runner = getRunnerByName(newSut.getRunner().getName()); if(runner == null) throw new GreenPepperServerException(GreenPepperServerErrorKey.RUNNER_NOT_FOUND, "Runner not found"); newSut.setRunner(runner); Project project = projectDao.getByName(newSut.getProject().getName()); if(project == null) throw new GreenPepperServerException(GreenPepperServerErrorKey.PROJECT_NOT_FOUND, "project not found"); project.addSystemUnderTest(newSut); sessionService.getSession().update(project); return newSut; } /** *

update.

* * @param oldSutName a {@link java.lang.String} object. * @param updatedSut a {@link com.greenpepper.server.domain.SystemUnderTest} object. * @return a {@link com.greenpepper.server.domain.SystemUnderTest} object. * @throws com.greenpepper.server.GreenPepperServerException if any. */ public SystemUnderTest update(String oldSutName, SystemUnderTest updatedSut) throws GreenPepperServerException { if(!updatedSut.getName().equals(oldSutName) && getByName(updatedSut.getProject().getName(), updatedSut.getName()) != null) throw new GreenPepperServerException( GreenPepperServerErrorKey.SUT_ALREADY_EXISTS, "SUT already exists"); SystemUnderTest sutToUpdate = getByName(updatedSut.getProject().getName(), oldSutName); Runner runner = getRunnerByName(updatedSut.getRunner().getName()); if(runner == null) throw new GreenPepperServerException(GreenPepperServerErrorKey.RUNNER_NOT_FOUND, "Runner not found"); sutToUpdate.setRunner(runner); sutToUpdate.setName(updatedSut.getName()); sutToUpdate.setSutClasspaths(updatedSut.getSutClasspaths()); sutToUpdate.setFixtureClasspaths(updatedSut.getFixtureClasspaths()); sutToUpdate.setFixtureFactory(updatedSut.getFixtureFactory()); sutToUpdate.setFixtureFactoryArgs(updatedSut.getFixtureFactoryArgs()); sutToUpdate.setIsDefault(updatedSut.isDefault()); sutToUpdate.setProjectDependencyDescriptor(updatedSut.getProjectDependencyDescriptor()); sessionService.getSession().update(sutToUpdate); return sutToUpdate; } /** {@inheritDoc} */ public void remove(String projectName, String sutName) throws GreenPepperServerException { SystemUnderTest sut = getByName(projectName, sutName); if(sut == null) throw new GreenPepperServerException(GreenPepperServerErrorKey.SUT_NOT_FOUND, "SUT not found"); if(getAllReferences(sut).size() > 0) throw new GreenPepperServerException(GreenPepperServerErrorKey.SUT_REFERENCE_ASSOCIATED, "The SUT has associated references"); if(getAllSpecifications(sut).size() > 0) throw new GreenPepperServerException(GreenPepperServerErrorKey.SUT_SPECIFICATION_ASSOCIATED, "The SUT has associated specifications"); if(getAllExecutions(sut).size() > 0) throw new GreenPepperServerException(GreenPepperServerErrorKey.SUT_EXECUTION_ASSOCIATED, "The SUT has associated specifications"); sut.getProject().removeSystemUnderTest(sut); sessionService.getSession().delete(sut); } /** {@inheritDoc} */ public void setAsDefault(SystemUnderTest systemUnderTest) throws GreenPepperServerException { Project project = projectDao.getByName(systemUnderTest.getProject().getName()); if(project == null) throw new GreenPepperServerException(GreenPepperServerErrorKey.PROJECT_NOT_FOUND, "project not found"); for(SystemUnderTest sut : project.getSystemUnderTests()) { sut.setIsDefault(sut.getName().equals(systemUnderTest.getName())); } sessionService.getSession().update(project); } /** *

getAllExecutions.

* * @param systemUnderTest a {@link com.greenpepper.server.domain.SystemUnderTest} object. * @return a {@link java.util.List} object. */ public List getAllExecutions(SystemUnderTest systemUnderTest) { final Criteria crit = sessionService.getSession().createCriteria(Execution.class); crit.createAlias("systemUnderTest", "sut"); crit.add(Restrictions.eq("sut.name", systemUnderTest.getName())); crit.createAlias("sut.project", "sp"); crit.add(Restrictions.eq("sp.name", systemUnderTest.getProject().getName())); @SuppressWarnings("unchecked") List executions = crit.list(); HibernateLazyInitializer.initCollection(executions); return executions; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy