package org.apache.kafka.connect.mongodb.converter;

import org.apache.kafka.connect.data.Schema;
import org.apache.kafka.connect.data.Struct;
import org.bson.BsonTimestamp;
import org.bson.Document;

/**
 * Struct converter who stores mongodb document as Json String.
 * 
 * @author André Ignacio
 */
public class JsonStructConverter implements StructConverter {

	@Override
	public Struct toStruct(Document document, Schema schema) {
		final Struct messageStruct = new Struct(schema);
		final BsonTimestamp bsonTimestamp = (BsonTimestamp) document.get("ts");
		final Integer seconds = bsonTimestamp.getTime();
		final Integer order = bsonTimestamp.getInc();
		messageStruct.put("timestamp", seconds);
		messageStruct.put("order", order);
		messageStruct.put("operation", document.get("op"));
		messageStruct.put("database", document.get("ns"));
		
		final Document modifiedDocument = (Document) document.get("o");
		messageStruct.put("object", modifiedDocument.toJson());

		return messageStruct;
	}

}