/** * Binary condition for String equality comparison. * * @param variable The JSONPath expression that determines which piece of the input document is used for the comparison. * @param expectedValue The expected value for this condition. * @return StringEqualsCondition.Builder * @see <a href="https://states-language.net/spec.html#choice-state">https://states-language.net/spec.html#choice-state</a> * @see Choice */ public static StringEqualsCondition.Builder Eq(string variable, string expectedValue) { return((StringEqualsCondition.Builder)StringEqualsCondition.GetBuilder().Variable(variable) .ExpectedValue(expectedValue)); }
public IConditionBuilder<ICondition> DeserializeCondition(JObject node) { if (node.Property(PropertyNames.VARIABLE) != null) { if (node.Property(PropertyNames.STRING_EQUALS) != null) { return DeserializeBinaryCondition(StringEqualsCondition.GetBuilder(), node); } if (node.Property(PropertyNames.STRING_EQUALS_PATH) != null) { return DeserializeBinaryPathCondition(StringEqualsPathCondition.GetBuilder(), node); } if (node.Property(PropertyNames.STRING_GREATER_THAN) != null) { return DeserializeBinaryCondition(StringGreaterThanCondition.GetBuilder(), node); } if (node.Property(PropertyNames.STRING_GREATER_THAN_EQUALS) != null) { return DeserializeBinaryCondition(StringGreaterThanOrEqualCondition.GetBuilder(), node); } if (node.Property(PropertyNames.STRING_LESS_THAN) != null) { return DeserializeBinaryCondition(StringLessThanCondition.GetBuilder(), node); } if (node.Property(PropertyNames.STRING_LESS_THAN_EQUALS) != null) { return DeserializeBinaryCondition(StringLessThanOrEqualCondition.GetBuilder(), node); } if (node.Property(PropertyNames.TIMESTAMP_EQUALS) != null) { return DeserializeBinaryCondition(TimestampEqualCondition.GetBuilder(), node); } if (node.Property(PropertyNames.TIMESTAMP_GREATER_THAN) != null) { return DeserializeBinaryCondition(TimestampGreaterThanCondition.GetBuilder(), node); } if (node.Property(PropertyNames.TIMESTAMP_GREATER_THAN_EQUALS) != null) { return DeserializeBinaryCondition(TimestampGreaterThanOrEqualCondition.GetBuilder(), node); } if (node.Property(PropertyNames.TIMESTAMP_LESS_THAN) != null) { return DeserializeBinaryCondition(TimestampLessThanCondition.GetBuilder(), node); } if (node.Property(PropertyNames.TIMESTAMP_LESS_THAN_EQUALS) != null) { return DeserializeBinaryCondition(TimestampLessThanOrEqualCondition.GetBuilder(), node); } if (node.Property(PropertyNames.NUMERIC_EQUALS) != null) { if (node.Property(PropertyNames.NUMERIC_EQUALS).Value.Type == JTokenType.Integer) { return DeserializeBinaryCondition(NumericEqualsCondition<long>.GetBuilder(), node); } return DeserializeBinaryCondition(NumericEqualsCondition<decimal>.GetBuilder(), node); } if (node.Property(PropertyNames.NUMERIC_GREATER_THAN) != null) { if (node.Property(PropertyNames.NUMERIC_GREATER_THAN).Value.Type == JTokenType.Integer) { return DeserializeBinaryCondition(NumericGreaterThanCondition<long>.GetBuilder(), node); } return DeserializeBinaryCondition(NumericGreaterThanCondition<decimal>.GetBuilder(), node); } if (node.Property(PropertyNames.NUMERIC_GREATER_THAN_EQUALS) != null) { if (node.Property(PropertyNames.NUMERIC_GREATER_THAN_EQUALS).Value.Type == JTokenType.Integer) { return DeserializeBinaryCondition(NumericGreaterThanOrEqualCondition<long>.GetBuilder(), node); } return DeserializeBinaryCondition(NumericGreaterThanOrEqualCondition<decimal>.GetBuilder(), node); } if (node.Property(PropertyNames.NUMERIC_LESS_THAN) != null) { if (node.Property(PropertyNames.NUMERIC_LESS_THAN).Value.Type == JTokenType.Integer) { return DeserializeBinaryCondition(NumericLessThanCondition<long>.GetBuilder(), node); } return DeserializeBinaryCondition(NumericLessThanCondition<decimal>.GetBuilder(), node); } if (node.Property(PropertyNames.NUMERIC_LESS_THAN_EQUALS) != null) { if (node.Property(PropertyNames.NUMERIC_LESS_THAN_EQUALS).Value.Type == JTokenType.Integer) { return DeserializeBinaryCondition(NumericLessThanOrEqualCondition<long>.GetBuilder(), node); } return DeserializeBinaryCondition(NumericLessThanOrEqualCondition<decimal>.GetBuilder(), node); } if (node.Property(PropertyNames.BOOLEAN_EQUALS) != null) { return DeserializeBinaryCondition(BooleanEqualsCondition.GetBuilder(), node); } } else if (node.Property(PropertyNames.AND) != null) { var builder = AndCondition.GetBuilder(); foreach (var inner in node[PropertyNames.AND].Children()) { builder.Condition(DeserializeCondition((JObject) inner)); } return builder; } else if (node.Property(PropertyNames.OR) != null) { var builder = OrCondition.GetBuilder(); foreach (var inner in node[PropertyNames.OR].Children()) { builder.Condition(DeserializeCondition((JObject) inner)); } return builder; } else if (node.Property(PropertyNames.NOT) != null) { return NotCondition.GetBuilder() .Condition(DeserializeCondition((JObject) node.Property(PropertyNames.NOT).First)); } throw new StatesLanguageException("Condition must be provided"); }