Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DataEntity / System / Data / Query / InternalTrees / ColumnMapVisitor.cs / 2 / ColumnMapVisitor.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....], [....]
//---------------------------------------------------------------------
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 [....], [....]
//---------------------------------------------------------------------
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
- NotSupportedException.cs
- Model3D.cs
- WMIInterop.cs
- Queue.cs
- GeneralTransform.cs
- IisTraceWebEventProvider.cs
- SqlUdtInfo.cs
- FigureHelper.cs
- MouseEventArgs.cs
- HttpCachePolicy.cs
- SymbolPair.cs
- SerializationEventsCache.cs
- X509CertificateChain.cs
- ServiceMemoryGates.cs
- Misc.cs
- CustomAssemblyResolver.cs
- NumericExpr.cs
- KeyedCollection.cs
- MarshalByValueComponent.cs
- SqlBulkCopyColumnMappingCollection.cs
- ToolStripDropDown.cs
- NameValueFileSectionHandler.cs
- CheckBoxAutomationPeer.cs
- StrokeNodeOperations.cs
- TextServicesContext.cs
- AspNetSynchronizationContext.cs
- XmlSchemaSimpleContentExtension.cs
- SafeRegistryHandle.cs
- TextSelectionHelper.cs
- ComponentConverter.cs
- MutexSecurity.cs
- SecurityUtils.cs
- XmlSchemaRedefine.cs
- NetNamedPipeSecurityMode.cs
- FixedSOMLineCollection.cs
- IDataContractSurrogate.cs
- TypeSchema.cs
- WebScriptEnablingBehavior.cs
- StringAnimationBase.cs
- SelectedGridItemChangedEvent.cs
- XmlNodeList.cs
- Errors.cs
- ProfileServiceManager.cs
- QilTypeChecker.cs
- TrackPoint.cs
- XmlLanguage.cs
- Vector3dCollection.cs
- SpellerInterop.cs
- CompilationSection.cs
- AssemblyCache.cs
- FixedSOMTableRow.cs
- PathSegmentCollection.cs
- TextPointerBase.cs
- SectionVisual.cs
- RemotingConfigParser.cs
- EventLogSession.cs
- RegexInterpreter.cs
- Socket.cs
- Tool.cs
- XmlText.cs
- SchemaImporterExtension.cs
- HyperLinkColumn.cs
- HelpProvider.cs
- AnonymousIdentificationSection.cs
- SpellerInterop.cs
- UserControlCodeDomTreeGenerator.cs
- IdnElement.cs
- CompiledIdentityConstraint.cs
- SystemKeyConverter.cs
- SiteMapNodeCollection.cs
- PauseStoryboard.cs
- XmlSerializerFactory.cs
- CmsUtils.cs
- WebControlParameterProxy.cs
- QilSortKey.cs
- DataServiceContext.cs
- DrawingServices.cs
- FocusWithinProperty.cs
- UnsafeNativeMethods.cs
- Transactions.cs
- RequestBringIntoViewEventArgs.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- TabItem.cs
- InvalidProgramException.cs
- DesignerDataView.cs
- Attributes.cs
- CommentAction.cs
- LazyInitializer.cs
- DbMetaDataColumnNames.cs
- DesignerValidationSummaryAdapter.cs
- LookupNode.cs
- AutoGeneratedFieldProperties.cs
- ConstraintEnumerator.cs
- DodSequenceMerge.cs
- LineUtil.cs
- DataExpression.cs
- LinkButton.cs
- PolicyManager.cs
- DiscoveryOperationContext.cs
- SmtpNetworkElement.cs