2528 Exkluderade avslutade och avbrutna projekt från synkningen som görs inom varje handledare. Verkar onödigt och tog tid. Refaktoriseringar enligt intellij. Harmoniserade @Transactional på de publika metoderna och tog bort en från en privat metod. Självaste problemet med att jobbets workerdata inte sparas kvarstår och beror på något med transaktionshanteringen i metoden UserImportWorker.importPotentialNewStudentsAndUpdatePrograms. Det är em.refresh(wd) på rad 88 i AbstractWorker som kastar en Exception.

This commit is contained in:
nikos dimitrakas 2022-03-07 11:16:40 +01:00
parent 1ad4325530
commit 0972c592ce
3 changed files with 15 additions and 16 deletions
core/src/main/java/se/su/dsv/scipro/daisyExternal/impl
daisy-integration/src/main/java/se/su/dsv/scipro/integration/daisy/workers

@ -113,11 +113,8 @@ public class ExternalImporterDaisyImpl implements ExternalImporter {
private void removeUnitFromSupervisorsNotInSet(Set<Person> supervisorSet) {
final Set<User> supervisorsWithRemoteUnit = new HashSet<>();
final Set<User> currentSupervisors = new HashSet<>();
for (User supervisor : userService.findAll()) {
currentSupervisors.add(supervisor);
}
final Set<User> currentSupervisors = new HashSet<>(userService.findAll());
//Create SciPro Employees from DTOs.
for (Person supervisorDTO : supervisorSet) {

@ -5,14 +5,14 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import se.su.dsv.scipro.daisyExternal.ImporterTransactions;
import se.su.dsv.scipro.daisyExternal.http.DaisyAPI;
import se.su.dsv.scipro.io.dto.*;
import se.su.dsv.scipro.io.dto.ResearchArea;
import se.su.dsv.scipro.io.dto.*;
import se.su.dsv.scipro.match.ProgramService;
import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.project.ProjectService;
import se.su.dsv.scipro.security.auth.roles.Roles;
import se.su.dsv.scipro.system.*;
import se.su.dsv.scipro.system.Program;
import se.su.dsv.scipro.system.*;
import se.su.dsv.scipro.util.Pair;
import javax.inject.Inject;
@ -22,7 +22,6 @@ import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Named
public class ImporterTransactionsImpl implements ImporterTransactions {
@ -53,6 +52,7 @@ public class ImporterTransactionsImpl implements ImporterTransactions {
}
@Override
@Transactional
public User importPerson(Person person, final Map<Integer, se.su.dsv.scipro.io.dto.Program> programCache) {
LOGGER.info("Importing person: {} {} ({})", person.getFirstName(), person.getLastName(), person.getId());
User user = updatePersonData(person.getId(), person);
@ -124,8 +124,8 @@ public class ImporterTransactionsImpl implements ImporterTransactions {
return user;
}
@Transactional
@Override
@Transactional
public User importSupervisor(Person person, final Map<Integer, se.su.dsv.scipro.io.dto.Program> programCache) {
User user = importPerson(person, programCache);
importResearchAreasAndMakeSupervisor(person, user);
@ -163,7 +163,6 @@ public class ImporterTransactionsImpl implements ImporterTransactions {
}
}
@Transactional
private void importResearchAreasAndMakeSupervisor(Person person, User employee) {
List<ResearchArea> researchAreas = client.getResearchAreas(person.getId())
.stream()
@ -214,6 +213,7 @@ public class ImporterTransactionsImpl implements ImporterTransactions {
}
@Override
@Transactional
public void importProject(Thesis thesis) {
if (thesis.getLevel() == EducationalLevel.FIRST_CYCLE || thesis.getLevel() == EducationalLevel.SECOND_CYCLE){
LOGGER.info("Importing project: {} ({})", thesis.getTitle(), thesis.getId());

@ -159,13 +159,15 @@ public class UserImportWorker extends AbstractWorker {
private void importAllProjectsForSupervisor(Person supervisor) {
Set<Thesis> projects = daisyAPI.getProjects(supervisor.getId());
for (Thesis project : projects) {
try {
importProject(project);
} catch (RuntimeException e) {
LOGGER.error("Failed to import project: {} ({})",
project.getTitle(),
project.getId(),
e);
if (!project.isFinished() && !project.isAborted()) {
try {
importProject(project);
} catch (RuntimeException e) {
LOGGER.error("Failed to import project: {} ({})",
project.getTitle(),
project.getId(),
e);
}
}
}
}