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
- VerificationAttribute.cs
- OracleDataReader.cs
- DesignerForm.cs
- embossbitmapeffect.cs
- ListBox.cs
- CustomError.cs
- UrlMappingsModule.cs
- TextTreePropertyUndoUnit.cs
- ResXResourceSet.cs
- EntityTypeEmitter.cs
- SiblingIterators.cs
- QueueProcessor.cs
- TimeManager.cs
- List.cs
- StrokeFIndices.cs
- CapabilitiesState.cs
- FormatException.cs
- MobileControlsSectionHelper.cs
- XmlAttributeAttribute.cs
- UIElement3D.cs
- WSHttpSecurityElement.cs
- ProxyFragment.cs
- PipelineModuleStepContainer.cs
- Polyline.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- InstalledVoice.cs
- LoginName.cs
- _TimerThread.cs
- _ConnectionGroup.cs
- FileVersionInfo.cs
- DrawListViewColumnHeaderEventArgs.cs
- ExpressionBuilder.cs
- EntityStoreSchemaGenerator.cs
- _ProxyChain.cs
- Base64Encoder.cs
- TreeView.cs
- ChannelDemuxer.cs
- ChannelBinding.cs
- ScriptMethodAttribute.cs
- ReflectEventDescriptor.cs
- BitArray.cs
- BaseEntityWrapper.cs
- CallSiteOps.cs
- PathFigure.cs
- ListViewCommandEventArgs.cs
- CollectionType.cs
- StylusDevice.cs
- TemplateInstanceAttribute.cs
- WorkItem.cs
- BridgeDataRecord.cs
- ImageClickEventArgs.cs
- WinEventWrap.cs
- DetailsViewCommandEventArgs.cs
- TextLineResult.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- SessionState.cs
- HScrollProperties.cs
- _NestedSingleAsyncResult.cs
- LocalizableResourceBuilder.cs
- EventSinkActivity.cs
- EventSourceCreationData.cs
- SystemColors.cs
- MouseButtonEventArgs.cs
- OdbcParameter.cs
- ObjectRef.cs
- SubMenuStyleCollection.cs
- TabControl.cs
- SqlProfileProvider.cs
- HtmlInputHidden.cs
- List.cs
- FileDialog_Vista_Interop.cs
- RecordConverter.cs
- CheckBoxFlatAdapter.cs
- MediaCommands.cs
- BitmapInitialize.cs
- TextElementEnumerator.cs
- precedingsibling.cs
- VirtualDirectoryMappingCollection.cs
- BinHexDecoder.cs
- unsafenativemethodsother.cs
- UpdatableWrapper.cs
- _AuthenticationState.cs
- TextTreeTextNode.cs
- DateTimeStorage.cs
- CodeAccessSecurityEngine.cs
- XD.cs
- DebugView.cs
- EndpointDiscoveryBehavior.cs
- SqlCacheDependencyDatabaseCollection.cs
- SqlReorderer.cs
- BeginStoryboard.cs
- Selection.cs
- SystemIPv6InterfaceProperties.cs
- AssociationType.cs
- MetaTable.cs
- FontEmbeddingManager.cs
- Baml2006SchemaContext.cs
- ItemsControlAutomationPeer.cs
- MemoryMappedView.cs
- Rect.cs