Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / DataEntity / System / Data / Map / ViewGeneration / CqlGeneration / AliasedSlot.cs / 2 / AliasedSlot.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
// @backupOwner [....]
//---------------------------------------------------------------------
using System.Data.Mapping.ViewGeneration.Structures;
using System.Text;
using System.Diagnostics;
using System.Data.Common.Utils;
using System.Collections.Generic;
namespace System.Data.Mapping.ViewGeneration.CqlGeneration {
// A slot that encapsulates a slot in a particular CqlBlock
internal class AliasedSlot : ProjectedSlot {
#region Constructor
// effects: Creates an alias slot "block.slot" whose output member
// path is memberPath - this can be null for boolean slots. slotNum
// is the slot number in block to which this slot refers to
internal AliasedSlot(CqlBlock block, ProjectedSlot slot, MemberPath memberPath, int slotNum) {
Debug.Assert(block != null && slot != null, "Null input to AliasedSlot constructor");
Debug.Assert(slot is AliasedSlot || (slot is BooleanProjectedSlot ) == (memberPath == null),
"If slot is boolean slot, there is no member path for it and vice-versa");
m_block = block;
// Note slot can be another aliased slot
m_slot = slot;
m_memberPath = memberPath;
// Make sure that the aliased slot is projected
Debug.Assert(block.IsProjected(slotNum), "Aliased slot " + this + " not being projected " +
"in child block ");
}
#endregion
#region Fields
private CqlBlock m_block;
private ProjectedSlot m_slot;
private MemberPath m_memberPath;
#endregion
#region Properties
internal MemberPath MemberPath
{
get { return m_memberPath; }
}
internal CqlBlock Block
{
get { return m_block; }
}
internal ProjectedSlot InnerSlot
{
get { return m_slot; }
}
#endregion
#region Methods
internal override ProjectedSlot MakeAliasedSlot(CqlBlock block, MemberPath outputPath, int slotNum) {
// We take the slot inside this and change the block
Debug.Assert(MemberPath.EqualityComparer.Equals(m_memberPath, outputPath),
"Different output paths for aliased slot and next use of it higher up in tree");
AliasedSlot result = new AliasedSlot(block, m_slot, outputPath, slotNum);
return result;
}
internal string FullCqlAlias() {
return CqlWriter.GetQualifiedName(m_block.CqlAlias, CqlFieldAlias(m_memberPath));
}
internal override string CqlFieldAlias(MemberPath outputMember) {
// effects: Returns The alias corresponding to this slot, e.g.,
// _from0 or CPerson1_pid
Debug.Assert(MemberPath.EqualityComparer.Equals(outputMember, m_memberPath),
"Aliased slot's idea of what the output is different from the Cql block's idea");
ProjectedSlot slot = m_slot;
// Keep looking inside the aliased slot till we find a
// non-aliased slot and then get the alias name for it
// For cycle detection
Set slotSet = new Set();
while (true) {
Debug.Assert(false == slotSet.Contains(slot), "Cycle detected in aliased slot");
slotSet.Add(slot);
AliasedSlot aliasedSlot = slot as AliasedSlot;
if (aliasedSlot == null) {
break;
}
slot = aliasedSlot.m_slot;
}
string result = slot.CqlFieldAlias(m_memberPath);
return result;
}
internal override StringBuilder AsCql(StringBuilder builder, MemberPath outputMember,
string blockAlias, int indentLevel) {
// Ignore table alias and just get the full alias name
builder.Append(FullCqlAlias());
return builder;
}
internal override void ToCompactString(StringBuilder builder) {
StringUtil.FormatStringBuilder(builder, "{0} ", m_block.CqlAlias);
m_slot.ToCompactString(builder);
}
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
// @backupOwner [....]
//---------------------------------------------------------------------
using System.Data.Mapping.ViewGeneration.Structures;
using System.Text;
using System.Diagnostics;
using System.Data.Common.Utils;
using System.Collections.Generic;
namespace System.Data.Mapping.ViewGeneration.CqlGeneration {
// A slot that encapsulates a slot in a particular CqlBlock
internal class AliasedSlot : ProjectedSlot {
#region Constructor
// effects: Creates an alias slot "block.slot" whose output member
// path is memberPath - this can be null for boolean slots. slotNum
// is the slot number in block to which this slot refers to
internal AliasedSlot(CqlBlock block, ProjectedSlot slot, MemberPath memberPath, int slotNum) {
Debug.Assert(block != null && slot != null, "Null input to AliasedSlot constructor");
Debug.Assert(slot is AliasedSlot || (slot is BooleanProjectedSlot ) == (memberPath == null),
"If slot is boolean slot, there is no member path for it and vice-versa");
m_block = block;
// Note slot can be another aliased slot
m_slot = slot;
m_memberPath = memberPath;
// Make sure that the aliased slot is projected
Debug.Assert(block.IsProjected(slotNum), "Aliased slot " + this + " not being projected " +
"in child block ");
}
#endregion
#region Fields
private CqlBlock m_block;
private ProjectedSlot m_slot;
private MemberPath m_memberPath;
#endregion
#region Properties
internal MemberPath MemberPath
{
get { return m_memberPath; }
}
internal CqlBlock Block
{
get { return m_block; }
}
internal ProjectedSlot InnerSlot
{
get { return m_slot; }
}
#endregion
#region Methods
internal override ProjectedSlot MakeAliasedSlot(CqlBlock block, MemberPath outputPath, int slotNum) {
// We take the slot inside this and change the block
Debug.Assert(MemberPath.EqualityComparer.Equals(m_memberPath, outputPath),
"Different output paths for aliased slot and next use of it higher up in tree");
AliasedSlot result = new AliasedSlot(block, m_slot, outputPath, slotNum);
return result;
}
internal string FullCqlAlias() {
return CqlWriter.GetQualifiedName(m_block.CqlAlias, CqlFieldAlias(m_memberPath));
}
internal override string CqlFieldAlias(MemberPath outputMember) {
// effects: Returns The alias corresponding to this slot, e.g.,
// _from0 or CPerson1_pid
Debug.Assert(MemberPath.EqualityComparer.Equals(outputMember, m_memberPath),
"Aliased slot's idea of what the output is different from the Cql block's idea");
ProjectedSlot slot = m_slot;
// Keep looking inside the aliased slot till we find a
// non-aliased slot and then get the alias name for it
// For cycle detection
Set slotSet = new Set();
while (true) {
Debug.Assert(false == slotSet.Contains(slot), "Cycle detected in aliased slot");
slotSet.Add(slot);
AliasedSlot aliasedSlot = slot as AliasedSlot;
if (aliasedSlot == null) {
break;
}
slot = aliasedSlot.m_slot;
}
string result = slot.CqlFieldAlias(m_memberPath);
return result;
}
internal override StringBuilder AsCql(StringBuilder builder, MemberPath outputMember,
string blockAlias, int indentLevel) {
// Ignore table alias and just get the full alias name
builder.Append(FullCqlAlias());
return builder;
}
internal override void ToCompactString(StringBuilder builder) {
StringUtil.FormatStringBuilder(builder, "{0} ", m_block.CqlAlias);
m_slot.ToCompactString(builder);
}
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ProgressBar.cs
- TextEditor.cs
- InheritanceContextHelper.cs
- CryptoProvider.cs
- EraserBehavior.cs
- ManualResetEvent.cs
- SafeFindHandle.cs
- PresentationTraceSources.cs
- AttachmentService.cs
- SmiRequestExecutor.cs
- DataGridState.cs
- VerificationAttribute.cs
- AuthenticationSection.cs
- QueryPageSettingsEventArgs.cs
- messageonlyhwndwrapper.cs
- PageContentAsyncResult.cs
- HostProtectionPermission.cs
- IndicShape.cs
- UInt32Storage.cs
- FocusTracker.cs
- HttpStreamFormatter.cs
- TypeTypeConverter.cs
- SqlBuilder.cs
- HttpContextWrapper.cs
- NumberEdit.cs
- ListViewEditEventArgs.cs
- InternalEnumValidatorAttribute.cs
- DesignerValidatorAdapter.cs
- RoleGroup.cs
- PageStatePersister.cs
- CheckBoxPopupAdapter.cs
- MenuEventArgs.cs
- EnumUnknown.cs
- DependencyPropertyAttribute.cs
- UDPClient.cs
- AssertSection.cs
- ToolStripLabel.cs
- Int16Animation.cs
- SafeEventHandle.cs
- XmlAnyElementAttribute.cs
- DuplicateContext.cs
- FrameworkContextData.cs
- XmlnsCache.cs
- DataServiceQueryOfT.cs
- SamlAttributeStatement.cs
- ObjectDataSourceDisposingEventArgs.cs
- SurrogateEncoder.cs
- FormClosingEvent.cs
- CultureInfo.cs
- FocusChangedEventArgs.cs
- ListInitExpression.cs
- XhtmlConformanceSection.cs
- MemberHolder.cs
- GridProviderWrapper.cs
- WSSecurityOneDotOneSendSecurityHeader.cs
- ListSortDescriptionCollection.cs
- CqlParserHelpers.cs
- QilCloneVisitor.cs
- BufferBuilder.cs
- SqlDataSourceFilteringEventArgs.cs
- FrameworkContextData.cs
- KnownColorTable.cs
- ConvertersCollection.cs
- XmlObjectSerializerContext.cs
- EntityEntry.cs
- SqlExpressionNullability.cs
- ReflectionTypeLoadException.cs
- ScriptMethodAttribute.cs
- ProcessProtocolHandler.cs
- XmlNotation.cs
- ProfileSettings.cs
- BypassElementCollection.cs
- AnalyzedTree.cs
- Error.cs
- FormsAuthentication.cs
- NativeRecognizer.cs
- ErrorTableItemStyle.cs
- PaintValueEventArgs.cs
- DocumentReferenceCollection.cs
- DesignTimeValidationFeature.cs
- _NegoStream.cs
- CultureInfoConverter.cs
- LocalTransaction.cs
- ConnectionStringsExpressionBuilder.cs
- WriteTimeStream.cs
- ByteStreamGeometryContext.cs
- ChangeProcessor.cs
- ControlBuilder.cs
- XmlElementList.cs
- FontFamilyValueSerializer.cs
- TextBoxAutoCompleteSourceConverter.cs
- StateManagedCollection.cs
- FormatterConverter.cs
- XmlQueryCardinality.cs
- CodePageEncoding.cs
- CancellationTokenSource.cs
- FormatStringEditor.cs
- ScrollViewerAutomationPeer.cs
- Array.cs
- PropertySourceInfo.cs