Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DataGridViewHeaderCell.cs
- ServiceModelActivationSectionGroup.cs
- Errors.cs
- WebServiceHostFactory.cs
- RegistryDataKey.cs
- PlainXmlWriter.cs
- CodeSubDirectoriesCollection.cs
- Thickness.cs
- RegistryKey.cs
- ScriptServiceAttribute.cs
- GPStream.cs
- SQLDoubleStorage.cs
- HyperLinkColumn.cs
- EventListenerClientSide.cs
- WebHttpBindingCollectionElement.cs
- MessageSmuggler.cs
- TreeNodeCollectionEditor.cs
- EnumValidator.cs
- DataRecord.cs
- CompareValidator.cs
- StrokeCollectionDefaultValueFactory.cs
- Rect.cs
- TypeAccessException.cs
- DBDataPermission.cs
- errorpatternmatcher.cs
- BindingCollection.cs
- SQlBooleanStorage.cs
- ActionItem.cs
- HttpRuntime.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- ProcessModule.cs
- SymLanguageVendor.cs
- X509ChainPolicy.cs
- RuntimeConfig.cs
- Mappings.cs
- MouseEvent.cs
- WebControlAdapter.cs
- PreloadedPackages.cs
- CodeAccessSecurityEngine.cs
- JsonFormatGeneratorStatics.cs
- MessagePropertyFilter.cs
- AddInToken.cs
- HelpProvider.cs
- FormsAuthenticationConfiguration.cs
- TextParagraphCache.cs
- DebugInfoGenerator.cs
- CaretElement.cs
- MimeMapping.cs
- AxisAngleRotation3D.cs
- DesignerOptionService.cs
- ClientSettings.cs
- AppModelKnownContentFactory.cs
- JpegBitmapEncoder.cs
- Membership.cs
- FileInfo.cs
- SemaphoreSecurity.cs
- StrongNameIdentityPermission.cs
- Double.cs
- ServiceReference.cs
- ComContractElementCollection.cs
- AsyncPostBackErrorEventArgs.cs
- FontEditor.cs
- PerspectiveCamera.cs
- CodeDirectiveCollection.cs
- PropertyMetadata.cs
- ModulesEntry.cs
- XmlSerializerNamespaces.cs
- DataGridCellsPresenter.cs
- ExtendedProperty.cs
- EmptyImpersonationContext.cs
- DelegatingTypeDescriptionProvider.cs
- TimeSpanConverter.cs
- Matrix.cs
- Debug.cs
- EntityCommandCompilationException.cs
- PolyBezierSegmentFigureLogic.cs
- RemoteWebConfigurationHostServer.cs
- CommandSet.cs
- RegexCharClass.cs
- AssociatedControlConverter.cs
- XmlSchemaDocumentation.cs
- CommonProperties.cs
- ScrollBarAutomationPeer.cs
- DesignTimeVisibleAttribute.cs
- SystemUnicastIPAddressInformation.cs
- Journal.cs
- ClaimTypes.cs
- Camera.cs
- SafeReversePInvokeHandle.cs
- ApplicationServiceHelper.cs
- AppSecurityManager.cs
- ComponentSerializationService.cs
- ListViewTableRow.cs
- Figure.cs
- XmlUtilWriter.cs
- DataGridItemEventArgs.cs
- ComponentChangedEvent.cs
- SQLConvert.cs
- assemblycache.cs
- SafeReversePInvokeHandle.cs