From ef74dd31eab7a70866c0e09fc9369c4bf8aef9be Mon Sep 17 00:00:00 2001 From: "luca.frosini" Date: Tue, 31 Oct 2023 15:50:16 +0100 Subject: [PATCH] Added expiring time to TypesKnowledge --- .../types/knowledge/TypesKnowledge.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/main/java/org/gcube/informationsystem/types/knowledge/TypesKnowledge.java b/src/main/java/org/gcube/informationsystem/types/knowledge/TypesKnowledge.java index 0b5cd7b..b3cdac9 100644 --- a/src/main/java/org/gcube/informationsystem/types/knowledge/TypesKnowledge.java +++ b/src/main/java/org/gcube/informationsystem/types/knowledge/TypesKnowledge.java @@ -1,6 +1,8 @@ package org.gcube.informationsystem.types.knowledge; +import java.util.Calendar; import java.util.Collection; +import java.util.concurrent.TimeUnit; import org.gcube.informationsystem.base.reference.AccessType; import org.gcube.informationsystem.model.knowledge.ModelKnowledge; @@ -21,15 +23,35 @@ public class TypesKnowledge { return instance; } + // in millisec + public static final long DEFAULT_EXPIRING_TIMEOUT; + + static { + DEFAULT_EXPIRING_TIMEOUT = TimeUnit.HOURS.toMillis(6); + + } + protected boolean initialized; + public int expiringTimeout; + + // in millisec used only for logging and debugging + protected Calendar creationTime; + // in millisec + protected Calendar expiringTime; + protected ModelKnowledge modelKnowledge; protected TypesDiscoverer typesDiscoverer; public TypesKnowledge() { initialized = false; + expiringTimeout = (int) DEFAULT_EXPIRING_TIMEOUT; modelKnowledge = new ModelKnowledge<>(new TypeInformation()); } + public void setExpiringTimeout(int expiringTimeout) { + this.expiringTimeout = expiringTimeout; + } + public TypesDiscoverer getTypesDiscoverer() { return typesDiscoverer; } @@ -41,6 +63,11 @@ public class TypesKnowledge { public ModelKnowledge getModelKnowledge() { if(!initialized) { discover(); + }else { + Calendar now = Calendar.getInstance(); + if(now.after(expiringTime)) { + renew(); + } } return modelKnowledge; } @@ -55,6 +82,11 @@ public class TypesKnowledge { modelKnowledge.addAllType(types); } initialized = true; + this.creationTime = Calendar.getInstance(); + this.expiringTime = Calendar.getInstance(); + this.expiringTime.setTimeInMillis(creationTime.getTimeInMillis()); + this.expiringTime.add(Calendar.MILLISECOND, -1); + this.expiringTime.add(Calendar.MILLISECOND, expiringTimeout); } }