Renamed serializer classes (removed Data prefix)
Moved SerializerTXT to core project
This commit is contained in:
@@ -38,13 +38,13 @@ import com.google.common.eventbus.EventBus;
|
||||
import ch.psi.fda.deserializer.DataDeserializer;
|
||||
import ch.psi.fda.deserializer.DataDeserializerMDA;
|
||||
import ch.psi.fda.deserializer.DataDeserializerTXT;
|
||||
import ch.psi.fda.serializer.DataSerializerMAT;
|
||||
import ch.psi.fda.serializer.DataSerializerMAT2D;
|
||||
import ch.psi.fda.serializer.DataSerializerMAT2DZigZag;
|
||||
import ch.psi.fda.serializer.DataSerializerMDA;
|
||||
import ch.psi.fda.serializer.DataSerializerTXT;
|
||||
import ch.psi.fda.serializer.DataSerializerTXT2D;
|
||||
import ch.psi.fda.serializer.DataSerializerTXTSplit;
|
||||
import ch.psi.fda.serializer.SerializerMAT;
|
||||
import ch.psi.fda.serializer.SerializerMAT2D;
|
||||
import ch.psi.fda.serializer.SerializerMAT2DZigZag;
|
||||
import ch.psi.fda.serializer.SerializerMDA;
|
||||
import ch.psi.fda.serializer.SerializerTXT;
|
||||
import ch.psi.fda.serializer.SerializerTXT2D;
|
||||
import ch.psi.fda.serializer.SerializerTXTSplit;
|
||||
|
||||
/**
|
||||
* Converter to convert the format of datafiles
|
||||
@@ -98,25 +98,25 @@ public class ConversionMain {
|
||||
}
|
||||
|
||||
if(writer.equals(Writer.MAT)){
|
||||
bus.register(new DataSerializerMAT(output));
|
||||
bus.register(new SerializerMAT(output));
|
||||
}
|
||||
else if(writer.equals(Writer.MAT_2D)){
|
||||
bus.register(new DataSerializerMAT2D(output));
|
||||
bus.register(new SerializerMAT2D(output));
|
||||
}
|
||||
else if(writer.equals(Writer.TXT)){
|
||||
bus.register(new DataSerializerTXT(output, false));
|
||||
bus.register(new SerializerTXT(output, false));
|
||||
}
|
||||
else if(writer.equals(Writer.TXT_2D)){
|
||||
bus.register(new DataSerializerTXT2D(output));
|
||||
bus.register(new SerializerTXT2D(output));
|
||||
}
|
||||
else if(writer.equals(Writer.TXT_SPLIT)){
|
||||
bus.register(new DataSerializerTXTSplit(output));
|
||||
bus.register(new SerializerTXTSplit(output));
|
||||
}
|
||||
else if(writer.equals(Writer.MDA)){
|
||||
bus.register(new DataSerializerMDA(output));
|
||||
bus.register(new SerializerMDA(output));
|
||||
}
|
||||
else if(writer.equals(Writer.MAT_2D_Z)){
|
||||
bus.register(new DataSerializerMAT2DZigZag(output));
|
||||
bus.register(new SerializerMAT2DZigZag(output));
|
||||
}
|
||||
else{
|
||||
throw new IllegalArgumentException("Writer of type "+writer+" not supported.");
|
||||
|
||||
@@ -106,7 +106,7 @@ import ch.psi.fda.model.v1.SimpleScalarDetector;
|
||||
import ch.psi.fda.model.v1.Timestamp;
|
||||
import ch.psi.fda.model.v1.Variable;
|
||||
import ch.psi.fda.model.v1.VariableParameterMapping;
|
||||
import ch.psi.fda.serializer.DataSerializerTXT;
|
||||
import ch.psi.fda.serializer.SerializerTXT;
|
||||
import ch.psi.jcae.Channel;
|
||||
import ch.psi.jcae.ChannelDescriptor;
|
||||
import ch.psi.jcae.ChannelException;
|
||||
@@ -130,7 +130,7 @@ public class Acquisition {
|
||||
|
||||
private ActionLoop actionLoop;
|
||||
private Manipulator manipulator;
|
||||
private DataSerializerTXT serializer;
|
||||
private SerializerTXT serializer;
|
||||
|
||||
private List<Manipulation> manipulations;
|
||||
private volatile boolean active = false;
|
||||
@@ -250,7 +250,7 @@ public class Acquisition {
|
||||
b.register(this.manipulator);
|
||||
|
||||
|
||||
this.serializer = new DataSerializerTXT(datafile, true);
|
||||
this.serializer = new SerializerTXT(datafile, true);
|
||||
bus.register(serializer);
|
||||
}
|
||||
else{
|
||||
@@ -259,7 +259,7 @@ public class Acquisition {
|
||||
mapScan(collector, smodel);
|
||||
// col = collector;
|
||||
|
||||
this.serializer = new DataSerializerTXT(datafile, true);
|
||||
this.serializer = new SerializerTXT(datafile, true);
|
||||
bus.register(serializer);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,197 +0,0 @@
|
||||
/**
|
||||
*
|
||||
* Copyright 2010 Paul Scherrer Institute. All rights reserved.
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful,
|
||||
* but without any warranty; without even the implied warranty of
|
||||
* merchantability or fitness for a particular purpose. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this code. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
package ch.psi.fda.serializer;
|
||||
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import com.google.common.eventbus.Subscribe;
|
||||
|
||||
import ch.psi.fda.messages.DataMessage;
|
||||
import ch.psi.fda.messages.EndOfStreamMessage;
|
||||
import ch.psi.fda.messages.Message;
|
||||
import ch.psi.fda.messages.Metadata;
|
||||
import ch.psi.fda.messages.StreamDelimiterMessage;
|
||||
|
||||
/**
|
||||
* Serialize data received by a DataQueue
|
||||
*/
|
||||
public class DataSerializerTXT {
|
||||
|
||||
private static final Logger logger = Logger.getLogger(DataSerializerTXT.class.getName());
|
||||
|
||||
private File file;
|
||||
|
||||
private boolean appendSuffix = true;
|
||||
|
||||
|
||||
private boolean first = true;
|
||||
private File outfile;
|
||||
|
||||
private int icount;
|
||||
private String basename;
|
||||
private String extension;
|
||||
private boolean newfile;
|
||||
private boolean dataInBetween;
|
||||
private BufferedWriter writer;
|
||||
private StringBuffer b;
|
||||
private StringBuffer b1;
|
||||
|
||||
|
||||
/**
|
||||
* @param metadata
|
||||
* @param file
|
||||
* @param appendSuffix Flag whether to append a _0000 suffix after the original file name
|
||||
*/
|
||||
public DataSerializerTXT(File file, boolean appendSuffix){
|
||||
this.file = file;
|
||||
this.appendSuffix = appendSuffix;
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onMessage(Message message){
|
||||
try{
|
||||
if(first){
|
||||
first=false;
|
||||
// Write header
|
||||
|
||||
|
||||
|
||||
icount = 0;
|
||||
newfile = true;
|
||||
dataInBetween = false;
|
||||
writer = null;
|
||||
|
||||
// Get basename of the file
|
||||
basename = this.file.getAbsolutePath(); // Determine file name
|
||||
extension = basename.replaceAll("^.*\\.", ""); // Determine extension
|
||||
basename = basename.replaceAll("\\."+extension+"$", "");
|
||||
}
|
||||
|
||||
if(message instanceof DataMessage){
|
||||
dataInBetween = true;
|
||||
if(newfile){
|
||||
|
||||
b = new StringBuffer();
|
||||
b1 = new StringBuffer();
|
||||
b.append("#");
|
||||
b1.append("#");
|
||||
for(Metadata c: ((DataMessage) message).getMetadata()){
|
||||
|
||||
b.append(c.getId());
|
||||
b.append("\t");
|
||||
|
||||
b1.append(c.getDimension());
|
||||
b1.append("\t");
|
||||
}
|
||||
b.setCharAt(b.length()-1, '\n');
|
||||
b1.setCharAt(b1.length()-1, '\n');
|
||||
|
||||
// Open new file and write header
|
||||
// Construct file name
|
||||
if(appendSuffix){
|
||||
outfile = new File(String.format("%s_%04d.%s", basename, icount, extension));
|
||||
}
|
||||
else{
|
||||
outfile = new File(String.format("%s.%s", basename, extension));
|
||||
}
|
||||
|
||||
// Open file
|
||||
logger.fine("Open new data file: "+outfile.getAbsolutePath());
|
||||
writer = new BufferedWriter(new FileWriter(outfile));
|
||||
|
||||
// Write header
|
||||
writer.write(b.toString());
|
||||
writer.write(b1.toString());
|
||||
|
||||
newfile=false;
|
||||
}
|
||||
|
||||
// Write message to file - each message will result in one line
|
||||
DataMessage m = (DataMessage) message;
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
for(Object o: m.getData()){
|
||||
if(o.getClass().isArray()){
|
||||
// If the array object is of type double[] display its content
|
||||
if(o instanceof double[]){
|
||||
double[] oa = (double[]) o;
|
||||
for(double o1 : oa){
|
||||
buffer.append(o1);
|
||||
buffer.append(" "); // Use space instead of tab
|
||||
}
|
||||
buffer.replace(buffer.length()-1,buffer.length()-1 , "\t"); // Replace last space with tab
|
||||
}
|
||||
else if(o instanceof Object[]){
|
||||
// TODO need to be recursive ...
|
||||
Object[] oa = (Object[])o;
|
||||
for(Object o1 : oa){
|
||||
buffer.append(o1);
|
||||
buffer.append(" "); // Use space instead of tab
|
||||
}
|
||||
buffer.replace(buffer.length()-1,buffer.length()-1 , "\t"); // Replace last space with tab
|
||||
}
|
||||
else{
|
||||
buffer.append("-"); // Not supported
|
||||
}
|
||||
}
|
||||
else{
|
||||
buffer.append(o);
|
||||
buffer.append("\t");
|
||||
}
|
||||
}
|
||||
|
||||
if(buffer.length()>0){
|
||||
buffer.deleteCharAt(buffer.length()-1); // Remove last character (i.e. \t)
|
||||
buffer.append("\n"); // Append newline
|
||||
}
|
||||
writer.write(buffer.toString());
|
||||
}
|
||||
else if(message instanceof StreamDelimiterMessage){
|
||||
StreamDelimiterMessage m = (StreamDelimiterMessage) message;
|
||||
logger.info("Delimiter - number: "+m.getNumber()+" iflag: "+m.isIflag());
|
||||
if(m.isIflag() && appendSuffix){
|
||||
// Only increase iflag counter if there was data in between
|
||||
// subsequent StreamDelimiterMessages.
|
||||
if(dataInBetween){
|
||||
icount++;
|
||||
}
|
||||
dataInBetween = false;
|
||||
|
||||
// Set flag to open new file
|
||||
newfile = true;
|
||||
|
||||
// Close file
|
||||
writer.close();
|
||||
}
|
||||
}
|
||||
else if (message instanceof EndOfStreamMessage){
|
||||
if(writer!=null){
|
||||
// Close file
|
||||
writer.close(); //If the stream was closed previously this has no effect
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("Data serializer had a problem writing to the specified file",e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -37,7 +37,7 @@ import ch.psi.fda.messages.Metadata;
|
||||
/**
|
||||
* Serialize data received by a DataQueue into a Matlab file
|
||||
*/
|
||||
public class DataSerializerMAT {
|
||||
public class SerializerMAT {
|
||||
|
||||
private File file;
|
||||
|
||||
@@ -49,7 +49,7 @@ public class DataSerializerMAT {
|
||||
* @param queue Data queue holding the data to serialize
|
||||
* @param file Name of the Matlab file to serialize the data to
|
||||
*/
|
||||
public DataSerializerMAT(File file){
|
||||
public SerializerMAT(File file){
|
||||
this.file = file;
|
||||
}
|
||||
|
||||
@@ -39,9 +39,9 @@ import ch.psi.fda.messages.StreamDelimiterMessage;
|
||||
/**
|
||||
* Serialize data received by a DataQueue into a Matlab file
|
||||
*/
|
||||
public class DataSerializerMAT2D {
|
||||
public class SerializerMAT2D {
|
||||
|
||||
private static final Logger logger = Logger.getLogger(DataSerializerMAT2D.class.getName());
|
||||
private static final Logger logger = Logger.getLogger(SerializerMAT2D.class.getName());
|
||||
|
||||
private File file;
|
||||
private boolean appendSuffix = false;
|
||||
@@ -61,7 +61,7 @@ public class DataSerializerMAT2D {
|
||||
* @param queue Data queue holding the data to serialize
|
||||
* @param file Name of the Matlab file to serialize the data to
|
||||
*/
|
||||
public DataSerializerMAT2D(File file){
|
||||
public SerializerMAT2D(File file){
|
||||
this.file = file;
|
||||
|
||||
|
||||
@@ -40,9 +40,9 @@ import ch.psi.fda.messages.StreamDelimiterMessage;
|
||||
/**
|
||||
* Serialize data received by a DataQueue into a Matlab file
|
||||
*/
|
||||
public class DataSerializerMAT2DZigZag {
|
||||
public class SerializerMAT2DZigZag {
|
||||
|
||||
private static final Logger logger = Logger.getLogger(DataSerializerMAT2DZigZag.class.getName());
|
||||
private static final Logger logger = Logger.getLogger(SerializerMAT2DZigZag.class.getName());
|
||||
|
||||
private List<Metadata> metadata;
|
||||
private File file;
|
||||
@@ -66,7 +66,7 @@ public class DataSerializerMAT2DZigZag {
|
||||
* @param queue Data queue holding the data to serialize
|
||||
* @param file Name of the Matlab file to serialize the data to
|
||||
*/
|
||||
public DataSerializerMAT2DZigZag(File file){
|
||||
public SerializerMAT2DZigZag(File file){
|
||||
this.file = file;
|
||||
|
||||
|
||||
@@ -43,9 +43,9 @@ import ch.psi.fda.messages.StreamDelimiterMessage;
|
||||
*
|
||||
* http://www.aps.anl.gov/bcda/synApps/sscan/saveData_fileFormat.txt
|
||||
*/
|
||||
public class DataSerializerMDA {
|
||||
public class SerializerMDA {
|
||||
|
||||
private static final Logger logger = Logger.getLogger(DataSerializerMDA.class.getName());
|
||||
private static final Logger logger = Logger.getLogger(SerializerMDA.class.getName());
|
||||
|
||||
private File file;
|
||||
|
||||
@@ -59,7 +59,7 @@ public class DataSerializerMDA {
|
||||
private HashMap<Integer,List<String>> idMap;
|
||||
private int numberOfDimensions;
|
||||
|
||||
public DataSerializerMDA(File file){
|
||||
public SerializerMDA(File file){
|
||||
this.file = file;
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ import ch.psi.fda.messages.StreamDelimiterMessage;
|
||||
/**
|
||||
* Serialize data received by a DataQueue into a Matlab file
|
||||
*/
|
||||
public class DataSerializerTXT2D {
|
||||
public class SerializerTXT2D {
|
||||
|
||||
private File file;
|
||||
private boolean appendSuffix = false;
|
||||
@@ -56,7 +56,7 @@ public class DataSerializerTXT2D {
|
||||
* @param queue Data queue holding the data to serialize
|
||||
* @param file Name of the Matlab file to serialize the data to
|
||||
*/
|
||||
public DataSerializerTXT2D(File file){
|
||||
public SerializerTXT2D(File file){
|
||||
this.file = file;
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ import ch.psi.fda.messages.StreamDelimiterMessage;
|
||||
/**
|
||||
* Serialize data received by a DataQueue
|
||||
*/
|
||||
public class DataSerializerTXTSplit {
|
||||
public class SerializerTXTSplit {
|
||||
|
||||
private File file;
|
||||
|
||||
@@ -47,7 +47,7 @@ public class DataSerializerTXTSplit {
|
||||
private List<String> header;
|
||||
private List<String> data;
|
||||
|
||||
public DataSerializerTXTSplit(File file) {
|
||||
public SerializerTXTSplit(File file) {
|
||||
this.file = file;
|
||||
}
|
||||
|
||||
@@ -33,11 +33,11 @@ import ch.psi.fda.messages.DataMessage;
|
||||
import ch.psi.fda.messages.EndOfStreamMessage;
|
||||
import ch.psi.fda.messages.Metadata;
|
||||
import ch.psi.fda.messages.StreamDelimiterMessage;
|
||||
import ch.psi.fda.serializer.DataSerializerMAT;
|
||||
import ch.psi.fda.serializer.DataSerializerMAT2D;
|
||||
import ch.psi.fda.serializer.DataSerializerTXT;
|
||||
import ch.psi.fda.serializer.DataSerializerTXT2D;
|
||||
import ch.psi.fda.serializer.DataSerializerTXTSplit;
|
||||
import ch.psi.fda.serializer.SerializerMAT;
|
||||
import ch.psi.fda.serializer.SerializerMAT2D;
|
||||
import ch.psi.fda.serializer.SerializerTXT;
|
||||
import ch.psi.fda.serializer.SerializerTXT2D;
|
||||
import ch.psi.fda.serializer.SerializerTXTSplit;
|
||||
|
||||
|
||||
public class SerializerTest {
|
||||
@@ -146,79 +146,79 @@ public class SerializerTest {
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for {@link ch.psi.fda.serializer.DataSerializerTXT#run()}.
|
||||
* Test method for {@link ch.psi.fda.serializer.SerializerTXT#run()}.
|
||||
* @throws InterruptedException
|
||||
*/
|
||||
@Test
|
||||
public void testRunTXT() throws InterruptedException {
|
||||
DataSerializerTXT serializer = new DataSerializerTXT(new File(tmpDirectory+"/test.txt"), true);
|
||||
SerializerTXT serializer = new SerializerTXT(new File(tmpDirectory+"/test.txt"), true);
|
||||
bus.register(serializer);
|
||||
generate1DData();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for {@link ch.psi.fda.serializer.DataSerializerTXT#run()}.
|
||||
* Test method for {@link ch.psi.fda.serializer.SerializerTXT#run()}.
|
||||
* @throws InterruptedException
|
||||
*/
|
||||
@Test
|
||||
public void testRunMAT() throws InterruptedException {
|
||||
|
||||
DataSerializerMAT serializer = new DataSerializerMAT(new File(tmpDirectory+"/test.mat"));
|
||||
SerializerMAT serializer = new SerializerMAT(new File(tmpDirectory+"/test.mat"));
|
||||
bus.register(serializer);
|
||||
generate1DData();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for {@link ch.psi.fda.serializer.DataSerializerTXT#run()}.
|
||||
* Test method for {@link ch.psi.fda.serializer.SerializerTXT#run()}.
|
||||
* @throws InterruptedException
|
||||
*/
|
||||
@Test
|
||||
public void testRunMAT2D() throws InterruptedException {
|
||||
DataSerializerMAT2D serializer = new DataSerializerMAT2D(new File(tmpDirectory+"/test-2d.mat"));
|
||||
SerializerMAT2D serializer = new SerializerMAT2D(new File(tmpDirectory+"/test-2d.mat"));
|
||||
bus.register(serializer);
|
||||
generate2DData();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for {@link ch.psi.fda.serializer.DataSerializerTXT#run()}.
|
||||
* Test method for {@link ch.psi.fda.serializer.SerializerTXT#run()}.
|
||||
* @throws InterruptedException
|
||||
*/
|
||||
@Test
|
||||
public void testRunTXT2D() throws InterruptedException {
|
||||
DataSerializerTXT2D serializer = new DataSerializerTXT2D(new File(tmpDirectory+"/test-2d.txt"));
|
||||
SerializerTXT2D serializer = new SerializerTXT2D(new File(tmpDirectory+"/test-2d.txt"));
|
||||
bus.register(serializer);
|
||||
generate2DData();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for {@link ch.psi.fda.serializer.DataSerializerTXT#run()}.
|
||||
* Test method for {@link ch.psi.fda.serializer.SerializerTXT#run()}.
|
||||
* @throws InterruptedException
|
||||
*/
|
||||
@Test
|
||||
public void testRunSplitTXT() throws InterruptedException {
|
||||
DataSerializerTXTSplit serializer = new DataSerializerTXTSplit(new File(tmpDirectory+"/test-2d-split.txt"));
|
||||
SerializerTXTSplit serializer = new SerializerTXTSplit(new File(tmpDirectory+"/test-2d-split.txt"));
|
||||
bus.register(serializer);
|
||||
generate2DData();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for {@link ch.psi.fda.serializer.DataSerializerMDA#run()}.
|
||||
* Test method for {@link ch.psi.fda.serializer.SerializerMDA#run()}.
|
||||
* @throws InterruptedException
|
||||
*/
|
||||
@Test
|
||||
public void testRun2D() throws InterruptedException {
|
||||
DataSerializerMDA serializer = new DataSerializerMDA(new File(tmpDirectory+"/test-2d.mda"));
|
||||
SerializerMDA serializer = new SerializerMDA(new File(tmpDirectory+"/test-2d.mda"));
|
||||
bus.register(serializer);
|
||||
generate2DData();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for {@link ch.psi.fda.serializer.DataSerializerMDA#run()}.
|
||||
* Test method for {@link ch.psi.fda.serializer.SerializerMDA#run()}.
|
||||
* @throws InterruptedException
|
||||
*/
|
||||
@Test
|
||||
public void testRun3D() throws InterruptedException {
|
||||
DataSerializerMDA serializer = new DataSerializerMDA(new File(tmpDirectory+"/test-3d.mda"));
|
||||
SerializerMDA serializer = new SerializerMDA(new File(tmpDirectory+"/test-3d.mda"));
|
||||
bus.register(serializer);
|
||||
generate3DData();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user