package de.ugoe.cs.eventbench.jfc.commands;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.security.InvalidParameterException;
import java.util.List;
import de.ugoe.cs.util.console.Command;
import de.ugoe.cs.util.console.Console;
/**
*
* Command to pre-process files written by EventBench's JFCMonitor. The only
* task of the pre-processing is checking if the session was closed properly,
* i.e., if the XML file ends with a {@code } tag. If this is not the
* case, the tag will be appended to the file.
*
*
* @author Steffen Herbold
* @version 1.0
*/
public class CMDpreprocessJFC implements Command {
/*
* (non-Javadoc)
*
* @see de.ugoe.cs.util.console.Command#run(java.util.List)
*/
@Override
public void run(List parameters) {
String source;
String target;
try {
source = (String) parameters.get(0);
target = (String) parameters.get(1);
} catch (Exception e) {
throw new InvalidParameterException();
}
File file = new File(source);
InputStreamReader reader;
try {
FileInputStream fis = new FileInputStream(file);
reader = new InputStreamReader(fis, "UTF-16");
} catch (FileNotFoundException e) {
Console.printerrln(e.getMessage());
return;
} catch (UnsupportedEncodingException e) {
Console.printerrln(e.getMessage());
return;
}
char[] buffer = new char[(int) file.length()];
try {
reader.read(buffer);
reader.close();
} catch (IOException e) {
Console.printerrln(e.getMessage());
return;
}
String content = new String(buffer).trim();
OutputStreamWriter writer;
try {
FileOutputStream fos = new FileOutputStream(target);
writer = new OutputStreamWriter(fos, "UTF-8");
} catch (IOException e) {
Console.printerrln(e.getMessage());
return;
}
try {
writer.write(content);
if (!content.endsWith("")) {
writer.write("");
}
writer.close();
} catch (IOException e) {
Console.printerrln(e.getMessage());
}
}
/*
* (non-Javadoc)
*
* @see de.ugoe.cs.util.console.Command#help()
*/
@Override
public void help() {
Console.println("Usage: preprocessJFC ");
}
}