/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.merapi.helper.handlers;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.merapi.handlers.MessageHandler;
import org.merapi.helper.messages.DLControlMessage;
import org.merapi.helper.messages.DLControlRespondMessage;
import org.merapi.helper.messages.ListUpdateMessage;
import org.merapi.messages.IMessage;
import org.torrent.client.MainService;
import org.torrent.internal.client.Main;
/**
*
* @author gurkerl
*/
public class DLControlRequestHandler_ extends MessageHandler {
// private static DLControlRequestHandler instance = new DLControlRequestHandler();
//
// /**
// * Statische Methode, liefert die einzige Instanz dieser Klasse zur�ck
// */
// public static DLControlRequestHandler getInstance() {
// return instance;
// }
private File file;
private MainService service;
/**
* Default-Konstruktor, der nicht au�erhalb dieser Klasse aufgerufen werden
* kann
*/
private DLControlRequestHandler_() {
super(DLControlMessage.DL_CONTROL);
// service = new Main();
}
@Override
public void handleMessage(IMessage message) {
if (message instanceof DLControlMessage) {
System.out.println("DLControlMessage received on backend");
DLControlMessage downloadControlMessage = (DLControlMessage) message;
file = new File(downloadControlMessage.fileName);
FileOutputStream fop = null;
try {
fop = new FileOutputStream(file);
} catch (FileNotFoundException ex) {
Logger.getLogger(DLControlRequestHandler_.class.getName()).log(
Level.SEVERE, null, ex);
}
if (file.exists()) {
try {
fop.write(downloadControlMessage.fileData);
} catch (IOException ex) {
Logger.getLogger(DLControlRequestHandler_.class.getName())
.log(Level.SEVERE, null, ex);
}
try {
fop.flush();
} catch (IOException ex) {
Logger.getLogger(DLControlRequestHandler_.class.getName())
.log(Level.SEVERE, null, ex);
}
try {
fop.close();
} catch (IOException ex) {
Logger.getLogger(DLControlRequestHandler_.class.getName())
.log(Level.SEVERE, null, ex);
}
System.out.println("The data has been written");
}
} else {
System.out.println("invalid message received on backend");
}
System.out.println("absolute file: " + file.getAbsoluteFile());
System.out.println("absolute path: " + file.getAbsolutePath());
// service.addTorrentTask(file.getAbsolutePath());
// Main.getInstance().addTorrentTask(file.getAbsolutePath());
// try {
// Main.getInstance().start(file.getAbsolutePath());
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
try {
Main.getInstance().starter(file.getAbsolutePath());
// Main.getInstance().startTorrentTask(file.getAbsolutePath());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// @Override
// public File getFile() {
// return this.file;
// }
public void sendListUpdateMessage(String action, String infoHash) {
ListUpdateMessage updateMessage = new ListUpdateMessage();
updateMessage.action = action;
updateMessage.infoHash = infoHash;
updateMessage.send();
}
public void sendDLControlRespondMessage(String action, String infoHash, String name, int cols, int rows,
long l, long m, long n, long o, int progress){
DLControlRespondMessage dlControlRespondMessage = new DLControlRespondMessage();
dlControlRespondMessage.action = action;
dlControlRespondMessage.infoHash = infoHash;
dlControlRespondMessage.name = name;
dlControlRespondMessage.cols = cols;
dlControlRespondMessage.rows = rows;
//evtl nach ListUpdateMessage
dlControlRespondMessage.ldB = l;
dlControlRespondMessage.ldT = m;
dlControlRespondMessage.luB = n;
dlControlRespondMessage.luT = o;
dlControlRespondMessage.progress = progress;
dlControlRespondMessage.send();
}
// updateMessage.setUid(downloadControlMessage.getUid());
// updateMessage.action = ListUpdateMessage.ITEM_ADDED;
// Random RNG = new Random();
// Integer next = RNG.nextInt();
// String[] array = new String[] {"1", "tester", "12", "2", "true"};
// array[0] = next.toString();
// updateMessage.setArgs(array);
// updateMessage.send();
}