diff --git a/core/src/main/java/se/su/dsv/scipro/daisyExternal/http/DaisyAPI.java b/core/src/main/java/se/su/dsv/scipro/daisyExternal/http/DaisyAPI.java index a69b109f06..8c7fdf7b79 100644 --- a/core/src/main/java/se/su/dsv/scipro/daisyExternal/http/DaisyAPI.java +++ b/core/src/main/java/se/su/dsv/scipro/daisyExternal/http/DaisyAPI.java @@ -30,7 +30,7 @@ public interface DaisyAPI { Response addContributor(Integer projectId, ProjectParticipant contributor); - void deleteThesisPerson(Integer projectId, Integer personId); + Response deleteThesisPerson(Integer projectId, Integer personId); Response createProject(ThesisToBeCreated project); diff --git a/core/src/main/java/se/su/dsv/scipro/daisyExternal/http/DaisyAPIImpl.java b/core/src/main/java/se/su/dsv/scipro/daisyExternal/http/DaisyAPIImpl.java index 7c2f6a7142..393e5e66ed 100755 --- a/core/src/main/java/se/su/dsv/scipro/daisyExternal/http/DaisyAPIImpl.java +++ b/core/src/main/java/se/su/dsv/scipro/daisyExternal/http/DaisyAPIImpl.java @@ -157,8 +157,8 @@ public class DaisyAPIImpl implements DaisyAPI { } @Override - public void deleteThesisPerson(Integer projectId, Integer personId) { - thesis() + public Response deleteThesisPerson(Integer projectId, Integer personId) { + return thesis() .path(String.valueOf(projectId)) .path(PERSON) .path(String.valueOf(personId)) diff --git a/daisy-integration/src/main/java/se/su/dsv/scipro/integration/daisy/workers/ProjectExporter.java b/daisy-integration/src/main/java/se/su/dsv/scipro/integration/daisy/workers/ProjectExporter.java index 063b799079..69ba8164df 100644 --- a/daisy-integration/src/main/java/se/su/dsv/scipro/integration/daisy/workers/ProjectExporter.java +++ b/daisy-integration/src/main/java/se/su/dsv/scipro/integration/daisy/workers/ProjectExporter.java @@ -23,6 +23,7 @@ import se.su.dsv.scipro.workerthreads.AbstractWorker; import jakarta.inject.Inject; import jakarta.inject.Named; +import jakarta.ws.rs.core.Response; import java.time.Instant; import java.time.Period; import java.util.Calendar; @@ -247,7 +248,20 @@ public class ProjectExporter extends AbstractWorker { if (contributor.getPerson().getId().equals(project.getHeadSupervisor().getIdentifier())) { add = false; } else { - daisyAPI.deleteThesisPerson(project.getIdentifier(), contributor.getPerson().getId()); + Response response = daisyAPI.deleteThesisPerson(project.getIdentifier(), contributor.getPerson().getId()); + if (response.getStatusInfo().getFamily() != Response.Status.Family.SUCCESSFUL) { + LOG.warn("Failed to delete supervisor from project: {} (id: {} / {})", + project.getTitle(), + project.getId(), + project.getIdentifier()); + + // Card 3413 + // Do not attempt to add the new supervisor if the old one is still there to prevent + // the project from having multiple supervisors. + // Hopefully Daisy API will soon have support for the function "change supervisor" + // rather than just INSERT and DELETE rows in a table. + add = false; + } } } }