public override WriteModel <T> GetWriteModelForUpdate(TrackedModel <T> trackedModel)
        {
            var updateDefinition = GetUpdateDefinitionForObject(trackedModel.DirtyTracker, typeof(T), trackedModel.Model);

            return(new UpdateOneModel <T>(GenericBsonFilters.MatchSingleById(trackedModel.Model),
                                          updateDefinition.ToMongoUpdateDefinition <T>()));
        }
Exemple #2
0
        private static SubEntityAsDeltaAggregate GetNullTrackedSubEntityAggregate(
            out TrackedModel <SubEntityAsDeltaAggregate> trackedModel)
        {
            var model = new SubEntityAsDeltaAggregate
            {
                NonDeltaValue = null,
                DeltaValue    = null
            };

            var trackingCollection = new TrackedModelCollection <SubEntityAsDeltaAggregate>();

            trackingCollection.Existing(model);
            trackedModel = trackingCollection.Single();
            return(model);
        }
Exemple #3
0
        private static FlatAggregate GetTrackedFlatAggregate(out TrackedModel <FlatAggregate> trackedModel)
        {
            var model = new FlatAggregate()
            {
                Id          = Guid.NewGuid(),
                Name        = "Bob Smith",
                Age         = 20,
                DateOfBirth = new DateTime(2000, 01, 01)
            };
            var trackingCollection = new TrackedModelCollection <FlatAggregate>();

            trackingCollection.Existing(model);
            trackedModel = trackingCollection.Single();
            return(model);
        }
Exemple #4
0
        private static IncrementNumeralsAggregate GetTrackedIncrementNumeralsAggregate(
            out TrackedModel <IncrementNumeralsAggregate> trackedModel)
        {
            var model = new IncrementNumeralsAggregate
            {
                Name    = "Name",
                Integer = 5,
                Long    = 120567,
                Decimal = 65.3M,
                Double  = 67384.8956
            };

            var trackingCollection = new TrackedModelCollection <IncrementNumeralsAggregate>();

            trackingCollection.Existing(model);
            trackedModel = trackingCollection.Single();
            return(model);
        }
Exemple #5
0
        public void filter(FaceInfo[] infos, ImageFrame frame)
        {
            currentFrame.Clear();
            if (infos != null)
            {
                foreach (FaceInfo faceInfo in infos)
                {
                    TrackedModel face = getTrackedModel(faceInfo, frame);
                    currentFrame.Add(face);
                    face.setInfo(faceInfo);
                }
            }

            leftFaces.Clear();
            for (int i = 0; i < trackingFaces.Size(); i++)
            {
                int          key  = trackingFaces.KeyAt(i);
                TrackedModel face = trackingFaces.Get(key);
                if (!currentFrame.Contains(face))
                {
                    leftFaces.Add(key);
                }
                else
                {
                    if (onTrackListener != null)
                    {
                        face.setFrame(frame);
                        onTrackListener.onTrack(face);
                    }
                }
            }
            foreach (int?key in leftFaces)
            {
                TrackedModel left = trackingFaces.Get(key.Value);
                Log.Info("xx", " left:" + left);
                left.setEvent(Event.OnLeave);
                trackingFaces.Remove(key.Value);
                if (onTrackListener != null)
                {
                    onTrackListener.onTrack(left);
                }
                // TODO release argb?
            }
        }
Exemple #6
0
        private TrackedModel getTrackedModel(FaceInfo faceInfo, ImageFrame frame)
        {
            TrackedModel face = trackingFaces.Get(faceInfo.FaceId);

            if (face == null)
            {
                face = pool.Take();
                if (face == null)
                {
                    face = new TrackedModel();
                }
                trackingFaces.Append(faceInfo.FaceId, face);
                face.setTrackId(Guid.NewGuid().ToString());
                face.setEvent(Event.OnEnter);
            }
            face.setInfo(faceInfo);
            face.setFrame(frame);
            return(face);
        }
 public override WriteModel <T> GetWriteModelForUpdate(TrackedModel <T> trackedModel)
 {
     return(new ReplaceOneModel <T>(GenericBsonFilters.MatchSingleById(trackedModel.Model), trackedModel.Model));
 }