package com.mongodb.hvdf.oid;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.hvdf.api.Sample;
public class SourceTimeDocumentId implements SampleId {
private long time = 0;
private Object source = null;
private DBObject oid = null;
public SourceTimeDocumentId(Object source, long timeStamp) {
time = timeStamp;
}
public SourceTimeDocumentId(Object docId) {
oid = (DBObject)docId;
}
@Override
public boolean embedsTime() {
return true;
}
@Override
public boolean embedsSource() {
return true;
}
@Override
public long getTime() {
// If the time is not known and the oid exists
// extract the time from the oid
if(time == 0 && oid != null){
time = ((Long)oid.get(Sample.TS_KEY));
}
return time;
}
@Override
public Object getSourceId() {
if(source == null && oid != null){
source = oid.get(Sample.SOURCE_KEY);
}
return source;
}
@Override
public Object toObject() {
if(oid == null){
oid = new BasicDBObject(Sample.SOURCE_KEY, this.source).append(Sample.TS_KEY, time);
}
return oid;
}
}