}
String extension = fileName.getName()
.substring(fileName.getName().lastIndexOf(".") + 1)
.toLowerCase();
Task newTask = null;
if (extension.endsWith("mzdata")) {
newTask = new MzDataReadTask(fileName, newMZmineFile);
}
if (extension.endsWith("mzxml")) {
newTask = new MzXMLReadTask(fileName, newMZmineFile);
}
if (extension.endsWith("mzml")) {
newTask = new MzMLReadTask(fileName, newMZmineFile);
}
if (extension.endsWith("cdf")) {
newTask = new NetCDFReadTask(fileName, newMZmineFile);
}
if (extension.endsWith("raw")) {
newTask = new XcaliburRawFileReadTask(fileName, newMZmineFile);
}
if (extension.endsWith("xml")) {
try {
// Check the first 512 bytes of the file, to determine the
// file type
FileReader reader = new FileReader(fileName);
char buffer[] = new char[512];
reader.read(buffer);
reader.close();
String fileHeader = new String(buffer);
if (fileHeader.contains("mzXML")) {
newTask = new MzXMLReadTask(fileName, newMZmineFile);
}
if (fileHeader.contains("mzData")) {
newTask = new MzDataReadTask(fileName, newMZmineFile);
}
if (fileHeader.contains("mzML")) {
newTask = new MzMLReadTask(fileName, newMZmineFile);
}
} catch (Exception e) {
logger.warning("Cannot read file " + fileName + ": " + e);
return true;
}
}
if (extension.endsWith("csv")) {
newTask = chooseCsvReadTask(fileName, newMZmineFile);
}
if (newTask == null) {
logger.warning("Cannot determine file type of file " + fileName);
return true;
}
newTask.addTaskListener(this);
tasks.add(newTask);
return false;
}