1684 Sync all research areas

This commit is contained in:
Andreas Svanberg 2022-03-31 12:15:08 +02:00
parent 958aede17b
commit 71ab3ab4eb
9 changed files with 58 additions and 7 deletions
core/src
daisy-integration/src
main/java/se/su/dsv/scipro/integration/daisy/workers
test/java/se/su/dsv/scipro/integration/daisy/workers

@ -71,4 +71,6 @@ public interface DaisyAPI {
List<CourseRegistration> getCourseRegistrationsForStudent(int studentId);
List<Employee> listEmployees(int departmentId);
OrganisationalUnit orgunit(int unitId);
}

@ -410,6 +410,16 @@ public class DaisyAPIImpl implements DaisyAPI {
.get(new GenericType<>(){});
}
@Override
public OrganisationalUnit orgunit(final int unitId) {
return () -> target()
.path("orgunit")
.path(Integer.toString(unitId))
.path("researchAreas")
.request(MediaType.APPLICATION_JSON_TYPE)
.get(new GenericType<>(){});
}
private WebTarget program() {
return target()
.path(PROGRAM);

@ -0,0 +1,9 @@
package se.su.dsv.scipro.daisyExternal.http;
import se.su.dsv.scipro.io.dto.ResearchArea;
import java.util.List;
public interface OrganisationalUnit {
List<ResearchArea> getResearchAreas();
}

@ -168,7 +168,7 @@ public class ImporterTransactionsImpl implements ImporterTransactions {
.collect(Collectors.toList());
for (ResearchArea daisyResearchArea : researchAreas) {
se.su.dsv.scipro.system.ResearchArea researchArea =
researchAreaService.updateExternalResearchArea(daisyResearchArea.getId(), daisyResearchArea.getNameEn());
researchAreaService.updateExternalResearchArea(daisyResearchArea.getId(), daisyResearchArea.getNameEn(), daisyResearchArea.isActive());
employee.addResearchArea(researchArea);
}
employee.getResearchAreas()

@ -4,5 +4,5 @@ import java.util.List;
public interface ResearchAreaService extends GenericService<ResearchArea, Long> {
List<ResearchArea> findNotDeleted();
ResearchArea updateExternalResearchArea(Long id, String name);
ResearchArea updateExternalResearchArea(Long id, String name, boolean active);
}

@ -14,7 +14,7 @@ public class ResearchAreaServiceImpl extends AbstractServiceImpl<ResearchArea,Lo
}
@Override
public ResearchArea updateExternalResearchArea(Long identifier, String name) {
public ResearchArea updateExternalResearchArea(Long identifier, String name, final boolean active) {
ResearchArea ra = new ResearchArea();
if (identifier != null) {
ResearchArea existing = findOne(QResearchArea.researchArea.identifier.eq(identifier));
@ -25,6 +25,7 @@ public class ResearchAreaServiceImpl extends AbstractServiceImpl<ResearchArea,Lo
}
}
ra.setTitle(name);
ra.setDeleted(!active);
return save(ra);
}

@ -21,7 +21,7 @@ public class ResearchAreaServiceImplIntegrationTest extends IntegrationTest {
Long identifier = 1L;
ResearchArea researchArea = createResearchArea(identifier, "Some title");
ResearchArea created = researchAreaService.updateExternalResearchArea(researchArea.getIdentifier(), researchArea.getTitle());
ResearchArea created = researchAreaService.updateExternalResearchArea(researchArea.getIdentifier(), researchArea.getTitle(), !researchArea.isDeleted());
assertEquals(1, researchAreaService.count());
assertNotNull(created);
assertNotNull(created.getId());
@ -35,7 +35,7 @@ public class ResearchAreaServiceImplIntegrationTest extends IntegrationTest {
String title = "New title";
ResearchArea updated = researchAreaService.updateExternalResearchArea(old.getIdentifier(), title);
ResearchArea updated = researchAreaService.updateExternalResearchArea(old.getIdentifier(), title, !old.isDeleted());
assertEquals(title, updated.getTitle());
assertEquals(1, researchAreaService.count());

@ -12,9 +12,11 @@ import se.su.dsv.scipro.daisyExternal.http.Semester;
import se.su.dsv.scipro.io.dto.Person;
import se.su.dsv.scipro.io.dto.Program;
import se.su.dsv.scipro.io.dto.ProgramAdmission;
import se.su.dsv.scipro.io.dto.ResearchArea;
import se.su.dsv.scipro.io.dto.Thesis;
import se.su.dsv.scipro.match.ProgramService;
import se.su.dsv.scipro.system.MergeService;
import se.su.dsv.scipro.system.ResearchAreaService;
import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.system.UserService;
import se.su.dsv.scipro.system.Username;
@ -40,6 +42,7 @@ public class UserImportWorker extends AbstractWorker {
private final MergeService mergeService;
private final ProgramService programService;
private final Provider<EntityManager> entityManagerProvider;
private final ResearchAreaService researchAreaService;
@Inject
public UserImportWorker(DaisyAPI daisyAPI,
@ -49,7 +52,9 @@ public class UserImportWorker extends AbstractWorker {
final MergeService mergeService,
UserService userService,
ProgramService programService,
Provider<EntityManager> entityManagerProvider) {
Provider<EntityManager> entityManagerProvider,
final ResearchAreaService researchAreaService)
{
this.daisyAPI = daisyAPI;
this.importerTransactions = importerTransactions;
this.externalImporter = externalImporter;
@ -58,6 +63,7 @@ public class UserImportWorker extends AbstractWorker {
this.mergeService = mergeService;
this.programService = programService;
this.entityManagerProvider = entityManagerProvider;
this.researchAreaService = researchAreaService;
}
@Override
@ -67,6 +73,7 @@ public class UserImportWorker extends AbstractWorker {
LOGGER.info("Starting execution for scheduled remote user import of all remote supervisors");
final Map<Integer, Program> programCache = new HashMap<>();
importResearchAreas();
importUserDetails(programCache);
importSupervisors(programCache);
importSupervisorUnits();
@ -81,6 +88,15 @@ public class UserImportWorker extends AbstractWorker {
executionTimeSecs % 60);
}
private void importResearchAreas() {
List<ResearchArea> daisyResearchAreas = daisyAPI
.orgunit(DSV)
.getResearchAreas();
for (ResearchArea daisyResearchArea : daisyResearchAreas) {
researchAreaService.updateExternalResearchArea(daisyResearchArea.getId(), daisyResearchArea.getName(), daisyResearchArea.isActive());
}
}
private void importUserDetails(final Map<Integer, Program> programCache) {
for (final User user : userService.findAll()) {
if (user.getIdentifier() != null) {

@ -13,6 +13,7 @@ import se.su.dsv.scipro.io.dto.Person;
import se.su.dsv.scipro.io.dto.Thesis;
import se.su.dsv.scipro.match.ProgramService;
import se.su.dsv.scipro.system.MergeService;
import se.su.dsv.scipro.system.ResearchAreaService;
import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.system.UserService;
@ -39,13 +40,25 @@ public class UserImportWorkerTest {
private ProgramService programService;
@Mock
private EntityManager entityManager;
@Mock
private ResearchAreaService researchAreaService;
private UserImportWorker worker;
@BeforeEach
public void setUp() {
when(userService.findAll()).thenReturn(Collections.emptyList());
worker = new UserImportWorker(daisyAPI, importerTransactions, externalImporter, NoopTracerFactory.create(), mergeService, userService, programService, () -> entityManager);
when(daisyAPI.orgunit(anyInt())).thenReturn(Collections::emptyList);
worker = new UserImportWorker(
daisyAPI,
importerTransactions,
externalImporter,
NoopTracerFactory.create(),
mergeService,
userService,
programService,
() -> entityManager,
researchAreaService);
}
@Test