Skip to content

Commit 5f0e978

Browse files
committed
Query System Integrated and Unit Test Added
1 parent c970abd commit 5f0e978

9 files changed

Lines changed: 1568 additions & 124 deletions

File tree

src/main/java/it/wldt/storage/DefaultWldtStorage.java

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ public void saveDigitalTwinState(DigitalTwinState digitalTwinState, List<Digital
167167
* @return the latest computed Digital Twin State
168168
*/
169169
@Override
170-
public Optional<DigitalTwinStateRecord> getLastDigitalTwinStateVariation() {
170+
public Optional<DigitalTwinStateRecord> getLastDigitalTwinState() {
171171

172172
if (digitalTwinStateMap.isEmpty()) {
173173
return Optional.empty();
@@ -319,6 +319,16 @@ public void saveLifeCycleState(LifeCycleStateVariation lifeCycleStateVariation)
319319

320320
}
321321

322+
/**
323+
* Get the last LifeCycleState of the Digital Twin
324+
*
325+
* @return the last LifeCycleState of the Digital Twin
326+
*/
327+
@Override
328+
public LifeCycleVariationRecord getLastLifeCycleState() throws StorageException {
329+
return lifeCycleStateMap.isEmpty() ? null : lifeCycleStateMap.get(Collections.max(lifeCycleStateMap.keySet()));
330+
}
331+
322332
/**
323333
* Get the number of LifeCycleState of the Digital Twin
324334
* @return the number of LifeCycleState of the Digital Twin
@@ -814,7 +824,7 @@ public List<PhysicalAssetPropertyVariationRecord> getPhysicalAssetPropertyVariat
814824
* @param physicalRelationshipInstanceVariation the Physical Relationship Instance Variation to be saved
815825
*/
816826
@Override
817-
public void savePhysicalAssetRelationshipInstanceCreatedEvent(PhysicalRelationshipInstanceVariation physicalRelationshipInstanceVariation) throws StorageException {
827+
public void savePhysicalAssetRelationshipInstanceCreatedNotification(PhysicalRelationshipInstanceVariation physicalRelationshipInstanceVariation) throws StorageException {
818828
if(physicalRelationshipInstanceVariation == null)
819829
throw new StorageException("Physical Relationship Instance Variation cannot be null.");
820830

@@ -838,7 +848,7 @@ public void savePhysicalAssetRelationshipInstanceCreatedEvent(PhysicalRelationsh
838848
* @return the number of Physical Asset Relationship Instance Created Event
839849
*/
840850
@Override
841-
public int getPhysicalAssetRelationshipInstanceCreatedEventCount() {
851+
public int getPhysicalAssetRelationshipInstanceCreatedNotificationCount() {
842852
return this.physicalRelationshipInstanceCreatedMap.size();
843853
}
844854

@@ -850,7 +860,7 @@ public int getPhysicalAssetRelationshipInstanceCreatedEventCount() {
850860
* @return the list of Physical Asset Relationship Instance Created Event in the specified time range
851861
*/
852862
@Override
853-
public List<PhysicalRelationshipInstanceVariationRecord> getPhysicalAssetRelationshipInstanceCreatedEventInTimeRange(long startTimestampMs, long endTimestampMs) throws IllegalArgumentException {
863+
public List<PhysicalRelationshipInstanceVariationRecord> getPhysicalAssetRelationshipInstanceCreatedNotificationInTimeRange(long startTimestampMs, long endTimestampMs) throws IllegalArgumentException {
854864
List<PhysicalRelationshipInstanceVariationRecord> result = new ArrayList<>();
855865
for (Map.Entry<Long, PhysicalRelationshipInstanceVariationRecord> entry : physicalRelationshipInstanceCreatedMap.entrySet()) {
856866
long timestamp = entry.getKey();
@@ -871,7 +881,7 @@ public List<PhysicalRelationshipInstanceVariationRecord> getPhysicalAssetRelatio
871881
* @throws IllegalArgumentException if startIndex is greater than endIndex
872882
*/
873883
@Override
874-
public List<PhysicalRelationshipInstanceVariationRecord> getPhysicalAssetRelationshipInstanceCreatedEventInRange(int startIndex, int endIndex) throws IllegalArgumentException {
884+
public List<PhysicalRelationshipInstanceVariationRecord> getPhysicalAssetRelationshipInstanceCreatedNotificationInRange(int startIndex, int endIndex) throws IllegalArgumentException {
875885
if (startIndex < 0 || endIndex < 0 || startIndex > endIndex) {
876886
throw new IllegalArgumentException("Invalid index range.");
877887
}
@@ -893,7 +903,7 @@ public List<PhysicalRelationshipInstanceVariationRecord> getPhysicalAssetRelatio
893903
* @param physicalRelationshipInstanceVariation the Physical Relationship Instance Variation to be saved
894904
*/
895905
@Override
896-
public void savePhysicalAssetRelationshipInstanceDeletedEvent(PhysicalRelationshipInstanceVariation physicalRelationshipInstanceVariation) throws StorageException {
906+
public void savePhysicalAssetRelationshipInstanceDeletedNotification(PhysicalRelationshipInstanceVariation physicalRelationshipInstanceVariation) throws StorageException {
897907
if(physicalRelationshipInstanceVariation == null)
898908
throw new StorageException("Physical Relationship Instance Variation cannot be null.");
899909

@@ -917,7 +927,7 @@ public void savePhysicalAssetRelationshipInstanceDeletedEvent(PhysicalRelationsh
917927
* @return the number of Physical Asset Relationship Instance Updated Event
918928
*/
919929
@Override
920-
public int getPhysicalAssetRelationshipInstanceDeletedEventCount() {
930+
public int getPhysicalAssetRelationshipInstanceDeletedNotificationCount() {
921931
return this.physicalRelationshipInstanceDeletedMap.size();
922932
}
923933

@@ -929,7 +939,7 @@ public int getPhysicalAssetRelationshipInstanceDeletedEventCount() {
929939
* @return the list of Physical Asset Relationship Instance Updated Event in the specified time range
930940
*/
931941
@Override
932-
public List<PhysicalRelationshipInstanceVariationRecord> getPhysicalAssetRelationshipInstanceDeletedEventInTimeRange(long startTimestampMs, long endTimestampMs) throws IllegalArgumentException {
942+
public List<PhysicalRelationshipInstanceVariationRecord> getPhysicalAssetRelationshipInstanceDeletedNotificationInTimeRange(long startTimestampMs, long endTimestampMs) throws IllegalArgumentException {
933943
List<PhysicalRelationshipInstanceVariationRecord> result = new ArrayList<>();
934944
for (Map.Entry<Long, PhysicalRelationshipInstanceVariationRecord> entry : physicalRelationshipInstanceDeletedMap.entrySet()) {
935945
long timestamp = entry.getKey();
@@ -950,7 +960,7 @@ public List<PhysicalRelationshipInstanceVariationRecord> getPhysicalAssetRelatio
950960
* @throws IllegalArgumentException if startIndex is greater than endIndex
951961
*/
952962
@Override
953-
public List<PhysicalRelationshipInstanceVariationRecord> getPhysicalAssetRelationshipInstanceDeletedEventInRange(int startIndex, int endIndex) throws IndexOutOfBoundsException, IllegalArgumentException {
963+
public List<PhysicalRelationshipInstanceVariationRecord> getPhysicalAssetRelationshipInstanceDeletedNotificationInRange(int startIndex, int endIndex) throws IndexOutOfBoundsException, IllegalArgumentException {
954964
if (startIndex < 0 || endIndex < 0 || startIndex > endIndex) {
955965
throw new IllegalArgumentException("Invalid index range.");
956966
}

src/main/java/it/wldt/storage/StorageManager.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -275,15 +275,15 @@ public void onPhysicalAssetEvent(WldtEvent<?> event) {
275275
if(WldtEventBus.getInstance().matchWildCardType(event.getType(), WldtEventTypes.ALL_PHYSICAL_RELATIONSHIP_INSTANCE_CREATION_EVENT_TYPE) && event instanceof PhysicalAssetRelationshipInstanceCreatedWldtEvent<?>){
276276
PhysicalAssetRelationshipInstanceCreatedWldtEvent<?> physicalEvent = (PhysicalAssetRelationshipInstanceCreatedWldtEvent<?>) event;
277277
PhysicalAssetRelationshipInstance<?> relationshipInstance = physicalEvent.getBody();
278-
storage.savePhysicalAssetRelationshipInstanceCreatedEvent(new PhysicalRelationshipInstanceVariation(physicalEvent.getCreationTimestamp(),
278+
storage.savePhysicalAssetRelationshipInstanceCreatedNotification(new PhysicalRelationshipInstanceVariation(physicalEvent.getCreationTimestamp(),
279279
relationshipInstance));
280280
}
281281

282282
// Save the PhysicalAsset Relationship Instance Deleted
283283
if(WldtEventBus.getInstance().matchWildCardType(event.getType(), WldtEventTypes.ALL_PHYSICAL_RELATIONSHIP_INSTANCE_DELETED_EVENT_TYPE) && event instanceof PhysicalAssetRelationshipInstanceDeletedWldtEvent<?>){
284284
PhysicalAssetRelationshipInstanceDeletedWldtEvent<?> physicalEvent = (PhysicalAssetRelationshipInstanceDeletedWldtEvent<?>) event;
285285
PhysicalAssetRelationshipInstance<?> relationshipInstance = physicalEvent.getBody();
286-
storage.savePhysicalAssetRelationshipInstanceDeletedEvent(new PhysicalRelationshipInstanceVariation(physicalEvent.getCreationTimestamp(),
286+
storage.savePhysicalAssetRelationshipInstanceDeletedNotification(new PhysicalRelationshipInstanceVariation(physicalEvent.getCreationTimestamp(),
287287
relationshipInstance));
288288
}
289289
}

src/main/java/it/wldt/storage/WldtStorage.java

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,15 @@
2424
* Project: White Label Digital Twin Java Framework - (whitelabel-digitaltwin)
2525
* Defines an Interface allowing the Digital Twin developer to implement its internal storage system for the Digital Twin instance.
2626
* The interface defines methods for the management of:
27-
* i) Digital Twin State storage and retrieval;
28-
* ii) Digital Twin State Change List storage and retrieval;
29-
* iii) Received Physical Events;
30-
* iv) Generated Digital Events;
31-
* v) Life Cycle State storage and retrieval;
32-
* vi) Physical Asset Description storage and retrieval;
33-
* vii) Physical Asset Property Variation storage and retrieval;
34-
* viii) Physical Asset Relationship Instance storage and retrieval;
35-
* ix) Digital Action Request storage and retrieval;
36-
* x) Physical Asset Action Request storage and retrieval;
37-
* xi) Physical Asset Event Notification storage and retrieval;
27+
* - Digital Twin State storage and retrieval with the associated change list;
28+
* - Generated State Digital Events;
29+
* - Life Cycle State storage and retrieval;
30+
* - Physical Asset Description storage and retrieval;
31+
* - Physical Asset Property Variation storage and retrieval;
32+
* - Physical Asset Relationship Instance storage and retrieval;
33+
* - Digital Action Request storage and retrieval;
34+
* - Physical Asset Action Request storage and retrieval;
35+
* - Physical Asset Event Notification storage and retrieval;
3836
*/
3937
public abstract class WldtStorage {
4038

@@ -177,7 +175,7 @@ public void setStorageId(String storageId) {
177175
* Returns the latest computed Digital Twin State of the target Digital Twin instance
178176
* @return the latest computed Digital Twin State
179177
*/
180-
public abstract Optional<DigitalTwinStateRecord> getLastDigitalTwinStateVariation() throws StorageException;
178+
public abstract Optional<DigitalTwinStateRecord> getLastDigitalTwinState() throws StorageException;
181179

182180
/**
183181
* Returns the number of computed and stored Digital Twin States
@@ -242,6 +240,12 @@ public void setStorageId(String storageId) {
242240
*/
243241
public abstract void saveLifeCycleState(LifeCycleStateVariation lifeCycleStateVariation) throws StorageException;
244242

243+
/**
244+
* Get the last LifeCycleState of the Digital Twin
245+
* @return the last LifeCycleState of the Digital Twin
246+
*/
247+
public abstract LifeCycleVariationRecord getLastLifeCycleState() throws StorageException;
248+
245249
/**
246250
* Get the number of LifeCycleState of the Digital Twin
247251
* @return the number of LifeCycleState of the Digital Twin
@@ -448,21 +452,21 @@ public void setStorageId(String storageId) {
448452
* Save the Physical Asset Relationship Instance Created Event
449453
* @param physicalRelationshipInstanceVariation the Physical Relationship Instance Variation to be saved
450454
*/
451-
public abstract void savePhysicalAssetRelationshipInstanceCreatedEvent(PhysicalRelationshipInstanceVariation physicalRelationshipInstanceVariation) throws StorageException;
455+
public abstract void savePhysicalAssetRelationshipInstanceCreatedNotification(PhysicalRelationshipInstanceVariation physicalRelationshipInstanceVariation) throws StorageException;
452456

453457
/**
454458
* Get the number of Physical Asset Relationship Instance Created Event
455459
* @return the number of Physical Asset Relationship Instance Created Event
456460
*/
457-
public abstract int getPhysicalAssetRelationshipInstanceCreatedEventCount() throws StorageException;
461+
public abstract int getPhysicalAssetRelationshipInstanceCreatedNotificationCount() throws StorageException;
458462

459463
/**
460464
* Get the Physical Asset Relationship Instance Created Event in the specified time range
461465
* @param startTimestampMs the start timestamp of the time range
462466
* @param endTimestampMs the end timestamp of the time range
463467
* @return the list of Physical Asset Relationship Instance Created Event in the specified time range
464468
*/
465-
public abstract List<PhysicalRelationshipInstanceVariationRecord> getPhysicalAssetRelationshipInstanceCreatedEventInTimeRange(long startTimestampMs, long endTimestampMs) throws StorageException, IllegalArgumentException;
469+
public abstract List<PhysicalRelationshipInstanceVariationRecord> getPhysicalAssetRelationshipInstanceCreatedNotificationInTimeRange(long startTimestampMs, long endTimestampMs) throws StorageException, IllegalArgumentException;
466470

467471
/**
468472
* Get the Physical Asset Relationship Instance Created Event in the specified range of indices
@@ -472,27 +476,27 @@ public void setStorageId(String storageId) {
472476
* @throws IndexOutOfBoundsException if the startIndex or endIndex is out of bounds
473477
* @throws IllegalArgumentException if startIndex is greater than endIndex
474478
*/
475-
public abstract List<PhysicalRelationshipInstanceVariationRecord> getPhysicalAssetRelationshipInstanceCreatedEventInRange(int startIndex, int endIndex) throws StorageException, IllegalArgumentException;
479+
public abstract List<PhysicalRelationshipInstanceVariationRecord> getPhysicalAssetRelationshipInstanceCreatedNotificationInRange(int startIndex, int endIndex) throws StorageException, IllegalArgumentException;
476480

477481
/**
478482
* Save the Physical Asset Relationship Instance Updated Event
479483
* @param physicalRelationshipInstanceVariation the Physical Relationship Instance Variation to be saved
480484
*/
481-
public abstract void savePhysicalAssetRelationshipInstanceDeletedEvent(PhysicalRelationshipInstanceVariation physicalRelationshipInstanceVariation) throws StorageException;
485+
public abstract void savePhysicalAssetRelationshipInstanceDeletedNotification(PhysicalRelationshipInstanceVariation physicalRelationshipInstanceVariation) throws StorageException;
482486

483487
/**
484488
* Get the number of Physical Asset Relationship Instance Updated Event
485489
* @return the number of Physical Asset Relationship Instance Updated Event
486490
*/
487-
public abstract int getPhysicalAssetRelationshipInstanceDeletedEventCount() throws StorageException;
491+
public abstract int getPhysicalAssetRelationshipInstanceDeletedNotificationCount() throws StorageException;
488492

489493
/**
490494
* Get the Physical Asset Relationship Instance Updated Event in the specified time range
491495
* @param startTimestampMs the start timestamp of the time range
492496
* @param endTimestampMs the end timestamp of the time range
493497
* @return the list of Physical Asset Relationship Instance Updated Event in the specified time range
494498
*/
495-
public abstract List<PhysicalRelationshipInstanceVariationRecord> getPhysicalAssetRelationshipInstanceDeletedEventInTimeRange(long startTimestampMs, long endTimestampMs) throws StorageException, IllegalArgumentException;
499+
public abstract List<PhysicalRelationshipInstanceVariationRecord> getPhysicalAssetRelationshipInstanceDeletedNotificationInTimeRange(long startTimestampMs, long endTimestampMs) throws StorageException, IllegalArgumentException;
496500

497501
/**
498502
* Get the Physical Asset Relationship Instance Updated Event in the specified range of indices
@@ -502,7 +506,7 @@ public void setStorageId(String storageId) {
502506
* @throws IndexOutOfBoundsException if the startIndex or endIndex is out of bounds
503507
* @throws IllegalArgumentException if startIndex is greater than endIndex
504508
*/
505-
public abstract List<PhysicalRelationshipInstanceVariationRecord> getPhysicalAssetRelationshipInstanceDeletedEventInRange(int startIndex, int endIndex) throws StorageException, IndexOutOfBoundsException, IllegalArgumentException;
509+
public abstract List<PhysicalRelationshipInstanceVariationRecord> getPhysicalAssetRelationshipInstanceDeletedNotificationInRange(int startIndex, int endIndex) throws StorageException, IndexOutOfBoundsException, IllegalArgumentException;
506510

507511
/**
508512
* Initialize the WLDT Storage

0 commit comments

Comments
 (0)