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
- TableRowsCollectionEditor.cs
- GridViewAutomationPeer.cs
- ToolBarButton.cs
- Privilege.cs
- CatalogZone.cs
- XsltContext.cs
- RepeatBehavior.cs
- ServiceHttpModule.cs
- ButtonBaseAutomationPeer.cs
- basemetadatamappingvisitor.cs
- WebPartConnectionsConnectVerb.cs
- UIElement.cs
- DesignerAutoFormat.cs
- Enum.cs
- WorkflowWebHostingModule.cs
- SQLMoneyStorage.cs
- ContainerVisual.cs
- Timeline.cs
- HtmlTable.cs
- CompareValidator.cs
- AssemblyEvidenceFactory.cs
- MenuCommands.cs
- SecurityElement.cs
- DataControlImageButton.cs
- OLEDB_Enum.cs
- WorkflowMessageEventHandler.cs
- cache.cs
- securitycriticaldata.cs
- CodeDomSerializerException.cs
- DocumentApplication.cs
- StaticSiteMapProvider.cs
- DSASignatureDeformatter.cs
- EventLogInformation.cs
- LineSegment.cs
- ExceptionUtility.cs
- HybridObjectCache.cs
- ExpressionVisitor.cs
- EntitySqlQueryCacheEntry.cs
- EventHandlers.cs
- DrawingAttributes.cs
- DictionaryTraceRecord.cs
- Double.cs
- ValueSerializer.cs
- ChooseAction.cs
- QilName.cs
- xmlformatgeneratorstatics.cs
- ToolboxItemCollection.cs
- CategoryNameCollection.cs
- DataGridViewButtonCell.cs
- UdpDiscoveryEndpointElement.cs
- SettingsProperty.cs
- Int64KeyFrameCollection.cs
- UInt16Storage.cs
- InkCanvasSelectionAdorner.cs
- QueryResultOp.cs
- TreeNodeStyleCollection.cs
- M3DUtil.cs
- ImageAnimator.cs
- BufferedReadStream.cs
- OleDbEnumerator.cs
- BezierSegment.cs
- StringSource.cs
- NameValuePair.cs
- ContextMenuService.cs
- QilInvokeLateBound.cs
- ClientRoleProvider.cs
- Item.cs
- ViewGenResults.cs
- MetabaseSettings.cs
- ImportOptions.cs
- Funcletizer.cs
- IssuedSecurityTokenParameters.cs
- NativeMethods.cs
- HtmlInputRadioButton.cs
- ToolboxItemCollection.cs
- HtmlElementErrorEventArgs.cs
- TrackingMemoryStreamFactory.cs
- CodeIndexerExpression.cs
- FormViewModeEventArgs.cs
- XappLauncher.cs
- ResXResourceReader.cs
- SwitchLevelAttribute.cs
- PropertyCollection.cs
- Attributes.cs
- AssertFilter.cs
- oledbmetadatacolumnnames.cs
- SystemGatewayIPAddressInformation.cs
- SerialStream.cs
- EntityModelBuildProvider.cs
- RuleConditionDialog.cs
- DesignerVerb.cs
- DateTime.cs
- SendMessageChannelCache.cs
- ExpressionBindings.cs
- GridViewCancelEditEventArgs.cs
- XMLSyntaxException.cs
- PropertyRecord.cs
- Int32Storage.cs
- ContentElementCollection.cs
- SystemSounds.cs