package rescuecore2.log;
import static rescuecore2.misc.EncodingTools.writeInt32;
import static rescuecore2.misc.EncodingTools.writeString;
import static rescuecore2.misc.EncodingTools.readInt32;
import static rescuecore2.misc.EncodingTools.readString;
import java.io.OutputStream;
import java.io.InputStream;
import java.io.IOException;
import java.util.Set;
import rescuecore2.config.Config;
/**
A configuration record.
*/
public class ConfigRecord implements LogRecord {
private Config config;
/**
Construct a new ConfigRecord.
@param config The Config to record.
*/
public ConfigRecord(Config config) {
this.config = config;
}
/**
Construct a new ConfigRecord and read data from an InputStream.
@param in The InputStream to read from.
@throws IOException If there is a problem reading the stream.
*/
public ConfigRecord(InputStream in) throws IOException {
read(in);
}
@Override
public RecordType getRecordType() {
return RecordType.CONFIG;
}
@Override
public void write(OutputStream out) throws IOException {
Set<String> all = config.getAllKeys();
writeInt32(all.size(), out);
for (String key : all) {
String value = config.getValue(key);
writeString(key, out);
writeString(value, out);
}
}
@Override
public void read(InputStream in) throws IOException {
config = new Config();
int size = readInt32(in);
for (int i = 0; i < size; ++i) {
String key = readString(in);
String value = readString(in);
config.setValue(key, value);
}
}
/**
Get the Config.
@return The config.
*/
public Config getConfig() {
return config;
}
}