// Path: erp-library/src/main/java/com.jukusoft/erp/lib/cache/CacheManager.java
// public interface CacheManager {
// 
//     /**
//     * get instance of cache
//      *
//      * @param cacheName name of cache
//      *
//      * @return instance of cache or null, if cache doesnt exists
//     */
//     public ICache getCache (String cacheName);
// 
//     /**
//      * get instance of cache or create an new one, if cache doesnt exists
//      *
//      * @param cacheName name of cache
//      *
//      * @return instance of cache or null, if cache doesnt exists
//      */
//     public ICache getOrCreateCache (String cacheName, CacheTypes cacheType);
// 
//     /**
//     * check, if cache is present
//      *
//      * @param cacheName name of cache
//     */
//     public boolean containsCache (String cacheName);
// 
//     /**
//     * crate an new cache instance
//      *
//      * @param cacheName name of cache
//      * @param type type of cache
//      *
//      * @return instance of new cache
//     */
//     public ICache createCache (String cacheName, CacheTypes type);
// 
//     /**
//     * remove cache and cleanup values
//      *
//      * @param cacheName name of cache
//     */
//     public void removeCache (String cacheName);
// 
//     /**
//     * list names of all caches
//      *
//      * @return list with all cache names
//     */
//     public List<String> listCacheNames ();
// 
//     /**
//     * clean up outdated entries from all caches
//     */
//     public void cleanUp ();
// 
//     /**
//     * create default cache manager
//      *
//      * @param localCacheDir local cache directory
//      * @param hazelcastInstance instance of hazelcast
//     */
//     public static CacheManager createDefaultCacheManager (File localCacheDir, HazelcastInstance hazelcastInstance, ILogging logger) {
//         return new DefaultCacheManager(localCacheDir, hazelcastInstance, logger);
//     }
// 
// }
// 
// Path: erp-library/src/main/java/com.jukusoft/erp/lib/cache/CacheTypes.java
// public enum CacheTypes {
// 
//     /**
//     * cache entries on filesystem
//     */
//     FILE_CACHE,
// 
//     /**
//     * cache values on local memory cache
//     */
//     LOCAL_MEMORY_CACHE,
// 
//     /**
//     * cache values in distributed hazelcast cache
//     */
//     HAZELCAST_CACHE
// 
// }
// 
// 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.hazelcast.core.HazelcastInstance;
import com.jukusoft.erp.lib.cache.CacheManager;
import com.jukusoft.erp.lib.cache.CacheTypes;
import com.jukusoft.erp.lib.cache.ICache;
import com.jukusoft.erp.lib.logging.ILogging;
import java.io.File;
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 DefaultCacheManager implements CacheManager {

    //local cache directory
    protected File localCacheDir = null;

    //instance of hazelcast
    protected HazelcastInstance hazelcastInstance = null;

    //instance of logger
// Path: erp-library/src/main/java/com.jukusoft/erp/lib/cache/CacheManager.java
// public interface CacheManager {
// 
//     /**
//     * get instance of cache
//      *
//      * @param cacheName name of cache
//      *
//      * @return instance of cache or null, if cache doesnt exists
//     */
//     public ICache getCache (String cacheName);
// 
//     /**
//      * get instance of cache or create an new one, if cache doesnt exists
//      *
//      * @param cacheName name of cache
//      *
//      * @return instance of cache or null, if cache doesnt exists
//      */
//     public ICache getOrCreateCache (String cacheName, CacheTypes cacheType);
// 
//     /**
//     * check, if cache is present
//      *
//      * @param cacheName name of cache
//     */
//     public boolean containsCache (String cacheName);
// 
//     /**
//     * crate an new cache instance
//      *
//      * @param cacheName name of cache
//      * @param type type of cache
//      *
//      * @return instance of new cache
//     */
//     public ICache createCache (String cacheName, CacheTypes type);
// 
//     /**
//     * remove cache and cleanup values
//      *
//      * @param cacheName name of cache
//     */
//     public void removeCache (String cacheName);
// 
//     /**
//     * list names of all caches
//      *
//      * @return list with all cache names
//     */
//     public List<String> listCacheNames ();
// 
//     /**
//     * clean up outdated entries from all caches
//     */
//     public void cleanUp ();
// 
//     /**
//     * create default cache manager
//      *
//      * @param localCacheDir local cache directory
//      * @param hazelcastInstance instance of hazelcast
//     */
//     public static CacheManager createDefaultCacheManager (File localCacheDir, HazelcastInstance hazelcastInstance, ILogging logger) {
//         return new DefaultCacheManager(localCacheDir, hazelcastInstance, logger);
//     }
// 
// }
// 
// Path: erp-library/src/main/java/com.jukusoft/erp/lib/cache/CacheTypes.java
// public enum CacheTypes {
// 
//     /**
//     * cache entries on filesystem
//     */
//     FILE_CACHE,
// 
//     /**
//     * cache values on local memory cache
//     */
//     LOCAL_MEMORY_CACHE,
// 
//     /**
//     * cache values in distributed hazelcast cache
//     */
//     HAZELCAST_CACHE
// 
// }
// 
// 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/DefaultCacheManager.java
import com.hazelcast.core.HazelcastInstance;
import com.jukusoft.erp.lib.cache.CacheManager;
import com.jukusoft.erp.lib.cache.CacheTypes;
import com.jukusoft.erp.lib.cache.ICache;
import com.jukusoft.erp.lib.logging.ILogging;
import java.io.File;
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 DefaultCacheManager implements CacheManager {

    //local cache directory
    protected File localCacheDir = null;

    //instance of hazelcast
    protected HazelcastInstance hazelcastInstance = null;

    //instance of logger
    protected ILogging logger = null;