From 1fe6ce2ceeb54b4e7f3a108a10cd34c018a11e85 Mon Sep 17 00:00:00 2001 From: Bogdan Kostov <kostobog@fel.cvut.cz> Date: Fri, 4 Oct 2024 17:59:04 +0200 Subject: [PATCH 1/2] [Fix partially kbss-cvut/record-manager-ui#207] publish records - fix update phase of published records --- src/main/java/cz/cvut/kbss/study/model/PatientRecord.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/cz/cvut/kbss/study/model/PatientRecord.java b/src/main/java/cz/cvut/kbss/study/model/PatientRecord.java index 52d37dd5..3184e3d9 100644 --- a/src/main/java/cz/cvut/kbss/study/model/PatientRecord.java +++ b/src/main/java/cz/cvut/kbss/study/model/PatientRecord.java @@ -56,7 +56,7 @@ public class PatientRecord implements Serializable, HasOwlKey, HasUri { private Question question; @Enumerated(EnumType.OBJECT_ONE_OF) - @OWLObjectProperty(iri = Vocabulary.s_p_has_phase) + @OWLObjectProperty(iri = Vocabulary.s_p_has_phase, cascade = {CascadeType.MERGE}, fetch = FetchType.EAGER) private RecordPhase phase; @Override From 509db121d219a7abd6949a930612e2cf68a1d5bc Mon Sep 17 00:00:00 2001 From: Bogdan Kostov <kostobog@fel.cvut.cz> Date: Fri, 4 Oct 2024 19:10:49 +0200 Subject: [PATCH 2/2] [Fix partially kbss-cvut/record-manager-ui#207] publih records - properly update published record phase so that cache is cleared --- .../kbss/study/persistence/dao/PatientRecordDao.java | 9 +++++++++ .../repository/RepositoryPatientRecordService.java | 5 +---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/cz/cvut/kbss/study/persistence/dao/PatientRecordDao.java b/src/main/java/cz/cvut/kbss/study/persistence/dao/PatientRecordDao.java index a61e42e5..de50e67c 100644 --- a/src/main/java/cz/cvut/kbss/study/persistence/dao/PatientRecordDao.java +++ b/src/main/java/cz/cvut/kbss/study/persistence/dao/PatientRecordDao.java @@ -113,6 +113,15 @@ public void update(PatientRecord entity) { em.getEntityManagerFactory().getCache().evict(PatientRecordDto.class, entity.getUri(), null); } + public void updateStatus(URI entityUri, RecordPhase targetPhase){ + PatientRecord entity = find(entityUri); + if(entity == null) + return; + entity.setPhase(targetPhase); + em.getEntityManagerFactory().getCache().evict(PatientRecord.class, entity.getUri(), null); + em.getEntityManagerFactory().getCache().evict(PatientRecordDto.class, entity.getUri(), null); + } + public List<PatientRecordDto> findAllRecords() { return em.createNativeQuery("SELECT ?x WHERE { ?x a ?type . }", PatientRecordDto.class) .setParameter("type", typeUri) diff --git a/src/main/java/cz/cvut/kbss/study/service/repository/RepositoryPatientRecordService.java b/src/main/java/cz/cvut/kbss/study/service/repository/RepositoryPatientRecordService.java index 0efdba85..896c5c4a 100644 --- a/src/main/java/cz/cvut/kbss/study/service/repository/RepositoryPatientRecordService.java +++ b/src/main/java/cz/cvut/kbss/study/service/repository/RepositoryPatientRecordService.java @@ -123,10 +123,7 @@ private void setImportedRecordProvenance(User currentUser, Date now, Optional<Re @Override public void setPhase(Set<String> recordUris, RecordPhase targetPhase){ for(String uri : recordUris){ - PatientRecord record = find(URI.create(uri)); - if (record == null) - continue; - record.setPhase(targetPhase); + patientRecordDao.updateStatus(URI.create(uri), targetPhase); } }