// Path: erp-library/src/main/java/com.jukusoft/erp/lib/cache/ICache.java
// public interface ICache {
// 
//     public void put (String key, JsonObject data);
// 
//     default void putArray (String key, JsonArray array) {
//         if (array == null) {
//             throw new NullPointerException("array cannot be null.");
//         }
// 
//         JsonObject obj = new JsonObject();
//         obj.put("array", array);
// 
//         put(key, obj);
//     }
// 
//     public void remove (String key);
// 
//     public void removeAll ();
// 
//     public boolean contains (String key);
// 
//     public JsonObject get (String key);
// 
//     default JsonArray getArray (String key) {
//         JsonObject obj = get(key);
// 
//         if (obj == null) {
//             return null;
//         }
// 
//         if (!obj.containsKey("array")) {
//             throw new IllegalStateException("cached object isnt an array.");
//         }
// 
//         return obj.getJsonArray("array");
//     }
// 
//     public void cleanUp ();
// 
// }
// 
// Path: erp-library/src/main/java/com.jukusoft/erp/lib/logging/ILogging.java
// public interface ILogging {
// 
//     public void debug (long messageID, String tag, String message);
// 
//     public void debug (String tag, String message);
// 
//     public void info (long messageID, String tag, String message);
// 
//     public void info (String tag, String message);
// 
//     public void warn (long messageID, String tag, String message);
// 
//     public void warn (String tag, String message);
// 
//     public void error (long messageID, String tag, String message);
// 
//     public void error (String tag, String message);
// 
// }


import com.jukusoft.erp.lib.cache.ICache;
import com.jukusoft.erp.lib.logging.ILogging;
import io.vertx.core.json.JsonObject;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
package com.jukusoft.erp.lib.cache.impl;



public class LocalMemoryCache implements ICache {

    //map with all cache entries
    protected Map<String,JsonObject> cacheMap = new ConcurrentHashMap<>();

    //map with last access date (unix timestamp)
    protected Map<String,Long> accessMap = new ConcurrentHashMap<>();

    //time to live for cache objects (30 seconds)
    protected long TTL = 30 * 1000;

// Path: erp-library/src/main/java/com.jukusoft/erp/lib/cache/ICache.java
// public interface ICache {
// 
//     public void put (String key, JsonObject data);
// 
//     default void putArray (String key, JsonArray array) {
//         if (array == null) {
//             throw new NullPointerException("array cannot be null.");
//         }
// 
//         JsonObject obj = new JsonObject();
//         obj.put("array", array);
// 
//         put(key, obj);
//     }
// 
//     public void remove (String key);
// 
//     public void removeAll ();
// 
//     public boolean contains (String key);
// 
//     public JsonObject get (String key);
// 
//     default JsonArray getArray (String key) {
//         JsonObject obj = get(key);
// 
//         if (obj == null) {
//             return null;
//         }
// 
//         if (!obj.containsKey("array")) {
//             throw new IllegalStateException("cached object isnt an array.");
//         }
// 
//         return obj.getJsonArray("array");
//     }
// 
//     public void cleanUp ();
// 
// }
// 
// Path: erp-library/src/main/java/com.jukusoft/erp/lib/logging/ILogging.java
// public interface ILogging {
// 
//     public void debug (long messageID, String tag, String message);
// 
//     public void debug (String tag, String message);
// 
//     public void info (long messageID, String tag, String message);
// 
//     public void info (String tag, String message);
// 
//     public void warn (long messageID, String tag, String message);
// 
//     public void warn (String tag, String message);
// 
//     public void error (long messageID, String tag, String message);
// 
//     public void error (String tag, String message);
// 
// }


// Path: erp-library/src/main/java/com.jukusoft/erp/lib/cache/impl/LocalMemoryCache.java
import com.jukusoft.erp.lib.cache.ICache;
import com.jukusoft.erp.lib.logging.ILogging;
import io.vertx.core.json.JsonObject;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

package com.jukusoft.erp.lib.cache.impl;



public class LocalMemoryCache implements ICache {

    //map with all cache entries
    protected Map<String,JsonObject> cacheMap = new ConcurrentHashMap<>();

    //map with last access date (unix timestamp)
    protected Map<String,Long> accessMap = new ConcurrentHashMap<>();

    //time to live for cache objects (30 seconds)
    protected long TTL = 30 * 1000;

    public LocalMemoryCache (ILogging logger) {