private string TreeToString(ExpressionNode node)
{
if(node == null) {
return string.Empty;
}
StringBuilder builder = new StringBuilder();
if(node.Left != null) {
if(node.Left.Type == ExpressionType.Implication) {
builder.Append(ExpressionStartChar);
}
builder.Append(TreeToString(node.Left));
if(node.Left.Type == ExpressionType.Implication) {
builder.Append(ExpressionEndChar);
}
}
if(node.Type == ExpressionType.Implication) {
builder.Append(" ");
ImplicationNode implication = (ImplicationNode)node;
if(implication.Implication == FilterImplication.AND) {
builder.Append(AndImplication);
}
else if(implication.Implication == FilterImplication.OR) {
builder.Append(OrImplication);
}
builder.Append(" ");
}
else {
FilterNode filter = (FilterNode)node;
if(filter.Filter.Name != null) {
builder.Append(filter.Filter.Name);
}
}
if(node.Right != null) {
if(node.Right.Type == ExpressionType.Implication) {
builder.Append(ExpressionStartChar);
}
builder.Append(TreeToString(node.Right));
if(node.Right.Type == ExpressionType.Implication) {
builder.Append(ExpressionEndChar);
}
}
return builder.ToString();
}