package org.signalml.util.matfiles.structure.elements;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.signalml.util.matfiles.elements.DataElement;
import org.signalml.util.matfiles.types.DataType;
/**
* This class is responsible for writing the field names
* structure subelement to the MAT file. It contains all
* field names that are used in the structure.
*
* @author Piotr Szachewicz
*/
public class FieldNames extends DataElement {
private List<String> fieldNames = new ArrayList<String>();
private int fieldNameMaximumSize;
public FieldNames(List<String> fieldNames, int fieldNameMaximumSize) {
super(DataType.MI_INT8);
this.fieldNames = fieldNames;
this.fieldNameMaximumSize = fieldNameMaximumSize;
}
@Override
protected int getSizeInBytes() {
return fieldNames.size() * fieldNameMaximumSize;
}
@Override
public void write(DataOutputStream dataOutputStream) throws IOException {
super.write(dataOutputStream);
for (String fieldName: fieldNames) {
for (char c: fieldName.toCharArray()) {
dataOutputStream.write(c);
}
for (int i = fieldName.length(); i < fieldNameMaximumSize; i++)
dataOutputStream.write(0);
}
writePadding(dataOutputStream);
}
}