|
@@ -4,6 +4,7 @@ import java.io.BufferedWriter;
|
|
import java.io.File;
|
|
import java.io.File;
|
|
import java.io.FileWriter;
|
|
import java.io.FileWriter;
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
|
|
+import java.util.Collection;
|
|
import java.util.LinkedList;
|
|
import java.util.LinkedList;
|
|
import java.util.Observable;
|
|
import java.util.Observable;
|
|
|
|
|
|
@@ -91,11 +92,12 @@ public class SimulationManager extends Observable {
|
|
if (currentTime + duration <= endTime) {
|
|
if (currentTime + duration <= endTime) {
|
|
simulateTimeIntervall(currentTime, duration);
|
|
simulateTimeIntervall(currentTime, duration);
|
|
currentTime += duration;
|
|
currentTime += duration;
|
|
|
|
+ notifyPanels();
|
|
} else {
|
|
} else {
|
|
simulateTimeIntervall(currentTime, endTime - currentTime);
|
|
simulateTimeIntervall(currentTime, endTime - currentTime);
|
|
currentTime = endTime;
|
|
currentTime = endTime;
|
|
|
|
+ stopSimulation();
|
|
}
|
|
}
|
|
- notifyPanels();
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -140,32 +142,77 @@ public class SimulationManager extends Observable {
|
|
public void exportPacketsOfLastTimeStep() {
|
|
public void exportPacketsOfLastTimeStep() {
|
|
if (printPackets) {
|
|
if (printPackets) {
|
|
if (!splitLinkExportFiles) {
|
|
if (!splitLinkExportFiles) {
|
|
|
|
+ /**
|
|
|
|
+ * Packets of all links, merged together
|
|
|
|
+ */
|
|
|
|
+ LinkedList<Packet> packets = new LinkedList<Packet>();
|
|
|
|
+ model.getConnectionNetworks().forEach(a->packets.addAll(a.getPackets()));
|
|
|
|
+ packets.sort(new PacketComparator());
|
|
|
|
+
|
|
|
|
+ writePacketsToFile(packets, exportFile);
|
|
|
|
+ }else{
|
|
|
|
+ for(Link link:model.getConnectionNetworks()){
|
|
|
|
+ /**
|
|
|
|
+ * File name:
|
|
|
|
+ * test.log
|
|
|
|
+ * to
|
|
|
|
+ * test_linkName.log
|
|
|
|
+ */
|
|
|
|
+ String fileName = exportFile.getName();
|
|
|
|
+ //Add linkName
|
|
|
|
+ if(fileName.contains(".")){
|
|
|
|
+ String baseName = fileName.substring(0, fileName.lastIndexOf('.'));
|
|
|
|
+ String ending = fileName.substring(fileName.lastIndexOf('.')+1, fileName.length());
|
|
|
|
+ fileName = baseName +"_"+link.getName()+"."+ending;
|
|
|
|
+ }else{
|
|
|
|
+ fileName = fileName +"_"+link.getName();
|
|
|
|
+ }
|
|
|
|
+ /**
|
|
|
|
+ * Path to parent directory
|
|
|
|
+ */
|
|
|
|
+ String parent = exportFile.getParent();
|
|
|
|
+ /**
|
|
|
|
+ * File with the fileName
|
|
|
|
+ */
|
|
|
|
+ File linkExportFile = new File((parent == null?"":parent)+fileName);
|
|
|
|
+ /**
|
|
|
|
+ * Write Packets
|
|
|
|
+ */
|
|
|
|
+ writePacketsToFile(link.getPackets(), linkExportFile);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Writes all packets of the given Collection to the specified file
|
|
|
|
+ * @param packets packets which should be written
|
|
|
|
+ * @param file file the packets should be written to
|
|
|
|
+ */
|
|
|
|
+ private void writePacketsToFile(Collection<Packet> packets, File file){
|
|
|
|
+ if(file == null || packets == null)
|
|
|
|
+ return;
|
|
|
|
+ try {
|
|
|
|
+ //Check if file exists, if not create
|
|
|
|
+ file.createNewFile();
|
|
|
|
+ //Start Writing
|
|
|
|
+ writer = new BufferedWriter(new FileWriter(file.getAbsolutePath(), true));
|
|
|
|
+ //Write all packets
|
|
|
|
+ packets.forEach(p -> {
|
|
try {
|
|
try {
|
|
- exportFile.createNewFile();
|
|
|
|
- writer = new BufferedWriter(new FileWriter(exportFile.getAbsolutePath(), true));
|
|
|
|
-
|
|
|
|
- LinkedList<Packet> packets = new LinkedList<Packet>();
|
|
|
|
- packets.sort(new PacketComparator());
|
|
|
|
- model.getConnectionNetworks().forEach(a->packets.addAll(a.getPackets()));
|
|
|
|
- packets.forEach(p -> {
|
|
|
|
- try {
|
|
|
|
- if (p == null)
|
|
|
|
- writer.append("Packet: Null\n");
|
|
|
|
- else
|
|
|
|
- writer.append(p.getTextualRepresentation() + "\n");
|
|
|
|
- } catch (Exception e) {}
|
|
|
|
- });
|
|
|
|
|
|
+ writer.append(p.getTextualRepresentation() + "\n");
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
-
|
|
|
|
- } finally {
|
|
|
|
- if (writer != null)
|
|
|
|
- try {
|
|
|
|
- writer.close();
|
|
|
|
- } catch (IOException e) {}
|
|
|
|
|
|
+ System.err.println("Warning: Error on exporting packets: "+e.toString());
|
|
}
|
|
}
|
|
- }else{
|
|
|
|
- //TODO: Different Link Files
|
|
|
|
- }
|
|
|
|
|
|
+ });
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ System.err.println("Warning: Writing failed on file "+file.getPath()+"\n"+e.toString());
|
|
|
|
+ } finally {
|
|
|
|
+ //Close open writer
|
|
|
|
+ if (writer != null)
|
|
|
|
+ try {
|
|
|
|
+ writer.close();
|
|
|
|
+ } catch (IOException e) {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|