Renamed serializer classes (removed Data prefix)

Moved SerializerTXT to core project
This commit is contained in:
2013-12-17 15:20:53 +01:00
parent 54fb16a0e9
commit 03c7d84b05
10 changed files with 52 additions and 249 deletions

View File

@@ -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.");

View File

@@ -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);
}
}

View File

@@ -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);
}
}
}

View File

@@ -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;
}

View 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;

View 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;

View 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;
}

View 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;
}

View 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;
}

View 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();
}