001package org.hl7.fhir.r5.terminologies.utilities;
002
003import org.hl7.fhir.utilities.filesystem.ManagedFileAccess;
004
005import java.io.File;
006import java.io.IOException;
007
008public interface TerminologyCapabilitiesCache<V> {
009  boolean containsKey(String key);
010
011  V get(String key);
012
013  V put(String key, V value);
014
015  static boolean cacheFileHasExpired(String fn, long expirationTimeMillis) throws IOException {
016    File cacheFile = ManagedFileAccess.csfile(fn);
017    if (!cacheFile.exists()) {
018      return true;
019    }
020    final long lastModified = cacheFile.lastModified();
021    final long currentTime = System.currentTimeMillis();
022
023    return (currentTime - lastModified) > expirationTimeMillis;
024  }
025}