Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Query / InternalTrees / ColumnMapVisitor.cs / 1305376 / ColumnMapVisitor.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
// @backupOwner [....]
//---------------------------------------------------------------------
namespace System.Data.Query.InternalTrees
{
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.Common;
using System.Data.Common.CommandTrees;
using System.Data.Metadata.Edm;
using System.Data.Query.PlanCompiler;
using System.Diagnostics;
using System.IO;
using System.Threading;
///
/// Basic Visitor Design Pattern support for ColumnMap hierarchy;
///
/// This visitor class will walk the entire hierarchy, but does not
/// return results; it's useful for operations such as printing and
/// searching.
///
///
internal abstract class ColumnMapVisitor
{
#region visitor helpers
///
/// Common List(ColumnMap) code
///
///
///
protected void VisitList(TListType[] columnMaps, TArgType arg)
where TListType : ColumnMap
{
foreach (TListType columnMap in columnMaps)
{
columnMap.Accept(this, arg);
}
}
#endregion
#region EntityIdentity handling
protected void VisitEntityIdentity(EntityIdentity entityIdentity, TArgType arg)
{
DiscriminatedEntityIdentity dei = entityIdentity as DiscriminatedEntityIdentity;
if (null != dei)
{
VisitEntityIdentity(dei, arg);
}
else
{
VisitEntityIdentity((SimpleEntityIdentity)entityIdentity, arg);
}
}
protected virtual void VisitEntityIdentity(DiscriminatedEntityIdentity entityIdentity, TArgType arg)
{
entityIdentity.EntitySetColumnMap.Accept(this, arg);
foreach (SimpleColumnMap columnMap in entityIdentity.Keys)
{
columnMap.Accept(this, arg);
}
}
protected virtual void VisitEntityIdentity(SimpleEntityIdentity entityIdentity, TArgType arg)
{
foreach (SimpleColumnMap columnMap in entityIdentity.Keys)
{
columnMap.Accept(this, arg);
}
}
#endregion
#region Visitor methods
internal virtual void Visit(ComplexTypeColumnMap columnMap, TArgType arg)
{
ColumnMap nullSentinel = columnMap.NullSentinel;
if (null != nullSentinel)
{
nullSentinel.Accept(this, arg);
}
foreach (ColumnMap p in columnMap.Properties)
{
p.Accept(this, arg);
}
}
internal virtual void Visit(DiscriminatedCollectionColumnMap columnMap, TArgType arg)
{
columnMap.Discriminator.Accept(this, arg);
foreach (SimpleColumnMap fk in columnMap.ForeignKeys)
{
fk.Accept(this, arg);
}
foreach (SimpleColumnMap k in columnMap.Keys)
{
k.Accept(this, arg);
}
columnMap.Element.Accept(this, arg);
}
internal virtual void Visit(EntityColumnMap columnMap, TArgType arg)
{
VisitEntityIdentity(columnMap.EntityIdentity, arg);
foreach (ColumnMap p in columnMap.Properties)
{
p.Accept(this, arg);
}
}
internal virtual void Visit(SimplePolymorphicColumnMap columnMap, TArgType arg)
{
columnMap.TypeDiscriminator.Accept(this, arg);
foreach (ColumnMap cm in columnMap.TypeChoices.Values)
{
cm.Accept(this, arg);
}
foreach (ColumnMap p in columnMap.Properties)
{
p.Accept(this, arg);
}
}
internal virtual void Visit(MultipleDiscriminatorPolymorphicColumnMap columnMap, TArgType arg)
{
foreach (var typeDiscriminator in columnMap.TypeDiscriminators)
{
typeDiscriminator.Accept(this, arg);
}
foreach (var typeColumnMap in columnMap.TypeChoices.Values)
{
typeColumnMap.Accept(this, arg);
}
foreach (var property in columnMap.Properties)
{
property.Accept(this, arg);
}
}
internal virtual void Visit(RecordColumnMap columnMap, TArgType arg)
{
ColumnMap nullSentinel = columnMap.NullSentinel;
if (null != nullSentinel)
{
nullSentinel.Accept(this, arg);
}
foreach (ColumnMap p in columnMap.Properties)
{
p.Accept(this, arg);
}
}
internal virtual void Visit(RefColumnMap columnMap, TArgType arg)
{
VisitEntityIdentity(columnMap.EntityIdentity, arg);
}
internal virtual void Visit(ScalarColumnMap columnMap, TArgType arg)
{
}
internal virtual void Visit(SimpleCollectionColumnMap columnMap, TArgType arg)
{
foreach (SimpleColumnMap fk in columnMap.ForeignKeys)
{
fk.Accept(this, arg);
}
foreach (SimpleColumnMap k in columnMap.Keys)
{
k.Accept(this, arg);
}
columnMap.Element.Accept(this, arg);
}
internal virtual void Visit(VarRefColumnMap columnMap, TArgType arg)
{
}
#endregion
}
///
/// Basic Visitor Design Pattern support for ColumnMap hierarchy;
///
/// This visitor class allows you to return results; it's useful for operations
/// that copy or manipulate the hierarchy.
///
///
///
internal abstract class ColumnMapVisitorWithResults
{
#region EntityIdentity handling
protected EntityIdentity VisitEntityIdentity(EntityIdentity entityIdentity, TArgType arg)
{
DiscriminatedEntityIdentity dei = entityIdentity as DiscriminatedEntityIdentity;
if (null != dei)
{
return VisitEntityIdentity(dei, arg);
}
else
{
return VisitEntityIdentity((SimpleEntityIdentity)entityIdentity, arg);
}
}
protected virtual EntityIdentity VisitEntityIdentity(DiscriminatedEntityIdentity entityIdentity, TArgType arg)
{
return entityIdentity;
}
protected virtual EntityIdentity VisitEntityIdentity(SimpleEntityIdentity entityIdentity, TArgType arg)
{
return entityIdentity;
}
#endregion
#region Visitor methods
internal abstract TResultType Visit(ComplexTypeColumnMap columnMap, TArgType arg);
internal abstract TResultType Visit(DiscriminatedCollectionColumnMap columnMap, TArgType arg);
internal abstract TResultType Visit(EntityColumnMap columnMap, TArgType arg);
internal abstract TResultType Visit(SimplePolymorphicColumnMap columnMap, TArgType arg);
internal abstract TResultType Visit(RecordColumnMap columnMap, TArgType arg);
internal abstract TResultType Visit(RefColumnMap columnMap, TArgType arg);
internal abstract TResultType Visit(ScalarColumnMap columnMap, TArgType arg);
internal abstract TResultType Visit(SimpleCollectionColumnMap columnMap, TArgType arg);
internal abstract TResultType Visit(VarRefColumnMap columnMap, TArgType arg);
internal abstract TResultType Visit(MultipleDiscriminatorPolymorphicColumnMap columnMap, TArgType arg);
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
// @backupOwner [....]
//---------------------------------------------------------------------
namespace System.Data.Query.InternalTrees
{
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.Common;
using System.Data.Common.CommandTrees;
using System.Data.Metadata.Edm;
using System.Data.Query.PlanCompiler;
using System.Diagnostics;
using System.IO;
using System.Threading;
///
/// Basic Visitor Design Pattern support for ColumnMap hierarchy;
///
/// This visitor class will walk the entire hierarchy, but does not
/// return results; it's useful for operations such as printing and
/// searching.
///
///
internal abstract class ColumnMapVisitor
{
#region visitor helpers
///
/// Common List(ColumnMap) code
///
///
///
protected void VisitList(TListType[] columnMaps, TArgType arg)
where TListType : ColumnMap
{
foreach (TListType columnMap in columnMaps)
{
columnMap.Accept(this, arg);
}
}
#endregion
#region EntityIdentity handling
protected void VisitEntityIdentity(EntityIdentity entityIdentity, TArgType arg)
{
DiscriminatedEntityIdentity dei = entityIdentity as DiscriminatedEntityIdentity;
if (null != dei)
{
VisitEntityIdentity(dei, arg);
}
else
{
VisitEntityIdentity((SimpleEntityIdentity)entityIdentity, arg);
}
}
protected virtual void VisitEntityIdentity(DiscriminatedEntityIdentity entityIdentity, TArgType arg)
{
entityIdentity.EntitySetColumnMap.Accept(this, arg);
foreach (SimpleColumnMap columnMap in entityIdentity.Keys)
{
columnMap.Accept(this, arg);
}
}
protected virtual void VisitEntityIdentity(SimpleEntityIdentity entityIdentity, TArgType arg)
{
foreach (SimpleColumnMap columnMap in entityIdentity.Keys)
{
columnMap.Accept(this, arg);
}
}
#endregion
#region Visitor methods
internal virtual void Visit(ComplexTypeColumnMap columnMap, TArgType arg)
{
ColumnMap nullSentinel = columnMap.NullSentinel;
if (null != nullSentinel)
{
nullSentinel.Accept(this, arg);
}
foreach (ColumnMap p in columnMap.Properties)
{
p.Accept(this, arg);
}
}
internal virtual void Visit(DiscriminatedCollectionColumnMap columnMap, TArgType arg)
{
columnMap.Discriminator.Accept(this, arg);
foreach (SimpleColumnMap fk in columnMap.ForeignKeys)
{
fk.Accept(this, arg);
}
foreach (SimpleColumnMap k in columnMap.Keys)
{
k.Accept(this, arg);
}
columnMap.Element.Accept(this, arg);
}
internal virtual void Visit(EntityColumnMap columnMap, TArgType arg)
{
VisitEntityIdentity(columnMap.EntityIdentity, arg);
foreach (ColumnMap p in columnMap.Properties)
{
p.Accept(this, arg);
}
}
internal virtual void Visit(SimplePolymorphicColumnMap columnMap, TArgType arg)
{
columnMap.TypeDiscriminator.Accept(this, arg);
foreach (ColumnMap cm in columnMap.TypeChoices.Values)
{
cm.Accept(this, arg);
}
foreach (ColumnMap p in columnMap.Properties)
{
p.Accept(this, arg);
}
}
internal virtual void Visit(MultipleDiscriminatorPolymorphicColumnMap columnMap, TArgType arg)
{
foreach (var typeDiscriminator in columnMap.TypeDiscriminators)
{
typeDiscriminator.Accept(this, arg);
}
foreach (var typeColumnMap in columnMap.TypeChoices.Values)
{
typeColumnMap.Accept(this, arg);
}
foreach (var property in columnMap.Properties)
{
property.Accept(this, arg);
}
}
internal virtual void Visit(RecordColumnMap columnMap, TArgType arg)
{
ColumnMap nullSentinel = columnMap.NullSentinel;
if (null != nullSentinel)
{
nullSentinel.Accept(this, arg);
}
foreach (ColumnMap p in columnMap.Properties)
{
p.Accept(this, arg);
}
}
internal virtual void Visit(RefColumnMap columnMap, TArgType arg)
{
VisitEntityIdentity(columnMap.EntityIdentity, arg);
}
internal virtual void Visit(ScalarColumnMap columnMap, TArgType arg)
{
}
internal virtual void Visit(SimpleCollectionColumnMap columnMap, TArgType arg)
{
foreach (SimpleColumnMap fk in columnMap.ForeignKeys)
{
fk.Accept(this, arg);
}
foreach (SimpleColumnMap k in columnMap.Keys)
{
k.Accept(this, arg);
}
columnMap.Element.Accept(this, arg);
}
internal virtual void Visit(VarRefColumnMap columnMap, TArgType arg)
{
}
#endregion
}
///
/// Basic Visitor Design Pattern support for ColumnMap hierarchy;
///
/// This visitor class allows you to return results; it's useful for operations
/// that copy or manipulate the hierarchy.
///
///
///
internal abstract class ColumnMapVisitorWithResults
{
#region EntityIdentity handling
protected EntityIdentity VisitEntityIdentity(EntityIdentity entityIdentity, TArgType arg)
{
DiscriminatedEntityIdentity dei = entityIdentity as DiscriminatedEntityIdentity;
if (null != dei)
{
return VisitEntityIdentity(dei, arg);
}
else
{
return VisitEntityIdentity((SimpleEntityIdentity)entityIdentity, arg);
}
}
protected virtual EntityIdentity VisitEntityIdentity(DiscriminatedEntityIdentity entityIdentity, TArgType arg)
{
return entityIdentity;
}
protected virtual EntityIdentity VisitEntityIdentity(SimpleEntityIdentity entityIdentity, TArgType arg)
{
return entityIdentity;
}
#endregion
#region Visitor methods
internal abstract TResultType Visit(ComplexTypeColumnMap columnMap, TArgType arg);
internal abstract TResultType Visit(DiscriminatedCollectionColumnMap columnMap, TArgType arg);
internal abstract TResultType Visit(EntityColumnMap columnMap, TArgType arg);
internal abstract TResultType Visit(SimplePolymorphicColumnMap columnMap, TArgType arg);
internal abstract TResultType Visit(RecordColumnMap columnMap, TArgType arg);
internal abstract TResultType Visit(RefColumnMap columnMap, TArgType arg);
internal abstract TResultType Visit(ScalarColumnMap columnMap, TArgType arg);
internal abstract TResultType Visit(SimpleCollectionColumnMap columnMap, TArgType arg);
internal abstract TResultType Visit(VarRefColumnMap columnMap, TArgType arg);
internal abstract TResultType Visit(MultipleDiscriminatorPolymorphicColumnMap columnMap, TArgType arg);
#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
- GridViewUpdateEventArgs.cs
- FileLevelControlBuilderAttribute.cs
- RefExpr.cs
- ChtmlSelectionListAdapter.cs
- ValueConversionAttribute.cs
- BitmapData.cs
- TableRowCollection.cs
- RSAPKCS1SignatureFormatter.cs
- TableItemPatternIdentifiers.cs
- Pts.cs
- Thread.cs
- JsonFormatMapping.cs
- TTSEngineProxy.cs
- RadioButtonRenderer.cs
- XmlLoader.cs
- PropertySourceInfo.cs
- ProviderIncompatibleException.cs
- DataGridTextBox.cs
- DynamicPhysicalDiscoSearcher.cs
- BindingGroup.cs
- ParallelTimeline.cs
- LocatorManager.cs
- XsdValidatingReader.cs
- HttpStreamXmlDictionaryWriter.cs
- ByteArrayHelperWithString.cs
- HttpHeaderCollection.cs
- RepeaterItemCollection.cs
- StorageComplexTypeMapping.cs
- CodeMemberField.cs
- Memoizer.cs
- VectorValueSerializer.cs
- MainMenu.cs
- TextBlockAutomationPeer.cs
- StringHandle.cs
- DiscreteKeyFrames.cs
- DrawingBrush.cs
- DynamicResourceExtension.cs
- QilSortKey.cs
- ArrayList.cs
- TextEditorTables.cs
- ContextInformation.cs
- EntityContainerEmitter.cs
- BoundConstants.cs
- AsyncOperationLifetimeManager.cs
- HttpCachePolicy.cs
- VoiceObjectToken.cs
- CodeObject.cs
- VariableAction.cs
- UpdateExpressionVisitor.cs
- AxImporter.cs
- DataPagerCommandEventArgs.cs
- DbConnectionPoolOptions.cs
- QueryableFilterRepeater.cs
- QueryCorrelationInitializer.cs
- StackOverflowException.cs
- OdbcEnvironmentHandle.cs
- FeatureSupport.cs
- RelationalExpressions.cs
- ApplicationDirectory.cs
- UiaCoreProviderApi.cs
- SecureStringHasher.cs
- DataRowExtensions.cs
- GAC.cs
- RuleSettingsCollection.cs
- WebPartEditorOkVerb.cs
- WebPartPersonalization.cs
- _NegoStream.cs
- RoutedCommand.cs
- ScrollEventArgs.cs
- SizeAnimationUsingKeyFrames.cs
- Tablet.cs
- BoundField.cs
- AdornerLayer.cs
- AsymmetricKeyExchangeDeformatter.cs
- ControlPaint.cs
- WorkItem.cs
- PagesChangedEventArgs.cs
- XmlFormatReaderGenerator.cs
- ChannelParameterCollection.cs
- LinkLabel.cs
- DesignerRegionMouseEventArgs.cs
- QueryCursorEventArgs.cs
- ViewManagerAttribute.cs
- ValidationErrorCollection.cs
- ListView.cs
- ApplicationActivator.cs
- SettingsBindableAttribute.cs
- metadatamappinghashervisitor.cs
- TextServicesContext.cs
- DataGridViewSelectedColumnCollection.cs
- SetStateDesigner.cs
- RegexInterpreter.cs
- ExtenderProvidedPropertyAttribute.cs
- SystemResourceKey.cs
- EventToken.cs
- ComponentResourceKey.cs
- DataSourceControlBuilder.cs
- DataGridViewCheckBoxCell.cs
- WebBrowser.cs
- DesignerSerializationOptionsAttribute.cs