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.Qualifier;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
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.QApplicationPeriod;
import se.su.dsv.scipro.peer.data.dataobjects.PeerRequest;
import se.su.dsv.scipro.springdata.repos.ApplicationPeriodRepo;
import se.su.dsv.scipro.springdata.services.ApplicationPeriodService;
import com.mysema.query.types.expr.BooleanExpression;
@Service ( "applicationPeriodService" )
@Transactional ( readOnly = true )
public class ApplicationPeriodServiceImpl extends AbstractQueryService<ApplicationPeriod, Long> implements ApplicationPeriodService {
@ -41,6 +40,16 @@ public class ApplicationPeriodServiceImpl extends AbstractQueryService<Applicati
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){
return QApplicationPeriod.applicationPeriod.startDate.before(currentDate);
}
@ -56,4 +65,5 @@ public class ApplicationPeriodServiceImpl extends AbstractQueryService<Applicati
}
return list;
}
}

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

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