connecting ideas to currently open application period when being selected by an author

This commit is contained in:
Emil Siverhall 2012-07-30 14:50:48 +02:00
parent ae2edb6f9c
commit c98549a0f7
3 changed files with 23 additions and 5 deletions

@ -8,18 +8,17 @@ import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.mysema.query.types.expr.BooleanExpression; import se.su.dsv.scipro.data.dataobjects.ProjectClass;
import se.su.dsv.scipro.match.dataobject.ApplicationPeriod; import se.su.dsv.scipro.match.dataobject.ApplicationPeriod;
import se.su.dsv.scipro.match.dataobject.QApplicationPeriod; import se.su.dsv.scipro.match.dataobject.QApplicationPeriod;
import se.su.dsv.scipro.peer.data.dataobjects.PeerRequest;
import se.su.dsv.scipro.springdata.repos.ApplicationPeriodRepo; import se.su.dsv.scipro.springdata.repos.ApplicationPeriodRepo;
import se.su.dsv.scipro.springdata.services.ApplicationPeriodService; import se.su.dsv.scipro.springdata.services.ApplicationPeriodService;
import com.mysema.query.types.expr.BooleanExpression;
@Service ( "applicationPeriodService" ) @Service ( "applicationPeriodService" )
@Transactional ( readOnly = true ) @Transactional ( readOnly = true )
public class ApplicationPeriodServiceImpl extends AbstractQueryService<ApplicationPeriod, Long> implements ApplicationPeriodService { public class ApplicationPeriodServiceImpl extends AbstractQueryService<ApplicationPeriod, Long> implements ApplicationPeriodService {
@ -41,6 +40,16 @@ public class ApplicationPeriodServiceImpl extends AbstractQueryService<Applicati
return constructList(periods); return constructList(periods);
} }
@Override
public ApplicationPeriod getCurrentPeriod(Date currentDate, ProjectClass pc) {
ApplicationPeriod ap = applicationPeriodRepo.findOne(startedBefore(currentDate).and(endedAfter(currentDate)).and(haveProjectClass(pc)));
return ap;
}
private BooleanExpression haveProjectClass(ProjectClass pc) {
return QApplicationPeriod.applicationPeriod.projectClass.contains(pc);
}
private BooleanExpression startedBefore(Date currentDate){ private BooleanExpression startedBefore(Date currentDate){
return QApplicationPeriod.applicationPeriod.startDate.before(currentDate); return QApplicationPeriod.applicationPeriod.startDate.before(currentDate);
} }
@ -56,4 +65,5 @@ public class ApplicationPeriodServiceImpl extends AbstractQueryService<Applicati
} }
return list; return list;
} }
} }

@ -1,6 +1,7 @@
package se.su.dsv.scipro.springdata.serviceimpls; package se.su.dsv.scipro.springdata.serviceimpls;
import java.util.Collection; import java.util.Collection;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.SortedSet; import java.util.SortedSet;
@ -24,6 +25,7 @@ import se.su.dsv.scipro.match.dataobject.QSupervisorIdea;
import se.su.dsv.scipro.match.dataobject.SupervisorIdea; import se.su.dsv.scipro.match.dataobject.SupervisorIdea;
import se.su.dsv.scipro.match.dataobject.Watson; import se.su.dsv.scipro.match.dataobject.Watson;
import se.su.dsv.scipro.springdata.repos.SupervisorIdeaRepo; import se.su.dsv.scipro.springdata.repos.SupervisorIdeaRepo;
import se.su.dsv.scipro.springdata.services.ApplicationPeriodService;
import se.su.dsv.scipro.springdata.services.StudentService; import se.su.dsv.scipro.springdata.services.StudentService;
import se.su.dsv.scipro.springdata.services.SupervisorIdeaService; import se.su.dsv.scipro.springdata.services.SupervisorIdeaService;
import se.su.dsv.scipro.springdata.services.SupervisorService; import se.su.dsv.scipro.springdata.services.SupervisorService;
@ -42,6 +44,8 @@ public class SupervisorIdeaServiceImpl extends AbstractQueryService<SupervisorId
private StudentService studentService; private StudentService studentService;
@Resource @Resource
private SupervisorService supervisorService; private SupervisorService supervisorService;
@Resource
private ApplicationPeriodService applicationPeriodService;
private int MAX_PARTNERS = 1; private int MAX_PARTNERS = 1;
@ -117,6 +121,7 @@ public class SupervisorIdeaServiceImpl extends AbstractQueryService<SupervisorId
s.addIdeaParticipation(ip); s.addIdeaParticipation(ip);
} }
idea.setIdeaStatus(IdeaStatus.TAKEN); idea.setIdeaStatus(IdeaStatus.TAKEN);
idea.setApplicationPeriod(applicationPeriodService.getCurrentPeriod(new Date(), idea.getProjectClass()));
return true; return true;
} }
} }
@ -142,6 +147,8 @@ public class SupervisorIdeaServiceImpl extends AbstractQueryService<SupervisorId
} }
//Erase watson boxes //Erase watson boxes
idea.setWatson(new Watson()); idea.setWatson(new Watson());
//Remove application period association
idea.setApplicationPeriod(null);
//Change status back to waiting //Change status back to waiting
idea.setIdeaStatus(IdeaStatus.WAITING); idea.setIdeaStatus(IdeaStatus.WAITING);

@ -3,10 +3,11 @@ package se.su.dsv.scipro.springdata.services;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import se.su.dsv.scipro.data.dataobjects.ProjectClass;
import se.su.dsv.scipro.match.dataobject.ApplicationPeriod; import se.su.dsv.scipro.match.dataobject.ApplicationPeriod;
public interface ApplicationPeriodService extends GenericService<ApplicationPeriod, Long>, QueryService<ApplicationPeriod, Long> { public interface ApplicationPeriodService extends GenericService<ApplicationPeriod, Long>, QueryService<ApplicationPeriod, Long> {
List<ApplicationPeriod> getCurrentPeriods(final Date currentDate); List<ApplicationPeriod> getCurrentPeriods(final Date currentDate);
ApplicationPeriod getCurrentPeriod(final Date currentDate, final ProjectClass pc);
} }