package se.chalmers.gdcn.replica; import se.chalmers.gdcn.network.WorkerID; import se.chalmers.gdcn.replica.ReplicaManager.TaskID; import se.chalmers.gdcn.taskbuilder.fileManagement.PathManager; import se.chalmers.gdcn.utils.ByteArray; import java.io.File; import java.io.Serializable; import java.util.HashMap; import java.util.Map; import java.util.Set; /** * Created by Leif on 2014-04-15. * * Class for storing results that are canonical */ public class Archive implements Serializable { private final Map<TaskID, CanonicalResult> resultMap = new HashMap<>(); /** * Archive a result * @param taskData task data of this result * @param data the result data * @param quality the quality of the result * @param advocatingWorkers the advocating workers of this result */ public void archiveResult(TaskData taskData, ByteArray data, double quality, Set<WorkerID> advocatingWorkers) { PathManager pathManager = PathManager.jobOwner(taskData.getJobName()); File location = new File(pathManager.getCanonicalResultFilePath(taskData.getTaskMeta().getTaskName())); resultMap.put(taskData.taskID(), new CanonicalResult(data, quality, advocatingWorkers, location)); } /** * Get an archived canonical result * @param taskID the task ID of this result * @return the canonical result */ public CanonicalResult getArchivedResult(TaskID taskID) { return resultMap.get(taskID); } }