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
- CodeMethodInvokeExpression.cs
- GlyphRunDrawing.cs
- DefaultTraceListener.cs
- DBSchemaTable.cs
- HTTPNotFoundHandler.cs
- TextDecorationLocationValidation.cs
- DesigntimeLicenseContext.cs
- RegisteredScript.cs
- CrossAppDomainChannel.cs
- CurrentChangingEventArgs.cs
- ClientProtocol.cs
- StringAnimationUsingKeyFrames.cs
- PipelineModuleStepContainer.cs
- StatusBarPanel.cs
- RegexInterpreter.cs
- AttachmentService.cs
- MultipleViewPattern.cs
- InputScope.cs
- WindowsListViewItemCheckBox.cs
- PermissionSetTriple.cs
- XmlSchemaAttribute.cs
- Dictionary.cs
- Object.cs
- BitmapCacheBrush.cs
- BindingGraph.cs
- DropDownList.cs
- TCPClient.cs
- ThicknessAnimationUsingKeyFrames.cs
- ErrorLog.cs
- ListItemCollection.cs
- DragStartedEventArgs.cs
- Compilation.cs
- DocumentApplication.cs
- CodeTypeMemberCollection.cs
- PermissionToken.cs
- ValidationContext.cs
- PathFigure.cs
- ApplicationId.cs
- ParserContext.cs
- PermissionSetEnumerator.cs
- SafeProcessHandle.cs
- OnOperation.cs
- XmlWriterSettings.cs
- SchemaElementDecl.cs
- Hex.cs
- LiteralText.cs
- MutexSecurity.cs
- InheritanceContextHelper.cs
- COM2FontConverter.cs
- BindStream.cs
- WSHttpSecurityElement.cs
- TemplateControlBuildProvider.cs
- ActiveXContainer.cs
- ConnectionsZone.cs
- MatrixTransform.cs
- BitConverter.cs
- SourceItem.cs
- EventManager.cs
- RegexRunnerFactory.cs
- OleDbConnectionInternal.cs
- webeventbuffer.cs
- InsufficientMemoryException.cs
- ImpersonateTokenRef.cs
- MatrixIndependentAnimationStorage.cs
- EntityChangedParams.cs
- GACIdentityPermission.cs
- FilteredAttributeCollection.cs
- TileModeValidation.cs
- NonVisualControlAttribute.cs
- EdmProviderManifest.cs
- TemplateApplicationHelper.cs
- RunInstallerAttribute.cs
- UpdateRecord.cs
- XmlUnspecifiedAttribute.cs
- XsltContext.cs
- CardSpaceException.cs
- StringValidatorAttribute.cs
- LongCountAggregationOperator.cs
- Memoizer.cs
- DesignTimeParseData.cs
- TreeChangeInfo.cs
- CryptoHelper.cs
- SqlGenericUtil.cs
- RSACryptoServiceProvider.cs
- Win32MouseDevice.cs
- DocumentOrderQuery.cs
- documentsequencetextpointer.cs
- BindUriHelper.cs
- ObjectListField.cs
- TextSelectionHelper.cs
- UIElementParagraph.cs
- GenericParameterDataContract.cs
- TransformerInfoCollection.cs
- DynamicArgumentDialog.cs
- PropertySourceInfo.cs
- AuthenticationModulesSection.cs
- IssuanceLicense.cs
- hwndwrapper.cs
- activationcontext.cs
- DataServiceProviderWrapper.cs