diff --git a/src/Artemis.Core/Models/Profile/Conditions/Abstract/DataModelConditionPart.cs b/src/Artemis.Core/Models/Profile/Conditions/Abstract/DataModelConditionPart.cs
index f9954b483..50ddcd6dc 100644
--- a/src/Artemis.Core/Models/Profile/Conditions/Abstract/DataModelConditionPart.cs
+++ b/src/Artemis.Core/Models/Profile/Conditions/Abstract/DataModelConditionPart.cs
@@ -62,7 +62,7 @@ namespace Artemis.Core
internal abstract bool EvaluateObject(object target);
internal abstract void Save();
- internal abstract DisplayConditionPartEntity GetEntity();
+ internal abstract DataModelConditionPartEntity GetEntity();
#region IDisposable
diff --git a/src/Artemis.Core/Models/Profile/Conditions/DataModelConditionGroup.cs b/src/Artemis.Core/Models/Profile/Conditions/DataModelConditionGroup.cs
index 9a2f3c6ef..a3d91df6d 100644
--- a/src/Artemis.Core/Models/Profile/Conditions/DataModelConditionGroup.cs
+++ b/src/Artemis.Core/Models/Profile/Conditions/DataModelConditionGroup.cs
@@ -20,7 +20,7 @@ namespace Artemis.Core
public DataModelConditionGroup(DataModelConditionPart parent)
{
Parent = parent;
- Entity = new DisplayConditionGroupEntity();
+ Entity = new DataModelConditionGroupEntity();
}
///
@@ -28,7 +28,7 @@ namespace Artemis.Core
///
///
///
- public DataModelConditionGroup(DataModelConditionPart parent, DisplayConditionGroupEntity entity)
+ public DataModelConditionGroup(DataModelConditionPart parent, DataModelConditionGroupEntity entity)
{
Parent = parent;
Entity = entity;
@@ -36,13 +36,13 @@ namespace Artemis.Core
foreach (var childEntity in Entity.Children)
{
- if (childEntity is DisplayConditionGroupEntity groupEntity)
+ if (childEntity is DataModelConditionGroupEntity groupEntity)
AddChild(new DataModelConditionGroup(this, groupEntity));
- else if (childEntity is DisplayConditionListEntity listEntity)
+ else if (childEntity is DataModelConditionListEntity listEntity)
AddChild(new DataModelConditionList(this, listEntity));
- else if (childEntity is DisplayConditionPredicateEntity predicateEntity)
+ else if (childEntity is DataModelConditionPredicateEntity predicateEntity)
AddChild(new DataModelConditionPredicate(this, predicateEntity));
- else if (childEntity is DisplayConditionListPredicateEntity listPredicateEntity)
+ else if (childEntity is DataModelConditionListPredicateEntity listPredicateEntity)
AddChild(new DataModelConditionListPredicate(this, listPredicateEntity));
}
}
@@ -52,13 +52,13 @@ namespace Artemis.Core
///
public BooleanOperator BooleanOperator { get; set; }
- internal DisplayConditionGroupEntity Entity { get; set; }
+ internal DataModelConditionGroupEntity Entity { get; set; }
///
public override bool Evaluate()
{
if (_disposed)
- throw new ObjectDisposedException("DisplayConditionGroup");
+ throw new ObjectDisposedException("DataModelConditionGroup");
// Empty groups are always true
if (Children.Count == 0)
@@ -100,7 +100,7 @@ namespace Artemis.Core
internal override bool EvaluateObject(object target)
{
if (_disposed)
- throw new ObjectDisposedException("DisplayConditionGroup");
+ throw new ObjectDisposedException("DataModelConditionGroup");
// Empty groups are always true
if (Children.Count == 0)
@@ -129,7 +129,7 @@ namespace Artemis.Core
child.Save();
}
- internal override DisplayConditionPartEntity GetEntity()
+ internal override DataModelConditionPartEntity GetEntity()
{
return Entity;
}
diff --git a/src/Artemis.Core/Models/Profile/Conditions/DataModelConditionList.cs b/src/Artemis.Core/Models/Profile/Conditions/DataModelConditionList.cs
index eda2ba6ee..e650a9b85 100644
--- a/src/Artemis.Core/Models/Profile/Conditions/DataModelConditionList.cs
+++ b/src/Artemis.Core/Models/Profile/Conditions/DataModelConditionList.cs
@@ -22,12 +22,12 @@ namespace Artemis.Core
public DataModelConditionList(DataModelConditionPart parent)
{
Parent = parent;
- Entity = new DisplayConditionListEntity();
+ Entity = new DataModelConditionListEntity();
Initialize();
}
- internal DataModelConditionList(DataModelConditionPart parent, DisplayConditionListEntity entity)
+ internal DataModelConditionList(DataModelConditionPart parent, DataModelConditionListEntity entity)
{
Parent = parent;
Entity = entity;
@@ -36,7 +36,7 @@ namespace Artemis.Core
Initialize();
}
- internal DisplayConditionListEntity Entity { get; set; }
+ internal DataModelConditionListEntity Entity { get; set; }
///
/// Gets or sets the list operator
@@ -62,7 +62,7 @@ namespace Artemis.Core
public override bool Evaluate()
{
if (_disposed)
- throw new ObjectDisposedException("DisplayConditionList");
+ throw new ObjectDisposedException("DataModelConditionList");
if (CompiledListAccessor == null)
return false;
@@ -78,7 +78,7 @@ namespace Artemis.Core
public void UpdateList(DataModel dataModel, string path)
{
if (_disposed)
- throw new ObjectDisposedException("DisplayConditionList");
+ throw new ObjectDisposedException("DataModelConditionList");
if (dataModel != null && path == null)
throw new ArtemisCoreException("If a data model is provided, a path is also required");
@@ -129,7 +129,7 @@ namespace Artemis.Core
internal override bool EvaluateObject(object target)
{
if (_disposed)
- throw new ObjectDisposedException("DisplayConditionList");
+ throw new ObjectDisposedException("DataModelConditionList");
if (!Children.Any())
return false;
@@ -166,7 +166,7 @@ namespace Artemis.Core
child.Save();
}
- internal override DisplayConditionPartEntity GetEntity()
+ internal override DataModelConditionPartEntity GetEntity()
{
return Entity;
}
@@ -189,7 +189,7 @@ namespace Artemis.Core
CreateExpression();
// There should only be one child and it should be a group
- if (Entity.Children.SingleOrDefault() is DisplayConditionGroupEntity rootGroup)
+ if (Entity.Children.SingleOrDefault() is DataModelConditionGroupEntity rootGroup)
AddChild(new DataModelConditionGroup(this, rootGroup));
else
{
@@ -201,12 +201,14 @@ namespace Artemis.Core
private void CreateExpression()
{
if (_disposed)
- throw new ObjectDisposedException("DisplayConditionList");
+ throw new ObjectDisposedException("DataModelConditionList");
var parameter = Expression.Parameter(typeof(object), "listDataModel");
var accessor = ListPropertyPath.Split('.').Aggregate(
Expression.Convert(parameter, ListDataModel.GetType()),
- (expression, s) => Expression.Convert(Expression.Property(expression, s), typeof(IList)));
+ Expression.Property
+ );
+ accessor = Expression.Convert(accessor, typeof(IList));
var lambda = Expression.Lambda>(accessor, parameter);
CompiledListAccessor = lambda.Compile();
diff --git a/src/Artemis.Core/Models/Profile/Conditions/DataModelConditionListPredicate.cs b/src/Artemis.Core/Models/Profile/Conditions/DataModelConditionListPredicate.cs
index 5b6cd275c..6c95c6538 100644
--- a/src/Artemis.Core/Models/Profile/Conditions/DataModelConditionListPredicate.cs
+++ b/src/Artemis.Core/Models/Profile/Conditions/DataModelConditionListPredicate.cs
@@ -18,32 +18,32 @@ namespace Artemis.Core
///
///
///
- public DataModelConditionListPredicate(DataModelConditionPart parent, ProfileRightSideType predicateType)
+ public DataModelConditionListPredicate(DataModelConditionPart parent, ListRightSideType predicateType)
{
Parent = parent;
PredicateType = predicateType;
- Entity = new DisplayConditionListPredicateEntity();
+ Entity = new DataModelConditionListPredicateEntity();
ApplyParentList();
Initialize();
}
- internal DataModelConditionListPredicate(DataModelConditionPart parent, DisplayConditionListPredicateEntity entity)
+ internal DataModelConditionListPredicate(DataModelConditionPart parent, DataModelConditionListPredicateEntity entity)
{
Parent = parent;
Entity = entity;
- PredicateType = (ProfileRightSideType) entity.PredicateType;
+ PredicateType = (ListRightSideType) entity.PredicateType;
ApplyParentList();
Initialize();
}
- internal DisplayConditionListPredicateEntity Entity { get; set; }
+ internal DataModelConditionListPredicateEntity Entity { get; set; }
///
/// Gets or sets the predicate type
///
- public ProfileRightSideType PredicateType { get; set; }
+ public ListRightSideType PredicateType { get; set; }
///
/// Gets the operator
@@ -55,6 +55,11 @@ namespace Artemis.Core
///
public Type ListType { get; private set; }
+ ///
+ /// Gets whether the list contains primitives
+ ///
+ public bool IsPrimitiveList { get; private set; }
+
///
/// Gets the currently used instance of the list data model
///
@@ -70,6 +75,12 @@ namespace Artemis.Core
///
public string LeftPropertyPath { get; private set; }
+ ///
+ /// Gets the currently used instance of the right side data model
+ /// Note: This is null when using a path inside the list
+ ///
+ public DataModel RightDataModel { get; set; }
+
///
/// Gets the path of the right property in the
///
@@ -77,21 +88,28 @@ namespace Artemis.Core
///
/// Gets the right static value, only used it is
- ///
+ ///
///
public object RightStaticValue { get; private set; }
///
- /// Gets the compiled function that evaluates this predicate
+ /// Gets the compiled expression that evaluates this predicate
///
public Func