2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2019-2021, 2023-2024 Nordix Foundation.
4 * Modifications Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved.
5 * Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
19 * SPDX-License-Identifier: Apache-2.0
20 * ============LICENSE_END=========================================================
23 package org.onap.policy.models.dao;
25 import static org.assertj.core.api.Assertions.assertThat;
26 import static org.assertj.core.api.Assertions.assertThatCode;
27 import static org.assertj.core.api.Assertions.assertThatThrownBy;
28 import static org.junit.Assert.assertEquals;
29 import static org.junit.Assert.assertNotNull;
30 import static org.junit.Assert.assertNull;
32 import java.time.Instant;
33 import java.util.ArrayList;
34 import java.util.HashMap;
35 import java.util.List;
37 import java.util.Properties;
39 import java.util.TreeSet;
40 import java.util.UUID;
41 import org.junit.After;
42 import org.junit.Test;
43 import org.onap.policy.models.base.PfConceptKey;
44 import org.onap.policy.models.base.PfModelException;
45 import org.onap.policy.models.base.PfReferenceKey;
46 import org.onap.policy.models.base.PfReferenceTimestampKey;
47 import org.onap.policy.models.base.PfTimestampKey;
48 import org.onap.policy.models.dao.impl.DefaultPfDao;
53 public class EntityTest {
54 private static final String DESCRIPTION2 = "key description 2";
55 private static final String DESCRIPTION1 = "key description 1";
56 private static final String DESCRIPTION0 = "key description 0";
57 private static final String ENTITY0 = "Entity0";
58 private static final String UUID2 = "00000000-0000-0000-0000-000000000002";
59 private static final String UUID1 = "00000000-0000-0000-0000-000000000001";
60 private static final String UUID0 = "00000000-0000-0000-0000-000000000000";
61 private static final String VERSION003 = "0.0.3";
62 private static final String VERSION002 = "0.0.2";
63 private static final String VERSION001 = "0.0.1";
64 private static final Instant TIMESTAMP0 = Instant.ofEpochSecond(1613494293);
65 private static final Instant TIMESTAMP1 = Instant.ofEpochSecond(1613494293).plusSeconds(55);
66 private static final Instant TIMESTAMP2 = Instant.ofEpochSecond(1613494293).plusSeconds(90);
74 public void tearDown() {
82 public void testEntityTestSanity() throws PfModelException {
83 final DaoParameters daoParameters = new DaoParameters();
85 Properties jdbcProperties = new Properties();
87 jdbcProperties.setProperty("jakarta.persistence.jdbc.driver", "org.h2.Driver");
88 jdbcProperties.setProperty("jakarta.persistence.jdbc.url", "jdbc:h2:mem:EntityTest");
89 jdbcProperties.setProperty("jakarta.persistence.jdbc.user", "sa");
90 jdbcProperties.setProperty("jakarta.persistence.jdbc.password", "");
93 daoParameters.setJdbcProperties(jdbcProperties);
95 pfDao = new PfDaoFactory().createPfDao(daoParameters);
97 assertThatThrownBy(() -> pfDao.init(null)).hasMessage("Policy Framework persistence unit parameter not set");
99 assertThatThrownBy(() -> pfDao.init(daoParameters))
100 .hasMessage("Policy Framework persistence unit parameter not set");
102 daoParameters.setPluginClass("somewhere.over.the.rainbow");
103 daoParameters.setPersistenceUnit("Dorothy");
105 assertThatThrownBy(() -> pfDao.init(daoParameters))
106 .hasMessage("Creation of Policy Framework persistence unit \"Dorothy\" failed");
108 assertThatThrownBy(() -> pfDao.create(new PfConceptKey()))
109 .hasMessage("Policy Framework DAO has not been initialized");
113 public void testEntityTestAllOpsJpa() throws PfModelException {
115 final DaoParameters daoParameters = new DaoParameters();
116 daoParameters.setPluginClass(DefaultPfDao.class.getName());
117 daoParameters.setPersistenceUnit("DaoTest");
119 Properties jdbcProperties = new Properties();
120 jdbcProperties.setProperty("jakarta.persistence.jdbc.driver", "org.h2.Driver");
121 jdbcProperties.setProperty("jakarta.persistence.jdbc.url", "jdbc:h2:mem:EntityTest");
122 jdbcProperties.setProperty("jakarta.persistence.jdbc.user", "sa");
123 jdbcProperties.setProperty("jakarta.persistence.jdbc.password", "");
125 daoParameters.setJdbcProperties(jdbcProperties);
127 pfDao = new PfDaoFactory().createPfDao(daoParameters);
128 pfDao.init(daoParameters);
132 testReferenceTimestamp();
136 testgetFilteredOps();
138 testgetFilteredOps3();
142 public void testEntityTestBadVals() throws PfModelException {
143 final DaoParameters daoParameters = new DaoParameters();
144 daoParameters.setPluginClass(DefaultPfDao.class.getName());
145 daoParameters.setPersistenceUnit("DaoTest");
147 Properties jdbcProperties = new Properties();
148 jdbcProperties.setProperty("jakarta.persistence.jdbc.driver", "org.h2.Driver");
149 jdbcProperties.setProperty("jakarta.persistence.jdbc.url", "jdbc:h2:mem:EntityTest");
150 jdbcProperties.setProperty("jakarta.persistence.jdbc.user", "sa");
151 jdbcProperties.setProperty("jakarta.persistence.jdbc.password", "");
153 daoParameters.setJdbcProperties(jdbcProperties);
155 pfDao = new PfDaoFactory().createPfDao(daoParameters);
156 pfDao.init(daoParameters);
158 final PfConceptKey nullKey = null;
159 final PfReferenceKey nullRefKey = null;
160 final PfTimestampKey nullTimeKey = null;
161 final List<PfConceptKey> nullKeyList = null;
162 final List<PfConceptKey> emptyKeyList = new ArrayList<>();
163 final List<PfReferenceKey> nullRKeyList = null;
164 final List<PfReferenceKey> emptyRKeyList = new ArrayList<>();
166 pfDao.create(nullKey);
167 pfDao.createCollection(nullKeyList);
168 pfDao.createCollection(emptyKeyList);
170 pfDao.delete(nullKey);
171 pfDao.deleteCollection(nullKeyList);
172 pfDao.deleteCollection(emptyKeyList);
173 pfDao.delete(PfConceptKey.class, nullKey);
174 pfDao.delete(PfReferenceKey.class, nullRefKey);
175 pfDao.delete(PfTimestampKey.class, nullTimeKey);
176 pfDao.deleteByConceptKey(PfConceptKey.class, nullKeyList);
177 pfDao.deleteByConceptKey(PfConceptKey.class, emptyKeyList);
178 pfDao.deleteByReferenceKey(PfReferenceKey.class, nullRKeyList);
179 pfDao.deleteByReferenceKey(PfReferenceKey.class, emptyRKeyList);
181 pfDao.get(null, nullKey);
182 pfDao.get(null, nullRefKey);
183 pfDao.get(null, nullTimeKey);
185 pfDao.getAll(null, nullKey);
186 pfDao.getAll(null, null, null);
187 pfDao.getConcept(null, nullKey);
188 pfDao.getConcept(PfConceptKey.class, nullKey);
189 pfDao.getConcept(null, nullRefKey);
190 pfDao.getConcept(PfReferenceKey.class, nullRefKey);
192 assertThatCode(() -> pfDao.size(null)).doesNotThrowAnyException();
195 private void testAllOps() {
196 final PfConceptKey aKey0 = new PfConceptKey("A-KEY0", VERSION001);
197 final PfConceptKey aKey1 = new PfConceptKey("A-KEY1", VERSION001);
198 final PfConceptKey aKey2 = new PfConceptKey("A-KEY2", VERSION001);
199 final DummyConceptEntity keyInfo0 = new DummyConceptEntity(aKey0,
200 UUID.fromString(UUID0), DESCRIPTION0);
201 final DummyConceptEntity keyInfo1 = new DummyConceptEntity(aKey1,
202 UUID.fromString(UUID1), DESCRIPTION1);
203 final DummyConceptEntity keyInfo2 = new DummyConceptEntity(aKey2,
204 UUID.fromString(UUID2), DESCRIPTION2);
206 pfDao.create(keyInfo0);
208 final DummyConceptEntity keyInfoBack0 = pfDao.get(DummyConceptEntity.class, aKey0);
209 assertEquals(keyInfo0, keyInfoBack0);
211 final DummyConceptEntity keyInfoBackNull = pfDao.get(DummyConceptEntity.class, PfConceptKey.getNullKey());
212 assertNull(keyInfoBackNull);
214 final DummyConceptEntity keyInfoBack1 = pfDao.getConcept(DummyConceptEntity.class, aKey0);
215 assertEquals(keyInfoBack0, keyInfoBack1);
217 final DummyConceptEntity keyInfoBack2 =
218 pfDao.getConcept(DummyConceptEntity.class, new PfConceptKey("A-KEY3", VERSION001));
219 assertNull(keyInfoBack2);
221 final Set<DummyConceptEntity> keyInfoSetIn = new TreeSet<>();
222 keyInfoSetIn.add(keyInfo1);
223 keyInfoSetIn.add(keyInfo2);
225 pfDao.createCollection(keyInfoSetIn);
227 Set<DummyConceptEntity> keyInfoSetOut = new TreeSet<>(pfDao.getAll(DummyConceptEntity.class));
229 keyInfoSetIn.add(keyInfo0);
230 assertEquals(keyInfoSetIn, keyInfoSetOut);
232 pfDao.delete(keyInfo1);
233 keyInfoSetIn.remove(keyInfo1);
234 keyInfoSetOut = new TreeSet<>(pfDao.getAll(DummyConceptEntity.class));
235 assertEquals(keyInfoSetIn, keyInfoSetOut);
237 pfDao.deleteCollection(keyInfoSetIn);
238 keyInfoSetOut = new TreeSet<>(pfDao.getAll(DummyConceptEntity.class));
239 assertEquals(0, keyInfoSetOut.size());
241 keyInfoSetIn.add(keyInfo0);
242 keyInfoSetIn.add(keyInfo1);
243 keyInfoSetIn.add(keyInfo0);
244 pfDao.createCollection(keyInfoSetIn);
245 keyInfoSetOut = new TreeSet<>(pfDao.getAll(DummyConceptEntity.class));
246 assertEquals(keyInfoSetIn, keyInfoSetOut);
248 pfDao.delete(DummyConceptEntity.class, aKey0);
249 keyInfoSetOut = new TreeSet<>(pfDao.getAll(DummyConceptEntity.class));
250 assertEquals(2, keyInfoSetOut.size());
251 assertEquals(2, pfDao.size(DummyConceptEntity.class));
253 final Set<PfConceptKey> keySetIn = new TreeSet<>();
257 final int deletedCount = pfDao.deleteByConceptKey(DummyConceptEntity.class, keySetIn);
258 assertEquals(2, deletedCount);
260 keyInfoSetOut = new TreeSet<>(pfDao.getAll(DummyConceptEntity.class));
261 assertEquals(0, keyInfoSetOut.size());
263 keyInfoSetIn.add(keyInfo0);
264 keyInfoSetIn.add(keyInfo1);
265 keyInfoSetIn.add(keyInfo0);
266 pfDao.createCollection(keyInfoSetIn);
267 keyInfoSetOut = new TreeSet<>(pfDao.getAll(DummyConceptEntity.class));
268 assertEquals(keyInfoSetIn, keyInfoSetOut);
270 pfDao.deleteAll(DummyConceptEntity.class);
271 assertEquals(0, pfDao.size(DummyConceptEntity.class));
273 final PfConceptKey owner0Key = new PfConceptKey("Owner0", VERSION001);
274 final PfConceptKey owner1Key = new PfConceptKey("Owner1", VERSION001);
275 final PfConceptKey owner2Key = new PfConceptKey("Owner2", VERSION001);
276 final PfConceptKey owner3Key = new PfConceptKey("Owner3", VERSION001);
277 final PfConceptKey owner4Key = new PfConceptKey("Owner4", VERSION001);
278 final PfConceptKey owner5Key = new PfConceptKey("Owner5", VERSION001);
280 pfDao.create(new DummyReferenceEntity(new PfReferenceKey(owner0Key, ENTITY0), 100.0));
281 pfDao.create(new DummyReferenceEntity(new PfReferenceKey(owner0Key, "Entity1"), 101.0));
282 pfDao.create(new DummyReferenceEntity(new PfReferenceKey(owner0Key, "Entity2"), 102.0));
283 pfDao.create(new DummyReferenceEntity(new PfReferenceKey(owner0Key, "Entity3"), 103.0));
284 pfDao.create(new DummyReferenceEntity(new PfReferenceKey(owner0Key, "Entity4"), 104.0));
285 pfDao.create(new DummyReferenceEntity(new PfReferenceKey(owner1Key, "Entity5"), 105.0));
286 pfDao.create(new DummyReferenceEntity(new PfReferenceKey(owner1Key, "Entity6"), 106.0));
287 pfDao.create(new DummyReferenceEntity(new PfReferenceKey(owner1Key, "Entity7"), 107.0));
288 pfDao.create(new DummyReferenceEntity(new PfReferenceKey(owner2Key, "Entity8"), 108.0));
289 pfDao.create(new DummyReferenceEntity(new PfReferenceKey(owner2Key, "Entity9"), 109.0));
290 pfDao.create(new DummyReferenceEntity(new PfReferenceKey(owner3Key, "EntityA"), 110.0));
291 pfDao.create(new DummyReferenceEntity(new PfReferenceKey(owner4Key, "EntityB"), 111.0));
292 pfDao.create(new DummyReferenceEntity(new PfReferenceKey(owner5Key, "EntityC"), 112.0));
293 pfDao.create(new DummyReferenceEntity(new PfReferenceKey(owner5Key, "EntityD"), 113.0));
294 pfDao.create(new DummyReferenceEntity(new PfReferenceKey(owner5Key, "EntityE"), 114.0));
295 pfDao.create(new DummyReferenceEntity(new PfReferenceKey(owner5Key, "EntityF"), 115.0));
297 TreeSet<DummyReferenceEntity> testEntitySetOut =
298 new TreeSet<>(pfDao.getAll(DummyReferenceEntity.class));
299 assertEquals(16, testEntitySetOut.size());
301 testEntitySetOut = new TreeSet<>(pfDao.getAll(DummyReferenceEntity.class, owner0Key));
302 assertEquals(5, testEntitySetOut.size());
304 testEntitySetOut = new TreeSet<>(pfDao.getAll(DummyReferenceEntity.class, owner1Key));
305 assertEquals(3, testEntitySetOut.size());
307 testEntitySetOut = new TreeSet<>(pfDao.getAll(DummyReferenceEntity.class, owner2Key));
308 assertEquals(2, testEntitySetOut.size());
310 testEntitySetOut = new TreeSet<>(pfDao.getAll(DummyReferenceEntity.class, owner3Key));
311 assertEquals(1, testEntitySetOut.size());
313 testEntitySetOut = new TreeSet<>(pfDao.getAll(DummyReferenceEntity.class, owner4Key));
314 assertEquals(1, testEntitySetOut.size());
316 testEntitySetOut = new TreeSet<>(pfDao.getAll(DummyReferenceEntity.class, owner5Key));
317 assertEquals(4, testEntitySetOut.size());
319 assertNotNull(pfDao.get(DummyReferenceEntity.class, new PfReferenceKey(owner0Key, ENTITY0)));
320 assertNotNull(pfDao.getConcept(DummyReferenceEntity.class, new PfReferenceKey(owner0Key, ENTITY0)));
321 assertNull(pfDao.get(DummyReferenceEntity.class, new PfReferenceKey(owner0Key, "Entity1000")));
322 assertNull(pfDao.getConcept(DummyReferenceEntity.class, new PfReferenceKey(owner0Key, "Entity1000")));
323 pfDao.delete(DummyReferenceEntity.class, new PfReferenceKey(owner0Key, ENTITY0));
325 final Set<PfReferenceKey> rKeySetIn = new TreeSet<>();
326 rKeySetIn.add(new PfReferenceKey(owner4Key, "EntityB"));
327 rKeySetIn.add(new PfReferenceKey(owner5Key, "EntityD"));
329 final int deletedRCount = pfDao.deleteByReferenceKey(DummyReferenceEntity.class, rKeySetIn);
330 assertEquals(2, deletedRCount);
332 pfDao.update(new DummyReferenceEntity(new PfReferenceKey(owner5Key, "EntityF"), 120.0));
334 final PfTimestampKey atKey0 = new PfTimestampKey("AT-KEY0", VERSION001, TIMESTAMP0);
335 final PfTimestampKey atKey1 = new PfTimestampKey("AT-KEY1", VERSION001, TIMESTAMP1);
336 final PfTimestampKey atKey2 = new PfTimestampKey("AT-KEY2", VERSION001, TIMESTAMP2);
337 final DummyTimestampEntity tkeyInfo0 = new DummyTimestampEntity(atKey0, 200.0);
338 final DummyTimestampEntity tkeyInfo1 = new DummyTimestampEntity(atKey1, 200.1);
339 final DummyTimestampEntity tkeyInfo2 = new DummyTimestampEntity(atKey2, 200.2);
341 pfDao.create(tkeyInfo0);
343 final DummyTimestampEntity tkeyInfoBack0 = pfDao.get(DummyTimestampEntity.class, atKey0);
344 assertEquals(tkeyInfo0, tkeyInfoBack0);
346 final DummyTimestampEntity tkeyInfoBackNull =
347 pfDao.get(DummyTimestampEntity.class, PfTimestampKey.getNullKey());
348 assertNull(tkeyInfoBackNull);
352 final Set<DummyTimestampEntity> tkeyInfoSetIn = new TreeSet<>();
353 tkeyInfoSetIn.add(tkeyInfo1);
354 tkeyInfoSetIn.add(tkeyInfo2);
356 pfDao.createCollection(tkeyInfoSetIn);
358 Set<DummyTimestampEntity> tkeyInfoSetOut = new TreeSet<>(pfDao.getAll(DummyTimestampEntity.class));
360 tkeyInfoSetIn.add(tkeyInfo0);
361 assertEquals(tkeyInfoSetIn, tkeyInfoSetOut);
363 pfDao.delete(tkeyInfo1);
364 tkeyInfoSetIn.remove(tkeyInfo1);
365 tkeyInfoSetOut = new TreeSet<>(pfDao.getAll(DummyTimestampEntity.class));
366 assertEquals(tkeyInfoSetIn, tkeyInfoSetOut);
368 pfDao.deleteCollection(tkeyInfoSetIn);
369 tkeyInfoSetOut = new TreeSet<>(pfDao.getAll(DummyTimestampEntity.class));
370 assertEquals(0, tkeyInfoSetOut.size());
372 tkeyInfoSetIn.add(tkeyInfo2);
373 pfDao.createCollection(tkeyInfoSetIn);
374 tkeyInfoSetOut = new TreeSet<>(pfDao.getAll(DummyTimestampEntity.class));
375 assertEquals(keyInfoSetIn, keyInfoSetOut);
377 pfDao.delete(DummyTimestampEntity.class, atKey2);
378 tkeyInfoSetOut = new TreeSet<>(pfDao.getAll(DummyTimestampEntity.class));
379 assertEquals(3, keyInfoSetOut.size());
380 assertEquals(1, pfDao.size(DummyTimestampEntity.class));
382 pfDao.deleteAll(DummyTimestampEntity.class);
383 assertEquals(0, pfDao.size(DummyTimestampEntity.class));
386 private void testReferenceTimestamp() {
387 final PfConceptKey owner0Key = new PfConceptKey("Owner0", VERSION001);
388 final PfConceptKey owner1Key = new PfConceptKey("Owner1", VERSION001);
389 final PfConceptKey owner2Key = new PfConceptKey("Owner2", VERSION001);
390 final PfReferenceTimestampKey arKey0 = new PfReferenceTimestampKey(owner0Key, "AT-KEY0", TIMESTAMP0);
391 final PfReferenceTimestampKey arKey1 = new PfReferenceTimestampKey(owner1Key, "AT-KEY1", TIMESTAMP1);;
392 final PfReferenceTimestampKey arKey2 = new PfReferenceTimestampKey(owner2Key, "AT-KEY2", TIMESTAMP2);
393 final DummyReferenceTimestampEntity rkeyInfo0 = new DummyReferenceTimestampEntity(arKey0);
394 final DummyReferenceTimestampEntity rkeyInfo1 = new DummyReferenceTimestampEntity(arKey1);
395 final DummyReferenceTimestampEntity rkeyInfo2 = new DummyReferenceTimestampEntity(arKey2);
397 pfDao.create(rkeyInfo0);
399 final DummyReferenceTimestampEntity rkeyInfoBack0 = pfDao.get(DummyReferenceTimestampEntity.class, arKey0);
400 assertEquals(rkeyInfo0, rkeyInfoBack0);
403 final DummyReferenceTimestampEntity rkeyInfoBackNull =
404 pfDao.get(DummyReferenceTimestampEntity.class, PfReferenceTimestampKey.getNullKey());
405 assertNull(rkeyInfoBackNull);
407 final Set<DummyReferenceTimestampEntity> rkeyInfoSetIn = new TreeSet<>();
408 rkeyInfoSetIn.add(rkeyInfo1);
409 rkeyInfoSetIn.add(rkeyInfo2);
411 pfDao.createCollection(rkeyInfoSetIn);
413 Set<DummyReferenceTimestampEntity> rkeyInfoSetOut =
414 new TreeSet<>(pfDao.getAll(DummyReferenceTimestampEntity.class));
416 rkeyInfoSetIn.add(rkeyInfo0);
417 assertEquals(rkeyInfoSetIn, rkeyInfoSetOut);
419 pfDao.delete(rkeyInfo1);
420 rkeyInfoSetIn.remove(rkeyInfo1);
421 rkeyInfoSetOut = new TreeSet<>(pfDao.getAll(DummyReferenceTimestampEntity.class));
422 assertEquals(rkeyInfoSetIn, rkeyInfoSetOut);
424 pfDao.deleteCollection(rkeyInfoSetIn);
425 rkeyInfoSetOut = new TreeSet<>(pfDao.getAll(DummyReferenceTimestampEntity.class));
426 assertEquals(0, rkeyInfoSetOut.size());
428 rkeyInfoSetIn.add(rkeyInfo2);
429 pfDao.createCollection(rkeyInfoSetIn);
430 rkeyInfoSetOut = new TreeSet<>(pfDao.getAll(DummyReferenceTimestampEntity.class));
431 assertEquals(rkeyInfoSetIn, rkeyInfoSetOut);
433 pfDao.deleteAll(DummyReferenceTimestampEntity.class);
434 assertEquals(0, pfDao.size(DummyReferenceTimestampEntity.class));
437 private void testVersionOps() {
438 final PfConceptKey aKey0 = new PfConceptKey("AAA0", VERSION001);
439 final PfConceptKey aKey1 = new PfConceptKey("AAA0", VERSION002);
440 final PfConceptKey aKey2 = new PfConceptKey("AAA0", VERSION003);
441 final PfConceptKey bKey0 = new PfConceptKey("BBB0", VERSION001);
442 final PfConceptKey bKey1 = new PfConceptKey("BBB0", VERSION002);
443 final PfConceptKey bKey2 = new PfConceptKey("BBB0", VERSION003);
444 final DummyConceptEntity keyInfo0 = new DummyConceptEntity(aKey0,
445 UUID.fromString(UUID0), DESCRIPTION0);
446 final DummyConceptEntity keyInfo1 = new DummyConceptEntity(aKey1,
447 UUID.fromString(UUID1), DESCRIPTION1);
448 final DummyConceptEntity keyInfo2 = new DummyConceptEntity(aKey2,
449 UUID.fromString(UUID2), DESCRIPTION2);
450 final DummyConceptEntity keyInfo3 = new DummyConceptEntity(bKey0,
451 UUID.fromString(UUID0), DESCRIPTION0);
452 final DummyConceptEntity keyInfo4 = new DummyConceptEntity(bKey1,
453 UUID.fromString(UUID1), DESCRIPTION1);
454 final DummyConceptEntity keyInfo5 = new DummyConceptEntity(bKey2,
455 UUID.fromString(UUID2), DESCRIPTION2);
457 pfDao.create(keyInfo0);
458 pfDao.create(keyInfo1);
459 pfDao.create(keyInfo2);
460 pfDao.create(keyInfo3);
461 pfDao.create(keyInfo4);
462 pfDao.create(keyInfo5);
464 assertEquals(3, pfDao.getAllVersions(DummyConceptEntity.class, "AAA0").size());
465 assertEquals(0, pfDao.getAllVersions(null, "AAA0").size());
466 assertEquals(0, pfDao.getAllVersions(DummyConceptEntity.class, null).size());
469 private void testgetFilteredOps() {
470 final PfConceptKey aKey0 = new PfConceptKey("AAA0", VERSION001);
471 final PfConceptKey aKey1 = new PfConceptKey("AAA0", VERSION002);
472 final PfConceptKey aKey2 = new PfConceptKey("AAA0", VERSION003);
473 final PfConceptKey bKey0 = new PfConceptKey("BBB0", VERSION001);
474 final PfConceptKey bKey1 = new PfConceptKey("BBB0", VERSION002);
475 final PfConceptKey bKey2 = new PfConceptKey("BBB0", VERSION003);
476 final DummyConceptEntity keyInfo0 = new DummyConceptEntity(aKey0,
477 UUID.fromString(UUID0), DESCRIPTION0);
478 final DummyConceptEntity keyInfo1 = new DummyConceptEntity(aKey1,
479 UUID.fromString(UUID1), DESCRIPTION1);
480 final DummyConceptEntity keyInfo2 = new DummyConceptEntity(aKey2,
481 UUID.fromString(UUID2), DESCRIPTION2);
482 final DummyConceptEntity keyInfo3 = new DummyConceptEntity(bKey0,
483 UUID.fromString(UUID0), DESCRIPTION0);
484 final DummyConceptEntity keyInfo4 = new DummyConceptEntity(bKey1,
485 UUID.fromString(UUID1), DESCRIPTION1);
486 final DummyConceptEntity keyInfo5 = new DummyConceptEntity(bKey2,
487 UUID.fromString(UUID2), DESCRIPTION2);
489 pfDao.create(keyInfo0);
490 pfDao.create(keyInfo1);
491 pfDao.create(keyInfo2);
492 pfDao.create(keyInfo3);
493 pfDao.create(keyInfo4);
494 pfDao.create(keyInfo5);
496 assertThat(pfDao.getFiltered(DummyConceptEntity.class, null, null)).hasSize(6);
497 assertThat(pfDao.getFiltered(DummyConceptEntity.class, "AAA0", null)).hasSize(3);
498 assertThat(pfDao.getFiltered(DummyConceptEntity.class, "BBB0", null)).hasSize(3);
499 assertThat(pfDao.getFiltered(DummyConceptEntity.class, "BBB0", VERSION003)).hasSize(1);
500 assertThat(pfDao.getFiltered(DummyConceptEntity.class, null, VERSION003)).hasSize(6);
502 final PfTimestampKey atKey0 = new PfTimestampKey("AT-KEY0", VERSION001, TIMESTAMP0);
503 final PfTimestampKey atKey1 = new PfTimestampKey("AT-KEY1", VERSION001, TIMESTAMP1);
504 final PfTimestampKey atKey2 = new PfTimestampKey("AT-KEY2", VERSION001, TIMESTAMP2);
505 final DummyTimestampEntity tkeyInfo0 = new DummyTimestampEntity(atKey0, 200.0);
506 final DummyTimestampEntity tkeyInfo1 = new DummyTimestampEntity(atKey1, 200.1);
507 final DummyTimestampEntity tkeyInfo2 = new DummyTimestampEntity(atKey2, 200.2);
509 pfDao.create(tkeyInfo0);
510 pfDao.create(tkeyInfo1);
511 pfDao.create(tkeyInfo2);
514 assertThat(pfDao.getFiltered(DummyTimestampEntity.class,
515 PfFilterParameters.builder().name("AT-KEY0").version(VERSION001).build())).hasSize(1);
516 assertThat(pfDao.getFiltered(DummyTimestampEntity.class, PfFilterParameters.builder().name("AT-KEY0").build()))
518 assertThat(pfDao.getFiltered(DummyTimestampEntity.class, PfFilterParameters.builder().version(VERSION001)
519 .startTime(TIMESTAMP0).endTime(TIMESTAMP2).build())).hasSize(3);
520 assertThat(pfDao.getFiltered(DummyTimestampEntity.class, PfFilterParameters.builder().name("AT-KEY0")
521 .version(VERSION001).startTime(TIMESTAMP0).endTime(TIMESTAMP2).build())).hasSize(1);
522 assertThat(pfDao.getFiltered(DummyTimestampEntity.class,
523 PfFilterParameters.builder().version(VERSION001).endTime(TIMESTAMP2).build())).hasSize(3);
524 assertThat(pfDao.getFiltered(DummyTimestampEntity.class,
525 PfFilterParameters.builder().version(VERSION001).startTime(TIMESTAMP0).build())).hasSize(3);
526 assertThat(pfDao.getFiltered(DummyTimestampEntity.class, PfFilterParameters.builder().version(VERSION001)
527 .startTime(TIMESTAMP0).endTime(TIMESTAMP2).sortOrder("DESC").recordNum(2).build())).hasSize(2);
529 Map<String, Object> filterMap = new HashMap<>();
530 filterMap.put("doubleValue", 200.1);
531 assertThat(pfDao.getFiltered(DummyTimestampEntity.class,
532 PfFilterParameters.builder().filterMap(filterMap).build())).hasSize(1);
535 private void testgetFilteredOps3() {
536 Map<String, Object> filterMap = new HashMap<>();
537 filterMap.put("localName", "AT-KEY0");
539 final PfConceptKey owner0Key = new PfConceptKey("Owner0", VERSION001);
540 final PfConceptKey owner1Key = new PfConceptKey("Owner1", VERSION001);
541 final PfConceptKey owner2Key = new PfConceptKey("Owner2", VERSION001);
542 final PfReferenceTimestampKey arKey0 = new PfReferenceTimestampKey(owner0Key, "AT-KEY0", TIMESTAMP0);
543 final PfReferenceTimestampKey arKey1 = new PfReferenceTimestampKey(owner1Key, "AT-KEY1", TIMESTAMP1);;
544 final PfReferenceTimestampKey arKey2 = new PfReferenceTimestampKey(owner2Key, "AT-KEY2", TIMESTAMP2);
545 final DummyReferenceTimestampEntity rkeyInfo0 = new DummyReferenceTimestampEntity(arKey0);
546 final DummyReferenceTimestampEntity rkeyInfo1 = new DummyReferenceTimestampEntity(arKey1);
547 final DummyReferenceTimestampEntity rkeyInfo2 = new DummyReferenceTimestampEntity(arKey2);
549 pfDao.create(rkeyInfo0);
550 pfDao.create(rkeyInfo1);
551 pfDao.create(rkeyInfo2);
554 assertThat(pfDao.getFiltered(DummyReferenceTimestampEntity.class,
555 PfFilterParameters.builder().name("Owner0").version(VERSION001).build())).hasSize(1);
556 assertThat(pfDao.getFiltered(DummyReferenceTimestampEntity.class,
557 PfFilterParameters.builder().name("Owner0").build())).hasSize(1);
558 assertThat(pfDao.getFiltered(DummyReferenceTimestampEntity.class, PfFilterParameters.builder()
559 .version(VERSION001).startTime(TIMESTAMP0).endTime(TIMESTAMP2).build())).hasSize(3);
560 assertThat(pfDao.getFiltered(DummyReferenceTimestampEntity.class, PfFilterParameters.builder().name("Owner0")
561 .version(VERSION001).startTime(TIMESTAMP0).endTime(TIMESTAMP2).build())).hasSize(1);
562 assertThat(pfDao.getFiltered(DummyReferenceTimestampEntity.class,
563 PfFilterParameters.builder().version(VERSION001).endTime(TIMESTAMP2).build())).hasSize(3);
564 assertThat(pfDao.getFiltered(DummyReferenceTimestampEntity.class,
565 PfFilterParameters.builder().version(VERSION001).startTime(TIMESTAMP0).build())).hasSize(3);
566 assertThat(pfDao.getFiltered(DummyReferenceTimestampEntity.class,
567 PfFilterParameters.builder().version(VERSION001).startTime(TIMESTAMP0).endTime(TIMESTAMP2)
568 .sortOrder("DESC").recordNum(2).build())).hasSize(2);
570 assertThat(pfDao.getFiltered(DummyReferenceTimestampEntity.class,
571 PfFilterParameters.builder().filterMap(filterMap).build())).hasSize(1);