All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.fnklabs.draenei.orm.analytics.LoadDataTask Maven / Gradle / Ivy

package com.fnklabs.draenei.orm.analytics;

import com.fnklabs.draenei.orm.DataProvider;
import com.hazelcast.config.*;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.HazelcastInstanceAware;
import com.hazelcast.core.IMap;
import org.jetbrains.annotations.NotNull;

import java.io.Serializable;
import java.util.concurrent.Callable;

/**
 * Load data from DataProvider
 */
class LoadDataTask implements Callable, Serializable, AnalyticsInstanceAware, HazelcastInstanceAware {
    private final long startToken;
    private final long endToken;
    private final String mapName;
    private final Class entityClass;

    private transient Analytics analytics;
    private transient HazelcastInstance hazelcastInstance;

    public LoadDataTask(long startToken, long endToken, String mapName, Class entityClass) {
        this.startToken = startToken;
        this.endToken = endToken;
        this.mapName = mapName;
        this.entityClass = entityClass;
    }

    @Override
    public Integer call() throws Exception {
        DataProvider dataProvider = analytics.getDataProvider(entityClass);

        IMap map = getMap();

        LoadIntoHazelcastConsumer consumer = new LoadIntoHazelcastConsumer<>(map, dataProvider);

        return dataProvider.load(startToken, endToken, consumer);
    }

    @Override
    public void setAnalyticsInstance(@NotNull Analytics analytics) {
        this.analytics = analytics;
    }

    @Override
    public void setHazelcastInstance(HazelcastInstance hazelcastInstance) {
        this.hazelcastInstance = hazelcastInstance;
    }

    private IMap getMap() {
        Config config = hazelcastInstance.getConfig();

        MapConfig mapConfig = config.getMapConfig(mapName);
        mapConfig.setEvictionPolicy(EvictionPolicy.NONE);
        mapConfig.setInMemoryFormat(InMemoryFormat.OBJECT);
        mapConfig.setMaxIdleSeconds(0);
        mapConfig.setMaxSizeConfig(new MaxSizeConfig());
        mapConfig.setMaxIdleSeconds(0);
        mapConfig.setTimeToLiveSeconds(0);

        config.addMapConfig(mapConfig);

        return hazelcastInstance.getMap(mapName);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy