Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Map / ViewGeneration / CqlGeneration / CqlIdentifiers.cs / 1305376 / CqlIdentifiers.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
// @backupOwner [....]
//---------------------------------------------------------------------
using System.Data.Common.Utils;
using System.Text;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
namespace System.Data.Mapping.ViewGeneration.Structures
{
// This class is responsible for ensuring unique aliases for _from0, etc
// and block aliases T, T0, T1, etc
internal class CqlIdentifiers : InternalBase
{
#region Constructor
internal CqlIdentifiers()
{
m_identifiers = new Set(StringComparer.Ordinal);
}
#endregion
#region Fields
private Set m_identifiers;
#endregion
#region Methods
// effects: Given a number, returns _from if it does not clashes with
// any identifier, else returns _from__ where is the first number from 0
// where there is no clash
internal string GetFromVariable(int num)
{
return GetNonConflictingName("_from", num);
}
// effects: Given a number, returns T if it does not clashes with
// any identifier, else returns T__ where is the first number from 0
// where there is no clash
internal string GetBlockAlias(int num)
{
return GetNonConflictingName("T", num);
}
// effects: Given a number, returns T if it does not clashes with
// any identifier, else returns T_ where is the first number from 0
// where there is no clash
internal string GetBlockAlias()
{
return GetNonConflictingName("T", -1);
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase")]
internal void AddIdentifier(string identifier)
{
m_identifiers.Add(identifier.ToLower(CultureInfo.InvariantCulture));
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase")]
private string GetNonConflictingName(string prefix, int number)
{
// Do a case sensitive search but return the string that uses the
// original prefix
string result = number < 0 ? prefix : StringUtil.FormatInvariant("{0}{1}", prefix, number);
// Check if the prefix exists or not
if (m_identifiers.Contains(result.ToLower(CultureInfo.InvariantCulture)) == false)
{
return result;
}
// Go through integers and find the first one that does not clash
for (int count = 0; count < int.MaxValue; count++)
{
if (number < 0)
{
result = StringUtil.FormatInvariant("{0}_{1}", prefix, count);
}
else
{
result = StringUtil.FormatInvariant("{0}_{1}_{2}", prefix, count, number);
}
if (m_identifiers.Contains(result.ToLower(CultureInfo.InvariantCulture)) == false)
{
return result;
}
}
Debug.Fail("Found no unique _from till MaxValue?");
return null;
}
internal override void ToCompactString(StringBuilder builder)
{
m_identifiers.ToCompactString(builder);
}
#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
- HelpProvider.cs
- Random.cs
- JapaneseLunisolarCalendar.cs
- BinaryObjectWriter.cs
- EventPropertyMap.cs
- Point.cs
- RoleManagerSection.cs
- CollectionBuilder.cs
- ResourceManager.cs
- StateBag.cs
- FilterEventArgs.cs
- DependencyPropertyKind.cs
- InputBuffer.cs
- EntityParameter.cs
- BuiltInExpr.cs
- SQLSingle.cs
- TableLayoutStyle.cs
- BaseTemplateBuildProvider.cs
- shaper.cs
- TimeManager.cs
- SqlClientMetaDataCollectionNames.cs
- ThreadStateException.cs
- EventLogEntry.cs
- PanelContainerDesigner.cs
- EntityDataSourceContainerNameConverter.cs
- GenerateScriptTypeAttribute.cs
- WMICapabilities.cs
- AlphaSortedEnumConverter.cs
- DataGridViewToolTip.cs
- embossbitmapeffect.cs
- EventToken.cs
- Random.cs
- OleServicesContext.cs
- _DomainName.cs
- QilExpression.cs
- RuntimeHandles.cs
- FixedPage.cs
- _KerberosClient.cs
- XmlBoundElement.cs
- HttpCapabilitiesBase.cs
- TransactionChannelFactory.cs
- XmlNavigatorFilter.cs
- DragEventArgs.cs
- SqlCacheDependency.cs
- SystemTcpConnection.cs
- SqlVersion.cs
- ValueExpressions.cs
- CallbackValidator.cs
- ErrorStyle.cs
- PartitionResolver.cs
- DisposableCollectionWrapper.cs
- SevenBitStream.cs
- EmbeddedMailObjectsCollection.cs
- ContractsBCL.cs
- CacheMode.cs
- CopyNodeSetAction.cs
- AnonymousIdentificationSection.cs
- UrlAuthFailureHandler.cs
- HeaderLabel.cs
- WindowsStatic.cs
- ToolboxDataAttribute.cs
- IncrementalReadDecoders.cs
- TextTreeInsertElementUndoUnit.cs
- LocatorPart.cs
- EdmItemCollection.OcAssemblyCache.cs
- FileUtil.cs
- AuthorizationContext.cs
- OdbcConnectionHandle.cs
- GeometryModel3D.cs
- StoreItemCollection.cs
- HitTestParameters3D.cs
- Block.cs
- DocumentViewerConstants.cs
- LocalizationComments.cs
- FileUtil.cs
- ImageButton.cs
- StrokeDescriptor.cs
- PageBreakRecord.cs
- PersistenceTypeAttribute.cs
- DeclarativeCatalogPart.cs
- SHA256.cs
- Operand.cs
- TemplatedAdorner.cs
- safePerfProviderHandle.cs
- CompilerError.cs
- SqlUDTStorage.cs
- DataGridRowEventArgs.cs
- FirstMatchCodeGroup.cs
- MimeObjectFactory.cs
- CatalogPart.cs
- XmlQueryType.cs
- SizeConverter.cs
- XPathChildIterator.cs
- MemoryStream.cs
- BaseDataList.cs
- ConfigurationLocation.cs
- DynamicQueryableWrapper.cs
- IisTraceWebEventProvider.cs
- MappedMetaModel.cs
- ToolZone.cs