package org.jnect.emfstore; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.eclipse.core.runtime.IProgressMonitor; import org.jnect.bodymodel.Body; public class MockBodyBuffer extends BodyBuffer { private List<float[]> loadedBody; public MockBodyBuffer(String pathToHDBuffer) { super(); File buffFile = new File(pathToHDBuffer); if (!buffFile.exists()) { printNoBuffMessage(); return; } loadedBody = new ArrayList<float[]>(); BufferedReader floatArrayReader = null; try { floatArrayReader = new BufferedReader(new FileReader(buffFile)); String line; while ((line = floatArrayReader.readLine()) != null) { String[] stringVals = line.split(" "); float[] vals = new float[stringVals.length]; assert stringVals.length == 0 || stringVals.length == NEEDED_CHANGES; // 0 for empty lines for (int i = 0; i < stringVals.length; i++) { vals[i] = Float.valueOf(stringVals[i]); } if (vals.length == NEEDED_CHANGES) loadedBody.add(vals); } } catch (FileNotFoundException e) { printNoBuffMessage(); e.printStackTrace(); } catch (IOException e) { printNoBuffMessage(); e.printStackTrace(); } finally { try { if (floatArrayReader != null) floatArrayReader.close(); } catch (IOException e) { e.printStackTrace(); } } buffer.addAll(loadedBody); } @Override public void flushToBody(Body flushBody, ICommitter committer, int commitResolution, IProgressMonitor monitor) { super.flushToBody(flushBody, committer, commitResolution, monitor); // for easier testing, the body buffer is never cleared buffer.addAll(loadedBody); } private void printNoBuffMessage() { System.out.println("Could not load the hard disk buffer."); } }