Project

General

Profile

1
package eu.dnetlib.data.mdstore.mongo.codec;
2

    
3
import eu.dnetlib.data.mdstore.model.MDStoreRecord;
4
import org.apache.commons.lang3.StringUtils;
5
import org.bson.BsonReader;
6
import org.bson.BsonWriter;
7
import org.bson.codecs.Codec;
8
import org.bson.codecs.DecoderContext;
9
import org.bson.codecs.EncoderContext;
10
import org.springframework.stereotype.Component;
11

    
12
import static eu.dnetlib.data.mdstore.MDStoreConstants.*;
13

    
14
/**
15
 * Created by claudio on 20/03/2017.
16
 */
17
@Component
18
public class MDStoreRecordCodec implements Codec<MDStoreRecord> {
19

    
20
	@Override
21
	public MDStoreRecord decode(final BsonReader reader, final DecoderContext decoderContext) {
22
		reader.readStartDocument();
23
		reader.readObjectId();
24
		final MDStoreRecord record = MDStoreRecord.create()
25
				.setId(reader.readString(ID))
26
				.setOriginalId(reader.readString(ORIGINAL_ID))
27
				.setTimestamp(reader.readInt64(TIMESTAMP))
28
				.setBody(reader.readString(BODY));
29
		reader.readEndDocument();
30
		return record;
31
	}
32

    
33
	@Override
34
	public void encode(final BsonWriter writer, final MDStoreRecord r, final EncoderContext encoderContext) {
35
		writer.writeStartDocument();
36
		writer.writeString(ID, StringUtils.isNotBlank(r.getId()) ? r.getId() : "");
37
		writer.writeString(ORIGINAL_ID, StringUtils.isNotBlank(r.getOriginalId()) ? r.getOriginalId() : "");
38
		writer.writeInt64(TIMESTAMP, r.getTimestamp());
39
		writer.writeString(BODY, r.getBody());
40
		writer.writeEndDocument();
41
	}
42

    
43
	@Override
44
	public Class<MDStoreRecord> getEncoderClass() {
45
		return MDStoreRecord.class;
46
	}
47
}
(4-4/4)