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
- HMAC.cs
- TypeValidationEventArgs.cs
- ToolConsole.cs
- WindowsAuthenticationModule.cs
- Scene3D.cs
- SQLUtility.cs
- WebAdminConfigurationHelper.cs
- AttachedAnnotationChangedEventArgs.cs
- TdsParameterSetter.cs
- XmlDataImplementation.cs
- PrintPageEvent.cs
- WorkflowPersistenceService.cs
- BaseAppDomainProtocolHandler.cs
- CompositeTypefaceMetrics.cs
- MailBnfHelper.cs
- DrawingContextDrawingContextWalker.cs
- HighlightVisual.cs
- ListChangedEventArgs.cs
- DisplayNameAttribute.cs
- RegistrySecurity.cs
- InvalidEnumArgumentException.cs
- UpdateCompiler.cs
- CaretElement.cs
- StrongNameMembershipCondition.cs
- InkCanvasSelection.cs
- GridViewPageEventArgs.cs
- SharedPersonalizationStateInfo.cs
- AccessDataSource.cs
- GridEntryCollection.cs
- CodeTypeReferenceExpression.cs
- TriggerCollection.cs
- XPathPatternParser.cs
- DecoderFallback.cs
- CurrentChangingEventArgs.cs
- GPPOINT.cs
- ToolboxItemFilterAttribute.cs
- Pen.cs
- BamlLocalizableResourceKey.cs
- DataListItem.cs
- Transform.cs
- WeakReadOnlyCollection.cs
- DataServiceConfiguration.cs
- ConfigurationSectionCollection.cs
- ReadOnlyDictionary.cs
- RadialGradientBrush.cs
- ObjectDataSourceDisposingEventArgs.cs
- SystemThemeKey.cs
- BitStream.cs
- SoapElementAttribute.cs
- BitmapEffectGroup.cs
- IdentityReference.cs
- SoapExtensionImporter.cs
- FixedSOMTableCell.cs
- ContentType.cs
- TraceLevelStore.cs
- PeerNameResolver.cs
- SiteMembershipCondition.cs
- entitydatasourceentitysetnameconverter.cs
- XmlSchemaComplexContentRestriction.cs
- PtsPage.cs
- Operator.cs
- XmlDataSource.cs
- TemplatePartAttribute.cs
- HtmlInputReset.cs
- CFStream.cs
- GroupJoinQueryOperator.cs
- GeneralTransform3D.cs
- SiteOfOriginPart.cs
- bidPrivateBase.cs
- DeleteIndexBinder.cs
- DataGridViewTextBoxEditingControl.cs
- JsonWriter.cs
- RealProxy.cs
- ReservationNotFoundException.cs
- EasingFunctionBase.cs
- Enlistment.cs
- ETagAttribute.cs
- CompositeFontParser.cs
- ListenerServiceInstallComponent.cs
- RuntimeConfigLKG.cs
- AddInStore.cs
- HashCodeCombiner.cs
- MonitorWrapper.cs
- ProfileGroupSettings.cs
- ElementNotEnabledException.cs
- Parameter.cs
- JavaScriptString.cs
- TextSchema.cs
- SafeReversePInvokeHandle.cs
- XPathNodePointer.cs
- AutomationProperty.cs
- StickyNote.cs
- TreeViewAutomationPeer.cs
- AnnotationAdorner.cs
- GuidTagList.cs
- TextureBrush.cs
- Point3DAnimation.cs
- Normalization.cs
- ControlValuePropertyAttribute.cs
- PagesSection.cs