species-products-discovery/src/main/java/org/gcube/data/spd/utils/ResultWrapperMantainer.java

37 lines
1.2 KiB
Java

package org.gcube.data.spd.utils;
import java.util.HashMap;
import java.util.Map;
import org.gcube.data.spd.model.products.ResultElement;
import org.gcube.data.spd.plugin.fwk.writers.rswrapper.ResultWrapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ResultWrapperMantainer {
private static Logger log = LoggerFactory.getLogger(ResultWrapperMantainer.class);
private static Map<String, ResultStreamingThread<?>> writerMap = new HashMap<String, ResultStreamingThread<?>>();
public static <T extends ResultElement> ResultWrapper<T> getWrapper(Class<T> _clazz){
ResultStreamingThread<T> retrieverThread = new ResultStreamingThread<T>(_clazz);
ResultWrapper<T> wrapper = new ResultWrapper<T>(retrieverThread.getWriter());
retrieverThread.start();
writerMap.put(wrapper.getLocator(), retrieverThread);
return wrapper;
}
public static ResultStreamingThread<?> getWriterById(String locator){
return writerMap.get(locator);
}
public static void remove(String locator){
if (writerMap.containsKey(locator)){
writerMap.get(locator).getWriter().close();
writerMap.remove(locator);
} else log.warn("wrapper already closed");
}
}