package se.chalmers.gdcn.files;
import net.tomp2p.peers.PeerAddress;
import net.tomp2p.storage.Data;
import se.chalmers.gdcn.communicationToUI.CommandWord;
import se.chalmers.gdcn.communicationToUI.NetworkInterface;
import se.chalmers.gdcn.taskbuilder.communicationToClient.TaskFailureListener;
import se.chalmers.gdcn.taskbuilder.fileManagement.PathManager;
import java.io.File;
/**
* Created by HalfLeif on 2014-03-05.
*/
public class Downloader extends AbstractFileMaster {
private final PeerAddress jobOwner;
public Downloader(TaskMeta taskMeta, String projectName, NetworkInterface client, PeerAddress jobOwner,TaskFailureListener taskFailureListener) throws TaskMetaDataException {
super(taskMeta, client, taskFailureListener, CommandWord.GET, PathManager.worker(projectName));
this.jobOwner = jobOwner;
}
/**
* {@inheritDoc}
*/
@Override
protected void ifFileExist(FileDep fileDep) {
System.out.println("Found file: " + FileManagementUtils.pathTo(pathManager, fileDep));
super.fileDependencyResolved(fileDep);
}
/**
* {@inheritDoc}
*/
@Override
protected void ifFileDoNotExist(FileDep fileDep) {
System.out.println("Didn't find file " + FileManagementUtils.pathTo(pathManager, fileDep));
client.get(fileDep.getDhtKey(), jobOwner.getID());
//Handling OperationFinished is done in AbstractFileMaster
}
/**
* {@inheritDoc}
*/
@Override
protected void operationForDependentFileSuccess(FileDep fileDep, Object result) {
File file = FileManagementUtils.pathTo(pathManager, fileDep);
Data data = (Data) result;
FileManagementUtils.toFile(file, data.getData());
}
}