//--------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Data.Mapping.ViewGeneration.CqlGeneration; using System.Text; using System.Collections.Generic; using System.Data.Common.CommandTrees; using System.Data.Common.CommandTrees.ExpressionBuilder; namespace System.Data.Mapping.ViewGeneration.Structures { /// /// This class is just a wrapper over case statements so that we don't pollute the class itself. /// internal sealed class CaseStatementProjectedSlot : ProjectedSlot { #region Constructor /// /// Creates a slot for . /// internal CaseStatementProjectedSlot(CaseStatement statement, IEnumerable withRelationships) { m_caseStatement = statement; m_withRelationships = withRelationships; } #endregion #region Fields /// /// The actual case statement. /// private readonly CaseStatement m_caseStatement; private readonly IEnumerable m_withRelationships; #endregion #region Methods /// /// Creates new that is qualified with .CqlAlias. /// If current slot is composite (such as , then this method recursively qualifies all parts /// and returns a new deeply qualified slot (as opposed to ). /// internal override ProjectedSlot DeepQualify(CqlBlock block) { CaseStatement newStatement = m_caseStatement.DeepQualify(block); return new CaseStatementProjectedSlot(newStatement, null); } internal override StringBuilder AsEsql(StringBuilder builder, MemberPath outputMember, string blockAlias, int indentLevel) { m_caseStatement.AsEsql(builder, m_withRelationships, blockAlias, indentLevel); return builder; } internal override DbExpression AsCqt(DbExpression row, MemberPath outputMember) { return m_caseStatement.AsCqt(row, m_withRelationships); } internal override void ToCompactString(StringBuilder builder) { m_caseStatement.ToCompactString(builder); } #endregion } }