Exemple #1
0
        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;
        }
Exemple #2
0
        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);
        }
Exemple #3
0
            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);
            }