Skip to content

Method: removeRemovesObjectPropertyAssertionFromTargetContext()

1: /**
2: * Copyright (C) 2020 Czech Technical University in Prague
3: *
4: * This program is free software: you can redistribute it and/or modify it under
5: * the terms of the GNU General Public License as published by the Free Software
6: * Foundation, either version 3 of the License, or (at your option) any
7: * later version.
8: *
9: * This program is distributed in the hope that it will be useful, but WITHOUT
10: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11: * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
12: * details. You should have received a copy of the GNU General Public License
13: * along with this program. If not, see <http://www.gnu.org/licenses/>.
14: */
15: package cz.cvut.kbss.jopa.test.runner;
16:
17: import cz.cvut.kbss.jopa.model.descriptors.Descriptor;
18: import cz.cvut.kbss.jopa.model.descriptors.EntityDescriptor;
19: import cz.cvut.kbss.jopa.test.*;
20: import cz.cvut.kbss.jopa.test.environment.DataAccessor;
21: import cz.cvut.kbss.jopa.test.environment.PersistenceFactory;
22: import org.junit.jupiter.api.Test;
23: import org.slf4j.Logger;
24:
25: import java.net.URI;
26:
27: import static org.junit.jupiter.api.Assertions.*;
28:
29: public abstract class DeleteOperationsMultiContextRunner extends BaseRunner {
30:
31: public DeleteOperationsMultiContextRunner(Logger logger, PersistenceFactory persistenceFactory,
32: DataAccessor dataAccessor) {
33: super(logger, persistenceFactory, dataAccessor);
34: }
35:
36: @Test
37: void testRemoveFromContext() {
38: this.em = getEntityManager("MultiRemoveFromContext", false);
39: final Descriptor aDescriptor = new EntityDescriptor(CONTEXT_ONE);
40: em.getTransaction().begin();
41: em.persist(entityA, aDescriptor);
42: em.getTransaction().commit();
43:
44: final OWLClassA a = findRequired(OWLClassA.class, entityA.getUri(), aDescriptor);
45: em.getTransaction().begin();
46: em.remove(a);
47: assertFalse(em.contains(a));
48: em.getTransaction().commit();
49:
50: final OWLClassA res = em.find(OWLClassA.class, entityA.getUri(), aDescriptor);
51: assertNull(res);
52: }
53:
54: @Test
55: void testRemoveFromOneKeepInTheOther() {
56: this.em = getEntityManager("MultiRemoveFromOneContextAndKeepInTheOther", false);
57: final Descriptor aDescriptorOne = new EntityDescriptor(CONTEXT_ONE);
58: final Descriptor aDescriptorTwo = new EntityDescriptor(CONTEXT_TWO);
59: em.getTransaction().begin();
60: em.persist(entityA, aDescriptorOne);
61: em.getTransaction().commit();
62: em.getTransaction().begin();
63: em.persist(entityA, aDescriptorTwo);
64: em.getTransaction().commit();
65:
66: findRequired(OWLClassA.class, entityA.getUri(), aDescriptorOne);
67: final OWLClassA aTwo = findRequired(OWLClassA.class, entityA.getUri(), aDescriptorTwo);
68: em.getTransaction().begin();
69: em.remove(aTwo);
70: em.getTransaction().commit();
71:
72: findRequired(OWLClassA.class, entityA.getUri(), aDescriptorOne);
73: final OWLClassA resTwo = em.find(OWLClassA.class, entityA.getUri(), aDescriptorTwo);
74: assertNull(resTwo);
75: }
76:
77: @Test
78: void testRemoveObjectPropertyFromContext() throws Exception {
79: this.em = getEntityManager("MultiRemoveObjectPropertyFromContext", false);
80: final Descriptor dDescriptor = new EntityDescriptor(CONTEXT_ONE);
81: final Descriptor aDescriptor = new EntityDescriptor(CONTEXT_TWO);
82: dDescriptor.addAttributeDescriptor(OWLClassD.getOwlClassAField(), aDescriptor);
83: em.getTransaction().begin();
84: em.persist(entityD, dDescriptor);
85: em.persist(entityA, aDescriptor);
86: em.getTransaction().commit();
87:
88: final OWLClassD d = findRequired(OWLClassD.class, entityD.getUri(), dDescriptor);
89: final OWLClassA a = d.getOwlClassA();
90: assertNotNull(a);
91: d.setOwlClassA(null);
92: em.getTransaction().begin();
93: em.remove(a);
94: em.getTransaction().commit();
95:
96: final OWLClassD resD = findRequired(OWLClassD.class, entityD.getUri(), dDescriptor);
97: assertNull(resD.getOwlClassA());
98: final OWLClassA resA = em.find(OWLClassA.class, entityA.getUri(), aDescriptor);
99: assertNull(resA);
100: }
101:
102: @Test
103: void testRemoveCascadeOverContexts() throws Exception {
104: this.em = getEntityManager("MultiRemoveCascadeOverContexts", false);
105: final Descriptor gDescriptor = new EntityDescriptor();
106: final Descriptor hDescriptor = new EntityDescriptor(CONTEXT_ONE);
107: final Descriptor aDescriptor = new EntityDescriptor(CONTEXT_TWO);
108: hDescriptor.addAttributeDescriptor(OWLClassH.class.getDeclaredField("owlClassA"), aDescriptor);
109: gDescriptor.addAttributeDescriptor(OWLClassG.class.getDeclaredField("owlClassH"), hDescriptor);
110: em.getTransaction().begin();
111: em.persist(entityG, gDescriptor);
112: em.getTransaction().commit();
113:
114: final OWLClassA a = findRequired(OWLClassA.class, entityA.getUri(), aDescriptor);
115: final OWLClassH h = findRequired(OWLClassH.class, entityH.getUri(), hDescriptor);
116: assertSame(a, h.getOwlClassA());
117: final OWLClassG g = findRequired(OWLClassG.class, entityG.getUri(), gDescriptor);
118: assertSame(h, g.getOwlClassH());
119: em.getTransaction().begin();
120: em.remove(g);
121: em.getTransaction().commit();
122:
123: assertNull(em.find(OWLClassA.class, entityA.getUri(), aDescriptor));
124: assertNull(em.find(OWLClassH.class, entityH.getUri(), hDescriptor));
125: assertNull(em.find(OWLClassG.class, entityG.getUri(), gDescriptor));
126: }
127:
128: @Test
129: void removeRemovesObjectPropertyAssertionFromTargetContext() throws Exception {
130: this.em = getEntityManager("removeRemovesObjectPropertyAssertionFromTargetContext", false);
131: final Descriptor dDescriptor = new EntityDescriptor(CONTEXT_ONE, false);
132: final Descriptor aDescriptor = new EntityDescriptor(CONTEXT_TWO);
133: dDescriptor.addAttributeDescriptor(OWLClassD.getOwlClassAField(), aDescriptor);
134: transactional(() -> {
135: em.persist(entityD, dDescriptor);
136: em.persist(entityA, aDescriptor);
137: });
138:
139: transactional(() -> {
140: final OWLClassD d = findRequired(OWLClassD.class, entityD.getUri(), dDescriptor);
141: d.setOwlClassA(null);
142: });
143:
144: assertFalse(em.createNativeQuery("ASK { ?s ?p ?o . }", Boolean.class)
145: .setParameter("p", entityD.getUri())
146: .setParameter("p", URI.create(Vocabulary.P_HAS_OWL_CLASS_A))
147: .setParameter("o", entityA.getUri())
148: .getSingleResult());
149: assertNotNull(em.find(OWLClassA.class, entityA.getUri(), aDescriptor));
150: }
151: }