package de.mpicbg.knime.knutils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import org.knime.core.data.DataColumnSpec;
import org.knime.core.data.DataColumnSpecCreator;
import org.knime.core.data.DataRow;
import org.knime.core.data.DataTableSpec;
import org.knime.core.data.DataTableSpecCreator;
import org.knime.core.data.DataType;
import org.knime.core.node.BufferedDataTable;
import org.knime.core.node.CanceledExecutionException;
import org.knime.core.node.ExecutionContext;
import org.knime.core.node.port.PortObjectSpec;
/**
* Document me!
*
* @author Holger Brandl
*/
public class BufTableUtils {
public static void main(String[] args) {
}
public static void saveBinary(File dumpFile, Object object) {
try {
ObjectOutputStream objStream = new ObjectOutputStream(new FileOutputStream(dumpFile));
objStream.writeObject(object);
objStream.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static Object loadBinary(File dumpFile) {
try {
ObjectInputStream inStream = new ObjectInputStream(new FileInputStream(dumpFile));
return inStream.readObject();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
return null;
}
public static List<DataRow> toList(BufferedDataTable input) {
List<DataRow> data = new ArrayList<DataRow>();
for (DataRow dataRow : input) {
data.add(dataRow);
}
return data;
}
/**
* check if the execution monitor was canceled.
*/
public static void updateProgress(ExecutionContext exec, long done, long all) throws CanceledExecutionException {
exec.checkCanceled();
exec.setProgress((double) done / (double) all);
}
/**
* creates a data table spec based on a hash map with column names and types
* @param columns
* @return new data table spec
*/
public static DataTableSpec createNewDataTableSpec(LinkedHashMap<String, DataType> columns) {
DataColumnSpecCreator colSpecCreator = null;
DataColumnSpec[] cSpecList = new DataColumnSpec[columns.size()];
int i = 0;
for(String columnName : columns.keySet()) {
colSpecCreator = new DataColumnSpecCreator(columnName, columns.get(columnName));
cSpecList[i] = colSpecCreator.createSpec();
i++;
}
DataTableSpecCreator specCreator = new DataTableSpecCreator();
specCreator.addColumns(cSpecList);
return specCreator.createSpec();
}
}