package plugins.archiveexportimport; import java.io.File; import java.io.IOException; import java.util.List; import matrix.AbstractDataMatrixInstance; import matrix.DataMatrixInstance; import matrix.general.DataMatrixHandler; import org.molgenis.data.Data; import org.molgenis.framework.db.Database; import org.molgenis.framework.db.DatabaseException; import org.molgenis.organization.Investigation; import org.molgenis.util.TarGz; public class XgapMatrixExport { public static void exportMatrix(List<Data> dataList, String investigationName, Database db, File directory) throws IllegalArgumentException, DatabaseException, IOException, Exception { DataMatrixHandler dmh = new DataMatrixHandler(db); // Data matrices if (dataList.size() > 0) { // null indicates all investigations, but only do this if there are // actually more than 1 investigation in the db if (investigationName == null && db.find(Investigation.class).size() > 1) { for (Data data : dataList) { // Investigation inv = db.find(Investigation.class, new // QueryRule("id", Operator.EQUALS, // data.getInvestigation())).get(0); // File dataDir = new File(directory + File.separator + // NameConvention.escapeFileName(inv.getName())+ "_data"); File dataDir = new File(directory + File.separator + "data"); if (!dataDir.exists()) { dataDir.mkdir(); } DataMatrixInstance instance = dmh.createInstance(data, db); File matrixFile = instance.getAsFile(); File newLoc = new File(dataDir.getAbsolutePath() + File.separator + matrixFile.getName()); // boolean createDestSuccess = newLoc.createNewFile(); // if(!createDestSuccess){ // throw new Exception("Creation if destination file " + // newLoc.getAbsolutePath() + " failed."); // } TarGz.fileCopy(matrixFile, newLoc, false); // File f = new File(dataDir.getAbsolutePath() + // File.separator + data.getName() + ".txt"); // PrintWriter out = new PrintWriter(new // FileOutputStream(f)); // MatrixViewPlugin.downloadAll(db, data, BATCH_SIZE, out); } } else { File dataDir = new File(directory + File.separator + "data"); if (!dataDir.exists()) { dataDir.mkdir(); } for (Data data : dataList) { DataMatrixInstance instance = dmh.createInstance(data, db); File matrixFile = instance.getAsFile(); File newLoc = new File(dataDir.getAbsolutePath() + File.separator + matrixFile.getName()); TarGz.fileCopy(matrixFile, newLoc, false); // File f = new File(dataDir + File.separator + // data.getName() + ".txt"); // PrintWriter out = new PrintWriter(new // FileOutputStream(f)); // MatrixViewPlugin.downloadAll(db, data, BATCH_SIZE, out); } } } } }