package com.datascience.datastoring.datamodels.kv;
import com.datascience.core.base.LObject;
import com.datascience.core.base.Worker;
import com.datascience.core.results.AbstractResults;
import com.datascience.core.results.ResultsFactory;
import com.datascience.datastoring.adapters.kv.ISafeKVStorage;
/**
* @Author: konrad
*/
public class KVResults<T, U, V> extends AbstractResults<T, U, V> {
protected ISafeKVStorage<U> datumKV;
protected ISafeKVStorage<V> workersKV;
public KVResults(ResultsFactory.DatumResultCreator<U> datumCreator, ResultsFactory.WorkerResultCreator<V> workerCreator,
ISafeKVStorage<U> datumKV, ISafeKVStorage<V> workersKV) {
super(datumCreator, workerCreator);
this.datumKV = datumKV;
this.workersKV = workersKV;
}
@Override
public U uncheckedGetDatumResults(LObject<T> obj) {
return datumKV.get(obj.getName());
}
@Override
public V uncheckedGetWorkerResult(Worker worker) {
return workersKV.get(worker.getName());
}
@Override
public boolean hasDatumResult(LObject<T> obj) {
return datumKV.contains(obj.getName());
}
@Override
public void addDatumResult(LObject<T> obj, U result) {
datumKV.put(obj.getName(), result);
}
@Override
public boolean hasWorkerResult(Worker worker) {
return workersKV.contains(worker.getName());
}
@Override
public void addWorkerResult(Worker worker, V result) {
workersKV.put(worker.getName(), result);
}
}