Lagt till daos för schematemplates

git-svn-id: svn://svn.dsv.su.se/scipro/scipro/trunk@326 73ecded7-942e-4092-bab0-0e58ef0ee984
This commit is contained in:
dan-kjel 2011-03-14 13:15:38 +00:00
parent 60cd7f2a48
commit 3a394e306e
9 changed files with 240 additions and 13 deletions

@ -0,0 +1,101 @@
package se.su.dsv.scipro.data.dao.jpa;
import java.util.ArrayList;
import java.util.List;
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.EventTemplateDao;
import se.su.dsv.scipro.data.dataobjects.EventTemplate;
import se.su.dsv.scipro.data.dataobjects.Project;
import se.su.dsv.scipro.data.dataobjects.User;
import se.su.dsv.scipro.data.enums.ProjectStatus;
@Repository("eventTemplateDao")
public class EventTemplateDaoJPAImp extends AbstractDaoJPAImp<EventTemplate>
implements EventTemplateDao {
public EventTemplateDaoJPAImp() {
super(EventTemplate.class);
}
/*
@Transactional
public List<EventTemplate> getSysAdminTemplates() {
return getJpaTemplate().execute(new JpaCallback<List<EventTemplate>>() {
public List<EventTemplate> doInJpa(EntityManager em)
throws PersistenceException {
String q = "select et " +
"from EventTemplate et " +
"where et.isSysAdminTemplate = true ";
q += "order by et.templateName asc";
TypedQuery<EventTemplate> query = em.createQuery(q, EventTemplate.class);
try {
return query.getResultList();
} catch (NoResultException e) {
return new ArrayList<EventTemplate>();
}
}
});
}
@Transactional
public List<EventTemplate> getEventTemplates(final User u, final boolean onlySysAdminTemplates) {
return getJpaTemplate().execute(new JpaCallback<List<EventTemplate>>() {
public List<EventTemplate> doInJpa(EntityManager em)
throws PersistenceException {
if(!onlySysAdminTemplates && u == null){
throw new IllegalArgumentException("If you don't want sysadmintemplates you cannot pass a nulluser");
}
String selectClause = "select et ";
String fromClause = "from EventTemplate et ";
String joinClause = "";
String conditions = "";
if(onlySysAdminTemplates){
conditions += "where et.isSysAdminTemplate = true ";
} else {
fromClause += ", User u ";
joinClause += "join u.roles role ";
conditions += "where et.templateCreator.id = role.id " +
"and et.isSysAdminTemplate = false " +
"and u = :user ";
}
String q = selectClause +
fromClause +
joinClause +
conditions +
"order by et.templateName asc ";
TypedQuery<EventTemplate> query = em.createQuery(q, EventTemplate.class);
if(!onlySysAdminTemplates){
query.setParameter("user", u);
}
try {
return query.getResultList();
} catch (NoResultException e) {
return new ArrayList<EventTemplate>();
}
}
});
}
public List<EventTemplate> getEventTemplates(final User u){
return getEventTemplates(u, false);
}*/
}

@ -1,8 +1,11 @@
package se.su.dsv.scipro.data.dao.jpa;
import org.springframework.stereotype.Repository;
import se.su.dsv.scipro.data.dao.interfaces.GroupEventDao;
import se.su.dsv.scipro.data.dataobjects.GroupEvent;
@Repository("groupEventDao")
public class GroupEventDaoJPAImp extends LazyDeleteAbstractDaoJPAImp<GroupEvent> implements GroupEventDao {
public GroupEventDaoJPAImp(){

@ -0,0 +1,16 @@
package se.su.dsv.scipro.data.dao.jpa;
import org.springframework.stereotype.Repository;
import se.su.dsv.scipro.data.dao.interfaces.GroupEventTemplateDao;
import se.su.dsv.scipro.data.dataobjects.GroupEventTemplate;
@Repository("groupEventTemplateDao")
public class GroupEventTemplateDaoJPAImp extends AbstractDaoJPAImp<GroupEventTemplate>
implements GroupEventTemplateDao {
public GroupEventTemplateDaoJPAImp() {
super(GroupEventTemplate.class);
}
}

@ -16,5 +16,4 @@ public class ProjectClassDaoJPAImp extends AbstractDaoJPAImp<ProjectClass> imple
public ProjectClassDaoJPAImp() {
super(ProjectClass.class);
}
}

@ -190,7 +190,7 @@ public class ProjectDaoJPAImp extends AbstractDaoJPAImp<Project> implements Proj
throws PersistenceException {
String q = "select p " +
"from Project p " +
"where upper(p.title) LIKE :searchTerm " +
"where upper(p.title) LIKE upper(:searchTerm) " +
"order by p.title ";
TypedQuery<Project> query = em.createQuery(q, Project.class);

@ -1,8 +1,11 @@
package se.su.dsv.scipro.data.dao.jpa;
import org.springframework.stereotype.Repository;
import se.su.dsv.scipro.data.dao.interfaces.ProjectEventDao;
import se.su.dsv.scipro.data.dataobjects.ProjectEvent;
@Repository("projectEventDao")
public class ProjectEventDaoJPAImp extends LazyDeleteAbstractDaoJPAImp<ProjectEvent> implements ProjectEventDao {
public ProjectEventDaoJPAImp() {

@ -0,0 +1,16 @@
package se.su.dsv.scipro.data.dao.jpa;
import org.springframework.stereotype.Repository;
import se.su.dsv.scipro.data.dao.interfaces.ProjectEventTemplateDao;
import se.su.dsv.scipro.data.dataobjects.ProjectEventTemplate;
@Repository("projectEventTemplateDao")
public class ProjectEventTemplateDaoJPAImp extends AbstractDaoJPAImp<ProjectEventTemplate>
implements ProjectEventTemplateDao {
public ProjectEventTemplateDaoJPAImp() {
super(ProjectEventTemplate.class);
}
}

@ -1,20 +1,11 @@
package se.su.dsv.scipro.data.dao.jpa;
import java.util.ArrayList;
import java.util.List;
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.transaction.annotation.Transactional;
import org.springframework.stereotype.Repository;
import se.su.dsv.scipro.data.dao.interfaces.ProjectScheduleDao;
import se.su.dsv.scipro.data.dataobjects.Event;
import se.su.dsv.scipro.data.dataobjects.ProjectSchedule;
@Repository("projectScheduleDao")
public class ProjectScheduleDaoJPAImp extends AbstractDaoJPAImp<ProjectSchedule>
implements ProjectScheduleDao {

@ -0,0 +1,98 @@
package se.su.dsv.scipro.data.dao.jpa;
import java.util.ArrayList;
import java.util.List;
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.ScheduleTemplateDao;
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
import se.su.dsv.scipro.data.dataobjects.ScheduleTemplate;
import se.su.dsv.scipro.data.dataobjects.User;
@Repository("scheduleTemplateDao")
public class ScheduleTemplateDaoJPAImp extends AbstractDaoJPAImp<ScheduleTemplate>
implements ScheduleTemplateDao {
public ScheduleTemplateDaoJPAImp() {
super(ScheduleTemplate.class);
}
@Transactional
public List<ScheduleTemplate> getScheduleTemplates(final User creator, final Boolean isSysAdminTemplate,
final Boolean active, final ProjectClass projectClass) {
return getJpaTemplate().execute(new JpaCallback<List<ScheduleTemplate>>() {
public List<ScheduleTemplate> doInJpa(EntityManager em)
throws PersistenceException {
String selectClause = "select st ";
String fromClause = "from ScheduleTemplate st ";
String joinClause = "";
List<String> conditions = new ArrayList<String>();
if(isSysAdminTemplate != null){
conditions.add("st.isSysAdminTemplate = :isSysAdminTemplate ");
}
if(creator != null){
fromClause += ", User u ";
joinClause += "join u.roles role ";
conditions.add("role = st.creator ");
conditions.add("u = :user ");
}
if(active != null){
conditions.add("st.active = :active ");
}
if(projectClass != null){
conditions.add("st.projectClass = :projectClass ");
}
String cond = "";
for(String c : conditions){
if(conditions.indexOf(c) == 0)
cond += "where " + c;
else
cond += "and " + c;
}
String q = selectClause + fromClause + joinClause + cond;
q += " order by st.templateName asc";
TypedQuery<ScheduleTemplate> query = em.createQuery(q, ScheduleTemplate.class);
if(isSysAdminTemplate != null){
query.setParameter("isSysAdminTemplate", isSysAdminTemplate);
}
if(creator != null){
query.setParameter("user", creator);
}
if(active != null){
query.setParameter("active", active);
}
if(projectClass != null){
query.setParameter("projectClass", projectClass);
}
try {
return query.getResultList();
} catch (NoResultException e) {
return new ArrayList<ScheduleTemplate>();
}
}
});
}
}