package com.datascience.datastoring.datamodels.memory; 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 java.util.HashMap; import java.util.Map; /** * User: artur * T - object class * U - datum results class * V - worker results class */ public class InMemoryResults<T, U, V> extends AbstractResults<T, U, V> { protected Map<LObject<T>, U> datumResults; protected Map<Worker, V> workerResults; //needed for gson deserialization public InMemoryResults(){ super(); } public InMemoryResults(ResultsFactory.DatumResultCreator datumCreator, ResultsFactory.WorkerResultCreator workerCreator){ super(datumCreator, workerCreator); datumResults = new HashMap<LObject<T>, U>(); workerResults = new HashMap<Worker, V>(); } @Override public U uncheckedGetDatumResults(LObject<T> obj){ return datumResults.get(obj); } @Override public V uncheckedGetWorkerResult(Worker worker){ return workerResults.get(worker); } @Override public boolean hasDatumResult(LObject<T> obj){ return datumResults.containsKey(obj); } @Override public void addDatumResult(LObject<T> obj, U result){ datumResults.put(obj, result); notifyNewObjectResults(obj, result); } @Override public boolean hasWorkerResult(Worker worker){ return workerResults.containsKey(worker); } @Override public void addWorkerResult(Worker worker, V result){ workerResults.put(worker, result); notifyNewWorkerResults(worker, result); } }