/// <param name="sticky">If true the property will stay attached (but updated) when the membership changes. If false the property will be removed. If the new state is unknown, the property is removed in both cases.</param>
 public CategoryMembershipProperty(Category category, ECategoryMembership categoryMembership, bool sticky)
 {
     _category = category;
     _categoryMembership = categoryMembership;
     _isSticky = sticky;
     _propertyId = category.AssociatedPropertyIdentifier;
 }
 /// <param name="sticky">If true the property will stay attached (but updated) when the membership changes. If false the property will be removed. If the new state is unknown, the property is removed in both cases.</param>
 public CategoryMembershipProperty(Category category, ECategoryMembership categoryMembership, bool sticky)
 {
     _category           = category;
     _categoryMembership = categoryMembership;
     _isSticky           = sticky;
     _propertyId         = category.AssociatedPropertyIdentifier;
 }
Esempio n. 3
0
        protected CategoryMembershipProperty TagSignal(Signal signal, ECategoryMembership membership, bool sticky)
        {
            CategoryMembershipProperty property = new CategoryMembershipProperty(this, membership, sticky);

            signal.Properties.AddProperty(property);
            return(property);
        }
        private static CategoryMembershipProperty InnerDeserialize(Context context, XmlReader reader)
        {
            bool sticky = bool.Parse(reader.ReadElementString("Sticky"));
            ECategoryMembership membership = (ECategoryMembership)Enum.Parse(typeof(ECategoryMembership), reader.ReadElementString("Membership"));
            Category            category   = Category.Deserialize(context, reader);

            return(new CategoryMembershipProperty(category, membership, sticky));
        }
Esempio n. 5
0
        protected bool TryGetCachedMembership(Signal signal, out ECategoryMembership membership)
        {
            Property p;

            if (signal.Properties.TryLookupProperty(AssociatedPropertyIdentifier, out p))
            {
                CategoryMembershipProperty property = p as CategoryMembershipProperty;
                if (property != null)
                {
                    membership = property.CategoryMembership;
                    return(true);
                }
            }
            membership = ECategoryMembership.Unknown;
            return(false);
        }
 public override bool StillValidAfterEvent(Signal signal)
 {
     ECategoryMembership newMembership = _category.IsMember(signal, true);
     if(newMembership == ECategoryMembership.Unknown)
     {
         _categoryMembership = newMembership;
         return false;
     }
     if(_categoryMembership != newMembership)
     {
         _categoryMembership = newMembership;
         if(_isSticky)
             return true;
         else
             return false;
     }
     return true;
 }
Esempio n. 7
0
        protected ECategoryMembership EvaluateJointChildMembership(IList <Signal> signals)
        {
            ECategoryMembership membership = ECategoryMembership.Member;

            foreach (Signal s in signals)
            {
                ECategoryMembership ret = IsMember(s, false);
                if (ret == ECategoryMembership.NotMember)
                {
                    return(ECategoryMembership.NotMember);
                }
                if (ret == ECategoryMembership.Unknown)
                {
                    membership = ECategoryMembership.Unknown;
                }
            }
            return(membership);
        }
        public override bool StillValidAfterDrive(Signal signal)
        {
            ECategoryMembership newMembership = _category.IsMember(signal, true);

            if (newMembership == ECategoryMembership.Unknown)
            {
                _categoryMembership = newMembership;
                return(false);
            }
            if (_categoryMembership != newMembership)
            {
                _categoryMembership = newMembership;
                if (_isSticky)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            return(true);
        }