Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / infocard / Service / managed / Microsoft / InfoCards / ImportFileRequest.cs / 1 / ImportFileRequest.cs
//------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
namespace Microsoft.InfoCards
{
using System;
using System.Collections;
using System.IO;
using System.Collections.Generic;
using IDT = Microsoft.InfoCards.Diagnostics.InfoCardTrace;
//
// Import a set of cards to the store:
// Saves a list of cards into the store and implements the overwrite logic for roaming
//
class ImportFileRequest :UIAgentRequest
{
public ImportFileRequest( IntPtr rpcHandle, Stream inArgs, Stream outArgs, ClientUIRequest parent )
: base( rpcHandle, inArgs, outArgs, parent )
{
}
//
// Summary
// Read the cards to be imported
//
protected override void OnMarshalInArgs()
{
}
//
// Summary
// Save the cards to the store. If a card already exists
// in the store, then the last card to be updated wins.
//
protected override void OnProcess()
{
RoamingStoreFile roamingFile = ParentRequest.GetContext();
if( null != roamingFile && null != roamingFile.Cards )
{
try
{
StoreConnection connection = StoreConnection.GetConnection();
try
{
connection.BeginTransaction();
try
{
foreach ( InfoCard card in roamingFile.Cards )
{
//
// check if the card needs to be overwritten
// The default overwrite logic overwrites the card based on time of last update
//
List param = new List();
param.Add( new QueryParameter(
SecondaryIndexDefinition.ObjectTypeIndex,
( Int32 )StorableObjectType.InfoCard ) );
param.Add( new QueryParameter(
SecondaryIndexDefinition.GlobalIdIndex,
GlobalId.DeriveFrom( card.Id.ToString() ) ) );
DataRow row = connection.GetSingleRow( QueryDetails.FullRow, param.ToArray() );
//
// If a card exists, compare the LastUpdate time
//
if ( null != row )
{
using ( MemoryStream ms = new MemoryStream( row.GetDataField() ) )
{
InfoCard existingCard = new InfoCard( ms );
if ( existingCard.LastUpdate < card.LastUpdate )
{
IDT.TraceDebug( "Overwrite the existing card with id {0}", card.Id.AbsoluteUri );
card.IsImported = true;
card.InstalledOn = DateTime.Now;
card.Save( connection );
}
}
}
else
{
IDT.TraceDebug( "Add a new card with id {0} to the store", card.Id.AbsoluteUri );
card.IsImported = true;
card.InstalledOn = DateTime.Now;
card.Save( connection );
}
}
connection.CommitTransaction();
AuditLog.AuditStoreImport();
}
catch( Exception e )
{
connection.RollbackTransaction();
if( IDT.IsFatal( e ) )
{
throw;
}
throw IDT.ThrowHelperError(
new ImportStoreException( SR.GetString( SR.InvalidImportFile ), e ) );
}
}
finally
{
connection.Close();
}
}
finally
{
//
// Clear the roaming store file on completion.
//
roamingFile.Clear();
}
}
}
protected override void OnMarshalOutArgs()
{
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SmiContext.cs
- NativeMethodsOther.cs
- querybuilder.cs
- Polyline.cs
- CorePropertiesFilter.cs
- Menu.cs
- ResourceDescriptionAttribute.cs
- ProxyWebPartConnectionCollection.cs
- DataControlLinkButton.cs
- TdsParameterSetter.cs
- InfoCardRSAPKCS1KeyExchangeFormatter.cs
- CallContext.cs
- LateBoundChannelParameterCollection.cs
- Query.cs
- StructureChangedEventArgs.cs
- ThicknessConverter.cs
- SchemaImporterExtension.cs
- AuthenticatingEventArgs.cs
- ZipIORawDataFileBlock.cs
- WorkflowApplicationAbortedException.cs
- JournalNavigationScope.cs
- DeviceOverridableAttribute.cs
- SafeHGlobalHandleCritical.cs
- SqlDependencyListener.cs
- ConfigXmlWhitespace.cs
- AsymmetricSignatureDeformatter.cs
- PropertyItemInternal.cs
- ConnectionsZone.cs
- CodeComment.cs
- TrackingValidationObjectDictionary.cs
- DataServiceQueryProvider.cs
- ServiceEndpointAssociationProvider.cs
- DbReferenceCollection.cs
- PageCatalogPart.cs
- COMException.cs
- InfoCardCryptoHelper.cs
- AccessKeyManager.cs
- TextTrailingCharacterEllipsis.cs
- RightsManagementPermission.cs
- ExecutionEngineException.cs
- EventSetter.cs
- WinEventWrap.cs
- XmlSerializationWriter.cs
- wmiprovider.cs
- SchemaTypeEmitter.cs
- SingleAnimationBase.cs
- AlignmentXValidation.cs
- GlobalizationSection.cs
- ModuleBuilderData.cs
- SqlMetaData.cs
- XhtmlBasicPanelAdapter.cs
- ParenthesizePropertyNameAttribute.cs
- PrinterResolution.cs
- RC2.cs
- ControllableStoryboardAction.cs
- IPPacketInformation.cs
- TransformerConfigurationWizardBase.cs
- MulticastIPAddressInformationCollection.cs
- XmlSchemaParticle.cs
- ContextMenu.cs
- SafeNativeMethods.cs
- EditCommandColumn.cs
- GeneralTransform.cs
- EdmItemCollection.cs
- CharacterShapingProperties.cs
- BaseDataBoundControl.cs
- sqlstateclientmanager.cs
- StreamSecurityUpgradeInitiatorAsyncResult.cs
- DependencyPropertyValueSerializer.cs
- Stacktrace.cs
- ExtentCqlBlock.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- EnumValAlphaComparer.cs
- ConstraintCollection.cs
- StreamedFramingRequestChannel.cs
- securitycriticaldataformultiplegetandset.cs
- LinkClickEvent.cs
- PageBuildProvider.cs
- unsafenativemethodsother.cs
- DataGridViewCellEventArgs.cs
- SignatureToken.cs
- InvariantComparer.cs
- FacetChecker.cs
- CookieHandler.cs
- DataRowIndexBuffer.cs
- AppModelKnownContentFactory.cs
- ListBase.cs
- EllipticalNodeOperations.cs
- DataGrid.cs
- CookielessHelper.cs
- Color.cs
- CompensatableTransactionScopeActivity.cs
- ReferenceAssemblyAttribute.cs
- DataStreamFromComStream.cs
- RankException.cs
- InputScopeAttribute.cs
- OleDbEnumerator.cs
- UnsupportedPolicyOptionsException.cs
- PatternMatchRules.cs
- RoleServiceManager.cs