diff --git a/src/main/java/cz/cvut/kbss/analysis/dao/BaseDao.java b/src/main/java/cz/cvut/kbss/analysis/dao/BaseDao.java index d5628b7..f633e3a 100755 --- a/src/main/java/cz/cvut/kbss/analysis/dao/BaseDao.java +++ b/src/main/java/cz/cvut/kbss/analysis/dao/BaseDao.java @@ -58,6 +58,13 @@ public URI getContext(T entity){ return entity.getContext(); } + public void deleteContext(URI context){ + Objects.requireNonNull(context); + em.createNativeQuery("DELETE {GRAPH ?context { ?s ?p ?o}} WHERE {GRAPH ?context { ?s ?p ?o}}") + .setParameter("context", context) + .executeUpdate(); + } + public URI getContext(URI uri){ List contexts = em.createNativeQuery("SELECT DISTINCT ?context {GRAPH ?context {?uri a ?type}}", URI.class) .setParameter("uri", uri) diff --git a/src/main/java/cz/cvut/kbss/analysis/dao/GenericDao.java b/src/main/java/cz/cvut/kbss/analysis/dao/GenericDao.java index 4f0de31..05b62e4 100755 --- a/src/main/java/cz/cvut/kbss/analysis/dao/GenericDao.java +++ b/src/main/java/cz/cvut/kbss/analysis/dao/GenericDao.java @@ -114,4 +114,17 @@ public interface GenericDao { * @return {@literal true} if entity exists, {@literal false} otherwise */ boolean existsWithPredicate(String predicate, String value); + + /** + * Find the context of the entityUri + * @param entityUri + * @return + */ + URI getContext(URI entityUri); + + /** + * Deletes all triples in provided context + * @param context + */ + void deleteContext(URI context); } diff --git a/src/main/java/cz/cvut/kbss/analysis/service/ComplexManagedEntityRepositoryService.java b/src/main/java/cz/cvut/kbss/analysis/service/ComplexManagedEntityRepositoryService.java index 5b17337..4867a5a 100644 --- a/src/main/java/cz/cvut/kbss/analysis/service/ComplexManagedEntityRepositoryService.java +++ b/src/main/java/cz/cvut/kbss/analysis/service/ComplexManagedEntityRepositoryService.java @@ -10,6 +10,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.Validator; +import java.net.URI; import java.util.Arrays; import java.util.Date; import java.util.List; @@ -46,6 +47,13 @@ protected void prePersist(@NonNull T instance) { } + @Transactional + @Override + public void remove(@NonNull URI instanceUri) { + URI context = getPrimaryDao().getContext(instanceUri); + getPrimaryDao().deleteContext(context); + } + @Transactional(readOnly = true) public List findAllSummaries(){ return ((ManagedEntityDao)getPrimaryDao()).findAllSummaries().stream().map(this::postLoad).toList();