private void DoStore(IStorable storable, IAuditMetadata auditMeta) { AuditOperation operation = AuditOperation.UPDATE; // ensure db id StorableDocument doc = (StorableDocument)storable; long dbId = doc.DbId is long?(long)doc.DbId : -1; if (dbId == -1) { dbId = ++lastDbId; storable.SetData("dbId", dbId); } IDictionary <string, object> document = new Dictionary <string, object>(); if (documents.ContainsKey(dbId)) { documents[dbId].Document.ToList().ForEach(kvp => document[kvp.Key] = kvp.Value); } else { operation = AuditOperation.INSERT; } doc.Document.ToList().ForEach(kvp => document[kvp.Key] = kvp.Value); doc = new StorableDocument(doc.Categories, null); doc.Document = document; documents[dbId] = doc; AuditRecord audit = NewAuditRecord(auditMeta); audit.InstanceDbId = dbId; audit.Operation = operation; audit.Instance = doc; auditRecords[audit.DbId] = audit; }
private DataTuple ReadTuple(StorableDocument doc, ICollection <OrderBy> orderBy) { DataTuple tuple = new DataTuple(); foreach (OrderBy o in orderBy) { tuple.Add(doc.GetData(o.getAttributeInfo().getName())); } return(tuple); }
public StorableDocument Project(List <string> fieldNames) { Dictionary <string, object> remaining = new Dictionary <string, object>(); foreach (string name in fieldNames) { remaining[name] = GetData(name); } remaining["category"] = GetData("category"); remaining["dbId"] = GetData("dbId"); StorableDocument doc = new StorableDocument(categories, dbIdFactory); doc.document = remaining; return(doc); }