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 / Map / ViewGeneration / Structures / CellConstant.cs / 1 / CellConstant.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Data.Common.Utils; using System.Collections.Generic; using System.Text; using System.Data.Mapping.ViewGeneration.CqlGeneration; using System.Diagnostics; using System.Data.Metadata.Edm; using System.Data.Mapping.ViewGeneration.Utils; namespace System.Data.Mapping.ViewGeneration.Structures { // This class denotes a constant that can be stored in multiconstants or // projected in fields internal class CellConstant : InternalBase { protected CellConstant() { // Private default constuctor so that no can construct this // object externally other than via subclasses } #region Fields // Two constants to denote nulls and undefined values // Order is important -- it is guaranteed by C# (see Section 10.4.5.1) internal static readonly IEqualityComparerEqualityComparer = new CellConstantComparer(); internal static readonly CellConstant Null = new CellConstant(); internal static readonly CellConstant Undefined = new CellConstant(); internal static readonly CellConstant NotNull = NegatedCellConstant.CreateNotNull(); //Represents scalar constants within a finite set that are not specified explicitly in the domain // Currently only used as a Sentinel node to prevent expression optimization internal static readonly CellConstant AllOtherConstants = new CellConstant(); #endregion #region Methods internal bool IsNull() { return EqualityComparer.Equals(this, CellConstant.Null); } internal bool IsUndefined() { return EqualityComparer.Equals(this, CellConstant.Undefined); } internal virtual bool IsNotNull() { // Provide a default implementation and let the subclasses // override it return false; // NegatedCellConstant handles it } // effects: Returns true if this contains not null internal virtual bool HasNotNull() { // Provide a default implementation and let the subclasses // override it return false; // NegatedCellConstant handles it } // effects: Modifies builder to contain the appropriate expression // corresponding to this. outputMember is the member to which this constant is directed. // blockAlias is the alias for the SELECT FROM WHERE block where this constant is being projected // if not null. Returns the modified stringbuilder internal virtual StringBuilder AsCql(StringBuilder builder, MemberPath outputMember, string blockAlias) { // Constants will never be simply entity sets -- so we can use Property on the path // constType is the type of this we need to cast to EdmType constType = Helper.GetModelTypeUsage(outputMember.LastMember).EdmType; Debug.Assert(this != Undefined && this != NotNull, "Generating Cql for undefined slots or not-nulls?"); Debug.Assert(this == Null, "Probably forgot to override this method in a subclass"); // need to cast builder.Append("CAST(NULL AS "); CqlWriter.AppendEscapedTypeName(builder, constType); builder.Append(')'); return builder; } // effects: Returns true if right has the same contents as this protected virtual int GetHash() { Debug.Assert(this == Null || this == Undefined || this == AllOtherConstants, "CellConstants can only be Null, Undefined, or AllOtherConstants"); return 0; } // effects: Returns true if right has the same contents as this protected virtual bool IsEqualTo(CellConstant right) { Debug.Assert(this == Null || this == Undefined || this == AllOtherConstants, "CellConstants can only be Null, Undefined, or AllOtherConstants"); return this == right; } public override bool Equals(object obj) { CellConstant cellConst = obj as CellConstant; if (cellConst == null) { return false; } else { return IsEqualTo(cellConst); } } public override int GetHashCode() { return base.GetHashCode(); } internal virtual string ToUserString() { StringBuilder builder = new StringBuilder(); InternalToString(builder, false); return builder.ToString(); } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] internal static void ConstantsToUserString(StringBuilder builder, Set constants) { bool isFirst = true; foreach (CellConstant constant in constants) { if (isFirst == false) { builder.Append(System.Data.Entity.Strings.ViewGen_CommaBlank); } isFirst = false; string constrStr = constant.ToUserString(); builder.Append(constrStr); } } private void InternalToString(StringBuilder builder, bool isInvariant) { string result; if (this == Null) { result = isInvariant ? "NULL" : System.Data.Entity.Strings.ViewGen_Null; } else if (this == Undefined) { Debug.Assert(isInvariant, "We should not emit a message about Undefined constants to the user"); result = "?"; } else if (this == NotNull) { result = isInvariant? "NOT_NULL": System.Data.Entity.Strings.ViewGen_NotNull; } else if (this == AllOtherConstants){ result = "AllOtherConstants"; } else { Debug.Fail("No other constants handled by this class"); result = isInvariant? "FAILURE": System.Data.Entity.Strings.ViewGen_Failure; } builder.Append(result); } internal override void ToCompactString(StringBuilder builder) { InternalToString(builder, true); } #endregion #region Comparer class private class CellConstantComparer : IEqualityComparer { public bool Equals(CellConstant left, CellConstant right) { // Quick check with references if (object.ReferenceEquals(left, right)) { // Gets the Null and Undefined case as well return true; } // One of them is non-null at least. So if the other one is // null, we cannot be equal if (left == null || right == null) { return false; } // Both are non-null at this point return left.IsEqualTo(right); } public int GetHashCode(CellConstant key) { EntityUtil.CheckArgumentNull(key, "key"); return key.GetHash(); } } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Data.Common.Utils; using System.Collections.Generic; using System.Text; using System.Data.Mapping.ViewGeneration.CqlGeneration; using System.Diagnostics; using System.Data.Metadata.Edm; using System.Data.Mapping.ViewGeneration.Utils; namespace System.Data.Mapping.ViewGeneration.Structures { // This class denotes a constant that can be stored in multiconstants or // projected in fields internal class CellConstant : InternalBase { protected CellConstant() { // Private default constuctor so that no can construct this // object externally other than via subclasses } #region Fields // Two constants to denote nulls and undefined values // Order is important -- it is guaranteed by C# (see Section 10.4.5.1) internal static readonly IEqualityComparerEqualityComparer = new CellConstantComparer(); internal static readonly CellConstant Null = new CellConstant(); internal static readonly CellConstant Undefined = new CellConstant(); internal static readonly CellConstant NotNull = NegatedCellConstant.CreateNotNull(); //Represents scalar constants within a finite set that are not specified explicitly in the domain // Currently only used as a Sentinel node to prevent expression optimization internal static readonly CellConstant AllOtherConstants = new CellConstant(); #endregion #region Methods internal bool IsNull() { return EqualityComparer.Equals(this, CellConstant.Null); } internal bool IsUndefined() { return EqualityComparer.Equals(this, CellConstant.Undefined); } internal virtual bool IsNotNull() { // Provide a default implementation and let the subclasses // override it return false; // NegatedCellConstant handles it } // effects: Returns true if this contains not null internal virtual bool HasNotNull() { // Provide a default implementation and let the subclasses // override it return false; // NegatedCellConstant handles it } // effects: Modifies builder to contain the appropriate expression // corresponding to this. outputMember is the member to which this constant is directed. // blockAlias is the alias for the SELECT FROM WHERE block where this constant is being projected // if not null. Returns the modified stringbuilder internal virtual StringBuilder AsCql(StringBuilder builder, MemberPath outputMember, string blockAlias) { // Constants will never be simply entity sets -- so we can use Property on the path // constType is the type of this we need to cast to EdmType constType = Helper.GetModelTypeUsage(outputMember.LastMember).EdmType; Debug.Assert(this != Undefined && this != NotNull, "Generating Cql for undefined slots or not-nulls?"); Debug.Assert(this == Null, "Probably forgot to override this method in a subclass"); // need to cast builder.Append("CAST(NULL AS "); CqlWriter.AppendEscapedTypeName(builder, constType); builder.Append(')'); return builder; } // effects: Returns true if right has the same contents as this protected virtual int GetHash() { Debug.Assert(this == Null || this == Undefined || this == AllOtherConstants, "CellConstants can only be Null, Undefined, or AllOtherConstants"); return 0; } // effects: Returns true if right has the same contents as this protected virtual bool IsEqualTo(CellConstant right) { Debug.Assert(this == Null || this == Undefined || this == AllOtherConstants, "CellConstants can only be Null, Undefined, or AllOtherConstants"); return this == right; } public override bool Equals(object obj) { CellConstant cellConst = obj as CellConstant; if (cellConst == null) { return false; } else { return IsEqualTo(cellConst); } } public override int GetHashCode() { return base.GetHashCode(); } internal virtual string ToUserString() { StringBuilder builder = new StringBuilder(); InternalToString(builder, false); return builder.ToString(); } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] internal static void ConstantsToUserString(StringBuilder builder, Set constants) { bool isFirst = true; foreach (CellConstant constant in constants) { if (isFirst == false) { builder.Append(System.Data.Entity.Strings.ViewGen_CommaBlank); } isFirst = false; string constrStr = constant.ToUserString(); builder.Append(constrStr); } } private void InternalToString(StringBuilder builder, bool isInvariant) { string result; if (this == Null) { result = isInvariant ? "NULL" : System.Data.Entity.Strings.ViewGen_Null; } else if (this == Undefined) { Debug.Assert(isInvariant, "We should not emit a message about Undefined constants to the user"); result = "?"; } else if (this == NotNull) { result = isInvariant? "NOT_NULL": System.Data.Entity.Strings.ViewGen_NotNull; } else if (this == AllOtherConstants){ result = "AllOtherConstants"; } else { Debug.Fail("No other constants handled by this class"); result = isInvariant? "FAILURE": System.Data.Entity.Strings.ViewGen_Failure; } builder.Append(result); } internal override void ToCompactString(StringBuilder builder) { InternalToString(builder, true); } #endregion #region Comparer class private class CellConstantComparer : IEqualityComparer { public bool Equals(CellConstant left, CellConstant right) { // Quick check with references if (object.ReferenceEquals(left, right)) { // Gets the Null and Undefined case as well return true; } // One of them is non-null at least. So if the other one is // null, we cannot be equal if (left == null || right == null) { return false; } // Both are non-null at this point return left.IsEqualTo(right); } public int GetHashCode(CellConstant key) { EntityUtil.CheckArgumentNull(key, "key"); return key.GetHash(); } } #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
- SqlDuplicator.cs
- EntityReference.cs
- WpfGeneratedKnownTypes.cs
- FirstMatchCodeGroup.cs
- HashAlgorithm.cs
- Parsers.cs
- KeySplineConverter.cs
- latinshape.cs
- WCFModelStrings.Designer.cs
- TraceHandlerErrorFormatter.cs
- InternalMappingException.cs
- HuffModule.cs
- DbConnectionPoolGroupProviderInfo.cs
- ContentElement.cs
- cache.cs
- Rights.cs
- SystemIcmpV6Statistics.cs
- StrongNameUtility.cs
- PathSegment.cs
- EntityDataSourceState.cs
- CreateUserWizardDesigner.cs
- CategoryNameCollection.cs
- HttpWriter.cs
- DeferredReference.cs
- Matrix3DConverter.cs
- ContainerSelectorGlyph.cs
- BamlRecordWriter.cs
- DependencyPropertyHelper.cs
- PathFigureCollectionConverter.cs
- mediapermission.cs
- RegistrationServices.cs
- ScrollProviderWrapper.cs
- HtmlString.cs
- InkCanvasSelectionAdorner.cs
- ProviderSettingsCollection.cs
- CompressionTransform.cs
- RegexBoyerMoore.cs
- ThumbAutomationPeer.cs
- NonDualMessageSecurityOverHttpElement.cs
- ServiceBusyException.cs
- UpdateRecord.cs
- FixedSOMElement.cs
- DataIdProcessor.cs
- DataObjectPastingEventArgs.cs
- FacetChecker.cs
- DocumentAutomationPeer.cs
- FatalException.cs
- CodeCatchClauseCollection.cs
- DashStyle.cs
- ConsoleKeyInfo.cs
- HtmlToClrEventProxy.cs
- UInt64.cs
- PropertyGeneratedEventArgs.cs
- ToolStripStatusLabel.cs
- AxisAngleRotation3D.cs
- SQLByteStorage.cs
- QueryContinueDragEvent.cs
- SettingsAttributeDictionary.cs
- IntSecurity.cs
- HttpResponseHeader.cs
- SizeValueSerializer.cs
- DropShadowEffect.cs
- ButtonFieldBase.cs
- MenuItemStyle.cs
- DebugView.cs
- ISFTagAndGuidCache.cs
- DetailsViewModeEventArgs.cs
- StyleSheet.cs
- Variable.cs
- MatrixValueSerializer.cs
- RegexMatchCollection.cs
- InputMethodStateTypeInfo.cs
- COM2PropertyBuilderUITypeEditor.cs
- PrintControllerWithStatusDialog.cs
- MemoryStream.cs
- BamlRecordReader.cs
- DetailsViewInsertEventArgs.cs
- ProviderCommandInfoUtils.cs
- PKCS1MaskGenerationMethod.cs
- DetailsViewCommandEventArgs.cs
- Collection.cs
- ObjectDataSourceView.cs
- AsyncPostBackErrorEventArgs.cs
- RootBrowserWindowAutomationPeer.cs
- SpecialNameAttribute.cs
- AnnotationResourceCollection.cs
- PropertyInformationCollection.cs
- WeakRefEnumerator.cs
- DataGridColumnReorderingEventArgs.cs
- ASCIIEncoding.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- HtmlWindowCollection.cs
- InheritanceUI.cs
- MonthChangedEventArgs.cs
- BoolExpressionVisitors.cs
- XmlSchemaParticle.cs
- CheckBoxPopupAdapter.cs
- UxThemeWrapper.cs
- _emptywebproxy.cs
- PerformanceCounterLib.cs