*
* @param re Buffer to serialize to
* @param id Object ID
*/
protected void bundleToJSON(JSONBuffer re, DBID id) {
SingleObjectBundle bundle = db.getBundle(id);
if(bundle != null) {
for(int j = 0; j < bundle.metaLength(); j++) {
final Object data = bundle.data(j);
// TODO: refactor to JSONFormatters!
// Format a NumberVector
if(data instanceof NumberVector) {
NumberVector<?, ?> v = (NumberVector<?, ?>) data;
re.appendKeyArray(bundle.meta(j));
for(int i = 0; i < v.getDimensionality(); i++) {
re.append(v.doubleValue(i + 1));
}
re.closeArray();
}
// Format a Polygon
else if(data instanceof PolygonsObject) {
re.appendKeyArray(bundle.meta(j));
for(Polygon p : ((PolygonsObject) data).getPolygons()) {
re.startArray();
for(int i = 0; i < p.size(); i++) {
Vector point = p.get(i);
re.append(point.getArrayRef());
}
re.closeArray();
}
re.closeArray();
}
// Default serialization as string
else {
re.appendKeyValue(bundle.meta(j), data);
}
if(logger.isDebuggingFiner()) {
re.appendNewline();
}
}