Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataEntity / System / Data / Query / InternalTrees / ColumnMapVisitor.cs / 1 / 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
- UnSafeCharBuffer.cs
- MessageHeaderDescriptionCollection.cs
- NativeRightsManagementAPIsStructures.cs
- PropertyMap.cs
- TextElementEnumerator.cs
- RuleProcessor.cs
- CollectionChangedEventManager.cs
- SByte.cs
- RequestQueue.cs
- ControlBindingsCollection.cs
- SmiMetaDataProperty.cs
- CfgParser.cs
- CompositionAdorner.cs
- DBCommandBuilder.cs
- TableRow.cs
- HTTPNotFoundHandler.cs
- CodeSnippetExpression.cs
- VirtualPath.cs
- DataGridPageChangedEventArgs.cs
- DictionaryCustomTypeDescriptor.cs
- NetworkAddressChange.cs
- ComponentEditorForm.cs
- ReadOnlyDataSource.cs
- FragmentQueryProcessor.cs
- SelectManyQueryOperator.cs
- Label.cs
- SettingsProperty.cs
- KnownBoxes.cs
- ServiceOperationParameter.cs
- TerminatorSinks.cs
- DbConnectionOptions.cs
- DiscoveryExceptionDictionary.cs
- ResourceContainer.cs
- ZipIOExtraField.cs
- BackoffTimeoutHelper.cs
- DbReferenceCollection.cs
- SpeechEvent.cs
- UIElementParagraph.cs
- Win32.cs
- SwitchLevelAttribute.cs
- ForAllOperator.cs
- DoubleConverter.cs
- ExtensibleClassFactory.cs
- SqlServer2KCompatibilityCheck.cs
- FixedPageAutomationPeer.cs
- Resources.Designer.cs
- SqlConnectionPoolGroupProviderInfo.cs
- ServerIdentity.cs
- ListBoxChrome.cs
- ColumnWidthChangingEvent.cs
- MenuItem.cs
- OleAutBinder.cs
- MessageDecoder.cs
- SchemaTableColumn.cs
- CriticalHandle.cs
- IISUnsafeMethods.cs
- HMACMD5.cs
- TcpConnectionPoolSettings.cs
- PtsHelper.cs
- RegexStringValidator.cs
- ListMarkerLine.cs
- ReadOnlyDataSourceView.cs
- ResourcesChangeInfo.cs
- StretchValidation.cs
- DivideByZeroException.cs
- RawStylusInput.cs
- TextBox.cs
- EntityClassGenerator.cs
- ReverseInheritProperty.cs
- AvTrace.cs
- ServiceNameElementCollection.cs
- TryCatchDesigner.xaml.cs
- RoutedUICommand.cs
- ToggleButtonAutomationPeer.cs
- TargetParameterCountException.cs
- XmlSecureResolver.cs
- EnumerableRowCollection.cs
- MetabaseServerConfig.cs
- InvalidWorkflowException.cs
- XmlSchemaComplexContentExtension.cs
- OleDbException.cs
- SoapReflector.cs
- SqlDataSourceQueryEditor.cs
- TextBlockAutomationPeer.cs
- Crc32.cs
- DecoratedNameAttribute.cs
- CodeComment.cs
- FillRuleValidation.cs
- SortedDictionary.cs
- TraceInternal.cs
- HttpBrowserCapabilitiesBase.cs
- ListParaClient.cs
- TemplatedMailWebEventProvider.cs
- BrowserTree.cs
- QuaternionKeyFrameCollection.cs
- Odbc32.cs
- HttpHandlerAction.cs
- ChildChangedEventArgs.cs
- ColumnHeader.cs
- TextMessageEncodingBindingElement.cs