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
- UnsafePeerToPeerMethods.cs
- versioninfo.cs
- UriTemplateQueryValue.cs
- Pens.cs
- CustomPopupPlacement.cs
- DocumentPage.cs
- EnumerableRowCollectionExtensions.cs
- CodeArgumentReferenceExpression.cs
- BasicExpressionVisitor.cs
- GenericAuthenticationEventArgs.cs
- XmlTextReaderImplHelpers.cs
- XmlSchemaGroupRef.cs
- SynchronizedInputPattern.cs
- HScrollProperties.cs
- XmlBoundElement.cs
- FullTextBreakpoint.cs
- HttpContextBase.cs
- BrowserInteropHelper.cs
- State.cs
- UrlAuthorizationModule.cs
- PropertyItem.cs
- ObjectSecurity.cs
- BoundingRectTracker.cs
- HtmlInputSubmit.cs
- FilteredDataSetHelper.cs
- DesignTableCollection.cs
- UpdateTranslator.cs
- ADMembershipUser.cs
- _DisconnectOverlappedAsyncResult.cs
- SqlXml.cs
- QuotedPrintableStream.cs
- BindingContext.cs
- ComplexBindingPropertiesAttribute.cs
- ClaimComparer.cs
- PerformanceCounterPermissionEntry.cs
- SByteConverter.cs
- XamlToRtfParser.cs
- __ConsoleStream.cs
- DbConnectionStringBuilder.cs
- MarkupObject.cs
- TreeNodeConverter.cs
- CellQuery.cs
- SliderAutomationPeer.cs
- EntityDataSourceContainerNameConverter.cs
- List.cs
- NativeMethods.cs
- UnaryOperationBinder.cs
- COM2PictureConverter.cs
- TreeNodeCollection.cs
- XmlTextReaderImpl.cs
- PackagePart.cs
- MessageQueuePermissionEntryCollection.cs
- Config.cs
- TabletDeviceInfo.cs
- ViewGenerator.cs
- LinearGradientBrush.cs
- PaintValueEventArgs.cs
- ScriptMethodAttribute.cs
- ApplicationSecurityManager.cs
- XmlMapping.cs
- ThemeInfoAttribute.cs
- RefreshPropertiesAttribute.cs
- CompiledAction.cs
- LocalizationComments.cs
- FontInfo.cs
- TextBlock.cs
- DashStyles.cs
- RenderingBiasValidation.cs
- XmlNullResolver.cs
- StreamingContext.cs
- EncryptedKeyIdentifierClause.cs
- Win32.cs
- printdlgexmarshaler.cs
- UriWriter.cs
- DataObjectEventArgs.cs
- SmtpNegotiateAuthenticationModule.cs
- FileSecurity.cs
- SimpleLine.cs
- CustomAttributeBuilder.cs
- HwndHostAutomationPeer.cs
- CookieParameter.cs
- TaiwanCalendar.cs
- DrawingServices.cs
- GeometryModel3D.cs
- XsdCachingReader.cs
- UnmanagedBitmapWrapper.cs
- Point3DConverter.cs
- ButtonBaseAdapter.cs
- PropVariant.cs
- BinaryFormatterWriter.cs
- StoreItemCollection.cs
- QuotedStringWriteStateInfo.cs
- XsltConvert.cs
- SystemColors.cs
- CounterSampleCalculator.cs
- DtdParser.cs
- Quaternion.cs
- ListItemCollection.cs
- XmlElementAttribute.cs
- RewritingValidator.cs