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
- SecurityRuntime.cs
- ControlFilterExpression.cs
- TimeZone.cs
- CheckBoxRenderer.cs
- PeerContact.cs
- FixedPage.cs
- HtmlGenericControl.cs
- SetStateEventArgs.cs
- WebServiceHost.cs
- PathFigureCollection.cs
- QilParameter.cs
- PngBitmapDecoder.cs
- StorageScalarPropertyMapping.cs
- HtmlInputPassword.cs
- SizeConverter.cs
- ValidationEventArgs.cs
- Triplet.cs
- HuffmanTree.cs
- OneWayBindingElement.cs
- ellipse.cs
- HttpProcessUtility.cs
- SHA512Cng.cs
- ControlTemplate.cs
- AutoSizeToolBoxItem.cs
- UnsupportedPolicyOptionsException.cs
- DataGridViewRowPostPaintEventArgs.cs
- HandleCollector.cs
- RewritingProcessor.cs
- CreateUserErrorEventArgs.cs
- PowerStatus.cs
- PKCS1MaskGenerationMethod.cs
- ExpressionNode.cs
- ClientTargetSection.cs
- TabControlEvent.cs
- WebResourceAttribute.cs
- CheckBox.cs
- EtwProvider.cs
- AttributeAction.cs
- CopyCodeAction.cs
- Light.cs
- SoapMessage.cs
- SqlUserDefinedTypeAttribute.cs
- DrawItemEvent.cs
- IPAddress.cs
- HtmlInputPassword.cs
- PrePrepareMethodAttribute.cs
- DataServiceBuildProvider.cs
- EnumBuilder.cs
- SmuggledIUnknown.cs
- SQLStringStorage.cs
- TemplateBuilder.cs
- Executor.cs
- DataBinding.cs
- MappingItemCollection.cs
- ListViewContainer.cs
- CurrentChangedEventManager.cs
- CompilerLocalReference.cs
- XmlAttributeOverrides.cs
- _StreamFramer.cs
- ConfigXmlReader.cs
- UnsafeNativeMethodsMilCoreApi.cs
- OutputCacheProfileCollection.cs
- UdpUtility.cs
- keycontainerpermission.cs
- DataGridParentRows.cs
- CustomErrorsSection.cs
- ComplusEndpointConfigContainer.cs
- LowerCaseStringConverter.cs
- CodeDelegateInvokeExpression.cs
- configsystem.cs
- SourceChangedEventArgs.cs
- PageParser.cs
- CacheEntry.cs
- ImageDrawing.cs
- _ScatterGatherBuffers.cs
- TemplateKeyConverter.cs
- CharacterBufferReference.cs
- OperationCanceledException.cs
- ProgressBar.cs
- SizeF.cs
- SystemResources.cs
- NameValuePermission.cs
- HorizontalAlignConverter.cs
- AmbientValueAttribute.cs
- HttpWriter.cs
- CalendarDay.cs
- DocumentViewerConstants.cs
- FormsAuthenticationEventArgs.cs
- initElementDictionary.cs
- AlternateViewCollection.cs
- InputLanguageProfileNotifySink.cs
- CompilationRelaxations.cs
- QueryNode.cs
- IndependentlyAnimatedPropertyMetadata.cs
- BinaryObjectWriter.cs
- ResourceExpressionBuilder.cs
- ExpressionLink.cs
- GridViewCommandEventArgs.cs
- ScriptReferenceEventArgs.cs
- HitTestParameters3D.cs