package com.mongodb.hvdf.api;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.mongodb.DBObject;
import com.mongodb.hvdf.util.JSONParam;
import org.bson.types.ObjectId;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Sample extends MongoDataObject {
public static final String ID_KEY = "_id";
public static final String SOURCE_KEY = "source";
public static final String TS_KEY = "ts";
public static final String DATA_KEY = "data";
public Sample(final DBObject obj) {
super(obj);
}
public Sample(final Source source,
final long timeStamp, final JSONParam data) {
super();
_dbObject.put(ID_KEY, new ObjectId());
_dbObject.put(SOURCE_KEY, source.getSourceId());
_dbObject.put(TS_KEY, timeStamp != 0 ? timeStamp : System.currentTimeMillis());
if(data != null)
_dbObject.put(DATA_KEY, data.toDBObject());
}
@JsonIgnore
public Object getId() {
return _dbObject.get(ID_KEY);
}
@JsonProperty("_id")
public String getIdAsString() {
return _dbObject.get("_id").toString();
}
@JsonProperty("ts")
public long getTimeStamp() {
return (Long) _dbObject.get(TS_KEY);
}
@JsonProperty("source")
public String getSourceId() {
return (String) _dbObject.get(SOURCE_KEY);
}
@JsonProperty("data")
public DBObject getData() {
return (DBObject) _dbObject.get(DATA_KEY);
}
}