/**
*
*/
package vroom.common.instances;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import vroom.common.utilities.FileBufferedWriter;
import vroom.common.utilities.Utilities;
/**
* <code>LacknerRelDateFileConverter</code> contains methods to convert Lackner release date files in a more readable
* format
* <p>
* Creation date: Nov 22, 2011 - 11:05:10 AM
*
* @author Victor Pillac, <a href="http://uniandes.edu.co">Universidad de Los Andes</a>-<a
* href="http://copa.uniandes.edu.co">Copa</a> <a href="http://www.emn.fr">Ecole des Mines de Nantes</a>-<a
* href="http://www.irccyn.ec-nantes.fr/irccyn/d/en/equipes/Slp">SLP</a>
* @version 1.0
*/
public class LacknerRelDateFileConverter {
public static String sSourceDir = "../Instances/dvrptw/lackner";
public static String sDestDir = "../Instances/dvrptw/lackner_rd";
public static void convertFile(File source, String destDir) throws IOException {
String[] nameArgs = source.getName().split("_");
String instanceName = nameArgs[0];
int propDyn = Integer.valueOf(nameArgs[3]);
FileBufferedWriter out = new FileBufferedWriter(String.format(DVRPReleaseDateGenerator.sNameFormat, destDir,
instanceName, propDyn));
BufferedReader in = new BufferedReader(new FileReader(source));
// Write a comment line
out.writeLine("# Instance %s - %s dynamic requests - %s static requests", instanceName, propDyn, 100 - propDyn);
// #Dyn/Static Propotions
out.writeLine("%-5s %s", "Dyn", "Stat");
out.writeLine("%-5s %s", propDyn, 100 - propDyn);
// Headers
out.writeLine("%-5s %s", "ID", "RD");
String line;
ArrayList<Integer[]> rd = new ArrayList<Integer[]>(100);
boolean flushed = false;
while ((line = in.readLine()) != null && line.length() > 1) {
// out.writeLine(line);
if (!flushed && !line.contains("-1")) {
// Flush the static rd
Collections.sort(rd, new Comparator<Integer[]>() {
@Override
public int compare(Integer[] o1, Integer[] o2) {
return o1[0] - o2[0];
}
});
for (Integer[] l : rd)
out.writeLine("%-5s %s", l[0], l[1]);
flushed = true;
rd.clear();
}
if (line.startsWith(" "))
line = line.replaceFirst("\\s+", "");
String[] l = line.split("\\s+");
rd.add(new Integer[] { Integer.valueOf(l[0]), Integer.valueOf(l[1]) });
}
Collections.sort(rd, new Comparator<Integer[]>() {
@Override
public int compare(Integer[] o1, Integer[] o2) {
return o1[0] - o2[0];
}
});
for (Integer[] l : rd)
out.writeLine("%-5s %s", l[0], l[1]);
in.close();
out.flush();
out.close();
}
public static void convertFiles(String sourceDir, String destDir) throws IOException {
List<File> files = Utilities.listFiles(sourceDir, ".+_in\\.txt");
for (File file : files) {
System.out.printf("Converting file %s (dest dir:%s)\n", file.getPath(), destDir);
convertFile(file, destDir);
}
}
/**
* JAVADOC
*
* @param args
*/
public static void main(String[] args) {
try {
convertFiles(sSourceDir, sDestDir);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("FINISHED");
}
}