
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