Utökat ProjectClass lite och förhopnningsvis gjort den lite lättare att använda
git-svn-id: svn://svn.dsv.su.se/scipro/scipro/trunk@547 73ecded7-942e-4092-bab0-0e58ef0ee984
This commit is contained in:
parent
4856b6faa2
commit
331c81bcff
src
main/java/se/su/dsv/scipro
test/java/se/su/dsv/scipro/dao/jpa
@ -16,6 +16,7 @@ import se.su.dsv.scipro.data.dataobjects.StringResource;
|
||||
import se.su.dsv.scipro.data.dataobjects.Student;
|
||||
import se.su.dsv.scipro.data.dataobjects.User;
|
||||
import se.su.dsv.scipro.data.dataobjects.Username;
|
||||
import se.su.dsv.scipro.data.enums.ProjectStatus;
|
||||
|
||||
/**
|
||||
* @author Richard Wilkinson - richard.wilkinson@jweekend.com
|
||||
@ -43,11 +44,14 @@ public class DataInitialiser {
|
||||
|
||||
public void dataInit() {
|
||||
|
||||
ProjectClass masterClass;
|
||||
ProjectClass bachelorClass;
|
||||
|
||||
if(projectClassDao.countAll() == 0){
|
||||
ProjectClass pc = new ProjectClass();
|
||||
pc.setName("Bachelor");
|
||||
pc.setDescription("Project for bachelor degree thesis work");
|
||||
pc = projectClassDao.save(pc);
|
||||
bachelorClass = new ProjectClass(ProjectClass.BACHELOR,"Bachelor","Bachelor degree thesis project");
|
||||
bachelorClass = projectClassDao.save(bachelorClass);
|
||||
masterClass = new ProjectClass(ProjectClass.MASTER,"Master","Master degree thesis project");
|
||||
masterClass = projectClassDao.save(masterClass);
|
||||
}
|
||||
|
||||
User user = null;
|
||||
@ -56,7 +60,7 @@ public class DataInitialiser {
|
||||
Employee employeeRole = null;
|
||||
if(userDao.countAll() == 0){
|
||||
user = new User();
|
||||
user.setFirstName("Martin");
|
||||
user.setFirstName("Martin Jürgen");
|
||||
user.setLastName("Peters");
|
||||
user.setIdentifier(666L);
|
||||
user.setEmailAddress("martin@peters.tf");
|
||||
@ -99,8 +103,16 @@ public class DataInitialiser {
|
||||
Project project = new Project();
|
||||
project.addProjectParticipant(studentRole);
|
||||
project.setHeadSupervisor(employeeRole);
|
||||
project.setTitle("The superduper project");
|
||||
project.setProjectClass(projectClassDao.findAll().get(0));
|
||||
project.setTitle("The superduper project about peer portals awesomeness");
|
||||
project.setProjectClass(projectClassDao.getProjectClass(ProjectClass.BACHELOR));
|
||||
project = projectDao.save(project);
|
||||
|
||||
project = new Project();
|
||||
project.addProjectParticipant(studentRole);
|
||||
project.setHeadSupervisor(employeeRole);
|
||||
project.setTitle("The crappy project");
|
||||
project.setProjectClass(projectClassDao.getProjectClass(ProjectClass.MASTER));
|
||||
project.setProjectStatus(ProjectStatus.COMPLETED);
|
||||
project = projectDao.save(project);
|
||||
}
|
||||
|
||||
|
@ -4,5 +4,6 @@ import se.su.dsv.scipro.data.dataobjects.ProjectClass;
|
||||
|
||||
public interface ProjectClassDao extends Dao<ProjectClass>{
|
||||
|
||||
ProjectClass getProjectClass(String projectCode);
|
||||
|
||||
}
|
||||
|
@ -1,6 +1,13 @@
|
||||
package se.su.dsv.scipro.data.dao.jpa;
|
||||
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.persistence.NoResultException;
|
||||
import javax.persistence.PersistenceException;
|
||||
import javax.persistence.TypedQuery;
|
||||
|
||||
import org.springframework.orm.jpa.JpaCallback;
|
||||
import org.springframework.stereotype.Repository;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import se.su.dsv.scipro.data.dao.interfaces.ProjectClassDao;
|
||||
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
|
||||
@ -16,4 +23,28 @@ public class ProjectClassDaoJPAImp extends AbstractDaoJPAImp<ProjectClass> imple
|
||||
public ProjectClassDaoJPAImp() {
|
||||
super(ProjectClass.class);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public ProjectClass getProjectClass(final String projectCode) {
|
||||
return getJpaTemplate().execute(new JpaCallback<ProjectClass>() {
|
||||
public ProjectClass doInJpa(EntityManager em)
|
||||
throws PersistenceException {
|
||||
TypedQuery<ProjectClass> query = em.createQuery("SELECT pc FROM ProjectClass pc WHERE pc.code = :projectCode", ProjectClass.class);
|
||||
query.setParameter("projectCode", projectCode);
|
||||
|
||||
try {
|
||||
return query.getSingleResult();
|
||||
} catch (NoResultException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public ProjectClass save(ProjectClass projectClass){
|
||||
projectClass.setCode(projectClass.getCode().toUpperCase());
|
||||
return super.save(projectClass);
|
||||
}
|
||||
}
|
||||
|
@ -2,9 +2,11 @@ package se.su.dsv.scipro.data.dataobjects;
|
||||
|
||||
import javax.persistence.Basic;
|
||||
import javax.persistence.Cacheable;
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Lob;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import org.hibernate.annotations.Cache;
|
||||
@ -21,6 +23,10 @@ import org.hibernate.annotations.CacheConcurrencyStrategy;
|
||||
@Cache(usage= CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
|
||||
public class ProjectClass extends DomainObject {
|
||||
|
||||
public static final String MASTER = "MASTER";
|
||||
public static final String BACHELOR = "BACHELOR";
|
||||
public static final String PHD = "PHD";
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Id
|
||||
@ -30,8 +36,20 @@ public class ProjectClass extends DomainObject {
|
||||
@Basic(optional=false)
|
||||
private String name;
|
||||
|
||||
@Basic(optional=false)
|
||||
@Column(nullable=false,unique=true)
|
||||
private String code;
|
||||
|
||||
@Lob
|
||||
private String description;
|
||||
|
||||
public ProjectClass() {}
|
||||
|
||||
public ProjectClass(String projectCode, String name, String description){
|
||||
this.code = projectCode;
|
||||
this.name = name;
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
@ -49,6 +67,18 @@ public class ProjectClass extends DomainObject {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
/**
|
||||
* NOT PART OF THE PUBLIC API, DO NOT CHANGE PROJECT CODE
|
||||
* @param code the code to set
|
||||
*/
|
||||
public void setCode(String code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
@ -91,8 +91,7 @@ public class EventDataInitializer {
|
||||
un.setUser(dan);
|
||||
un = usernameDao.save(un);
|
||||
|
||||
prClass = new ProjectClass();
|
||||
prClass.setName("Master");
|
||||
prClass = new ProjectClass(ProjectClass.MASTER, "Master",null);
|
||||
prClass = projectClassDao.save(prClass);
|
||||
|
||||
Student danStudent = new Student();
|
||||
|
@ -63,10 +63,9 @@ public class ScheduleTemplateInitializer {
|
||||
sysAdminRole.setUser(sysAdminUser);
|
||||
sysAdminRole = (SysAdmin) roleDao.save(sysAdminRole);
|
||||
|
||||
ProjectClass masterClass = new ProjectClass();
|
||||
masterClass.setName("Master");
|
||||
ProjectClass bachelorClass = new ProjectClass();
|
||||
bachelorClass.setName("Bachelor");
|
||||
|
||||
ProjectClass masterClass = new ProjectClass(ProjectClass.MASTER, "Master",null);
|
||||
ProjectClass bachelorClass = new ProjectClass(ProjectClass.BACHELOR,"Bachelor",null);
|
||||
masterClass = projectClassDao.save(masterClass);
|
||||
bachelorClass = projectClassDao.save(bachelorClass);
|
||||
|
||||
|
@ -57,8 +57,7 @@ public class TestCommentThreadDaoJpa {
|
||||
|
||||
@Before
|
||||
public void startTransaction() {
|
||||
ProjectClass projectClass = new ProjectClass();
|
||||
projectClass.setName("Test");
|
||||
ProjectClass projectClass = new ProjectClass(ProjectClass.BACHELOR,"Bachelor","Bachelor degree thesis project");
|
||||
projectClass = projectClassDao.save(projectClass);
|
||||
project1 = new Project();
|
||||
project1.setProjectClass(projectClass);
|
||||
|
@ -90,8 +90,7 @@ public class TestEventDaoJPA {
|
||||
@Before
|
||||
public void startTransaction() {
|
||||
|
||||
projectClass = new ProjectClass();
|
||||
projectClass.setName("Bachelor");
|
||||
projectClass = new ProjectClass(ProjectClass.BACHELOR,"Bachelor","Bachelor degree thesis project");
|
||||
projectClass = projectClassDao.save(projectClass);
|
||||
|
||||
indEventUser = new User();
|
||||
|
@ -93,8 +93,7 @@ public class TestPeerReviewDaoJPA {
|
||||
reviewer = userDao.save(reviewer);
|
||||
reviewerRole = roleDao.makeStudent(reviewer);
|
||||
|
||||
projectClass = new ProjectClass();
|
||||
projectClass.setName("Bachelor");
|
||||
projectClass = new ProjectClass(ProjectClass.BACHELOR,"Bachelor","Bachelor degree thesis project");
|
||||
projectClass = projectClassDao.save(projectClass);
|
||||
|
||||
requesterProject = new Project();
|
||||
|
@ -9,6 +9,7 @@ import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.orm.jpa.JpaSystemException;
|
||||
import org.springframework.test.annotation.Rollback;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
@ -68,8 +69,7 @@ public class TestProjectDaoJPA {
|
||||
@Before
|
||||
public void startTransaction(){
|
||||
|
||||
projectClass = new ProjectClass();
|
||||
projectClass.setName("Bachelor");
|
||||
projectClass = new ProjectClass(ProjectClass.BACHELOR,"Bachelor","Bachelor degree thesis project");
|
||||
projectClass = projectClassDao.save(projectClass);
|
||||
|
||||
userWithHeadSupervisor = new User();
|
||||
@ -360,4 +360,38 @@ public class TestProjectDaoJPA {
|
||||
Assert.assertEquals(list, projectDao.getProjectsByProjectTeamMember(userWithCoSupervisorAndReviewer, null, ProjectTeamMemberRoles.REVIEWER));
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
@Rollback
|
||||
@Transactional
|
||||
public void testGetProjetClass(){
|
||||
ProjectClass test = projectClassDao.getProjectClass(ProjectClass.BACHELOR);
|
||||
Assert.assertNotNull(test);
|
||||
Assert.assertEquals(test.getName(), projectClass.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
@Rollback
|
||||
@Transactional
|
||||
public void testFailToCreateDuplicateProjectClassCode(){
|
||||
boolean created = true;
|
||||
try{
|
||||
ProjectClass test = new ProjectClass(ProjectClass.BACHELOR,"Bachelor","Bachelor degree thesis project");
|
||||
test = projectClassDao.save(test);
|
||||
} catch(JpaSystemException e){
|
||||
created = false;
|
||||
}
|
||||
Assert.assertFalse(created);
|
||||
}
|
||||
@Test
|
||||
@Rollback
|
||||
@Transactional
|
||||
public void testProjectClassConvertUppercase(){
|
||||
String code = "rAndomCase";
|
||||
ProjectClass test = new ProjectClass(code,"Bachelor","Bachelor degree thesis project");
|
||||
test = projectClassDao.save(test);
|
||||
|
||||
Assert.assertEquals(test.getCode(), code.toUpperCase());
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -77,8 +77,7 @@ public class TestScheduleTemplateDaoJPA {
|
||||
sysAdminRole.setUser(sysAdminUser);
|
||||
sysAdminRole = (SysAdmin) roleDao.save(sysAdminRole);
|
||||
|
||||
masterClass = new ProjectClass();
|
||||
masterClass.setName("Master");
|
||||
masterClass = new ProjectClass(ProjectClass.MASTER,"Master","Master degree thesis project");
|
||||
masterClass = projectClassDao.save(masterClass);
|
||||
|
||||
sysAdminTemplate = new ScheduleTemplate();
|
||||
|
Loading…
x
Reference in New Issue
Block a user