added null check if supervisor cant be retrieved from daisy identifier and small unit test for keyword dao

This commit is contained in:
Emil Siverhall 2012-02-14 22:02:00 +01:00
parent 147fc92f25
commit 9cf5853a6b
2 changed files with 19 additions and 3 deletions
src
main/java/se/su/dsv/scipro/io/facade
test/java/se/su/dsv/scipro/match/dao

@ -417,6 +417,7 @@ public class ImporterFacade {
public void addUnitToSupervisor(PersonDTO supervisorDTO, UnitDTO unitDTO) {
User supervisorUser = userDao.getUserByIdentifier(supervisorDTO.id);
Employee supervisor = supervisorDao.getFrom(supervisorUser);
if(supervisor!=null){
List<Keyword> currentUnits = supervisor.getKeywords().getFiltered(keywordTypeDao.findByType(KeywordTypeDao.TYPE.UNIT));
//If supervisor is already assigned to a unit, remove to make sure only the latest unit is being added since we only allow one unit in Scipro.
//Supervisor is not going to be allowed to have more than one unit in the future, but some have two in Daisy at the moment.
@ -425,8 +426,11 @@ public class ImporterFacade {
supervisor.getKeywords().getAll().removeAll(currentUnits);
}
Keyword unitToAdd = keywordDao.getKeywordByIdentifierAndType(unitDTO.id, keywordTypeDao.findByType(KeywordTypeDao.TYPE.UNIT));
logger.info("Adding unit: " + unitToAdd.getKeyword() + " to supervisor: " + supervisor.getUser().getFullName());
logger.debug("Adding unit: " + unitToAdd.getKeyword() + " to supervisor: " + supervisor.getUser().getFullName());
supervisor.getKeywords().getAll().add(unitToAdd);
} else {
logger.debug("Can't find supervisor: "+ supervisorDTO.id);
}
}
private void mergeLinkedResearchAreas(final User user, final Set<ResearchAreaDTO> areas){
@ -466,7 +470,7 @@ public class ImporterFacade {
//Delete areas that not exist on remote
for (Keyword areaToRemove : areasToRemove){
keywordDao.delete(areaToRemove);
logger.info("Deleted research area: " + areaToRemove.getKeyword() + " since it has been removed from remote system");
logger.debug("Deleted research area: " + areaToRemove.getKeyword() + " since it has been removed from remote system");
}
//Add areas to database
for(final ResearchAreaDTO researchAreaDTO : remoteAreas){
@ -504,7 +508,7 @@ public class ImporterFacade {
//Delete units that not exist on remote
for (Keyword unitToRemove : unitsToRemove){
keywordDao.delete(unitToRemove);
logger.info("Deleted unit: " + unitToRemove.getKeyword() + " since it has been removed from remote system");
logger.debug("Deleted unit: " + unitToRemove.getKeyword() + " since it has been removed from remote system");
}
//Add units to database
for(final UnitDTO unitDTO : remoteUnits){

@ -56,6 +56,7 @@ public class TestKeywordDao {
keyword2 = keywordDao.save(keyword2);
keyword3 = new Keyword("Key 3", other);
keyword3.setIdentifier(1L);
keyword3 = keywordDao.save(keyword3);
target = keywordDao;
@ -83,4 +84,15 @@ public class TestKeywordDao {
}
@Test
@Transactional
@Rollback
public void testShouldOnlyGetKeywordByCorrectIdentifierAndType() {
Keyword nullKey = target.getKeywordByIdentifierAndType(2L, other);
Assert.assertNull(nullKey);
Keyword correctKey = target.getKeywordByIdentifierAndType(1L, other);
Assert.assertEquals(keyword3, correctKey);
}
}