Merge branch 'develop' of ssh://git.dsv.su.se/git/scipro/scipro into develop

This commit is contained in:
Emil Siverhall 2012-03-20 10:19:48 +01:00
commit 71435e5b31
3 changed files with 42 additions and 10 deletions
src
main/java/se/su/dsv/scipro/match
test/java/se/su/dsv/scipro/match

@ -82,9 +82,10 @@ public class GreedyMatchingAlgorithm implements MatchingAlgorithm {
continue;
}
if(availability.getProjectClass().toString().equalsIgnoreCase(ProjectClass.BACHELOR) &&
projectIdea.getProjectClass().toString().equalsIgnoreCase(ProjectClass.MASTER)) {
logger.info("A bachelor supervisor cannot handle master ideas.");
if(!availability.getProjectClass().toString().equals(
projectIdea.getProjectClass().toString()) ) {
//logger.info("A bachelor supervisor cannot handle master ideas.");
logger.info("Supervisor availability level and project idea level aren't equal.");
continue;
}

@ -17,7 +17,7 @@ public class Availability implements Serializable {
private Integer numCapable;
private final Employee supervisor;
public Availability(final Employee supervisor,final Long numMatched,final Integer numCapable,final ProjectClass projectClass) {
public Availability(final Employee supervisor, final Long numMatched, final Integer numCapable, final ProjectClass projectClass) {
this.supervisor = supervisor;
this.numMatched = numMatched;
this.numCapable = numCapable;

@ -579,18 +579,19 @@ public class TestGreedyMatchingAlgorithm {
* Tests: We now perform a third test "testDavidH_Has_Less_Total_Available_Slots", here we test that "henrikH" is found, because "davidH"
* has less "total available" slots (8) compared to 9 for "henrikH" for project ideas (master + bachelor)
* */
public void testDavidH_Has_Less_Total_Available_Slots() {
public void testDavidH_Has_Less_Available_Slots() {
List<ProjectIdea> projectIdeaList = new ArrayList<ProjectIdea>();
List<Employee> supervisorList = new ArrayList<Employee>();
Employee davidH = createEmployee("David", "Hallberg", languages);
supervisorAvailability.add(new Availability(davidH, 0L, 4, bachelorProjectClass));
supervisorAvailability.add(new Availability(davidH, 1L, 5, masterProjectClass));
Employee henrikH = createEmployee("Henrik", "Hansson", languages);
supervisorAvailability.add(new Availability(henrikH, 1L, 5, bachelorProjectClass));
supervisorAvailability.add(new Availability(henrikH, 0L, 5, masterProjectClass));
supervisorAvailability.add(new Availability(henrikH, 0L, 4, bachelorProjectClass));
//supervisorAvailability.add(new Availability(henrikH, 0L, 5, masterProjectClass));
supervisorList.add(henrikH);
Employee davidH = createEmployee("David", "Hallberg", languages);
supervisorAvailability.add(new Availability(davidH, 1L, 4, bachelorProjectClass));
//supervisorAvailability.add(new Availability(davidH, 1L, 5, masterProjectClass));
ProjectIdea secondBachelorIdea = createProjectIdea(bachelorProjectClass, applicationPeriod);
projectIdeaList.clear();
projectIdeaList.add(secondBachelorIdea); // David Hallberg is preferred supervisor for this project idea
@ -678,4 +679,34 @@ public class TestGreedyMatchingAlgorithm {
assertTrue(result.matches.get(2).getProjectIdea().equals(masterIdea));
}
@Test
@Rollback
@Transactional
/* Test 5
* =============================================================================================
* This test verifies that bachelor project ideas will never be matched with
* a master level Availability object, as opposed to previous practice.
* */
public void testAvailabilityLevelMatching() {
Employee davidH = createEmployee("David", "Hallberg", languages);
supervisorAvailability.add(new Availability(davidH, 1L, 1, bachelorProjectClass));
supervisorAvailability.add(new Availability(davidH, 0L, 1, masterProjectClass));
Employee henrikH = createEmployee("Henrik", "Hansson", languages);
supervisorAvailability.add(new Availability(henrikH, 0L, 1, bachelorProjectClass));
supervisorAvailability.add(new Availability(henrikH, 0L, 1, masterProjectClass));
ProjectIdea bachelorIdea = createProjectIdea(bachelorProjectClass, applicationPeriod);
unmatchedProjectIdeas.add(bachelorIdea);
Keyword båtar = createKeyword(keywordTypeWord, "båtar", false);
davidH.getKeywords().getAll().add(båtar);
bachelorIdea.getKeywords().getAll().add(båtar);
Result result = new GreedyMatchingAlgorithm().match(supervisorAvailability, unmatchedProjectIdeas, weights);
assertTrue(result.matches.get(0).getSupervisor().equals(henrikH));
assertTrue(result.matches.get(0).getProjectIdea().equals(bachelorIdea));
}
}